diff --git a/application/modules/gitlist/.htaccess b/application/modules/gitlist/.htaccess deleted file mode 100644 index c3447e4..0000000 --- a/application/modules/gitlist/.htaccess +++ /dev/null @@ -1,14 +0,0 @@ - - Options -MultiViews +SymLinksIfOwnerMatch - - RewriteEngine On - #RewriteBase /path/to/gitlist/ - - RewriteCond %{REQUEST_FILENAME} !-f - RewriteCond %{REQUEST_FILENAME} !-d - RewriteRule ^(.*)$ index.php/$1 [L,NC] - - - order allow,deny - deny from all - diff --git a/application/modules/gitlist/INSTALL.md b/application/modules/gitlist/INSTALL.md deleted file mode 100644 index d7f29c4..0000000 --- a/application/modules/gitlist/INSTALL.md +++ /dev/null @@ -1,96 +0,0 @@ -# GitList Installation -* Download GitList from [gitlist.org](http://gitlist.org/) and decompress to your `/var/www/gitlist` folder, or anywhere else you want to place GitList. -* Rename the `config.ini-example` file to `config.ini`. -* Open up the `config.ini` and configure your installation. You'll have to provide where your repositories are located and the base GitList URL (in our case, http://localhost/gitlist). -* Create the cache folder and give read/write permissions to your web server user: - -``` -cd /var/www/gitlist -mkdir cache -chmod 777 cache -``` - -That's it, installation complete! - -## Webserver configuration -Apache is the "default" webserver for GitList. You will find the configuration inside the `.htaccess` file. However, nginx and lighttpd are also supported. - -### nginx server.conf - -``` -server { - server_name MYSERVER; - access_log /var/log/nginx/MYSERVER.access.log combined; - error_log /var/log/nginx/MYSERVER.error.log error; - - root /var/www/DIR; - index index.php; - -# auth_basic "Restricted"; -# auth_basic_user_file .htpasswd; - - location = /robots.txt { - allow all; - log_not_found off; - access_log off; - } - - location ~* ^/index.php.*$ { - fastcgi_index index.php; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - - # if you're using php5-fpm via tcp - fastcgi_pass 127.0.0.1:9000; - - # if you're using php5-fpm via socket - #fastcgi_pass unix:/var/run/php5-fpm.sock; - - include /etc/nginx/fastcgi_params; - } - - location / { - try_files $uri @gitlist; - } - - location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { - add_header Vary "Accept-Encoding"; - expires max; - try_files $uri @gitlist; - tcp_nodelay off; - tcp_nopush on; - } - -# location ~* \.(git|svn|patch|htaccess|log|route|plist|inc|json|pl|po|sh|ini|sample|kdev4)$ { -# deny all; -# } - - location @gitlist { - rewrite ^/.*$ /index.php; - } -} -``` - -### lighttpd - -``` -# GitList is located in /var/www/gitlist -server.document-root = "/var/www" - -url.rewrite-once = ( - "^/gitlist/web/.+" => "$0", - "^/gitlist/favicon\.ico$" => "$0", - "^/gitlist(/[^\?]*)(\?.*)?" => "/gitlist/index.php$1$2" -) -``` - -### hiawatha - -``` -UrlToolkit { - ToolkitID = gitlist - RequestURI isfile Return - # If you have example.com/gitlist/ ; Otherwise remove "/gitlist" below - Match ^/gitlist/.* Rewrite /gitlist/index.php - Match ^/gitlist/.*\.ini DenyAccess -} -``` diff --git a/application/modules/gitlist/LICENSE.txt b/application/modules/gitlist/LICENSE.txt deleted file mode 100644 index f8757b3..0000000 --- a/application/modules/gitlist/LICENSE.txt +++ /dev/null @@ -1,9 +0,0 @@ -Copyright (c) 2012, Klaus Silveira and contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -Neither the name of GitList nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/application/modules/gitlist/README.md b/application/modules/gitlist/README.md deleted file mode 100644 index 359f9e3..0000000 --- a/application/modules/gitlist/README.md +++ /dev/null @@ -1,86 +0,0 @@ -

gitlist"

- -# GitList: an elegant git repository viewer -[![Build Status](https://secure.travis-ci.org/klaussilveira/gitlist.png)](http://travis-ci.org/klaussilveira/gitlist) - -GitList is an elegant and modern web interface for interacting with multiple git repositories. It allows you to browse repositories using your favorite browser, viewing files under different revisions, commit history, diffs. It also generates RSS feeds for each repository, allowing you to stay up-to-date with the latest changes anytime, anywhere. GitList was written in PHP, on top of the [Silex](http://silex.sensiolabs.org/) microframework and powered by the Twig template engine. This means that GitList is easy to install and easy to customize. Also, the GitList gorgeous interface was made possible due to [Bootstrap](http://twitter.github.com/bootstrap/). - -## Features -* Multiple repository support -* Multiple branch support -* Multiple tag support -* Commit history, blame, diff -* RSS feeds -* Syntax highlighting -* Repository statistics - -## Screenshots -![Screenshot 1](https://raw.githubusercontent.com/klaussilveira/gitlist/gh-pages/img/roller/1.png) -![Screenshot 2](https://raw.githubusercontent.com/klaussilveira/gitlist/gh-pages/img/roller/2.png) -![Screenshot 3](https://raw.githubusercontent.com/klaussilveira/gitlist/gh-pages/img/roller/3.png) -![Screenshot 4](https://raw.githubusercontent.com/klaussilveira/gitlist/gh-pages/img/roller/4.png) -![Screenshot 5](https://raw.githubusercontent.com/klaussilveira/gitlist/gh-pages/img/roller/5.png) -![Screenshot 6](https://raw.githubusercontent.com/klaussilveira/gitlist/gh-pages/img/roller/6.png) -![Screenshot 7](https://raw.githubusercontent.com/klaussilveira/gitlist/gh-pages/img/roller/7.png) -![Screenshot 8](https://raw.githubusercontent.com/klaussilveira/gitlist/gh-pages/img/roller/8.png) -![Screenshot 9](https://raw.githubusercontent.com/klaussilveira/gitlist/gh-pages/img/roller/9.png) -![Screenshot 10](https://raw.githubusercontent.com/klaussilveira/gitlist/gh-pages/img/roller/10.png) - -## Requirements -In order to run GitList on your server, you'll need: - -* PHP 5.3+ -* git -* Webserver (Apache, nginx, lighttpd) - -## Installation -* Download GitList from [gitlist.org](http://gitlist.org/) and decompress to your `/var/www/gitlist` folder, or anywhere else you want to place GitList. -* Do not download a branch or tag from GitHub, unless you want to use the development version. The version available for download at the website already has all dependencies bundled, so you don't have to use composer or any other tool -* Rename the `config.ini-example` file to `config.ini`. -* Open up the `config.ini` and configure your installation. You'll have to provide where your repositories are located. -* In case GitList isn't accessed through the root of the website, open .htaccess and edit RewriteBase (for example, /gitlist/ if GitList is accessed through http://localhost/gitlist/). -* Create the cache folder and give read/write permissions to your web server user: - -``` -cd /var/www/gitlist -mkdir cache -chmod 777 cache -``` - -That's it, installation complete! If you're having problems, check the [Troubleshooting](https://github.com/klaussilveira/gitlist/wiki/Troubleshooting) page. - - -## Authors and contributors -* [Klaus Silveira](http://www.klaussilveira.com) (Creator, developer) - -## License -[New BSD license](http://www.opensource.org/licenses/bsd-license.php) - -## Development -GitList uses [Composer](http://getcomposer.org/) to manage dependencies and [Ant](http://ant.apache.org/) to build the project. - -Once you have all the dependencies set, you can clone the repository and run Ant: - -``` -git clone https://github.com/klaussilveira/gitlist.git -ant -``` - -If you just want to get the project dependencies, instead of building everything: - -``` -git clone https://github.com/klaussilveira/gitlist.git -curl -s http://getcomposer.org/installer | php -php composer.phar install -``` - -If you have Composer in your path, things get easier. But you know the drill. - -## Contributing -If you are a developer, we need your help. GitList is a young project and we have lots of stuff to do. Some developers are contributing with new features, others with bug fixes. But you can also dedicate yourself to refactoring the current codebase and improving what we already have. This is very important, we want GitList to be a state-of-the-art application, and we need your help for that. - -* Stay tuned to possible bugs, suboptimal code, duplicated code, overcomplicated expressions and unused code -* Improve the test coverage by creating unit and functional tests - -## Further information -If you want to know more about customizing GitList, check the [Customization](https://github.com/klaussilveira/gitlist/wiki/Customizing) page on the wiki. Also, if you're having problems with GitList, check the [Troubleshooting](https://github.com/klaussilveira/gitlist/wiki/Troubleshooting) page. Don't forget to report issues and suggest new features! :) diff --git a/application/modules/gitlist/boot.php b/application/modules/gitlist/boot.php deleted file mode 100644 index ed65bfa..0000000 --- a/application/modules/gitlist/boot.php +++ /dev/null @@ -1,16 +0,0 @@ -mount('', new GitList\Controller\MainController()); -$app->mount('', new GitList\Controller\BlobController()); -$app->mount('', new GitList\Controller\CommitController()); -$app->mount('', new GitList\Controller\TreeController()); -$app->mount('', new GitList\Controller\NetworkController()); -$app->mount('', new GitList\Controller\TreeGraphController()); - -return $app; diff --git a/application/modules/gitlist/cache/archives/SAND-FrameWork/10/fb503b22bc864a63404ae908dd8f3363eda2d4.zip b/application/modules/gitlist/cache/archives/SAND-FrameWork/10/fb503b22bc864a63404ae908dd8f3363eda2d4.zip deleted file mode 100644 index 02d8e16..0000000 Binary files a/application/modules/gitlist/cache/archives/SAND-FrameWork/10/fb503b22bc864a63404ae908dd8f3363eda2d4.zip and /dev/null differ diff --git a/application/modules/gitlist/cache/views/09/0959ad63717274f8b44924e3ca53381eb8acfe00914de5e6344602634a259309.php b/application/modules/gitlist/cache/views/09/0959ad63717274f8b44924e3ca53381eb8acfe00914de5e6344602634a259309.php deleted file mode 100644 index f6e8952..0000000 --- a/application/modules/gitlist/cache/views/09/0959ad63717274f8b44924e3ca53381eb8acfe00914de5e6344602634a259309.php +++ /dev/null @@ -1,104 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - // line 1 - echo "
- - -
-
- -
- -
-
"; - } - - public function getTemplateName() - { - return "branch_menu.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 72 => 19, 69 => 18, 58 => 16, 54 => 15, 51 => 14, 48 => 13, 37 => 11, 33 => 10, 22 => 2, 19 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "branch_menu.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/branch_menu.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/0b/0b066e5a2424dc4535b83a6953b108e44958287cb803fe3e2de0d9d39ea2927e.php b/application/modules/gitlist/cache/views/0b/0b066e5a2424dc4535b83a6953b108e44958287cb803fe3e2de0d9d39ea2927e.php deleted file mode 100644 index 2a04c69..0000000 --- a/application/modules/gitlist/cache/views/0b/0b066e5a2424dc4535b83a6953b108e44958287cb803fe3e2de0d9d39ea2927e.php +++ /dev/null @@ -1,91 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - // line 1 - echo " -"; - } - - public function getTemplateName() - { - return "menu.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 54 => 6, 46 => 5, 38 => 4, 30 => 3, 22 => 2, 19 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "menu.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/menu.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/16/16457226826d674985c9f88129b2d65b0a0b3607ea252f1e6be26868609d1f62.php b/application/modules/gitlist/cache/views/16/16457226826d674985c9f88129b2d65b0a0b3607ea252f1e6be26868609d1f62.php deleted file mode 100644 index bf478ad..0000000 --- a/application/modules/gitlist/cache/views/16/16457226826d674985c9f88129b2d65b0a0b3607ea252f1e6be26868609d1f62.php +++ /dev/null @@ -1,77 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - // line 1 - echo "
-
- -
-
-"; - } - - public function getTemplateName() - { - return "navigation.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 38 => 13, 29 => 9, 19 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "navigation.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/navigation.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/5e/5e3db4489115dc8c8cf0242484fe512188edd3713347442b92850bf3035d4849.php b/application/modules/gitlist/cache/views/5e/5e3db4489115dc8c8cf0242484fe512188edd3713347442b92850bf3035d4849.php deleted file mode 100644 index b5caadf..0000000 --- a/application/modules/gitlist/cache/views/5e/5e3db4489115dc8c8cf0242484fe512188edd3713347442b92850bf3035d4849.php +++ /dev/null @@ -1,128 +0,0 @@ -parent = $this->loadTemplate("layout.twig", "index.twig", 1); - $this->blocks = array( - 'title' => array($this, 'block_title'), - 'body' => array($this, 'block_body'), - ); - } - - protected function doGetParent(array $context) - { - return "layout.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $this->parent->display($context, array_merge($this->blocks, $blocks)); - } - - // line 2 - public function block_title($context, array $blocks = array()) - { - echo "GitList"; - } - - // line 4 - public function block_body($context, array $blocks = array()) - { - // line 5 - $this->loadTemplate("navigation.twig", "index.twig", 5)->display($context); - // line 6 - echo " -
-
- -
- -
- "; - // line 13 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable(($context["repositories"] ?? null)); - foreach ($context['_seq'] as $context["_key"] => $context["repository"]) { - // line 14 - echo "
- -
- "; - // line 20 - if ($this->getAttribute($context["repository"], "description", array())) { - // line 21 - echo "

"; - echo twig_escape_filter($this->env, $this->getAttribute($context["repository"], "description", array()), "html", null, true); - echo "

- "; - } else { - // line 23 - echo "

There is no repository description file. Please, create one to remove this message.

- "; - } - // line 25 - echo "
-
- "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['repository'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 28 - echo "
- -
- - "; - // line 32 - $this->loadTemplate("footer.twig", "index.twig", 32)->display($context); - // line 33 - echo "
-"; - } - - public function getTemplateName() - { - return "index.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 97 => 33, 95 => 32, 89 => 28, 81 => 25, 77 => 23, 71 => 21, 69 => 20, 63 => 17, 57 => 16, 53 => 14, 49 => 13, 40 => 6, 38 => 5, 35 => 4, 29 => 2, 11 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "index.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/index.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/78/78716f8497c982493dd7391ba8e1d4d4a204791cb26f9a4c62ca688c3ee6f454.php b/application/modules/gitlist/cache/views/78/78716f8497c982493dd7391ba8e1d4d4a204791cb26f9a4c62ca688c3ee6f454.php deleted file mode 100644 index a78770d..0000000 --- a/application/modules/gitlist/cache/views/78/78716f8497c982493dd7391ba8e1d4d4a204791cb26f9a4c62ca688c3ee6f454.php +++ /dev/null @@ -1,157 +0,0 @@ -parent = $this->loadTemplate("layout_page.twig", "stats.twig", 1); - $this->blocks = array( - 'title' => array($this, 'block_title'), - 'content' => array($this, 'block_content'), - ); - } - - protected function doGetParent(array $context) - { - return "layout_page.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - // line 3 - $context["page"] = "stats"; - // line 1 - $this->parent->display($context, array_merge($this->blocks, $blocks)); - } - - // line 5 - public function block_title($context, array $blocks = array()) - { - echo "GitList"; - } - - // line 7 - public function block_content($context, array $blocks = array()) - { - // line 8 - echo " "; - $this->loadTemplate("breadcrumb.twig", "stats.twig", 8)->display(array_merge($context, array("breadcrumbs" => array(0 => array("dir" => "Statistics", "path" => ""))))); - // line 9 - echo " - - - - - - - - - - - - - - - -
File extensions ("; - // line 13 - echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute(($context["stats"] ?? null), "extensions", array())), "html", null, true); - echo ")Authors ("; - // line 14 - echo twig_escape_filter($this->env, twig_length_filter($this->env, ($context["authors"] ?? null)), "html", null, true); - echo ")Other
-
    - "; - // line 22 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($this->getAttribute(($context["stats"] ?? null), "extensions", array())); - foreach ($context['_seq'] as $context["ext"] => $context["amount"]) { - // line 23 - echo "
  • "; - echo twig_escape_filter($this->env, $context["ext"], "html", null, true); - echo ": "; - echo twig_escape_filter($this->env, $context["amount"], "html", null, true); - echo " files
  • - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['ext'], $context['amount'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 25 - echo "
-
- - -

- Total files: "; - // line 36 - echo twig_escape_filter($this->env, $this->getAttribute(($context["stats"] ?? null), "files", array()), "html", null, true); - echo " -

- -

- Total bytes: "; - // line 40 - echo twig_escape_filter($this->env, $this->getAttribute(($context["stats"] ?? null), "size", array()), "html", null, true); - echo " bytes ("; - echo twig_escape_filter($this->env, call_user_func_array($this->env->getFilter('format_size')->getCallable(), array($this->getAttribute(($context["stats"] ?? null), "size", array()))), "html", null, true); - echo ") -

-
- -
-"; - } - - public function getTemplateName() - { - return "stats.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 116 => 40, 109 => 36, 103 => 32, 90 => 30, 86 => 29, 80 => 25, 69 => 23, 65 => 22, 54 => 14, 50 => 13, 44 => 9, 41 => 8, 38 => 7, 32 => 5, 28 => 1, 26 => 3, 11 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "stats.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/stats.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/82/8246521d51572fe61960fe57fe78cc46e5b2dcbe5741a6eae457e4d553394a39.php b/application/modules/gitlist/cache/views/82/8246521d51572fe61960fe57fe78cc46e5b2dcbe5741a6eae457e4d553394a39.php deleted file mode 100644 index 1e01063..0000000 --- a/application/modules/gitlist/cache/views/82/8246521d51572fe61960fe57fe78cc46e5b2dcbe5741a6eae457e4d553394a39.php +++ /dev/null @@ -1,106 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - // line 1 - echo " - - - Latest commits in "; - // line 4 - echo twig_escape_filter($this->env, ($context["repo"] ?? null), "html", null, true); - echo ":"; - echo twig_escape_filter($this->env, ($context["branch"] ?? null), "html", null, true); - echo " - RSS provided by GitList - "; - // line 6 - echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getUrl("homepage"); - echo " - - "; - // line 8 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable(($context["commits"] ?? null)); - foreach ($context['_seq'] as $context["_key"] => $context["commit"]) { - // line 9 - echo " - "; - // line 10 - echo twig_escape_filter($this->env, $this->getAttribute($context["commit"], "message", array()), "html", null, true); - echo " - "; - // line 11 - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["commit"], "author", array()), "name", array()), "html", null, true); - echo " authored "; - echo twig_escape_filter($this->env, $this->getAttribute($context["commit"], "shortHash", array()), "html", null, true); - echo " in "; - echo twig_escape_filter($this->env, call_user_func_array($this->env->getFilter('format_date')->getCallable(), array($this->getAttribute($context["commit"], "date", array()))), "html", null, true); - echo " - "; - // line 12 - echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getUrl("commit", array("repo" => ($context["repo"] ?? null), "commit" => $this->getAttribute($context["commit"], "hash", array()))), "html", null, true); - echo " - "; - // line 13 - echo twig_escape_filter($this->env, twig_date_format_filter($this->env, $this->getAttribute($context["commit"], "date", array()), "r"), "html", null, true); - echo " - "; - // line 14 - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["commit"], "author", array()), "email", array()), "html", null, true); - echo " ("; - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["commit"], "author", array()), "name", array()), "html", null, true); - echo ") - - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['commit'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 17 - echo " - -"; - } - - public function getTemplateName() - { - return "rss.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 74 => 17, 63 => 14, 59 => 13, 55 => 12, 47 => 11, 43 => 10, 40 => 9, 36 => 8, 31 => 6, 24 => 4, 19 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "rss.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/rss.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/94/9435d9b6d92a4ad5e2ed08e500303430c9fba9f0982d0e4fc5c078f21ae00a95.php b/application/modules/gitlist/cache/views/94/9435d9b6d92a4ad5e2ed08e500303430c9fba9f0982d0e4fc5c078f21ae00a95.php deleted file mode 100644 index 10d5e58..0000000 --- a/application/modules/gitlist/cache/views/94/9435d9b6d92a4ad5e2ed08e500303430c9fba9f0982d0e4fc5c078f21ae00a95.php +++ /dev/null @@ -1,77 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - // line 1 - echo "
-
- -
-
-"; - } - - public function getTemplateName() - { - return "navigation.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 38 => 13, 29 => 9, 19 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "navigation.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/navigation.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/99/99572572da10fe038cd5a138d794a2027d12f262c864e02292f91da26b8c299e.php b/application/modules/gitlist/cache/views/99/99572572da10fe038cd5a138d794a2027d12f262c864e02292f91da26b8c299e.php deleted file mode 100644 index d4548ad..0000000 --- a/application/modules/gitlist/cache/views/99/99572572da10fe038cd5a138d794a2027d12f262c864e02292f91da26b8c299e.php +++ /dev/null @@ -1,185 +0,0 @@ -parent = false; - - $this->blocks = array( - 'title' => array($this, 'block_title'), - 'body' => array($this, 'block_body'), - 'javascripts' => array($this, 'block_javascripts'), - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - // line 1 - echo " - - - - "; - // line 5 - echo twig_escape_filter($this->env, ($context["title"] ?? null), "html", null, true); - if (($context["title"] ?? null)) { - echo " - "; - } - $this->displayBlock('title', $context, $blocks); - echo " - env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true); - echo "/themes/"; - echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true); - echo "/css/style.css\"> - env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true); - echo "/themes/"; - echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true); - echo "/css/gitgraph.css\"> - env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true); - echo "/themes/"; - echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true); - echo "/img/favicon.png\" /> - - - - - "; - // line 15 - $this->displayBlock('body', $context, $blocks); - // line 16 - echo " "; - $this->displayBlock('javascripts', $context, $blocks); - // line 29 - echo " - -"; - } - - // line 5 - public function block_title($context, array $blocks = array()) - { - echo "Welcome!"; - } - - // line 15 - public function block_body($context, array $blocks = array()) - { - } - - // line 16 - public function block_javascripts($context, array $blocks = array()) - { - // line 17 - echo " - - - - - - - - - - - "; - } - - public function getTemplateName() - { - return "layout.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 151 => 27, 145 => 26, 139 => 25, 133 => 24, 127 => 23, 121 => 22, 115 => 21, 109 => 20, 103 => 19, 97 => 18, 90 => 17, 87 => 16, 82 => 15, 76 => 5, 70 => 29, 67 => 16, 65 => 15, 55 => 10, 48 => 8, 42 => 7, 36 => 6, 28 => 5, 22 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "layout.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/layout.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/9e/9e07e2c88779415d7b20e5b1d798e4653a1526861362cb7458174c1ff0fe51e9.php b/application/modules/gitlist/cache/views/9e/9e07e2c88779415d7b20e5b1d798e4653a1526861362cb7458174c1ff0fe51e9.php deleted file mode 100644 index 4207f59..0000000 --- a/application/modules/gitlist/cache/views/9e/9e07e2c88779415d7b20e5b1d798e4653a1526861362cb7458174c1ff0fe51e9.php +++ /dev/null @@ -1,87 +0,0 @@ -parent = $this->loadTemplate("layout.twig", "error.twig", 1); - $this->blocks = array( - 'title' => array($this, 'block_title'), - 'body' => array($this, 'block_body'), - ); - } - - protected function doGetParent(array $context) - { - return "layout.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $this->parent->display($context, array_merge($this->blocks, $blocks)); - } - - // line 2 - public function block_title($context, array $blocks = array()) - { - echo "GitList"; - } - - // line 4 - public function block_body($context, array $blocks = array()) - { - // line 5 - $this->loadTemplate("navigation.twig", "error.twig", 5)->display($context); - // line 6 - echo " -
- -
- Oops! "; - // line 10 - echo twig_escape_filter($this->env, ($context["message"] ?? null), "html", null, true); - echo " -
- -
- - "; - // line 15 - $this->loadTemplate("footer.twig", "error.twig", 15)->display($context); - // line 16 - echo "
-"; - } - - public function getTemplateName() - { - return "error.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 56 => 16, 54 => 15, 46 => 10, 40 => 6, 38 => 5, 35 => 4, 29 => 2, 11 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "error.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/error.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/a9/a9ce3034fdb5fcf786220e2a74f776eb60ea77eaf2c993f51a4a4cad792037a6.php b/application/modules/gitlist/cache/views/a9/a9ce3034fdb5fcf786220e2a74f776eb60ea77eaf2c993f51a4a4cad792037a6.php deleted file mode 100644 index 4e5f331..0000000 --- a/application/modules/gitlist/cache/views/a9/a9ce3034fdb5fcf786220e2a74f776eb60ea77eaf2c993f51a4a4cad792037a6.php +++ /dev/null @@ -1,165 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - // line 1 - if (($context["commits"] ?? null)) { - // line 2 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable(($context["commits"] ?? null)); - foreach ($context['_seq'] as $context["date"] => $context["commit"]) { - // line 3 - echo " - - - - - - - "; - // line 10 - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable($context["commit"]); - foreach ($context['_seq'] as $context["_key"] => $context["item"]) { - // line 11 - echo " - - - - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['item'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 25 - echo " -
"; - // line 6 - echo twig_escape_filter($this->env, twig_date_format_filter($this->env, $context["date"], "F j, Y"), "html", null, true); - echo "
env, call_user_func_array($this->env->getFunction('avatar')->getCallable(), array($this->getAttribute($this->getAttribute($context["item"], "author", array()), "email", array()), 40)), "html", null, true); - echo "\" /> - env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("commit", array("repo" => ($context["repo"] ?? null), "commit" => $this->getAttribute($context["item"], "hash", array()))), "html", null, true); - echo "\"> View "; - echo twig_escape_filter($this->env, $this->getAttribute($context["item"], "shortHash", array()), "html", null, true); - echo " -

"; - // line 15 - echo twig_escape_filter($this->env, $this->getAttribute($context["item"], "message", array()), "html", null, true); - echo "

- - env, $this->getAttribute($this->getAttribute($context["item"], "author", array()), "email", array()), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["item"], "author", array()), "name", array()), "html", null, true); - echo " authored on "; - echo twig_escape_filter($this->env, call_user_func_array($this->env->getFilter('format_date')->getCallable(), array($this->getAttribute($context["item"], "date", array()))), "html", null, true); - echo " - "; - // line 18 - if (($this->getAttribute($this->getAttribute($context["item"], "author", array()), "email", array()) != $this->getAttribute($this->getAttribute($context["item"], "commiter", array()), "email", array()))) { - // line 19 - echo " • env, $this->getAttribute($this->getAttribute($context["item"], "commiter", array()), "email", array()), "html", null, true); - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["item"], "commiter", array()), "name", array()), "html", null, true); - echo " committed on "; - echo twig_escape_filter($this->env, call_user_func_array($this->env->getFilter('format_date')->getCallable(), array($this->getAttribute($context["item"], "commiterDate", array()))), "html", null, true); - echo " - "; - } - // line 21 - echo " -
-"; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['date'], $context['commit'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - } else { - // line 29 - echo "

No results found.

-"; - } - // line 31 - echo " -"; - // line 32 - if ((($context["page"] ?? null) != "searchcommits")) { - // line 33 - echo " -"; - } - } - - public function getTemplateName() - { - return "commits_list.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 133 => 44, 127 => 41, 124 => 40, 121 => 39, 115 => 36, 112 => 35, 110 => 34, 107 => 33, 105 => 32, 102 => 31, 98 => 29, 89 => 25, 80 => 21, 70 => 19, 68 => 18, 60 => 17, 55 => 15, 49 => 14, 44 => 12, 41 => 11, 37 => 10, 30 => 6, 25 => 3, 21 => 2, 19 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "commits_list.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/commits_list.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/bc/bc8627d357d19997a51c3915bf31f6c6e3e724894bb658bead46100c8d5615db.php b/application/modules/gitlist/cache/views/bc/bc8627d357d19997a51c3915bf31f6c6e3e724894bb658bead46100c8d5615db.php deleted file mode 100644 index 8062f71..0000000 --- a/application/modules/gitlist/cache/views/bc/bc8627d357d19997a51c3915bf31f6c6e3e724894bb658bead46100c8d5615db.php +++ /dev/null @@ -1,343 +0,0 @@ -parent = $this->loadTemplate("layout_page.twig", "tree.twig", 1); - $this->blocks = array( - 'title' => array($this, 'block_title'), - 'content' => array($this, 'block_content'), - ); - } - - protected function doGetParent(array $context) - { - return "layout_page.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - // line 3 - $context["page"] = "files"; - // line 1 - $this->parent->display($context, array_merge($this->blocks, $blocks)); - } - - // line 5 - public function block_title($context, array $blocks = array()) - { - echo "GitList"; - } - - // line 7 - public function block_content($context, array $blocks = array()) - { - // line 8 - echo " "; - $this->loadTemplate("tree.twig", "tree.twig", 8, "1604538170")->display(array_merge($context, array("breadcrumbs" => ($context["breadcrumbs"] ?? null)))); - // line 43 - echo " - "; - // line 44 - if ( !twig_test_empty(($context["files"] ?? null))) { - // line 45 - echo " - - - - - - - - - "; - // line 54 - if ( !(null === ($context["parent"] ?? null))) { - // line 55 - echo " - - - - - "; - } - // line 67 - echo " "; - $context['_parent'] = $context; - $context['_seq'] = twig_ensure_traversable(($context["files"] ?? null)); - foreach ($context['_seq'] as $context["_key"] => $context["file"]) { - // line 68 - echo " - - - - - "; - } - $_parent = $context['_parent']; - unset($context['_seq'], $context['_iterated'], $context['_key'], $context['file'], $context['_parent'], $context['loop']); - $context = array_intersect_key($context, $_parent) + $_parent; - // line 80 - echo " -
namemodesize
- "; - // line 57 - if ( !($context["parent"] ?? null)) { - // line 58 - echo " env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("branch", array("repo" => ($context["repo"] ?? null), "branch" => ($context["branch"] ?? null))), "html", null, true); - echo "\">.. - "; - } else { - // line 60 - echo " env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("tree", array("repo" => ($context["repo"] ?? null), "commitishPath" => ((($context["branch"] ?? null) . "/") . ($context["parent"] ?? null)))), "html", null, true); - echo "\">.. - "; - } - // line 62 - echo "
getAttribute($context["file"], "type", array()) == "folder") || ($this->getAttribute($context["file"], "type", array()) == "symlink"))) ? ("icon-folder-open") : ("icon-file")); - echo " icon-spaced\"> getAttribute($context["file"], "type", array()) == "folder") || ($this->getAttribute($context["file"], "type", array()) == "symlink"))) { - // line 71 - echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("tree", array("repo" => ($context["repo"] ?? null), "commitishPath" => (((($context["branch"] ?? null) . "/") . ($context["path"] ?? null)) . ((($this->getAttribute($context["file"], "type", array()) == "symlink")) ? ($this->getAttribute($context["file"], "path", array())) : ($this->getAttribute($context["file"], "name", array())))))), "html", null, true); - } else { - // line 73 - echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("blob", array("repo" => ($context["repo"] ?? null), "commitishPath" => (((($context["branch"] ?? null) . "/") . ($context["path"] ?? null)) . ((($this->getAttribute($context["file"], "type", array()) == "symlink")) ? ($this->getAttribute($context["file"], "path", array())) : ($this->getAttribute($context["file"], "name", array())))))), "html", null, true); - } - // line 75 - echo "\">"; - echo twig_escape_filter($this->env, $this->getAttribute($context["file"], "name", array()), "html", null, true); - echo ""; - // line 76 - echo twig_escape_filter($this->env, $this->getAttribute($context["file"], "mode", array()), "html", null, true); - echo ""; - // line 77 - if ($this->getAttribute($context["file"], "size", array())) { - echo twig_escape_filter($this->env, call_user_func_array($this->env->getFilter('format_size')->getCallable(), array($this->getAttribute($context["file"], "size", array()))), "html", null, true); - } - echo "
- "; - } else { - // line 83 - echo "

This repository is empty.

- "; - } - // line 85 - echo " "; - if ((array_key_exists("readme", $context) && !twig_test_empty(($context["readme"] ?? null)))) { - // line 86 - echo "
-
-
"; - // line 88 - echo twig_escape_filter($this->env, $this->getAttribute(($context["readme"] ?? null), "filename", array()), "html", null, true); - echo "
-
-
"; - // line 90 - echo twig_escape_filter($this->env, $this->getAttribute(($context["readme"] ?? null), "content", array()), "html", null, true); - echo "
-
- "; - } - // line 93 - echo " -
-"; - } - - public function getTemplateName() - { - return "tree.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 153 => 93, 147 => 90, 142 => 88, 138 => 86, 135 => 85, 131 => 83, 126 => 80, 115 => 77, 111 => 76, 106 => 75, 103 => 73, 100 => 71, 98 => 70, 95 => 69, 92 => 68, 87 => 67, 80 => 62, 74 => 60, 68 => 58, 66 => 57, 62 => 55, 60 => 54, 49 => 45, 47 => 44, 44 => 43, 41 => 8, 38 => 7, 32 => 5, 28 => 1, 26 => 3, 11 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "tree.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/tree.twig"); - } -} - - -/* tree.twig */ -class __TwigTemplate_74e1d3d532bff3ca08812970328e2a26187fedd0631d80c6181c6ca30bfc6a4d_1604538170 extends Twig_Template -{ - public function __construct(Twig_Environment $env) - { - parent::__construct($env); - - // line 8 - $this->parent = $this->loadTemplate("breadcrumb.twig", "tree.twig", 8); - $this->blocks = array( - 'extra' => array($this, 'block_extra'), - ); - } - - protected function doGetParent(array $context) - { - return "breadcrumb.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $this->parent->display($context, array_merge($this->blocks, $blocks)); - } - - // line 9 - public function block_extra($context, array $blocks = array()) - { - // line 10 - echo "
-
- "; - // line 12 - if ((($context["show_http_remote"] ?? null) || ($context["show_ssh_remote"] ?? null))) { - // line 13 - echo " Clone - "; - } - // line 15 - echo " env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("archive", array("repo" => ($context["repo"] ?? null), "branch" => ($context["branch"] ?? null), "format" => "zip")), "html", null, true); - echo "\" class=\"btn btn-mini\" title=\"Download '"; - echo twig_escape_filter($this->env, ($context["branch"] ?? null), "html", null, true); - echo "' as a ZIP archive\">ZIP - env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("archive", array("repo" => ($context["repo"] ?? null), "branch" => ($context["branch"] ?? null), "format" => "tar")), "html", null, true); - echo "\" class=\"btn btn-mini\" title=\"Download '"; - echo twig_escape_filter($this->env, ($context["branch"] ?? null), "html", null, true); - echo "' as a TAR archive\">TAR -
- env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("rss", array("repo" => ($context["repo"] ?? null), "branch" => ($context["branch"] ?? null))), "html", null, true); - echo "\" class=\"rss-icon\"> -
- "; - // line 20 - if ((($context["show_http_remote"] ?? null) || ($context["show_ssh_remote"] ?? null))) { - // line 21 - echo "
-
- × -
- "; - // line 25 - if (($context["show_ssh_remote"] ?? null)) { - // line 26 - echo " - "; - } - // line 28 - echo " "; - if (($context["show_http_remote"] ?? null)) { - // line 29 - echo " - "; - } - // line 31 - echo "

- "; - // line 32 - if (($context["show_ssh_remote"] ?? null)) { - // line 33 - echo " env, twig_urlencode_filter(($context["ssh_user"] ?? null)), "html", null, true); - echo ((($context["ssh_user"] ?? null)) ? ("@") : ("")); - echo twig_escape_filter($this->env, ((($context["ssh_host"] ?? null)) ? (($context["ssh_host"] ?? null)) : ($this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "host", array()))), "html", null, true); - echo ":"; - echo twig_escape_filter($this->env, ((($context["ssh_port"] ?? null)) ? ((($context["ssh_port"] ?? null) . "/")) : ("")), "html", null, true); - echo twig_escape_filter($this->env, ($context["ssh_url_subdir"] ?? null), "html", null, true); - echo twig_escape_filter($this->env, ($context["repo"] ?? null), "html", null, true); - echo "\"> - "; - } - // line 35 - echo " "; - if (($context["show_http_remote"] ?? null)) { - // line 36 - echo " env, twig_urlencode_filter(($context["http_user"] ?? null)), "html", null, true); - echo ((($context["http_user"] ?? null)) ? ("@") : ("")); - echo twig_escape_filter($this->env, ((($context["http_host"] ?? null)) ? (($context["http_host"] ?? null)) : ($this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "host", array()))), "html", null, true); - echo "/"; - echo twig_escape_filter($this->env, ($context["http_url_subdir"] ?? null), "html", null, true); - echo twig_escape_filter($this->env, ($context["repo"] ?? null), "html", null, true); - echo "\"> - "; - } - // line 38 - echo "
-
- "; - } - // line 41 - echo " "; - } - - public function getTemplateName() - { - return "tree.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 313 => 41, 308 => 38, 293 => 36, 290 => 35, 275 => 33, 273 => 32, 270 => 31, 264 => 29, 261 => 28, 255 => 26, 253 => 25, 247 => 21, 245 => 20, 240 => 18, 233 => 16, 226 => 15, 222 => 13, 220 => 12, 216 => 10, 213 => 9, 196 => 8, 153 => 93, 147 => 90, 142 => 88, 138 => 86, 135 => 85, 131 => 83, 126 => 80, 115 => 77, 111 => 76, 106 => 75, 103 => 73, 100 => 71, 98 => 70, 95 => 69, 92 => 68, 87 => 67, 80 => 62, 74 => 60, 68 => 58, 66 => 57, 62 => 55, 60 => 54, 49 => 45, 47 => 44, 44 => 43, 41 => 8, 38 => 7, 32 => 5, 28 => 1, 26 => 3, 11 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "tree.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/tree.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/c0/c04fe4a18f613ac67e19918ac685370ed36e33213be5be822094e6e091c9cdbe.php b/application/modules/gitlist/cache/views/c0/c04fe4a18f613ac67e19918ac685370ed36e33213be5be822094e6e091c9cdbe.php deleted file mode 100644 index 7f3e3b8..0000000 --- a/application/modules/gitlist/cache/views/c0/c04fe4a18f613ac67e19918ac685370ed36e33213be5be822094e6e091c9cdbe.php +++ /dev/null @@ -1,47 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - // line 1 - echo " -"; - } - - public function getTemplateName() - { - return "footer.twig"; - } - - public function getDebugInfo() - { - return array ( 19 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "footer.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/footer.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/c2/c21f0b9e0dc3c7f97ada899a16e238d5f03085cf271a8cb98ccbe212614e5e68.php b/application/modules/gitlist/cache/views/c2/c21f0b9e0dc3c7f97ada899a16e238d5f03085cf271a8cb98ccbe212614e5e68.php deleted file mode 100644 index 6a75973..0000000 --- a/application/modules/gitlist/cache/views/c2/c21f0b9e0dc3c7f97ada899a16e238d5f03085cf271a8cb98ccbe212614e5e68.php +++ /dev/null @@ -1,182 +0,0 @@ -parent = false; - - $this->blocks = array( - 'title' => array($this, 'block_title'), - 'body' => array($this, 'block_body'), - 'javascripts' => array($this, 'block_javascripts'), - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - // line 1 - echo " - - - - "; - // line 5 - echo twig_escape_filter($this->env, ($context["title"] ?? null), "html", null, true); - if (($context["title"] ?? null)) { - echo " -"; - } - $this->displayBlock('title', $context, $blocks); - echo " - env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true); - echo "/themes/"; - echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true); - echo "/css/style.css\"> - env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true); - echo "/themes/"; - echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true); - echo "/css/gitgraph.css\"> - env, $this->getAttribute($this->getAttribute(($context["app"] ?? null), "request", array()), "basepath", array()), "html", null, true); - echo "/themes/"; - echo twig_escape_filter($this->env, ($context["theme"] ?? null), "html", null, true); - echo "/img/favicon.png\" /> - - - - "; - // line 15 - $this->displayBlock('body', $context, $blocks); - // line 16 - $this->displayBlock('javascripts', $context, $blocks); - // line 29 - echo " - -"; - } - - // line 5 - public function block_title($context, array $blocks = array()) - { - echo "Welcome!"; - } - - // line 15 - public function block_body($context, array $blocks = array()) - { - } - - // line 16 - public function block_javascripts($context, array $blocks = array()) - { - // line 17 - echo " - - - - - - - - - - "; - } - - public function getTemplateName() - { - return "layout.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 149 => 27, 143 => 26, 137 => 25, 131 => 24, 125 => 23, 119 => 22, 113 => 21, 107 => 20, 101 => 19, 95 => 18, 88 => 17, 85 => 16, 80 => 15, 74 => 5, 68 => 29, 66 => 16, 64 => 15, 55 => 10, 48 => 8, 42 => 7, 36 => 6, 28 => 5, 22 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "layout.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/layout.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/cc/cc4ca4fe355a01288bc24b2264a8cbf74f39c158a3514bb76dc1c1d51bf1591c.php b/application/modules/gitlist/cache/views/cc/cc4ca4fe355a01288bc24b2264a8cbf74f39c158a3514bb76dc1c1d51bf1591c.php deleted file mode 100644 index 29d9867..0000000 --- a/application/modules/gitlist/cache/views/cc/cc4ca4fe355a01288bc24b2264a8cbf74f39c158a3514bb76dc1c1d51bf1591c.php +++ /dev/null @@ -1,119 +0,0 @@ -parent = false; - - $this->blocks = array( - 'extra' => array($this, 'block_extra'), - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - // line 1 - echo " -"; - } - - // line 8 - public function block_extra($context, array $blocks = array()) - { - } - - public function getTemplateName() - { - return "breadcrumb.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 88 => 8, 83 => 9, 81 => 8, 78 => 7, 49 => 5, 46 => 4, 29 => 3, 23 => 2, 20 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "breadcrumb.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/breadcrumb.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/d1/d1d4c1893e0d1040b00dc9c94e469741c42eac9df87657140edb7b72ef079a14.php b/application/modules/gitlist/cache/views/d1/d1d4c1893e0d1040b00dc9c94e469741c42eac9df87657140edb7b72ef079a14.php deleted file mode 100644 index 4504e6d..0000000 --- a/application/modules/gitlist/cache/views/d1/d1d4c1893e0d1040b00dc9c94e469741c42eac9df87657140edb7b72ef079a14.php +++ /dev/null @@ -1,47 +0,0 @@ -parent = false; - - $this->blocks = array( - ); - } - - protected function doDisplay(array $context, array $blocks = array()) - { - // line 1 - echo " -"; - } - - public function getTemplateName() - { - return "footer.twig"; - } - - public function getDebugInfo() - { - return array ( 19 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "footer.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/footer.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/d4/d4a0c1afea64a2bf6a0e0755dfffc443712a7443063394283474428926dd4d91.php b/application/modules/gitlist/cache/views/d4/d4a0c1afea64a2bf6a0e0755dfffc443712a7443063394283474428926dd4d91.php deleted file mode 100644 index 61798b1..0000000 --- a/application/modules/gitlist/cache/views/d4/d4a0c1afea64a2bf6a0e0755dfffc443712a7443063394283474428926dd4d91.php +++ /dev/null @@ -1,130 +0,0 @@ -parent = $this->loadTemplate("layout_page.twig", "file.twig", 1); - $this->blocks = array( - 'title' => array($this, 'block_title'), - 'content' => array($this, 'block_content'), - ); - } - - protected function doGetParent(array $context) - { - return "layout_page.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - // line 3 - $context["page"] = "files"; - // line 1 - $this->parent->display($context, array_merge($this->blocks, $blocks)); - } - - // line 5 - public function block_title($context, array $blocks = array()) - { - echo "GitList"; - } - - // line 7 - public function block_content($context, array $blocks = array()) - { - // line 8 - echo " "; - $this->loadTemplate("breadcrumb.twig", "file.twig", 8)->display(array_merge($context, array("breadcrumbs" => ($context["breadcrumbs"] ?? null)))); - // line 9 - echo " -
-
-
- - -
- "; - // line 21 - if ((($context["fileType"] ?? null) == "image")) { - // line 22 - echo "
env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("blob_raw", array("repo" => ($context["repo"] ?? null), "commitishPath" => ((($context["branch"] ?? null) . "/") . ($context["file"] ?? null)))), "html", null, true); - echo "\" alt=\""; - echo twig_escape_filter($this->env, ($context["file"] ?? null), "html", null, true); - echo "\" class=\"image-blob\" />
- - "; - } elseif (( // line 24 -($context["fileType"] ?? null) == "markdown")) { - // line 25 - echo "
"; - echo twig_escape_filter($this->env, ($context["blob"] ?? null), "html", null, true); - echo "
- - "; - } else { - // line 28 - echo "
env, ($context["fileType"] ?? null), "html", null, true);
-            echo "\">";
-            echo htmlentities(($context["blob"] ?? null));
-            echo "
- "; - } - // line 30 - echo "
- -
-"; - } - - public function getTemplateName() - { - return "file.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 97 => 30, 89 => 28, 82 => 25, 80 => 24, 72 => 22, 70 => 21, 64 => 18, 60 => 17, 56 => 16, 52 => 15, 44 => 9, 41 => 8, 38 => 7, 32 => 5, 28 => 1, 26 => 3, 11 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "file.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/file.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/d7/d72d04fa2f8ac5b865e90efd3fe86f18d0e5bf33f346469d9c648dc4adba02a6.php b/application/modules/gitlist/cache/views/d7/d72d04fa2f8ac5b865e90efd3fe86f18d0e5bf33f346469d9c648dc4adba02a6.php deleted file mode 100644 index e8c9768..0000000 --- a/application/modules/gitlist/cache/views/d7/d72d04fa2f8ac5b865e90efd3fe86f18d0e5bf33f346469d9c648dc4adba02a6.php +++ /dev/null @@ -1,137 +0,0 @@ -parent = $this->loadTemplate("layout.twig", "layout_page.twig", 1); - $this->blocks = array( - 'body' => array($this, 'block_body'), - 'content' => array($this, 'block_content'), - ); - } - - protected function doGetParent(array $context) - { - return "layout.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $this->parent->display($context, array_merge($this->blocks, $blocks)); - } - - // line 3 - public function block_body($context, array $blocks = array()) - { - // line 4 - echo " "; - $this->loadTemplate("navigation.twig", "layout_page.twig", 4)->display($context); - // line 5 - echo " -
-
-
- "; - // line 9 - if (twig_in_filter(($context["page"] ?? null), array(0 => "commits", 1 => "searchcommits"))) { - // line 10 - echo " - "; - } else { - // line 14 - echo " - "; - } - // line 18 - echo " - "; - // line 19 - if (array_key_exists("branches", $context)) { - // line 20 - echo " "; - $this->loadTemplate("branch_menu.twig", "layout_page.twig", 20)->display($context); - // line 21 - echo " "; - } - // line 22 - echo " - "; - // line 23 - $this->loadTemplate("menu.twig", "layout_page.twig", 23)->display($context); - // line 24 - echo "
-
- - "; - // line 27 - $this->displayBlock('content', $context, $blocks); - // line 28 - echo " - "; - // line 29 - $this->loadTemplate("footer.twig", "layout_page.twig", 29)->display($context); - // line 30 - echo "
-"; - } - - // line 27 - public function block_content($context, array $blocks = array()) - { - } - - public function getTemplateName() - { - return "layout_page.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 106 => 27, 101 => 30, 99 => 29, 96 => 28, 94 => 27, 89 => 24, 87 => 23, 84 => 22, 81 => 21, 78 => 20, 76 => 19, 73 => 18, 67 => 15, 58 => 14, 52 => 11, 43 => 10, 41 => 9, 35 => 5, 32 => 4, 29 => 3, 11 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "layout_page.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/layout_page.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/d7/d758ccc888b29cbcbb9799085e2a6a8ed99bb384cdedb63cb36596537c881f58.php b/application/modules/gitlist/cache/views/d7/d758ccc888b29cbcbb9799085e2a6a8ed99bb384cdedb63cb36596537c881f58.php deleted file mode 100644 index f62a309..0000000 --- a/application/modules/gitlist/cache/views/d7/d758ccc888b29cbcbb9799085e2a6a8ed99bb384cdedb63cb36596537c881f58.php +++ /dev/null @@ -1,84 +0,0 @@ -parent = $this->loadTemplate("layout.twig", "error.twig", 1); - $this->blocks = array( - 'title' => array($this, 'block_title'), - 'body' => array($this, 'block_body'), - ); - } - - protected function doGetParent(array $context) - { - return "layout.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - $this->parent->display($context, array_merge($this->blocks, $blocks)); - } - - // line 2 - public function block_title($context, array $blocks = array()) - { - echo "GitList"; - } - - // line 4 - public function block_body($context, array $blocks = array()) - { - // line 5 - $this->loadTemplate("navigation.twig", "error.twig", 5)->display($context); - // line 6 - echo " -
- -
- Oops!"; - // line 10 - echo twig_escape_filter($this->env, ($context["message"] ?? null), "html", null, true); - echo " -
- -
"; - // line 15 - $this->loadTemplate("footer.twig", "error.twig", 15)->display($context); - // line 16 - echo "
"; - } - - public function getTemplateName() - { - return "error.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 54 => 16, 52 => 15, 46 => 10, 40 => 6, 38 => 5, 35 => 4, 29 => 2, 11 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "error.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/error.twig"); - } -} diff --git a/application/modules/gitlist/cache/views/e6/e6ff95e468f4e927d0fa059d99c8e13d3dbb11d956ac4e83307b9d1e10361d43.php b/application/modules/gitlist/cache/views/e6/e6ff95e468f4e927d0fa059d99c8e13d3dbb11d956ac4e83307b9d1e10361d43.php deleted file mode 100644 index d056729..0000000 --- a/application/modules/gitlist/cache/views/e6/e6ff95e468f4e927d0fa059d99c8e13d3dbb11d956ac4e83307b9d1e10361d43.php +++ /dev/null @@ -1,81 +0,0 @@ -parent = $this->loadTemplate("layout_page.twig", "commits.twig", 1); - $this->blocks = array( - 'title' => array($this, 'block_title'), - 'content' => array($this, 'block_content'), - ); - } - - protected function doGetParent(array $context) - { - return "layout_page.twig"; - } - - protected function doDisplay(array $context, array $blocks = array()) - { - // line 3 - $context["page"] = "commits"; - // line 1 - $this->parent->display($context, array_merge($this->blocks, $blocks)); - } - - // line 5 - public function block_title($context, array $blocks = array()) - { - echo "GitList"; - } - - // line 7 - public function block_content($context, array $blocks = array()) - { - // line 8 - echo " "; - $this->loadTemplate("breadcrumb.twig", "commits.twig", 8)->display(array_merge($context, array("breadcrumbs" => array(0 => array("dir" => "Commit history", "path" => ""))))); - // line 9 - echo " - "; - // line 10 - $this->loadTemplate("commits_list.twig", "commits.twig", 10)->display($context); - // line 11 - echo " -
-"; - } - - public function getTemplateName() - { - return "commits.twig"; - } - - public function isTraitable() - { - return false; - } - - public function getDebugInfo() - { - return array ( 49 => 11, 47 => 10, 44 => 9, 41 => 8, 38 => 7, 32 => 5, 28 => 1, 26 => 3, 11 => 1,); - } - - /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ - public function getSource() - { - @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); - - return $this->getSourceContext()->getCode(); - } - - public function getSourceContext() - { - return new Twig_Source("", "commits.twig", "/var/www/SAND-FrameWork-1.1.0/application/modules/gitlist/themes/default/twig/commits.twig"); - } -} diff --git a/application/modules/gitlist/config.ini b/application/modules/gitlist/config.ini deleted file mode 100644 index 5575ba1..0000000 --- a/application/modules/gitlist/config.ini +++ /dev/null @@ -1,58 +0,0 @@ -[git] -client = '/usr/bin/git' ; Your git executable path -default_branch = 'master' ; Default branch when HEAD is detached -repositories[] = '/home/git/repositories/' ; Path to your repositories - ; If you wish to add more repositories, just add a new line - -; WINDOWS USERS -;client = '"C:\Program Files (x86)\Git\bin\git.exe"' ; Your git executable path -;repositories[] = 'C:\Path\to\Repos\' ; Path to your repositories - -; You can hide repositories from GitList, just copy this for each repository you want to hide or add a regex (including delimiters), eg. hidden[] = '/(.+)\.git/' -; hidden[] = '/home/git/repositories/BetaTest' - -[app] -debug = false -cache = true -theme = "default" -title = "" - -[clone_button] -; ssh remote -show_ssh_remote = false ; display remote URL for SSH -ssh_host = '' ; host to use for cloning via HTTP (default: none => uses gitlist web host) -ssh_url_subdir = '' ; if cloning via SSH is triggered using special dir (e.g. ssh://example.com/git/repo.git) - ; has to end with trailing slash -ssh_port = '' ; port to use for cloning via SSH (default: 22 => standard ssh port) -ssh_user = 'git' ; user to use for cloning via SSH -ssh_user_dynamic = false ; when enabled, ssh_user is set to $_SERVER['PHP_AUTH_USER'] - -; http remote -show_http_remote = false ; display remote URL for HTTP -http_host = '' ; host to use for cloning via HTTP (default: none => uses gitlist web host) -use_https = true ; generate URL with https:// -http_url_subdir = 'git/' ; if cloning via HTTP is triggered using virtual dir (e.g. https://example.com/git/repo.git) - ; has to end with trailing slash -http_user = '' ; user to use for cloning via HTTP (default: none) -http_user_dynamic = false ; when enabled, http_user is set to $_SERVER['PHP_AUTH_USER'] - -; If you need to specify custom filetypes for certain extensions, do this here -[filetypes] -; extension = type -; dist = xml - -; If you need to set file types as binary or not, do this here -[binary_filetypes] -; extension = true -; svh = false -; map = true - -; set the timezone -[date] -; timezone = UTC -; format = 'd/m/Y H:i:s' - -; custom avatar service -[avatar] -; url = '//gravatar.com/avatar/' -; query[] = 'd=identicon' diff --git a/application/modules/gitlist/index.php b/application/modules/gitlist/index.php deleted file mode 100644 index 703fd0c..0000000 --- a/application/modules/gitlist/index.php +++ /dev/null @@ -1,30 +0,0 @@ -get('date', 'timezone')) { - date_default_timezone_set($config->get('date', 'timezone')); -} - -$app = require 'boot.php'; -$app->run(); - diff --git a/application/modules/gitlist/logo/editablefile.ai b/application/modules/gitlist/logo/editablefile.ai deleted file mode 100644 index 717534d..0000000 --- a/application/modules/gitlist/logo/editablefile.ai +++ /dev/null @@ -1,1670 +0,0 @@ -%PDF-1.5 %âãÏÓ -1 0 obj <>/OCGs[6 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream - - - - - application/pdf - - - gitlist - - - - - 2018-06-12T22:12:12+03:00 - 2018-06-12T22:12:12+03:00 - 2018-06-12T22:12:12+04:00 - Adobe Illustrator CS6 (Windows) - - - - 192 - 256 - JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAADAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q0zKqlmIVVFWY7AAd zikC2CfmlL5hn8uxXWhzB9LI9W8e3J9Ux7FHVlO8fdqfqrmu15mYXD6ev47noOwo4Y5zHMP3nKN8 r7vf3frYZ+X/AOZNzpFwLHV5Xn0uZtpXJd4GP7QrUlPEfSPfB0etMDUvp+53fa/Ysc0ePGKyD7f2 vbYpYpoklicSRSAMjqQVZSKggjqDm+BvcPCSiYmjsQuwodirsVQ8mo6fE5jluokkHVGdQfuJyJnE dWyOGZFgH5IgEEAg1B3BGSa3Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWmZVUsxCqoqzHYADuc UgW8Y/Mj8yG1RpNI0iQrpqnjcXC7Gcj9lf8Aiv8A4l8s0Wt1vH6Y/T973HYvYvhVlyj19B/N/b9y F/Lbz7c6RdxaReVm0q5cIgO5hdzTktf2CT8S/SO9YaLVmB4T9J+xt7a7JjmickdskR86/T3fL3SP z1+VuiRabqOs6a7208KtcG1qv1fioq6oOPJa9RvTtSmZWr0EBEzjt18nWdldvZTOGLJUgdr/AIvJ jn5dfmLLocq6bqTGTSJD8D7loGJ6jxQ9x9I98bRa3w/TL6fudn2z2MM48THtkH+y/a9wilimiSWJ xJFIAyOpBVlIqCCOoOb4G9w8FKJiaOxC7Ch4p+YP5l31/eS6bo87W+mwkpJPEaPORsTyG4TwA698 0Os1xkeGJqP3vddkdiQxxGTKLmeh/h/axC18t+Yry1+uWum3NxbmtJo4ncHxoQN/ozCjgnIWASHd ZNbghLhlOIl3WE//AC71TzlBqyWujJJdQBh9as5CRAq1+IsTtGfcb/PpmTosmUSqG47ujru2cGll j4stRPQ9f2vWvOfm+Pyxp8F3Jam69eX0uCvwoeJatSD4ZudTqfCiDVvHdmdnHVTMRLhoWlej/mZB qWharqy2DRLpaozQmQEvzr0PEU6ZTj1wlCUq+ly9T2IcWaGPivxOtcvtSP8A5Xna/wDVok/5Hj/m jKP5VH837XP/ANCsv9UHy/a7/ledr/1aJP8AkeP+aMf5VH837V/0Ky/1QfL9qV/mN5mbXPLeh6pB G9oJpblfS51PwFV6gL4ZTrc/iY4yG3Ny+xtD4GfJjJ4qEfttMfyNmlk/TfqOz0+q05Emn9945b2U SeL4fpcX2piB4df0v969UzbvJMU87efYfK0tpHJZtdfWldgVkCceBA7q382Yeq1Yw1tdu37L7JOr EiJcPDXRMfKvmeHX9E/Svo/VI+TqyO4agj6sWouW6fOMkOLk42v0J0+Xw74jt9rDdZ/Oywt7lodL sWvI0NPrMj+krU7qvFjT50zBy9qAGoi3d6b2YnKN5JcJ7gLQ2n/nkhkVdQ0srGftSW8nIj5I4Wv/ AAWRh2r/ADotub2WNeie/mP0/sTrzJ+atpot3BANPkuEuLeO6Ry/pMFlrQFGUkHbL8/aAgQKuxbg 6LsCWeJPGBUjHv5edpT/AMrztf8Aq0Sf8jx/zRlP8qj+b9rmf6FZf6oPl+1H6D+b1tq+sWmmrpjw tdOIxKZQwWorWnAZZh7RE5CPDzcfV+zssOKWTjvhHd+1jX5l/mLLqEs2iaWxjsI2KXcwqGmZTQqP BAfv+WYuu1vF6I8uvm7TsTsYYwMuTeZ5Du/b9zz63tbm4cpbxPM4HIrGpYgDvQVzWCJPJ6Oc4xFy NPa/J3k7yZc+TLaaa2hnaeHneXj09RJKfvAJOsfpnbanTN9ptNiOIEgGxuXhe0u0tVHVEAkUdh0r pt1th1l591S31eHTvM8k15osTAGOWMI7psYZZV4h5FpRuJO/XfMGOrkJCOTeP4o+bu8vZOOWIz04 Ecp7jfvA3od3l5L/AD/5Ahtof8QeX6T6POPVlii+IRBt+aU6xn/hfl0Os0YA44fT+PsY9kdrmR8H NtkG2/XyPn9/vUfy4/MObRZ49L1Bml0qVqRt1aBmPVfFCeo+ke40WsMDwy+n7mfbXY4zg5IbZB/s v2vXPNd1LaeWdVuIjSWO1mKMOzcDQ/Rm51EqxyI7njez8YnnhE8jIfe8B8m6Zban5o06xut7eaUe qp25BQW4/wCy40znNNATyAHk+i9pZ5YtPOcfqAe8+ateTy3oEmopaidLcxoturekKMwQUIVqUr4Z 0Woy+FDirk+e6DSHU5hAyq735+bz+P8AO+CIuYvL6oZG5yFbkDkx/aakO5zWjtQD+D7f2PRy9lya vLy/o/8AHlv5i67+nvIOjat6H1b6zdv+55+px9P1Y/tUSteFemOty+JhjKqs/rT2NpPy+syY74uG I35c+Et/k/p1rqWi69YXalre4MKSBSVNCH6EY9mwEoSB5Gke0eaWLLinH6o3+hQ/MvyH5f8AL+hQ XunJKs8l0kLF3Ljg0cjHb5oMjrtJDHAGPe2didrZtRmMZ1QjfLzCD/LDyZonmKDUH1JZGa2aIRem 5TZwxNaf6uQ0GmhlB4ujd272ll0xgMdeq/0I782NFsNF0PQ9OsVZbaKS4KhmLGrcWNSfc5PtDEIQ jEct2j2f1U8+XJOf1ER/SivyJ/6Xn/Rr/wAzsn2T/F8P0tXtV/k/87/evVs3DyDyP88/969I/wCM c/60zTdq84/F7L2V+nJ7x+lFeWILuf8AJ7UIrQEzt69FXclQwLqKeK1GSwAnSkDzatdOMe04GXL0 /j5vNdCv9OsNRS41CwXUrYAhrZ3KCp/aqK9PfNXinGMrkOIPUavDPJDhhLgl382badN+UmrajayP BNo8ySKzQyNW2lINeLsS4Cn/AGOZ8DppyGxj9zoc0e0sMJAEZBXMfUPu/S9D1/yD5c1+9W+vkkaY RrGGjkKgqpJGw/1s2WbSQyGy83pO1s+njwQIq73DwjzLYW+n+YNQsbYEQW08kUQY1PFWoKnOezwE ZkDkC+g6LLLJhhOXOUQXt+lfll5V0vUIL+1jm+sW7c4uUpIrSm4zf49DjhISHMPBajtzUZYGEiKP k87/ADJ/L+40i5l1exDTaXO5eUdWgdzWjf5BJ2P0H31mt0ZgeIfT9z0vYva8c0RjntkH2/tTb8of MnlzTdLvbW/uYrO8ef1fUlIQPFwUKoc7fCwbb3y7s7PCMSCaNuH7RaLPlyRlAGUarbob7vklXn2y 1e31STzPp0LRaLeTRyxkD4HdAvGWWEinGRwSvIb9+uU6uMhLxIj0n8bjzczsnLiljGnmbyxBHzvY HyHdy+DIv9wn5maJ+xZeZbJP8/domP0of+GyvRqod2Qfj5fc63972Xl/nYJfj/Tff90b8pebdU8m 6pLoeuRP+juZWeBhyMJb/dkf8yN1IHXqPfF0+olglwT+n7nZ9odn49bjGbCfX0Pf5HzZOfyo0W91 +31awuVGgzD6w1vEa1aoKrGw6Rt19ug9sv8Ak+EpiQPodT/ogywwnHMfvRtZ/T5/f9/Qr6zivbG4 s5f7q5ieGSn8silT+BzZTjxAg9XnMWQwmJDnEg/J823tpqvlrXjE9YL6xlDRyDoeJqrrXqrdc5eU ZYp+YfT8WTHqsNjeEx+Az+//ADR8s695efT9cs7qOV+JkS04FWZGDDizmqio3qPvzYz1+PJDhmD8 HncPYWfT5hPDKJH9K/0PMrt7Z7mRrWNobcn91G7c2C+7UWp+jNVIi9uT1WMSERxGyzbXP/JR+Xf+ Yuf/AJOT5n5f8Wh7z+l0Ol/40sv9WP3RZB+Rn+8ur/8AGSD9T5k9lcpfB13tV9WP3H9CYfnb/wAo raf8x0f/ACZlyztT+7H9b9Bcb2Y/xiX9Q/fFL/yM/wB5dX/4yQfqfK+yuUvg5PtV9WP3H9Dvzz/3 l0j/AIyT/qTHtXlH4r7K/Vk9w/SxT8vfPNp5W+v/AFi1kufrno8fTYLx9LnWtfHnmHo9UMN2Lt2/ bHZctXw8JEeG/tr9TMf+V46V/wBWyf8A4NMzf5Vj/NLpf9C2T+fH5Fjf5n65Frun+X9ViiaGO4ju uMbkEjhKI9yP9XMXX5RkjCQ627PsLSnTzy4ybMTH7RbNvymmig8iieZxHDFLO8jtsFVdyT8hmf2e QMNnzdF7QRMtXQ5kRYrPqf5S+YLiWS+t59HuXdv38QIV6nZqIJFBPU1T6TmIcmmyHcGJdvDB2lpw BAjJHuPT50ftYT5js9EtNSaLRb5r+y4giZ0KEMSaruByptvQZgZowEqgbDvdHkyzx3ljwS7rt7t+ XMt1J5K0prmvq+kyjl14LIyx/wDCAZ0GiJOKNvn/AGzGI1U+Hlf21v8Aa8Q87f8AKX6x/wAxcv8A xI5odV/ey973nZf+LY/6ofSWdQ+YLZYoponilQSRSAq6MAVZSKEEHqDgIvYpjIxNjYh4f+Yv5dS6 HK2paapk0iQ/Gm5aBieh8UPY/QffQ63ReH6o/T9z3vY3bIzjw8m2Qf7L9qv5A8/w20P+H/MFJ9Hn HpRSy/EIg23B69Yz/wAL8uh0esAHBP6fx9jX2v2QZHxsO2Qb7dfMef3+9S82+UtU8m6pFrmhyv8A o7mGgnU8jCW/3XJ/MjdAT16H3Go08sEuOH0/cz7P7Qx63GcOYevqO/zHmzawsNF/MTRbLU9Tsntr q2fg7pVBIENWVWO7RMfpU138c+EIamAlIUR+Pk6LLly9m5ZY8chKMh8v+PfezeCCG3hSCBFihiUJ HGgoqqNgABmeAAKDoZzMiSTZK/CxSPzP5N0TzHAqX8RE0YpDdRELKle1aEEexGY+fTQyj1Ofoe0s umNwOx5g8mCS/kWfV/daxSI/zwVYD6JAD+Ga89lb7S+x6CPtVtvj3/rfsRg/I7SfTQHUp/UH943B KE+y9vvOT/kqPeWn/RTkv6I18U6vPy1sbryvYeX2vZVhsJXlScKvJi7O1COn+7MvloQcYhfJwcfb c4aiWbhFzFV8v1I7yZ5KtfK8V1Hb3L3AumRmMgC04Ajan+tlmm0oxXRu3H7S7TlqzEkCPCr+cPKt v5m0yKwnne3SKZZw6AEkqjJTf/XyWp04yxomt2vs7Xy0uQzAuxX3fqUPJnkq18rxXUdvcvcC6ZGY yALTgCNqf62R02lGK6N22dpdpy1ZiSBHhd5z8lWvmiK1juLl7cWrOymMBq8wBvX/AFcdTpRlqzVL 2b2nLSGRAEuJi/8Ayo7Sv+rnP/wCZifyVH+cXbf6Kcn8yPzLv+VHaV/1c5/+ATH+So/ziv8Aopyf zI/MphfflPp13pOmac1/MqaYsypIFWr+vJ6hr8jtls+z4yjGN/Tf2uNi9oJwyTnwj119gpOtI8la dYeWZfL0sj3VnMXMjE8GPMg9UPamX49LGOPgO4cHUdpzyZxmAEZD4sSvfyN095SbLVZYI/5JYlmP /BK0X6swpdlR6Sdxi9qZgeuAJ8jX6CraT+Sek21ys2o30l9Ghr6CxiFWp2b4nanyIyWPsuINyNsN R7T5JRqERA993+gPRooo4okiiQRxRqFRFFFVVFAAB0AGbMCtnmZSJNnmWA6x+T+m6nql1qEmoTRv dStKyKikAua0Fc12Ts2M5GVnd6LTe0U8WOMBAHhFPQM2TzjsVWyxRTRPFKgkikBV0YAqykUIIPUH ARexTGRibGxDxD8w/wAuJ9FmbUNLjaXSpW+KMVZoGP7J7lD2P0H30Os0RgeKP0/c952P20M44Mhr IP8AZftZR+VB1+90W5sNWtxNoIUxW7XFeRrs0aqR8UY9+nQe2X2fxygRIeh1PtB4MMonjNZeZr7/ AH/f9/RoIIbeFIIEWKGJQkcaCiqo2AAGbMAAUHmpzMiSTZK/CxdirsVdirsVdirsVdirsVdirsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi rsVdirsVdirsVdirsVdirsVdirsVdirTMqKWYhVHUk0GKQLbxQ7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8M/NbX9eutbk0y8iazsbY8ra3rUSg7CYkbNXt/L061zn+0M 0zPhOwH4t77sDSYYYhkieKcuZ7vL8c/ki/y4/MhtMaPSNYkLaax429y25gJ/Zb/iv/iPyyei1vB6 ZfT9zT212L4t5cQ9fUfzv2/e9nVlZQykMrCqsNwQe4zevEEU3ih2KuxV2KuxV2KuxV2KuxV2KuxV 2KuxV2KuxV2KuxV2KuxVQv7+z0+zlvLyVYbaFeUkjdAP6+AyM5iIs8mzFilkkIxFyLxvUfzg1h/M cd7ZLx0qCqLYvt6sZI5M5FaOafDT7PvvXST7Slx2Pp7ntsPs5iGAwn/eH+LuPl5ff8qn1/YeXPzB 8uJNC9GFfQnoPVt5abo4/wCJL0I3HY5sZwhqYWP7HncWXP2dno/EdJD8cj0+YeM635O8x6M8312y kFvC3E3aKWhIrQMHApQ++aLLppw5jbve40vaWDOBwSFnp1+TK/y3/MhtLaPSNXkLaax429w25gJ/ Zb/iv/iPyzM0Wt4PTL6fudR212L4t5cQ9fUfzv2/e9nVlZQykMrCqsNwQe4zevDkU3ih2KuxV2Ku xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVQv7+z0+zlvLyVYbaFeUkjdAP6+AyM5iIs8mzFilkkIxF yLwTz357vPMt56cfKHSoW/0e37senqSU/a8B2zndXqzlP9F9D7K7KjpY2d8h5n9A/G7FMw3bsy/L +/1Ty95isprwTWWlag3pTvKjJFIGU+masOPwsQeQ6CvauZ2jnLHME2Il0na+LHqcEhGpZIbiuY7/ AOx7jqc2nxabcy6gUFiI2+sc91MZFCCO9RtTvm/yGIieLk8DgjMzAh9d7e98x3the2M/1e8ge3nA DGOVSrUYVBoc5SUDE0RT6riywyDiiRIeTPvy3/MhtLaPSNXkLaax429w25gJ/Zb/AIr/AOI/LNjo tbwemX0/c89212L4t5cQ9fUfzv2/e9nVlZQykMrCqsNwQe4zevDkU3ih2KuxV2KuxV2KuxV2KuxV 2KuxV2KuxV2KuxVRvb21sbSa8upBFbwKXlkPQKPlkZSERZ5NmLFLJIRiLkXgfnvz3eeZbz04+UOl Qt/o9v3Y9PUkp+14DtnO6vVnKf6L6H2V2VHSxs75DzP6B+N2KZhu3ZP+XMFk3nPTF1BR6TMzRCQf CZODGLr1+MCnvmXogPFjxOq7ZlMaWfBz8u69/se5eaY9Ok8u6iuohTZ+g5k5dqLVSP8AKDU4++b/ AFAiYHi5U8DoJTGeHB9XEPx+t8+WGsato+p2rzq7tp8odbG65FFZexjb7J32NKjrnNwyShIX/D0L 6Pl02PNjkB/GPqj+t69fWPl78x/Ly3Vqwh1CEURz/eQydfTkp1Q/2jN1OENVCx9X3PGYsubszNwy 3gfkR3jzeL6tpN/pN/LYX8RhuYTRlPQjsynuD2OaLJjMDR5vcafUQzQE4G4lnP5b/mO2mNHo+ryF tNY8ba4bcwE/st/xX/xH5ZsNFreD0y+n7nQdtdi+LeXEPX1H879v3vaM3rw7sVdirsVdirsVdirs VdirsVdirsVdirsVdiqB1vSLfWNJudNuCyw3KcGZftA1qCK+BGV5cYnExPVyNLqJYcgyR5xfO/mf yxqXl3Umsr1aqatBOo+CVP5l/iO2c1nwSxSovpOh12PU4+OHxHcnP5U2Gm3nm+FL9VcRxPLbxPQh pUpTY9aLyb6Mv7PhGWXdwu38uSGmJh1IB9342et/mBY6fdeUtSa8Vf8AR4Hlt5DQFJlFY+J7EtRf etM3OsjE4zfQPG9kZZx1MOHqQD7uv2PFdI846tZataXGpyz6lbWcgY2V1LI6gioDKrkgOn7NRsc0 OPUyjIGVyA6F7rUdm4545RxgQlIfVED8Uer03zR5X0fz1o8etaLIg1AJ+7k+z6nHrDMOzDse3yzb Z8EdRHjh9X42Lyuh12XQZTiyj0fd5jy/HN5Xouta35U1syxBobmFvTurWSoDgHdHH6jmnxZZ4Z2O b12p02LV4qO8TuCPvD1q+sfL35j+XlurVhDqEIojn+8hk6+nJTqh/tGbmcIaqFj6vueOxZc3Zmbh lvA/IjvHmwHyz+V+tX+ty2upRPZ2dk9LuY/t9wsR6NyHfoB92a7BoJynUtgHodd27ix4hLGeKUuQ /W92VVRQqiiqAAPYZ0LwBNt4odirsVdirsVdirsVdirsVdirsVdirsVdirsVSvzH5c03zBpr2N8l VO8Uo+3G/ZlP+dcpzYY5I0XL0WtyafJxw/teAeYPL+seVtYEMxaORG9S0vIiVDgHZ0YbgjuO2c5m wywyo/Avomj1mLV4rG46g/cU68v/AJhXp1u0m8yzS6hp8J+FG+zHJUcZiigCRk/yt+43pl+HWHjB yG4/jdwtZ2PHwpDABCZ+0fzb6X+NmY+f/IFrr1r+n9A4PdugkkjjIKXKEV5LT9v9fzzO1mjGQccO f3uk7I7Xlp5eDm+nlv8Aw/s+5555P84al5X1IugL2rnjeWbbBgNqiv2XXsc1um1MsUvLqHpO0ezs erx0fq6H8dHpnmjyvo/nrR49a0WRBqAT93J9n1OPWGYdmHY9vlm1z4I6iPHD6vxsXltDrsugynFl Ho+7zHl+ObFPyu8u+aY/Mb3EfOwtbNjFqHqKaSEdYeJ6n3/Z6+FcPQYcgnfIDn+p3Hbus05wCJqc pbxrp5/jm9qzevCuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVK/MflzTfMGmvY3yVU7 xSj7cb9mU/51ynNhjkjRcvRa3Jp8nHD+18++Z/LGpeXdSayvVqpq0E6j4JU/mX+I7ZzmfBLFKi+j aHXY9Tj44fEdye/l9+YNx5euBZXpaXR5W+JerQseroPD+ZfpG/XI0esOM0fp+5wO2OxxqRxR2yj7 fI/oLMfP/kC1161/T+gcHu3QSSRxkFLlCK8lp+3+v55m6zRjIOOHP73Sdkdry08vBzfTy3/h/Z9y Rfk7ZeZl1aaa3Jh0hSUvllB4u4GyoNv3g8ew6+GY/ZscnFY+nq7D2jy4PDAlvk/hr9Pk9lzePEOx V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVK/MflzTfMGmvY3yVU7xSj7cb9mU/51 ynNhjkjRcvRa3Jp8nHD+18++Z/LGpeXdSayvVqpq0E6j4JU/mX+I7ZzmfBLFKi+jaHXY9Tj44fEd zPvyXuPMhaeELz0BalnkJHCY70h8a/tDp369dj2ZLJuP4Pxyee9poYNj/lvLqPP9H4rq6IiAhFCg ksQBTdjUn6Tm4p5Aknm3ih2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVA6vo mk6xbi31K2S5hVuSq9ahulQRQjK8mKMxUhbkafVZMMuLGeEoiysrSxtY7WzhWC3iFI4kFFA65KMR EUOTXlyyySMpG5FWyTW7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXk/5ifmffQ382kaHJ6It yY7q8FC5cfaSOv2QvQnrXp76fWa8g8MOnV7DsfsOEoDLmF3yHl3lhz3P5iWsA1SSXVYoDRvrTtOE oehJO1D77HMEyzgcXqr4u6ENFM+GBjJ7vS9b/LjXfM2raU0utW3FVp9VvSAhmU9ax7dP5gKHNzos uScbmPj3vHdtaXBhyViPvjzr4/oU9C/NDSNZ12LR4LS4jnmMirI/DgPTRnNaMT0TBi18Zz4QCy1f YWTDhOUyiQK7+ppLZfzs0COR4zY3RKEqSPT7Gn82VHtSHcXKj7MZiL4o/b+pb/yu/wAv/wDLBd/8 k/8AmvH+VIdxT/oXzfzo/b+pifn3zh5hh81XaWOo3NtaFLd4oEkKhRJbxudgadWzC1epmMhokDb7 ncdk9nYZaeJnCMpereu6RD261YtbRMxqxRSSfEjN/Hk8HMeopT5s81WflrTo7+7hkmjlmWALFx5c mVnr8RG3wZTqNQMUbLmdn6CWqmYRIBAvf4frU9B85aXq+hTa1RrSyt2dZWnpUCMBifhLfzYMOpjO BnyAZavs3JhzDF9UjXLzYnefnhpUc7Ja6dNPCNhK7rGT78aPmFLtWIOwt3GP2XyEXKYB91/qTPSf zX0bULC9uRaXEcthCbiaKisCgYL8Lg0rVv2qZdj7QhIE0dnF1HYGXHOMeKJEzQP7EB/yu/y//wAs F3/yT/5ryv8AlSHcXI/0L5v50ft/Ui9J/N7RNT1O10+KyuUlupFiR39PiCxoCaMcnj7RhKQiAd2n UezuXFjlMyjURfX9TO82Dz7sVdirsVdirsVdirsVdiq2UuInKCrhSVHiabYCmNXu+ePy/htLvzrp qahRo3lZyHpRpAjMgNfFwM5rRgHKOJ9J7XlKGlmYc6+zr9j1L8zPOmp+Wl09bKG3mW9E4mW4V3FI /ToBxdOvM1rm312qliqgN75vJ9idmY9Vx8ZkOHhqvO/I9yS+S/zR1/W/Mtnpd1b2kdvcepzaJJA4 4RO4oWkYdV8Mo0uvnkyCJAo/jvc7tPsLDgwSyRMuIVzrqQO5in5b/wDkxrL/AIyXP/JiXMPRf34+ P3F2/bX+Iy90f91Flv5neT/LemeWpb6xsVguzPGDKGcmjk8tixG+Zmu02OGOwN7dP2H2jny5xCcr jR7kD+VHlPy9rOjXk+p2a3MsdxwR2ZxReCmnwsO5yvs/TwnEmQvdv7f7QzYMsRjlwgx8u9jP5nxp H541GNAFRBbqqjoALaMAZi68VmPw+4O17CJOkgT/AEv90Xv1p/vJD/xjX9Qzo48g+d5PqPvYH+dv /KK2n/MdH/yZlzXdqf3Y/rfoL0Hsx/jEv6h++KSeV9Kv9V/KTUrKwHK5e6ZkjrTmEMTla+4XbKMG Mz0xA53+pz9fqIYe0oTn9PD9/EGE6LrSaJJPb32jWt8HYCWO8jPqoV7Ix3T32zAxZfDsGIPvd7qd Kc4EoZJQ/qnY/relfl7f+RtXg1DSrXTTZTXo9S6s5HaRZEXakclQ1FJrTbr9200c8MwYgVfR5ftj Fq8JjklPiEeRqqPmGNfm15c0XRbjTV0u1W2WdJTKFLHkVK0+0W8cxe0cMMZHCKdp7P6zLnjPxJcV V+lmnkDyf5bOhaRq5sUOo+msv1gs9eYJo1OXH8MztHpsfBGVep0fa/aOfxsmPi9F1W3JnObB0DsV dirsVdirsVdirsVdirsVeI/mB5A1TStVm1bSonl0+VzODDUvA5PI1C7hQd1YdM0Os0coS4o/T9z3 fZHa+PLjGPIQJgVv/F+OqR33nzzXqVkun3NwJ1oUD+lGZiDQcefHlvTtucx5avJIcJLsMXZOnxT4 4ivia+SY/llpuoweedNee1miRPXDM8bKB/o8g3JHjluhhIZhY7/ucbtzNCWkmBIH6ev9IKv5d6ff xfmFZyy20scQe5q7IwUVhkA3Iph0cJDONu/7iw7YzQOikARdR6/0g9C/NqCefyfJHDG0r+vEeCAs aAnsM2XaIJxbd7zfs/MR1IJNbFL/AMl7a5t9BvlnieJjdVCupUkemu++V9mRIgb73J9pZxlmjRv0 /pLCPzO07UJvPGpSRWsskbehxdEZgaW8Y2IGa/XQkcxod33O+7DzQjpIAyAO/X+kW089fmeiKizT hVAAH1OLoP8AnlhGr1Hn8v2IPZWgJuo/6c/8Uqavqnm7XfKEw1ZZriWHULf0V9ARkKYZ+RpGi13p hyZMuTEeKz6h08ix0+DTafUjw6iDCV+q/wCKPeWU+RZ9X0n8tr+a1sppdQSeX6vbhDzqyoA3E7kL 1+jMvSGUMBIHqt1PasMebXREpAQoWb97EJvzI1t4Gs9a02y1GRRxL3lvSUfPiU6fIZhHWzqpgS94 dzHsXEDxYpzgP6Mtkz/KHy1qza8msyQNDY28bhZJAV9RpFKgJXrStSct7OwS4+Otg4vtFrcfg+ED cyR8K70x/Oyzu7i60k28EkwVJuRjVmpUp1oMt7UiSY0O9xvZjJGMZ2QNx+lnHkOOSPyfpUcilHWA BkYEEGp6g5sNIKxR9zoO1pA6mZHen2ZDr3Yq7FXYq7FXYq7FXYq7FXYq7FVghhDlwihz1YAV398F BlxGqtfhYuxV2KuxV2KuxV2KuxVoxoWDFQWX7LEbj5Y0my3ih2KuxV2KuxV2KuxV2KuxV2KuxV2K uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV 2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVJvNvnDy35R0 WbWvMN9HY2EO3N6lnc9I40FWdzTZVFcVfNfmz/nNu49eSHyl5ej9FaiO81R2YvuKE28BTjtX/dp/ DdVJNL/5za8+R3AbVdB0u6ttqx2v1i2eld/jkkuRuOnw4q94/Kv/AJyG8ifmFIthbO+l69Sv6Kuy oaSgqfQkHwy08Nm78aYq9QxV2KuxV2KuxVKvNesS6J5W1nWYo1ll0yxubyOJyQrtbwtIFJG9CVpi r5W/6Hf8z/8AUsWX/I+X+mKvqnyprEut+VtG1mWNYpdTsba8kiQkqjXEKyFQTvQFqYqmuKuxV2Ku xV2KuxV2KuxV2KuxV2KtMyqpZiFVRVmOwAHc4q/PD88fzV1D8w/Olzeeq36DsneDRbXcKsINPVK/ zy05MfkOgxVmP5J/84wan5702PzDr15JpHl+Un6okSBrq5UGhdOfwxpXoxDV8Kb4q9C83/8AOE+i /oySTyhrd2upRryjttUMUsUpFfg9SGOEx18eLfjUKph+Tn/OJdhoM9rr/nS4+u6xCyzW2mWzstvb yKeSs8q8XldT4UUH+bFXrP50yPH+U3m142KOul3JVlNCCIzuCMVfBPkDVdUbz35cVrydlbVLIMpk cgg3CbHfFXof/OX6sPzjlJBAbT7UqT3FGFR9IxV4lirsVfSX/ONSOPye/Ndyp4Np8gDU2JFlckiv tUYq+bcVfpf+WX/kt/Kn/bG0/wD6hY8VZLiryL/nKueaD8ltWkhkaKQT2dHQlSK3Kdxir5b/AOcd NS1GX86fK8ct1NJG08vJGkZgf9Gl6gnFX1R/zkV+cdx+W/la3/RaI/mHWHki05pAGSFIgplnZT9o pzUKp2qamoFCq+HvMfnTzb5luGn1/V7vU3ZufG4ld0VhWnCMnglORoFApXFUPo3mTzDoc/r6Lqd3 pk1Q3qWk8kDEgEbmNlrsSMVfVmh+Y/zE8z/84tea9W83zrdia1mXSZ/SCXElvCQryTFOKMOSkKeI PwksTXFXyDirsVRuiI76zYIilna5iCqBUklwAABir9R8VY7+ZE1zD+Xfmma1r9Zi0i/eCnX1FtpC tPpxV+ZuKv0+8o29jb+VNGg08AWMVjbJahfs+ksKhKdP2aYq8E/Pf/nJLzz+X/n6Ty9o1jplxZJb QTiS8iuHl5SglhWOeJabbfDirzz/AKHV/NP/AKtWh/8ASPef9leKvbb3zlqfnP8A5xc1bzNqkUEN /qOkag08VqrrCDHJLEOKu0jfZjHVjvir4x/L7/lPfLX/AG1bL/qITFX6a4q+Jf8AnM//AMmxZf8A bGt/+oi4xV6V/wA4Rf8AKG+Yv+2in/JhcVe1/mb/AOS381/9sbUP+oWTFX5oYq/S/wDLL/yW/lT/ ALY2n/8AULHirJcVeP8A/OWP/kktX/5iLP8A6iUxV8q/844f+Tt8rf8AMRL/ANQ0uKvc/wDnNPyb q+oaPofmeyheez0gzwalwHL0knMZjlIHReSFWPuMVfP/AOUP5u6r+Wes3epafp1pqH12IQTJchg6 qpLD0pVNUq32tiD9xxV7Rcf85EfkX5+j+q/mF5NezllqBqEYS6aPanL6zELe6X4VX7CH7hir6V8m X/lW98sac/lS4guNAihSCwa2blGscKhAniCgFCG3HfFUp/OL/wAlP5w/7Y19/wBQ74q/PXyV/wAp loP/AG0bT/k+mKv06xV2Kqd1bQXVtLbXCCSCdGiljPRkccWBp4g4q/Nv80fIGo+Q/OuoeXrxW9KF zJp9ww2ntXJMMoPQ1XZqdGBHbFXtv5D/APOU+n+XtCtvK3nZJjZWKiHTNWgT1THAoosM8Y+IhBsr ICaUFNq4qhvzu80/841+bdVl8z/pfW9W1uSBIIrHTFW0g/dAhPUe9teSg13K8vlir5xcoXYoCqVP EE1IHapAFfuxV9m+Uv8A1jGf/tjan/1EXGKvk/8AL7/lPfLX/bVsv+ohMVfprir4l/5zP/8AJsWX /bGt/wDqIuMVelf84Rf8ob5i/wC2in/JhcVe1/mb/wCS381/9sbUP+oWTFX5oYq+5PI3/OSX5LaX 5J8v6ZfeYvRvbHTbO2uovqd83CWGBEdeSwMpoykVBpiqd/8AQ0f5E/8AUzf9OOof9k+KsR/Pr8w/ J/nj8g9e1DyvqH6QtLa9s4J5fRng4yevG/HjOkTH4WG4GKvnj/nHD/ydvlb/AJiJf+oaXFX3N+Yn nXRPJflDUPMGsr6tnbIEFqvEtPJIeCQqG2PMnfwFT2xV4RHD/wA4e/mEgvHNt5b1KbeWN5W0lkNG YgqW+pE+613oK9sVeJfnX5A/Ljyle6ePJPmuPzFb3iyGeBJYLp7fhx4l57akZ58jReIIp74q9N/5 wi1nUF8w+YtF9Rjp0lol6YifhWaOVYuQHYskm/yHhir6L/OL/wAlP5w/7Y19/wBQ74q/PXyV/wAp loP/AG0bT/k+mKv06xV2KuxVh35m/lT5S/MTRxp+uwFZ4amx1GGi3FuzUrwYggq1PiVhQ/OhCr5X 81/84cfmZps8jaDNaa9aAn0QsgtbgioHxRzlYgaGu0p6fLFUgs/+cVPzxnnWKXQo7RDWs817ZlBQ dxFLK+/+rird/wD84pfnfbXTQw6JFfRqFIuYL20WNuShiAJpYZPhJ4mq9RtUUOKvpPy7+X/m6z/5 xll8lXFhw8zNpt9bLYerCf3s80zxr6ocw/ErjfnTFXz55O/5xr/OvTvN2iaheeXPStLPULWe4l+u 2DcY4pld24rOWNFHQDFX3Pir5c/5yb/Jb8zPOv5hWur+WdG/SGnx6bDbPP8AWbWGkqTTMy8Z5Y22 V13pTFWb/wDOLX5decvI3lrWrLzTp/6Oubu9Sa3j9aCflGIgpNYHlA3Hc4q9R886be6p5J8waZYx +te32m3ltaxclXnLNA6IvJiqirMBUmmKvhv/AKFc/Pb/AKln/p+0/wD7KMVd/wBCufnt/wBSz/0/ af8A9lGKu/6Fc/Pb/qWf+n7T/wDsoxV6foH5HfmjafkB5n8qXGi8Nf1HVba6s7L61aHnDH6PNvUE xiWnBtmYHFUo/JP/AJx//Nzy1+aOga5rWg/VNLsppHurj63ZScFaCRAeEUzufiYdBir2X/nI78of N/5j6Rp0Gg6nBAmmPJO2l3IZEuJWAVX9ZedGReSqCtPiO4xV8k6z+RH5waPP6N15T1GZqkBrKE3q GgBrytfWFN8VVNC/IP8AOHWp1itvKt9bBn4GS+jNki7VLE3PpbAeFfAb4q+v/wAgvyRh/LPRLl72 dLzzFqnA39xED6UaR14QwlgGKgsSzEDke2wxVmP5laRqOs/l75k0jTYvX1DUNNura0g5KnOWWFlR eTlVFWPUkDFXxv5X/wCcaPztsfMuk3t15c9O2tb23mnk+u2DcY45VZjRbgk0A7DFX3ZirsVdirsV dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf/9k= - - - - - - uuid:8324c252-80fa-494e-aabd-dcba4f8313de - xmp.did:A3FAB7ED726EE81199C0AB5D7B9ED9E4 - uuid:5D20892493BFDB11914A8590D31508C8 - proof:pdf - - xmp.iid:A2FAB7ED726EE81199C0AB5D7B9ED9E4 - xmp.did:A2FAB7ED726EE81199C0AB5D7B9ED9E4 - uuid:5D20892493BFDB11914A8590D31508C8 - proof:pdf - - - - - saved - xmp.iid:9EFAB7ED726EE81199C0AB5D7B9ED9E4 - 2018-06-12T22:01:06+03:00 - Adobe Illustrator CS6 (Windows) - / - - - saved - xmp.iid:A3FAB7ED726EE81199C0AB5D7B9ED9E4 - 2018-06-12T22:12:10+03:00 - Adobe Illustrator CS6 (Windows) - / - - - - - - Print - Document - - - False - False - 1 - - 1344.000000 - 1225.566406 - Points - - - - - PRIMETIME-Regular - PRIMETIME - Regular - TrueType - Version 1.00 2014 - False - PRIMETIME © PERSONAL USE ONLY.ttf - - - - - - Cyan - Magenta - Yellow - Black - - - - - - Default Swatch Group - 0 - - - - White - RGB - PROCESS - 255 - 255 - 255 - - - Black - RGB - PROCESS - 35 - 31 - 32 - - - CMYK Red - RGB - PROCESS - 237 - 28 - 36 - - - CMYK Yellow - RGB - PROCESS - 255 - 242 - 0 - - - CMYK Green - RGB - PROCESS - 0 - 166 - 81 - - - CMYK Cyan - RGB - PROCESS - 0 - 174 - 239 - - - CMYK Blue - RGB - PROCESS - 46 - 49 - 146 - - - CMYK Magenta - RGB - PROCESS - 236 - 0 - 140 - - - C=15 M=100 Y=90 K=10 - RGB - PROCESS - 190 - 30 - 45 - - - C=0 M=90 Y=85 K=0 - RGB - PROCESS - 239 - 65 - 54 - - - C=0 M=80 Y=95 K=0 - RGB - PROCESS - 241 - 90 - 41 - - - C=0 M=50 Y=100 K=0 - RGB - PROCESS - 247 - 148 - 30 - - - C=0 M=35 Y=85 K=0 - RGB - PROCESS - 251 - 176 - 64 - - - C=5 M=0 Y=90 K=0 - RGB - PROCESS - 249 - 237 - 50 - - - C=20 M=0 Y=100 K=0 - RGB - PROCESS - 215 - 223 - 35 - - - C=50 M=0 Y=100 K=0 - RGB - PROCESS - 141 - 198 - 63 - - - C=75 M=0 Y=100 K=0 - RGB - PROCESS - 57 - 181 - 74 - - - C=85 M=10 Y=100 K=10 - RGB - PROCESS - 0 - 148 - 68 - - - C=90 M=30 Y=95 K=30 - RGB - PROCESS - 0 - 104 - 56 - - - C=75 M=0 Y=75 K=0 - RGB - PROCESS - 43 - 182 - 115 - - - C=80 M=10 Y=45 K=0 - RGB - PROCESS - 0 - 167 - 157 - - - C=70 M=15 Y=0 K=0 - RGB - PROCESS - 39 - 170 - 225 - - - C=85 M=50 Y=0 K=0 - RGB - PROCESS - 28 - 117 - 188 - - - C=100 M=95 Y=5 K=0 - RGB - PROCESS - 43 - 57 - 144 - - - C=100 M=100 Y=25 K=25 - RGB - PROCESS - 38 - 34 - 98 - - - C=75 M=100 Y=0 K=0 - RGB - PROCESS - 102 - 45 - 145 - - - C=50 M=100 Y=0 K=0 - RGB - PROCESS - 146 - 39 - 143 - - - C=35 M=100 Y=35 K=10 - RGB - PROCESS - 158 - 31 - 99 - - - C=10 M=100 Y=50 K=0 - RGB - PROCESS - 218 - 28 - 92 - - - C=0 M=95 Y=20 K=0 - RGB - PROCESS - 238 - 42 - 123 - - - C=25 M=25 Y=40 K=0 - RGB - PROCESS - 194 - 181 - 155 - - - C=40 M=45 Y=50 K=5 - RGB - PROCESS - 155 - 133 - 121 - - - C=50 M=50 Y=60 K=25 - RGB - PROCESS - 114 - 102 - 88 - - - C=55 M=60 Y=65 K=40 - RGB - PROCESS - 89 - 74 - 66 - - - C=25 M=40 Y=65 K=0 - RGB - PROCESS - 196 - 154 - 108 - - - C=30 M=50 Y=75 K=10 - RGB - PROCESS - 169 - 124 - 80 - - - C=35 M=60 Y=80 K=25 - RGB - PROCESS - 139 - 94 - 60 - - - C=40 M=65 Y=90 K=35 - RGB - PROCESS - 117 - 76 - 41 - - - C=40 M=70 Y=100 K=50 - RGB - PROCESS - 96 - 57 - 19 - - - C=50 M=70 Y=80 K=70 - RGB - PROCESS - 60 - 36 - 21 - - - - - - Grays - 1 - - - - C=0 M=0 Y=0 K=100 - RGB - PROCESS - 35 - 31 - 32 - - - C=0 M=0 Y=0 K=90 - RGB - PROCESS - 65 - 64 - 66 - - - C=0 M=0 Y=0 K=80 - RGB - PROCESS - 88 - 89 - 91 - - - C=0 M=0 Y=0 K=70 - RGB - PROCESS - 109 - 110 - 113 - - - C=0 M=0 Y=0 K=60 - RGB - PROCESS - 128 - 130 - 133 - - - C=0 M=0 Y=0 K=50 - RGB - PROCESS - 147 - 149 - 152 - - - C=0 M=0 Y=0 K=40 - RGB - PROCESS - 167 - 169 - 172 - - - C=0 M=0 Y=0 K=30 - RGB - PROCESS - 188 - 190 - 192 - - - C=0 M=0 Y=0 K=20 - RGB - PROCESS - 209 - 211 - 212 - - - C=0 M=0 Y=0 K=10 - RGB - PROCESS - 230 - 231 - 232 - - - C=0 M=0 Y=0 K=5 - RGB - PROCESS - 241 - 242 - 242 - - - - - - Brights - 1 - - - - C=0 M=100 Y=100 K=0 - RGB - PROCESS - 237 - 28 - 36 - - - C=0 M=75 Y=100 K=0 - RGB - PROCESS - 242 - 101 - 34 - - - C=0 M=10 Y=95 K=0 - RGB - PROCESS - 255 - 222 - 23 - - - C=85 M=10 Y=100 K=0 - RGB - PROCESS - 0 - 161 - 75 - - - C=100 M=90 Y=0 K=0 - RGB - PROCESS - 33 - 64 - 154 - - - C=60 M=90 Y=0 K=0 - RGB - PROCESS - 127 - 63 - 152 - - - - - - - - - Adobe PDF library 10.01 - - - - - - - - - - - - - - - - - - - - - - - - - -endstream endobj 3 0 obj <> endobj 8 0 obj <>/Resources<>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 13 0 R/TrimBox[0.0 0.0 1344.0 1225.57]/Type/Page>> endobj 9 0 obj <>stream -H‰Œ—ÍŽ%9…÷÷)üéñ¿[‰BˆPb`Qƒ4ôûK|'ì¼·ººg@%ݬHGÚñ{âø§¿| ?ýùK -øã—ðøõ‘B.¥Ç>Fȵµp=Åÿüãñ÷ðïÇO_þ–ÂÛ×¢µÌoÍ‹ßÂ×7ÿÄâ?¿>~ ,ñ—C«%¶¹z°’ئõðöËCK¿<®kšá~ä-ç—h±ä‰âÛã*-öÒ‚VVØR ·þQôÇ’¶/„óÍÙîH饶ߟM¶°ÓóÌ<öiy˜Ì-†'#<ŸuE7GbW«±®ùü€-ÚŠÃ*®¸–º\‰W_¯/Z´žõvœ¦ öþ<ç–Ž=Oå{×{·§¬g Ÿx{¾¶J©ãà¬5caõx˜­`$©sä˜÷ÿ—ôÛÖÛáíqæ&Ûrìû#çØ°¨ 6(’{\sœMÅYŸÄ›ÕU= ²å8þö8.îHá~lÕ§õÇ­û±>’bR>¨Æž(€Gö`& ªB}kã8ŒYî ¥½Ð-¦^±ý:nnŸ‘ƒfáRDHù-*X$îh_ -åÞÏ¿»<Ò™ïw /CÏëW!ÞR û£[—X”h•x/\[C‡c]­¨`|Ên^±å]SÖjækTff7ØfÌ2¡˜é -}y^3®&öÓß‘ó­tXÝÛ\gÛ÷Ç9èœËy2¥·Lçc¯cüû]d'$ÈÛõ±[Úáü¦ ß??þúÈAŽ%1dƦִQUýå…!9.jtÿ’~*­Æ„å#6Ì®gç‹*c†J1z”®óŸ¿÷XK?öw.'%Z{òÐã~l€µLHÊ –V-ÎUÊoÂܱ RéÀ× H#ÜX·×ŸÒƸ—òÁÀ4oñ€Ú :÷6áí#È}ò¬cyÉ%΂ÖÓš¹Ìê¦'•C"]x[?ó²Ø¿ï}·óŒæÒë>â"LAîßw+¯¬)‹*ÂzU/Uõ4_U×Å>•Õç0ÁB—Gõ%‚µë¥[´“0ÛÑîH*âq4”Ѫ"Ö)Q*H»y]±@/™a±@¤ÅÒ”Õ6þè?t[ -n„«õ’?Ôý½n·Ï–{ÿ÷ÇÙñ쯦øo`ò' [ …vÑîšìM5Ür Å@fº³ËDÛ -m|Êtù™î¿™éºX1JÔÙȵ~êƒ~4õ¿ëƒùÝ”ÿØö¹ú·Ð¿i{5ÂÇNX¿× @l˘ ’:è÷ã3v|ºÕOú!Yz7*ÕV†¦¬ìŸ¢–È¢@R³ 2Ÿ»M3ˆŠVxH(§nIL¢‚ðù^mœ,£³ Éá^Æå¨'/”Q£9„0~k S• 6z„JdÕã¸É§ªH”'0IÑO -Ò5§”àš‡›1é­T}à&©}×4þPÝbÏq'L÷ Û¨Ë×x:F,io.Èž%zÁ¢]¼]ø¨/6DzÄs X¦,ÏXÎÄnl)7ÙUà›UL„DTžáîÐ8¡9ox±·»»Õûͧ°1rBSsš‹@ݲ˜qã¥A¨L"ôdzâˆâKÅ ½e‰V@f‹”CÄk(*&Ú žƒ.¾1ž[i»„â`êÍ,à&cwXŒ0IÒœÇ0ÃÉ©Üák ÕN´oGŽøæD·¤×:Ž/pR_+‰$“\³ùh®Má«Q9.³ºäw15¸ôÜË7í¢êHùP-¿¥t/{M†FÜ5Lú™½Ü²¤áô"‰Z‰¿0”8Ï>¥‚ GóN”%‹ˆÔ-uZmÑæã¨TY^Õ$Õ¢9§Ãúhƒ£T»£¥1)¦¯.¶§âzyJ¡TóQ>/|B VŽÉeË­¨Ó§•íÑVò]ŒmÖêHV¾<¼µu Xæ,!o@ KYt=š8Í"‹˜ÃáŠ2—Î]´í³= Qâ“®“à!“ÄjCs<`“I2­ŠbRÁ¬ÃnŠSÛ"*j'ƒºÈ!™ÛµK).‰Yaõvð½xQ™‡‹BÛaB“€Å¨rB„fïŽ*üÍ~ÃdÃ%°Ú×±-8¿nϵwñ2¢tDŽ*(eƒ)…WÞtÅ´r‹¢ƒl9;›V]#µ©t’·R]†.*mYRíÎ!NÔMËU˜~ñrŠË OÁ-Üá¸e±¿tó«_Â|€4¼úÎØÕÍg8á^$Ɉ§yuP3u(áæÄqÔ]ØMÂvƒPk©ªŒET$Þv'f.º›öæBkî> Q%Î.ÊÞ˜tò‰î¸*W{È—ÅU<ƒU¾£IUš¬f{4tâÅHS^%´¸í¢¿È05x&Ibòµ¼ï¢À‹ºÐ]'Sp»4vl†Ðˆ€æ)!/0Aººé´"£;߀‘‰vŽ4olµ æ¾ü8"œ® ;8à/ðD%¯Æ¯Î ýöx’tè¨ÔEÀ«(L…|ydV˜G©îG›^%Z¯=¬á `.P­¬‚$‚ÈàHÛrÊ-ëj›ýJv©†ª¹2<=(¤Ù·%ljÌÆ ;éH ”¨ÎðöϵÜ´ga’®ûDî@š -@1| ôU-S v½2Äù—ذjNÕ&,¦(:0;M•‹>LNÜòcª4­ÄÙ, Ší‡.’‹’´#ÆL¶†¦ë<]K£JLñ.ƒ~[[sŒrÌåû%b¨›*Ј:’‚ª²¸ÉêpòÛŪ ™£4 ¤Þ65¦Ú®Mª‘Äì®áâ¼µauj!v Ö}ŠÚÁ6 -&Å®ëÍ&ÁºÉ®AHG> ·þ”ö½ÄU]æèä«êÀ±9ø%ü#ÜxªoË1M¢ßb§“}q5™êÎ}Ô\=ÃàvTýžgbÆƯ»”‡¨4Q¥)I¤$ÉÕ!ëÕ›‚<²_¨’_9VsS¿!|ÓDèÓ/c …ÑxºÍz·g…øÌ€BÒ&Ú½hõlÎRÕéÜ»:X€-Œãv•5’è!\£Ë—ßðDƒÉZOžJ -.S©Ðð„®îWSøPÖ]¨’û4‚ݦЅ_¡»DiÈ+ðLl šWFU£WtóOȾ+Ó09=.Ý¿hÝ9~éå–T÷V¶®Ëÿ¥¾ÜY$I®(ìׯ(sƨÙxG¤«eY’!Ôž5Hb¡w Íþôs#««{ºA2ÅÀT߬¨Èˆû8`Nv~erÇ·lxdåjBR©¨æ,â E/‚e"C¦–ÜõÈÖò°jÅnCÄîóƒÎí~Í7tN²qjƳä_ßhØœf ¡ý¡¸“|GÂãAqk:³!ÓäF,|†BéÚ}Ë:ÍuL‘£¢\ -÷BÉé‹uÝ?Úûí(½¬‹ç{—âÿ´_ÊõÆ2¹@ž·ÅØÅ§Ì+j]ôìXö“¾Nãü;1JµV¢ã3VáeÏ{Gz@În¿oGçqk~ÙíŒÏ·½>?¬ òªìWbÊMKƒyTS5;ÙôÂÝâG±¸oqP)~N`-ý|‘´Dq$M|Ó÷C2RJVŽ–/‡¬kœl_á Ü·ßÑÎò^ë#¸O·Ü—ÜwßѰêYúE’ - V[Oóe§*HÊ¡[$-²Ì—§—f?o©;ÇgÁôm½}†ÊظÞ×ß”ÑrÅéº)¾D:©CžG®wX¯y3¹|XÔ[9þãÙŠI/Å©1ßEêFp6µDh©bCÞóù'¥¡‰ª.BI²%ËàîÔ,þˆÇÏ­ÓDíß=_b£›÷Õ ü¦yõ‹K¼°C >Yö~:íò‘²·S£ÚØÌr½*c‡ÚŠûp¸­åÌOS{ÓÝJ·0,]ð& ’‰¢¡ukZ}¸r =’(˜’çx ¥÷æî[=‡î_ËÂÕûæ ‚œé×Ëùrš±hŠt4ú\Bdv½ƒ…R˜ÃCQex—\bß*;ËII,'¦Iï&­³H…’ÙC†TIÕ®CžU9ï5Ÿ¡J4ƒQö÷ôÐÞ²vµûv?†o:}*ôX;„5–m31&³-I9ä²·–2ßžïdkÛœÃÙ߯éVý±ß5E$˜¿$åhÒh`Ô¿ÿÁª´\Iâ\²›n‘f}}î×Ƕûo!e1™Ü°µéXï<ñú®Ko›Ê°ÓFÙmó*y¶$<Ÿß…{ñwµµÉzjWóoq5€+cð6ÞAr¯/‰›¾_r8™™,)ú˜ÃùQ—ÄHAëÀ!|?Èí$M}Ëâ.$Ä hq˯Î>ã´t: œE“ÁfàU›M Uͱ¢¶ü­ô<²i8ñ±tÒžá· ¶ÀãÄ2¶ÍcKmAÅŒ’-frzG'걉Åè?÷/hFFVè¿{$7k#.¦¹e—H—ˆ‰Ò09u‹ ° soû!‰)I@R¬Bà_åÁ´º<àG;ieäPW™®jù×f,ÉÁ´"ðÉÁ·@¬~s¦Ê¢iÇfôÐ$ëAuz¬N©á0b/SºšªŒ]½ßãrŒØxUm/%X»Þ½JÛŸÀ0Î$W)¸XÝØsÈžòãfNÎ9o.‰i)Ul@Š.½tΑÏ5ÅiÇbûPAÇ6+ý ‘A]X!ÞÖv$…ÚõªÔeÅÊaˆCK±NE· 1rÔlA]¸ç. Ñ -ymOÐDµPe Ý£3gL‘§×ædhìÔ˜}+÷)ÂËæŒæp$uÔZ”‰ÆâÀšn®R–5h·zÔòhh±¢(ד!A`åÔMç!%H‚`!Š%Žf¤(G9ê¹ì8ò¨ˆ—Õ?Ö„Ôhx™º¾Ê—Féˆd™[IM­Í -ôaSÕE -Ž- ©ÃÐÕÝÅZ fwŠˆ#Ài-‹}+Åâ9Õ~²ÉáÁØn³‹X釡v‹:Á³2J:rQ¾`P¹ŸYBvŠg2VybD"®°=Ðk8Åøêä¢ÞF=QÅŒ-–ë^]ÙÞ\ʲ3‹çL¨—%]'òFÍ#ô…$ƒ»£Óô572+‚xõx¢[ì#erXÃeõ’N<¬$»š¨X!õõèeg[ö.„"µhÑÃt}±—Ë”ûX:iM&­dë¼å~ÞŽ]¹S‡j&÷zK¶];"U÷t’|W$SElªÛÏ1Ò=Xä(÷{Ä sŸdÉô‘)Ÿ5}|¢’r,ÍÔ®3÷j=*y8ÊÅG¡zgÙZ_0×£Kn²aˆÜ#l%=g5…&„I&Œ&?4:ƒíÀ?˜OÖÉÊŒƒp%ñÌÂWF Ä´D+ž“$—`ÊÅIÐÛŒ9 p j“A½+.ÍØœôrŒàŠ£Væò·nªI†™z±¶µ ßò îaè—ü¶[¡Y¥S« gêúali°”°{ƒCÝÍR•Á&Ü -,ëa.;å²Ñ×-YFc1‰\K6òwÎwF(-çjÇ›0ÙHþ «¡ŒÃôX.†'K9×aBé–|ØÞ” ùV’c‡øUŒÌ^Åõ"Uâ«,Ý&¹h¦Aç$S$Icqò¿¯oTë¡a‡|$²çƒÈžÿ£Èîÿ­Èîß…¯Dö_.xºüðã_9þ·}ë·¯¿]~ø™GÿúvùáéIwyúç%O ¯Í“3¨ò%ônRjO¿^þöéç_~ÿÓ/ŸÞǧoŸGþôûç¿?ýñòÓÓå§?ÿx½üG€£Š" -endstream endobj 13 0 obj <>stream -8;Z]"@?Q6c%#)Cp"`bH/E=/kT![35ih(=`4lqF!ct48d>AVh -8=@jgh+.4Z:63(/:+QhGFF/pEX63uUZ0sYKh4Q-O%i]pm`4k5ap7"C#P-%R@e>aa\ -@OlnhKJ^@(ef,U2AM(9Y>t?g\M6_*hBgh)nN%\eA;+_e6_#9ta*+'V>q2TYsm8FcC -b%q6m^RLhikaEL-Nhc:fREQ(I7P^Cr$H[,XG5Y4=b\0Wh0H5pXnU/`!X3I=q8=.it -U[(KN$C[L!i[Ergf55e]9hRA!T>YNUelMn&.\]tH8.$ghWa&IMWIUqu$UiE@b6f)J -Jf0Dj;H94JoVZW>eOXhK)eA3TL81\,fU$B!5OI1ScN(KEP2l~> -endstream endobj 14 0 obj [/Indexed/DeviceRGB 255 15 0 R] endobj 15 0 obj <>stream -8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 -b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` -E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn -6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> -endstream endobj 6 0 obj <> endobj 16 0 obj [/View/Design] endobj 17 0 obj <>>> endobj 5 0 obj <> endobj 18 0 obj <> endobj 12 0 obj <> endobj 11 0 obj [/ICCBased 19 0 R] endobj 19 0 obj <>stream -H‰œ–yTSwÇoÉž•°Ãc [€°5la‘QIBHØADED„ª•2ÖmtFOE.®c­Ö}êÒõ0êè8´׎8GNg¦Óïï÷9÷wïïÝß½÷ó '¥ªµÕ0 Ö ÏJŒÅb¤  - 2y­.-;!à’ÆK°ZÜ ü‹ž^i½"LÊÀ0ðÿ‰-×é @8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ -V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚óÈtÕ;\ú” Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAü om?çW= -€x¯Íú·¶Ò-Œ¯Àòæ[›Ëû0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±ZL®Ä„?â_øóyxg)Ë”z¥ÈçL­UáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.òò· åÒR´ ßÞô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£V­š‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð=¨- t°lÃ`;»Á~pŒƒÁ ðGp| ®[`Lƒ‡`<¯ "A ˆ YA+äùCb(ЇR¡,¨*T2B-Ð -¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r 9‹\A&‘GÈ ”ˆrQ ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD ¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…寒°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9 -N'çÎ)Î].ÂuæJ¸rî -î÷ wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X[ݱF­=­3­ë­·YŸ±~dó ·‘ÛtÛ´¹i ÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö -n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=GTB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßY Õ.©=bàá?SŒîƕƩºÈº‘ºçõyõ‡Ø Ú† žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_pß¶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO¤[þ˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ -¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ ÷„óû -endstream endobj 10 0 obj <> endobj 20 0 obj <> endobj 21 0 obj <>stream -%!PS-Adobe-3.0 -%%Creator: Adobe Illustrator(R) 16.0 -%%AI8_CreatorVersion: 16.0.0 -%%For: (avpc) () -%%Title: (vertical.svg) -%%CreationDate: 6/12/2018 10:12 PM -%%Canvassize: 16383 -%%BoundingBox: 100 -1143 834 -156 -%%HiResBoundingBox: 100.75 -1142.3457 833.9385 -156.7061 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%AI5_FileFormat 12.0 -%AI12_BuildNumber: 682 -%AI3_ColorUsage: Color -%AI7_ImageSettings: 0 -%%RGBProcessColor: 0 0 0 ([Registration]) -%AI3_Cropmarks: -242 -1167 1102 58.5664 -%AI3_TemplateBox: 421.5 -298.5 421.5 -298.5 -%AI3_TileBox: 21.1602 -834.7764 838.8398 -273.6567 -%AI3_DocumentPreview: None -%AI5_ArtSize: 14400 14400 -%AI5_RulerUnits: 2 -%AI9_ColorModel: 1 -%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 -%AI5_TargetResolution: 800 -%AI5_NumLayers: 1 -%AI9_OpenToView: -394 -11 0.5 1141 603 26 0 0 82 116 0 0 0 1 1 0 1 1 0 1 -%AI5_OpenViewLayers: 7 -%%PageOrigin:115 -694 -%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 -%AI9_Flatten: 1 -%AI12_CMSettings: 00.MS -%%EndComments - -endstream endobj 22 0 obj <>stream -%%BoundingBox: 100 -1143 834 -156 -%%HiResBoundingBox: 100.75 -1142.3457 833.9385 -156.7061 -%AI7_Thumbnail: 96 128 8 -%%BeginData: 9197 Hex Bytes -%0000330000660000990000CC0033000033330033660033990033CC0033FF -%0066000066330066660066990066CC0066FF009900009933009966009999 -%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 -%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 -%3333663333993333CC3333FF3366003366333366663366993366CC3366FF -%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 -%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 -%6600666600996600CC6600FF6633006633336633666633996633CC6633FF -%6666006666336666666666996666CC6666FF669900669933669966669999 -%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 -%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF -%9933009933339933669933999933CC9933FF996600996633996666996699 -%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 -%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF -%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 -%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 -%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF -%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC -%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 -%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 -%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 -%000011111111220000002200000022222222440000004400000044444444 -%550000005500000055555555770000007700000077777777880000008800 -%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB -%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF -%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF -%524C45FD0BFFBCC2CAFD5CFF99B592BBCAFD5BFFC2B5BB93BBCAFD58FFC9 -%FFFFC292BB92BBCAFD0FFFCACAA7CACAFD15FFCAFD2CFFBBBBCAFFFFC2B4 -%BBB5BBCAFD0DFFC2BCB5BBB5BBC2FD14FFC3BBBCBCFD28FF99BB93BBC9FF -%FFC99ABB93BBCAFD0AFFCA93B593BB93BB93B593CAFD12FF99B592BBCAFD -%0FFFCACFCACFCFFD12FFBBBB93BBB5BBCAFFFFFFBCBBB5BBCAFD09FFBBBB -%93BBB5BB92BBB5B5BBFFFFC9BBBCC2FFC2BCBCBCBBC2BCBCBBC2CAC293BB -%BBFD07FFCABCBBBCCAFFFFFFBCBB93BBB5BCC2FFC3BCBBC2BCBCBBC2BCBC -%CAFD04FF99B593BB93BB92BCFFFFFFC392BB92BBA8FD07FF99B593B593C3 -%C3C393BBA0FFFFFF9AB592BCFFBC92BB92B592BB92B592CF99B592BBCAFD -%06FFCF93B592CAFFFF93B593B592BB92B4A1C392B592BB92B592B592CAFF -%FFFFFD04BBB5BBBCC9BBCAFFCFC3C2B5BBB5BBCAFD05FFCABBB5BBBBFD05 -%FFCAFD04FFC3B5BBBCFFBCBBB5BBB5BBBBBBB5BCCAC2B5BBBBFD07FFCABB -%B5BBCAFFC2BBB5BCBCC2BBB5BCFFC3BBB5BBBBBBB5BBB5BBCAFFFF99B593 -%BB93B59AFFFFFF93BBBCFFFFBC92BB92BBCAFD04FFC392BB92C9FD08FFCA -%FFC2B592BCFFFFC9CFC2B592BCCACACAFF99B593BBFD08FF93BB93CAFFBC -%92BBBCFFFFFFC3CAFFFFCACAA0BB93BBC9CACAFFFFFD04BB93BBB4C3FFFF -%FFC292BBC9FFFFC2B5BB93BBCAFFFFFFC2BB93BBCAFFFFFFBBBB99BCBBBC -%FFC3B5BBBBFD04FFCAB4BBBBFD04FFC2B5BB99FD07FFCABBB5BBCAFFBCBB -%93BBBBC3C3FD06FFCA92BBBBFD04FF9AB593BB93B599C299FFFFCAA0BB92 -%BBC3FFCABC92BB92BCFFFFFFC392BB93CFFFFFA8BB92BB92BB93FFA0B592 -%BCCAFFFFFFA1B592BCCAFFFFFF99BB93BBCAFD06FFCA93BB93CAFFCA92B5 -%92BB92B592C3FD04FFC3B592BBCAFFFFFFC2B5BBBBBBBCFFFFCABBC2C3FF -%CABBB5BBC3FFFFC2B4BBBBFFFFFFC3BBB5BBC3FFFFFFB5BBB5BBB5BCFFC3 -%B5BBBBFD04FFC9B5BBBBFD04FFC2B5BBBBFD07FFCABCB5BBCAFFFFCABBBB -%B5BBB5BBB4C3FFFFFFCAB5BBBBFD04FFCABB92BB92C9FFFFFFBB92BBCAFF -%CABB92B5A1FFFFBC92CAFFFFFFCA93BB92BBCAFFFFCAC2BB93BB93FFA0BB -%93BCFD04FFA1B593BCFD04FF99BB93BBCFFD06FFCF93BB93CAFD04FFCACA -%BCBB93BB99FFFFFFC3B592BBFD05FFCABB93BBC2FFFFCFBCBB92BBCAFFCA -%BBB5BBC3FFCACAFD05FFC2B5BB93BBC3CAC3BCB5BB93BCFFC392BBBCFD04 -%FFC992BBBCFD04FFBC93BBBBC2BCC2BCC2BCC3CABB93BBCAFFFFC3C3FFFF -%FFC2BB93BCFFFFFFCAB5BB99FD06FFCABB92BB9AC3A1FFC3B592BBCAFFA8 -%BB92B5A1FD07FFA8BB92BB92B592B592BB93BB93FFA0B592BCFD04FFC3B5 -%92BCFD04FF99B593BB92B592BB92B593CA93B592CAFFCA92B593BB99BB93 -%B599FFFFFFA1BB93BBCAFD06FFCABBB5BBB4C2FFFFC3BBB5BBCAFFCABBB4 -%CAFD08FFCABCB4BBB5BBB5BBB5BBB4BBFFC3B4BBBBFD04FFC992BBBBFD04 -%FFBCB4BBB5BBB5BBB5BBB4BCCABBB4BBCAFFBCBBB5BBB5BBB5BBBBFD04FF -%CAB4BBB5FD08FFCABB93BB92BCFFFFA1BB92BBCAFFCACAFD0BFFC399BB93 -%BB99C3BCC29AFFC3BC9AC3FD04FFC3BC9AC3FD04FFC2BC9AC2BCC29AC2BC -%C29AFFBCC29ACFFFFFA1C299BB93BCBCFD05FFC9C2BCC2CAFD08FFCABBB5 -%BB92C2FFFFC3BBB5BBCAFD0FFFCAFD44FFA8BB92BB92BCFFFFA1B592CAFD -%55FFCABBB5BBB5C2FFFFC3CAFD57FFCABB92BB92BCCAFD5AFFCABB92BBB5 -%CAFD5BFFCABC93CAFDFCFFFDFCFFFDFCFFFD2DFFCFFD5EFFC3B5C2FD5CFF -%C392BB92BCCAFD59FFC992BBB5BB92BCFD59FFCAC292BB93BB92BCCAFD59 -%FFC3B5BBB5BBB5BCFD54FFC292CAFFFFFFC292BB93BB92BCCAFD51FFC3B5 -%BB93CAFFFFFFC2B4BB93BBB5BCCFFD4FFFC292BB93B592CAFFFFCACAA1BB -%92BB92BCCAFD4DFFC3B4BBBBBBB5BBB5CAFD04FFC9BBB5BBB4C2FD4CFFC3 -%92BB93BB93BB93BB93FD05FF93BB93BB92BCCAFD49FFC392BBB5BB93BBB5 -%BB92BBCAFD04FFBB93BBB5BB92BCFD48FFC292BB93BB93BB92BB9AC393C2 -%FFFFFFC3C3BC92BB93BB92BCCAFD45FFC3B5BBB5BBBBBBB5BBC3FFFFFFBC -%BCC2C2CAFFCABCB5BBB5BBB5BCFD44FFC292BB93BB93BB93BB99FD04FFCA -%92B592C9FFFFCABC92BB93BB92BCCAFD41FFC3B5BB93BBB5BB93BBB5BCFD -%04FFCABBB5BB92C9FFFFCABCB5BB93BBB5BCCAFD3FFFC392BB93BB93BB93 -%B593BC92CAFFFFFFC39ABB93BB92C3FFFFA8BB92BB93BB92BCFD3FFFFD04 -%BBB5BBBBBBC3FFFFCAB5C9C3C3CAFFC3BBB5BBB5C3FFFFCABCB5BBBBBBB5 -%FD3FFFC992BB93BB93BBBCFD04FFC392B593FFFFFFC3B593BB92C3FFFFCA -%BB92BB92C3FD40FFC992BBBBBB92C9FD04FFC3B593BBBBFFFFFFC3BB93BB -%B5C3FFFFCABC92C3FD42FFC992BB93B599FD04FFC293B593B593CFFFFFA0 -%B592BB92C3FFFFCAC3FD44FFCAB5BBB5BBC2FFCAC3CAFFFD05BBFFFFFFC3 -%BBB5BBB4C9FD48FFC992BB93BB93B59AFFFFFF93BB93B593FFFFFFA0BB93 -%BB92CAFD48FFCAB5BB93BBB5BBC3FFFFFF99BBBBBB99FFFFFFC3BBB4C3FD -%4AFFC992BB93BB93B5A1FFFFCF93B593B593FFFFFFA0C2FD4CFFCAB5BBBB -%BBB5BBC9FFFFFFBBBBB5BBBBFD51FFC992BB93BB92BBC3FFFFFF99B593BB -%93FD51FFC992BBBBBB93BBC9FFFFFFBBBB92C3FD52FFC992BB93BB92B5C3 -%FFFFFF93C2FD54FFCAB5BBB5BBB5BBC3FD59FFC992BB93BB93B5A1FD59FF -%CAB5BB93BBB4C3FD5AFFC992B592C3FD5CFFCABBC3FDFCFFFD6AFFCAC9C2 -%C3C9FD11FFC9CAC9FD46FF9ABB92B592B599CAFD0FFFBB92BBCAFD44FFBC -%B593BBB5BB93BBB5FFFFC9C2C3FFC9C2C3C2C3C2C3C2FFBBBB93FD06FFCA -%BCC3CAFFFFCABCBCBBC2C3FFC3C3C2C3C2C3C2C3CAFD28FFA1B593B59ACA -%C3BB99CAFFFF93B593FF93B492B592B592B5A1BC92BBA8FD05FFA0B492C9 -%FFC392B592B592B5C3C28CB592B592B592C3FD28FFC2B5BBC3FD08FFC2B5 -%BCFFC3BBBCB5BBBBBCBCCFBBBBB5FD06FFC9B4BBC9FFBBBBBBCAC3BCBCFF -%C3BCBBBBB5BCBCBCCAFD28FF93BB93FFFFFFC3C3A1C3C3FF99BB93FFFFFF -%CABB92C3FFFFCABB93BBCAFD05FFC3B592CACABB92BCC3CFCAFD05FF93B5 -%9AFD2AFFCABB93BCFFFFFFBBB4B592BBFFC292BCFFFFFFCAB5BBC2FFFFFF -%99BBBBFD06FFC9B4BBC3FFBCB593BBB5BCC3FFFFFFCABBB5C2FD2BFF93B5 -%92CAFFFF93BB93BB93FF99B593FFFFFFA7BB92C3FFFFCABB92BBCAFD05FF -%A1B592C9FFFF9ABB92B592B5A0FFFFCA93B59AFD2BFFC2B4BBBCFFFFCFBC -%BBB5BCFFC2B5BCFFFFFFCFB5BBC2FFFFFFBBBBBBFD06FFC9B5BBC3FD05FF -%C3BBB5BCFFFFCABCB5C2FD2BFFCAB592BB93BC99BB93BB93FF99B593FFFF -%FFC9BB92C3FFFFFFBB93BB93BB93BB93C2A1B592C9FFCA93C3C9CA93B599 -%FFFFCF93BBBCFD2CFFC3BB92BBB5BB93BBB5BBCFBCB4BBFFFFFFCA92B5C2 -%FFFFFFB5BB93BBB5BB92B5BCC392BBC9FF93B5B4BB92BBB4C9FFFFCABB92 -%C2FD2DFFCAC293BB93BC9AC29AFFA0C29AFFFFFFCAC299C9FFFFCAC29AC2 -%9AC29AC299C3C3BC99CAFFC399BB93BB99C9FD04FF9ABCA0FD30FFCAFDFC -%FFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFD74FF7D7D -%527D7DA8FD1BFFA87DA87DA8A8FD37FF7DFD07F8277DFD19FF7DFD04F87D -%FD35FF7D27FD0AF827FD07FFA8FFFFFFA8FFA8FFA8FFA8FFA8FFA8FFFF7D -%FD04F852FD0DFFA8FD07FFA8FFA8FD07FFA8FFA8FFA8FFA8FFA8FFA8FD0A -%FFA8FD0DF852FFFFFF5227272752FF27F8F827F827F827F827F8F827FF7D -%FD04F87DFD0AFFFD0427A8FD04FFA85227F827F85252FFFFFF52F8F827F8 -%27F827F827F82727FD08FFA8FD06F8525252FD04F87DFD04FF52F8F8F852 -%FF27FD0BF827FF7DFD04F87DFD09FFA8FD04F8A8FFFFFF52FD09F852FF52 -%FD0BF827FD08FF52FD04F827FD05FF5252A8FD05FF52F8F8F852FF27FD0B -%F827FF7DFD04F87DFD09FFA8FD04F8A8FFFF7DFD0AF852FF27FD0CF8FD08 -%FFFD05F8FD0EFF52F8F8F852FF52FD0BF827FF7DFD04F852FD09FFA8FD04 -%F8A8FFFFFD0BF8FFFF52FD0BF827FD07FF7DFD04F87DFD0EFF52F8F8F852 -%FD05FF52F8F8F827FD05FF7DFD04F87DFD09FFA8FD04F8A8FFA8FD04F8A8 -%FFFFA87DF87DFD06FF52F8F8F827FD0BFF7DFD04F8A8FD04FF7D527D527D -%525252FFFF52F8F8F852FD05FF52F8F8F852FD05FF7DFD04F852FD09FFA8 -%FD04F8A8FFFFFD04F852A8A8FD0AFF52F8F8F852FD0BFF52FD04F8FD05FF -%27FD07F8FFFF52F8F8F852FD05FF52F8F8F827FD05FF7DFD04F87DFD0AFF -%FD04F8A8FFFF27FD05F827277DA8FD07FF52F8F8F852FD0BFF7DFD04F87D -%FD04FF27FD07F8FFFF52F8F8F852FD05FF52F8F8F852FD05FF7DFD04F852 -%FD09FFA8FD04F8A8FFFFA827FD08F827FD06FF52F8F8F852FD0BFFA8FD04 -%F852FD04FF27FD06F827FFFF52F8F8F852FD05FF52F8F8F827FD05FF7DFD -%04F87DFD0AFFF8F8F827A8FD04FF7D27FD07F827FD05FF52F8F8F852FD0C -%FF27FD04F87DFFFFFF7D527DFD05F8FFFF52F8F8F852FD05FF52F8F8F852 -%FD05FF7DFD04F87DFD09FFA8FD04F8A8FD06FFA8A85227FD04F87DFD04FF -%52F8F8F852FD0CFFA8FD05F852A8FFFFA827FD04F827FFFF52F8F8F852FD -%05FF52F8F8F852FD05FF7DFD04F87DFD09FFA8FD04F8A8FFFFFF527DFD05 -%FF27F8F8F87DFD04FF52F8F8F827FD0DFF52FD0FF8FFFF52F8F8F852FD05 -%FF52F8F8F852FD05FF7DFD0DF852A8FD04F8A8FFFFA8F8F827277D5252FD -%04F87DFD04FF52F8F8F852FD0EFF52FD0DF827FFFF52F8F8F852FD05FF52 -%F8F8F852FD05FF7DFD0DF852FFFD04F8A8FFFF52FD0BF8FD05FF52F8F8F8 -%27FD0FFF7DFD0DF8FFFF52F8F8F852FD05FF52F8F8F852FD05FF7DFD0DF8 -%52A8FD04F8A8FFA8FD0BF87DFD05FF52F8F8F852FD11FF5252F8F8F82727 -%52F827F827FFFF52F8F8F852FD05FF52F8F8F852FD05FF7DF8F827F827F8 -%27F827F827F8F852FFF8F8F827A8FFFFA85227FD07F87DFD06FF52F8F8F8 -%52FD14FFA8FFA8FFFFFFA8FFA8FFFFFFA8FFA8FD07FFA8FFA8FD07FFA8FF -%A8FFA8FFA8FFA8FFA8FFA8FFFFFFA8FFA8FD05FFA8A8527D527D7DFD09FF -%A8FFA8FDFCFFFD8CFFFF -%%EndData - -endstream endobj 23 0 obj <>stream -%AI12_CompressedDataxœì½{o%Ç‘'ú¿}‡sÿÀ^L“•¯zø8ÏY-Æ–aÉûÕMIÜé&{Ùl{t?ý_DFdf:$»Ißñzɔ؇yª²²2#ãýø‡ÿë·ß¼Z¿¹ùþòU8ëV_~ñÿ°½½¼¸»¹ýÕŠ»W_½}ûñÃÝ-º~ñ»_®\ÖáªõWãwùÊ?\Þ~¸º¹þ'ßpÿ/.þüþõ/W¿ø%z¾½º{{I}¾¼½»z}ñöìßü¥=Žnß]ÜÑ÷ý¹óç¾sãÊu¿r~õÛ_ó5×¾øðáêÿ½ÄCÂй¹ùxýæêúÇÍÍPo×­^9Ãj ‘>¥—ü·«ß]~˜_w6$¾ÔŸ…˜º>œMaL|ÓÙÐõwîn^|wy}÷ÛÛ›×—>loÞÞÜ~øÕjûóÅõê×?Ò7«?]¾}{ó—ÕæíÅë¯ï9Ü\ßѵ¿ýÝW¿ÞKÿ¿úÝåß^ÜÖ×üæòòÍå›{®\•¾;\½½¤•|wq·ržvý•óßm>^½}ó›ï¾¿¤EîGÏýá;žãï?ÐähžøÌýÃw_½£®o.ïîh èa¼?¿ûçMýfÔËíÿF¸âݦù¿Ô‘ooÞ¿»¸ýwºû•«×+ç:¿JãYêû˜/üöòÝû·´¼ÔÑ»3ZU?Ñ%Íz1½_H_¹žÆzE[w6 }¤=ÏÆ0tÃÎúÔùž²-—¾ºü˯V¿¹¹¾Ì«µ¾½ûF $F‚þ¿úÝÇ·—·¿¿¾ÂbËrM²\¿¾ysù–î(CÞ^ð*qsåw¾âÛ‹Û/ïªnÞ~¼c í)´%ÿrñó%àÄå‡|ýþòúÛ›?ðT_… I£ÑJü¹Uß…•ïù£§®ÞëÊï<8FÂ8ú¬È?ü–vöëÛ«¯®å-o?żéÿ|{õ¦ìùàW£üâw9«ÿ'ý?O™àîîòZßàmûë -zº³_ƒGï¯ßloÞa/>ða$¸¹&z{ócþ¶üÁßÑßùÅ¿}ùE˜Îÿ×Ç›»Ë4âÛËÕÔŸÿx{ñçKññ|ÿñöfåBW]ñýŇËóh¯®®¥÷Í÷ÒG§ïêý‡+züù›‹¼¼ÍÿÐ÷篯n P~x{ùçï áütóñÃÅõ›óo^_ÜÞ\ŸÿHˆÇ~{ùÃÝù×{‚•$c£ƒÆãÏ´®?ÝÙ#ùRýC¾úþ#õÞ_^¿¹øðÓùå;þçŽÎæå9 7—824؇ÙCåæ›Ëó77„ «­\šÎÿôæêò–ÞøÃêüÃû‹×´}<ýñööòúõÏôGþýíÍ¿_^ìàúñ\¯?}óþç<æí›.ß]]_]Óíƒ?§õª½¾¹;ÿéç÷?]^Ÿßòñ¦ßœ¿»xiѲÒ&¿'$Ow~üp~÷—›iÑ®nnÏï~º½¼´¿.^¼»<÷qåÆpÎ}o^Óþóh¯/ß\½}{A#Ñ´;hBï.>¼þø–g4Žøò}¼¸¥{ðñ§‹·?È3r燕›üùšá†ZË×Õn®e}×öök¼Àùz¾ÍS8ßóíç{¾™FÙW·ïí¾¯äª¯ä_U×|e×ìï~:ÿ ?†ùZnøZnøººák™Ó×vß»oï®Þ¿ýùüëo¿×ú½ÜüûêæßÛ]’/¿ýéæ– å’Ðþ5Ú‡ó yð…¾ÏEu÷…<ú¹à常<­Ëq)·_Êè—åfêÒî»’«®äª«êWvÍ%-ǵ<ðF.¿Ñ9ÝT7ÜäKì¾7W¾B‡,ÆG¹õ£<éc3ŸvÏÏòõ/ÆÏÚýåßî¦ÿþÝ·ˆT |LjfýúäþW«ïŽèê¥ý·óãëÎïÌüíÿó%?‰ð›>gõííÇËo~¯dˆ'ñÍê·´w|º~óž¿¿ûíÛôå?ßÞ||ÿÕõ7_~ñ á±þpùšø("^oV_ÿ?é⚘lÓà´Ý×?ÒßvÍÙÅÕû_>0 !ñÛË•|K÷òŸôïø÷1÷ï. ¾£ ½ûë?_¾½y_ l=««½¸}ÿ˜ÁûöâšV”¿°±ÿåŠHÀo/hÉÊè¥ïQÃþxO‹Ä7ñ5³GÜsAõÕ£uq÷ñ}„ù?ØèòçlòÒù˜!¿ùùÝ÷7o¯>¼³ëûüÈÙ.½þúZ¦yûñÃO«oonÞ–… òWe“oïäž¿™‡ØÅK /ÿvß^wB˜îýOW¯—Æ_øÞtâÞGAÑk^õ¥'¶_ÙÃŽïø[zŽÑmB~'Žõ½×|ó—‹»×?zùþ–hãågÛûÃÕõšè7¯î.Ë~ݼ{9rõÍOïÑ+Õ•eÜêP€W¯î' ¾[m®ëKþùýúŽÄåÃÓ˜oþýg¼þ‹ˆ‘_mÞ0GM"í4 ã€OaJi «“ÿÎHÎpCO‰þ| d¬Øû¸ú‡ï6·Í+A^¾}¥w¯ôfzx·êW©cÉ›†PðÝÓFÙ|ø¬y8áI³°10‡Í®ì£nʼníùúöâúÇË̪lѬ‡†LºMÿD¯—ªÖçVzbó}}ÝR5‘ÿW}³Ýì6ûÍaÛmý6lã6mûí°·ëíf»Ýî¶ûía×íÜÎïâ.íúݰwÓn³Ûîv»ýî°ïöŽšß‡}ܧ=»ö£ŽNWt¶Ä-æOqÖÂQ›_A’ªü–Ñ»gþ‘uôý®jÛ…¶Yhë…6I£ù·ŒÞýÐ÷}êczß;Ú®CÚÓ²lÓ&­Ó”FÂ>¥“O޶ù÷ôêÛ¸‰ë8Å1±)Æ¢.Ò¬Ã!ìuô°]l›G¶õ¼Ñˆüû¿€õ¹Enõgm -£óϱ‚_û¬³ãØÃ8›q7î§nrS˜â”¦~§iÚLÛi7ÖM)®ÓzXëõz³ÞÒb6ÝÆÓ+ÄM¿6ãfÚl6ÛÐ8œl€ðÒhÕ7cùû¯‡2î!äæ«æšÖ•¶?4­þÉP¬ãNÝx÷ô[Zá5­óH«Ý‰Ö=Œ~tc7†=½àfXZÂyCâ?¸¡ëýžpÛoúu?õvÚáiû“má¨çÖÀë¼yn¡jòæš^½«Œ@ÿòˆÁ¾iÇ¥ßö^C þ74§= èèÌE:{Â5Ç-ÌQŸÖžÎíD'xC'ù@çÚÓùŽtÒZ©5­Ù®?|ùÅÐÑ:ZÑžÖv¢UÞÒjÆŽÖ>Œ†ß»Ãö¨í¸é¿òi{ØÖ‡é0†mÎPÉ!2Ü8†„a¦ X™pó°ï OGÆØŽØß>Ÿ2&>¸³¶üa:÷ŒS?ýˆçyƒ)-êðžqÔO<(¿¿¾¾xwùfõcîZ9œ…^ÚÖXéÕXÔ€°qCˆ.‹Vèì²ðñcÍ"„ˆ!DD‰¬4!è‘„…K ˜ÈkP ¢@HXP¨a%f% DZ ¶°ÐBKÀ ?7Oò!b jÊ%ÐýÝ·¥ëpE"DZœ¿¥‡Ž$ßGÈöÄaB®ŸHîL,ÏwÄÅB’ŸHB…6ʳ&j—6_~AÓIžÄ;Ö?mYó½S€Î‰è”À™€/ Ì‘ì™'.$€û ¾c ^ƒøŽ¸ pŽù‡-^–EžÄ‰¯µªIÀŒx0$ö‰“åEÈý’ˆDª -ÏXÑßkKä÷†f§¿·,êoýË\þ­¿÷ù÷ž9â–*f;nš¶½§ë>KÛk£÷Gípº- Ö˜ó£Mw‹Í×Í”˜PkŒ¬ØØ°jcOb Tž•‰Õ#+86¬âØg%‡‡šcL¬æljtC`JOàz`…ŸoT~ë¬ôÛ³ÚϨ‹ê¯gåߔջ¬tY˜6ļg5àŠ@Su»VÙmÊpÜ‹»=iŒø˜|è'GFÚ2jØçñ:F>©ô`àY•>2Û¿f`ËJuV«³b½cQ›º;™jrd5$°È†Õí¬p'ad…ùnÇrhȪ÷Täѹv±,RÒ*ÎÚ©¿UÕeû>°òZŒŒóÝÔ7OdÁbÐÚÐÓH» ì).ã…#oO&fÐ ¡ò³¡PK€<™÷;,^¤ÑÂa>N<ó³0ñŸØOÌ(’,À\d7]ÅcOã}ÑWî©#eê;’ªØB¾>[™À32WWºšGíI&h9„ÏDíe[\FBbÇ4™ØþÑ‹âF–:øX!^Ú/éØhÖØÐžs\™+‘¬È2«`ôi(bø“ŒÙ1›ï‰÷xí »ÐËS-}Ï5â“ù”n™Qéæœ -+ ÑF–×'“ÚǬ.›XM©mhšbð"ÝÇûbÓBÕüì/i!ë¼µüC#6:‚ZO0Ó¨æ ÐÊ¢Ú˶~m4y?×mlÚP5¡ðåÿÚî9W˜ªýt®U;ÏÛ·Ìž€×ƒ–F±5FÖœz^*±ð¨Uq5T#[KDOŽÐ4U¬«Úå¦Úª‰¸+t#s‹¢¯rY_…;´U;ÖW©Æj0}•B-ÃaYÛÌ»­ RSš«r\wÙåý¬ín0PˆíÚCѪÕD4†¢+=áÀúÁÀZÁŽ;È“[Ú"–+ˆ;–'ŠCbÂ9‚0Ì|Á¦ 1\ˆÙ OOŒÒŽáI-wXúb·Û²ÝN¬vj³+;±Õþ»¦Õ?ù£&|ÅrOXÆ™a¨˜‡J›InUë›f¦V±6µ¤Ö„47"0±å¥yù1?À4,eA¢ÜÈômÍÔ’ÏŽø…:ˆu"ØEÖ]@‡1àÖkÍgMÇ6‹z{žvǬg‘O„¾Äº“u)Sþ6lfÙñ¦±( b ëdN‹r›F”;˜('‚\0A®g{ ‹q,L­Orþ„ 7™ 'bܮ⶜‰q±ã 7•aqŸ!J §˜h©iß&ÛeÙQÞ=Ý·b¦nŒÔ35{:øìëг8e‡{MUðå+ TÃie‰‰PEÇtI]…ôoÀƶž–î˜)Nµcˆh½ÅZYó„5¿€À\û˜w€úlÍ? ò˜ûØ:.{Õmg~u'¼êjÿPƒž:Ö'Út¢¥©Êª8ÒÊÇúHvÿeÙ®:MCçÙJ< ‘Í;½[rG$¡ƒ:eÌÆ «à²”ªñn´pÀëû8àiD»Àæ{õ#p4¤–UaÏ5â“UaqYaÏ®UaYrp|¨c6è Ù£lͦšÝ‚'_ñã›yòÑ‘*Þ|}ö(+Þ|…Q*¬R4>e˜”eb¦‰N•3ÆIY'ažjöiŸ­1bYã(š°Q`¤Ð˜×eÑ\XªK5f¬„µò¬î‰Lš@œzVL¢@¤@¦6¬*Ú1±Ú³òHP»¬!ôÌ‚&a b‰ YÏÄl`‚62Q›˜°iÛ0‰“F8¶]%aU. ãLW7ºy»ÇäW£õbä+Nº¥+4” ( D%8Úÿ£)[õ¢šúv•ÁO”‡Ö˜'ÊLVR¸¬ uYE -0I 1Vµ«¨«SÓŠwV,3e› Jªñ¯°n{#ÙJ¶÷Êô¨YÏž’ø$.žU.ê7¹C^_µ!7ñ­kF…F¬ÉÇ2¡9I”ÜÝò¯_$äÁþ¦/3‚Y7‡‚6¸`$ÓgQ(I•wí™O5+쨊yÊð3VJèiáse4â8ûf=ƒ¾É”Û­ª»†Ïê[SŒOf¬.ÊñM­B¯úêÞâ7Õˆ›£+7U[êãÖú’î¼ÑÍ}Ñ#Sý1koLõH§‰5Võ¾tl\Ëmö±T}kq÷•ÇŽ¥|’uˆJMæF®2¸’»¿ õÙ²^V½5¼HDÙÁ<{k˜¯Æ:ËH­ŸFd§óÀgç¾ã(ŒëGv‹±åx ZP³L¬Q Ü3/™˜ŸËAÈ֟Ѩ@©¢]EÄ9ÇÒMÕÖ³6Í›ñð“é4`mœü0‹<«¢‘)‡¢‘S´96Jür¦N©â—ùðš^ܸñá34±fW¦^»Î¼vývkŸÝ)k{jÝÞ<†Ôk(æPÒ²ÿP6g©‚MÕˆ;ðHÙ§h›arSy©‡Ñd~FÚê-ë«Fœ˜ªÛÉP¯jw3¹}øÑ}̃=T™µ”4bàQE1E/-Ä,ÇÝìæ8¶.CÑh°4DiKUËÚb±ÀZ8m­ºÖMwGÎçyºìžQ ´ýÙ.´Í‰¶ÖÆ8p©Mis]A¥M]Ú²&--jÒº¬…­o¾übQ—ÖjÓTŸ•W×èÓŠFmÒxSÕªUzµVŸ:VºÔZ“ªv‚ZšaJÔ%½À6kUv¬rï,<$dÖ>1k?0k_˜{cïsüWfîiqÁ}+sö~gì=ÉÌÚ s/ŒýÄlý–ÙùMü†0ñÂÀ*l;^øÀ<ø²Èº‚q2ÐÀ8ž0>ð̓ӌ Ó“Sz ¢PE·¶ÉLƒ’oõqÓ×Ùâ¶µÞýÞÎ~ï²\íÿ6¿¶Œ¿ž}*¿×̤dß»™Ý¿°ASf”’O…-«§ö(̬üþþºÃû#êû?&šóÑqÉŽ€‰MΖâå(–:†e͢Ƙ#XÄVìŽlÅce-†ðÕ±ˆ¶«lÅC¶CXpõû3¯·ÄímÝe~O,ò ·GgkÎí^O8½Âç)—§~ ÊÛõÆÕ$æ]aæäöƹm2w¦~!= ê±x‡0èònÊ~bGéDõ†ÿLo9VœRÍ+-rK'ù%Ø@Žx¦“Óœ[ªx¥Â'Ñí3¬9¤š7ì¾á{Bæçu—œgŽÿ$‘øÌ=´a{fakllµ•-6X ÛÍöú¸€½y\Uø«u¶áÇܵù •Ør*RÏz¥Ôa€3±®~Ípˆ'ÈÇ `u¬Tà³ÍNšxu±Ê“Ñð‰÷ÿo™žoxôÿ=ïß4^þ'Øè`?›ÿo¸8™p-Á ê-æY’XY²f%þß³’Š:¨*Dá°5õ\ÄͱzNí˜4µbv"M ,B—)´Ðç# &a·EæIjr¿%¢Ø ’).‹êRüÉÛ0dŸƒbû&ù`+‘Xa e厱çê`vˆÉgedd5äÄü ½÷ì Žç{ÊbÒ%åHQw´j…4.PèÊ3Ði®ò3 ÙªE»šÕiŇ‘if™›*8ù?8ñ„óLóê·cjV{ÅM,X³oí¹zÇEæÝØ;Žy¹®ò‘+^rk¦yµ¯\j|å|VŸ9É`Y)²Åu_yK¡ì,æÜÊ®9ˆ‚<”×anz€ U^ä²!Á<¼k«Ã½W‰¥€6±ñ†¥cûûú±£sÌžnÃø0¦n« ¿éŒ@(Õ¾ÛÏ1œÌlrnÄDÏ¡vÂÆy ¡rqƘÈ”Ž|›ÝÙD,Ϫgµ±è9GÍó¤7æ ×!ÅŽÃ^#1JìÑìÂÄOA,¾”¾‘àÅvØ6ÎëY‡}²Õ¨_¶õp ­ÕȱÞXH“&4’q`-!d0ò¢(‚aÏ$e!É !¥*ý#TB’üC‹w™p”ÔÅå¥vàÔ•hÞ7¢¹ -æÑ\\T,ßÞ C„^ã"*—c¡|SE±¸Æñ)VnOâò²ffo9~E]ŸÔÍ¢v´˜*7‹ËR¢Y²«EåþçŽ\ý̵¯rë[tæË¬]ióMÛ{\øŽùè‡F\p꛹õÝßê„=ÄNk知™³`•*è™Úßçˆ ÛSlÈ=30›œ‘äó‘ :0ã%V¸s'b?ËXPvufn)°I-æ8"œ1w£Û´tæ>'¬'5bCvó™ªBbÑ.q¬ -LÀûl£«ì>Û]=ãvÐ$ £î™D÷œZK’ksÇTgL ÛC(Z‘‚… -Â0ªˆ`±å\¨„÷L2ÑD}­"œ*¼U¾7å¸ÊI.7o¡êÉÞZ4cjÚ:»k®³Óæf;ÿiõ±‚².1¶cLG8«ŒwæQµón‹Ií>»¥ãF#.ô>¥ý}ޏ(È‹ô’Ù<±Xí} ¡DÉ’6.%aÔÞb‡«täQÿRËt›2¯Gl}à³<MÄ:H,²è Ä€Jæ^½Û²*¬1³ï£Æ—Ëlyr—ý 7fƒ%ÙKcUëkcy­üÓŠÍõ¤Å•y˜%«kkwUË«3ßQ5mÇ­¬ üò‹"¸uý3Um¬Zë¶Øk£{Ë­U·¥xœè¢)—’dÅ“„y°~ÉPJ$qàœ––#§wSß+ ºYÊ»÷<ãÁ#u û• «Xlgm¯]w6 ó`¢yÿ“;ã²qg| z z z ê^B‚^B‚^B‚^B‚^B‚^B‚^B‚^B‚^B‚^B‚^B‚;âKHÐKHÐKHÐQHÐÚ¼DçÁ@óp Ô$Ý« v^˵¸,·å=…¶ùso±®Ï<ÝzÉx!²ÙÉp£'s™À™`j4åtŒ{ 2rìsÆa3åÔsL´«‚‡¤­c˜˜'`\3Wî`ÓüO|:ÁÝ6¬Ý3\£ò?ìË܃þ¯íÙHë³~çëàé—¡¼À·ð$kùÔ„2õU(Ó&+Ke»Èªžuñ5gEgåK_‡ñ@½Èþ¤ÂhbÆøŸ[@SíQ:±GiÔ4÷+8½ïFÅUV*Ø•…#óµšp+*¬ôY%ãð`*@á>v•×iï+Ó{_Ú¶`ª¼h -¼Þ*ެ@©¼uÔºšúnc^ýE+žý6ÆAc¼¾;•€§;p¸Tàp)x÷C1{`ßþľýàÓöÌŸE^+xõce+HÅ›Ÿ90ÂÙà§×™ëŠìY‹=I Öç?>ßÃí^¿µ“íóü¨æÕ%ïm_~1Sʵ“á]%Éùrh×q`W“òœžWA]3×¥Ðu*õyʵã;qOR§¤ÑÜ’9ÕIÐÕahkªQMƒž ÷¿OïÏÓ„Ž*W‘yÔ%‡‘SÁcšVüþà±O ã1eÇà_èšÝÂNp£ai!MéÙ¢ÒòhÏ”6¦3ZLÿÌAi:jžgˆýÄo5Ìôœ¥‘à #Z¹°NL”´*jpàÈD‰÷‡¥=ïÀO¶]N˶Ëé— ZÅviU!Š^¯”ÝÍÚ^siç|Úuõ±C͉œeÛOá¨E˼­­¯š+EËËâ 8æ¿´éÏú¨‰ª[bÑ7–Ë{sÒÍþt¬ôq•oµÙTE³%E…ü²µM¢TQ«”î,â8d+]©ŒRª§”z+êÔRâ=Êdõ‡-iÆ2ƒEÖÚm“)þEåïrm6©Î&õÙú,ò¹,è•J ¨Bãš•J@²RÇ”+×lÛR¸f[²ª{F¤R»ôÈ1úêD­Žžº\·wLŠ©ÚÆg›+3DZ¥Žê +XD”æú •­'›…Ç¡üôÖÔgOý¨‚I©êTèLY#jc¢Fæb¸ËœèÆ ×jÇ™»¡p•ËaÅ)°ƒsÃ/Ô.‡s‡ÃâjØW%SŒ«5Ñû—f­öûuU« “0Nb_[¬m¬÷Ø hÄÖNÐØf–¢ÿoœ¸,•±¤õ_7©ýw–Ú¿›¥ö¯û¯3"È)ý™ÿuìTUÒù—¸UÓÏR³/%goÒ³óŽ”íYwüi Úê‡Åœ¸¶Ð1èr)a°Gvwñ‰k[&ÔNšy8#¬›L»OHè'ñ C­%eìµðWм¼½Våg^òzÚ8O¥Ž~¹@§wó°m«Õ žèÇÌÀfÆé ,À;óˆTð‘X|®Yµ´·ºžš_ŠŠrÌñH9HumϱñG,~‡¡R?ÂÖÿ¯x ©­Fã7FGÖUÐ)+ÇÌÎkK¦pŒYÙ¯ô¿umw³ÖÍ[›´½¦YLXnÛG·Æ–™9¡'5CÌRu —{3娛ŽcnÖ\†0¡;0už˜2£’A7«”ê‰ -ïIÔ™XÑ‘8O»ãÊ[›\E©Ï$Æ19Y犩ø!³® ´f¡²g‘TQòL%Þe˦%hésEU‰TÑ8”=WWÁ±xßu#‘11ÝâïcBãÁ„F­QWª(ê)Ÿk/I·¡èçõÜçž$u¶Š3k„ù¹Ð¬»Pê¨ 9óÎ&ì9óN—k¨¨ÇßTyú¹Æ»O²mrâˆZ-§þ{+CÖ­×^öÓS/½ÞüòÔoo¡àêc²³*ºžëªô÷j9SEêhd«æ3o„aMò¨%~QÞèsqׂÉꟌçhÄSÒÆ:ç¼úÄ–9ó'µŠëå—:ê:UN æZƒ/ÖbÆ”ƒE´:p©ö{0çPu-¢)'¯R7QYëu)8‹ªÖw—¹Þƒ¹Œv9§’7×Ñyç˜9éÞœHÕ‘T,Òº‡ëJ_\tÆÛÌ·pÍ k¹ÓJÅF‡Ò†&sù¦…Y;ŽÈH &šƒ—–ÚãƺUÎg7E7'2?œ*›tªp’•ṩ.~›ÝnµøŒúwh %-¢´)\|ÃóÇÛ|ú,úëÔâ\§ËsÕºJ‰.æí‰Y*…ºv¥X—•ëÒÚË>³_ÑÒ¥ \"Ç(ÅŸ²ïžÊ?úS¤$•›Š4Uç᫤/•ȘEÔL8m›ËtÇ)ÛLRü¬f•ŽÛ•YÈÉbèÇœ•,Ìä† ®­ïa*Õ‚­­?b2SÃlR£Õ«1œ`;?‘ñ$"U³ŸÇí+z’åi Lèɶ~¨eÿÌSmúô–%î'µ£*àS–‰E"yÒ°È„ENû¾‚8-ô´åÌ..gsé9ƒ NØOKÜö•šï¾âšÅ¹›Y8#¤'ÜDýfZvJY4-Ø+,mîä1fÉÍÜ<žC!pæÂ’ þIJB½/Á—Ó`¢™Gb6)ÎYÙPýÏ cèT;ïÃÙàé1©Ñ¡?y,-qNäf”ËjhË(•C˜•„¯¥‡«mûãÒDOæ©*ŠUÔMƒûyð‘3È.¹M\Ó;ÿ¾kXÁW€·áõÙ¶­T¸QT¸MÙ½C–¬.ÔÉ?ø{Ë~Ň·qÑ?ÎR»T ô¨¨§ûª*ÞSSQïך„V»¼T*/õµÖx—+‰ï»ýñÙ„QJª·Ççél¢•Œ#õ 4Ž š`½˜Ò†þ¬ƒÑ¨*‹õ´rµ®5ÉT'Ü|6MPÖ3sM-Öµ±YF)¶ó•¬“ΛŸšI=ÇxO=Ë…ºâܰe_PÞé¼& Þl×p¼Œ7/cšL{°)ÁÎf^È4ûäj Ý'2eÍ=e •6¸6€ù™o…ÀfixÙ ¦ÁlŦþ²êÓ»­B!%/‡¯U¡k¶rQI YÓ²’½–,6ëšÆ 𭬤øÜ䢒v†´Àþ›b¦a•#V§*^^«* +Ǿ+­÷IþUO£”ÿ†*ð«Wbö>*\c˸ÎþR?å©›n•¿6ì߬þΕ߳zDj8Õé`ª&” -tÑ@ªF5× k•ktçšµDƒ¦¼¸V6)­;Ê©ì%‹yŒÕ å¡:š'ƒ‘ÖM0R EÒ`¤6© D‚äôåUR„Tem°Ú uðѼ2hUôQ¹³Z¤YΆÎLƒÙ˜Ý(×fô̼ÇVŒG‡òÜÈ3 ãÁ -r(OÄÓðÌÂwÚÐ6d'Ë©yµÇY Nž3ÉiÂpÚ°›Ѹ&Ħ ¢™œpjyÒS<ƒsÐL6xêPO¦òË&:ê^¢ónÎæ†±åœª§è|Cå}dCÆýT¾)U~”Ⱦ«ÂÁcå2¢¼ÇÔ¦0Dfg3$ -Xè]"`—C¬Õ£Tf;,ЯFÎ= -Yžgo,¹ ëðt JÒR­©¨9ÚsÒŠ†Rìè?ReÊ™Ïä¡0àÀ4Ö¼¬Á›ëícèéPÕ6PµPž!c¬%êPÂS›ÐÔçÆ7>¤Ä‰K‘¸M ‰@/y8$ç:‹ÑžMý#œÞâ)Œó ƒ=çøeœã!s[Âøñu íð8J9ïqΡž#Z$602` õ‰¨(ØÁyŒa.D{-;¡§ÓV•&(¦ -¡ê‡Ô<>êc9eþgøbWºuq‡;ÐòÐGfÑÒóétæMÏp•[4{OãV§›[NIiË“Y40hbÎ8eŽQ¶ LY9r®G¬ú×1õÒ7mŠ›6ÉMg‘°jãl-œÙ¾ùå&g»è3|dÁ»LCäBç#.Eu!5Ïáfœu¾ehŽjÐ?ÓxYMcc¥Ñõ\–ø€.ÉXªêá1(–+¦2XïÏ&â'÷¤U‰4 Þ1×—çwíJß–Têgxù¸,ý3 ¨³›ø¢ -¬u"ŒØs¬ƒî˜5gìŽçqm{Öb³Oýr=úçð©¤hYû›^2O½džzÉ<õ’yê%ó”~÷’yê%óÔKæ©—ÌS/™§^2O½džzÉ<õ’yê%óÔƒ#¾džzÉ<õ’yê%óÔKæ©—ÌS/™§^2O½džzÉ<õ’yꯘy*õgCtýs9˜ép/¹§þsO¥e׽信+%“уmªÕØ›Gmû1 ý”’›ÑÚÜö£v¦ä,~‰=G¬7›ì °ÍöÐ]ÖŽÍ•'1ÔAÙì´@G¸V¥´Ê”¥Ðì139ël-Ý6¡Øž…ÎZ¥‚àëYH ““rà@ ¨Ý<Ìуٛq)€ R˜‰‚¥qù°xšþÑmxL£‡ÊZ8VVCm¥ü™fÉZW9'4¶Ö ‰FÌŽ”b=¬l‡5ÔÔ°’˜…R™Ô¨PA"y1vf)W¨¨áÂ3ªNY±ÖgÕš0¹ -@ð{AöÞ Bí磄dMØ´Ž!Â3!Qæ7UáøÌ¤ìf%TRBJ”Þf 9A‡íësüTG“FôUþ3m±j¥`æ1䌖!MàaÍÖcµ¯›½¯-ÇÁ¶ç>Û‡Õ6œX,‘ÝÐý^3½6 » ÅéÞöØå=.'¿Ÿ¥cÓ´ã=.ébh{FÈîn³oÄ!ûFèÞf„%Ÿ˜X³G„øCfÁB"ÚHÈž{sïú?] øŸ4âiñ¯CDT(vúÁ«Šò¸õíÁÙ鹂›ñåávú§2ϰßóÜH³l„)1ðC£ZSåZRÕFÅö%Û¦‰U™L¹–kœì`^i´«LߥÂèºÉ»¥ð8WŠ~ùÅ‘¼ŽÓ®D 6JlQ-n˜ÀÁ ömŒQ¥øÓ¾ÎvúÄ.·{¼t†ó ¦}»±´û»nö7–¸À…óË»KûZK‚' ¹ã¹,Âã‘?ég÷ÒqLì4Ùo4Ó@Ô$ˆË¡ZÏ6¦ˆ©égß%ȼO]'âî¨É!Æ,¡µØ;„³.„¡ñ§}ŽÑž,.‡ŒS÷§ ¤ - 3áÓ³Ÿû\ø|Hô¬ ÅN3v3ãbçi¡Ótý,#X363ÁÓ5nºEìœDËÎbÆáHôìÑ3³ ÇÂgg…OH5\-~.ÄTy¤J&Ø’?Šý7)¦>J4­R>´&NGé‘8jÂèÌ‘5»®ºOFVEQ>Ž…Ñh⨦¬Åѹ·GQQ0¤üˆŠ¢HMhqÏG²ì"’®kGnI¿ü‚¡¦.šë KOħ =Yuñ$áu¦KªÅT±ˆ©½‰©ƒAü» ¤šˆº­Ü› hDR?IDeýù¢€JðS‰¨l÷‘/˜¢ÆG*ˆÊÃ{žbäÄ¡âÀ¿Îbê.cñññl1 -•û~o»½9²¿9Û형½©¨d¯óŽ›Nv[ó‡*ç\³ÛÿiÂÝßûˆ÷Y/kñµÍua6L¶_. °­[TKÖ–Ìb1Þ>RÐ}P° ;—ácEÚ{…±w-ΞvØ3ä1âNhç)¤g>ÝœH)= ÒªíH¨m˜â6qÆœ1>l³%í¬GŠ¿ƒV­q¿¨û˜}õ¾Ã{â¤oõ=BîIáY!…Üù¾ bnÙ÷}»ï´ÛK‚n»ï§DÝb=­D]Îj¸$µâî² õhç)?(Ïà~Žáãáwæ+6,(;>Iô=-øÒn?våľ/¨¯d×i·ç罟‰¿îÄž•½¼²˜Ónß'/«°NZÍEedg£f'‘féÃè¸fàeZU)ø¢Z7‰=J~:%*?ߘO•‘+0>›¨l£=UT%å‚r:Ž;=õsÊAçdª€œt`þ¯îj#ïÕŸñ¡|ï 3{`ÄöêǼwõ•»Ò3µ“#><ÇOñ±í1Lå^Fü”»*ÉYe«žê´ˆÎ* Õ¥pT‘3‹š%eC0%T›¬AÑûìl-"¼¨š8h„èÁ¾R6‰@-Ñ|I‘¨b% –UJù’P^’É÷ì%ÁÜuâø…—T1ᬚjÓÁkx-!U§xן(X–hµ]ÕöuÓ°Z¤1w÷ã¸ð: ÙZ8Ñ’6vÇÇ&ÕÑIu4Ùn1š¬'ãZÄQ&±ï.ç—:XlÙ>s¸ÂUo,Êlm›F‹7Ó˜3iR¤2å´hqhÁ£zKZZjw”S²D¶m·ØN”Ú⸫¦ÑˆË‰dÖŸÛ8³´äõ©CNžµý­ŒØX ºê?§ÿ=ýË\×¥ë9ÿp -“ã`°q>M³œ•𥨫ÅámK†ˆçÊ~®ßD]. †«#LbYøÊî8ë}Ó»3x¹¬B<ë]ŠíË—ÌFhàäû•çâÍÃÒóKÊÃ0Ï¿9ï²9#,Û3Â<‹|c'U+©ð§ ž¼’Ö8i4.аuýBnÞã:VOéÀ¿þtuwù«ÍÛ‹×ÿŽ“ßü½T8m9wn±„,åÍ-¢`Y*¥Ž˜jÑ\¹½Ug.…¡Ú²P%#îõ«h¾>GvÖõ™ÛȽ͑SíÑúò‹*šSÝi—ã9Õ¥v¿èR+Nµ#WG>U–õ¸0ë=¥YMÐÜä"­›,€nM½¹Ÿ•k­ -¶¹ýÕ%8æ8æy‘ïÙáì^ -„Ô.huyy°¾Éˆ\•ã¼þÑ\¬Õ…²-f©KN«Ð¦¥l?íR]#ÐGì?[cªýŸçma æ]†Þÿ\8vsX×;ÿI{ºéæÝtGÛb/º§²£uz”‡ -»•ÄóG…ݪ=µ§ÅÖÜ`+r˜X<«#µ›hÜl“TØÞ\žg;ÜDlÓXæS%˜ë® 1G«›>è©ÇžóÉ×]/û¾7Ûb—UBaþ.Üs—=;B™%mO…shÄ ¡*FÔZØ·%IÙv·áô+ûì rÚžMNÛãÙVžÓö°Ý.püÿÄL,v¨-mltl‘ܰuŽDNyµ™v|Š#§¸Ú>ä”V°¯m6»™"ôÓ«ýœP‡²ÕëYkÃå¤1m¬ß“ªÃñz-'‹™»9>2É »Ã?CªNébXEñˆTƒu¢Á'ïéßqµ¿OOI|Üsìf•ö‡öôÑ{©I#ÿOÚÓù®²Çʳî*Óç9£¶«´§ŸpBeW—ÄÊ8–ô’—ƒ°&) 㤠7}ð.õÜÃ¥¾OyÍ>×,\>©æØ=¢ õ|÷››ëßÞ^]ß]]ÿøêU-"Öß|ùÅoÞówA¾ûíÅÝÝåí5I‡›·W?^BpÔ+û³D\ÖʹñŒ`d•¦pæ¦!¬Â0žó–dÒkùçÁ¿å—_å?Ëßÿ>ÿOêý ­Æê׫ûÝêÍ—|×ïXù¥Ò‘WïÐ}ôÀÕ¿4Ý:±iÆXîm‡¸Æ¯óõíÝîêõÝÕÍõÅíÏ«_‰î|ssóvõ‹õWyu¾Û¿¹º»¹ýnC‚4­áwß^½½üîw—¯ï~¹úGÜñãWõê_ èŒ.\°ÚÒ£,J O‡3Yù‰€pE²0Òêü‚Ù³ú´rãpF#¯F@j.z¿ÑŸÁf²"nè¬#¶vå†HßxÇ=ħ+×dzއÕVnäFºl¤ºJ‘æ'CŒéäÒPÝ8Žg„)ôÆñlÜ»1E¤ÕÂH$ ™ }è†Õä€Ìe˜=—Ìêèþ„ë~à‹“¯< ïñty=ç¡gõÔíÏüH³Kn8HYÑΈ›¤Ï1œÔÏÀçåyzwÖ#œ0ÇYB…":­4Øàùˆü£ž^¦ècD ª¤·¦3\H€BïHÒjžâÁ\‡å„h4zjæ{*ö££E®.tÈ6†7£Q#– ©ä m¢'´×ë^W€&Þw4»0%8ßãUƒìÑxF/ï áò«×|kïò*¹xæàÒO2ÓXæ•ïÒY ÷ÔÓºbÝÜéiâòT‚‰wv´þa¤MO´6mºïY?¡`ê¡=ˆ×Î¥ÕEÚ(ïz$K£Eê&šw¼ ´áG»ºmvœ(c”.öºá 6Œ" ÙÚ<]pt43Z›È=F=ÁÑ¡<¡.Ð<À•Ž¿UœFÔ« -ªÐ¶Å‰6ƒÀ‡zh&Pê¡hc¤ ÜC7ñ`t̓>„a>lùVú>Ñ&Òø´I˜DÏ<ŠÂc0YÌ£“UJÐHG´›»cïètô<Ñ|êqg9 "&ާ»D»¡ÇžÈùÙˆÂlX߈µÁ$ÞPO„t˜;´Ö“е¡]u8,€•Hóžø„RÁz™nÀËt{BN¦ %Ðh q&¥â ŽÀïÜ|/ø÷ØfÒ/W¯8KâH$âË q4ÀŸçrróÊ­ˆ êa=ÂSˆÕ #O, }½ùƒ¿ò 0Ë+zë@œ Ú ºøUbTãéOÇd"$²"®©‰’ü‘áõUè nPÄm¤G›ÐÛÎÇ €Dö'q–”0-Í€—hðW´Qãî¦ tqj˜½61g«Í§Íà„gbZ"Æ øGzW™ÁB¥6›Sð¼îXÿææŽˆÝÍíÚ‘,¶µ“k}þ»Ë‹·¿¾¸»½ú\½úÅvý•ò+ßþpsûN¾SâI„öÍÍ÷—ß­¿š¾£É|s÷3Q×2ƒ9gñÇ7\üÀE lè’ô«_ürõÇÅÇÿòQÞw'ßóe½§#í:qç3§BËO˜0M¨4 ô=qŒD+ˆß˜À п= lùjȤ–¡žöˆ3!ZB¡£¹õÀ-@ÞtŸb\õt¦ÊÂ×Ó>“»ŒŽtßOÝGGv$äDÿŽDþyL=‘àrT¢…ûB Ñú@ì†'bAˆÍÃîÀç•è`"„Ä ²›tžt=‘šÐ1+Lœ˜—i5xZjºmÎFïùùt]DM¦iF¥¹xû~œÎÄ«èh½h1ñí„UÉ)ùac2D¤„D>ºŠhŸB*$äÐìA @’±!D„óÓ"B±Ä_Eì,É·4i¢Ë¼HD®¹øc~M‡ŸÏ–ÆjLó œG›£0´X#Á•ÞF¸.t¼ÅCo=0.! " !ö4ÿ¨˜„LÉ}t^دiÐûØ©,yÜÚÃ(E(“² =ÑÚª‹É#pFO'fbÀÛDòC1wË] ¡À@4VÞ ^¨=-ê€J—¸–`²˜t¢åz»l”×ÄX㵃°sù>íÆv‰˜·i,ÓÓÞm:†1”5Á - ™ëé  ÞÀdõ¡tô Ícf¬—à€P-]æAS"8Z‚zâ ðø@R/à²#4¥Kd¡I”½$¹î *jtDœÖ6_O§ètÇÃþ è#â…«ØÁc$ðhx¹d‹‘«¢,I$y‘5‘,œC)͈ÛFäþ“¢°±öž§@_‘¦483î'B:u´_28í -u¢—¶yâ“é\ -M'‡‡Þã@‡KÔ­/ˆ‡Dm1fCèP -+J½ãmϘD‰ô6:Z4S1›*ÆNXn26oÐãhá}g胘` Z÷˜pQ'+H?BXû…•DGaZò&äÙÑ”iiäܳ‘RVÛD\ŽãÏ€-I™ ÁnB)ŒTÎ4•ÄÃÓý¼¸´r£=B 4 /UÆXyâG"ü7;,*.Ã"ux’ 3ÄÓÁƒbØ)2N"`¤#`ØÀ¾ëäÂCeÒÆ”È}‡9ž`鉆x p„Ù§y¤É KSïd%q83(ièQ!3‘ô*z´i³CLÁb¤©Ç-‘}'žn—€NòžlUÈ&jï:á940‹€€pë€ÁI&§½2D˜p~wyßLvïô1NÈ]@ƒ|@ÿlžb½:™Ö¼' Ÿg› uQÏÞ)ÿe¯N@OÈ—¥@ìY&±õ#ñ0Ãj^ãvy 0 -S•f›ø¶Ž Rw¯ê!Më~¾‘I·`ASw@i -=Ä´äwËà•hgz<®„ÓN³0XeÉv"ä¢Ð )ŽHôbùëÉHÀ.ðVÒ³CáŸnjÏ+¬'*„<¯g#w@1Í‘ND} žéÁ'NH$ŒdQˆC5úHDÑFHUŠdÀú2 R4„aŸú[%ý!ÄhH J†ŽÈ½¡=²„‡9â2â ½¢ÐŠ Á^q,Þù•'G“PŒ”Qœ<‚¾)æÏk9ÕËô!ÿ1 `›2ù³ŒéDSbƒ- ,“#yþзD :$*iK=Dˆì™öž»žñME"S]MQ)i»´¦´Ö:’l½J¹¡ ˜@ý”¶ã¼0óÖp˜E®Ï|¥_ø³æ5´S9€*o< ÞÕ“(ß²6xÔ0¦ê2:öÔIÊ#%0é8<-/E´žɾð\PÇðN)K–°9X܆sü˜çWk2ÒLd-#ž†UÄüDdå(¡(Â+ËI»œ)cÍ™:ƒÚßX\ÖÁÝ2s¸€0¦,-#œ2 ¢ü2Ô}$ƒ8e¨“`ÓQnØîä;\¹s¨gøu•‡ú––Íôò‡^" Ðö0ÊQqÈ! „B¡úVkeѧœ•*›ê†V„:q"„d’Ô†¬?UYX¥ŸBlE&(y­T²Â}n¢¡²ô~̦4"š]¦’° -áœÉd=¼p\#â퀪Tnd}$VÕDËÄ -"zO“Aóóh9„zÎ…/ϤdS Ý&AóÔaJD7c—×3‚€¶² ÎZ¡X&†Ž18ð–„Czè¯é)ÎC÷û‚¡Et -¬¢ØJ`_´ëŠdñVPÐ+† -uÄ“ -¶&v‡ž¯T¤a*axŠ`>8"l#Êb2ì4Nae„†õ¶D£*ŠéÕÔçJ¸æùN¥mØ‚~d*œi fÁBÝVML+¡žðFN0@ÜFvYКt¶Jž~Ì›wà*`”Þz^+åeŽ \˜yhûƒw¡ê€ñ¬s-k@€"Àø“Ò£| Î#["æwñ,OKäÀFÀ­õôЖ„8ã! °Æ…±©n§Ü@—mãdÑG`q`-åûÐ#åqôX%°UÑùHõúNYMØN˜$K -!1óCY%æéÜÄÂàâ¡SŒÙðgŒ0Ž hÊ*;B™ ÛÆR£elgÖÛMÐ鮌5§>Ú ±báaØêŠQPY}‚~QÚ¨0€6ƙЀžn0ÎW… ’£h²P¡šüQÖ#S¼ïØÔ·-ÂŒ‹B}LÜ¡IŽ}~M‘Šp­3ʤ'˜‘…ÊW0ë±(krfÛw&ˆ©¼æ;ȉ†U¤#r"¦CýØFFc÷²ˆˆ ]‡£«R¤,X•6y°dvHJac ”_åVGódŽ]Å[&À¡&ñ³ “×LRfk Z&QuZt…oÏ’x&îE670òS³»)kª2çž%}OœJX˜2/†h:7 õúªj +Bœé$: 5ëtv†|¬[çbêOKÏ -)Sˆø@,A2fU'vaÑ·è`¥§yjé¶é©.§¼‚ê|æïÊš!]ÓÙ¢©z©]\ÕAéd •í’é±Úí4}WÙwU‰l˜êlDYŦÀf:8ƒGÓÕµ€k:=ƒpSûÙ)ÈÊÁö°˜ -ÑN•iíä™6²=¢¦µ´³\›ù¸ýgƒŠžTñGѤ*Š1…kƒŠŠ^VQ–©n ­™Š·Å¦ -6D©ÊbE¥¦RnQ®iž 7›r:coSa·HÞTÝF T®ôÂTæFW¶f]é)àNýYõFÐT•o4Ï4þ-q4ÀQQ³¥5CK’Ía´ÛÌFßKOÔnåÔ@bL…ÙQZîÃÌ-Ʀ˜Af©§fyªîÌ™ ȸ'³µl–ٔʅjv2ž­Ø§æNŒXʚ˘D³…µÜ¤ÙÌŒí4³š±¦f~«9X3Ò§kv<ã†ÍÞ×rÍf4öÚ,‡Æ‚cë›)Ò˜z3V*Ûo6ÍV<0Û§Šf5IC¨­Db¶V]ÔkÒm[1Èl»*.™õ×$*³ׂ—Ù’M>3s³Épf–n…=3_›ThnÍÞ -˜å:•DͦnÒªÙÞ[±Ölô&þ;¾JÈÅà߈Ò=è–Údnž“$•Ë‚e9¾ã1¤±HúDMÎèðME0@>e±³QÐÕgˆ³,ú&"ÒgDO¤“‰)+ò»¾ã-T­F?fòfêA•Ó Èô$3Ø`³*e g1«Òh\Êeª™)C©ö¦¨¼…*ŽÄFª¯+ꥲª* ×(ªÊ -«FËvA•^¶[nÌvUUheãUËvìÂÌŽ6óH¿?ˆ$yÝÄw„^Uh"¡î½Gà8¿áFÇĉÎçÈH@{dv„ -&Ä“– áЬHc±œÞC'éC»Uå*¢ÂŒê6'!)”'jOÞ)š]hÓ¶…GâÑkÖëñ£°o(ÂÊÖ$óݬ;ŠìV¸cèê¦ò7˜0¾Bí£ËzÑÚWYO~âkcx¹Â!{ÂÒP3u´¤ìK[÷ðê2 -!ÑÈrW¹P§_›¿ç룥ð±¼a$qÖÖ“äd9°ïºæyk~šÍoc€Þ޺ᡷ†ãÏäV[Z®ËpSÆRÐ*m`°ÌÎ.´7P€®_rtFá¢ß5½:õ±…Ð ¢³8qE -å²¼e Ý”ü¼×-ìá$Àû¸ìov®6Ø#1!˜©¥À‹^¦¯cÍÞ¯À˜KÏjà!ø1³“¹—Y=5x8ƒB ÌNÐc ɹî`†rr¡pOÐçŠuÐ9›é†NI´ùƼñˆt6¦ÅZ¡0D'‹ß,ß( 6Áý›ÑSF˜š(Dk ±`~L¹*ƒGIû8;O:-;s:s=šÍû•¬ëPN¹®UAÍš¼¡‹_p‹nPAB-›fØJ·¼`4‹2~ -ŽT8;F£slË+ŽÄ{µù -y¡#sN‰Ïz”¿9ØyÄ'Ë]úÇ«ÒÖˆÀ š/öSöïn|³ÿËïñû{íva—üµöAÏìÄQ=ˆÒ¸á"§š8P'°ËK¢Å7ðØV„dÔ¾"ë4;‹tàÐ1TjYXr9¸‡zÄkEõÅž¤7ä>†€`€ÉB7‚“Ù5ŠR ‚rFQÈ~ 3¡ë< Àx£ÆÐp´c~(ÉŠ®×øŒÄÑt|Ä­0z„@}"¾<Á*ŒxªÊKá |+ÌŽf⸠Öž˜`iP#Ÿ'Ix.&&§“ƒ˜þX‚î¡40ñy‰ØšDò“¡BÔ_Ç®G4o =‚—Ûb޶t[€è¾¨Ïbb·š8íÖÄA_ÙHPÝ^ÃêPNGÖunõ -¦ÙŽ8W)‰ªüUþÎóy$–g€à4B§"!!¸†æ;á6ðÜ|¨ï‚}¦acFhšÄc”)8ØÜ¦‡gà¾6e”ñ©3à!h{‘ã¹"BZí¿%Xy$ÊÁJEò« V²ƒ‹ÐÀi$ŸSN]×%öŒ’HNè<™Óløûn³ ¡Œ=iAb'‘©»E†AB !v“ñslU˜„Y›:XC§ìù>ˆjdš½”ÀóaÐ|ç 70߇EH%Âzû¨žº¬ -Æ$R4çW\&z. a`é:ñšé'~¤²ÙABÂŒËf÷ÔêºNßÓÆr—ÎÚe®:Ï º|ÑNèì /¦‘g[¿%Ô}æne5à—Ç~¶b„جa³´ðÉbe©íÂìØ\,»$.ኵ []5Š¢¨ŒDü ›ˆË#]¶Då¹1#ƒ˜O›?˜™èúê=‰!нùÃÚ‚€Ùa¿@[2ºi`Y[—¤emy`QšX5¢ÕA§*QLc7¦Ê&);_.Tè(ƒ)ÍžªÐV¦§Y^A!·}Wq[;¶pv^š.K·¢:zy»æ'´¨'Nò_ 1â_}øîw—ï//î.ßgÍqÔTðÇ”y•6«²ëˆXPj&ÉëC*Á°ˆ*6º †E·˜>5$”¿·`Xú?Û“š`Xð¢äÓ`XDGÓí¾Ãò`‘•úu0,!AÑ—X0¬I|É4Ö#¾y -‹©$V>j(¬OILq ëaSàåiBa=l(ì.¤¡°`oãÈÁ9±“šHXbú³Z#aq# þ®Ä½ú¤ˆ&ïбY#aqk6ðäHXÿQžn -ëSu …åÐhÆ4öÉõœn|,ïñ°}…%€x%Q¤)G‘‚àOæ'š^Ž…”ñIÞw¯ha…³0 ‰>c5!"— ç!Á°.ÃÆå)x¾ûAƒaG †}üø "s†,÷ÿ ÖçÉѰOKioÁ]uJ 8;ˆ«­æ´ðp0%kÎiÁÞ -Œgª”ð;DšÓ® ŒÁ,§ÐOiž/G–IJê$ñ”°´;@êô˜67‰½àq2Òr`‚"UæfY€&޳0ôì”ß0¿>ŽJ­O€ud½R¸‚@{ß$ž˜F ìRÊ¢þlJzøÙÃŒ>ÑÎ9ŽÏTŒmv’52ç½8ú·Ô^]ÉÞäÀÙp‚%¥ªÚÑÒ^í5 - B2g$œöŒÙ´–ÒÃO²ä˜Àr0²:ú»a*´×xØ4B¨¸„4ôˆ÷h˜D£c—AŸ?J–/á†rœÂŒiòQôÆ\Áã»dìW—dq[. g2°1sXˆÉÆîÁ²Å¨¥e ]’UTöœ ^XÙK0§Ðs4L(-¬%eÚ”Ã?2# 6W4 - ¿«|†²Åð±€Ö)³ÍcŽ–kxkâeydË6ÑËkZ²‰(ǤaäS'.©–jb{£%¦#¦+ø™ÔÐGñ×w½¨­Tô`Øš%™ ´Æo§BÌÙºdÙö¢„Ý5¢Ð0ÈÒ¨À„ÐJˆe*Q¡wóäzMÉHTg*Ò¿ÇgÉi2¨5¤‚ ½Š@¢Dm\Ù¡fao:uyÇÓc(i%´æY%dLK*áÎÄ{,;à‡l±™e”@l ›³C?cå”ýýá¥Ãºà&›Dß«µR“I@‘ä6—„S¶ŒÀ¼(P‘Æ+t­Ð¾× :€%Ðç4ù#l:ha³n²Gä+¹#ôÍ5´Ã¨Í‘—±äÈ[gi#òf´A'yÇ,6ŶTÃWÊÖ7q."“a¨„ÌdH›…Ödx´X‹ÒÉPÝóØU9æGF‰ -ʨʧ̂ŒôZR>ªm°’œæÒ”O»=e”0K‘‡ÅP)f) "2þ™å‡ÈXÊ‚¶iX—âº6úK¢‰)´0²‚X›x3E¿—–ѳE®)o#ÜÓ[$œÑ‹–+D£Žª3ÚbÁwF~,@ÏÈTÉgäÌBþŒâiT Æ&rÐè§…‰µ0D#Åm¼¢‘ìêÂLÕ-ø±ê©£$«îN©\DÕ‘™64Ó˜‹á4¾ÅÂ5*,ÛOUt•-WMر?r!ù »Iš‘=;ȱòp@ËÑó9žïíùø7÷`§í³ £Ë¹­4Šß36›GßW×å¬e,ÍPÚ¤(³³ í 4_ÁÑ›ÖK"¾+9ùR›þ¡ôæ¤ …C–´öw›ýáø²œó±Èzê< ¥[6æç4©C¼ÉþZ5Œùeó…yöe¬ÙK¾ž/Ì Løjˆ@ê;‰×tcNRh7 ;7Û™„Eª|ph‡ïvIýÐKÞ‚6€Å®Ò˜ÇRŠèãf©Gò¬´×æ­€<»(Ðå¯?X¯æk°ÐŒÖÑ$~X¸LÖ¿Œ“÷£NÃ`9YCµ¯Bõ ÌÕY*8ÑËô]l ÙË•Ý?ÙW8Þ)+ dîu¿9¸‚^°g¢‰ÕWç˜iИ~Þ¬¹Îqÿ`½œŸ§‚ì”u¾êT€€ ÷b°f>ggY Ê\4}n•3¾«ƒ¡qU33‡æ#§!ʑՅèÕØàe8¦º.è[ÚXQ\[æ ™ÂéÜ\Nn“‡°É™W›—„dÁ‰Ãm18œ"¦j½"Â{Çq¾°Ð‚ûìË&;5[iò!"‡£Åj޲º*‡ô–‘4ì·<²‰.sÓ@â2 6.ïÙD%—Ñðå²dÎâ>um›Xè² 4]6J«Ë†6ØeçË… -e0£ÙS3°Ùì í nÛWUø¶%±#`Ëfg¥]_;T¶åØéfÍgþŠØ%ÛHêEþ™%‘0â©J Ã)PQËÈÀÆ¢}-ƒÌàP>Td å”î–A†IoÉZ dz8”ú*Lré0K ÓOÍ35ƒ ,•’L3È 1?§¿³ 2)ÖÕ–,ƒL²[5ƒ (-'O° 2=L*œ\2È€H÷°‹Z„þpz*Ë ƒˆëªµfU‡sZ -ð -Rß@sÈÀHëm–C¦q¬rȰ›u´«ÛB’>3‡ GöúN"{i ¢êùç)dŽ2È,ç^ér9”& ×WP½þéúÕ«8Ä„(¹8ÌóÇÌÓÇœxºYîïj.ª¬É½q>¬’³,à!DIY"þ:š.<€ƒãúšR·b(Í<¸š—Üh—…Q¨²e1\¦Ý•lç8n°r¸š ~Dš8=ø¸±äW¨â3Y–CMÄ+Ýù©Ôáê/jIÝÌ(I3ôçÜï¡Cad½×ôð¡ËÀ©iäý”‹cÉ#5Ý<º>5!}èŽ×ÖÌõ¦>dòHÍp·r#/d΂ žCÉ–`<ж²šV?ÀÞËI¶5õ>I´Ä H·æèÈ¡$–oÍÉüyÛ¹„ˆ&üÇC§½Ïu–ÖB¹Së„Ôë¹Æ6ÁZ­¦‘Kµ¯U \†ðRÕ $— ƒhíƒVªl§Ièu0ÔY!…à³—ƒU\°Y\-ÍP]˜Ë7Ø>á—\z`Ê„ý4ßjÝ2r ¶~W=¹ºD>é­ |®Bˆ'ɨ/õ+ÿtcÕÊJ«aÝnäbå1˜˜ ¾µ–ÑìL:iÖÛìÉÂU sMŽÀF7Äkñ¼>h|‹ùÍ œõ]ë€×i O.–ˆ›ž•ì(ýíU Á­Ó”\[µÛO¹ôŸÕ2 H‰ÁU4´è zxäZ%tÈk4¤R¹;À¥ †X¡héœseq )8kɹd‹gÛ(RãkmôŒ–8¥AÞj®ãl…bàËÒ#e¼”è¤Ãr”oÕÊ3#,Lˆw±ê4#üaP§³”ñ…yϘ@ËÝp*4  +‰ƒ4e¨Þeµsø¥‚½ªÙáð—XJycÅ™Ài¹Ð1#•VÕ—^¬ò?€#–´D5Ølµ–è Ût­Ü!í| µ.HBÙ+`àÙÈ¥D´ÈQ@±1®Ï®Õ€?‡ê©R4 P¼¸¹¨Ò)¦•^â$VPZQøÞ‘8hh‹H>޳a·ÈA¦“¾¨bAtOœR!#ÊëÆ -£FâË#õâµåÕJ‹c)»€*†Ä^>Øâ*¶„ |•"DÖ¥â•tDðJ™t‰á¸âB¦B±ó’Œ¤+Vfò2¹Rº¨ç[•öaF®Ô£DÓ¨2†+5ìdÏ„8S܈ȜČ„’æ .1öT¥áüb¬ïU:Ù| -C`=¯•43çP.ÌÌ–„¯KG/І‰`9‘¶r3¥GÙžÈ)«UþP/<£òP‘#=‘+ÃzøTŽÓŒÙpâecÜ"¶Q“ÆávùD#!«Îé¡Á§+»ˆžÄ¥”¯Œˆz€½s« 3 &TÖP5ãÄÁ˜Ùó¶3vK¹Þˆkæz•=Žœjš@¯-.¡`™Aym: ’›Å˜òˆXäÉ9sïèæcn~L1cb®·à-–bÊŽ°&U ‡“§˜ø¶mä[³œa e”§²L„ –YWzÂÅqp[è0ô„ÏS*bãb~Q´bSTU"‹°ª2ÎP©-ö1[™U¼ãwÒ“¥B`„•uPTNÄjc‹@‰‘FŒ[É’'.ô# K¥S~@Ð*çcy0KÍcò.0¡»Tª‹Gøäó©ðÌd¶©XÊÆ‰c¯H“Äc˜Äòc"{L^2œϲ}DŠJ^]•ÿ#>pÊUDd9Ceýg…BD°LœŠ­/Æ©¾M9•«RdùES>Ϊ爽“È•Ò3814µ -›‰iW"²€ðÎX‰<ĺ!9J~jÖר…¦Ó±ÁJOóÔÒmÓSMRyU9µoÊz)[S\銩~«]ج³õÏZ2Û!S¦µ[iZ·²çª™3¸0Þ€²®Ï Íô¦8lÁÖ4Œߦ…´3••íQ1¦)S{ê±3õh}8M‹jgØ4­vÎM%Û"ÓÝæ0ý®!S·XÈ4Ɔ®L«l(ÍÔÏ-î3=µ!IUe5•wnM3nXٴ熹MÍÞ¢xÓÇ-P•½‘ Sí]Ù66#@f,0JÕV7’¦†%zfŸh‰£2ŒŠš±Ã(­YEZ’lÖ£Ýfa1ú^zF t+Ç fc*ÌüÓrf'26ÅlI = ËSugÖÈ,XÆ=™©«e³Ì&V.T»™ñlÅÀÖ0wb†3ÐìtÆ&šA¯å'ÍògŒg±*sjVƉ5k£q»f‘4ŽØL—-çl6Nc±Íjlx1˜6üºV±7ã«ñþf¥m…3çš4a_8Ô0ÜÊ%f@Îâ‹Z˜M¾1Ct+™ÅÚ$&³j›TeæïVü2;¹ÉifIWQÎ,î­Èg–y“ Ízoò£™ù[A³\˜Rs0™Õ< ZáÖ\L.n -*'†F ¶2Ó&y[%j“έbu+Æ[ek“÷­úµé¬Lv«<°zÚ¦e°‚Û¦‰°Êܦ²ÈïšKx›nÃj}«¤-/nº«nú«/Þ*^Ê…ª¡)ƒ©§ý´šãð‹a0΢‘p]/UaCÌ…5açãü°æs‚ôHDƒŸDøÈl2ý@:€~ -pGŠ ‡ä²I°SÕÊRÖyÉéã‡üÕqJrÜZØò¡…r‡? ËÊ™ƒs œ?ȃU‹×¹ì]l€==Ýh¼›“tOpÛÉ%‹=…¤Ãqê²Ë Tlz#B=A‹ìÛàq93œ_BÉò1ÜMF ?"’µ«X\Ž"ÁÝäÅ-™aïf“ˆõäg¢ )»@ [ïkšŽS‡:c`Y —ò–Hª>ñ™áä]©s¢²f¯ 7¬Ž a[@ïójv*ðU‡‡P„AcÕra\²“ð Jv)K©KPe¨.Ì`Ä_¢F'cÿ{ïÖ{MrÝçÝðw˜K;À8ÝU}ÌõƱ•Ј ‰… ˜W´ÌÄä4EAß>ûù­CÕÚ½‡qd+1¯fþëíîÝǪUëð{ÞÜð™”g\E ¾§ã åª0ÑX²ÌXb…]é•Ì,y¨Ì×”Á©&ðDKñðrn–—imípŽØn‰ëŒ#9Cûý],pœZ¹Çé¹ûí:ñ=nH`Àóž.üíÞW|<„`çƒJFy]OžÞ_–Cm„àÍô«žÒÊuˆ(TŒä `®î¯¼Ô—u$•eÜ$Uæ};›eŒÇ & tçtƒõ 'Œgu5jƒŸ©JÜLmÚ³Ïíâ퇊×èí7ã}'ï一xyë•æ[ž·$?„¼mã‹™ïïø´âALŸŸ?¬Çg:¢ÿ€-ò}5õ¡¶D´„bÕÃ!~ (6e»&ùB"Dn&t#±ëÄù`êT„%ewy>¦¹Æê°<22#Ü¥,EÏݲ»òÌ!•Ø»MÄ®Š¿Ì?*¤·„$Èò wïÙ””„¯ž˜,T§–‰ _×Õ¥aŸ?I=5O¬v2t¦7±Y™•_êê»öÅ{t‰®i‹ IN&ò¦¼ íJý§ÌkÁC_/¾›²|&FÉj£ŸŽl'‹Óã¤ÆÙtsÙð°vûB~•RÐE5åÓý]–èÆxRëÙ‹“¬ñÞJc¼ªŒqVr¿ÿ,q^oÌæhÙß½3~þ}êã_ À?ù{ü¾°CÈ=ö?vÆÿƒtÆ“,4YÅ2&n3)Ò“nçþŒ1 hôq\ïckb1éì¡ÐƒA#K”AI ¨s›%`bÄå t¹4ïÛ ¤éS Œ”.'NA zýj”ØpYiPbV”sJ¬mÀ(ƒÒí®1(ÝŽ·ƒ’bÇÇõ6()¼h'ãƒéQ¡'bLR¢Q‘eLÚ–ÔA¶1‰C>ǘô|ªÀÀ4¼}ÔŽÃÛ—¾} L>ë.At°‰oã’ù~׿,÷ï;…]ßv²Õ¼#— qù{¿ŒK¿×ïÛ~àqé7ßåÿꆥ—!Q¼¦ˆñía!‡’¶Bù@Vð„þ„"ç›U< ¨¦³#¹YTanêõ»MLgS|"Â1VxõzòK÷MBÎT1jZ¿S&ü 3§J8Ø¡šEEi¡ô¤©¹ÒJݨ´Øºu;Ÿ*ë¸ÿ'IíÈ=W“Y¬® "ëK|½ô„x8W»Cèmgh¤Ö?Õ°Á³&áÅpíÛÍ­Œ®kRÐ Ñ(¨‘¬ v•ÌqC:ž¨”‘H³¹!ƒBR9FÌéV n ©Èg¬TýNÒÎVMMy¶çabè’ÚTýhªÀ¯ã¯«JIß_„?8*ômUwjDÍøómÒAâ«§ÆóuvßZŒey,Yð}NžÚMFð¤­óJÚˆ¶7 å×ß®xO6|8Ä~³æjoB4ŠÛjcŠÂC¯wå[u8¬çç€#E”Å×}Ñïüû'¯ÔkI‡ -x•×"ôöµ¾÷Nÿÿ*Rô‡( Ѽ°€"f}ÓÙi+CôÜUìñz¬÷¥tP4àè•;‰ÜHº4>fzFm×׆V¬ašÞ)¶]Ö©j‚TšgуŸ!Û¦Sr@µÖß ë›‰ 1†­¼{üXC2þyCdHÊú·×à)D‰)µ_wHxx;,â*%‡ å+ª *`jÏß—·ÿóÀp÷Ô^MI0‡·‘³ûÙ1*Ñ«ø%nµ h,Œ¥»ÇRͱ4€1×$)ð²MPOãjóv¾vUõS×srÝZ¢"#°¥Ûf—Ž8 W´®™C=”p3eO©ó»½Ä€¥k.m ¿Iç(ÒµôG6ýËæÕ>ÍeÙs½lÁd‘ì6[º²Ö•Ô1‘=N-¥÷TÀgŽ!îE~`M‡ÌhW†³[ýÉói~)OZUžuòf¶1¸MLÞT\ȯÍÉ[5R*“7{ˆú““·­õ¸ÏÝÈÚq?Ë̾€ÊræF i½]G3·Žt·­ÎÜL\ ¹§˜¹‘VèÖÈí37ÊJ*Ó®37'b݈6u"¿Ä%‹©›-ìþ”©M‡˜VNÝèþ¼,¦î¶íVÅT§nä_þ4u³«=(Ÿ©MËŒÄ}o”­4]ø4}«‚\7(§ohœ*Ç‰é› Fw¬NßÄ‘¤CÓ7ÝâòäôMÎ5Ùæé›g`¹˜¾YWH¨ fïçó³wÆŽò&Ôˆ òhˆˆ Rú¤â2"(í†áPFDW€¶ *q@wHUXˆˆŒªèéR±Obò#ho\ú¿DEãjç:âüÄ~œÛˆ’v:÷¨˜Êx 'uñ,3È-¹%ñ@¯ÞšäýìRˆx J«ÅÎx ?¿KFõ<ȯZ3ÇMLb™âOaiIôx 6Ô〠g§Gø|¨p@ð·ÏÂûö=$øíÇ¥‡ Íê9&HË·ýºQÍA¹Ç!ÔîyÐK#Ýë÷ à·oQÁï;Úœ^ÓéŸü}NÁækÖxü×3 ÿ“çÍE'THÕ,ÕÅóz9ý<Ï0ú6%rñeÃuñ¬ ïÞÆâYSÐ0Ï0UÙXÏð2¬:+Ïëe[];C:SÕÓã*>,¡ó*Ó_—ΤKTešKgKŽÈ×0X¹VuéÌ^sé¬Ã³ŒÈµóÚ’Ê»H”gµûS{lH7 gÈjêÌâÁÜp¹]áG=Õ$®h”_no×M½Vãù®Í`>+iA«1˜3ob Z %…6 U5â;º_ÖT²¡>çÕœC@¹j;çJ6V9e4¸ 0t!˜[ÜZÜ+OA µ$éJ¢þö|‡'o¨‘ yCÛÛªKßüm¿n©rÙBœâÃJ¼ßÒ&è.ÐØ¼úq ”a y| /ËÒ„ÐÜN{Û[jä Ð£Sõ1!‰Oª{#r ..…êøUS“÷)0ãeqw[Ü%ïé»n¥¦8…¾ô¤‘òt‘ÖÊÓ˜R­¾’Ü,á¬áÈ“Î÷ën,ÕeI…låÄwuQÚÀDÉ{hÉ<÷ap§ºû“ÎÍv»rnˆ:,ÒºP.ð×øÜìK~Ób2ò8ú•V¨s]Ç-z ^Æ‘–ËJ—·i²"UíÖñ¡ÞK2ÐDê˜ÖþÂ6<¬åy=CþEmêš Oãb±ºrr3<åø *t s|Æ–¡H”ÕÓ—$,VTlÇØÛ³B|Ø@S½b“œ‘˜û*ui&¼#K¯1¯RPÜ(u\«Ê±ÛZÆaª¨˜h£¢?€„Ûµ{¨EmQOõ:ÆÆŒÀÇmLéË¢™þØùçÃHê6X,^.BOkÞdƒš¼ìÁäP»¶ø9Gªt×9€­²-µaýÙyµ¹:V#4O¦¥Få‚ú[¿z[3›F„Í–4»è%<ŸL‘^¯áU ¥Z²ø$ÇòÙ°~2/…|*É|– 3ëm­Ï6£9‘8d>@¿ŽÅõÙUä!vU½.Îô‹¾ý±¬l¶§õîgUɹx>]ëˆñ3>*ö®´,~ ÿc?Šëy Ê,)4ÐLC Áï‘[SHýuåúú»[xx¦võÖxµÝ0±Ý~›DÅ8TZêO¦9OÐôvM'OW™•y;6úôÅ-Ûo‡ÏÕ[‹>¢½äñ 6_ôŒç$±Äåñ@÷œøxòtŒ¡oº_Ûã-:-b@Í×XÊ6¿‘”Ù@À«oîz9[5^q9ª6ªøg`qü½½}/R—eŠïŠ(Œ*LóÛ#–¡†¬ú‘êTtÓãk–<¥¸ÌñÅsô“FŽ:4ÐÊz·óCb» -Îç0ƒJ³B:u”jd¯å~óµÔ!D˜vlH»¡ÞžpÛ™(ÃTÝ»ítŽKúdKvñÜÃW¤2û]J¾8-­Ãù̺ÞôOµSYHudûm=(Ããå·tKÂ+f´~ZuŸ (¤›~¶ê²•Ý _œPsXuÚ{¸CéݳæÁ3W,”•.+>#ýD®(ÈXZX!V })–àuyBÚêŽ\Æ(GHÈ1—:|Í -W×5_óº+kåk'e>)sÌõ•  ,ÊBŒQŽ/×$ôƒûÐÑ|ö·…ŸT½5÷Ç -QÊá¼Û¹Š$p°¥~^nŽ c]Êé_JåÆÚ•±R9ߺÈUR™ÈB®†•x‘h{¬˜ÕŸ«7+–Ö~ÂÝ4„ÃË5Ímr"Ö°­¦¤®e?IÚÝ%Ž Œ*3 gd^«k=Þ -Öª|ë¼½úO©Ò8Ç»«­Ø¼À®¼øZuß»%ŠdýÎyávÚD§Ÿñ„a}"]+Ñÿ_Ûo[™û2½ÿ&›™Dé‚f¯±ÕÔm—ñ=W*²ád=;Øî ¹ãW_s 2ú_ëéAb:ôêÄu¨¤ïöp׸`¸KªË›BòEÌŽ¼{üj‹Ãq›W©‚vÑÇó™Q^·lùÆÃ=]º¼ûf Éñ¦YÀùJÒ-È×î5o#ßÏ[]÷˜UíEV“þvO_2gëÓWq"ã¿:6¼\Ð2?1´ì%GŸ"Éž`ßüd9q%˜ò›–6®i~û'ìð Ç ¼Â -9¼fÇGɇ³Іš¤ß¬PP"ím÷:9†Ø;Ëb0d¢ØHæ€ÉDªw0V+“`c¦çrÛÌsjX·e çªÙ'‡}JEúm 5›¨`AÃ?ç ¦ãüù®1ٜօ3æ#DÎY* —nLn‡+¼çôGÙÉtó$™{:¯9¡¢xY3͹4¬)û•“³ó7s¿ºŽäDÖû~÷ðÒâ΄»Ó†áuÐg-I§a!ÃÖî7?„áà–<|:5ÃÞKÍ#JºI•^ž¥¥Ò=H‹r§G{s¹ø–”`M÷MÙt‰U…›ÇK¢R‹t'lõ³n.>cW»¿~î\êE̶åôB‰_ËSN?•RCú³]Éüu·É*ÁÔW³uxÈìªwå/lCw¥_ë+Áp·ùù¶\Ã+Ç JvúvR””ð‰§‹Ï'iŸI¬¬*+ïbÑ ®û®/̽¹&ƒ Ûù"âû9±|)‰€œ2aS•á>,«3ZærÖËE3“‘óhf;Æ\Y‘:)gú$gḭ̈ä ?r3Åæô2­“~E檒‰¢ðTF2éi)nÏdvÿ(2XéBE¢ëÍÕŠ„Øpµ2g–~[&תƒ—Y¸ðG¦ÎÅ‘Ñ+NåÈü¥÷™ÙÁpP3‹XÙ‘n<­bÑ.Ú]áÌZV—y¤7÷)Ðð¿G®töÓGN5üù‘w Ÿ?ó³uq‰Ü\Ed²7W™.+’ÌçÊ%3̱¶‰Dt]„u¬•FR;ÖS#û]^#I+´L¤ç".3îuµ—©ù\Žô}¬Gž¿,1dž±E±^Õea;Êb¢&-^ÚtrCºbqØòy3lˆâñAú4oÙøÕò:ŽÓË Ç%ø«ý¼Öç›σŒ¤üëŸW3ŠË÷<6z2¦ðí2ªW泞›ù#™Ž–øÉ¯åe$å©Ñ,ŸøÊjHÕ8:Rÿ-35ñíÆUű×9Þ JõoŠëPñkän¦Y® )#"ßÒQ·|Ú’¡|ÁÖÍïnú}ÓžðPùK½Ó¿ëÔ#]+‹*GêšV7²éXì½'ÅÚ½§KÕç~â\€tIüÏ'†¸¼øæ/ÒIF÷Ú’ÇÑÂnJ˜7«„W»önyd“ç¢æøLˆ ‹DƒDSÁ¯†@^‡®ñ×Éíã™ñÂngfL™G›wÛÙf›ƒªóH¨µ T]%!fªqndð£NgOÇ¿U¹Ê=úÙóvÈûÐOÄ-;¼ØþíÞî^Í=ÂîÀãAár5z{¢»«åŒG)F+Šx;ò4ê[ôzï®ûš_7‰Ó0BLJ¡ª´dÈðmÃ<Øæd¡ñ« ¨IpgǨª¬l^‘QyóRËä?îIg᯻÷ ¡ÊÅÛ/ì }‰Äq2”.{ŒÉÖËU¤w­<¹üøòò+­WšŸsÞ’üäã®åÐPïnŽ!ùrœÉG•R}¦9råÃÏÁ-_<ú&åp¯ÜsH}޽zÿÁ•{_ï÷Pòdµª†­lŒ2íTîý½”{ ¶ÉÚµ‘m“Ùµ‘m“Ùµ1Ú&K×F¶Mf×F¶Mf×F¶MÖ®l›Ì®l›,]Ù5]Ï«øÐ4Y»6²i2»6²i2»6²i²¶ndÓd¶nDÓdvnd×díܰ®ÉlÛÈ®ÉìÇÈ®ÉÚ·‘]“Ó†¡Ù5Y7²k27²k27²k²6ndÛäh܈¶ÉѸ}“µq#Ú&³q#Û&³q#Û&kãF¶MfãF´MF߯ó~)Ûtj1„ñ°C°hunÎ,"Djì5,¢>R«t_¼»`Ñ*9'JJ°ˆ·ÔPO!X´F`ðK¬]%X´’78‹(zÒµ¤^ÑrXQ¦¯ç]°hiæ‹§`Ñzy^ -qp}f¾§ Q§4$‹8ÖqMŠE‹ÏßÅ"i;UOÅ":}Ô'’ŠEÙŒ/>‹VGÜÅ¢5 “)Yß54‹øNÈç Í"¤¾¥é”¢EÐåÆ §hSÿ}ϲE)µ½}ó|¾ŒÑø’-*Z:Ô¬ßŬSñç]³èfæ;lü|—,ú¤ô,êüãBÙ©ä0&Í¢IÒúÓÏK±èõ°^¿Yùä»dÑoü},z9r¯æ<^?÷ ùáÿãi¶üƒ5†8G¯†FKŒWC£%Æ«Ôh©ãUj´äx-9\¹FK¬R£%«Ôh‰ÁjH´”Á*5Zb°J–¬R£¥V©Ñ’£ÕPiñÑjˆ´”Ñjˆ´Äh5DZb´"-e´"-1Z ‘–›†JK­†LKŒVC¦%F«¡ÓRF«¡Ó£ÕPj‰Ñêù2üÁ£Õï#½h°:&‘”w•–žƒÕk[eZÔÜg)Ë$ôò&ÒBTìÛ×óï–}-"-« VÛ§_—B‹©»1T½~ëO~Ÿ_}–c±ªŸáÿ=‡*–«E*f-ŠPÌZ¡˜ý¦EŠÙ£ZÄKõRŠ"‹XŠEèe)ŠÐËR¡—ý&EzÙCŠ"ô²‡Eèe¿IQ„^ö¢ØRs,¤(B/ûMŠ"ô²‡EèeO!x/=¬R©—R©—Z©—]µ(R/;µ(R0;µ(Êóüšß ˜ý[uŸ2ß~Rp’Óo:®Y-¥k*r´`ù ‡x­„àUžÆ«}Íþö]5ûûN¡èPü¾§ Cü°:ÿßÑrüƒ„(þ>¼ -¥–û|Ï18SŽ•´itPQùjoIed“׎SÌÐêÕYFHB™#E•»kÑWdb!S>ظ]¹a% ºÚ°T†¦pã¾M=‹ËmÉH ÇøžQ…¾{rŠqBŸ.ÌË3ùBŠò}\婼Cnwø…Æ¡è9S^ýM '÷>œ@² -Èûù“GÚïëý:q”6ªÛ ÁÑQ iÞ´¨3·±ÞÝ×D¤ŽñÊ)ÌOŠ’\RiÓ†ùw“„²ƒ1ߨÐtüªÉåüagGÌT‚yhC©”-/U -Ô=/5n qU55åmÛ( uúšÝ_ÄúI°Œû+‘“ŽÖµGEœh?F¢¯)\såk>·Ë×#•ïQýÍ|áòäòÌ È—·^i¾åyKòKÈÛ6>™ùöÆ—•Oa||ñ¤_éˆÞ(ÊûNê =ÊV>ä9X0ë³fQ¢rŒSÕœ·úUc-%D.†ž,sçM/Ú,;ÕŽ¬SÔ™¸¾Þ7+ÎÔý&̲9áDy¦ìå]UÏ«&ÜkÃÝ.M-›¬p6ë#˜t3Ç… &c×k÷Ÿ¸na6[@áÑâš]Â|c¾ëeÏ…[r¬jÅ|ùÐMõgÛÄÙ¦'Øv=ˆŠ±Åûg.Ë$7[Ì©æŒX,¢GœÌkº&ô䢪:]sGÁaViK˾v—ÉdCÆ'Ú·5"WÏ3|>Õ?Àùäñ×YYþhN¼é­W޽æËYÁHïá´óR“,$áFLCéÀ×¾y4y-h@gJ³Jõ´ª\ÉÚ¬EŸ€¬ºRdqlÆb—ŠÊîâtmUÊ’¬§Õ^®«QsO“Á§acU$B#£–oÔ´5º0Ñïlhk–_eu³°á"­ð„ÂFò°\¤àÐ*g޲uÕÄ t»l¦/Édt6iq[ìžN·¾ŠË€­ö›i•'@åÑæs#YŠpÖ¢ë^£²šðÃæ‰Î×àJ H6k÷ö…®Æ`„]νݸµšv6GÜ÷[ÒGݪ/ÕXÖ ›²èð"Ö…9ÁÎv <O]Ê9ç©Z>~rWk1íÇR%ÜÿšËc(öZ2—Úó5+ Ò5ûJí²r4Îb-]Ç(n (´xqÌšvÔìÊYS“º%]OtÕÌ·ØòtY*±®†ÆÁ6“°"ø°XôùZâIdžôö_Þ»}¬G›,àS('þ‘›—X8™bï6YŽÓ¦Xu©ýžn“ðeý²Šåõö΃×0%l]x9 «Úo†uÅ#Ù/e­S™—ý°j++í§²žJü¼»vÓW^¥³Z‰u,ª£f´Tyš -“S~³Ñ×VjH ÝÑ›ñz_£‡=SïOüzSüÑ£æ'šªÕ\X¸u1⿈{iM|÷m-ë:™m1Ý·ÞVK*5î‘} \§—©yI¯š?Ãù>+²æR((§Ï׫¹ô{¦ØÑð:¯.ÓS6î–±ÅcVOKýÓœ^֛޽r#«ÇÑ\46=“×IšüKqsÒœþÚ;ÃMŸ‰f@5Vç -Š´Ò¹aßN=<5Ú§¼¼wòèÚæÌ•týhSÒÓK÷ZAÝïêGòuI‘&Îæõ"Ã)¥ÇPš¼Õ{]I}¸¹¸[ºöp„_ï´7jÏóåÍÉáV#ªk²Ûîy¯‹+¡T=¼žðäon|߇¯O*]ýúeMÜV‡µÃ~Œ~AV„׬Ea^„ Ì¦¾³X¬¼¦AK`ÅzFEÎímÙs@éå×bu„¾Êíé!- 40žoˬÓ¹£Ú•ªm[®QM´KÄw^ÔÞ›k¿3„˜cuxíò€ê"2·²¥&#’òm±¥ØF’eÉŠú …?¹´E LÏ6V¿ 6@Še²=µe0)—ó´³Ü,¿×˜bY•òÚÑ:)Q/}Àhuq¯ oVŒ¬Bܸ½¼“}‰§:W/v§ ú0ôˆÞe¦Ö³Ù+Æ9ªðÜ.î(ón·W,…#í¯ÅÛq-@4ØD•|%!}ÁVÚqnp¹¸K -!ó—^_ŶúJ ÏçõŠkêÏÓ¾¼RC뀸¸›-uRqõjd\§›$þÏšú—v+AQ3pŽ–þ=cz<Õ ò¬¿Æ{C«9½´$¾òÁ^›µÎŒàÚ§Xe¾(j¯ß‹W‰~é•o¼qô°ŽD¼˜´§¾¼3_oöC¶Ìßnº}5r•·›võv¼îx|$ªÉlÓ·¤žù¬®öï®×ûõôâ{¤ãZgá_ít¨íã½Ñ·­¶zZýãë§àõºÍ™ÐÁ¯w„îu+c(¡Œ­­çëŽû`Cg<çê#Ò¦ £^$Æ-¬÷kÂŒ:J½\1þ©Ñu‹¦œ&¥#€vTŒ£Ü8A¾Çxûz%F.?Æe^ƒ“Éî Åu^ÂÞ7†÷;šñcÐãeΉ‚Ör‰vŽ….ÙTSo´íêÓ÷ý:Žiã,ts2Ò„·ÉåÑ<æ“"ªû®ÉÞ'Ï{Êšs’Õe­.Ê®‰x)&oÌØiù“§¦öiCŸþ¹%ê ˜,,–·ãÍO0¾>ÇdpßdZ=ßpbxÃͧ Gg“OµôÉ‚û¾^÷›G¤²jzg¹¢òY=êé„ñªôÃo¯{k|4í5p~“–ÑCwüè ßRk0ÜCU\¿œóð©Ö¸ž~&­™ÇšÎP8¤”sœ)ÎÁ3ãÌó›áèˆ3dcuƶ똞Aðú3Pž“CFÔsùRBïcº‰}ÎK¿Ž ²‚ùc‹€Lq™¨3afrÂÌ,ØT#ñ6ûFÚbLÓžÙyê„Öt "•2œ‡È¹¼y‘œîH$p>Xªk3ÌáEÚhøI‘_zs¨"56ŒdÕðÎ2«UݸH w/RdÃ%Œ\Ú›ïI·ádfb.ÑÌàUÕ3}éÙf2px¿ž4¬Nr&Ó™ÎdºÛ#SYÜòÌh¦ÿžYÏtñ3=Z—™GÍ%C¦ZcQ‘)ÙºöÈÜ­¯P2»›K˜Ì×¥N¦‹sIå\4eæ¹.®2Ek°LbÇ*-“Ýu-—Iñ\óeâ<—…™a¯ËDZ¡/2#UŸ«ÐLé×ÕjæþsU;êbá; - ÊunSÜŠ•´ÎB3S,¶5ëf”5yS…ñÞÆÚ¢;+›Žå=Íø¦ T¢Ræï0¢š´R€C¯‰4EÜ!w…"¾É'«¶>ä‘I0®!§’ïÊ´a^QìíÇ;€{©²¯òðñk­¾%Ìø{Ö“"•¹n©öCRj< ‘JªS¸Ë¯Ë}¢7Ü¢Ù›­æŽÍ¸·ebQ#¸…£äa?½{ˆœ«ÞnÑT§…8ß26ãTHêÊaÝO/?ÇñÖòNáfø5e™|×ÍRvÊ?k½Û­5–¬Ê"IÞ=ÇsÌ -±ž †ÈkXçd~´ÒNÜó‰W®¾T[]^µþêæ0Æ89„U •§//êºß/“…òuy?úaäãž¡A"1ÑzsÑ=ß§gÐ ûôœ“êÒÞhÊr<÷×jñVV¾yõBpÅpOñ²AÀP’7_H94j‡pKß6̃QŽ®ÀøUFÍ-³·yz;/ƒ`ÚéàÛÍ+-“û¸%*Ä&‘ê7¥óMD#ï­!–9΄չBÜù =T F½DÇná¿Dþ¶‘U68ßHZå”ÊÌWW|…=óññŽ ã;˦þj~WqvñååùÇúv¡ù)çÉÏ=ïZŽ õöæ’Ï!™|R1Õ'šcV<ùÖòåȳ¨oQ”ùº=Ó÷AW¯î?¸ÚÎÑ'µ×”‡»ˆÐkR@ð÷u’TÛùϨ¶ÃÖèGD÷˜!Ì' @¼ŠWT½øZmf¶J"hˆ×š…~ç5+ÄYÏ™¢uSF1{á9Ô¥jäÍk…ðÑž‹ªAMlÄy3ÔèìËu™ØÍþVÈMŸ6‘»çULŒäæ uz圑ŸG¸NKmë¬Í©¹†2}2bÑÀlm.µ•f£çf#fj—‡ß Ø£k‘y-¿sý¹:jžwQk­µIjs¬Ëw®^ìå_ò¼kÓvÑqƒÂì½›`‹ÅJÿ -dzËg}xŠÑ´)@ªÍ]³‹È"j -*e³y 5Ý ‹ÐÛé,*éŽQ w©<|õ’Œ¥YI“—÷²2\«™"Á‹h/%nNgÞ -Éö¡ök„N´üÕB{³¸­Cs³Šöýy~)ÏZf…ìY¿ÞPÃÞ3ͨ¸¯» )À?BBöö ¼ÆÏûÂ’n¦íõð -^Ò$‚g¿žÚ®ÓÛ8/+›SRãwÕå×5™ª¬Õ9#Ë ëà`ZZ2_‰ÔSÊBŸÕj½UM_ãõ¨ÂM¢Tª½ KRŽHhvCzý’ån$ t,¦:kw§‹•q—Îì=ò¼œ&˜Ï`†6Õ=]ãC?ÂO€³»$äq4«IS¡jS‡»”Y¯©iMâx ú(!æäN2anÖ¾f'+q£<Ùט#hw¢ñi~©*H¬µ÷wàËÿK(ì„êÊꔃûõѽ¦;†Œµ§ÄÎv{âëÃ#ÊÆ ð<Âës"PNÊðÛuQ ?9èߨ±SN€ï í•× ˆw§ÆÎïv:ñ×}á”÷öG‘ßW¹âï×N.E¥óìïKeüyÝç„ùÝ $—W!]f*ˆ÷_ËÔ=jý3¬~.SÎUõÚkÌWç®:@OA?6rñ©Žd­T¢Jg¡­¨o_%ÈFŠ*%ØÎcÆf!|p‹’]çÝb‰yíËi2àZn×ã*ãH¤¸úõøÅîë”qj«I‘³GxN Èõ2 Ú÷c[¼Ö5î’亅õÎöÓ[Æò@¡äb<&f29Y%64mxÚÌ>vnV£=ýªgwsung§¦Z*¤ò -(ºÒÌ›— -³uÛ§Kµ{rº>à¸oÈ.±á¸Áçf ï¼Áö °gu5†ÉÚk gdzÏíâ퇊×èí7ýuËsË72Ï?_Ýz¡ñŠç É oÚøZÊÝÍÏ*ÃøôâQ=¾Ñá|ï"fýæ¿û“ï¾û¯ëOÿì'¿úÕOù‹ÿéúñŸÿô¯ú“_ýô/½ÞG«©%ý{Ê‚ô5 iØœý/ÿòg¿úî—?þó«ïþ׿þÉןýâ¯~ü¿ý³X-=NdÚú_ýò»¿õ éXQàú¾£ÿÛŸ½FÛÿýgù«ÿà{¼6ýÓ×úÜòÏ~ùÓ_ÿì§ûã/ßýÇÿô[OãøÙÏ_þõÏ~úŸ~ü?ÿôï~ëæ?úé¿ÿÕö‹ÿ¿üî¿ú­[ÿÛïþú}cïĹ~óuþëŸþì¯þï~× ýóïþ6.ô÷xDÿ:¿|ïæÜœ?ûé/¿¾¦ªéîlßw>üç'ÿ×ëô_7ôï~ü£ï¾þ.;ñRþêg¼g?þ·÷×?ýÞ÷ò_¾þúÚü/ñ—~7üÉOÿêg¿pÓÿÍ?ý³ï~þ×?ùËïþæ—ÿìŸü7ÓJ$®7Ú¡W÷` …[Uû‹,6·þ ûÏ¿û[þû71“Ûúßýýý?½þÿÿ~Yÿö›uùæß|óüŸË7ùO´×Ÿçzn>rÈ´¼ýà7?*æ<³•ƒ|¹ä¿ÇPàwþO~òõÿáEÐ÷rœc‚.þ¿õ[𿘛Ñ÷ á'BRËŽŸòš ˆR ÿñZ‰â¹l»Yúq1OñO//q 9^jà°Ãy&ýñó°j0ë¦eëë]FWáh· 꾡7ÿJýÖÛ\rêøÄɤ&ƒq„©W;¯V@BH…¶'u>*É (Æ ÒüX4ÎÛ6 -󒌉WQz°Yyò´`œe±š×Œ@%€,ÙÖBšüå­š¹¥#éwNÖµZ¤]ÓÙJOÏš´Z/4+qh‘š€¤v9)‹õGœÙîS“êÍËua•® Noç>Üi‹%#·±¬~­£D÷ÓùJ!̘6 “ÅÅpKÜ•®%äyDÿ®Ìô™avQçÎaQ‹ŒM¢Ý3̘Ö+DÀtÕ/l.ë±á”©¦C÷¿m7HH¼±‘ðê]œè>,›•¯ØŽÃ|úâ“$1Š«Z+Ëåcü'o“GÉÍψpê¦Û/E^ øk‚"1«~…¢U×äð·U)õÕ,Òs”…·7wµš,bÔx“:Ëb1ê 0–Ýœ¯Êð]Ñu¡`j/ìp¦Ô‰—è¥2Ëee6¾k˜%å«&ïì¤LÉ4é¡Ì)—¿¿fÒ+™ò¹!rP1¾ïÃPLX©¶Y%=çß&uƼîÄÚu)R½ov1¿¯oIëÊÕSCDy+u:¿¶;,d¯zY' ú§øº6}P¼K´)aiãÁcVœàΡŸ œ¸e“$àé2ìJÂß™îÍv½YHEt-œÔU( qXlWqäx ÃLµŽÕÒ°~ö²µ%Ȩ:’U-i‡WqSÝÆI0Ò·Ê€<¥R­ÐBZÇ–y¿Ìµ1l£ÊîÚ7*á¢B»ËIMš*Ü‹Ž&ŒPu0Zqåú^C Qä)™"Ê0)Sò]¿ù t•&SW®aQÚC»’;·]AÓ›Ðnª7G’tQÛ U‚„…õÅ^I)$ñ-} T”¨ÜRhCL€ÑŒß¨mÍÖ4ô"ùòÒ©{³bY|m©ÓÁ £q› Vî©Ú1C·&@ƒ·Ý-v»ïHÈoVFä»REÆŒÇkXùê×=Ü­"˜ùùHDz‚ZX}ݤIþyX·…°öåõzlÆCƒ4©‚¸³[½Ìe¨Ê¯±›iÀ^^ì+í**h//|$ý¤?Å"¶½èû±bSB5x¬Ž©ò”æ·jÉétƒí¶ÊmÓfKÔe­®}òzp*ҲأtZVÌ]J–›6³¡Ycƪl4E4 öî»ÎHU~̶Òdû2ܧçàMŠ’rø5n·×ŒæP)¼Þ»®rËÛ^U>j€x¹ Kâ‹›“'U¡êê몿—?ᆄÍ~GZ_ï`”*C!^%¼êKèGü÷ºáAÇf„é/HCî0,Êþùnn sÚ^T‡–N:ýó·êÃË8E8^¨?#ºÊ ÞÝ8§ÚoW ³± r?%h¶(X'sÐ%¢ï^Ü‚·uéÈŠ˜û3¸í–sZ§8·®Àµðf µãÙ¹õh¨çðȃȽª9WKK…Á¿×и¿ÆíܬÖCB^VpÕ0ìÞ¼æû¹õu7‘qW9¶^+ß6E«$L›-Ñ´~[˜‰Œë†ÄÕÛ.ÏöSK䢧ä=ªUñJÊ¥CxëÈתµXå–Ñ˘A…˜è“ûn‚¯çKD@+à0PtMxŒN Iá§¥»1èeEÊ{±VLês·‹ –ƒYá<••MÇùOæQù®k|B‡3|Ð]oë~Q¡3¹âDÁŏ;é50ï¦?nqnÜW†¸x8;:‘JV\–_ßñL1áŸA«ŠXùxwùèBxØ|—ë" ¦9±¾ßáÃ¥¼íÕ‘³ÂWÉ¥Ë(ð¾˜\Rø2ôY’Ìà?¥·ªÌ·7[wxé›Úðü æÃnÆÆô!g¨¯òõ]\\Īb -!_)CÓk`É!V½(VK9ö£Îaòú»oö•î~ƒ·Z¹yÞJ­!7 å>ZÀ^Iƒgžòâd$‡H?Ó«R.NóÞ6_…Åö¤ RÞnn¸\.­ÃJí¦™{y¶DïÕç‹¶\Ö[No>5U -6«3l’Ä~y^ñûMJi%e‘¢…ÀÍ¡AŽxÎŲ…yOeûÌ´±SŸšU-kÉ]Œd‚n°ý 'H2:6£¢Ÿª…€¯É€¬âÚr¿°¢‘ o2!j¬ÙÕ¹ÿšÂ·T:c3°Ö¯a›âSÊÓwRGšýæCTB‰¹ÌAË2ð†7¦;|[$ÚÖ}<ÂÛXu7aW“ûÇ@Ÿã¨Å¢˜ÓÚ@”ój­‚©¾þçÚ4K*“h/DZ¥Á÷kJŽ­FOÍ.Xêa`Ö]óçºXSÕ¾òÐnpÚ€ÅïK¯4 ¶=´|ï¹Y;lýÇòï- /åš?­'‹Ô×ðËáÕhsºÿ¶Cg ª? ùÐå"‡•¥€Ú-༌¿˜K[T¤•ïNjYìæŠ¿©V¸ß0øI’ˆž¬|Û²ÛXJÎz'õÜ¥'§Âÿ‚˜é´X5÷ñI(Î/¶ß愘mcXU¾ãÙ> Ût/ºS‰m I[ ©»ñd%¼çW×O+T´îÕ×n6Q ƒ¯—­;Çf·=K¢E¤Ñ‡a³ú‰âÍÊÏg‚—ãEm„M¥üÞIñŸ>ï·…Ž›\´e)4vK–¿7)¿Yß]ª-æ²j¯Szkæç鸚rsÄ|Ð õ£Õ²FÌŸògV‡ÃjÉ_cš5·‡¬ÒfCºúî”û$(Ę́`CZÆs8¬Œ ¡Ë2«­«9{Iµu‚Óï"†s"޹`DPvïro~'HÉ¡¯Ù½×ÚŠpYXOj*ôõnÊ·žVz¿Dµ£E¸Üµ®ûõ­˜+ïž¾!2ü’h™€­tQ:È’~G¹ÀdÅr±‡‹¦PòN_–õ÷I4Èÿ6¥:‘ùhb#f`í„¢ÔLñ\«h’’‘YF¢20èû7d†Í QÔ‹UeLÇn¥[2p 0XÿmÅa4¶,‰WëkϾt–“rÂwëyoÞ+­ëÊ_ë¦A¹Ëuï6䟻ßðÅ—É+ËÂèê’ÆÐJ¿_o¾”½$ó­•ï“ ±\Ä*§ˆpëæ½Üúd Z©Ó“ýˆÍð&[.¨.k†"h}‡»UrQÔ¤~Ö¶ZýüyÛ§ÿ%–B>ê­€®lú·þ ùm½˜a¸½A×׋n]ùaJû¸{úØM®­_i»A!ì'û -m·ïÊ;¯~þIo5…Ã]¸¶Û"ïW¿me®Âb¢¡XD_–E^>Ã:±.ízGŸ6fï’爫¶Ó$©¶ùÕºáu§1\,K|GØ J×wk«xoJÕ¼@xœtÖŠ“¡Jé%BΘU4 k·í,bE€d½ c¯€œŽ5xߘ»Â…—ßL-šÖÓu9NÌŰ&8ŽéIã7Š›i´(Jºº‘ ¢6+í·š™¿^烮Á¦^ßUKÈøÛ×J‹âÞ¹¤•WÅÂ?öçkÀµaÛ÷1㺄€Â朔– Èz JPZü¦¸xÜ´¡·ÆQÿnѹ´0ìrŒq?Í­žÔ13£ZÓ"o±¥·EßǸ@5“àª[»¸·&È"ÉâëÜ*Y2†¿>*ꈇÿ†28X¬ þ³De²ó³Üã{î~gDC.BÞ{†¥0ø ç£sn¦’טD\—- v2Üšfƒ;@/ïiª¬–Õòœ–¯áµfñܳV1áçˆ-jEH¡ËPb„9o£F*vy&BQHc„ͨ§™A=ÚOK4ÅOy¡¨­hÍzÎmK„a3í}™—fgl¨G‰E¹%ê0³]}ð c(É\õËô/”©Ñ®r­°Œpã~[$KýZ£@`Y9'Û Ç‘W˜ÏÍx”’P/¹ tò -l“–¯1Ī,hl¨Æ\ñN‡Ë’I²a<6Ë>§”~I,å{­‡ ,ãÝSæ27dɧ´Êé-Dd½ÛÜq¾+Sénf5É¢€÷ìªòôé#wµètwË!L¬ÅÝ~UµÉÚ†8FŽ ¾«ÓèÖ¶…@ËQ,Þ>ﻆ™‰´>¨[ÒìÇ:希aªHPZüoN/È ×ˤíÈcYóôfBdCYÓïY‡@ÂR)6\K﨩„ÀÞ*ΟºJöܳ[O×âHK¼feÜ4åá±-ŒL(ð†Å™›¿¼aVûó¢æ­ÍŽ1YnËðø®aVN}ÒG(©\6àó«êÎÆ²ŽØ0Ô¦f‰aK,‹ß3jx% ‡eí&‘2V¦2ëÎqùš\¤G¸Z#ÜaêÅ@ ²”ðþ˹\tEç{Æyì–›,ˆ‰EÚmX±_»Ò{ôhÛ-œK0êµØ5+áF DÒ.r†R‘›ò4P“zd×[N#‰ƒ¿ˆ€Œ•ë±>'ºkõwÙ$¨뮊Žñ·¯D·ðßb3–W&×yY‹vZ˜@ ÛØžae¬"ºIÞ‘‰†šÑ.6Ëêã åØ@ØYÅL)̸{€·ÕVÀôˆY[£Sñ(›K=p+MZVš66± =ó»ˆT1=¯J›øÁÖœ»ü˼„ œOíJí¶T–js%Ô²ox.åzó>e/_Ôn¯‡ š¥Nä…è‚)L×p)¿dÄ›7ìa>ûCÞk÷ƒ±Š% gIýÓ2¼¾'üÌÛ*cÕ`¸£-¢ÙJO èZ¡ƒH”°†F+Ê詈7=PȦô¢&è3$‘ 7w}•'®Á7~Êäo è⨋AÄ%²Ê˜•Ð[œÜˆJ=”?¿´JÕMuh’-ùb^l3A—¹üH7¨eÉĉr”_ﮊ[ó’Ij_™\3^Ä0z¼†„\™ÿ²yŸ@•ÖâMM>ÄPwG ѲÕ{žíañ+ŒÔÓ·3ôSGJ†º+-,uùÍÂC¾§g‡9ñƒuYh‚¡|£R[î¶y0,~ûžÑ°Ë† Ì'…»ÄX_Hf‡%Ä?g×c„Ä.ÓÑ^%Ä}Ù5µ¡—ÅÒ\XTð²(ÿ˜»êö§Ø‰sK![\¬Wb·*„ ŒYÁˆ*Íwß»‰þÂǵØáRÜ+ð-#”çbß}ÓÔ²Ú®ºhËD¯äÆ9,X–Y(­Fšâè -¦º’4húÔúf ?ªd ¾Dãn¢pï¦è²‡n4z>jÏûµm¸Xå -f­Áø²4<ɂܤºO1[; ß6 Ú1Ú¾ÅÖq²t#­ËKPrdÑ«ØíÙr*øcí²y¤ÌG•$·¯äýG{ C8ÄI8»[œ†[9 †K×p[M/1gJõ-ªD~-#­ "!ù¤Ç(ÿ©ðóŸ~KYâùZ×þîh!¯÷±\ÅkT vƒšŒŸÇHw*òw¨Rž;¥D0 l¤köÍ2ˆ8#G&ŸVÏ2ts¦1Ü”‘Èe!v®–nOüLùJ¯„;ƒX®Û6 ­]Š^ݬqxMoÈ:ï¬\TÑ®íG>ë66@Ân±Xoc¼à> ¸{™Ž‚ïvÕSYûÃT"å;ëë´jΤÎÖŒý›Q!‹A´Pº¬ô ƒ@âni‰N¡[¬çµ˜U=‰÷eµg[HÖaPéc3Ö‡ðÕÊrûi¾‚ôù=ÞMig“_FÒÕPs^­Õ‹D¹fÍzøV -P­®òOµkcÒýΫó4™„ƒô¼Š• õ–z¦¼sC¢pò›Ô‹/UfYbòušª«Û·)‚À„!ƒ¼ŒÒÖÝÛXúJT͆׫C‰iVj©re„ÃP=ª)N—HgZa]ÉâW`‘ÛoÏD‰ºRÁÙÁé#gN7™*¼vj²wÌ.M‹þs'ñ,ÂBS!Il”õà‰k™3’ÒÉ”û«é^ò°ÝZð!»5P\Íäë u¨¬†ÚN…æ©mâKù-Ñ}GÊe`#Z*¨âP,ÐLyó¯/³R¼>ËåDµ&«NkØÖùæ;ï -š+äú%]0õ÷­Þé…ëm¹vt s®·¥Š»WjóÁ›cÉë&†Íæ3,ù%ªì7ŠY’Ì[vø`‘¹“™%[0kíGͱFè-‚»XÔ’„EÙR,£$cö¨ÀeH«Zx·QŸÓvúJxór·/1ÁªT-ƒ`H¯)ö¯6‰Ûê%>ŠÊ™pŽ€å_w¯ Â"—V¡‰Ë6¹¢,«‹³/Vº[ ¬Óµ˜7E'´V[æ²µ¢¸K½K$†LèÎSZ8-»‹6E»RÆë9]•"ÿdïåî37² Ûf$túzÂ!z-·Ý‹îÛKˆC®Šé¬. GÑ3F‡ù¾’UTáýÈLt“›—–œ..kð´Áîm`äyWdvÏ^P¾¬€»*’ác™ï¹™t*VE€HN)à‡EªLf)Å·†›©@›Eʦ¯‘ ªN|Pä˜-‘6+z\½À™ÒÃ+lvÁbâXöh\Ƭš™ÉEëV*¦ÂÁ,ðµÆrg•˜”ï¹qeµUv"@ÐÈ,g}“¤ëæÙ52Я¯ü–R‰ª“G{KÉ( -&ô“Ëd™áïíî"RLë¶«…ÒÕ ¤ö‚ÕdJ…"Mÿ]`V°÷å–»]têg|› -ôÈw‰ÜÉ×nyô•\ÑȼFt ÍDj- ‘²@ôß<¢Ê G7ålcɹ!YD¨Æ$êzÆ÷yî¶êÀj7D–Í,V20頻ÜÕ>[ -©uowÙI, ÆX,„åJï()LÖÎu¸Ãý¶Q8ƒ[]“›ªR5²y[ý„Un-FBX¸V–êÛLSÜ¿î)×U±õXµÕE‡i­Ü’®£‚FQyjªaÛ,觺˜Í¨Gš -Їb¿oÕ&y^Ôڢɇ÷RÓ.3žÕ$£ò—QHnw·/ïõbìaekyl¿%¼@’bÊÀ®T g*çIY”ºB"ûƒ´¡ŠÉK1ç~–ßÄÌL¦üw[Ü¢D?¶†7€Ö×xóúÂXói9(×+D“{¹s1æ_¯'XüLµ;ÑîGM²r®ø–JZR·GùÑÎì¡h"¿ŒÀª°^<²'e´º#©×E™•0¿–I«x ?è )pÅÀšÕ vK¯Ã²9›§J‘¸fmΊw¥Š¶=φ·ÛâH]FšÕׯÕù*|†g}äUÛP¡–k\$‹,ò&q~vUTVÄŠ3Ó%»…©ˆ1W‹/ìs¥ê|!÷i‡çž"[¸D+ÅR‰,PɾIŸMñÄ›»*2Ft'}WPu·ôb¸br]­ ìKÜÜ%d–E9ÚåÒ]jW‡rÜ’_Œ!9@•lÈÌN¿Š¹ÌßÎÑäqXIÑ>uâ©(_¥WÒ³%íÔƒ¥''C©i—DDd`Dyi„²ªZ²<Ä‘¹ÝªÛã7šuTY’ÿ5G.k^k&» ,æ3ìñn=µNu­û‚å*±µ-‹¤®¦/Ëe?)¯1ßy“n&bkɵˊióV³ŠfD}GùÆŸÊ cTc#_†«[™¼¬\BÐYV¸KpÁ³DªâH*E“ÖÖ¹[ªÎ†z\Ù„3/¶¡j@~df‰¦¬êø»ì•·5›±fUâÙLÞK{v*Çé>”€ -$ÑÎÓ†0wÈ›òb¦îÑKJòí‡só2ž.º t=è3¤=ˆfªs)NÜer4¸«\ã5ñÊG!i€çÏ(®Y¿”¸ª$I½ -è±>ߢ²ÀÖÌø**¡ö€Øæ–ÓUB&Å_:»÷ßö‰üE8#ªl ²UíÏWS¼ŽÁÐPe·½YDѯ¬iæâ¥¼²xã…~œšqÂÒÝÄi40VÁãËý[qѱñé²èœº¨oaÍíQ}‰|–¼Ï暊ŠV 4Ð6[—?"Ò?|ÐûûÅœÿ>G+ªGÎ -Ê««½kB©†ˆ>¦Bp?³}UaVÅ‚>GúÆO«&°‘Oð9³«ï{eò=iZßÕõºÿô'k”^"ˆ0çC±vVS| ˆÐÈ@Ú‰¦&@mqj‹©ÑÑXx.š½KÉ¿ŸA\m?¥1ܱî¢AO+†ãÔˆ­¤­”u{n–@$Œß²Ð²âœƒJ]£U›z6• 2°Yiµï¦øBŸô»*Koõ£Ú=:˜=Å+x4cJ(Ék\Ä]¼?Uªîâ´š¬~îfew‹ÿœ„’ îD£·£ü4µeŸ'ÅÄ„%ýÔ‹|xi! Eñí=¿ll?štTÝ›iMA¨ýö6ò4l†ÿôýºúèõ¤´–&/7µ:Ñÿ¶½HÂîK9'…ýíàµ9]‚Æë¬¯Ãxª1ÍW§£Ò7×„Æ OAqŒ,;]2Gb)Ôn U…;­2Pæ$t¬<§:ãJrõºî^rú:€™2ÿ^æ:¬°âÒí¶‡t"@êU¼\ûF†lZ'â;Å©¢è)³6HCyi%7¢¾KÔ<j¦.ž€&Asa|¸åƒÓK{õáü%+‚º½¬Aâ2a` !.Â7v;|Z¼Õx¼™8O¤íZ˜ìfPçm›ów诎óLÀ*þ¢^o…1ö#crÃ஽UHåVøjLw– ./ù¿m’ “ÙV -ÍyÛä[­b¼$ÒüXÛ²˜Píï]ö¤(o¥ššë;ñ”¾bÕ"S«Gjä¶ÀÒ«EX™‰É¯ ôq[ªL¥ªïHÉ­Þ[ä2H¹ŸE1o9ß -¥žÖkÙó -AÞè}€B¯zÜ×Ý(^yIYˆKdˆ2÷0ïb¶x™±†oÖÎlÜMàÏ?Ø;»ç5èÚ”rÿ½ûªž÷‡²OY†š3S{H·R^%Ñ×|ØbÒÜK¹K’b¼¬±g²ÌÅÃLU€jIôHz‘ö*ݶvÊÿö÷×åtÆfDÙ„mbáÏ œb6ÛˆF‡YêF,Ž©ŸC¨ÈÈjÝ5,cÕ)³ P ;•ï¦o¤™B¿zÛ*ðåç{k™»nιá¹t :ˆ{XÚ,~¾›Ñ}§ ׸`u¼ÛdQyä( 3o»Öô««#QXkn'µò*&K¾’"צJâyÛrM¦÷Ñé»EŠá«J>¢°{·Vî°1ìÂâ'¼†>llÝ6↧9ÌwÖfž6Ÿ&!ýÍxmâ@ÐÑ«Äúáj˜¹£ép<•[¾§§IYÛØŒ¶YŸ½ä.ÎbÙÄC{„¿jø¿»ùÓ“%Z…ÃV25̪5ÓÀOÕœŊ}×4Ó¤âI'c-Q‹É4jt1'5û¶°J«UÐÞ•û%‹<øÓE{rO‹\ŠŸ»¶¡f bÑ·HôÍO KFdºŠ3O£Ýoh¨0!k¤,>Á×n¹,lÿ5fn3«CBÜù-º2¼#Þg›þ¥iÝ|Å’¥4u¹[´8ÆS= [ø]´ˆád)’¦räË´,iøÒËÃÄá_¦•Š¡’ÚÈ ‰‰X)L÷exZêØf)I?¤…†üQS&à4V¯¶ùëO[D®‡uR!ji-é /&lB’Ü;R0GòL9Ê,¤k›ì´ü:œXC丕²yjªáácê>V“ÞVøË=çÓÚîu;fq}}jf9ÃreaŽ ¡YÏbIp©pl¦Ö£¿­LÄå•sGëᤤdµíN#¢ÌË -òåÐ/ºE¤"i£°=×-Ľ/Ãɱ ´ù£å²Ê# ´eÑg)Øæh+,*Ž· ï[½o÷¯iGûŠš#Š¥›À\¢ÓÊD|z»€GSÝŸZØOõ1Ó–IÍÓë°Ä "a‡ŒÞz˜’0[Sª+þš-”—dÝ©™/ÕÌÚ -jq… Ķ úo!Gûբ—CEILI¸þ¦éÊ—§- f>k¤ïïT…Âs"U <(oã8±@a&P%Æ2ÉûbUw ú½®O©…nÝcÉåge³Dy^ï2a’cÔ¡©™¸ds/Ÿ?öô¬€¿N«Q”u·Í6Ê¡NúlB ¿ŽÌ²`UVæn‚;*4a?U!á©#»¦çä©1‹x8CÊpÙ\pÀ¥d`n¹çRêÜLå'*ÝÖ4ç -M®§n `ûÛw§×úFYL9錗[ÄñëP·^·ËÍ"<8﫤ê.Aöô÷‘åTÝn^nÅm:7ªZm õ¿C‹jÜËS9a•$;%³d~J$/ˆò/ó…©fH=]Ûéíä· 4°WªÚö²ðÊÆBl–êpÅþÛÓ 2¥•ïBè§}«´É•ºgg¨ù³Y`@‹ï0ø³Ž!9·ã™ªÄ2(­¢;24äÝŠƒ"Îú:#éÿfÔäïŒÔQ¥ÐbXÙeR²÷V °­(©µ¹s2!@®7gñT¯b»*‚ËuSXB7cÂÒYRhAb=·-ùöXÂygb=úTÄÕô3º ñå^}3½7›%ãÔ-1ø› dR Îò7Ó©2u*Iܼ»[h' B »F Ý=}»Dœ%uÌs/7’¿UXwûT¼ÇÀ×¼bkŸÊl‚ØÃ¬*ý¹)`Ë¡„Í2æYÕ,Z$xpÒj'ÌpÁW*nEµW½‡Ä»%\à!–ºêý ó¶yî¾y8˜:né)4OòÅR§Îº¾šFb±H¹¨ý·1œL„U=µÝ -ìXK«ã|õšf‚¯L5Ô!ÝÄTÃaOó£ÜJgŒ$/ÉW mt¹Ræj‘Û-¬œ³©#xX5=-§âKAÙ£ŠK}TÍÛ4¼ž8^—u8h6y†¢øp·•>ý†ú§ßÿ òPûðnq”íñ;`"gøäç ÿÍO~ö #~÷ï…ªûW¿üîoþú7ð*?lý`´º÷:/ ÛOzÖB¯ÃPèuM2Êoôº†ÇTèuMi´‰^Lþ½Vv¥×ÉRèu¶Í½NÇ›éu*½Ëz]ƒSèuMôÖ™^'vö“^×XSë’ôº×@QéuM ¶½®¥.bÐëø…^‡xÑzæJ¯Ãr´}Ðë0ˆ}Qéu2z,û6Ñët¬­Uz]Kí¹ ×5`[GKz‰í½n½ÎB¯#¤Wéu“e†¤Mf§×! µoÇD¯#Öõ¤×­w«ô:N¬Òë^kcIBTx¬kŸàu²x–ð:Ì^‡¥Âë°H€½Â묔`†×!Váu“e†× sÀë¸ö -¯#Ð÷^g"£3¼nU[(ïwÐ놥>™4¿Žcå×ñÐ?ðë )ü:éƒ\ËþƯ“yæ×ÉPøuŠ/í _'ëµLø:,_gU|²8_·Þí _G°õ¾®­¡ðæ×ûQñuŒO|¬3¾ƒ*Ö_÷‘Ç,ëu]=â¢_×éí/øºÞzÅ×uÉ·¾áëzÔ‹'¾N–‚¯ëª§~àë:¥7_‡¥âë°|À×õ¶½áëz»Þðu¯ü _×y®_×Õ|7ãëzoðu²|,3¾Ã|抯ÃRñuX>àë:_×%Õ4ãëžôK>õN]þ_‡µàë´ÙŒ¯ÃðÀ×a,ø: _÷Îøº&0ß„¯k*·\º&qÅw|]£,eÆ×1q|]ƒǨ\ðuX¥ø:f|]CÃî_‡Q+ÂÀ×a(ø:øº&bÕ9ðu¼æŒ¯kÔ½ãë‚‘¦h`Aç& ä _—†‚¯VOص@N—NCÀ_ÇSðu­{´!ðuÃ0áëÒèø:]Ë„¯kd=ðu­ï_'C?¾Nû=ðuM¾®‰3áë0<ñu­·Š¯kªFðuÃ0ãëÒø:_ðuxuO|]CæiÆ×5âæ3¾. _—ÖÀ×5IÞMøº¶ŸO|]S˜~Â×5j©g|]cQõÀ×5%&|Ýë…©øºvoðuX ¾®1›Ìøº¾,ðuX ¾CÁ×ué[¿áë0| 3¾N†¾®)×1áëh -¾î1øÙœ'¾ŽÜiÁ×QjTðuˆ0=ñuX ¾NâM3¾NO|¬_§½f|ŽûÀ×± -/ø:ü_GVø¯ãZ -¾ŽÝ -¾N‹ô¾®§Tžãël¹?áëdxàëdðuú{Æ×éçÞñu\rÁ×qÚ_—†_—ÆÀׂ¨øºŽªË_×5ÎøºNcgÁ×õ~~À×±]Á׉}\ðuÂe?ñuâ|÷¢àëÒPðui |$kf|]Þ‚¯ëý®øºNê{Æ×¥¡àë†ÕñuEíÀ×¢~âëºê×&|]ß׊¯“Ì_'댯“aÆ×õ½}À×a-ø: _×Ux÷Ž¯ã´ -¾NÀì_g/Ç;¾®o{Á×{Â× ÃŒ´V¾wµˆNø:~ÿ‰¯ã%*ø:²g|] -¾.­¯ëjM™ðu"’?ðu<ô‚¯c)0ðuùWÁ×¥5ðu¥àëÀË?ñu ÂŒ¯ãÛ(ø:Ó#zÃ×IºhÆ×a(øº~¶ø:Å4g|†‚¯³-ÞðuÄF ¾®«kvÂ×!+ôÄ×!„UðuŒÝ_7 3¾nX_×/—3™ôÓëÚT3½®õã½®¹îVÐëø»Ðë´pzÐë°z&zö#4Sèu }Ç™^פá6Ñëˆ,?éu¬8 -½® Â4ÑëÒPèuiMzw¯ÒëÚ¹~¢×5©ÏôºF»@¡×½Né½s¥×a©ôº¦‰½s¡×a(ô:mñ¤×5‰éÍôº&8ÃL¯kôž>éu˜ ½C¥×½œòOô:™ ½N»Îô:üI¯ã* -½®ñ6Ïôº4z]Xƒ^×4}MôºvmOz]»{¡×1ˆLô:ÿ³ÒëÂô:–[•^רoxÒëÅ…^gwo¦× K¡×Mf§×µ(åuz®äI¯“¹Ðë°Tz–ô:Ì•^'K¡×Éò¤×a.ô:ζÐëÚµ} ×å蜛1HÍôº4TzÝ0½Î~`¦×±Xþ@¯#À[éuŠ^z¡Å'½ŽäD¯Sèr¦×¥¡Òë†ÙèuxóL¯#ñ^‡¹Òë°Tz]KA±B¯Ã\éu²zv}ÒëÚÝÞèuÜÇJ¯–B¯æ ×ñaz];ÏOô:MÀ…^G¨§Òë&Ë × c0¦š*õgzâzÞ½B¯ã£«ôº&ÇÿA¯Ã\éu²zv}Òëd.ôº&µú™^‡å½ŽÓ«ôºF¯Ðë&ËL¯æ ×½^È7z¡³ôº¶Ÿoô:âÑ…^×Xí?éuMêš3½W¤Òë+>éul7ÓëZçJ×R˾ÐëZ‹òäÜúìB¯›,3½n˜ƒ^×2ñô:~õI¯S»Ðë°ˆ>’ô:Yžô:™ ½N+ô:]ê“^G0¿ÒëËËñNzÝd™èu“ÕèuMYž™UGtû½®Q.Uèu­ßoôºÖ¯Oô:Ìèu-„s“^'?´Ðë&ËL¯æ ×5¢²…^Çpó^ÇŒ^éu,B*½nX -½n˜ƒ^Çp^éuD[Ÿô:Òp•^G,ªÒ눃| ×_«ô:vý@¯#SéuhWzªÂzÚA ½Î”fz]Z -½.­N¯S;ÔD¯“àôƒ^§FЙ^G—f¡×=âÒ#dý;Ñëz´^Vz]_÷7z6,ôº®âÚ½®ÓÖ_èu,•+½Žð^'3cÀë0Tx–ð:=ѯÃRàu -Â=áu¼K^×I›xáÜ'¼Žh`…×õ£½Áë:Hç'¼Ž`ó ¯#ìSáuÄJ>Àë0x¶›áu>Àëdžáu -Æx–ð:e0 -¼Îêü&x]ç_žð:2 -¼Ž0U…ש7û¯Í€lr°ëèô.캮œðƒ]Gïwe×éª -»Ž›ý]‡¹²ë°TvtêŸì:Eí -»N–®“åÉ®Ã\ÙujB/ì:îÑva±Ê®r£°ë`º~`×ÑZÙuârvwø»ŽH[e×!›^Øu Øu]½ö3»Ž`ÜvæÊ®ãêìº.qÊ»se×ÉRØu²º)è:%F -ºŽÓ(è:vü€®ëûñ†®ëª×žÑuŒ•Ðu6„Îè: ³]÷¡Çÿ£ë,OñŽ®cœ›Ñu=è(®ëçö@×a+è: ]'Ã]'댮“aF×ax ëg º®+f9¡ëºt8ßÑuŒõ]§¹jF×1ö?Ñušft]WÉó„®“á®Ã:£ëô÷Œ®ÓntžMA×õ­WtÝãÑ}ùÁ_üßè:ÌǹOè:9ÊÛ6¡ë°PQÑu2Ë­ t,L¥‰®ÓÁŽk{C×É£.è:*] -ºŽPétîoE×±n*è:jtôT+ºóº/ºNÅ<]§mø+ºNæ‚®Óo,љͪ‰¬~[ÞÙu”˜Tv-Y黎hï“]G±He×@/ìº&Àe×µÈØ'»Ž5Ãv‹òÊ®SXµ°ë¢}²ë@Tv]K|v°ëš8ïì:ÅE -»Ke×Éò`×a­ì:Y&véÁ®ãÔ -»Ž{VØu -a<ÙuÄ“*»N!Ë™]×ÄØyg×±ce×ñP*»Žhïv1‹Ê®Ó»1³ëȇ|`×5²­…]G(©²ë8úv/[e×q°Ê®k䯟ì:N¦²ëÀ*ì:~õ»Næ™]'Ca×5Í•]׎^ÙuvËfv–ì:ε²ëš„LŽžìºçÀùÃÏà8iOv]ü{ì:|žÂ®c‹'»NÖ™]‡A©×`×aP¹°ë°^Kì:fv­o‹œYŽ~b×µÕ+]×🔇Ùu*ŒžÙuÔRJ“ÉÙuDžì:¬…]פê<±ëdP¿éÌ®ÃjÚÔñ&Ѹ¶‹fÙW$s9³ëy“M+L^…]GÚíÁ®c<,ì:ê` »ŽÂ»wvi—®#R]ØuM+¿7vƒÐÌ®k÷ZØu¤ì:R7…]§ßÄ®#;ù`×)È5±ëô¸å vñÉ®S˜qf×5ÕùNì:¡Ov:o&vÚ®Ãx²ëØ­°ëª -»NáÜ»ka×qV…]'Ã]×Bñ'Øu¶ß`×qà'»®L=ØuM‘ëÁ®kjýyg×iÜÙuMàö‰]×Ä[zg×1´u¾ï`שxøêƒ]Ç«-7yf×) :³ëš ç`×qšOvFaבQ.ì:rÑvê&v{vþÒ“]Ç©v]¸'ºŽ1ö®c½\Ðu‰gt]kë]'㌮“A"Ž®k*[ßßÐuX ºŽ“,è: —µÆOí'´ˆÍèºURk¢ëÔ[õ@×ÉÑu«*{·®#´óD×iá?£ëXTt1€ÅúÎ't¬ÌwÜ]D ë0XGýŒ®k`ŸÐuv¿{u¼ ïè:íGœ.ÐuMĵ>ÐujÐR´sF×_™Ñuø| t‘š'ºŽOA×5Õ7Oè:Å$è:ë—›ÐuÜß‚®kJZ¿£ë-Ù…Årt]K!Ù@×á¿|@שÞ`B×5âT3º®I:ý]ÇÜRÑuJùt¹ÎïèºPÄD×áy@×±{E×ñ½Wt];ïOèºjÖ'~fwKÜ´¨$«è:™ º®÷ºN–'ºsE×5ft–è:æ×Š®SQBA×1¿@×É\ÐuX -ºÃ]‡µ¢ë”ë.è:,Ðuø]‡¥¢ëðY> ëš˜=ºŽäSA×QêöDש묠ë¨#¨èºNùÑ]Gr¨¢ë¦´„£ë¨Ðþ€®ëBÍè:Y\oL_‘ö|ë°r†‰\ÇŸÈuÔÝVrâD…\×é}y’ë0Wr]íi&×aù@®Ã\Éuº“…\'˃\וŒÈudõ*¹® ²ûF®Sd!×ñºTrŠ%žäºv]oä:v­äº®Näwr]—j×D®£ÿ°’ëúz"×õ¶¼‘ëØµ’ë:,¹®£ VÈu\z%×Qú$×a­ä:³Ì亲ç ×É\ÈuX*¹Ër]A¬$×õe}#×ñÅ~ ש"µët…\×EX~ëÔ’9“ëÔ^PÈu´g>Èu -…\Ç0TÈuTÙ=ÉuZÎÌäºý=A®ë¡ÄVÈu„frßk!שEäI®“y&×a(äº.Ôwr:I -¹N¹ïB®“åA®£§ ë¨ñ/ä:%1ä:‹ËOä:u:Íä:rvÈuRÒ,亡Ïìä:êŸä:²Š•\G”¿’댑ü ×Py&×)k0“ëøÑä:ÕÍrŒ -¹Nçû$×YÎo&×ÉRÈuÚõI®C§³ëÔ0“ëzpx -¹®ïý\§VšB®#}ó\§] ¹®+8‘ëW ×uhÏäº.n&×)Áý ×u±Äfr­*•\GÇr -ò ¹ŽÓ¨ä:z,>ëºð83¹ŽÛ=“ëÔiö$×YßÚL®ÃRÉuX>ë0Ïä:õar,r2é3¹Îrk3¹N}*r×^Èu|…\GVöI®KVw’ë8R%×qÈuf~ëÈúÏä:^ùJ®Sûá“\G®Z.T€ë¤½<ƒë¶e{‚ëÈ\Ïà:=Ü\Çkü×ñYp]×8ëÄŸà:U#Mà:ª] ¸Ž ÿ ®£ü©€ëºÆéwp¾HבýÁulð×áp]SIÀ®£Þó®kûZÁu„s -¸NýÓp©ª®S¬b×=ÂÑ?|Äû¸N Op - -¸Nå -3¸N†'¸®«ã{€ëxK ¸Ž~Ê'¸k×É0ƒël‹wpŽ6ƒë0p†'¸®ow‚ëú~Upó\ÇQÀuŒ \G)Û\‡·PÀu”½pÀn=ðuT˜¹uªo™¹užÜ:Ygn 3·NzçÖA(Ü:êô -·n£ŸæÁ­“@›¤:c3­(ÎÁ­†™š6¬kįN"p$ˆ -R²œ¸uŒ§3·Žs*Ü:iw¿sëdœ¹u2ÌÜ: OnÖ­ÛP©š¹u›œøwnBã…[¼aæÖ¿gn]Zƒ[‡~áÖ!ܯèDáÖI¼ÿN:û -„¶. õ„5°uF'h‰­ã¨ª{ÆÖ “€Ø:ò' -¶NVjÆ['.œcëø[sÐŒ­“‘š¯ÀÖ ³Á -;°up9 -¶Ž7Gq¢ÀÖñÜ -¶N޶ŽI|ÆÖÉ‘˜±uê´|bëd.Ø:,[÷VÛôñ÷ÆÖ)ÂöÀÖ5¥ì'luàLØ:M°lRk3¶N†[§ýØ:¬3¶NaÔ[§.­¶NÇ[G­EÁÖQ¥ñÄÖ!ôQ°uj·›±uêŽ{`ëd±u2ÌØ:Õp<°udifl:gl] PÁÖQß0cëx[÷xx_~ð×DéÔ'¶ŽþÙŠ­Ó†[‡å¶Næ‚­SØtÆÖ59¸lA˜Š­ëÄ^ -¶¥«Ø:µ/lóqÅÖ±°ø€­“¹`ëú™ -fŽ­Ãò[§¦û‚­Óº¶`ëzˆšWlÿ[Ǻ¢bëXâ|ÀÖui¯ÎØ:Š+¶nX -¶n2{E4 -¶®qž±u]¹™[§šÄ[g†¶n˜[§ +Ø:Fר:™ ¶N–‚­Ãò[§å`ÁÖõã¬Ø: ¼>±u]_óŒ­cµ_±u“e®óæÀÖñ£[Ç`ë$´Q°u -±Íغa(غalj'gl]ßBµ¿`ëØ³bë®+غ®€Ç[GT²bë làØ:† ¶Nk»‚­Sjä­“uÆÖa¨Ø:,°u -ÜÎØ:flmñÀÖ³.Ø:b½[÷?ø©œÜölåè[×Öó [G;Ûl抭kr¹fl]ký¶Næ[§= ¶NG`ë¬L`ÂÖ55ÜÏØº&*Ø[Çb»b먨غ–øÍ‚­S­MÁÖÉR°uVóÀÖÉ\°u²l~õ­£Þ§`ëx.[7,[gæ[×ä¸'¶Ž"àwlj¶Nbh3¶Ž¢É'¶N²[§J¿[GÑÌ[—ʹY;ß°ufyÇÖ k`ëTLS°u+}ÀÖY 挭ëغa)غÉìØºv„rkÐ蚆ä¶Ž[±u”*¶NeSOlÌ['ËŒ­Ãð[×y±uM!Õ[‡å¶Ná®[']¾‚­³wå­k’%Ÿ±uÜ’Š­›,3šj2;¶N¥¶[Gùßl:ƒ ¶Nâ[7,[7Ì­ã7*¶Ž7ü¶Ž¢bëXfTlݰl™glÅ[×ÔøÀÖQÔ^±u-:!['Î'¶NJœ¶Nº›[§VÞ'¶sÅÖa©Ø:móÄÖµ¾Ul -¶îµÞù„­cð«Ø:•™lÝd™±u“YRªbëøÍØ:ÊŒ­ÃP±u²<±ufž±u²l]è[פë;cë˜+¶n²Ìغal]S”bÆÖ5‘Þ:–õX -¶Î„‘glňOlLÁÖIN¶`ë˜8>`ë´-Ø:jY*¶nXêØæÀÖµ{¯Ø:“$x`ëL¿iÆÖ!fY±udè?`ëL2jÆÖeúºbëpb ¶®KcÆÖÑ-õ[gæ[g–[g–¶»bëd™°uúû‰­S¢|ÆÖa¨Ø:úØ:jn*¶®ïQµÔrYu|ÂÖa®Ø:,[§…á;¶N‚Ž[W,ªÕŽOl™ƒ‚­£w½`ëˆÎ?°u¬ *¶KÅÖ KÁÖ™yÂÖqk ¶NÚ-l*’fl]ï[ÅÖ!¥ýÄÖa-Ø:)nÏØ:zÌŸØ:¬3¶Ž¿ ¶N<°uÒµ™±u¤ô -¶Ž:Ÿ'¶kÁÖa(Ø: Ol¬3¶NûÍØ:ù­ëZúNØ:š ¶N†¶.7Kl]×47°uRMÇÖuÂü¶Žá¤bëÒR°ui l«Ä‚­“Ä;¶Ž ‚­Ómš°uñwÁ֥ѱuÄ&l]ÜÅŒ­“q`ëúºl+ð¶㌭Óß3¶N†¶ŽclçW±u}½>`ëÆœÛ¡8Q°ui)غ´¶Î~ ±u]Å)ïØ:ê¡ -¶N‘Ý [GDü¶Ž€sÅÖ)¶[°ui)Ø:³NØ:•§Îغ¾ž°uX ¶ÃŒ­ÓßlÖ[§¿glv{`ëx€3¶®/½bëÒ0cëÒØ:¥õgl]ÇQ{`ël‚°uªûœ°uãï[—ÖhƒêÒ›°u qOl^²[Ç8P°uD“Ø:Œ3¶NÏØ:íõÀÖÉ:cë0l†'¶Ž“Ø:uÃOغñ÷Œ­3ë„­Sý錭Sàî­£¤`ë¤ø;cëºú%ß°uܱu8[GPó‰­ëûY°u -}ÂMsêªÔ:Bã…Z‡$C¡Ö¥¡Pë†Õ©u*à™©uú½µN™û™Z‡¡PëdxPëd¨u:ÎL­Ë²±B­#¼\¨u*xš©uÃ0Së†Õ©u=rX£#žý¤Ö©Žl¦Öà/Ôº®Ú‡wj¬jG›¨urgjÝ0ÌÔº´µ®«Me¦Ö1bÌÔ:ÕßµŽ5B¡Ö™áZ—Ö ÖIq¦Ö±ªxRëÚyTjµD…Z§žºµŽøB¡Ö©ñöA­£É«Pë«jEHOjQÏB­£)f¦ÖÅß•Z—Ö ÖI¤Pëh6ý@­S ÕL­{-XߨuÏHôíþ#µî?3µîDÖ JZw*0ŒTÞÆQR -OÒÉK/Ä:|¥{]°îRqÖ1€u·Tï®7^Ðnõ“®Nï»Z¶Ø¶«ãX»ÖëÔûÚ«NNóÙßPuLïºRd§¦èŸ×;ß(u‡j;£n§GŒ$CÔ)—v·7Bº³Îkê„wimðép«”+(x:B8]cÞôÁìß¶‰NG ó¹Ÿop:¬í¼›ƒ¡ÜMǶ¶2dåös€é6)¦œkjâjK§µáÒ“J‡6‰äðJ—†B>Kk"é Òm5G¡e“àL¤Ã5’,FnƘºÝHG§Åqîo@:¬k»Ntݽ ÝÖ×7ÅN^m:ð¢§K3 º!ÇñF¢k’¸:ˆ®k%<0tù÷ ¡ c èH– –“*Ûý C‡EÁž°.<·¼Ý÷%QsK|YÑ„¨bŽë4wiÞ'ÐÐï”9ò±Û1QæZ|H™£LÔ9tdŽFqWɰBB“û1!æÔ︾æp1ùÄ0§¨/ÓX`ã:])ë]Ny6Yцٕc3¶Ü))ë^Ñr_K¦$ËIvèj –{4Ç<è…W|ò·Þ™Â•ÓsÑ®œ²ï÷z'WNï”Cûâ]­š{X9{ózX9{§Ûý†•ãÝ_®åX9ûFö>°rÊ|.½½aåÔÔ¸Ü÷ÀÊQ^Ó6N2°r’³Bÿ+§T-?T9½Þ{oƒ*G.oo­BåddðN¨œ,úøƒ*‡åuëŽ7ªæ×³9UKÛ¶cPåTY´©¸e¦Ê‘Îÿ5¨r«T”Ž•{>Ï/ã‘ãwU¿MP9¬Û²Ü •ÓfZn:TC#–[¨r’„¿Ï+©r¦ït®I•Sgð~ï•+·Š˜7°r«Ê!·ŒÃQÔúÿ²w¹’$K–ÝJ¬ `ÊŒŒsÚ»¨=ÔúÛïU7ê£(üz”ùn˜3#J„Ü“¸rŠGxrQ©÷¡í¯Såè>ÑT²Cåd&÷ÈÎË™r˜ËB޶ì•RíH9%qo…W(Gö@qwʱ¦Ôd·'ÔÜpˆ)ä89¥ÏqMšÜI§ó•`ròo,n%‡÷ÑqN®SüHrSô»ù›9 îj6S$ŒœÙr]SÄÀú<'Dnþ½1äBs„œ~€î@È©6J©·D;é(ì §¿›DCž^¤/›ðq'-¶Ï¤¢Ál9';N 4Z/%tÏPgNŽ“£V)}‚ãæß;7.ÄÀÆiÚ—vÜ…ÅTÍÐ8µß~OQ–òZã2.þNĸ§^îÒëäÅÉÊ¢Sz½ñ⨻DÈqqŠi¶ºÎË£ØÇS3,NQàRDaó ¬ê] XV¬Ê,Žô†VK‹c6<äDá°8MDíi%Ãâ¤vö¦n0"á³°{&,®`'í8¹I‹“zk² ZE£N‹C•ßîzZÈ0ô2aq=n]ù€Å½µ5Å©ìåÔ•`qÊXöÆÍKçi0¼¹¿Ð8xgXœÔÏÐtOXnIºÊ‹ÃTé¦*yƒÅ¡ú(h®z]µ DÞ¹·’qqÚþ~Ö4ÏÄÅi§}4î.NÙØ“€ã΋«´s^}òâ0}®¾•Çãá΋c_}}îèàÅÙF{ÒâøS D‹C$8pqÚr.ŽO; (7qqúÉl§oýYBÕ‰‹›ÂŽ‹›bàâ´÷¿Y%Né_Û”$\œr݃Õé_¥dZœë÷çý‚j˜Ù: pà©/ZSwZ\±×{É:lÇ‚7…D‹›jÐâp‰Q[a`àŠYâ–L‹“qÝg^{ÖaJ¥õ6&-n -‰·T§ÅQêAsƒà”¤ÿ¬…ZæÅé[œÇ³°r~á=&/ÿF§‡Êœå¼8„ðr¤¢ -î|õʼ8©ìöƒ'¡Bts^œ†ðċØ·D^€ê»]“gwÇx2/N%ÙŸ¡j¬Ã `_}ã–°S¤–êaoÖ¾L´1KÖXªØL¼8ÝF§øyØSm£¼¸)$^ÜTƒ–B ÏÁ±.®Wϼ8]v­$æQºýº 7ÿJ¸¸©.No¹ E1ö‡;.G澩›~O\œy‰‡[P±f"ߊv?“'G¢ÅKÏ3iqžCY*§ÅqÄIýÃæÙv(nާ²ý8Ù%=ªI œœ|Ùì°8¬šõÃΣ†]È€Å-a‡Å-Õaq•¬©æTŸJõqW-5ÓâøÄN'a™2Z~CZÖ&\œ©ª¥r\/“¹Pàâì×iÆÙqqšeXÌ.N(«™ÀÅ-aÇÅM5pq•ñçäÏ`:¾ˆ*Yʸ8®ÃIôÐeü®. [|ÕAÕh+‡KÔ­ÓqqŽç3gN0Þ:áâØ4}¾ï:L¾ŒÕý§ØÆ†ôPG]"£î†[Àzê ì¸8*¼µ0 \\Áذà⊓{ÆÅyТÛIpx¬íL¸8Œ&ôÐÄA‡’ïVµÁœùM¯‰'MOqÀâø[ã½?@üÝ[FÅ)Ç~¤AŠÓßúñŠÓßEU%;'îáω‰“w"‹n£ÄÉ—W'b‡Ä1Ù?e2âTߦ—"îô-o"Ä‘Ôê‹§¬Wi}â´%Ò ”øp§/ÇßÇ=ép'öÐ5ÃáÔñÞGŸl8ÍŠg='/°Ï¬œÈp²í¸êäÂA7úœÀÂÅ߉ -â„ÂáPL Ø™p°°Žó §;€½òDÂiE2@LŽ„“CgFÂI®œv$Nd„x Wh?ðjãåä.yŒ«L$& úrN„ãÌÍŽR‹Î3çD8ÊN·”†G-̨ý‹WèãUX6pR,ØH8Õ]GËH8d⛄㥗_GÂñî¬5N?ÃiGÂ=Š4i1H¸)$$\¨„+ÌQ÷5io8°i—˜˜p˜õ(ô<kÕŒY‘3… †[r á´¹ºZYÀ7ý‚')~n4¼áV7¨tï²ÈpKId¸Mv2\±jÙd8~OávØÉpÈw-‹ 'Å‚A†“Òûú"Ñ Ñ8Ép–29ÎE†CÑR9“á$³2†ÈÃùV(XyJ&ÃÍx&ÿ&%Z‚ 7…L†[ráì®§ç ðà$2ÍO½í*©hð$ÃáM¢­_òÎP‘P¥£áˆ?^²½q4Ü2nɆ†³à¤‡Fqž.·Í£ G-W.Ðpس]q ×Ç®q}¡áð_³AÄÑpææìs&i óz{ž/4œÆ@"T G®eà ·”„†[r áôd4M'ù¦§èºêÎ&Ûç^²À@ š“á–°ÀpS z“ZQ»¾`ÐÞtI¯F*iÇÂqã‘&œª€ï.‹ -Ç#:žòE…“üùeeQáP†sâðS楌•‰ -gýù,*œ”“…WPá°™z‚7©púvþR§Â©|Ör]A…Û” -·ä ÂÉ}Ìæ¿€½=ðÉP8E޲¦âòÇ[Gå£=àD„S›3YÑÂ]‘‘ œ,vN’?ÊÇÚHáÁ]—-r'åÍÜáû #Éq/‹× n ; -nªA‚SJ£{ʵ™åpNKçÍ%Šuƒ§*çã¸þLÜyÚ‚)3à¤rª„¦M'ÀQ‹íDµ‰Ϋý™ü7Õ ï»$Uµ„þ¶Dƒ¿‘‹Y@7u­nÚrì°{ªÆ7æÛUü®IÈ79.“»OÄ7jŠ‹=‡D4NRQçâ½-aǽM5hoj{àIŠF ¼ -ûs}µNhœ+Z=®{Tìm) ö¶ä€½éÎéŒÇ{ÓÍåggƒ½‘¯&f°7…’Zi‹õ†áéõ‹õƘ°¬7½òa5˜XoŠ¥´êåòæCx«ÐèÚØn`¦)Í´·jÖý@ìJY´·©$ÚÛTöF‘æ§½áѬ/•hoôOž2kˆZZe޵, -ÚÛ+°¼bÎÿí­XÇbÿ¢½•qÄ ½q`£óÐioXÕÒ‘hoÜŽ­kN{Ó{² Ú›.°$Ú2‰ËÀ½aE œÇĽI©Œ… ÷ÆEe Ü›”þ8°Ó`E—ŽÚ¿poºŒ!ë´7ÁQQMÚËæ„{S0ïsÙ€C˜ jw’ ¸7aÍ>ÏÏõ…{S°¸ñTîMâ÷¦X£Œ{“LÒ-pow;:“S•-“äO¸7äã‹÷F4åö·‚8&…s潑„`ü Þ›UÈ]eòÞªöEÚµgÞp ­÷¦@›ê‰{£§¹zqÞĽ ϼ7µH_ -‰ï­’¬=ûïMMÓVS¼7~¾Ž{ÓÉf]’hoRƒ`YÜ3"Ûö†³ûuô/ØQ· u‡½¡Ôç^°7²ô ö&ùáŒìÖíè!ûÔǶ{SP‹Ú`½¨¸ô˃õ&êgűÞÔGÉ3?Yop,Êh‹õ¦³K·YB½)JÆæb¢Þ*[%0†zÓ#W—QošC…q&êM´¢l]F½I¦Žd¢Þôåâ³z3óÒ¾Poø…P¨7‹Í9ê åôã!À™å\¨7} +– Ö›^i¥‰õ¦¦Í‡Û+XoT¥0oëÖòŽz³ñ³/ÒC¬Nz{Îkxÿˤ7Ë0g&½é溈Øé­<žÁ Ò[=<ñ·£ÞªŸõ&á9 JA‹ Bó|ÍÊ3à!'éÍŽ:'èMIK¤7†XÝ÷AzÓ¢®1HoVtŸ™ô¦qž`QÞ˜§ÒÒ[Á'Ë×C`n ª{pÒ[¡¥Ùªô±©Dø<™ôFÙÙÕÆD½!<öy Þx¢ õ¦…ÍPT/Poúâ,éÑõºvÿüõ»D1Q¥R2éM´n×nHåÐÎySlõ¾î/ÌÛ9|-”7 T‹䢦ëùb¼iýLØ1ošã#¦¦^(˜zô/ÀÙ¬£.¾›<°X:ÞíÄ»¼ÑÝ0‡}žwãñuuxöä~‘ÝÎâ«‚»Ð>Æ»²3}î/®›¼u.hìÇiOCÔ©n|Û2¾¨nòìgP7)±1r¦›‚oI‘Ätùœ/L·yõÉtÓÖ $mgºaíÎÄL7£lí‚éFŒ• -±Ät#Êuz)L·Tºž‹é¦ÐE§P2A݈h1mXTUÃl9å@xî‚Ó¦°ñ­z²à´Q­úÔjƒz¡Í†ƒÚ -]”ט¤6Ã,¨/m'µ‘©St,HmäÝý³$Å´‹P+‘Ú›ºqâ6;hQÇ9‚Ô†uõg€H ¶Ó×gÁi£‰^nÀŽiÓR%(‰Ò¦¦:¤í9¬L&m÷m•¯ Ѧ0ކˆ ´ÝjÛ;® hƒ[>Zæ³)7ªücˆ­5ízl¾Jp6lmÊ3Ùl¼Èp°ÙîÃî“„f3TxŸd¶O¬à² £ @²Ý^ˆT6ˆäÖpCÃ& ¡Ï—KL6A@õè’Mu¸·mîJ¦Žn³]ž<6E*#bàk …kÒØîj%k Ʀ½­ÖÁbSb«,6’aºŒªÝCAcÓë¬TÁil÷iéÇc»ªmQƒÅf„Û1YlÝwÉ;Š­G­“Ø ¢µ6Alÿ_±IÔ–'8lúû,ubØ-V-SØn¬}BØÆÓÞ"lrcô×Ì‹Üä5ë­©hê¸ÀV=L™øk2¢æÇü˜É¨Lx꤯µbÙè_kÈöš†V¥t½¦Ù£Õ+“×$ªé$ÀkM~<Ç5¹k²×"6a×ÌrjB×ä._»`®ñwÍÄ5½D-Î\kìûä­)û:Hl¸5•á*é´5Í£o°5j£jMÀ˜û¾'iMÅ -ÌhMÆ`‡õP/ÎÍ_פ¬©Q@Sr@Ö˜jÏŒ5âH±fž§}Ö2°dñX#{O„Î k¬-T,„5VL<;a|íq=‹°FúL -endstream endobj 24 0 obj <>stream -ÃÓ$¬Ù2¶#Ö`÷ºkðHX'Âé{Ò­AXÓCl‹½ ¬•âsc&¬eY®)笕¨½Ê€5db¢XC!˜€5–q$`•#ð‹¬*=‡áT¹æmN °¦i±Ï À¹}¶6X£¦…Xd¬!S -€5)Ô`MÂçd X7FEpÖÈ÷¯&Ფ¯¦5Cc3|5)2Šì‘÷÷cç«Ñ˜i-“ÆW#¯Ímé|5Ì>;;ƒ¯æ›‰±øjX ’|¾ûG¶‰¯Æ¾'Š‚x·D€óÕTÓüÜ÷ýÅW+€sZ]|5’Xã¥ÄìaM2q—‰X“ÂÂÀkúó¤O.!Öí¾0b ÄñÒÒX“'µ£±&Ù‹Ý!¡€%ò2BX÷ošTÍݰƩ$¤€5”ã¼2`M<¹u¬i“wWZ‡°fÙê^`ÂÁë¼`ôUåX£ä€Û8Ö -¡öÚ` G+‚×Xƒ4T‘·Öð³ÔŽ2k@q~` ûQ‚- °†‰±ðhÃÑŒ€5§abvÂV¢V)ä„5ýö¹Ä™Fªë¦,m#¬I¥AdÖLé °–^¸kÈ<¶XÃ;¸CÖ¤XÖ%ÖŠY7ÕX£—ûjϬ鑵7K€5j8×°Æ÷Pqò¬Yƒ5™µ°FÌÚ2œX£"ß -–ž(ÉÑbÓ¬&`M£%¶XÖ™ÒH¬ëÓDkìBÔ€µ=1X+æ–ùj B÷=ñjzV5·]Ž -ªz] ùô Ž9žŒc,¾š”Æp‘k4_<þR›ÇH8?笡ÄÛ/ƒ"…Ä.MRAXSäèP<:kä ueaÍÂá¶Q Á‹ö ™NaMi2K&¦իf°c7+árMÂ8u†•DXSÏšƒ°¦è:[IX3”ïѾkÆý=Û"¬®×~ kúГ`K"¬QlÎc„5zr˜Ö‚°fø÷çú"¬‘¯¢<*k–Á*mÖx)ÒDXSŠRÖ¨èׄ5*»õˆ$ÂZ¹#A„5k>¡NÓ kJ›XI"¬ñRbVAXÃò“iÁ kZ6çÅEXÓW±åKÖ*+º»/Â9enÜ„XSæ­R®ˆ5¡,±F>ÓÍ¡Wç5ìÏ$h9õÜ>ÞaM 3»ê‰°V,<åELW§›ú?'¬ÑœEB4Ö¬ÓËZ³q…`k†1ï¿'Þi¬I¶X°Öh]²¸¦ÖPn§·-¹k¢ÍX³¤Ó’#Öhî`NÜkúñàp0ÖHb?gëž¿¶ÅG‚¬Uš Ç!kz/BÁXÓ—°Ñ>1ÖLþ“ kÕêhÏ?“±¦›Þ6ÁX£gï£bg¬)Gl˨€¬áÌ(”µÚ<\•0kJãyœ5.±l ‚³FâDÝG‰³æ†ªerÖÕk¥œ5æÌý¹Vôª^äoœ5`JBgMó>´¨³¦ýÉ¥/˜µÔ½ôŒY£ÜH!õÀ¬±+P¬-8k…æWݹ;ß'} Dœ³¦¥!ñÌଠ4ªÁaǬÝÝ׸»¸b„rȤ¾+#Öä>®µgÖ†Ð8à|µïhñßGÿ;àÕ(¨NM[x5ЏÛC¦D€Ññj—¿r›ÖéþÌÿÁWÓÝIfðÕ¨Ð!p°g"Á(¢|5õ -_ÍŽ¸jæ«ñnÚu_MaØà«zGjÏ|µr›UÁi*4^M£2‰¼„WÓÁª#ðj(¶fÕŽQ“—ðjZ*`px5špί¦xÏx˜-¯FMÉiP.g(øK|5TJÜœ¯† ¼RðÕx#3 °&oüK!‰¬Õju\N«„¨í‰^|5¬Äv¾ZeC±ñÕ–°ã½–ê|5Ìè7¾Öÿß|5 ¥˜̓ŠÅô‚¯†É´ÂÜ;_ Q%nÁWCÐ$|5 ¬_­b‹oÍXQVUVj-|5 šƒ^­böwNºZm¾pºÚú{§«M5èj•tR™p5ÙË¿ájXÌ/¸šÜà\m -ùì‡p5óÐ_pµŠÅÈ\ 3ÿ®&Ÿý7\ u‡«!lp5ýý‚«!îp5`;\M ®¦Û&ÁÕtÑH¿6 Z„®b‚«iö&¶1;oàvº‰ìK] y89͠ʦ -ºÚ{Týïfÿ1]ðšnÉDWc'¡HSÐÕ´Ã%Òt5¦U¶_iöŨIWC wìt5^GPk§«Iµè¥ÑÕ¡^Ö¶j© DiíØéj–46£S‹á·™ã]­PÖZ¦«icϾ-èjDx©PrºfÊS'ºªFAWC–v³°ÒaùßW£µ¨Ö`«Ñ{ôù·@«‘•‘#QB«i{O,ÄÑjº¶nr´ÚëÊýó÷ïe@­?dG«©žà±J -G«q —9ÐjR -{°„VC¦b(ÐjDL[ߨjR,œØjÚ‘Yh9ØjZJ7ª^™¦«pìûoz}Ûa£Üµy5/¥CÚQÍl5d¼­‚­&…›n²Õ¤Pb™Ùj´¨³ -¶;Z¼Ê‚­†2î닭ƶŸ"â`«Q©²ÜÉVÓÖ‹…ÌV+8„jïl5•ßuGiƒV›B"«-Õÿ˜• ^ã’m†w°šv´×ÔÉ”¶µa:ào«ŸÜXA¡UÍ~Òan^6fÑú’¨jÈT°U …ðYPÕ¤Ø×OT56€µ;2Í\H";U RëSÙ©j•Çx˜ûX±€Êé…lAUÛ”½cÉAUÓ‡mÅ&.M§ÛºƒW C -Òó@ÅÖnº9«¶„ÄU[rpÕ(T¤ 6Àj@C¦{ã«Yaù07N‘:nÔ8mÚþY£^«)îP/;%4 ±Ý'ú`µÂî°¾¤V#LU€ÕØÌs°9ü Y ¹86ºo··´F4ud˜ÀŽV#dK"Øj(Ý9mÄì˜ãü“áj}Èo]ž3:ôŒà{ýûSy*ÌWëÚÐÜ ­6 .ÈjÃí«2XmœÞ¥\5[Wý3±j#ZkU ôµHÓËNè!ÅŒpdLL52þŦuõ+ËÀ=D5xUWùªatE¥óÔÔÁEsàÔ Bž·˜UTŠ1˜¹§ÃÔ$\ŽH#úO¢˜àÚ^J¥«(Hj†½ -€>ޤ]â¨ášyØ GmVx41jSH5Ô«/ˆš’äZ\ íŠ8èB¨©8HZ“¨É¸Î P{/ÂL5ù-àe€føÄ¢ÝÅ2— ž¾!Ê:b8ïm8$šå'8-´À¦©â…L^PÓî;J_÷Í9uŽýZÌ4‚Í´Š3m)‰™¶ÉÎL{îhµtšÎ”ÙìÄ4XÏÆQ»i-‹—¦"&Æ·–vGÄ<`iwøµ,ínf‰™Pib[PÐIiê`²<¹ƒÒý {œ8i„³›ÝF¤Ýgäô‰Æí ¹?AÒT‡o5ÎHЄr Ò–°S–ê€4EÉíöwìÙgõÀ™Lx4hÀm;LŽ„¾,À0+þNd´ƒ‹v›ûÏ„©¸ûìõ ŠFÂï²vÖ P´¥$(šÉZãÍö]d÷u&÷ :§MµÕ}W£a`ÑN÷[Ê@4ùH2; ?{÷$Å„tÆS¿phâgÐÄ44•³ñqCÓ6ÿì,´3Œ¦ƒ…¦ò~'BSC0W*‘І»¸Lu4o—Úv ÚR¡  ·ðš4̃C–-š¾L0ÐT¶þ° Ð$°ÎN4ÔÛLcÙtÛùàŸñëŠU~/üÕLlN?ëÝÜñ&ül ;ûlª>#„À:ßûre&f-U{ÿ.…gôù^Ùöb–äà3íwlŠÜÁgblS†à3Pä¥-œ™²ìwìD $BVåW§8öl)é_r`Ïô Íê°3ÖtÏs¶sÏ̈¨Ý‹{FéR]Ô3LÒ‡ÛA.ê™9¹)–«‘TÎÐ3[<<ó¸“kQÏÔ9ôœ¥QÏLn!÷ËmQÏL¹B¹g©Œ;yMêŠUçž¡XéÆÎ=#­¡ß±gôh0¦ö #„ú=ãiaÑÐ3:(ya@ϰJ3ûžzVð(q£¸RNú‡zƦ›m§žaLÈ9êYRèWç•#úv'õL;X3¦pê™ *zF“:;Ó zFÓ×. gRlËг¥$è™É×=¡g˜Sh$è®$ØßíÐ3j„Ú=™gåôÝ`ž1èêNÌ3©‚y†t7š™m4Ø·;#Ï$Zœ3Ïxö´3 æGP<±3ÏplQÞ<˜g…ãï:™gÚé2I$æ™T*ƒy†•»Ê“‚y†‹‚&Èćv{oœGÐ,’gó°‰<+Lf%`f¶þ>æßžÝk^èç©ô®a-äƒ J"žM5ˆgZqw –~Úü'äv:wó0s “y6…=[ªSÏ -~ªÏ9¹g%r -;÷ ¿&'ŸÙjñìA>cyy—>“Æxä3„R&øŒ¿µLà3½5k€Ï,Ñ}^ h¦e›mùlËó85ÃRw೩$ðÙT|fÐ'ùŒEw+|F ¢â~¡ZÐõy|¦`µíýø Þ7P€Ï¼R™ž©$ð™©Vâ„c7e£Ú¥øÌ"VOÍà3ÚÁðpð™|™|ÆßÊ‘%ð&ŒN>CÐä3ú¼¨-ò™® û~'Ÿéì5 “mŠ¿wîYh=³`Ÿkç™v ˆjÇž1ÃkŒÃT‹ybhIÃÌú{ÇžM5z‰3Â/xfÞzeìw˜ÚÄçaªQÌ!°gÅ Gæž”Ã8g}Ö°Ü3^0yçž¡V§šÝá`sØi¢ÛÌ`'½f•½NÜ3zÃ!–÷lý½sÏLí›,¡…kòÌ«Ñã¼cϬñò^GÝÝšƒz¦%:•t {†o¬¼|{f½òÊ@:öLQGVq {¦Ã/{FlRk—šQí$ß®Ä=SØš‰zV¼h4¸gSHܳ¥:÷Œ¢•÷÷ŒÏ{¾°gdÔµY왳ÉuÇså‘ö Uç*¸g¼‘™¸œ¾¦–+aÏpg“E`Ï(BR& °gKرgKuìYäRðÌpN‚/¨nCUø -‚Àž©ûßšwìª66 {¦wÃk<Àg,e ëܳù÷Ž= 1¨gÚ±vXþ«º%•I9ÖT«´ÿÁ:Ð#‡VÎ`ÂS3ôlª=Ãjö}GÕm¹¬ûiAÏhÖP, g²BÀTÀ™gZ-?Ö;µgO·8ˆgjRUßàÎ;Ód ê@àÎn«-ŠÙgùø(Ò™Xg -YÅ?ÓG'Åß™t6Õ µé†ç ³î„Ì9S£Ruû1‡H>41åìþûAçÿ9û_†œu‰:N¾…9“ ZpÊRغAóS^MÊ(‡3agý ¨ý¥ÁNjø‘ ³¦Ï§ÚãÞ›3¥Úql¸³Þªùñ0WÝ ŠŒ‡` Ë ÚŽéF%ŽjRÞoØQtPuŠ‹n; -äYÇúæòc&ó¬W/­S鯂$±YMoWföÒÀ| |Ö•ìÃï¤g³ Ö%:Uõª\(ü¬©–CU,BS-(B'ÁH¨àÏŠñu…Üùgêæ¹Œ -é4™mÙq@+–h–²Њñz ÐÚBó”ÀZhMõÁÍÞltqˆV§¶úœ Ÿ „¦ÖQZ"‹Z-wìÛËÄsÒÍiÏ£ñN¼]EK©eCrmrwºµ²* -Ô æŠw§¸«…}n04QTÕð¾S ÃÉ[U£¡5mªá8«Æ~¸"óÓt«~Óa¡sQ”¹E¥8F™¦º’)’L¾R -ÀÎ=L-¸à R&M_ﺙÇ¢+8í m)cG£MY]?²ŠÔ'±Öè - ˜ºi9Õ‡âç·š¹ã: C_ã±­ôÒ… õP±Îçòõx6é£KN:JäÅLE¾úK–³Áó(ŽØ4dU¯RÔS#ÁÅÓaZÇìAYà4d=ªÕ* ¬V¦v:MÊ盟öÒÙœÛT<Ös6läÜ`ÒNO;O3ÚšŠ½ô&7y.¹Óï @MüÝÆÌc-BÖÇP:N;о»µÇ”<.¯ÉÖ‹¬ºb!v£¤ÖÕ6Â…Q³ÝÌ£hµ;á¤xY§xÒ%*2ÙØ²kÝLë¾l(T].G)ª¥,”ÚçUv$Ó±)¥Ê^ Eñ0)M¸U^:Qjý)þÄé¾Tû]Ç]OŽÍ­ž»¬JÚžŸ ¥Ö±ÓC š÷‡6ì[%6èà"ÙŸÇ|(5O˜ê)Â/{|¨Å¿N'ª‡Sc÷d©InB N'¦`Ê(vº•ð|Œw¿²k]=y·ìY¿U{{ÜšÁù}Iÿ™W½«TÙ -mÆFS“Üâõ@Šqàõ@ÚéK©î±¶xjRÍZµI2Ÿî:\§+]%¥JYyQìº8L}š–…TërL¤Š©,­k¯b5:}cª}b ü¯)“Q¬ ¦L8¹¡]^̵pàéùÓ]е¾*©q¤‰}úXƒíêôo¶s±jØ R˜Qh—ҜɳLÇš"dIŸ“¨P{šùú©É‡Ûâsî ?]ø‚±$‘}P¹¬Š‹t YŠÃ3XjLåÚxkKÖâDYº.LÆÀ±[£ƒ&£©ø§Ê½VŸë@½ÇmoƘ¼Áœê\µMuPHÏÏÂð¯[[b×öö9}³½e*OW³š+ÕúˆÒ.;¶=^Ê÷WeåÜ×K· •C±çNý}`Õ×{t˜Þöö+üÝôÒ‰ƒW#P!‹b>„É–RëÆdÛäǺ~ôÔxWjyT•Ì~êØ_-*ºâv°v`U¢7»­yo)åÞøl›<ŒÐÖ1Çô0F[W‹f·– iÓ+ÉJê8;KІµ¶Ÿ·FDð2[ɉjëj.û<£|"]…&u¢‹ D—ÛÞžú“Ö&Ùê•oÓ`Ó5ÁºVw°Â)]~ÄÁ°Î8ˆd3ìn*)åÄW -w´’#*Ë3á(©7s4n·w3^ÔÓZ>Qp½dž0F ÎæeMH¤¼YkÝè=€®)uÐô[f¡Û†ÂŒNC´Xú\þÏɬ “:¥AýþeÊê]•\0êa Qþ–ÕK·¢O⃕P³±{ÜmÐeÙà amÊ3NΆ¼ywÌEp´á\zZÎoô%ÖvÃm¨jBusÏîZ¨ŸE=NŸš"ôJLìçx5¶Ç¸m7ÉÒÑΩ» ¥ÖÎIs - !uiN–2÷§{T!´îÏõð÷úlvÍluÒÜôûm“‰›˜_—CÙ‹J0UÌS¡¯íZ?ÔT•’©“q¨–‡U›­ 4e­Äн”Yºïx¸É½ä²È÷PÕµ,4¡ÛO¦›ìxï*+§…ûÐÏѲ¡Ê2@‰¿¡ýÕ¥ht(ö©rw­ -.Ï•¾á$y>ŸMQT~úg-YŽ"š„FSv½ÝÖÝ ¯[y“NÓ²¥G†Z›i -œ* Ói̼-ùUßOw´%k©ýþÐúÁ ÛªÓ4¼j/3•y~O`Ôë@¹ÐÜÖÄúPÅ?C–óªJîLH…û¦z'± `Ô¶1Þ·ŠtÔæçW«Ì¡®W) -€J±ù@o6-Žôõz½ýž“õÞÐæöî6Cp³›æìKñ—jmûq‡/›­èß”Ý~dÉêfÐF~¨ßZë`="Œtú½{›ôâ½é;Ÿc?P[emAõ˜mÊîÂ¿äæžÝúŒ³çî«Ç¡ÖܪoʼX¦OYû %z³±ý©‰z’ß–¬s®àqØùÆ~Z!Ûi²=Kño;¬jp(Šè1|4V«Ç…˜µ†|3ca1h¼>-ÁzIÊÙ=Y`¿\­¥,ytÌô?“L ‹Úë&³Hüe/!eZ ¼ˆƒßþKåR^¨I:a¼}ñnSñGü¶ñvàcÙü¾uLÅ”}M.;G£êgÍg¦ÔÌÓúÔ«³P]@8¾Œ.dÆ=…Ùaià^ÚpU•ËךfP›Uq°|æ…W1;kš¼¹}¯k£ÂiÞb¥“N“3+(¨ŒJI,Eý ·ÉÅÌ-Û~J–Ìf\S.Q‘Ö…9U"‡5Jh÷§WêªU‹™€k±7r£¿=µÁ2PcÈñV–Ãc(LÈ»‡òŸs[U}ÈÚ„ÉÑ g;󩤱aÉŠôcyHSÎÑ=XºªçÔì±qý궬P,´ë¦ÄZݽ#®«?Åxk$®ã™wÚ`¦eA'ú¢NþËV£‡?ZqF'üˆË¦b­lÉG¨t¢âPfQ.©^©gJ¥‡dÉôôUÅIHRzv¸Â¹”¢"C) ×Eôz4A v«Š)§í -ª]Ê»3¤’³{~fóH“âÆv¢ùô!WJ.ÂáûüªŠ‘´»aVÞ¶‡‘ðy8ST`ŧñˆ'GN²-”ìé—½”«bæUM¡`¦Îi€ÔwS¾§ÒÏÆTÖòSgŪî[eÓØÎê9™L9mˆ¨[×MCWP©OµÇh1¼)÷ÆX²J|TX ³ióó}Ú³·Ûgªªç§6g)”g/Å G{> ½Ü÷Ðã´/<Î.'¹Zà´ø®êñPØshbPôŽ—N)ÉC±{ÇÂqL»M5í¬á蔆°Ì»ºÖd*ÎQœŠ¾®z›SWõÊø|AM¦,¼œdÜ›Úì86 R Ëu±‚XYc‹ÿL3Xw¯—l'îv±¹TzsÖ½&]N¿‚!¿>?|~V#î[o_˜LAMî3>U*0§Õì§‚JGTßÒ±ìØߺó×açƒuˆ -nOvô·þ3kIC¼.[žj|H_»®Þ#qá¦âgÆ9YÛ‡…éª ÖÍ*w*}cË-Ylvíýº:•YeÂ<Ò®ó°]ŸNÎjŸC¾õ#UÁ­ oŽ©îm) -eK„€2s’mؼÜ!…p÷U .‡Âj]Ut'ÙV⸆i€•=cÌfu ®‰í¹Cñ;/†ðy 6»Š1È÷CKÁ¥p–fyÊ·O)öÜÇÝ -å´‹/'û¾uf(tm62ó@Åe •SïçASÛ—ÊdÚ†(º:¸·.’ׄe/ì¸ÆØ”klŒ¹%+0¤^ûÛ6ˆÄ†ug©JˆTV ±”‘|Ï–|T;w.©rg -1mNÍ5†’jŒ9”›„e³L/Õ*ePå[ùPtÛiЩ´¬cq›Ÿ¥Ô{sF^r/V ¯'¤‘;:ì‘èZîi<ŸÊÆ€‹ñý:gc¥äºw,¥]3 ¸‰Å²+ÊÃ~VºI:òY¯F’îÜ2\Ü€4f¨²2qú„âAæÏi>ýÍ MU B¥HÆ …`>†nÅKOö²æõ )ÁÒ^Ê©…œå͆}êõðÛëšë㈗æ—Õ•¥$‡ØNKl/E}Yu+!—ӬػÜE5*•̆A!>TSñ3Üíæ[*Çø(û JÍ-«eê’ìYèËRˆ½xúJy? –bkEåb'o® -âuàæˆ–’Q<M  þg¸y–â¡×7¯Ëíñ"ÿ6ßc)çæ^±äZͨÍÌžòÜäp´=|<ó]Vd[+äj‰oKí¨…—sV‡ç(Zf‘sž›^dΜ~>³ŒÞLã–”ÓìJ54;E‹>§ÜÄ#s Éàç”aðïQ-Å·)Dz²_j± -ËF -ëœørŠÍgÅ¿®wËlžV£ O°˜-éye&‹®[Sù³äÿïh)Έ¿°Bըؚ³ß7¥ml²%à -ü»âÆbõw" «]è—N÷ÔçJ Ê(°lÊó0i–a •­£o\:EK­&SÖ7”ê‚,´j\º¡2L.˜§'—N!ïfϬVE"|ª¿-¢¬%ÛIZ~l\º‰0‰þA‡ã¬D`°©—`å #æm(ù°Ã0 œsû;¥“BŒefvH¯06ww­!ˆ¦å$Õ $&ôsu»P˜=‘^¬tǧÿ€N™œöµ2R ˆðl“[›ßö´@XS.KCµÛŠë«ò†HoMqgÙ¸tcxÞ[__~–ºPî¤4n_ÈhG<Ét’=$ƒ¦˜Mio*…ÀÆã±—®žCE™Oézn»¢GcÉv[6…š­ú&šN2§__GM‰[ªáÒÂjÍ—±ZóN4Ý #Ru1Xña¾§"¥n¥@üÓPºN?ºQ?;#ž×áÏ=FiÅ^Ên·ûë ŸJ®4yUL.—"uìLTƒ‰ÉP˜@q†ëÊÉJbRuÁé~5úÜf·=°“ÑŠTTÀé$VwÙ–LOÊàtRlA¢—N8d[¦ñŽ1¤PT§­jÁºLýZ§\×` 7C<ár.}êµ…¡µFyšî¾ §UÑ$^0QÀ]³Õ3i( —ýÒ8£–ËI§³Q´›lË[´ ":PÕ_ïAzòOgií Õ¶9ùtê."…Zcp…#k]A0º¥5•;š„º]3Y‹ÃÖRUË (¨‰Ò#ë´¥R‹©Ug 0[&ÚM4füVcnÑC@r›L$ÏÛ2bxÆhÔ×c_l±ê4ôzª\ uBkò"û F¬Š)4PÌ5Óëžeé^'™—öáâØk=ŒR·\Ay-Õ.{Cì[ÿPu¼’ ‰ò@›¡„J͆¥ö€Ö ŠøaÝÊLß—ôŸ¿~÷h‰|) ¤õÖâÖµÇå’q]d-ÍÖJ IéŸ1ÍÂA]‡¬•o¥«LC„Eë¥iQEVïÝÔƒE7‘Í;BîøŽ{ÔŽ‚fv]b‰ ƤüœâÄš¿9yÚZ±blÆAù£‚¤:ºM;‹a'¹0KÖBŸÊ%¥¤XM$dËÓŽY;d–*ùP ŸaÛ4¥:e Q&ÈNe3Çg$¢ÚlµW>‹EB ækk0QvÔ‚¦«(èx ^V”ªUx×–Y?¯Å}ôŸ‘C°/«&gʯ¢² Vù=—Í7 f§m{c&Ò  ¥$aØÇKY­ÁA!]Jô­ô-‚ûœ^ÌÌN_϶(ý´ˆ•b$vÈØXvDN”È@Ö;wë=}¥ï+Å…e­,õ ˜ "¾ÚqŸ¹È¾…¶±¼Óa• e×!jéu·åz@èu4 ä°·¾7’"NýÑÀ¯ò­;‰n²Û%$®¤n–‰ÚuM’^H{s¥$tQ¼JÒ­!¶ˆ@=6À’¢”2iµÎL̽Áž°j´W·èÒT¶pv¶„Œ9•/çº×Ë ’«özwÛƒª&lít³}®ÐCÌ„QVo6‹ƒÙ u  '?ÔN_¦Rhu_–\%ÄE –.*”5L5ƒj€XÜd‹Ñ>ÿ1<¢cc‘|'8ßLü=ÃŒ#Ñö´2:,v¨)Æ_8»+õ]-ët{¿¡ê-}ãNõç=nþý™]«7æ+êS'áN-l­ð­Pß›VC6¿ -g#ü„ŽéQ2¹Â§È]3 Üi…°tJÕjÅ -‰¤œÓ”²°’ Ú"ÇgØ\§7£_”¯ù©Ól­A»m÷ öNÊC•…ÈZõjEKQ–¹¡PœÌ õÚD¨·DKlzötû‹pºëùàI&f=:_NÞK”ÒI¹èoŸnŽg‹ö6ºR—]¯·×ÒžáE¡ôåx6H…—(TV-K‰œŸÌ˺锾Ã|EûÝÉ1Ó@Iþ™¾Q&°ÏBµ]CœÅSeáÉÅÛ* úÙc=çî -tc+¨Å•)ã ørañ4F±ÑaAG‰£ÓU DÚV£E±ª©>Ÿ-DàN¿ÒÑPúÒ—Uò’Ð4Á¯ÒVý¬X™"‡Ûx7ùØð‰ÝnƒÏÕeO\Ã$ίH¬ 52W¤šÔW5FžB«V¸£`÷¤äѦD¹¯öˆ”€v¯3"*M%jµf¥þ+O¯ts÷jÈ2l—Ö÷¬w £+@ -Ιà þ¼–ÜA,4©"ß(,ŠZÖÁ8T[SÀ’—ÚBtžÞ[ -eÂó´2bƒ+™Ý~'&Îu/V™L×T±ÍÀbè1b[MÀiÕhz/ } Hvú·`Ãm¶ÆÏü¥‘‹kÞK}5ç·ÝVå©GÀRÝLô{È• ¬àRpùq?d¹©„UM®Õj”-:ÑaD-w7Ze±í¾Q/—ŠM;4¶›Ï\egRè 0½Ðj˜Ÿ©L8"÷zop½ÂD—묆×krœ`¾ÕxmÑL­“žÙì2+¢«• 3®SJ¨±ªÛíß¶ý¬¾—ÊÞ€¾ÖRhmQœZåNÚÿÓ^ºh{’B•º:¡€Ë«RTà#å>ØúzDIî~ îÉg…Ĭq3­k°§âh“¼Ç×>¡[ÙD£ð™É¥:}O± -²õŠ®_zz¸¦ÂMÖÊX%4Êvé@cðpì6m>Él’T.Èe/ÞŸÅ9+RX†£,Ÿh[Š/!ƒã‰Ž’C½@>”jÇlL>^ª‹ª’N¨|§—(Si¤Ô2pƒnò¾‘ù¦L&'aå†ÝÄiç„4¾‚EfmkN=³Koø†Ký×èu„㼞J#hµÝ0}ž¸Ô“o¤>™Ô²–³±úŠ9oëYX´>â6à ¬H9(~ª*´ôXjÁdjé¶…›ï—‡»"f¼•rþ´›Š—iOÛµû4aÙÇY%á1|åöH3+«õAûXôqËÝÞ[§Å¾UhÓ9‰}z9ÉkjP(ÓÇ]T7¨2½´ûäÝJ߈}YÖX`Ê -è`¯Š3e6^If·)k†÷qf`AÊK!+eu3¨“L£†‚Û û”èµH¥î̓”˳Nº'²O6»4i2&Ÿ3áw™´V ”_7ì1f]œdÝ’-#<¼èK -‹hÁ²éNlLê°ÊËbÒ$àI©QjýØ[Yä²]{ÙZ4Ùv©"N1h:eK²i-¦`6†Ú/Õøb¹¨› •2bÜ`˜ÿ/wÓÎf2ûèó³îÖêåXÏãÅ "ÖJÅ*K«L&³O+[j?ÎÜ’$‡™ö«dý±PÉØ@/ªp¦éN2ý®($Rîa/%v26dŸTO·ûK°µ‰þ´‚5ý9 ÖTg|QŸ-µ ž¢ùŽTˆ:‰ªTMÏ"öI¦~S²•v‹yyzñ)ÖÝ&e"û$S.„¬ì8§’pšÞÌBnÅ7X×½˜}ƒ1?ãÙ§\ã]µŽ¢_Q½&Sª Ô7ûó`Ñí}4cöé~±¦ì•þP0Ÿ‚yPMf_Þ^ïÃ7‰JS°å ˆSaô«¡ç<7h_×&’îTŒ ôT#ô -|ƘØ6j_¿=>¬AÖšpî©Ñˆh‰¢¥ñÞ=$º ÁTV©”÷‚]Q×6W%•²2*©Üh=¡²£fW#ÿ;N J7ÅÊöW.j2«!ê—è“´çІc)Ö¸!eRû:Ô]R1bi;c™#'uÆ]ù<ñf÷ØÐW”ÕÚØþØdÁ÷ ž\$.ÂfZƒYÞ±lÔ>ú`Ißf C«…U‚Qä¤íÐmu[Û§Ázͺc$4y-ëå^ êb¶RŽo’ûØ&UV›Ã¢i=z¢XD3­)›Æ„¨ÝŒ¸a÷s[L¾YìZ®šîôI²;ÑPwÒ"ø!+p5;GôèH°œ”–,DSÚÆù¡Ïæ‰ãàG“ô=\!ý"Åß{¹l©­â BÉB+Ø–óK€BÈQ)¿Ê5møYª@·ª*êÁ@«IŒnJÕX“VáÍ*œ¡Ù¤²,¹Íõ@cìÄU¢|eT40~ÊyZäs˜ë®ò¶éÒ²Y‹ •¯[©·âß³¾B%ë—|a´ -±DS÷,®†~úÔÓbJÇÆð£CÀžÊÃ6Ytb±ßÁzïô/¬Ê4½³Œd7n -Ø)ÊàóR6˜òíž ¿ðY‘2&Fc¿}ƒóL>Œê&ÆoÔ#†½h")ÃK6eD­ä ²KÔêLËõR>•fSÝ„„"©îEFuÌCƒ¿A±ùáuNø³Ì»-àO)xU‹AO ŠŸR”– k\WÏŽ/ª•÷  Á—…[W#d•SøF_ƒˆ¼ÙµüÁˆìåìÐ_Dá—×_êŒS]¨Ï¨Öræ ó;Ôýª™_à´!…u -7¡Üy«roe¸’-.Ù^Hm ŸÐе·}äÂø‘ëÇnã1²–%þn+ù!òNùúò“÷.Ðj³ò+úBõtP³¡ho¶Ñ[/†ßÀöBíVim^0×Èâ Ë!20HY?“;paüT—@AR3ˆŸîz+¾œ)¬üðÖ ]ôñS2u•n7Ëè]—e··ëË£kš¼§5™’ëUñÆ:]_ü1š5N¼Zµ+-în3…P, ¸Á}¨gT í 4ªÛj UäR?e½\¡?*ÑeS „ˆ¿Ð,=a~ªÙ‚ÐÂî]ø®Îàí0³…óÓZ…" m1ÉŽ*WMPaÚ ®Çî3 RH hk©ÕR…žŠ°Á¾=\ÞŠw9išf¶G˜Ç^JÈDѢǺš†…i[W-æjî×ð–”ñ™$ù¸iÇ-¶©ÇËÿ~LþßñGíEUHP››Éø£ö‚myÈTZ¡¹ë²*†D ÛÜO‹½‘ÝØéÞ¥ðU÷® àGÄZÂ0ˆ´s na͋҉¼9”ÅŽ¹ì˜óáÉk—Çx¤ð0Û¡æIg)dCQ&ëo”pÑд_½Ó¬6wÖèMª³²˜ÄíôuŠ"ú\Ýõ^75ðô­ÖKºZZàÏCó¿ì TÁc×à3 Ø9“?0[·ãú@lvÅÚÊËuèsÆ"·›b­²[M½§ûRA[½ý¥):¢§^oÖ]˜wüç9ùŒ§e -Œ…y¶.Ãúk¬`áÿ>Ϫ½Ñ:­ I€ÓÛö—R6Ý’µ”dÀà }yWçyÐA‡]å¹ €Šq욇©õÎŒ‡auˆ…ñüžµƒR))„+|بŽqŸ¢ÊRŒ'Uú–Y’ìaÃn’êŠ`€ƒ­Ò¾Tmެi¸z}Ë»‹‚sì&Êå"K®Ö8Ô2qíŒ -£Ú¬òÚ¹a‡×?Lõü\-ÅBa)é²,¹6c9±ôfY UÜé²0«h»1逃¶Òné{:_ºj·²ø€È—obˆp£h¢›R¤–ÚÆN¼"¢®Z£/ÿÐ(´Ç>ÆD˜”@ÝYÄ *ÞõºÃ¯Ë²Ú P²|T¥œ•Ï„â+ [Çé-X^ õ°Ø;ò¥arÁ!ÛNä1R  ™jÈUÈû=6ÿwsÐÿ˜HTÏnØkCvJº¥&™ð­#Éqal䘱µÙSñ6µ+OHó·Z‘é·£uø¶ædÏ.+ìƒÕ=’ ž"Ö¹Db$zØ”“@™Ì@ÂæT,Œ¤ê’b}ãÅ‚Õ*LÁ—ÉàåusiqëÓ¸ô$šéÍmŽôR "úIDf-&ïÅaP…ª›·R¼beku£*µdá¬JHÌš- ®K ¯CÙ§îï¾¥‡»; èÛ=Ã"¸¶\SÇ&¯‹úÏ_¿HÓü£…ý¤ªù¡Š¥¹w;âÖ¼ -DJÑÂeR‘Ê(/ˆƒW.à[ íÚ ‚ýrIn™ï<=ÑVßïwx¾t„¤€éx†¬Þü»[¯kCCæX9«DÆÖíôL‹3±“µ á„à ™Ùà³½Ô¶ðÜ»Ù!˜yŸÌ e<öf‹ÿAàŠïõ·r¤†=¼ÜÉãsò¶.H +ì—¯gJUe¤W¥VK÷/…äàï–ì58RP§*Û‰Ó›ó}7þlÁA²¨÷ýÀ™è0®¬ ݌ضòÆ%_fyÊãÎ)ì-zšT궲ݛêaP -¡f,| vÓª0Q‚lCë0ÙåÛHòÌÔÈ4Klcw:9‚z¥ÕãUw®'^Ƚ:Ï–jÛöÅT|”4>ù'z¿=­÷Î:º®ÓÖþT–MŽ !j*Øtc∫=$%–Z ²Ÿ%ì…e#ˆŠ}äeÅIˆG£Ðex>Þe¨W–ÕÀûéGÅoìt›BY„Q!À¥„çìÜÞª(βl u¶DVõå{üüûs¼²ð§¨ÇÆTþCK„úöµ^lwx#jÎ!Çþ¸×š”Å”l­¨’ñ;Õò‹Û(¦«öx#u‹âùÒ9vS“©Wž>Þc~Å»wÏ®Œ5u ^Ø<4 -t+¨I•àŸõ«mó¡Ñ^ž¸{_tY½Åe‹U-d£€ê@V¥šrDå±l'1D -=–œ°B£b¾˜k;‹ m[FFÜì»N10h¦àSûÐT%óâ;E]Ê·4v9šŠj™×Pi2‰5÷6m¬ñéÈVÖ‹"hÛBÚßvŸªÂŠè±¤µ£´½ZKH§oò>—â_¸„;p=!6ðvkh¶uŠºüg¾ ÿUMëÍ EðZ ƒ_ ô<ÓÁÕÊ&”lÆä¸¸M«™ƒ«ê,cecª†•Ö)õ=ÖæíÝu§MEM j®Jt¶Û-ƒ¦Lãÿp”צ” P¸äŽ9‰ÞÊV‹pâ)ü•EÄaØ‹QÈWy¬òÞR;O]ÎËæ}þxëMu•ùVïö‡Z®ÛX -‡ªt˜|Ÿ_ëÜ@… wgT5LÈsFó²Íƒj3´R²PÆØX…K¦GD׃P -ïÙný_­Ý”L(…|=n‘­{@$VGZ6öÇ»2W¨F¹θîC¬„iÀ~óhò°7å?g„?ñyà9¢4çð­ùTòØ2ä§•j6:yŠ¢˜wIÌkãš'M@îô$?R3Å|#ªdàÀ€_iüI,4'.·ø€D8éSù¯XËò\…:0Á#â´IXícÏYÌ|} Mn!÷Ët†š)W(÷,rÃ9«(:,OI1w#þ¶²•²ñ -IØ3]¨Ä¥Øqät$,ÔºþÀ×@NIY¨2 ·w†,Õ+©t.}w‡§ï»“…ö"´ˆ¹#Å8ðyPˆ>ËAæÞ^ÈS$•šþ¤43ókaÚÔ7b¡ÒXœ(_Iˆä±, Šü[AÍ}Md¡6R\<Ý18FK1ÇeJrî¤ô YhòmÕ¾¶“:ÜD~]¤°¹aÖÀ8Z¨“²Ò+\=½[SF;¹ªól˧m‘ %{Ÿãeƙد›ógìW4#ðö:fÚ7K¶ÆÉ˸^¬B·ãfŠn¥uV©6 J=n²›Â¾MÈÜá.#ª É}ή a(ÙJ(‘‡Ø)×’%¥ð·7óòf³Æ™õ Â>ÁÜ¾ÝšŽ«¼}x°nË7¶Å:°‡¡äÑèÁýPÈ”ž{…ø:Pµ1”¥3ý¹É•»ì[á·ýí{¿Ë-hý ÕÈš÷TˆX(E¯}jÈê©À}I"ÿ*0Z05ôrᜅ_ÍOäUO|Í@Lèé/}Ù€‰¨k‚€™ôé© "ª*–UþåÏôyúšë>,§Rx…ýö¾üúGÔeJYOw~¥’d -ÚLäá”g ÙÀ…Pô]ZÔih<n³ç–®ãÄSm(KÖÃÉoÄõ›‰ÍO³jP¥Â—©ìnB±/Ôx)e¡‘õj¨M¥âå(TW|þ‡TÊÚ³*—c/­ÿánJ…ªó ÿ÷ H¬­rß\‘)²}®á6ÔÊjј]ûR|öŒ>…y ÖýźG–ͨÃl’'?ezJÔ{B&T-ØÕ•âÙnYÙ³>Ô*m¢Gõ6`ú@ˆ„ëzWë߇rHÍ]I(×·5À<°G5.9U´M¥œq“kˆ¢B‰‚âÃMtøÔ¶Ç½A);°vÂ(œK3éÃá(tñ(u¾j$Ÿö†Tó^ŒZTbz@Þ Ž{C#*žm¦®‡÷ˆRÚus~HUN¥ntÄMîô2ShÄ+ËŠ¿Ô“,Û‡×\Ȭwc*9kÃ\ŒDäh¨\D½ãc S -«RåË•õf<(Ø““¸äÛÑiƒž²‰5Ô-*q•©DÖrSж'DGeòL)ˆ)Ï6”ø.)äR¼ÅSþ™ ÖÁ±Ò¦ÆÎ ½•Lì=ª•åk}kÅKgUªCS+v\iX n¢B6¬«Ë]F;ô@³bTÒvÂÕ-GaÕ†žÆÿeÞŠkSÑÕcµ8÷–*WÖo.«kȬJ/ç(† ÒþÅQ UÔß³|lÖf Ž_&Ú7.’"ÝgÕ½õ@) -ÿNwIíaóÿûá÷ÿSü_†)ªÐìL‘ú³S¤š2Á+îØß0E=-¦¨VáSÔÒùLQÑí SDI0E;æ ¦Èûí0E ¦h«õLQký SÔÚaŠzÀñõ¡J'`ŠbL±’ô{Áë²±t˜¢A†v˜"ë·7LQr†)²¦¨cÁé ¿€î0EäSD}ƒ)ò^½f˜b «À SÔÄ BË9‰@_¾aŠå¾LQÓA†).%1û6ÙaŠ*Q%ðÖ ¦Èòk‡)NH0Åò˜CGf)¢; –"Jb)JùÁR”œYŠR2KQŠ1¼KÔYb)²`L,ÅMÙYŠK–¢~{f)jöüÁR,@€w–¢MË -aLqSÒ•™²á)&N8E]ô8Å"7´§XäWqã §ˆ¼ãN±ÈÒâ¨_4EÔûØhŠR2M±ÜÇ/š¢j¢2M±ÙÞiŠZáü )Öò|Ñ+Pù¦ˆÂ›¦ˆœhŠæ4u_‹¦ø˜×lë…hÕÞ‹¦ÈUK4EŠvš"wâ7M±Eáü¤)Ú »ÓíyxÑõàdš¢=a;M‘Œï›¦8;K'MQeE™¦ˆ%Ü›¦HŠ:ÑyMQÙË7M5ÑQvš¢„4EÉ™¦(%Ó)©zÓUÇiŠ ÷¬¦ø¾¤ÿÌ«NôMS”œiŠ˜hŠRÞ4Eø‰¦hæ^;M‘.íošb¹Ó+Õ¢$QëÒ4E¢m‰¦¨y4Ó+½?ç7MQ2v,“¦ˆ’hŠXp¼hŠRÙRNšb%‹²ÓQÞ4E¹ÚÑÕ4EœéMQ•°oš¢âX4oMš"û…DSÜ”¦¸ä )Ö‰1 H"£Ã›¦¨(ÓksëÖIS\ÊNSÜT£)ò³vš"Á7Mo›DSDiçFSä¥oš¢äLS¬`…vš¢”4EŠˆMGÃDS\J¢)n²Óõ™¦¨Uàš"M”‰¦X…1H4Å¥$šâ&;MQõ#™¦ˆ¡É‹¦XiØiŠ„~MQsÄš¢Â癦H³r¢)bÿû¦)’2J4EæàDSÔ¼÷ƒ¦(9Ó¥dšbÃÐü›¦(5ÓQMåMS¬¤mvš¢©LS| kJUuÑš¢R™¦¨JªLS”©Öš¢äLSÄ+Ñ1îzÓ‘7š"/L4EÞüMSÔæ>ÓJÈ4Eå½ß4ÅFïîNSÄÃ6Ñ ¼iŠ„MÑ‚ ;MåMSDÞiЉ¦È‡¾hŠúý™¦¨iŠKÙiŠK š¢"™¦¨´ûš¢j 2MQÆŒ™¦¨‚»4E˜iŠð¾MDü›¦Ë;ÑuJ2Mq)‰¦¸ä )â)”hŠ-›3MQþ‰™¦¨:ÁLS\J¢).9hŠ”Ûl4EÕIü )ê«dšb勦ˆEÏ›¦ˆœhŠ(‰¦ØFýES”œiŠR2MQÊš".Ò‰¦9>Ñí¦yÑU)ŸhЧßiŠ›²Ó–yV牦¨¯ñƒ¦¨;,ÓAÇ'šâ¦ì4Å%M²J¢)²‚Óu?dš"“ES\&šâ’ƒ¦¨wÊ4EÊ–Þ4ELÅM±á|´ÓÍJꛦˆïT¢)JÉ4E)?hŠÄZMQJ¦)Ú1ß4E…m3MQ6\™¦(;¨4E¼ÇMQs@¦).%Ñ7ÙiŠí6ïÛ SÔ‡þ€)ò]LQJ‚)â^õ‚)šºÃya‚)òæo˜¢¦­ SÔÜœaŠKI0ÅMv˜bc׿Áñö|Á¹.;LcµSlTý¾`Šx%˜¢† SuçL‘-`‚)j–aŠKÉCÔ¦Hqi‚)¶2~Á©×O0Åv´/˜b›dóS$IJÃqðyÁ1/ÙaŠš33Lr× ¦ˆš`Цì0ES^0EJ"L%ÁQÞ0E -[LQJ‚)JxÃm]±Ã!&˜"×ç S¬a­0Eú=L‘Þ¦HC‚)š²Ãy)1¦SÄa!ÁÕ™aŠæL÷‚)j?”aŠØSÜ”¦¸ä€)V¬ºw˜"ø¸7LQ÷M†)je”aŠò‰ùS”œaŠXä%˜b¥åS”œ`ŠXÑì0EŽxé¢I0EœóL‘º§7LQr‚)JÈ0E•Þý€)"'˜"/Ýaмù¦¨_‘`ŠªJ0Å)$˜âT¦X™üv˜"Ö€/˜"R;LQÃÌSŒ¿L1Ä€)jÿ—aŠúþ?`Šº»2LÑNáSÜ”¦¸ä€)Ö(—˜"?æ SDN0E)¦(åL‘:o˜"±ŸSÔB/õüSÄnü S´²ó²ÁY¡&˜â¦ì0Å%LQû SÄsó SÔ¨˜aŠt>'˜âRLqÉSÔ•aŠºùÞ0EŠLQ° S„bò†)2ú$˜¢^ú¦¨˜O†)ª=+ÃÁ·}ÃiÁM0EsëÚaŠKI0Å%;L‘ˆù¦Hn‚)ª=6ÃßAóPÿ—`Š-^3L±•ñSäÀSÄ{ù Sä¾L0EǦ¨ëð¦ˆÜëb)âf‘XŠR~°¹°‰¥(%±‰÷½YŠº¥2KQ€¡ÌRd¾{±{Ì,E™^d–¢˜?XŠ -xï,EÅ2KQÁ–,Eɉ¥Èq;KQ–"òÎR$š“XŠR~°I®$–¢•4n,ŦíÔ›¥œ%±ðÊ,EÚâ_,E踈8JQMö ¥ØHw¿PŠj»Ï(E~UB)êdÿ@)JÎ(E)¥ÑàR$˜PŠ( ¥ˆòF)JÎ(EúÿJQçèJQAµŒRë’PŠ" ÿ@)ª 7£A¿$”¢Îð”¢ât¥ØØhm(E]µ(EM&¥¨`Þ”¢äŒRÔ·Ï(Eó y¡±I(E”„RDÑ8‘ÉË$’¢¾F")6Z‡^$Eõüf’"E>‰¤ÈPò&)Úº“fIñ=B¯!þ/“-%ò")êþJ$ŶÈ;wà#ú›¤Øp×ÞIŠR2IåMRDN$E”DR”ò&)jdÉ$E]­LR´òªIQ&)2s%’bÃíER4—¤Øh’ßIŠ(o’"e€;I!‘y囤¨eO&)êd’âû’þó×o’¢ä“ -’ )²î}#)Ú%\˜HŠÈDº‚¤ˆ¢9v’y3‹í¾œ¬¸IQQÕDR„¥ô&)jÙ–IŠÚW%’¢n »º‰¤Èý"®IR¤j)‘ë|ÂI9‘ùŒ#Úäyn3JQ0¥h›E=R¬A€L(E3JQ1¦„RT¨ïJëþ„R¬QV0QŠÚSü@)B7H(E‚° ¥H@÷R$¦–PŠuÒÞ¥¨É¥HÜ$¡¥d”"Ê ¥HŸeB)¢l(E{§J‡Ä¥¨s–PŠ„8Þ(EŠÛJ‘ØæŽRä–~¡A$”¢.JF)|£ÓÈ(EdÊ”be¥³£jÊ(Eo”¢n¶ŒR¤=¡A™½QŠú2¥H€+¡)ô}£‘w”"BB)Z_EF)Zíï†R´S¶£¥ü@)ê»f”¢ŠY‘Jñ=pþý©ïÚ7J‘Â5qJ&J‘R¤žðRDN(Eê‰ÕJvE ¥ˆoìQ7”¢9Éî(ÅA²ŒRTÙRF)RÈDÑ·£iÛ{ê7J‘*ñ„Rdªå¥¨`Ñ”"l©„RÄ–<¡Qô@e”¢d‹’J#g"ŸRDQUlF)jî¦ðj¢5§e”¢’wo”"„„R4ÐÃŽRÄÂ⥨ÜMF)*ÌQŠTÔ¿PŠ dv”b¥iwC)²ä…R$ǘPŠd w”¢2˜o”"‘²¥¨šÊ#¥hvï/”"áÊ„R4󇥨Àê”"MJ;JQAߌR¤ìRÔ+3JQïœQŠ„‡ß(ER¿ ¥¨o—QŠ(o”b ˦‰R´—n(E½û”¢~`F)â#°£–¼QŠœ±„Räd%”bäõB)j\lŒ -R¤¸únJW-·J‘€kB)V'׆RÔ÷ýRr˜PŠÊ)f”"yÀJ‘2Š¥¨f”¢Ö]?PŠø´'”b…uÝI‘ªàI‘ZÌDR4–áNR¤VýERDM$E-Ë&IQŠ•z'’"õꉤH|2‘¥Üšò2IQZ")jà*¥,’"•µo’¢Æ³LRÄoàèIQÃÃ’"e’‰¤ÈèžHŠLm­}“‘J‚¤(…Ÿ3IŠR£3I±†CÛ$)J¡ek’My‘y©‚„“¤XßO’"mp,I‘¬¤¨/Ì''I±€Q{‘U$•IŠ•B𤨉÷IÑšw’"Í'‰¤hSÖ‹¤¨w´›/HŠ5Ì„'IQë¥$Eª!6’"K¥DRd-ø&)’üN$E’‰¤h‹õo’bðÎ )1{“)ˆH$E ™¤X¯çI1Ë ×ì¥êA{~‘‘I‘¥h")¢¼IŠ,‰IQYÞLR”òƒ¤¨ù:“)—H$Eª„Þ$EäDR”’HŠÞ$E¸‚‰¤Hö=‘¥ü )jE“IŠR2IQK¡$EÚ‰w’"E;I'ÝIÑwLIãÎDRd—ü&)²ÁK$Å-Câ$E•«ÿ )6€X;IÅíæxŽxå ¤(5%l Eýù¤¨,@)J EYÜþ)JÎ Åll)bþý)JÎ EÎd)¢¼@ŠD*v¢ö±¤hIÿ/"•œ ¤HÞ()ßxƒ+Iˆ¤ˆM\)B{ƒq‰M EPW ¤ˆ¹ï¤ˆEx)šÃèRÔhð)âÓ›@Šúñ¤¨Ôݤ(5ƒMÙAŠé• ¤ˆœ@ŠX&¢” Å6­Ï¤ˆA)ê™ýR¤¤6ù ¤h¦/"±ü¤H—E)ªö RÔ¸AŠØž'"qÎ7H‘MR)Öh‡š Ŷܸv"£Q)êÉÍ EšgÞ Eä¤(!%¼AŠ´Ø$"‰ùRDyÌ EË2H‘äê¤h™‚¤HX)*ø¤ˆ±j)N×î)*ùù¤¨„g)*íAŠFö~¾ƒÉc$¢>õH‘æ€R¤ +ùÂo¢å#w¢åùv"/}ƒ•ÕË Eú1H±MÔS)*lžAŠ4%¢’K?@м4±ÖÝAŠ3´žAŠú.¤ØÎç ¤HþýRT‚2ƒÉ'"‰ß7H‘nƒRÔ×È E%€£ÇRÔßAŠ´ä½AŠÖã·ƒ¥d¢” EÉ;H‘6µRDyIôï EËûí EZs^ EýöR$Ý¿ƒ•4~ƒ'[~‚õN¤¨ïð¤hò ¤Hx)ê®Ï E6ß E¥Òî&âkdǽsûÑp•YOE.oâ(’6zs§mñä(’£HE ê?8Š”NíEè)‰£¨µÀŽ¢6.™£¨§æG‘2­ÄQdðsÝÑ/Ž"‹ÄQÔÊ1sup™GQç&siXs•FËE≣ø–ÿý€ü¿G‘‹7G‘‹ÄQ¤Ìbç("¼9Šæú²8Šºw3G‘R§7G&Gâ(¢$Ž¢óâ(òމ£(%sí=/ŽbëÏâ(R£“8мp5‘dŽ¢FÌQTEÞŽ¢V™£¨òÌQÔH1Ü}  £H©NÂ(JùQDNE”„QäÍ^EQ+2F±=çF±a±Øã™²1Ѿ,0Š›²óú–EpFt3>"|ó4Ý0ЉF±÷F+øF5aQFQÊŒb€ÅÄ(vU³&Œ¢”ÅŽoæŽQìGì-£¸„„QÜäð&ã¶cÅ„ ò‘1Š€!ž% -â`Ñù (.%_•)EÑèuQ;V9÷E‡5Ê9EQ s$Š"2vAQDaQèE >ŸmETœ(‚¢ÑE[ùIQ”rðÕvŠ¢n,‹SEQ×3S¾¼)ŠZ$Š"k”DQ¤IõMQDNE)™¢ø™ÿ»èLQ$¢÷¦(²]IEkEÚ)ŠÌ×oŠ¢™níE”DQä¥oŠ¢äDQ$|›(ŠDcßEËÃïEEs3E±R$ø¢(*¬)ŠD™E‘æÁ7E9QQE‘º•7E‘¦±¢H_Y¢(’xzShHE]™LQ|_ÔþúýC¶øMQTñF¦(r`¢(JùAQDNEâ·;EQŠ¢6ƒ™¢¨u|¦(*àûƒ¢H?x¢(R•œ(ŠÚÍü ("'Š¢”LQ”òƒ¢ˆ½A¢(²NÅú™¢HÔ!Q)aMEí«~PÛÙ¾(ŠªŠÌÅ¥$Šâ&{ùN‰¢È¨õ¦(jC)ŠTgîE^ÅMvŠ"?,QÛÍL‰¢ˆœ(Š(‰¢(åE‘=h¢(¶óÊEü}ßÅÆ3½SbÈÅMÙ [–E}h¦(ꌿ(Š8$Š"¾¢¸„DQÜdgP8ºSA½)ŠÖ°S &Š¢öž?(ŠŠzdŠ"Á†¢ØØ8¾(ŠÄ§E‘d¢(’£yQQwŠ"¡‰¢(åE‘øñNQDØ)ŠvÄ‹¢²k§(Ò¼”(ŠïñóïÏñš¼Pµ´ËEó°Ù)е¶_E¬xE+žDQ¤èçMQ4K ¢È+E‘wQ­¦a£(R¬‘(Š:Ý‹¢h6l;EQ¥ -™¢X' 6Q s$Š"J¢(Z(äEQDNE”DQäS_EŒwvŠ¢®K¦(N%SMÞ)Фö7ŠbíÝ(ŠWmE+IÙ)Š -G¿)Џr$Š"…މ¢¨…ðŠâ2ĘÊw$QMù¦(NuR©JEºîÞE+BÝ)ŠDÆEq)‰¢¸ä (òÅE‘³÷¦(‚°IEE®2E‘J°7E9QQvŠ¢„E}D¦(JÉE)?(ŠÄÕvŠ¢%YvŠ¢Ý0/Š¢Š.2EQ§$S7e'¥m²S)6NE•æý (Ò;(Š8t&ŠâREqÊ“¢¨ÏÈEÝä?(Š$OEQ›LQœJ¦(š¼Smƒ·SqlySUÖŸ)Š5úA&E‘r½7EßÕ¢ˆÇj¢(=çEQ¡“(ŠÔ &Š"Ǽ)еõLQ¤u#Q,ûAQ´íÏNQ¤<.Q7e§(.Ù(Šz«LQ¬øw¿(Š|•¢Hñ_¢(¢¼)Š&ïE”DQ´ú¢(²¹LEB.‰¢¸”DQ\rP+¡Œ¢ˆÞ7E‘Ë’(Šf½S!•½(Šz`E áDQ„õ¦(²MEÕ\dŠâRòØò¤(ê KE3mxQÍ k§(R´•(Šð ÞE³àÚ)Š3‹ž)ŠdðvŠ¢j`2EQ­c?(Š&ïESvŠ¢)/Š¢VÚ™¢ˆ²QùûMQ$[¿SiÁIEœ4ÞEžžDQ¤¯6Qñõ{SŽ7;EQJ¦(²?ü¦(â¶™(ŠI¡¸—¾)ŠÚ.'Š¢†DQÄ¾à›¢HcN¢(JÉÅMÙ)Š&ïE NE›7E‘"©DQl­Q”ßEÉ™¢ˆíz¢(êûAQ”œ(Š<ˆ‰¢È!oŠ"F@‰¢ØxÅNQÔûEQr¦(B\HE,8ÞEäDQ䥉¢ÈÛ¿)Šú™¢È~+QQÞÅu`PÓߢ(Úºÿ‹¢¨)§(MIÅ¥$Šâ’ƒ¢¨5K¦(â£ñ¢(bÒ’(ŠæeÒEq ;EqªAQTÜl§(¶™Ù)ЍeQmºQYµ¾(ŠRE!QQÞE}@¦(Zâ§(jø¦(® -¨yœ:¨Eq)‰¢¸ä (ÚG,Š"ëú7E‘îÔDQäÃwŠ¢âë?(ŠÀE‘°p¢(.%QMÞ)ŠÔ×&Š¢ÅÑ^EEQJ¢("¼)Š˜ãìE„DQä•oŠ¢®h¢(ê\fŠâRvŠâT'EÑB’;ELË›¢hóóNQ¤Žu§(.!Q§<»ÇßÊEk~Q¹E‘º™DQ„íõ¢(yg£("$Š"/|S‘Eë¤DQ4ÆÑ‹¢¨/·QñØ)ŠSÈE“wŠ"¶‰¢HHðMQ´fÝ¢ˆ•E¢(j/ð¦(⣜(пɰS4ýAQÔ‰¢Hp•æng#R/ö†(*üž!Šíz¾ ŠKIÅMvˆ"ÕI ¢È§¾!ŠÔ$ˆ¢” QDyC‘wˆ"ï• Š³4.C±IEʺDqSvˆâ&;D±Í Z°DÿQ¤d.A•WÈEYOü€("¿!ŠzǢȢ4A§’!ŠKˆ¢6f ¢¢+AYuDQKÐ Q4åQ\r@ñÍLE(Moˆ"2 ¢¨Ù++W8ÙÊ1vÚHwva9ÙCß&»°àWåe÷”Ó¿®ç?ë’·ÇÛŒ.”ÜãYèB´©£ ‹…<Æ»Pògkx/v¡”c\e± K£Nm|Ñ f¼°P¤Ù7(aQ¡Bušî¢ªJXs¨òàQœ]xÂj_èÂ#ôk‘ qû N¡Æ ™ý=À]vp¡’Ç÷Y·P’뺶PB«ÏµP ‡€d-41]‹Yx’@¼2²P¾ˆe<‹X(~L¡/Á`KØy…S \!ûœæBx5›G2¬PûÃr]KÅfÜ;#n§°“ -—h Bý¨±*T©%²‰SxÒhiUÏ4|Jh~ŠÖg& R(´ÄéxCœ.`õœ&¡çP7Z‘n5ðyÎ'Tu])e"Ô5…D'\ªÃ µYíD—9xaüµ vkŠ^Ñï¥j½vtóo£1q -‰K¸TÇ*úRzø}þGV§MëN%¤ÏÀ”C ån×êvž¨Ö}¬î~! uNì7=|PÔãEg K½l"ÎHÂ&fØ;2ˆù®øz8’°´¦ò«®YHBÉÝv°î›Xp«¾¬­ˆ»¶` ØÂÉ$”|3ß“…a ˜„(”$íÖµ…H·Òúª -þ)º+Iø×<‰ÿ…†¸Œ$ÔãÒtI¨²¤Ï&÷^HBí¼¿„’?CÛ½„øZéúO$!ñ”»>_HBäKÍZB/­>ccÉÛ÷V¾ „ºµ>ˤgA O£.(!O……?w*!Í]×Õ•ˆÛsõ5(±£þñ‹JÈ^üªö=-ÁîüÏdò7k›Ä$D>P,1-¥5˜‡¿Õy8¸pB íçÊä¥ïÿ•ëŸ %\Ê%\j@ 9¸YˆkP(3ö=JèL¯ý@Q?Ý"8µ&‡Ï·)_LÂbmí÷bBÍÖr`¢mbca·3 !bc÷²Î{¾É$\Jb.9˜„¸ó4¼k5XÌú¸|1 ‹Š—ÏóÙt¦·±˜„KILÂ%“P,°j=TSßgÆlK™'ø<ܽÊ„ éÅtØâcwè–¨„È6:•åp|!y´‚ñbuüàX—ux˜!¨„PÎ èTB)6$*¡¾^¯6²<”ïfS-´A»kÆó'S …5û qc;ÈûeÓ𛲳ǖxÑÛOwÚ`§w÷ŸL%Ô=vÞϳ(Wí'•pSv*á’ƒJXè‘°Aˆ÷õê_TBݬZæqƒ. KíÏ%\r@ õFœîÉTÔöó‚ñ%T¾cô]f°;ú½ „fètf&!NÅû®|cªµðý,&!3ÊpFÜf;§ÐåxžÅ$”òØþ9“cÎëÊLBýÑ5{M&¡¢ÖJ2'jPc°¶"Iȸy袭ã†]á‰$\JBn²# ÔYþ“Pz}¦£/&!ßSÂ`Ú ¡Ñ™„ø@±ÊNPB“µ¯ (!¯”íÓ„Ú/å‹íPBR†LŸ%ÔƒÃúiB —’ „›ìPÂÊ^› ñ³”RýV‚raN‘,]%›§IrB µ¬?™ˆ”;¯»—%¤kùÑf9Xƒjx¶wOPB6w•k¶Û/J¸”<0L9 „EAôë”°¡ÕTœ „E±6V@%,ØU;Î(a1@¸.(a¡ðzX9š…@ŠÓ'”°àÒp–u˜*®(ÖL¬ÕMsƒ²É$”ÈHBæÎzAÕÐâé~Ì{'2 œŠÀJ(Úo$¡¸“#T“íŒE¨Ú$ÎËŽ"¼‰PÞ]¼*@„§ïÙ3‡´\ß8„ÊÜ•f©j§´wëØŠîÂ3–\!D8L m§×'JB­\úè‹@¨)÷Ôj/„"«Íü‰?¨!AXÐafµ{Á—°³§èAJ½ˆj;y°Ý&‡Ô½Áv‚Ë¡¤UÉ,ǰ‡8ƒ%W ·;xPJ#`àÁBï†×h/4€ä1.çêéÕà¯È‘s9àòªåAVð¤ܹƒå³HzN·"'Qªµq [ë1xP -»‚ ,åôÈ`"7â•䥗’êäÝYÚ&ð`aOTê>Š›iàÁ)$ðàT Ô±ª•–’ðƒKa!ŸWV°h •?AªPrÓ%;3y—ÅÜ”?¸äà+4.“?ÈO*åþâ"ßx 9P -ÍÉ”Ò9m‰?XjŒÁD¹sñQX˜'þ d[tPß÷ft ¬`¡nç)_üÁ5ZÏU\ $Òä.%ñ—üAûŒ«,¬ 6ì…µiâ*öÌv¨Øj‹&ˆ{Ú4Yž(@:ì³Ô/¡Õ ã".%—lÂ"¾wñ°¯Š½ aîÍBÉ7!éJùܳ~ ×Ôú¬ÏlUßIö!Å„(·SIsñÒÛ;È€°(;C}u.-ÛÂ¥$á’@¨G¤i¢™`ÁRèJùÚ¤üÜKxªÛsþà6üàÒœ¦R¢®Ñ:˜‚#¯Fªl‡r÷) ºT¡ã]{PâÏ._ìAÉŸ_V{e8n^Jz0±‘õMö`¡–¨—Å”r=Á'œìA};©³‹R…äò‚=¸”Ä\r°‹,ßzý™HÁÇãP=øqÞ êñâJyý(˜¾"qÕ3nY_Ç^žqšÔA¨§§Mè £uäB¼.[O– 1úŸÌ”A¿Ý®®…ž¨ãtâàvààTƒ7¨tM¿m÷<3lP‰ðRîÅTÕèq\ 5xž¶’ʤA©5ªå4›œ„BÏÅdunß žÚ¥_mQE‰,ÞÂJn cpŠŽ$ÏôgbÕ¼ýiK´Ãî©^X¡.²àUü®I`ÁÊþ(se ×J]XA-8ë}.ªàv¨àTƒ)(·;ž¤h6)æã}µŸhº.§—`Ù=ª&)¸”„\r 5@wÆã@ -*ŠkggG -*ñg… -T«+9µ ßç¶þ,KëQP‘9†íIÔ+ŸÑÎ/¢ v|Ÿ“x-¢ ö§Ÿß¹PrXîŠÜf¦ ©¶P‹q®¢DÅ™‚KILÁ%;SЊuoËZàP¯æw¾Wb -ÒŽz6«Ÿ²*cùû³H -¦à;ê½"âÿS°Xûgÿb -–î‘ÌÉä@…Í'SP - ¾Ì,ò¸(-u¦ ¶`¶Êw¦ ®u:™)ˆÌ²  ‚Åœeï´mûuA¹¶O'TPJœY¨}PPí_PAÝU,v¦ 1„À&S°`²xŒ/¨ a—ZÎ$ ÐKô˜_¸RÝÏõ¤ÊÑY ‚ŠûœPA\BÆó|A-;rç¶ãnçðà_«p:µ *ˆ¬„ͤ -޹ý­àÚVŒ;SÉ0 UÐjü®2©‚º!Ÿz×/ª QGÊ‚ -âª~•sAéWl5AáDˆ‚P(ᢠRú¥ (HÖV $Õ¤Rš -j%§˜‚ -Þ>•22 -B9QN1%S-3‚$û÷@A - Xo$  … ,½(hUú2DQ¡u& -’U9ÎÔ×°šÀ -’.¤z%…oy¸½‚(X(å®ç" -øRÏPÐÆÏ¾x‚ ±ŒÁ|ÎkxÿËí·¨€'1‡ÅÄ©úzPÂSŸ/" ú¬¯û^@@µ¬R¶³~á…:™A¼ª­q' P)dí$3 PcYß T•m»ž¾`€*èûì^ÆŸDT"Å—cNTÌùn‡­–¬„^ÿÆjÔa“8Àb¼¯ñgò˜¨:M<À‚W«‹H"ï3/Oà}yN,ñà¢`&x€Úõ§¥ýuñ••Òf6ãÏXÖ P«t4Ô£N­Lbª?‡JZG>‡ö PíÄ”a& ‚B (Á¼1ʶ6kâÙ -Ö–a`®EžIéÍ©ÊGèq÷âÏ×cS\Fb7TlÌ“Ëëð>ì6Ê@ÜÛ -m¹MºkþIæ°¥û‚ÿÝQ‹ì¿»x|*Ѐ§†q¿ùOœZøÿ©Nùæ×¹œl5Ýp{Rÿhçw4%ÍFã°.÷wõм„üSë4†fAüSòØn þ)í\¹]ò"n²`þé¥V6Ì?U´XÎsGþ]Õ6Á“øg‹À±ˆÝwâ ø×g‰±óþ4>S¡¸¿_4áþF÷Ú‰ ý ª-@µ›l¬¢ëo`­k”@nO Ùºéo(‡æ/››#Áˆ­ç]Øa5ðÐ":š(ò îÅý˜Q¬”¬ÞÆÍ(<+ž̓'“ð§Z”~ÚëªÒ¥U[ßO*-=÷ÓúRII÷Sƒjy,,º™Üy&ÚO73(‡ û!X«óâú5ÌËëÂú)ëv´¾¨~Ô1_×ÔO Ø3ÁôS/̰sàH?j½2ÐOøŒû6/nc±4˜>ã¨nÙÃÛÖÍN»ëÏdù :Ë>4P~ ‡ìþEòëj ú¿ì½IÎ,KŒ¹•»‚„[çÍøM5Ò!+ç5(hýç#if  ‰ !höîyîñGxc yÈЃü¬m_?Å.,‰½cüðð¼:ǯèÞcåŽ_¡ý;oÐÎñÓLcUpüHè1¸ÇÏÎýä:rÔÅñÓºÛRé‰ãWè¦Nœ{Àõ³¼œ¿R|ÚÍ¿,ë7åü31~%Ldã‡Lx60~(ÄuãW¨h8íÃÆOò N%0~+øcmGi,Å -ËƯXK¯94ÃÌ£yKfÍö¸•3ÆYOÄÄøIÁ*? Ÿ‹52ƯXË»gaüÈa÷â'Á‚…‰âWh.r]‹â'Å£WžÏÒæÖª&SüІËýÅO(¯ øÉÛÖTØ‘(~Ôº·µ;ÆÓ${€Ù‚â'ß>ÌLñSЍ‡i‰wqËI8ÅOï‡÷5Qü -1ÒVÅ…±50~œªðaæøI¶xO€ü¤ØÚŸþyR™˜@~øq3ȨÎÝù Ç‚=6ƒü$ãwœ ?¸-§;h²H¡Æ+qü¤2áÆKI+0~(ØcwŒ_!ýªýžcü”Û»«¬nñ+Š»—RÎ*5ý§wÀqI?¬~.Œ&<1 ãWˆú×¾0~:•8úÄø*˜é¹cü>?ÜR1ã§ÊG.ã§‚Æ¡OÆøÐÁý^?ê¹H(¡ =´süŠ’¸“‚ã§_?w ´’óób½ºsü -ΈZÇÏ”¾0~éÄ…ñCf?)ã©maü¤X™CÂøë½UƯ´X¾ÆO/­}XÂøaBµ‘Ý1~|Ü×ñ+pªûý…ñ£”¬«cü(L03Õ6!‡gÆøi`°º¬Àøi,r ¨cüd¬³¹*aüØÛT\´Žñ+QB41~ÅÚÁýÉ?F£Û¶SÍâÅÚbøQkrÕþÅðC&€?)Ÿ­ÌX?)‘#aü¨JyüT›ÒȆ?çÂø¡ÄǯvR*A¸è^?U„ƃãG>“›œ8~ wà8årÕªuÏÅñSϼô‰ãGkÏJ·6çøYßèrMŽFÕ›F.ŽK4ÊÁ‚ã§5šmœ‚ãg\é£}qüŒB}¶Åñ3„Nk‹ãWAŠ•òÅñÃQß¼±¡ÒU·D@püøÂ -§eŽ)?jw‚ãgD‹ÒÇSÙ"&ŽíeˆaÇžßàøa[çI?€6îEÉ%9ÚþǯÜî„É?Nå¯ǯ¼ËäøréÞcsqüô]lI¿Ê*ïî‹ãGÊ[Opù)\U1•È -[$8ÈϘ_×ǃþ3Q”Aß6MŽŸÂ—õ¹Ú9~àR†gä¬íöÁ«Ç*6+ß9~Vgtaë´£Qñ¦sþ >þI ã'Ù"Ò†ñ£²‹èj`üPng.Ž©ubÞò³„›nB€ü¨g¡2}ùéÇ7BÔAòÓûK"H~ÊÖ² É(?ƒ›ƒés”Ÿ>‹Æ*AòÓ—`hÈ$?“ÿdŽŸ"€TM’Ÿž{³:É*Gœ‰ä‡CŸrý@ùÑÚú=;ËÏŠqÎî0¿j”Ç¢ùq“i4?ÂpÝ?c_âuë0i~ZÚ&h~ÝmM­­W¢£ùÉëJ~Òü´$ aa‚ùÉ(uñåæ'£”—7ï0¿‚ïŸ|óSšØ|AóÓ1Œa)aüTAualŒĶºÁùÇâÅ_?z¼%Š_e_²Sü6eçÅ-9(~à -vŠ|ˆÅOƒ0ͦÖa%¢‡Nñ£9Ñ÷⇊}/(~(ÃWG„ˆ kî·Z) â¹·—ÈÒzTq|‹KÅOŠ5Zß!~z#¬¶Ö~Ùž k}Ão“½ó­:ëYƒNGø)ñá•`Cø± M¿¥ä[2å@øzaCøÁ®{!üX¢'„Ëø7Â9!üPv„…õ/„jBøI?š"¿~zª2ÂO7“äòDóYCÜãü“~´¯ ’2Ôâ„uu0ü¨é4ÄÎðCÎçóþ«§Jƒá÷˜ÿ½ è?Íð#œgOëÎð+àžº¥™å$¶8~ÌÒO?¿~$ö¨‘†Êq·ÅðãT…Ò2ÃO2AÓ`øº½¼þ×2.ª9¸ oí ?✷7¼µð{Û¶_¨å¡1Qfø©‰íƒáG]Ÿõƒq†…x$æÃ™õW0üP†Ãþ,°uxÆ;!ü”&"Œå?ª!@8ÀÏ"øé§ÛE&ø1êãØ -‚Ÿ|ˆÝ)ñü¦ø}Ku—-°„•¯<óNø>Zâ^’Œò°ý”µ®æJð¾¥:»Ï~Òaý¯mH?¢*(±ûqõ»Eë¦Éî“b_?±ûØuÖ~-]¥X˜~†Æî£­¬•ðìì¾ÊË<¬§±HÎé¾`÷mÊnäâp>ŒCRCO€_¡ßV/_?"ÇD>‚à‡ÒHÂŽ9Î/„Ÿ¢æŸv0üo¶ V0üÞCèߟã»P3¯«ü½~#ú¿ox#²Œï§p½èª Þ7¼ú8³ûÛú ­eœN;} D4¢g"÷aO(×÷)ÙÁ3Ü>phøFwl_,Æ>©}£yD+ }°GhîÌ>%ƒÌ7àÈ> —ƒøHBà*íOöQ±^l`‚×'a8dT³‚þ.ØDëS@šÚ õÉ#Kx1`}!dV*y3oV¯9©F‡±m7Pß}yhØ4EϤᘾçñú„é{ºµ2žìˆû±­r ÷îbyÔŒè›í"B=ß ï´v° ÏçÚ„óÉ´<3Ø|÷æß}çs³_‹Ì§Å–ud2ßR™oÉAæ{î(FuÞ}#® Àóâ-h+‹Ê§ŒÚU¿˜|·ì'’ïnñX8’ïnÖ5ùd;°€¤óøè©ÓŒ GòZñ²Ù‰ÆG(½õ 㻣ª%È{<•ï(>Õ%àYŸ( –àvßvÖÖRÃw?Þ(8àzÊUÔt‡ðŸnÛat²ç€nfñïÄßsqÒ÷nï·H=Ò½~¡÷tÇ+¥!kÏ@‘ÌDïM%£÷LÖR/Ð{ò{¸-܉zê;DQY"ï‰+Öw5Ê&&wïô^W»§ò¦cÇîA1ðŽ´PTþKS‚î©Á/UJÁÜSo_ûsŽÜÓf¤Ø‰{g´âž’o`À¸7n¿S‰·7¼ÎTöcÐÚÞvØÞTµ7¼¡ÚDí©Š¶DÚÓw0ø˜“öÔà#ºÚ“Àr;qöPïgaöÆíc}Pöøuåú‚ìÑ|Xor0öz·N†±7…DØ›jöˆ3°Ü÷Êåqyæ!U8cd8£úz¬q³^«Àë©C,3eÂë‰éN eàõÔã–B´€æ©VONp=6ŠôtY–wË8\o)é…Ÿò„ë•z/· ¸"kK@^q§ëYW'ªbœ®§–š@­WÇÈœ—ØzÖIÊÛVÀÌ‹ÜvFëii/Ïèd=)æ˜ ²Çb{'ëÑâ†~õ”ßóîfNÖ“-ÈL\‰¬'Ù AÖ“Ò±OYOŠE2YÙ7ÖãÌâ@Bܼ|z4ÝV_š¾ˆ¥X¯`[ 'àÝPHY&°Þ:0Àz…I®26ïDà6®^Q8Ÿ\‰$³ê]£;“:¦$®Þ’ƒ«§½™ÉË£™áÖ“}È®ãþ‚ÜŸù­S´DÒ›\¶ÿÛNVŒ‡ÃêîîÁ èMåÞèpKj»²IŠ~?k³ª[áG·Ë'²¯Ú¬Ã´‰:ù ùÚy؆©«•õ칋 kðvp4Jã7 {D¥ÁF™Ý%ãh’LþT -¤ØÅ]RÆç®›2}æ38%_Nè;»!Tõ…Ñ7•§î”¾%ßÖÕS?Þ}Z"hS„ñ¨ -‡â×·zÎy †˜ÓöîSÈ7&ÔK–"šön^NÒ-'=ÖU‰0ñ}êeRý%ëJÓ]Ò®÷$ø!ëB‚õtÜœ¿ŠÍꃈ9zζ1üyUÏæ¼yù£ãEéDËq+vê,iV—žÒOkBÙÈŽÇ'@~ÚÅs‹C±Sor¥ç’;Ärú]à -e„<Öh,d½p ¥ZI±¯Áþï1%Ëk²u7X˜lWœdý¸kÜYAä`Ôñ¸uËùL=‡js9T6í8$*D:0èÍ×Ï„/…–ãö6(¿*'Ó$úéµáH¦”ÕÞ¯a§â ÒRÁm#úé-çÇcD¿þx·f=Û”žé…>â0)£ÐiÿÆÛÒ¬«oÃh6èÐð³?µ Õ<™~¨Ÿ¥ *±]†îÛ¾N'«[£±{"ý$·‹·à²U) ½Qìr+Ìñ™q9u¦ùº -_äu謇·üs 7Ðç×-ýgÞõ.. гnL?Éý(îORTŠïð')t ¥2¾Ô é'•~Ýx¥Ô.\Êg ?]éš¹´!q_Sì£ô®M}jÐѯ«½–ŠšA´ñê´¤ã^Ù€~½Ü–XbÛQ*Wcº¡MŒªÄS „†êËõŠ{Iý,ü]˜©ÊÔ™ðæx5iæ5–d‚ÿFô”L¨´Õï h!Ôhˆ0- ’y>½Q‚¶P¼×Ã?ë³Ù=Q&ùO¿ŸMfÃÑã÷åP†¤‡ýÜ…©t…Xã[ªÚc©œs¨‡?«6ŠcôCÕΆ]V(v*äݾxÐNO/`·(ú\MN{úOvÅÞõ¦b–*^aÙÙäóC¶ôë¾–bUxkiÛJ±Ï¤ÅñùlŠBü³uÙ”›ÚáiMi~–·eTô£*\áPìÔÃ+#×Êï˦ !iÖ¥(Ô<Õ-Y»Hí÷‡vÐs¬¹å4¼j/3•y}Oæóu b«·M»4®êdÌF/ŽyW%Û yXÔ…çæñŠj)0¤,ðŸd"È\_¹‡&})Š‹ü‡³úDéëõzû3§.ˆCÄyu‘ÏÏš³/ÅO•C²íÇi¾l¶¢r~Sö¾,›Ü-EÀê\ë` éô5z?ÛRìTõbcx˜*ú®-¨þÞ–òìÀ„)÷Ãûªëo<,‹¯YÁW-þC™Ïƒ-ÓCfc"ÆŒ>l¬2QOòß’eà‡_o%p*» å—Ú³ÿ¶Ãì‹ë@iᣱ*Q†e²Ö8Ÿ{“:Ô=Uë%)§Vó cŠ~9%‡ŒãÏÖbN2^½2þ¶=V'…¥¹s›2;ð šAhòRq~)µÄ˜£š!ýFïV¸0ÅoÛo>~“éÉ®çc)÷Æþ[òpt‘FÕϚχ3Oë¯^µX7ÛÅþãËðræãž"Û]È}Í$ÐàVõkšénDQ¬€å3'^ÅZ޳ÐäÃí{õ ý§yËVPŸ‹úO“³­ XÕÜ»¢z‰þ[²"áêù1Øö³%°Vðšr‰Š„°nÌ)SÆfü²‚Ö6C}™‰!éÅÞt`á›8ýYcÈñÐʵÚc(¢Ê§‡ò¯s[Oh/dmˆä43ì¶MIcÔµ°Vœ¼;-i½5v–UaAÍ ý§˜%›ÁpDÓ¡ý—6wÇcè¿NEÏàÅî” ;ƒ§Ðª}‘Gß…ÿe«ÑÃ_­8Œþ/ú2#i*ÖÊ–|„¶v“ý‡jÃìm%ç¦0ø«fJ%’©BÔ†f(ãp…k)EnG)‹øù‹ŸYH‘ùy¤œ6 <ÖgTýîì - h ¶=Ý(€]Õx¶xü&±ÏWåPÚ¿Ým˜ª=Œ„ÏËñ˜"§[³¬éôÉS€²¨þ—ÒbÚÎòS&P"|ôzh¨RR¬ÿ”KSg°Þ”±1>–L#Ål¯"Á ’6˜~øš9d†Ÿ]G;¤«÷ìTúézièå¹o½à„4&P2±bÄwïû°=”õLéÔÙxKòPlÄ>±pÓ.1í¬uW\€‚ÙÕ¬Ë_%¶.X ; ÝU…U´Êý|AM¦,. d¹ÿMmv)`û8<ĨϚX@äF´úÅÔ©W±¹UúpÖ½&P¿‚!¿;s§¡¡} “)¨pf§ªNªîÌ~ -Rcªð"Ò}|ëvX0vb4Öóbñ,ÿ·¾5Ì®>”PC~[jñ³ãx˜t-5|­Ž²¨ã±(œ&v» 2Q°÷»½×ÑRž±u¤ž²6£Xòõ†(&ÎRÞ^ Ùê¦ük ¸0Öt’¾lÛ‚h)ª¯ŒCT`žìJ§ØA#µ:³k¨{µÑ—²@2³ó@™î”6â/2.óé¿hNhjH.œd:W¢h¯2ðÕ5lJYL@.ËF°´ï`ºïn’r=üÒgcêëù©—5ëŠhkŽQÚÅÛ¡t8 -k\ Yþ雿Ñ|.ÔÞç¼-UD€j*~…»?|ó@Y]²'X@MâŸGOö³±Á:MÉ9tK!öé«Û-MŠƒÚZñ) Ø9qdÀd?ÍŒ¾Ñ¥Žî¡xèµÇÃ!#Š˜4w^·¯¿§" ù쿱ɵ@jt××ÏzªüÚ>žù.+²-8vµÄ·¥vTRÌ5{ªçRXfi;>7½È\9ý|f}ã–¼„`W¢Ù%Z @–¡ê‡!R ‚ö=îÇR|›r-ªÀ¦š]³‘ÂR¼õsE@*6ŸÿºÝ÷uàéU<³UqVäÝì–Z‘û³äÿŸh)Έ¿°BeTî¨ÿpE»óÅ[²ÚD0Ë=Ë+ך{-TÜ:ØVµ­´F£"þ‚uàí®í÷A³MeŽ,>„,'j÷ô]gô|ïO©]¦ë\ð@LÄü„T¤Y!0ú¿j&™¨@ËgëK£Idôa”Ýè:õa ©þ"“¨ %ºzá‰Ê~wÈ7¯Él¨õù¹þíØ«¹8,z¼h2£§ÓRGœ$–%Óî3<)|ß–ÿ R&ÖÆ…ûÚÆ‡AÓ1Ù=4¯hæJÌk1¤ ;ÇwÔ|EÔÿCì@6£JÆt¢Mc¦°#úxƒRTØ] -ž™ŽûX÷SÊÚW<—Å; /F_L±Ö6\÷ÁFec"÷jWÙc\Õ>Zð‹Õ -Q“ÊŠ?Êe¯AžÑFåý†˜ÔŠ~™w¡lì@=SŸÇs`£ —õPµ(“¦8ÜBG0áÅÇ’hO¥èc©Õdl}ƒî> -€J{ôª–4ežžì@…¼›½³Z!üQ‰ð©þme-ÙÌÒ×^ì@Éä&%+Ãqffƒ€}BÂb"v -çÜþI ¥#G™™Ò+›5ÝÒ^‡ Úáïc'1¡î‹Àýª>Q Ÿ‰b46ýËQ© »® +#‚Ï*Ô3ÙC%’Çuc¿×W JÆ[WªÞ;p Ï{ë«Ðà˜Ÿ¥rØA ER·/d´#žô@É6zXw웉ͣ઩w±ŽÍOØ®ŸÏmwôhZ²á¿ìÔCž) (Ù.¿’ Äü´Ñêt¨Y‡…Õš pŠa-|à 4S10ºjÁ´‹__ü)]ÇÆG;#ž×aïý é~±S綺R:*¹B&j²Ò©cg2¬Ðéæ30Ï ºÀœÜ5“º© 8è=pú¤¨Ð ½ÍmáË”Œ?‡p¥¶dúö O(ò{’s}JfD´OÔ+&E{)lëPΫ ¬¹™Ãƒ¿Ü[}‡àõa¤:ÓÌ2µoÁQ5;Ó—`Xg#Œ>Dp”7UŠÁäÒ8#KÃ$Ú(ÚM¶å­FZD†»¿é5Êÿe„ ¥EJ¢!¨ìºz÷õ—¿…d­‡5ŒîiMÿ³˜˜.Ö§-µXXKyp˰~QH^J¬Ó–J-îû{<žBÂ@šZ¨kvsaÆo5¶”«{r›L¤ Ô˜´àÔ(l+_.„ †~BO»¡­™&/²Ÿ£S§&Ì\3½îY–n,dÜÞ2ȳRÜñ÷È¢"eËýj©vÙÒNáñ? -A3ïaÊÞàBV³a©=‚ƒ†9¬”‹ÙLß·ôŸ¿þôUHë­…lÔÉjž§¿a±X._˜•"º{?Z[AdV¾Ô¬Ý&Z/…äH›.²¾7aÑMdsDÈ]kˆÚqqTÏ¡a†« ÄR~Ž8±¾¸.ž¶V¬‹IÍ養ҾÅäa—¬•>Ö%夘)’‡ê´cSYëÉvð7ìßÝ^e|E³!D{mÖŸC»ÂQ#¬Í~‘¼âí¡ûÞ¶ ˜XÁ„Bó•JxØ1ŠÂY/{FY†Ó}wÙÀ‚J"Ø—Õ¾ ÿUX t ùï(ñl¶ºY`AíÛS‘¬%µnÐÏÑêÈv—ŠéÊ£Çúf>ç„ÕNw3Ô׳=Jñž‰fѰӬŠtB#ɸÿ¬Hõô%€N”%Ôl0-õP4™åP©vÜg2²o¡},Ÿt˜£raõÕn~°¨œ®¡ÝD9ì£ÇFÄßþ(1UšQ ož˜ŠO‹ƒ?b[{/ª N4„6çÊI覘Mòö&„ Ü×®RX/¡?MÅ<ÚâZÕË ¶ù°ÑB v–:ÚŒ)aÎ}¯—;’oí‰ýñÂÉ6é‚zØ>wè!hÂ0«›î`6C¦‡Š*(d:ƒú2µçF§øE¯ÁǾ S-FÛ˺Ç*^ÔOÜ5ç”LÐB²•¨g?^:)7ýmó Ê ÷J¾4È·ËŸ.)f¦»<Å‹‚÷å:·¾•š»q*Ë ÆZBso'62­•¿£ ÌY6 -¡JËKÓ–L¯ÇPl Òm3 -¡ö¿'7o³@ôÓ« HhÓÖ[…¯¸õTR'k -®úÛ\¢‹A¨÷“+:<Ž·{ ÏÛjÃ+Sõùl‰ "wÂ:KäeV^2zÚÆø]ÚìÏ -–ñÐyßrùVì/–‰…›â]ëüŽøÂé¾¥œi¤…´±Rݱb«8w&†:%"Ù>áíf4ê„¥=샃Y‘·E"Ô™fä•®qªˆÚQª-x‰£+B\X ŒìïãNZ˲Úh~ªBß(xž4¬Ã³¨¶¨6”(§ÚJ ¡>Ý©çÚˆ„úìpñrSºEŸªÛt¬Éê@8<໨„\1mï¸L˜ºXûV)¬oÁŽ›ølÉ¡qÑ’q‡WËb°¶ë;Ìæ©ÿe¹î£,8!1WŒˆôÖÑèQ÷öØ6QX1û̬qoá‰=Kïe´ËUZ‘çFûܦ¤3m/ßN -Å ¢™N4—‡  TxBWÓÑ_™aývÙxˆi§¾.ÌÕ7£Xƒ gjôÌj—¸Ç|ÂŒëx 3–ýúÞ¹—ý^*6"úzð¤È‘)ožsÒ'óëÔƒX¥þ–^b”ìøëÕŒ{ð¿RaÏu’ä.À*¤UH5—ŠÌ¿Øk-î96Z! ì/óM4œÏL.ó -¬Õ& Xxz¼FC› 5¼+ÝÅt²Ps›y2ëÎ,”ÌöM¥ ܵգÇÝíÄ),ÃQ¶¹Fï‡dÀ…¢ôá9Ô‡A.D©vÌÆ.¼¼þO'ðÂsz”ëGL%Üx¬:pá 1g‘°ÑF¯1-,|B%/[–YÖ¬gÐ,Ó¶ãÒ+cŸÁ›Ü‰5ó¡eºQ ‹g.oyEŠzdX¬Q¸yV¢ó¸>'·væ’Å•\âqz-µ`²—FfºmáfÃ;V\Áž2$éO½©ƒö¶õeHœ5-ö12ÃV.©ùÓ,?½n(C}”T/®ÓG˜ @h´É2Äq… Ÿ¾b»,e¸[†Ú×¸ËÆ2̲ÆSÎP4ú…-ΔYy%™X…ì ïÝÍ(T€I!+e•3hM¬QƒT ™cØV”›Ei¿|ó­çw 5aSºK•&cò93~ÝÚSã"BD_iŒ£›fµì´¥„‡»¾¤°ˆ•'"„ÓQê°"ÊnAi2ðÊ©qœ¢ˆR,tyôÝ÷£M2²ä‰ü÷¤y–Mk!À ³2Ô~)̦Ë*ð¬&2¼4·Ïÿª¡fE.àsÖµEy«µlØärÃÍ ¸J!¢TÌZª•Ù¢²Ã+XZœ,º²$jÇ­Î2ò¬?ÄJd‰˜¨í"­êN–ˆBhx&…!@ þçmòT§cÍ™ÃK`m‚Â?ͱ¦NÇš2׸-ŸËøf乕)Vɶ² %cà”lÞnqNwÿé‘ByÊ„J6¿afåt) ãèÃ,æV|ƒ¥¿:í²äˆ³ßÔaQÙ»RÍ2lC`™ÿîŤ³@O=Þ×a4CrGT пIáy8Èfj†ýÌE3Df5„‰BI„®h8–b•†5œNÛbÆRMVwú2GWÜÆ]M¡|˜â#†¯ÖÆöÓ& ¾Çèî#lFg€a›™E3$šOxX¿j-®BSÁ夅ímÆ­I3ÔÀÀ@jk:LvÝcøu˜ŸD+˜4C¶IÔ¦*õyº1ЦR-¢™ÖÔS«¹¯u•@1ÙÊý²wPoîMNÝÈvfF²Ÿ,NÖ"몊»B*V-{îERж·Ý„ 5¢Ðæ‰ã p+;_WȿбÇ>{5ïR ðb¾R¶ÐÛÚäèEP¯’TZ5së±Á -W GU;ðÙè¹ ÕJS•R$¡Šwp2 †f’¸r©¹Í =)c'}eqåÛ(#×À„*éIÏvØš¸„^aq¡¤Z\ÿ"t¦ø4X(zÓÃdšº§q;ÕFÊ -:JLIÆ» 3¤D€·RµÉ¢ËJ—Á ùÂDð¤Ì{–’ì&ƒN³T_1ÎkNµ&#×3TbÏ"eúæÖ»öñÇ7@ØñyeÔ-w 8÷a/ªHÊpÏf¿-;¨ô’™uÂY¹Nå¯*Buèöªw†NÍ[×+¼`†ú.¶¤‘щåÍ£ˆR(¤ ¯çWÆ­É2`å†Ë¬O”6f‰ 9]þ>r¿¬‚ßžuŒ”àSNŒ ¶zµ2=Ñ,^f;î¼²Z3Ö<=n«½/–¬ {ám]e'בȬVéW}ŠP-¯[GÜñªË¡}ÔØ|¸’Í+ÙN4sþB+VoxÜö'Ìd?ý6Nã‡Yæï6Ï‘w -t˜%õåùÔ_dø%RJÊÓÆmÁlåYŽ(^7݃Å{·A™ÞPú$sÌ݇¡ õl`}y¢ M>ìÀ3$ü ‚2ÔSo;Ö=åmµÚrN”¡²é¶®Ò~”ÞuÙX¦Q÷áeÑ5&ïÙ¾LÙuzpÈëOe]÷&È”rð2ÒX·éèiqw[Wúÿà)©©wT í 4ªÛj Yr1PYñe|¬ÒÀ´¯g#¢Å'ÈP[1fû;̯ïUÛmbÖRVA[LÒ£lnqRA‘´²Z -íÏîéz¿¬¦VK•Ç—Ž¥Å5ÐíZ™“f¡ÙV—ù‘ läïum,.6ª…©[—™CuÁ •Icª.#tu$ò¡MÝûañ—/ÿû1ùÿ -@CÌõ±-ðb¾àe«ï©ÑËl6$ŠJ¶æ~jì‹å;¦§Û¯êfÅ~ÌØCâBý£Ý—dÚ£ôÃòÃt·c.;fÅ|øÄVí!·ñHÁFâÊgE>ÕZ[,ž¡ÌŒ¶Ïè¢z©!:U§jô6—öNh¨™ÄÖ)rê{høÀ·;Kâ …«“. ¡–4è!ħþ²ðp²k¦îÄbTu™fWäðëh£@•ï9lÆ’²€†È§·²?*Å"EQT¯ë.Ì'þóž|F‰Ó2†þ<[ §q -1xÐp„gqÈÖ„$@óºý©Ì:J›<|ÀåJü¯ÑÄuPB§. -.؉ÊQY‡Q(}yÇ-±uˆµíP4uš¥Òºòa£ºwî+U–bIü»l™%É6,ÖìuÈÔJÇü®šÕ -›£zèvP5LL—Ëwä½´]BßÝfSV ŽÊY·b£ajt݉£Ì^rìê©t?žÁ±µéØ”ý¶,ù9 j8dkÿðÀ¤á¶¸5üZPCÝO ëåíxœÃMuÝ„"GqnR -/è•Tù·«û‚¢’W—5çò¿` hÌ:ðhN@˜PC=Yž_+nz».Ëj3@©é£¬rãvïÊê ©Âãþ;NË–×¢X=·ÙÆp¦1LÎNpȶ9i(ÅB¦rò~ÍÿÞôŸfÕ³¶oLCv, -pi"g·’$E‰OÇÒ3cS¢9ÒÔN÷­fµÇäûPhã#'£e‹9û¤,¦¡d‚§È‡•.Ybbxg"²ä$¤L¦¡%ãév[IÝb…ã·«;VÁf¯õb*²à½wš1 ‰4c£©\µíÖ}y®q1 ‘k³Òyâ0(ŒB·7użBZ]…jHñ˜¥BUÔ—Ñ*M…ÁŠBYéá-Pc²åšFJÞ„×Mýç¯??¤Œ‡;âÖPŽËáÝâ9PwßbÂôTòâð(ñÄ"ƒQ”˜ˆ¸b¸m¸@㯈@Y‘+úHj¹@]È­0<È|¿ßAãI%Ò Ø„Œ9¹»÷šA_šr¹Ã{Q ‘éë&G)ü*¥W³dY8AÒã†ÕE5¤ÏøX»õC0¸•Y -e¸ûu‘H<`ù®aÀÕ:¸zS"øÚZÖÕ­neVØ/± €¥r=l©·§û7¥m\Ã%_î¡ %±âëôxl›áïsjOmîÑu`$:.ãášÐÍýºù—Ü­ç)?ŒàrŒì-Šš”IÝFÙîUЛšUvX€‚n,|ˆv+Ï9Ù†lCë0ÙšàPñ|ZGF…Åô5¼Ñݽ± ïôi;X[µjçBœD?쨻’Ü-›|¸qSÁ^6„§ãHtÅkYÿöç×ۭàвõ* — TP_añ)C~àÕ;CÇ®aÿ6Û N°¡• kqhWHñÂñì×L6̈¥.°¡–Æ¿£ø‹ô¯ßYI[ÇÃjÍØµ9Øš·ÄÕ’}¯¨ìg•§yÜX6¹†¨Å’6˜“(½½S¬•ª€†ø¿Î,«‚÷±L¿TŽÑ§°[,ÂŽð/³ †Šž á…í›@¼–´†xÞ[÷«Çz•ZRpf¬ñ5T/Äaqš™Qß+¸¦B÷¯[#ëǦÛ*ï&š{Ìm‹ ±TÛ(pnŒCTøc¹Í4fA!ŧzsS8+¼ûܶ³Èø^nØQF ’os&é<Ø6kì»Ù·xú/ohʹ•&“XëV‚òØRûsǦ‡8Úã«¶uê={’\ÞøP}KÈóÔ=H¹È‚VtH.ã&"Ц\I à:ÓÜåׯMÔ=cut8µ„wœ˜5m§"ÏŒOUû§uICdûˆY½Mq(þB7'„Œ•õôÖ¯8I¦ }ÁD'nr„?e¾£öZŽ"-ê¬jXåK¡¬¥ó@YgH~hUSC 5£ö“Æt Ê*|™Êîæ‰xYŸÃ"R9YSŸdšÐB‰½szwÖQ·ßö¬rrةϿx;R¡„âë&\eߊ!÷­-2&ÛÇ×Ò {„­t¾nèD«Ø½÷åcyŠE’–´(§-ü:‘†ÊÔ”ÜÍ3¡5¢ð‹…©YÒ5g¢u ÙRnkÇHpÕ*¼›ñŒQ«ˆrmñw1Ì»»q-ç#GÛRÚ†N\²ÒŒ*ˆÂ¡$«)^,xú«àê0—Bá^NÆévzŸÞËé($Ë”:_Þɧ} îa>«;󌀼uHa²éb¯ÅÚEšM»zKUNåÙØ‰KÖõ¥ÕËJ¡5+òR=+~jµ‘};ð0Ï…*> ôª…Wž;9 -*;QŸøØ Ȕª”|¹ÆoqOEÆîÉN\rwvšvf,P¢%1¬.úWÌâ;-»qI4Ûž˜mEEÀ×Tžm(ñ]RÈŸ'×J<Õ@“Á:@V›¸2ÔV=‘rÌ!÷íQiõç°þ§'0µbÇHÁbðµàaX‡z¢N;Ô@³ -÷†Pd®å¥ =…ÿ%lÞŠ?Ý -CêFB™AX_¼¹¬Œ¬õ*íR AÖþR uÜ1äDÏGòO¯ø…a¢9`¡©>«Þ\/é‡åâã­Þ¡ñ¿~ÿ¿4ÅÿÍ4ÅÏçMQr¦)VÜî;M±Òû›¦(Úh¦)Vì4EaÇЫJKM%Ñí˜/š"Ÿ·Ó%dš¢‘Î_4E‘Ò3MQÀÓLSÌôM±jWNurÐhM4ÅJÒïES¬«¥Ó+… -;Mòõ›¦(9Ó¡1×±hŠÀ¦dš"r¢)¢É š"ŸÕÍëÕ:{MQÌbch(±¨ÙÊ7M±ÜÚôƒ(ÝiŠ›²Cû–4Å¢-„ê„&&Qè7MpõNSÔË4Åò4ëБ`Ѝ¸,¦ˆ’`Šåi¿`Š…NE;LQJ†)J¡Ï~†)êÛe˜"¨íS\J‚)n²ÃõÛ3L±€èzÁE4Ï0EccÑ—’ïÌ”§X®è^<ÅBoÿO±h­¹ó‹>7Q³§ˆ¼óO±¨¥ÅaÑÍ…SDÅÄ8E)§XîãN±MÜqŠ…ÈöŽSúN±–è¸rQ¿á5DþÀ)"'œ¢\v§ø˜×lëF´)û…Slj pŠ­¶ŒSl´ÜýÂ)¶ˆSOœ"JÂ)6œä/œb“%(á¥dœ¢”8E±š3N±Õû §ø¹È¿pŠMA‘„SlZÅ%œbkõN5áQvœb‹Œ§(9ã¥dœ¢”8Ŧr—„Sl´ÏÚqŠï[úϼëMÕ oœ¢äŒSäÀ„SlD_¾qŠR3NQJÆ)6±¾qŠ•Î;N±âÝ(‰|ÿÀ)Š2žqŠšG3Nñs?ŒM”qŠ’iÇ2qŠ( §XÕð…S”Ê–râ¥dœ"ʧXUc¢DEà«r¯ §Xå‰zá«:6Ò("pŠ×Nq) §¸ÉžZ¬“c”DF‡7NQPÆ)V:¡_NqS6œâ¦N‘Ÿµã«Œdoœ¢äŒSDiç†SäÔ7NQrÆ)V¸B;N±Òåô…S¬­~á…½Ï8ÅMÙqŠKœ¢þFÆ)jø§XáI8ŪUbÂ).%á7ÙqŠUÑ¢„S¬ãúS¬”Fì8Ū¦| §X1¿pŠUy¹„S¬ªLK8ÅÏÖàN±>ý §XÕ/&áÛqüÂ)JÎ8ÅF£í§ØèhþS”šqŠ( §ˆòÆ)VÒ6;N±>ÏNñ=€®)•¶oœ¢Þ£ŒS”“*ã ±¼qŠ’3N‘~\ §HèS´ÀÐÂ)rbÂ)òáoœ¢®ŒS$œ–pм/œ"åh §H„0á ¼qŠ„NÑ‚ ;NåSDÞqŠ §È}áíƒwœ¢~@Æ)N%á—8EE:2NQ¶8E£‘í8Å&^iÂ)júøSl½|á~'œ¢M€/œ"0ï„SÔ%É8Å¥$œâ”'N‘žB §Ø¢esÆ)6Ù­N± —“pŠKI8Å%NQ³§¨2Ä8E}•ŒSl£|áiÑóÆ)"'œ"JÂ)¶Qá%gœ"t¶„S”ò§¨¯—qŠ ãNÑšNQ8¶„S4:ýŽSÜ”™¶Éž7v>ãõ5~àÝGŽtàó…S\JÂ)Nyâõ<;NQø·8E=§¨ýȆSœÿÌ8Å%NQŸ”qŠŠ2ÿÀ)*A“qŠŒv §h­¤¾qŠôJ8E)§È„òÆ)kM8E)§hÇ|ãõŒST˜=ã5 -ÿÀ)2r&œ"MµNqSvœâ’§È¸î%F6M_×/š"ß%ÑmŽØhŠt¯zÑMÝiŠœ˜hŠ|ø›¦HŽ3ÑõêdšâRMqÉASlìú7š"+©M‘û²ÓI?&š¢ý?hŠô K4E -­MQ5Ú?hŠlMQ{°LS\JBž4Å& S¢)¶2~ÑÛq}ÑÛæí )¶@›gšbÅ)¾Ñ+Á—ošb¥³ÄFS¬²L%š¢¶oš"j¢)š²ÓMyÑ%gš"J¢)¢¼iŠUà’DS”’hŠÞ4ÅÏêú‹¦XÕ|,Ñk;Ñk´V š¢„LSd‡÷¦)JÎ4ESvš"§cJ4ŪÅL¢)VÍɦ¨8ùš¢öC™¦X€í4ÅMÙiŠKšb ÛÚ¤)Ö«ü¢)ê¹É4ÅÏ£ðESü|«_4EÉ™¦(%Ó+…(/š¢äDS”hŠñ¦)V:*î4Åz/šbU´çMS¬ìÅ7š¢„LSüì -~Ñ‘M‘Swš"þ¦)VvKMñ³šÍ4Å)$šâTƒ¦X™üvšbU˜ãES¬OË4E 3;M1þhŠ!M±’“ÜiŠU+«7M±ÊJ’hŠv wšâ¦ì4Å%M±†]:hŠü˜7M9Ñ¥dš¢”4Åú´/š"J¢)¢¼iŠ’3MQß7Óëe‰¦8‡ðu ‰¦¸”DS\rÐíoì4EmâйÎ4E²‰¦¨˜é𢂫;M‘¨l¢).%Ñ—l4Å&ZùNSTÈäMQr¦)JÉ4Å:{É%š¢äLSDI4EN}ÓëS¿hŠº”™¦¸”DSœò¤)ê I4Åz]¿hŠLÔ‰¦¨˜T¦).e£)Nq2Ï”‡Í4E ?hŠ<€‰¦¨·/ÓcþAS”œiŠ(‰¦È©oš"r¢)V\Q;MQÊš¢¾^¦)Ve)Mq*™¦¸ä )Öëü¢)*Â÷ƒ¦¨a¦)*žhŠU†7MQr¦)ÖÙ« )* ú¦)긦H°4ÑëD'$šb­áŸÖöES\J¢)n²ÓÆÍ4ÅÊüMS$OŸhŠRŒR4E”7M9Ñù°DSä§¾iŠJMd𢠬Ô'MqS6šâ¦M±’ÁÚÙ‰ -Íÿ )VÙÅMQIˆLS”™áMQòš¢>ÑÊ~a…šhŠSÉ4Å%M±ªÇ_¢)ÖëúESÔÔžiŠÚ³dšâT2MqÉASÔpžiŠŠ¿iŠJ1fš¢"`™¦¨8Ëš¢b{™¦¨SеiÌ4Emq3MQ¥_4EJpMѺuí4Å¥$šâ’¦höä¦H;ò7M‘ÜDSkhŠï ù -¨ÿ‡hŠm¼&šb+㋦ȉ¦(åM±©£B¢)Ò --Ñu~Б{]0E¢ ¦hÛþL‘›`ŠRL‘xߦ¨G*ÃÇÉ0ÅFgÉo˜"A›S$‡`Š´;zÃqun0EÅ2L‘¶(o˜¢åV6˜"Çí0EÂño˜"òS$š“`ŠÄß0E’+ ¦h–Æ ¦¨ÇñLÑP+;L‘Vò ¦HYü ¦ã©‹¥ˆ©zg)6ÒÝ/–"¸„ÄRäW%–"=­Þ,Eúf%–"ùŽÄR´\ç‹¥H0±QKÑ,/–"Ä€ÄR4ÂÎRÔ5úÁR$Š“XŠ4ML,EÅE~°Ê,EÐ/‰¥HÓ¬7K‘,pb)’¯ÚYŠA°Î,Eø.o–¢äÌR$]˜XŠX-Þ,E\‰¥h†‹¥ˆr^_(Eò2 ¥¨¯‘PŠäß(Eqk2J±á^ßQŠ °Ö ¥hCèŽRd˜M(Å÷½†ø¿ŒR´”È ¥¨.¡Û$ïJѺ½}¡%f”¢”ŒRDy£‘J%¡IJ¼PŠäJQˆŒRÔ˜ÿ¥¨?£™¹JQSÁ”"3DB)6Šäw”"Ê¥ØèP¹¡J‘3ß(E-{2JQ¿ £ß·ôŸ¿þôh}ü¥(ù¼Æ†Rd!Ýû†R”Ñ$£‘YöJJM ù0j¿J‘wB)ÊÍ“PŠŠ®þ@)jyœQŠ•AdG)Êd]ûJQr¡W ±-%”"ÇèÏ(Eä„RäoQ'¯m•þ ¶KQ¦™ÌR´Ý¢ ~ÁR¬£ý`)Êø’YŠŸÚÆR¬J¬½YŠJ!d–b _Ád)jSñƒ¥XÜì,E¢°‰¥HD÷ÍR¬”Nì,Å:yïÁRTˆäÍR$p’XŠR2KåÅR”šYŠ(KÑ>éÅRÔWK,E]³ÄR$Æñf)VìJ;K‘àæÎR¬Ê¿XŠ:1³uS2KQÁá,E52K‘gcg)*›òƒ¥X•àM,EÅš2K±žíKQ[f)êÃ2K±*þf)êËd–"®ÄRÔ_ýÁRDÞYЉ¥X±=g–b=[f)Ú%ÛYЇ󋥍ïšYŠr²$–â{äüûs{U!ð›¥XáÔ÷¥XEzL,E󃥈œXе„Y5XŠRHWg–bå«K%±+/ÜQÿd–bÕ[—XŠbÜX,ÅZÜð—YŠØÄKQRÚfKQÑ¢,EÉ™¥Xéï½³Q,¿³%[gÙ`)J!ô9YŠ(ØbKQÑ%w^9KQ“Zf)*{÷f)j Ì,EÙ‚3KQ¾ÂKQÉ›ÌRTœ;³+;Æo–¢Æ¨ÄR¬Tín,EF±7K±Òºlg)’2ÜYŠJz¾YŠ„Êv–bÕÖé0`o–"ñÊÄRTt-³YýÁR¤Jig)*ê›YŠZ=ü`)êÌÌRÔÈ–YŠÄ‡ß,EÉ™¥¨o—YŠ(o–bžM“¥h§n,E}ú–¢ÖF™¥XµÛYŠ,Ï‹¥ÈˆXŠú¬ÌR¬¼^,E‹í¨KwõÝ6–¢^ÖÛ‰¥HÄ5±+Œ“kc)êûþ`)jÎÉ,E%±3KQùï7KÅÎRÔ‰™¥¨u×–¢~Df)VV–m¡5\¿QŠªXË(E†õ„R¬µü@)¢&”"ŠÙ3¥(ŸOF)JÎ(E}ÛŒR”r[{«½¨G…w ¥XØð•…R¤fíR,êÌ’PŠ×sßPŠå¹¡?ý ¥Xe I(Å*±å„RD6,«³Æ¤ðs&J±ÒSòøF)Všùï(E)ÔlM”¢)/”"§% ”bU†P›à‰R,Ó‡PŠªóJ(EUxÑ}r¢U´÷¥¨Ê½ŒR¬8Áw”¢V?PŠV¸£uÉ3JQÇü@)êyø&J±F7á‰RÔzéJ;ĆR¬z0J±Ò~ÿ…RÔ|•QŠd!JÑëß(ÅôΉRÔZÿJ±ÒÍ~G)jlÈ(Åz#+¡³ÌPpÍb*G)ÖðÄe”"rB)ÖëùB)¢¼QŠ’3JQiÞŒR”ò¥Xé º£ñK$”¢ ?PŠÈ ¥(%¡%¼QŠ•–ƒ;J‘ô{B)JùR¬twÙQŠR2JQK¡(ŪñeG)*–PŠòê½QŠù%”¢¬ ¥(㔢òU¥¸R$R”_ýJ±°ÝQŠ(ÞoŽ÷ˆ3_$E©‰¤(a#)êŸ?HŠ˜"I‘ðT") -‡óƒ¤(9“áæ$’¢”$EÉ™¤È•L$E”I±‘ÞHŠJ4f’býERÄÊ™HŠ•~d;IÿÆ›¤XÉBì$EšIŠâïI±•úERTÁg&)ªŽóI±ÁoÞIŠ:5“›è˜/’bSf2‘õã3IQ>Ö7I±÷IÑ”¤˜Î\$EäDR”’IŠR~Ûì}$Åv”/’¢ÞÙ$E<µ‰¤È÷H$Å,üER¤v')Rf‘HŠª‡}“5.d’¢†¢LR”ðI‘MR")Ö¨‡š$ŶÚñí$EF£DRÔ››IŠTϼIŠÈ;IQB")Jx“©±I$E2󉤈ò")ª¤"“UÜIŠdWß$EKì$E -ÄI±Áo{‘鬚Hгmw©–z“Y±%’¢Vl™¤hhïIÑ@à;IÑF;I±u{‘©H$Eª°I‘/ü&)ZBr')Pd')rꛤHsŸDR¤ #‘[°ž2IÞI")Ra”HŠm„Q'‘95‘ȤØÈì¿HŠú.™¤ØXåí$Eð/’¢Ba™¤H9H")síER¤Ü ‘õ52IQaŒ$Eh5‰¤¼j#)R“÷&)Z‘ßNR$Ö”HŠ4•z“%ï$EêÔIåER$Ó¿“-ñ·“©Íy‘õÛIQoG")*kü&)N¸ü$)ê“2IQßáIÑäIQQŤ¨§>“©Ø|“©1èuéǽƒ­Ìñ¤Øha½¹½ ¤Hï RÔ«‘AŠZf¢õ E¼S;HQöÜ RÔZàHQ~­ R”_ëH±Q­°ƒ•ªN Eò¤¨ås)j¯–AŠò©þ)Ê\™AŠ -e"ëo¢Òh¤HÜ#ßÁò¿ÿ¯R$ü)â¼H E®ÃRDxƒÕõH‘Þq ¤¨Ú¯ Eɤˆ’@ŠvÌ ¤È'&¢” R”ò¤Øú³@Š´¦L E Þ?@Š úRÔè‘AŠd÷ß E½v¤Hà. Àxû<~$Ž"^ÄQä·½9ŠÈ‰£ˆ’8Š|Ø‹£¨‚°ÌQ„˜—8ŠŒgoŽ"=ö¬ƒkÈÆäÚ8ŠKIÀ¾MöȼCº @MMwŽ¢FâÄQÔwËEzÁ¿8Ѝ‰£ˆ’8ŠÄ¶ÞE¢¿‰£¨\@æ(JùÁQÔ+‘9Šß8Š›°s—Eõ6ÌE%3šU¸îEÈÏÙ‰:Œâ¦¤»2åÀ(þ¢.Œ"ü@.ãŽQdÎz&0ЬåYŸ$Œ"òumE…ŽQ¤WÀý|aQÍçæE.lå£Hcj-dFQ–Å)£¨û™1ŠÖ”ø…Q¤ÇŽQd’0ŠT©¾1ŠÈ £h]"vŒâ{dþ÷f ÿ4F‘ˆÞ£X!níE«EÚ1ŠÌ×oŒ")„QDIEN}c%'Œ"áÛ„Q¤zíQ$Ô™0Š•ýÀŽQ”'åFQíY2F‘jÄ„Q¤zðQDNE”„QÄ·òÆ(*«”0Š”Y&Œ"‰§7F±^gÆ(êÎdŒâû¦þóן²ÅoŒb%O¹c90a¥üÀ("'Œ"ñÛ£(áFQ± ŒQlPMvŒ¢:œýÀ(²`LEª£¨ÝÌŒ"rÂ(JÉE)?0Šô7HE¶Ó £Ø¢‡~Æ(uHÅXiÇ(ê‘ÿQdØOEÙ"3FqSvŒâ’£H+Š„Qlgû—E:'Œ"öÌ£h £¸ÉŽQä‡%Œ¢ÆÝEä„QDIE)?0ŠìAF±WÆ(Òà÷Ql¼Ó;F‘Öé £¸”dlÙdÇ(êfŒ"[–oŒ"­NF‘ߎQ\BÂ(n²Ã?pŽîÅÖ‘0Š:3c &Œ¢öž?0Š ^ÂŽQT|:aˆþQ$>0Šì F‘Í £ˆºc%dŒb£“Ø £HüxÇ("ìE;â…QTèceUÈÅ:q° £ˆ(aQFÑ/Œ¢õàÚ1Š3‹ž1ŠZË&Œ¢<0£¨¼ÅŒ¢É;FÑ”£hÊ £¨•vÆ(¢lEþýÆ(’­ß1Š2FQëúEy€2FQ»ÁŒQ¤±ß£(9c¥dŒ"ûÃoŒ"í6F1)fîÕ‰oŒ¢õkÝ0Š*ïOEÅý_Em¤2FQJÆ(nÊŽQ4yÇ(êÚfŒ" nÞELR £ØZÿÂ(ªúŒ¢äŒQ¤ïzÂ(ªÿFQrÂ(JÈEycé”0ŠÊ)fŒ¢þQÔïÈņKbÇ(¢¼1ŠëÀÀ(6¦¿…Q¤™þ7F±)y°a5ÌdŒâRFqÉQÔ62ci¤ñÂ(ʬ”1Š\±£¸„£8ÕÀ(*n¶c[äFFuÃ(¶rdŒ¢6ëoŒ¢Ô„QDHE”7FQ c[i_EÞÅ5vÏãêõ…Q\JÂ(.90Šö'FQ»úEù¸2F‘°ðŽQT|ýFQAëŒQ$,œ0ŠKIE“wŒ"þÚ„Ql*hyc%gŒ¢”„QDxc%'Œ"BÂ(r棨;š0Šº–£¸”£¸ÔÀ(âAHŦeÞ£hóóŽQÄǺc—0Š›áO¹ÇFQCãŒ"`Â(jÔÈEŦßE© £ˆ0ŠœøÆ("'Œ¢”ŒQ”ò£¨/·ai<°c—0Š&ïE¶ £HHðQ”%cièœ0Š”²½0Š4RNE-L2FQ?ãFQ&Œ"ÁUÝ“€#â{S)Óð²Zß¼ò…/Ô®ú³Lz¾P{ø›;øBå›ÏÓC'›KAÑÃë²-Õ˜:µ>W_ƒ[É/dÓ~U«¦± Ûø?“^È¿‹WÆ.z!òqDw]­g¥h?3ñ…üÍÇ_¨ßÏoâ õý?£²ã¬Ô:”„/\jà b¸Yˆ•°(xɾ'á u!m?x}Ñ v¡³|Ñ uÜgMr/z!|m–%„É~±°Ûé…°³ib²®ˆíù‚^¸”D/œò¤ÒƧ1ç;”°X“äòE/,¥×Ïv ð4½?“^¸”D/\rÐ ‹6²VÌèXB‘Ï?Ë®ö'ó õeÎãÙ@‡Öæm# ôé‹Ã¨–ø…È6:¿åpÐ! ·bñƒ -Ǻ­Ã “_(¥\Ðù…R˜ -2¿P_¯WÇÃ/Õ~7›jáÚS3ž¥øVBªŽí@pð—MS”ÌoÊN)ÛdØ‹ó~:âÓ; -"¼ öâª|Ÿg;ð©¶WœüÂ¥$~á”'¿°PH#%°„E…õÚ@…ó‰`ý=²a^·ã ç?3¾pÉ/ÔÙå*aQ¾îÑÖð…Ea¾Ëz>í^øBëütfz!­žŠhùÆT|:ï`ÀÀaN“ÛúÓ)Æ9žgÑ ¥<Çy-z!Çœ×•é… -—vf¯ ªóÕ#ïæ„ª ^Xá‹Õ¾7ü¼pSvxá’^XI kùôBýÑ«–úE/ä»ðf½PÊPè,è…4Œb•ð…&×ká 9“~ƒ/´_ÊÛñ…š¶lùøBÍζ~ -|áR¾pÉ/¬ìá¯:“´ÓÄä¿ã ¹1§6ô®ÒÌŒI2ð…jfv2'|!}¿î^¾P#Èñh - *aQ4“OOøB6w•{ -SU£­î©ä!ä‰/,²× |aW«0CÂÅÚ´šøÂBŰƒ/ÀC‰÷/|¡–†Å*êŒKX¤´*´0Íqú«‡ñ)îya&n©y!í¤J´!Öá…Ìþž!ô‚¿¡u7iA'J€•àB sÎÎ-Ô¨÷tãâ§‘í߆~£êÛÚuÙ …Tˆ=e1 Y›u! ÏØ³'b!ù»¾ •â+­/`¡V¤zÀ2¯ðô%×ÄÚ£q/Z¡Î#N”`…*›è£/V¡¦Ü³ž UxÓwäù"š~q -¡k)^˜Â%씩¤P&%"øÁ(,G·É!! -õl°ÝŸˆÂ¢’í˜# -‹jôgDa¡âj Q(¥)`5……"7s/ˆ€ä1®2…4¯¡¸Ê‰PXhT¨w*…ET¬Ó›–‡(›Bÿ"Ê­hD¡vQXí!2˜…ÈDlQÈ©— -"Qȧ³´MˆBý Æõ@êÐ:|" -§…S Daa†»¯Å, -!KŒÂ¢€7ñôy ËYYûÂÖ´”*\r  -µÛ»ZYÂ"wERüÉÊDÂ8+y—E*Ü”T¸ä s$—I*ä'Š„wR!ò]Ë"J! 9I…R:—-‘ -%3BNR!Ê}œ‹Tˆ¢…y&JfÑ=I…ú¾·F· ,|ž Iè?ÕGëu Úv‘D -RáR©pÉA*´¿qm\BmØ ïP"¦û¶¨ØªEº¯÷dš{£(@jAXGZ½èpä¨Â¥$Tá’ UXTqS<ì+W˜$̽U(ùæªPÊç™í UˆBö*¡ -%Û¨B”ûî UÈ©÷ó|¡ -‹FRúþªP×Òöy*\JBNy¢ -õŠ4M4AX -å+_¨B›”é¸ïòC& /Rá6Pah“&FÓ2ÖAÔy5rn;¦§4èøx*C -Ž8Êv˜ªÅ/×US à¢%B¡‚4–õu@á§àª—kÁOH3Òg,>áuÙÚxR Fпè„êäo««jý€óu6ášp©N&Th­_‹K¨]ßsžK¨D8£oP åÿ9ŽkA ÏÓWR‰I(•KHB}ãS 1¾;áo Ï.O[8• \rÀ5@wÆã€*ŠkWg‡*ñg»€*€ÕJ[ìA…H>ËÒúÅTdΆí`ê̇µab*^Óª×&ЂRMœ?;¾5¨VÌ]‘ÛL¤rÕjq -®°¨8}p)‰>¸d§R´uß–µ •½:xë{eú u«'3ÂŽ fF;Õ ¾£Þ+"þ¢«í_ôÁÒ#’ôÁbÝïE”B‚/Ó‹Rïå‚NÔ.ù´U¾Óu'ܧ³Ó‘Y~PŠej?X(7¿î/ü ÷–ñ4ðƒRúãÉ‚÷A€ÏÚ¿ðƒzªð™}°PI<§*$l«æ„Tèð3#œ ?¨–êµ;Àü`Uˆç¹¾ðƒ -X7{eÁ* -Dìsâ,!•ñƒÕÊ&žsÛq·{ht+Ë·¼ ?ˆ¬„Íä޹ý£ àI!ÆùƒäG4 Oþ ™¯2ùƒU“³¶ø™?ÐD ÀVè å\øAÊÉ[MøA€&PÕé—ÂòÁ¬ä¡ÏþÅT½:ÉèÉäWѲÃñƒºØ,O}Pj£PÎ჈«Oø €ëè_ðABxÚÉOø J}îDÑ¥ËðAÉW<àƒTÍ ^Ù_}l|ËðA…ÄŒéìA0(¿ÜÙƒó~Öþ÷{Pµ«¼ó“=* G°uu_&ô bll4&z°ÒÓIÕ›ŽÔJN1£ /ÄÙzP¸¢œbFJÆ-3уz©Å}'zP -댔Ì`8у(Ú¢Lô ŠÙ™=HVE¯B õ5ðNö`I§2±‹šòx{°àù®çbj¤¤™HBÚøÙy!ÖF'¾Gç5¼ÿeò %3Žó‹<¨1Gy°<‘nò`="¹£¥z"XT‡,›6¡r ¥E²h¥@,&yÐŽ³xÖq‚•{ÿ&2Ø^ÝÊH * ˆ“s’5Üë¶ïµÈƒÅAçŸIdÖ"käAMX«2yÙAWn’ uå^Ï@£R”z?pel%^ËÑôåñ¿ -zSïnÊê9¡UÏèÃj‚@ê'غ0€qï{úÏ_|äb}à7ìäA5#¾h„îM q]Ñܹƒ2]Ý×ý…”ÊZ7¨ƒpËtC×õ|1µ¾&HÈAMþÓH îºþ8H.í¨‹7¨&eZ‰MÜà ÿ©Ñµ¢èϳ`ƒZt<ÎĈ¨#ŽoÒ D­&hð„3hPյ广8ƒ23_ýZ˜A6}Ðn½µæ}út™(ƒOµ]Æ„ ²™ÕÜâŒÁÏZS¿ª~1ç·/ŒÁÙÿÉÔÞ¡íKŒAí¹SN0‰£jï7ƒ„dG½¿ƒ -/<§ûa (èõ\ŒAÅ6:ó 2HÈãyÚ‚ J!†7!ƒ(Š_fÊ`±RÚ{QQžÚ‚2huÔ/Ê ¾Üg½5fP—Ô`` RØgï˜A‹úãØB0ƒD&OŒº†,ª°µ½ê†Ô‰x‚2¨ÛbÅ  >ïëdPM"[}cPO†6~ÔZa' â,×~+ƒšÐp›_ð‰!'á5=·³/º  áÂÅ­èÁAO÷-H¯í§.´àc‹ T æÐÄ|"žêXAý›IPÅOcO·cµùâÒ9UkäÌBˆZŸt¯AXeŒw$…)H‹˜@{Ü Py@üûSv|Jü1J¨@ܲNîf_.„‰žZ窑™‚ -x»uReR·•CATiõ–zÐZ"PFåf wšSNoÍ=ù€z;‡XÒÌÙ¸æàbu%#ÄÞÿAì3ÁTö˜Gc²•w®Ç5¾à€¸n§Ø6ê EÐO {—à€Wµ]ðd»y,6`÷­xBö+ŒeNÔøŒE/À€Ã¿hJÅ<\@ g© hö™öE4áí -8š…;'P-ã´¹;¦kr›’W‡™> §yx4óÕadx×îÇZʪג{Û -K‹g`óèÉdÊŒÒO;( ¢­^_$@©×s. ¬Ê -L ZÑ—çþÂ˸P}è+5ñÎD¨_@Eåy•v;Z_ü?%ƒÇeÔ…ÿ€ãE¡ÿi3ì8üÏÌ^ ý§Çï¾­k·Q[(¶±fùŒ£½Y`4sÿ(µ»õOxZ-&ô¯ÑK»1ÿºž+ð7Žü³Æ·}ÿ¼à=HÀ?̼XNü+ -Sáåâ_¡Q·@AüS†ÝùDü«`<%GdYWÜœŠFü£ŒÊñDü³²¸º€•ŽÀǹ€Rü“vàŸds•ðÒ.‹®:ðåvšà"þ‘[§;B ÿ,㦛È? -Z˜'wäŸ~|ku,æŸÞ³I8óOéZ[$èŸaÐññ8ôOŸÅâ(˜ú64$æŸÉ_Ä?ù(›Ì?=÷¶ æeŽ˜òóO9l[ZôîÑÖ Æ©µyd,cÿ”Õ¶ÞÁýã&Ó"¸zž)ÄÊÜ?½ 4H˜Ü?­m Ü?î¶&ÈÞÖ«FÕ‚qÿdv% ?¹ZŸlÇþÉ)uÃÊâÀþÉ)åõÍ;öO œû§<ñ°š|çþº9iƒš¸ZF[jpÿ´c³Àjpÿ”O¤4(aÿ4b°u¼ùåׄþ“¼¾g±Uê$þ)¤¡ìkðþ^±ì¿.ÿ¯€ûÃíPâ·p¸x BÆÛÀê¸?„ËÏÜ&~jÑqò;ïOϬYHƒ÷§ªM7ìÉRÉøPðþPTý0yvÌåµ7ËóM„jnçýI±Ppðþ¤`¬Î¼?Õù±ÇÐJüñª¬‰ûÓÈm^ª„ûÓ,bk”ÀýiàÀ;ËÇåÃa˜qZVÐfâþä˜áLÜŸFˆåúyà`f Þþ˜ÓYpäú¤`b̼?d<{ÁûCig_¼?>¬ßã ø'ÀÂuÑQâ8æãÄcü*EËþâ/ÞÝàﯲ/ÙyKId¹MvÞ`ƒ÷IâÅû«¬¿²VaÓÐÎæ;½×ødóÚ-N4ßgWÅÊd¾á½p¦ªƒvpù¦°|K…Ê7¼£Ú„ò)KI[bòé;X=3ùƽÚƒä“Àr;ùPïgù$0Ï_W®/݇édà4¾Þ­•á„ñM!±ø–ê(>â ºˆQº,ö@ÃT⌑ál‹ÄGçfBˆï:,H—A|B[X¥ƒøÔä–J´Àë©XON>6ŠçS—,Ë‹»e÷”ôÂ/90|¥ÞËmØÈúhÂL>këDYŒsøÔS“L¼Sø -&)‰Âg­¤¼ot½ÈmgŸÖ™öòÌãh±Æp -Ÿê¨ž³ô/ -ŸÉ-ä~ù£- -Ÿ)W(÷´îxË´IáCz>¬$‰ÃGý¹&†Oÿ&Ã21|Zuõ Â'WŽÙ§šMá£=õ;Ú!|’½{ˆCø¤œÔV„¯X[ª‘)|´äš…/)”ôs戚æIáSÎÀzw8…O…îðÀ§`¼9\6Ÿv9vïÂ'Åv~áÛ”Âgòu/Ÿ®¬å1ÂGëk?¸Cø°-µ{1øÊéÌ“Á§fß¼Õ™Á'ÙËýœÁGWðîl=ÛGhÐoŽé›ý†¥zý 3ø¤\ÖôÑ|cvŽÁGRøÁàS~öf“Á'[M‰ÁW¬e1ø¤tìSÁà+VXÛ¾|ÈÞ¹gGâæåÓ£ƒè¶úÒôE¸ |ªW4¿w øP0÷$ß:0|…I®\>ïl\7_Q8Ÿþ©~̪wöL>èx¥À·ä ðioG`f’õè&¡ð@FðÉ>d×q8š› ‚Á·);„oÉAáSDë"ö¾9‹ÄáCµöWNâ+ÝK҃ħݴV* Ä'ÑÍ ñ¡”²@|$›ˆOŸo¯u€øô]Ã\ö´Ó·­t"ñÍñ{wn˜ ßRˆoÉâ³?щO;nÖå Ä'•Å -C¶ˆíóLŸBß¶cL ¾BóŸ£,_±Ž¥×Ú"-%øLvk >|¯Òˆ¯hx³òÜÄ'Ùûr8ˆOŠuåv9ºâ“ìÉ“øPèµ$¾¦Ô¡~‹Ä§[zÚe$>]Ëæ1fr\SØ9|S ž€CÏézpâè ÃÇMƒÞy ²¡'M8 ÷„„áÛäNRY†ëÝézOÊ€†§›ó@9jÉJ†Oacê)3‡OòS»gÑœáÕàÁáãL°”‰Ã‡\ƒ±‡cCËžÃ/^)–…J>};?U>ÊðÉP:‡o ‰Ãgrß»ú³¸þLº;«!ß1|åòryœÂ±Ïae26,Ý™3†~Àt) Ÿ–&tP˜>E5Yf Ÿ4ˆcøˆ~Ò>6ðz¸¸Žd¾k 5`XÜ ;9|›²sø–>C½Ÿ‹ÃÇ_}¾1|x˜¾JûþçY>’X Çl9lçðñaÞIçŒh¹u -H>Å›­3i`ø°Z‘þ - ߦì¾%†¯®Ô–ÓõåΊ¯ßnÖ§¬¨?Fˆ‰áS#¯·Ü1|È7†OŸhéÄÇÂKƒsø¦0|S -_iR¶ŽºzéâõlXƒÿöÞµ7’ãHþn@ÿ_ Ø/Lºòž¹ú$Ñö¾ÞÓ¶ÉöÊX,ŠCI\ó¢ÃáHÖþú“Oܪºª9ìž‘ÄiN¯±2X••—Èȸ<é™Ó„$z SÚDŽðKFÖKø¨&$Éi½+ÉQXH’ÇÆKøÜ èa»„‹s -$E¡®&oí ->7¢T½“8<ÖîßCѺ!J¯ß«·Ö;õPΔ²7ÖîÞ#ù:¹¦kHãÍ{FX»yϨzó^ÐÊ…zñ^”K6ÖïÝCz——Rqt5*êÈÕ4Þº·ðPÿøNðÃ¥{¯ëLl¬ìo?½8[û š½½û⯗W_üçå‹ûo¤ùþèoî7<ùÉÝÅw—ß÷~]½|¸÷òðï.¯1€Ë‹—_üŸ‹}|uñÕý}̸»½yÍÔhŸo¿]<Ü÷çk‡øÿ_\~ýÍý¶cüôö{ãð`Ãä'wç7÷“QƇÇ?g_ö¾ÐÊ®nÏ'/-õ÷ý·þ¾øýÍ i‡ „/þ|{óIçäûÎÌÇÇBÿøâë>)“¿|ð‹?K«ü·ï^½üÆÚúÕŸ/¾?’ߺNü놣>øEgòï?øÅ+üð;üg -(Žþ£ÿô?öýQ<úÓÑý÷pô¢¿öù§ü⸂¾á^±J©]H_Ï訄ÂÄ+¢ç¶™¤o¯hµÓo¤‹éÿ €oŠÌ]äºìî§02_j¬Tï÷Ê!È2Qèîbà&ûG¨êSÂíIPs€àâ®ÇÌýH_ÍèMû96±4yû«ùŸÎÝZ|PèóVQCŸxˆ>¶3ÿ4]®.¾,äù‡QÜ¡úù¤[3óï¢^Alqña¥/¾ìØÜX|áú¤þé.mO½¢'µNp˜µ S0¡N7’–Ç_C—vV´o“࣮柞Ð×>áɶx-}íÓËö—“1ÃÐUIÂÛ—©X¿ŸwB_2Rø6MÅH_o'òJ :2®¨’]Ó6([ŠP;R¦Gèq,Dàíbuò0¹í™H…·ˆ(ˆR&SÌ¡“×xç…%¨•æÙñÆJÐ¥&/õ¸ÀÊD -ÒÇ(.ÄD©E@ Näg:%`tºã€—|Îs¿¨¢½õ VzR3®A—DôŒŠ¹<²ì“~þK™ÇÌëš[a¯ ³,]¯DtrϘ´oL$Ï=¯PC±,"’3ìTW®e^i€”C’ xi‡s"©¦44q.0™"ˆ}Š{À¸_dP‘œÏ<ª†Ò‰µ›©lú0Ò©‰NPž24ˆH+ÅDÎub1HO$1Ñý ë60`OŽæÈ“p=wb²âÜr …ú,³hÄHDÈ2»…+ü¤Ô¡ãy ³ƒè€ä22¸¸ ø+ÉD¥RÖ4¦¨éÎ_#˜>)1UÛDÔÛVuÖ[b:eÎÈ窮%Û1Ñgn¶±Ãý\¹®•¡5¶'¾Ã‘¹+–™'’ê­ä*üäåÚWr Wø^¢¢D\Wd§–‹©òp'f‹¦á‹+ûR t»øêYȲsPYYPQæ›À ×6߉ö. =H@#†Š38Ǣ87Ó—˜–œ<í"°¼‹ò0#²©!{ˆXŒÏtª]E}H2Ý„ç&'h&ŠðJÌù5ÔqÉ)üÁÛÄUeQÝ$êlœ„s;àGÁX ×vL2£C:¹¢â4à ÍˤEÏÖ#K'Iqe é»–Èâ”܇ւ^vä$öÀÜ“nKô º#¯9¤ïaº6†öJ£{˜éSšš%ûÚ/ ï`¼?T¯¬Û´³Yà ‚•ú7ÑÆ»¿®‹o¥£Ç¹ŠîŽ>úvWÝ›6Tõ0RLüo‡2l&™²¾ÖÖO ”ó ¹hŸœE¾H‡Gz–¸Iï6ôíÕ­šr_oçžÅGúzë9p÷aúú§—íŸvÊù³O}ý”:–Ÿé³O/ÚõòÄÚòüÓ#}ýÑDÐCôõO/Û·Oã gEyýÓ#}ö ?Q¸7Ò×?½lü´ãº%‹O}ý¤ÉløôHŸ}zÑþhDÕÑ×?=Ò×?hœéúéëŸ^¶¿´v—D»¹9»¾xq”çRˆöüŽ‚(TĶP®ëV4üPšØ{B\͈”Ø´¶×7õõWQ_!wTVkÒiè LîªêIwìÄÀõ‘ëÕÈÌôˆ³Ž]7—EÕùÇÏ‹ïŸ2;u2nhô±`®îÉLå¾KÐ)E”˜’¬œ”![=ÐŽplßB¨LB÷·ÑŸ>Ù;9ƃcz?DÑw}¤º.ñ]}üÑiœÂ²§Ú™‚“—; ‹u2ÁD'°ÕJ¿8½åª_,\[ÎI š}>µá R“¥ÈC¶át; •¾y)ª vR²õšADʱçg -=ñ0r N&¬+¡“±Dm+ô3Ù!ð#dý˜k¾)-ëû³1L‡·Þôµ.b%´¿¡ƒGL©w¯íÚ:ydªˆ )¸–Ãæ³Rô¢îS* ¡û#”g `Ï&+ û ]ö.4í -•®“±Çtê’“¹[títÒë„2u¼Çë¸Vz×.§Z=GÙ”¼'=ª><ÈÚ.Zž®MƒÀ¢þ4Ãyô£žJž° Ú¾¯A6e½ÊHKíN -¼Í•'صàm®¨dŸŒÅXjÖ·i·‹}q@ÊV8Ñ«ø”_» uòED7åɦÝK5MwL¤'RJ8¾8aºLjcN'òÉ5T™ÓäSK} 2À\˜)±êóÐÑÎ5Žº¯8$Þñj"j›Ž6~pìKšìV*&y­tº €Ù G&5É”WW¢³FäZvУ€áéá0ÊÄ. cÆ/J7`LónEâÆ¾M»=û¨u;Rñ&Zaä?¬ìùÖ܄Džµ‘nù‡3nÁ¤ë@·¶[5é|dà¯í‚ ³LÂHž53ЦÌ„%ðZé h¨Ü¶m·,fÑ"•0¡Ïš¿PPiP^±ÐÑ}ÓÝD˜c&æÈ³ |¹B¤B”£:sª-Ñ €Hò¬\Š~ëβQålpƒh t¦¥U†’Lí³¼qãÕÉŸˆ‘®• ­?—&=ñ¡ ±Ïo{m÷ªÔçc èXú¤,ZdÚ}8,ðલòl‡˜ÊL0Sè(;('/Dßô‹”xtª-P Niyh#/Ð-AB—톪ŠSb -Gû6í6¥d‰:'|ùÐGàçé‘Lì»ME>2ã…˜y "`ôÙÖôÙAŸ ¾´E«³®M…„ž‘ËC› ².ãé%£Tÿ¤Ñ?4%úp”ž Y³Ú“d‚mÖ‡±{‘kÇÑŸ -W(grnzp7\ .¢P†žÄÓKO–A U°3ÉË•éá’š>ÜT_&ôþ¦.œO殺Aÿ)= -Ø ½£$]°Êó@‹W‘DàOŒ)¨T¨fÍGhH¶¿_\M²EQ -ª¤w?ôŠqè¼v·&£S,Jf(ª bzd|¸­Îñ®"éÆÝZŞ;!bLl%g®ÖÇDº:†Ÿ„ ÝÃå–NÆ´0“›èÔ*><¶ÝM6$‘gkD‚½21gÝ’z›$ӓصi44%¾KÄè´UªL4€9Æ(‡9²IƲ­¦".¬¢v¡ˆ‡ªRq2ˆÔ‚¶à¤ÜÌÄ2$8É×FÄšëDnÍVbetܯ@tÝhÎq}y"ÒMˆ×xdoxº”]Èq­ôèˆdO­ìñ–ìø’ÍÝø¦a9Ù”ÈvDÙ-­´É¢ -Ûcÿ9¯‹šô¬s¡q)Ź¥m§ä'=[Èj"ÿJHæi”Ý„‘WJ{U|L]«¦ -&T˜üK\1®?uÙ!ÎâÅLp« £3= HŽ3=£‡TS7ü©ÍÆçë¤ µ˜·§©J£û4rÀkUš˜U··3pd“"É©%õà)`ݪŽWMYК#¹Ùƒ­M¦17kxâ(™ÒÝ0dkÄÌŽÁm"Æ4i9{‘Ö·œLt·¡ÙªShZ™´`ç² ‚¯M°} ‘áÉäh»¦=ÕÉŽñ8å–lê&³CwÉ™àm~sÕÍᚬBŒeÁèM,Íáø,j(1… K³i}&ÞÆš -硨€!6߸×G¢à–€41%ôìçÛÅ”–•æs0"ïŠL0ëÅɉ‚ú£ÕVUlGx7ö`Ú¹ 3š¹Þ¯u.È ”‘Í©«# ŠW’ÚDŒã¦æ¢Ê\ÁLÖab°>0¾.žd(Æuƒ¥Õ¡&_Õã²8Ó -æ­ ij9ŠÆ›¸BGkÕǦîÇÑÚ÷a[΢A&®3ÉDÊâán$s`Î&x]oÓ£?´8ªm¹6u§Éx€—'ýHoEž§úíFR0“ÄÍH{3«ž1J:²f(U5&)qa(†Ù?Ê-2TW´cGŸC ¤1@`±&Ѓ†;Š\».:HÌrjSÎêvì e–ôËØ_+]ò]ãÔç•ÒSJB§DH!JÌBòc6¶lSG—1§6Vù¯.N)V°Rºj•òBôÚC nhÙ>ŠòpÑ\JÉ<<eF4 D)ªL-Ïû ´lŽÄô t9‘ Y§Š¶CthÚpÊf AkÚØ5ëu¤j"Wº‚¡^³Ha4‘pä÷e"%‡²Š "„XTÁ¯æ4Y¼ Ð?£>Eí,7!†6 -ã:6‹—ž¥hϪ7=£6½¶:ÃtxÚÅuBÆ~1ZGrŠVJD³¡«ˆ“´OeSˆ¨Ò~Ù²}ŠrNãh¹y|J&ÒJé!{£Ó˜2ÝKÔ˜–Å‘»lx”HÃ6EbâV¡„¨¨‡.k#hrP×*Õÿab?)”8ŒFNãs‹[–sŸ3ÇŠè Ë.L7¤Æºâ4îð ÙæQÔý”ÌG!ᦻÝY—ɰ;µ–Í»›Eý1¨f(êé² Ö;?Lâ¤T_óZé!›]yƒÔ 9§DßÓwÌœÁ^Õo•!XdsP(óõ³ßDE•â Ò¬h¨eÃ{k9 - jú&¢’òò¯« [ŽÃX†$ÄÊKEÿm\åÿÔZ9ÖÔÏZÖgE{\öÀ:G…9ÔñF÷ã^+Ý TiwØ!×7pâä3‡¬Š%Ý-®fŠ:Ђ9Á³„—}0×8Ù‘væYè‘ÍuY!È*Ï -îæMoŸnnt<’© †èStȵÑÅ)˜8…YˆE]ÿEüA ÊyÝcô— ¦Ðš"Žlª]”Å¥{“7öÁfƒjeà4Õ×F/.LèJTÝרtŒ© ñÔZÖ‚8¼ˆØôá²gÙ‡ÓÉbösæ¯`¿JÁ¬KãIFõEƒ4HpßÌ›3m`¶#w›Ú~c£³Lûæ ÓÍJ?öm•…ŸÕ8iŠÊ±~ðcVM‚Ò.le[TRQ9MVm¢ŽÐ.û0í^2 UF²îÅQZ… ÓŠÂYZŠî‘¹ Þ%}Ø&J1%hÖåGvK±g‘¿#ý2œN—öÚÀlƹ¸>HBÞ…{q­ô (HC3 :¶¶Š ºP5%:µt躡,Ê#ÙzB^enÝØ…QyŒ\¾œžÏc̆èCR:3ˆ²äÊ!¦¦-„dÚ#.N郵 HµÊàr¦ „4‹„/»fÂ* Ž›”]o.Mõì¤^")L½a4J»Â4¤öÈG[eî-\ŸtõÀ¹3HÃ!U¬êÑõðZéjæ6©SÛ(ÑèÑœ—k·˜Ø$¬Ó,0€–YI%çéŸEÓ“@ECfÝÄ¡èI;X ÷‰zÖØÍ¿Rzô¼ô…ùDïåáŒH©LŒæùC]S/¢,6+ðT#ué¶¾%óAU¾çút4ÝRÖ…¯ªœ©¢òucǘb¢sÙ.ÈM˜½52pa`VŠœÃ++è 4%š@€&Æcå+Œ¬Ý‡ì»ÁWÛ˜¥úð^UýcoT¦Ê “NÌk1™7šŠ6à)ˆª>‹yTÒˆ ¬Y)²ædW°ø¡Ïé2Ñ®ŸKÒ2ݧn-‹ƒ‡cÓ‚@5*CWAÄ÷ƒ06…¤@!• ÁÅ+%Kl‚ôMvn&­Jl–¥¼lŽP‹5L5 ›´²ö¢Dµl\‘ЬÓ µ]sÎ;å -åstN2õn˜¨¾\É»³>hH½ñL M‰Tð”‰kì¾±ÈpŠfŠÉü “¤Us*‡äUÑ­»A¥œ¤Ãuä‰ÁP‘p;èû.k|Ë0ùwºLF¬ãf8ÆÆ5Wøå(ˆÙƵþøÉ܆¨_É“ÔiÓø:a±Ÿœð´êèFÉlWD”)u²Ýè<ᇠk)+&Ær5½£q¾œµÀ•ZEü+ë.1ƒÊRˆ9«¦!‚Õ6Ÿ„Å"Ýᤋb1Z-G,\åH²µàøJG·ßÑJâJ§Ó®·˜¸$7[“ -P\ç'SIÅn˜¤èbt‹™ÄA‰m "9¥¨8#~e"¥çòbDÖë"Êì ¢šÔ`Žà׸9’ÐPj“OºÆ…5…¢>©®¦Óâ“øžàiŠT‰ -ç‰h0™‹ÃY A8-ñMl+¥{ ~ÀÕê´‘®ZjDTb2û‚˜ˆ8í’vM!jY‘9TÂNÜAS0‰>´Šn‹Dj‘"YR¹Q1Y -2MóØ@´€ªTQ"Óˆ²fÞ|gz²¾pSg×ËòPÁ,!šœ'=ÓZ¨Î´Ú浪OÉDßtYL#TO -“Adqy£ýZôë‹®Ó¨>sœl\EPè9'ÝlæL"K+]Š#3#¾…ÂYãBЉ B`ä¦ -)ì…î':wAZèÎbïré½X]…“ÙAìpË\Þ]z2˜3Ž’N™œ®}’D¯: ‰Ôñ}‰‹ÃÄ#_Þ\¤)01‹ ¬\Øð\Ç 1!¾¥PhrˆUöÒ31fÊt»µaŠã®Œ^ÔYó†q$íZ§!’O+v·µìmp¤Âu"å7™ ÒÕ˜8${Ò .t¡”×g3Ç@‘콊9ç´Õ$i3ÕêL·GÈÃAUÃX„‚\ÄÛrlÁsî  »¥ô$ZT1g“$ž5êà-G–ÁZöâΪêHÇÍ$Fb|!nÔâÏqœg1ªÊ–Å®¨‰¨”¦jNOîªÓ±Ó”˜M¹ -¨6ä8Tßu ›l9YÐReU¯á›`!jß $Q¸h8]ˆ¢–dv -¢Úƒ„s´4Pí ¢ -È*Sqm¡øYIo^éÓ#`ÅÍ7Ó5 -˜8Êj*îgö¶g &ÉÄ®\ÊLR15ÁYŒ’nag˜Í{qP+P²s7Fa@wZÒtÑL -f1àbUN3íåIM6àªiA"Hn•x‹BÐ6ƒª‚ɬ!JxU¼ˆ+¥Ç¬É>stream -ÞA’Z‹" x¤¦%õóyâã‹^SüµZApfâÊý¼ÇäNT(Nåp[kQ¼.Õ—=fo§tZc  Vˆ&h¤\'NÔ±æäAà k‰˜ă¢M%6†­P4“ƒî/dbתÇ: ê…Uï09DÂØB³b4cÝ7øÎM¿í:jéÅëH|å¼­N¬)ky²Ì:|äIqºšÇüúª”%ËxTаèʱ·~ý¢]žÔ7=f³ñL“E¹dÓ|mÜÙàoPõYAÝݬ>¡8ò# -¼–’TšlPÌqа’7¬vóʨh¬êÿEÕ"a–I§k:ŒƒyÛÁ=ô¨c -Ï£d^â9¯¨iªÖ}ª7µá¥$u‰ûŽŽ)ì8¢Äé,8µpdsûyã’co dAlú-Ò­…`Zª›¸ÔdP½)HÜÑ[YÈsm [•Ж~­±#Ñ8VÅB:nœ„`‡¨¹FU”MÄ ŸŸÇ`¼Zå‰+Y ÂG΂܊a_×™¼Ù§‘kÇ©1sZóŠ.[?^ xCÍ´ã-DÝ$ç…HR映0ožÆÚáD§Ë8ås¬9FTr¶¢+Y‘ªW§i€‡î -Ьö Ò˜í¨IæuÅ5{I÷]F@¼n*œHX)}t)Ø(;àÓ‰Ø@Ã$ýZ.ŽŠci¥ÄøFi¸NòÚ7“N«¹TŒu’ØNÆð©¶Pl¯+|Qš$5Ùpkºåj¶h&Ùrš8Éë9ˆ¨å †¯Ëf¯ŒeRHËkÎef ý~‰.ŒU\2aqK¬eëùŒ›ìŠ>9Œ¹Ò5˪‹¾ŽìlSIˆë“Šºol!ë¹Å÷؉ÑÙ.LVrVˆ#Ló.“7ïeóaü$÷E3NÒH!صÁÝ‚¡­#'U2qLÁ'd%“$ƒKLj¤`5ß’åë§Èàaž4‰øQ¥qUC%-¤‰YU‡I -Éã«ÄMyAi¢”h~ß¹§j½g"ÕÍ× Ì¾ì†ùÌ3oPŸÞª0xq¡‚hõ¯ÊÑOmâ5©–Ø ²¥èQôÙ赪žª‰­y˜ÛyÓ¡l½„édLÇ­«¦÷¼·ð¨ÙõƒTö£ ï­¬@5kŸnÌWÏ røq6í¨)n齟&nspêó%”“¥¸i…¯dYº0<™ÏŒ£[±ô&sœ”Ê)ÉÙÃfáèæ¢ ãôè–Æ$Ÿ¤yù™ÊãË6ò‚¡A…}¯ÎËþÿÖkô,‰Ù0¼½‘æµ HùE×)«wWC­¸RYB­™Á{Ör7 Ò9ŠG·«†(¬\­¶kâcIϪ[³RzÆc‘›¸dÎë8´,ˆƒ -ì °·~V¯BŒéâ'öW·îÔ1û‹®¾–¤Œî$1y’d‘¸ÜšÑc¶/ÊáZȧ…=$c¡DËØ—Õ?µ†½r¬þĵ֪ –åQšn#2¦åýdpÝÑúA¯FèP5%DcÖ‘î}µTéêÿ6²V,:ÌJŸ+±[¤¬0ÈA0,¸‡1èœáŸJžØôz2÷‡kSƒQ«SáIUdý- êîT0ˆÑˆâã)™“ñ¹7LZ¨VDˆ!+¥+¢-q®©Ñ›k¦n1z¾ °¥žÐÖì‹Íâδ9X»-rR–4˜2b'’Õ6)TÓÇÎ?³;ëè[HZb¢ŽYÕ‰+ :¾ã‰#¾¶Ó»¾¢æOÒg¯…œ86«ã{X"­¦ (Œnʦg½1‰Kª3‘nÊâéo<œÆF< 5L-}Aßub´âJi,»H£Úu1°Ö‚‡Û`G;›?5È"&•·£!¨t=GÑEõ>4NͪÙ@ΑKrJžêÕÆŠû6U_4‡4cíÔ¥0VaªÓúxÁŒØ:Jk™1!š’Ç[+Éà.´¦‚ tói)¦¥Ö‰I¢óð¤õñ#p´ V7"Z1é&²²¬nƒ+Þ -¼9sl´hª?d§/4œŒ:4M0 6NÔ -þàá¨Öµ“½¢³í0F£@ëÕª=Ú¡ŽªñN PØÔh™#9ü°D©qù¨YaÁ¢4Nߢ›Õ M®¸w ?ì-2ªj0ˆ‚+\ÃA4¹5rÄ”O-ÊÖDµä&(Úfô\6¤‡*Ïö,ãÞ{Ñ®«bZœäÅb –'‰ƒÈßFÙ£ú5)èÔF7Så2DÒBàS¿Ç¥Lg•Kžžð&Á«•p¦›’æTM1mƒñ hVJOÁ@¡’h‰{e-“"IQ60v4¼ßèKÄEË^áš–Òœ•Ŭr+÷ÁÐZë´4ß´òEµ¼¿F°‡Ôá®cȤrµýq×6í¯NqÍQ¹cˆ‰Á)ž’¼ Ö‚·|Œ¢wWðÖo>Û$MuŠ ŠP«€\*ÿh -D\ãÃÐD˜†RáàOYVg`ãÊÑÇ$Ò«LB'@ Ê\øÆŽoˆÖb9‹¸.ÏÐlæÊRi¥òY³1µF+ÖNÄãKç‹Mq°B 澬|wõJO. U¶™XGtªÙ*ÝѤ-LÏNK•ïº^)}Ä+z¡G,lSræª|ÌXËZ(·òI#ŠA3ô­x’ 8M°©n¢Xè‰Råf8"fë¯÷u°´÷ÂQ0Q§š©S•Ö•Ò³(à¥"ê:žŠ ð -E.ô£¢€S­ªPp¡Â³gæöƒ×• œ4PÍ Ü,§‹?IJ೚JY¢‰Pç‚â ‹˜©¥Nòÿ4)·‰K°‹Ì›4vÁËY (•×Ï©8(¬¡JDЭABч¦P*¾úˆ -`ÕxtI漩AÕ夠TùMùCOjhËAó]¦&Jâ«Õy·ñ!ɱK£tõ±"•q4§U›0)!^¨&†õìÅòIó†Úx>á‚xƒÞ“u4R²Î™‚va~U]a0ÀC •—Íï 30)ê2ûªæ›³ÔÊï<~ žéƒ!„),!Í -áSqÓÒpµ#0Š,N=zµö†`¸õ~´ë+š¨òÖ…ê(­1ˆfrHTÕ"Q~Füù8ËtrÂæ”^¬økIw(ÁR>+ßyc£PheçØJéݤŸ&â“E^-gB9Ò[Åð: uúX´…RòVJOIÏ·,i4¨—5¾ÓDgçU›–›,Þ4™ÆeŠùa ±°Œä}SMxJiÀqr¯²\‚«t­è–‚šÊÀïñWêÄ_‘M>%±\z Zt¤YYüþd×Ù­–€e¾•±&k³ -?¸­J¬‰fUÊok^°fž¦f -ZëêHžGrLe.cjA§«ê×LdÔ.PfÕëHr3ÓRÃû±gÐå®›«“q„jÖ²Xý¸£L.Ì—¹Zµa§ÚB´T˜:ž»ðM•_YïJævü8ùv}LkR#ˆÀ^(±êyÚ݇[â“¡äÓ0qz¹¤[LààŒ3t¶"¬r¶h^–ïÌãÍ#¾>AÍ3$N'¹qwEËÉÙ"w¨†À¼qi–Ö?òÚ¤–­œñlïú¹=À… ÎJàI&Eá^ËÝÏäGTv/A»;kd8#K9Ñ"9Y¨¶¡ŸS U3Ø"fÁY±ŠÁ`ºæ¸iF#ŒwG…ÔS>…<<&±$ ®Ùd[n²‘pú…ùøàÉÉ yØ3U=ÁÕ¬1€rÕ4–A™ N2Z¨ýò)7ñ:ç¤ki¹ÿ9"dÜáy4îŸKLTg2¼P–î’ƒÖ&À»¸£Çxë˜^ßyVQkMPÍÐË—ò‹næù„O~,¸P­â.M:E«ÙÌ„hè‡Y¬wõ×àÁA¯Gº:ì‚ÜL5É JúB4`[˜œN«|Z5`µ¯ˆ¬§?a…˜´0‹zÄ–ë¦&*ˆ ˜f ¿±覎Y½.OJuÄ VöØã”S Y¤f ’ÉRò̾‹–£)÷  …ª¾R g/{0nvØzŸbïo¢ËÈÖ.,µt‹R->/*2ˆ¾(NX/8˜Á ,ÕÁØl -öÎ;?¹‚LjS-»f½FñrñŽf¶™ÆœâQ²OZ¾*Tœº¡iÎ[~Ñz×N§EY×Û¶^“„fºåçxKó÷¡j~ŽotIyÒ9õ€eƒóSæƒnf'RbãðFÁiH´US´ö¿•à§Ì: PS­†ÕíŒËV­n \Ip­tµJ3 Mkjt(góH“†¯Öڈc@Kˆ¤Ñ¹/6½l J9œ:–¸I˜}g¦˜¥(…@®•î¬âÞInã$Ä ÈZÊ´õ¢õ]±º’À½zàƒÓ)ÔÜw)ßdSÌªØ 7^ˆU­ôžk׈ÖbS5–ž±zÒciç2–]ôát¢´¦ùÂtpšjP«®pm¶Â K½$Иé·lg¬:ÀþÕò•ÑJªš¤^´1Me,Õ¦¾äg¤Ñ…6Ið¥ÜbbZ -¤ˆ9NÍ£”ý$M¥z+Ð'ñªÑo‘/)ºÄéd|³Æm|ÑÂF–¿M×´ò.'¢0q‚¥LŸ«| Ñ -§&ÿàà¤Ævžd_R’íµÒ›Ók˜Ú$®?^õ2 ¬-[±µm…M¦hP‰k£ÛE€ý'ûD91l¦•~kÓÛðºâÎqâÂ">Tvãçl¨(í¬æx%,è’°Ö8{eet‹²VÉ/ä6¨ûµHä ] h5.F}úÀ§·_ÔªNê<Ú‡ Ùœê† MV©¦q¥²ÕÍŒ_hZ¼•ê¿[ÙæN—¨+èUHM”EÔ­"ï‘'µ Êc4`Ù^n˵£_ýúèóÿ\üüËþX¿øýÍ‹ï^½ü擳ûû‹»¡~|ñõåÍ:ýW»¹9»¾xqDä£N?r¿þ`8úÆâçßð‹WøÁ ô¿ÏÀoÿÑúŸNûþÈ G:ú¯ÿŽ^ôW>ÿ´**J3б#“Ö‰'êŽôÕŒ'>,ÕZ+›©“6nУþe*¡Ö%Ô¤[C„9YåÒ±»”†x á °»!{D©yeÈGŸ³ü?ú˜þç‚°-ýéƒc7`)¨'È’‹¤KAÝÛ§ôÞ—Ïhº0cÄøßL]n÷]Š~ø@e•p‰oÔ³P2 Ä:ÒзúÈßÀSCù7. -¼\ë$ ½ù ýJ?=ýå->~¶\\é9 …îd×™*÷y}5‘›Œ]0#RÏçKŸ¹Rïz«]Adn½B” ºQ½þ°ã»×›‰ë}˜Ò­Ãc³Ó‘­OÂùb¾âÕ!8HšÍ-º®¦NÚyÜ>=%½©6 i{6ôé·§óz‚'iþ°ÙÍš‰ë=˜Ò­³c³ã˜æÃ_ÎÓìg’+/>øEžÌã«kSÓf’½œ[em¨ F: r’½ë éw/]Ñ õæ«ÄF×Ú2ÂеB5Súï‘K´`3é2ná,@k1TJXkÒe¶úñü¹4ºÈ;W_^oÑ&„oÇ/~gr aé p/O»_²ã‹LDZžòËrs3*o³g¯‰M)ñ. Q\@ô‚¨"ˆp×3G9^?LäÀ– #æù\—2Å!ñ0È–»Ò–3ð”Ä–ý5*A/èéªò£ðLó÷>›züàþøîblXJЍNÇV¸é´>6h°‡fcÃQÕ¨ÙØÐ2)‚<6øÙNxêéè@,з§£ÛÐçÝwíë4ê¾½ùäîòæþòæëãc¡“F2ýË¿øó·ô77ð?ûû¿ÿáòª7õÁ/~k?ý[ÿíó?­þ|ûâ‚~þÝåùýåíÍÙÝüéã_ýëúê¦ÿñ¸wðîòËW÷/}ô›þàGwwgógο¹¼zqwqCOø£ßþñæ~ü#þsÿ÷ôÇ_¹aøå¯~û·›ËóNÿ¬·}óõú³ß]½’‡¿¿|qÿÍ럆ZF÷îÈã¿Ù‡¡}sqùõ7÷ÛMŸªÁí0´m?ªíÅ€~Ø~@?<Ý€>úã]}ûÍÙnë]¾è>6$<ôTcºýò.Îï?¾}uó¢÷ñãÛGXk2´¯Högï_n¿zk/ýf»½köþÕÝ—¯®.nÎ/¶ž+~yÛI²O=Ùð¶ØÝÅËWW;Y}þ©wsûÙýåýù#GÞd€/éñ¿^^]ìÀåk/=ÕPýÖc¼yuý—óû³ïvâô';`N†´õ ¿<{yñ‡»‹ÿûªoÜŽ›Ùk[Ь‡Æã^7žÍÅTâ^üuKÑ3ÁëçIÖí³ÛWwçÿ~wöí7—çÛ¥7Û¯ÚåÍžÈÏË›G¶éú¨üÓ ë±éŸ êöÛ‹»³ûÛ»íG6¾ñÄìôöúÛÛ——÷;í¯Ÿ¨3¤*mÝßþîâ«£ÆéÁ8ýIŽÚƒqº/Æi<§ï±qúÕÝYW˯þ|{ùò`žÌÓ£|'ÌÓíÅÔþš§Ûû Öé;#AÖéÁ:=X§ï§uŸ¯uºËÐöÍ:=öÏÎ>ÝiH{c¡~|ñÝÅÕgßœ½¸ýþ' -¢î£ÍÆYïÏNߨ^Íyÿâwß]ž¡[»Ø2Ó·žj”_^½zä,üqŒÒ§T>þýìÕË——g7?:Öw[¿ßž#_ìpT¼x³b‡ípR¼x£b§ý´/¢ðö«¯^^Ü?¾}ö_Tü…FºÏBâ - --¢ç·W·wÿöý7]k'ÙW;øSåñ§bËí!/_Ý}uv~ñÙùÙNÃ[{ë Q~ÄA½üöâü/¯Ùh{ìwÃö¼Ù§âÕÕÙÝïÿõííÍÅ̓\¾ùdÃÝy´§·7/ïÏÞd´ã›{j4u¹ÿßÖ3ö¿ÛOÑÿ>¡ÕŸvÓžx2ÜN µ³/ã)On/oîW;9Ë~óÓõæ3ÙÛ+Q^öYÛõhÛ—#ûÍ|=‡0Ì< ³L¹§æÛ…™Þ5²½2õÏv×?Ÿpsí0¢°ÃˆÂÓh{­àŸø¸ÖF÷bD,çÚˆÜSXϱ»š±/GñÙÝåý7×÷;,Ú>ÉW—÷Ÿœ]>fÎä7Y‘wíHúÈ¡§\å?]Ü}}yÝgÍkç-ù>,ÒOÚ™w #Ïæp°ßì#,m?¶=ñ¡î²\{ƒ;½½½úøîââ·­R–ž_Ê’;Ù¾TÁÝÙ‹ËW;Ì>ÿ´Öóó„ö½¸¼:Û±Öåö‹¶o¡õØñÅì¸=÷'Sˆoï¾ýæöêöëíÁwІzÎ2ñ ÷P>ßœÛÒá’ð)LŸç‡n~vðËíc“{'vÌSÚù°ÿ(íg_ìbæÛQ±ƒb»g¢â=ªÞ±}ÒÀþVïØžQ´êïúŽÜ³îy$yÌ5•';f滸º8ßɵ|ó©FûÑöQÑ7íòÍ'>Ö~wùòÛ«³ó‹ë‹›û?}»ÏgÛõYonûé>ÙnÑþïhñ£[ûqëáÓ;èÑúü>ˆ×}9á·wGîÝa¸cåØý±N‘Äÿ§-DÍ»-,wY =ÙN;¤<ïsy íÝ%{'4¶ÚO$4Þµ]úÕnˆ¶¯.¯®vÂ{]=Ýb_]Þ\œm¾??»:ÿÓí8éÉO5ij«ïÏ~xDÅZß®÷gw»íW~᩸ý~½¿ÝAվ݇3ä«»Ûëö=ýT£º» oë±½xqyùÝ›m|ãÉxqûöb‡¢süðS êæöf‡U;?uýêqôÐÚºMÞyªAn¯M«}ø3fëñ®¿ödöüöÌú%.ŒÝ!Ä?©‘tvsy½ þæ§êÈó)4y\È¥wÞ=¾È¥†¶gþœri‹uzZï÷.Ì·/¢â€\zÈ¥jJî/té)îÅ}×÷äžqÏ»´½ -¼_Ø¥÷ûxÛìÒùóÅ.í0´vé€]:`—Ø¥7Ç.¹÷»´‹xÝ—þùb—vÚžÙÏ»´ËíÉvz?°KçÏ»´ÃÐöLhü!´}„bí²À» §\àgQ(tìàay~öåùIëôìÝêü¤y:ò ¸~ôÇ/~G¥™¾ØÑWöŒáÉ;8D÷¬®Øó¾©àç­1ö¤âùêVÄâˆÅ|‹2¾ígâ bñ Ÿ§Xüý]§”Ѳ¸çRñ||Š¡øã ŃªxPBñ B‘„â4ÂöÅŽàƒg,·Ÿ‰)&¾QÖÃN{ãV;MÆ·ýLvÚa§=ÎOi8JÛ£9y ->ÝÐ9yå©4À.M>¹ü×ÅÕ'Wg?|±cv컌›?\:·ó”Ý]\ß>V,eO«4]Þ¼¸øêòæÑ»¢×{ß^œÝÿn—+“Wžj /¿EAª­y(GµiŸ¸ÕûPæÈíP:æPçh\¸w ÎÑ–zΡÈÑã ãVäèiöà‘ûÐG.õÿGýÿ?ì?÷?ì8ú9’˜žÎ|zƒÒNïš¶öœ¯ÑýÙ ù§Áz?j¹ïq"ÉNƒ;¤’ìÁí‰ìxӀݾ”oxl~¼xÝÓä'Ý^{û²êyõˆ´ûq„ãSÊ‘Së> ‘í}†ÿÜa‹ýó wØ#z ¶6¢ð„&Ìö#z$Z¹6¢¸#zd9×FäöLðíס¼«±²/GòÙÝåý7×÷;èû~4ÿ,%bŸÓÙ¼¡7[ðCæë[væèÈ!šÿ ¢ù;Ö=Dóg+yˆæ¿n‚ÑüŸ~ ‡Ë¥6h“‡hþlˆ‡hþO3ªC4óHÑü|âh>©·ˆçûáÃÝTÝCŸœbûáð;DðüG ÉCÿç U17}¶Ûk/=þpquuûýÖ½ºüú›ûþÀñ9ªo?Öù{O¦Ko¯I_~õÕ«—§·7ÝĹÙA²,^|2eûSâÕÝWÝŠÚ‘×ßÚAº'¼ðг=ývß{r“ûÁ«xð*¼Š¯âÏ¢ îBßW¯â.JøÁµø®»Ùûð뻋‹›»6{ña?+/¿¾ýð»ËÛ«‹ûï.^|x{wvótáàs|rýÍÕíýÂgÿ{yýêþ‘ p×ö¡¾ðTŒš·ÜÅUÿm7Ÿãä•'v_ýî’ ÷¤ì;€êý!ci%RŸ7H—eï«éàÙ[ÿËËo/λ’w÷3¥É¼óü)Óñû}Ûõë]œ¡Ë7Ÿl¸ÛŸ^ÚéÝ}¿Ë7ž¨ƒ'êà‰:x¢ž¨ƒ'êà‰:x¢ÞeO”øØ%n)rH¡†ºÓvÐQŸPE7‡²öçÍótÞäƒóæ™XbÏÅySŸóf‡œ7çÍÁy³Kþ>¸Þµå:8oΛçã¼yy¶ pë`\>?ãò«»³óû³«?ß^î1À¯o;Mö±'àùOŠâzš!mïÚ·úW7·ŸÝ_ÞŸ?â'^s àñ¿^^íRÐ`í¥§êµ¯n^]ÿ¥ïÒïvãô§âp²}9³/Ï^^üáîâÿ¾º¸9ßÁ ½¶[òP6ÿøP¬ìP¬ìgâ³/V6œl1ÙýíZÝí~œ+_ÝÝ^ï Xèé§×ûPXîPWn_ëÊí ¡ýeåžÎ)ö¥Ç~*‡Ø__Ý}ùêª/À^;RwÑ–÷Ä&?ÔARÜÛew>¥ëûrç<Ï.¸ËÐö .¸ÃÐö,¸Ã€ö*8j_}ìÓíµ¢ƒ}úüìÓg8¨éù¨» mß Ôc÷ìLÔ†´7FêÞÞ¾øúîli}°PŸŸ…ú¼¯Ú^å?”\yGðÝê_ì×E¤Ï¥ŽÌ¡ð–#:Ô‘ygŠŠì›¼Ý¢€ÌþJµ<ÎÓ¸ú¯º>}|~{u{÷o_^ÿóÃ#&Ý~{v~yÿÿíâ€|yÿÃÕ1yü©X“ýl7Þn£Û³}÷°è>o»WçùŸk?ñÒO¼ok¸o"ò%•î=}΂ò=»¿•9ê³ó³]Ôµ—žŠ¿ÿf—ZWp–÷Ž·8G¦C¿÷T£Ý~Eå¦ìÓÛ›—÷g]=ºf´Î_|ª±n¥zùêó‹Ùwý­ƒþ#j×kÚ÷íÜùú÷£.’ ÛïÙ³ÿ½¼~µK×^xªEÏÛ5»¸ê¿íZ˜¼òT¤CîÉ‹}ýTÝï.é<[í^ÿÍOÙ’!+Ñ,öYÏ|¿t°ƒ^²·zÉ›ÜW¿oºÉµ7u:~ÿ¯ooo.v1–o¾û‘öyw“hùæAA;(hO¤ ô³ŸG?ûL6ýsPÐÞäÜÛ—3ý®ßã ÉϬ" -o›Uµõ*ýs‡öÏ'Ü`;Œè‘ÚSk# -{1¢G*k#Šû ãÿó‘G×FäžúÐz®0ìÝã{sŸÝ]Þs}±ËÍBûx,_]Þrvù˜‰|8“߉3yé¸'gò#:œÉïþˆöäLÞYèíËqüfÖÿáH>ÉÏàHÞG7ýáîܽRÀ~Žƒcïé'íÌ>s˳¯öfùýP¥¶-²´Çø÷¨ -Ú{pMé¡N÷^×g½¹íË™ìÓñàŽùߦŸŒ²õØéÇv¥>¿GGȾœŽÿÞß~ù8Øñ9©W·wÚb¾ÛRæ9kjïG) Ÿ;Ýô)7Ýs©žsüüÊço¯dîKýœŸËûö$ƒûË“äª?¥ðØÿ‚3»+Wï7îO˜ê™9¶Á -þõgº à9…¨ögÁöE¢¸“’ôöXýŸ.âö‰»{ºíž‹þÿ|r°ãç_]Üýáòîq½k«öå+¿OŽ]´}8…fáï;zn×^zbaô‡W7çŸî³z¾|xRކ£÷‹ÿýÀ‰ï$'º÷M$~ü.@„È>CU‚¿Þݼüj‡«rÞÁÝñF:Õ¾(Œošupú¼3N^ÂwIã?¸}^³dŸüèêê]Y¬wm~Þ¥ˆÞ·ìÌ;Б7»Uï—ýÑ _üþæ…Ý®G´Ò¾½ù¤·BUËŽ…þñÅ×—7Ó¿|ð‹?ËíDþãg?\y{OÑÅÝ—]Æÿúƒáè£~1}þý¿x…/õùøí?úOÿÓißÅ£?ý×G/úŸúÁ/޽?iÕÅ#N†æêÑuçÿþcÍÍH«‘tÜp±FÐìÕÄÉË7Ò§¿ôÿœ ®…NNJ)1ûþCv>·„Þž4Ÿbëÿ†¢?¤\s8úü¬·ìÒIq¡÷!Ÿ¤¡•‚®ûáħRŽËIö©õ¼;ñqðü˜ë ÿƒË!—£ãt[ú®äRûñ¤ upROR*(C-µâ£ùÄùttNZNµ·êÂIb%‡‚†ÜIL΃ZH‰_ë³à2š -! W.žÄÐ;ƒÔŽ–£é¯}5™hwâJ.™Öc8‰óìz—C G®œ”„_KKíèï¯s'à3} -+}С¦„Á•Ô)É˱óÅ ÍwÀ{7³Ðúà†ÞrêïŽ0‡˜¦þ%ú×cÝä>qXì>ìaèðñÄû˜ñ¥!§ŽCà‘aékŸêþ±Ôú·~ð±¿ËK]šh.e¬}ŒÁ…Bk_N†è0KÂÊ8ÌJ§¥Hæ6ôÏöße,¥…% õ“Ú:«9ô£Ð@ñ¹ÔZ'­@Š4žþžë<‰†êPS£®¤Ð?VO\ko…IC•&ªw3ÔØ—¯œ¤#KNÍ„!<‘†„öN7ŒceS󆻬€†Žû -çf¦3rëC­Ï`ÿÁc%À«+{o;/´þ—Ùº9O#ê<”‡!‡ÆÚç­³ìàbYŸ| Ähž'^ Ã;WÅèû­øLÞþ¤¦iØ£w -½çý[­ô‡;¡o®Å˜aêIïN_˜¾CâP|àEïí`ût>u.L`ÿbð.°úNìL<ú(‡¡÷¥À5Ú@˜éHÙ'©¯‘úH<¦¤ÔÄܧ¾\ý%&ö}kqŸz»ü ±?ZcbP†Î§±vFHD }UñPÈ]' ]FA-†f|àlÃÎC™¶Hu©¯ -óAß$žX®y‡½jõ}#‘xÄBô-äI´¹>˜¯Îûý¾Þùi÷uVæöµŒ ßè,7´ˆù«ÒôLë ûH‚¼oyâ ¥õqÓ‡ÀsæSîb"ðJvÞñ5zšµþ] Ø—‡º×G™úª`½ûÎ0%>epÇö÷*˜¦SúŽ©Ú‰µkY‘Æ"­ÜðÜç°ÑöOÄ-}â2Ø¿?VjÆØ›HKjtðð@2޵ñäÆ|A§ÂiÚg$=¤n.”Ò…Ú:WnϹŸÔ8„5uÊ÷ …ßc6€êÀºëV¼§;£ËF!àÆå¬èó[+}öÞ^<&Í¢áÝœóà”•YíèDÖ`ÁÜCo”®ÖuÆê”‹g -3<ÕÕÕ@/ö÷<Õ]Ý!… úK²Õ¼÷#Ž<üy7ÞZ‡Û<²ÅÇWlWTßÐÇ¡ÑBu¹@Ài 5#nžûMK´XÆÙZ‡H'‰T³c­°ÑkŽX­¿­¤K0ø„E^ÉÒÏ|Ççf_„® ¸ -å\v{H…ô$£ñö^ß‘²&k3Ã|DºvÌ9è¯×JëÐiÌê¤põo%Hê–¦„PZ­j©‘NÓÍ19ócÿVkÐØPˬ¿ÑŽjü’‡±Ð5ü‚ƒŒ¶MŽ],vžbÝÏ£+½1…Ý -Ðw*äbŸöŠù"]ªÖ!ž‘>oøåšd)©'EŽùL'e'$Z…SžÆ*,~4$ô7dZÞÙTþ(²q­"g]e6\â.Ç àȲ”@Šv™FJ9„$içÛ#& Y'’Ì’Hïbú+”p2“9t‘†–ºB2Êá˜it$§Sù¶Û¸k‹p)_w6¸æ}ZŸT,ô3ÚÐazG²mpš„npª<ï,´¹ìííÀÚ4?O>Y$ ènü­†£¾†Ú Ø¿‹¥:²ô}cU*¹:ÝE²Ãv”Êäó`l|µL Ö'c)WåÃ@>„~x8æóñ·ç¼®ˆzìÜ*; S\É¥¹I±4âx£fš{ ¯‹-†<›—sæ{²äa*§Æø£þo¡Ÿ,B|««v}Ìü-G¢…|+ô­.&pæáã%‘ÑØÇÐyÓW !“¾œˆá!±t¹ì/>™Oy6BîLÐg£ËÔp4ž">°õùz{&ïô1ˆøš„Ëû&‡zWUfvöÅÔ÷µÐQÄCîý€PbÓ ‘K f(6&t—~¨ÑôA‘öDþ$::2¿”ø‡µ^‹' v cnÇ!°.S°­!9rT³¬%8ú¼IÙ‘zÆ´úÒgùïl\°Ìîº&Y}£`g±tJéÀO7ÍÆ{ñúøƒ'ÑdŸ¢nTZàÈuûÑÌbE¿ÿ™ôcˆ-žhb8.p(÷íÔÛò rg ´ÿ>t- ›ŸÝÆ -ìY™‰Š˜BØêp„ý­º¡«V$} Žú–p°^ºî<Ü|ìUé[Š´ªS -)CT]ç ÏÚ~§ãd6Ô·?]Æ Îïë¹x‘ò»!ÒLÂDuP•2n»jä²ì6ßœ(Qãï좀wš‰fô™„Œ¨nÁu…«µ:à‘.F<ýNçR?~ºÉÕÄÇê¼wÿJ\÷ÀîÝž”5ÇšQacbeŽ×…´õDªù-IÁÀú@^@´õe뻌¾ê=ë -‘D$½B‚ÖŸ“ZŸGŠKdñÌïÿ³ÙZh`;Ø`hâØHÑPH<ÔÝ>÷›œë_‘SwÝ|Í´ÉO\c_369dŽwAÐ ÇþŸ~Tv¾dõw b÷¥ dò a‘!DÚ‘ úZž häô黄‚*ÐÙ¦Ÿ¯ ?±Å"0 ,†|æŸÍËbæÓ{NiåYF‚Ö‚Eç$BÄk-Z >Ï®ÛÛ@ÀAÂ|×iÃ@s=DivÍiÿñòÔ­¿ðúo ˆÌˆìÀ®‰™¼p9;‘M"&1ðbô©îk‘ÑÕ’ÀQЬ]ÓGg|ƒµ/7ÞJ¢ ‘Ú ¾B}o°g+»_ŽàDª2|½äëÊ­ò1¶ÉÐ?·`¶SæÒ5¦\=À¹kSñ=4 ¥,‚-óˆ ¯&¡dš‡èul;³J«.*Ø -•-t¬&Ql`û¶ ‘ðŽŸÅQæ‘–E8†Å¢'‘Nø_rŸò$Bda¬‹U{û³£/_!‡¼Ðpâ<À‹O¯6cA›ÕæÈÎzøç;R*dbùVéheÇKÿ¶Ët šŸ†DóL­Ð]bS‰üŒêÿs•4Ôn™Þl’b+R+9t…#úÉŸ« ,»˜™·×Ð<|¹•'1`ÓôÉæù¢UȬîŸcyÅà^tŸ$ìl˜+RöÈAsv€²R58&´Ô¿Ó:&Ÿ)J—à­é†ÇÀ1bzˆh2î ÃŠ©@؉ÀÙ@Þž—Á4ŠÂe螢t¤ÍÚʼÙÿAß휷NÿnÃlôÙÆT¬I?»S } <’& §8) }«’ð‚£œƒÎæ€Hì#ö¤5ÒK<ѤìÙI¤`O]£%;ËH°~àt%—LMûD&Eow;’³Î‹ÛÀÃߦQ°Äá¶o$Þ - .B$g:±Ìô©Þ/þ6Tž /9ñ¶;~ipÄœG%çaËelótÓ­ÞötZ±4¸8uÍãa‹°Ù9ÌÌÎE£6}ôì®Ç94“M8› eõ×wž«Ä@]³ëÇðñ@NÏ<%JÆŒóhBæ,ºÚÌÉóyûn-zlAæy zC8wcÔwþŽÆT=l49 s -EêB¥ÙÉäjFó$7ØëÐL˜ÄÌrqÈýŽiï]Æ„g±×sYrŽ‚vaãK™> $¤ ±Íó·ŽÀ£!':¯˜Ó`ÂÐ2r«cJ”=b#H‘g—¿Èž¡@* -¶ §aAËI\Ìõ9-¥p ñI1(AD2“Is"‡ ŒaaJl1ö–#"OMÇv/2‘ÝÖîD–;°6A'«hùw`µÆQpÚÑI®Åê¼µ¥–M¸ý¦kYÄqœöÑ‘ãÿ˜Ž®Þ¹0!Ái©”D’gÈHEšR†µKœ¥ÔïbF̧ ’L…‡Že²Á†šV#n––ø‘ËÉž/É9Çࢦ肔±^ˆlÜ%Åk‰’"û—&j:¯ø¶ð‡Rgè†%b!`n­ªj‰­óÃ)@M-öGu/À×$+Ù¿Dàƒ0"ÀáÚBB^ -eô-&¾~(÷tÂRD@N¶®N°Öñïl`±®óêé&Ž^L ôFCH Òõ`bæÂšgbcô8ç->„, #s\É9GádnÖo,IÆ\JŒdaå qKDÈO9ªIv=&Ÿ$ò¶ûK§¸wÿ£6Î%¿†íXÂ?6¡D¾¢i^_kæ)7,¹eÑÖ9ï 0exeŽq9Ý …™ã¾ãp㟰À0Ì‘2934Ʊ±ØQE=éD_zí•(…uŒœXéëZ©-±“ -öf¤ œ( @.–VEüÛ{ð :.žzvšÂÇMlÚ›oÓ ­‘ËÖ“¡Í, úÜׄŽê !0‹q”’cçÄH P8PFØ^"¸"GÇÀÓ«ê7¼ù:A¡ða¼}‹Œl=øEÖÍ\–³u[.í‚Î償#€æ(¡°DΡüd‰P™áXDº ºy„è"oh10NùÂ9`~§‚ғؿزdà|â”ø;o²>«‰¡²ü‚S™b -ä³*¢ÍùÑÞƒ¿·‘OnkŽ%sì":Çî»uÖùqÀYdÓUЪÄå¥}Ùî'@i {$o=ø%âç S^$®Et`V$V‘MGÞ»N‹„aêÇA…GÓt°ÊHA»™Œy‹ø)pñ)(@ÅûL6m Æ8ËIÄAåÐ%ƒ—b¥tBΖ@„×ú2-r¾ÚǺLR‡ÎÀóøw‰¢ƒ¯ÀŽù„b‚ëê5‘XëžÃ•ä|Z‡4-0O3`”ŒAK‰OZˆðü2ò©õ5·£‰}ãÚë¹… YðÑDò°Ñ©ÛyƒÝ"鮇RfO½K`0X t"þå+p,cÁ"Ëæü³à°u6<ÝÄ«³±‰YûãIqUîŽpUìÊŸ­D¢L¡X ¤Ö ƒ$ÒdTZ@™fx§sÆ;%‰{ ~¥PüºõPZ6E0™S>©C@ÌTòyFÊ&-â ðg¼_ÄEW€(ÿš)’`5wMbt˜¢ 7†Í›sÉÛXÑW HÒ ôë”S¸ÐN4Çа¥í˜ð,œH“Å#Ñ ìäÈÂe•OP™•^âfMä5)¼¡¡Sh/›¦Tà —EµÌ’æÔ÷2Äf‰#¶¢õÓ©Ø›wt*gB:€wñË5ccg¶°ó•Ÿ1‡ð7D<¿äruÌ«òÎ Ý&0ªn’›­åp@um–ü0E$Ï5Ñ8]£Œ¾‘JÁ_Äui -6.Èúš-u¾òÌ/‰ÌÒ*¶ 1ü ¦”Ïñ],Ëf °Ll%“%á}^9›€¤=À•<Ý/ùÕjÍÌ¿8>Œh 2(ì(ë#”G<‡ù"X@ž¤ØPÔ ŒVGôÍ<<³X¡KÊ#À”HA™¯œ$A„2܃(pD‚Cq²!Ù™ô{×¢R]ö€½U³n.2­¸ªÈ1L™b‘÷¹Û½?a%²ËqR—Áhjÿ²9x.-0lì[žáÜH¸Íh9‘/j^³s ;‡Æ=Ÿ¬··0@"=º+Ùt¶P$ g¿Ž-Tp&ÿî(5ÁoÚ:MìÓw)ú†–$€Ùê?Fºé&pÝ€·€èÍq|çO8ؽqôœCV^Jh—5¸þ‰ t, ¼' -52ï| Ä*¨6æ#Ÿ dÑ(a ³îh1co/·–HÂÎ >a/Àá3”UK¬a”¬OeWdx²}gè(®±z³èøùt¸ãèæã_Ÿ#Š:²ñLøWd*KXÁœXSC§‘=Õ8[*ž0¸!=l½ò;<1ÇJ®A)B ¾©&±€ØD¨@Å«´/IK„F¯Pã™b 7cY#!` Æ™DÃê|”8T¡0QBG]ê“.ˆïrÜ—àÌ|sŽîœ@Ï1¯sY(˵/°?¤dººÀIž3´r¥œC-§hÌÓ%`s>¥ß½õ¾Vƒ¦‘ݱ×c´?é\°1S5€>_“ùšÍ—•`Z sä ì`9¤Î8·€€žÓ\¬¡Dç Òu”é9¡¨*m³B_Fc „$ ³¥qœœœùBe„,éÛzæd`Ö:ÞsŽAFyÕÉŽ¬rÐ@KÆ¿à)±FhÛfltOr¾òFLØ·´*ý“¶„5æ2Jdût±„oŸ³7\ST`ë Pe‡ñ1œ– -àŠâ:„9ÃïðjÏç#!ÈÓd¤³Y˜ÏÓ9ãªÀ4U!›^€È©”•‡‰/YNBHK83²8f¨ÐïˆÖq£ë¨Òìôt9Wo L†È¡Àzúšà$èî4k0` -nM›8sÎų€úœc+ ÆÌ‘]t”ÜBáˀ俰; PC,3f8:|f`–9Úe"Æ3þŒ3’6}àE0ƒ"‹éâcëÿ{…"5¿# E+™=›]¨ò)äl -Ñùë°”z§"ÒÑʼ¦fF¨äQE6_mGŠaÈæ«u‰ƒ='^™¡e7jg@Hzm†–\à) ËsBò±Ï6ˆ3J´’ÍmôÖö¶ÆÍàgç\ZǨ-Pl ¥Å3ñ‚ËgkK/eòÕê[';Ë&^À±è¥uÈÖÓµùµ ¶‘Í?礦ÏqAKìÐ`D~ˉÇ2œŽ¼Ž2áwæH”%Zeíž™*I°’Ì)ŠK&®¦ P¶爈%jb®d 9túÞá‰{²·`Dç×–¡öe8~y• ú,@»)ˆ»NbgÁ"ê´16µÂR—)fj9а ‚8¤,£?6Z‰–¤ ñ¦ETj·ZPÈçhº½¸ ©›Õ hãÂ{/ïÌ]üóÀzœ€_êƒ)aÓCdoÍm{«yÝf.í NïuŸ'¿Å‚3ÉFëAï“è¤s÷¿3sÎ}„3¯³ÿ̳µÁ÷µî„áÝÖÈm[$ŽÜ/ …RkÒÒíÀoÍ|sçÅÌ¿A^«eÆàzJá"ÓŽ%ÖšÓàŠHKÏÂÌû°ðQÐô,RAƒ°2kwBX·«ÉÜ]·½ç¶ùÌ4%‘¾HŸ›¥×­ytJ­Ûs;qnÙ:´nüÌl£™æ}κ8ØŸíµt¤€Ò(ñ´¹ž|ÎìuUz®j¯k˜¬H¬eHÍ3¨6&YÍó°æyZk™\ôÆ@ZFç N©™BÙPŒßYÔ›[W¦ÎY]û•¶sG}‹w¤·uk¤/öÕ‹aû¥µ>Ctæ†!•ÛµBçrRMÚuý°iR ûjœ”ÊÐs -~òœ¡?-…”E)É…vWb+œ’د˜¹ÇøÝ èÊLqª?¦Ù&E¢lTç)WHËj%ü sÑŸ"‹qÅn=F0;‰¶U¨àà%âùi’€×!s‹xVì&øŒ,L+{"sÊÑ:ÇV˜¡:ƒ±"ùÇPÃ(™h«‰ô bž2­ŠðL5-“Õ¬“+Ï‘lˆS«¾,ZæØÜ›ÌxLÂÙ‡LäŸQýIPûZ´Ï+Ž„ -œLç‘€Î<ýÀʰÚ4Ç«9N7ž´Tް•Ðu¨¬­h?´·)Ëbò(KKì!Ê.ú ™K<Äî\ÒÏ -¯A–$7øMIæ<† túòô`ÝräÔôÆ93³ù7ì–áèóý£_ýúèóÿ´ú®¤.N £ÛÐØÉØg€Œœ¡PdüW¸oή,‘;€(œ -Ä¡GÇñ™ë‘‚³ -kßù1BÍ̓ãÌ*…5ÔBVº=ÕÙ“ÒfŒ _âc–I8¾•‰’V ô±î>.£’èXà.Mû¬ ÍFu.æz×;3M‰ƒ±HŽ‘.Éà‡Ç4õÓ•ížý -a]ºpòM“x8É̦I)Ad*ÅÀT­¶žÇ DåÝùä© »W›1Âdš”tL¾Öd¹™c'I©“yR¸Ü'£i§­¥Ù¸d¢X@ÿÌÅ0%±c5ƒsûIcß’­°š<ˆØ…®®î³î5¡eÑG§ïÚsö‘Õ¦/óV -䜅;ÊÒ Ûâ°ÒM¿ŸÂìD®{%ä5!%9'/êSqLŠ™Q]Gý¹JŒàsM"˳)¨ŽIà£Dôì¾'!6FtJIÓwôm{µá{Ü ±Žsg®Ñ²R “i<ÀôY8;«ËšqÅ–ù‘ty·öþø¤}jµ¹Ò7¯›š°Ìœ½ŒB‘n ]k5}.;Éõç¥\הƀµ·õAýÌjÓ·Wšˆ¢ÔOÕè$¡±4râjYMô„æs.{Ú¿ëDWZnë¯Û“òÕ†o[—%ý{w‰ó€©X—±çP‰OuHHò°F 2ÃÓwõ9?™¶ùw­;\4UC h -¶¼Ÿp“>çxÕ…†°—[£EQñ×ßåçô« ß•î üÅ®^Îc C£Ñ(Þx5y.šg"Q‚ö:œVÓWõ1ýÄjÃg¥7ŽŠýQj%@x¯±çNÝ|«Ésj¼óF‰ â@§-uq|ÙÔ¯¬6|YÅ•ct?¢ÂŒ×Tp\5Â1*u5yò˜Â€2&§ÙOëÄÒXû_×í;«M_I9ö¾Ù¸ÅUSˆ·Új| -l**Z­wÄaÉ‹úTåÂü‹ÚÏ…¤áK&[–ãɬ:Éè[Mô’A_q^þ'´¤RÑÞµçì#«M_6E°©Øþå¿ýèî~½’ÿ/¿@ õ/&ŽÕ¥ ú¦Ê輺zu}ysvñâè/wg7__Ì‹¤O ·¿¼®dºf5ÓÓ@@Gñ •È•Ø5cJoÄ¿Ð,˜Þ“=F¹UB:ž¿{¼ü‚ {˜ªï?蟆ñG6Ñ+ç6mÑÂÆ}ü%fæW»A1ûG_ß½¸¼¸¹?Šþ×4A sų¥ÿýøkÚ¦þÏQIpר¯t:ÙŽK©‘¿ˆlø¬>¿^{µlójBÙ®~2|>}¹÷™lõÙ¯É9éZ3b¯§!×¥ŸhüJžBU{äLÞÙq|m`¿ Ô×?~ÙÎ ÏŽíà£i¥íÄuüËë9g `ÝÇu”á=‘Œï+VfÂãG¹ðXÙðxÓl'êà·lC⯯3â±.Õ#oøH»Ê„µÈûã}pÛ~“9 -ŽŸÄGúëß‚ÞÓ• {«5Â<¿ö-ȿⓛq"eðÅá±oÖƒ"̥疳c›mÊȯ8º.®áhGÿ#´ãìüç¤Q-)”k¢ØDÓGÈF‚±Ò)_LÀñž\=a¸¦{|^~ ÷Ú_ç¯oüÈñ¢/Ç‹îNFÓßøƒB Æ­q=Ù—ãN[n¹åŽ9lMÛÁ³-nÛÿtÜ•B™¿ºñ‹~,¶öd(§k[™›ž]Ž'ym‘g.È©ÿèS†Ã 0h}£$B%U¾ §%£á_‚¾ >ÿhÎNjäÑŸ>xîÂó%ͳ*Í,&ø—_lœ‘¼Åüò‹7œ…þâÎóðË/Þp&~ùÅ #Ýàö÷ך7zÝX7bÂ'g÷÷w7¿ÿ×··w÷Õ›©~ùÅpôÛoo¯ÖºÁÕžÿþêò…Ü -ö†–Ò'w·ç/_}zq~ßí¤«M†ÒðF†ÕɾÈy—ôÂ¦Š¨¥8§-s èÔÖ~÷Í -g§ÌõF¼8³&${‹Ð “f¹¸ŽNé%Á1iŤÖFµ›’µ;ý{£ëË„ oP‹cƒEP€Ò‹ùœ¬^£øn«÷ÂÏx× 2°¥yž§~"R y®õ¿Ð{÷úWãcœk½@ùÇÞ•Ïš±âpÖkßiH+ú@äm~ìò‘}¼ûøÚ€"3eáÀ¹oŹþdÝAû½ÇnõF oÊvh{al¥©x=ðáÖ|¨*ýÇß< MÛ¯'JÿÈ’}Ɖ)ÁìØÈCå‡rK¥Z½4®óƒ–ña­Þî´ËÛ[Ø$5Ž7í¯X8ÉÑö×ܼ–½ùÈ˰3cÊj^·~…G_Ò½0x{K½ÜÍU@Œoo×_“Z› Þ“©ä Á;kHÂõÁ…Ó†Aq:<–Öð”—øŠÁÉJLª =£O¹gÚÎj´E§IQ·Ž½.Q2¬{nYItHU¶÷€ON)ã†"ÒZÇ”boQ»c³:¾Âa2Zî ½P‹¨=a{´7ùݶ‘Ôâ™Ì„QôjñØšœÎÇéb†f†­n˜fíß–JûÒ.#†ÆïÈ&Y[_2Ñ–+<¡OˆËUž··Z·Ž\Iï¸ôéå—_vCîaÃèÓ·NÙX8 Ô´B¥šM7÷ÒÎ¥ÖPF¹f¢R%bЙŒ°,P¥" ©\ )B‘ó—à“+™3jÈ”õ€Pü·Oô“Æ÷‡©2‰Ûê눛‰ÊˆP-’ %5ᓈÎñ<çúõ¾"¾Ë¤@%*AAè}O…Û¡†DoÂFETa+´'Ê@>_ -çO#¶‰äBTœDêz?Ø}á I7apZÔP8ÄQÔ”ñœÅOsW£@ö‚õ¢t;eàÑå(‡+í +(›Š% -PY+øKè ¬bò|æ«´€b7“$*á—€è/Gl‰@Ùñ•ï‰Å*™9IÚCR¹re½q+ &IÊO÷H˜ºª)6v’ï¥@ÝàÛï|W‘¦€Cª”Dý|ºd(£™Îp„Þ@E—ŠBû¤sVTÒ¨„æà³uõ8­¥åŽ<ÁZéiºçœnœö)ÐE3¨¼K‰ž.ÑQ¿DÖ/ÊÖ¢~yäÄÔPF0e*‡¡öÖƒ#Ü;P - *{ Y$1uç”xå«Ò 6(fA¸Xd¶âz%Ù]¹T*pÁu?1w$ º.a„"ÅØKÒ½Eg)òwÓ {‹†*4h-ªi„,Ÿuk…À5ÊÚ÷¶•§¥­BÀÁcÒ%–@nc¡£EòCz¯—£äû1‰-q6cô²µJÒÌ¢.ˆVQ8“3—_¦JW}´t yg!ï;¤ådðfÅœ'ŪÍw$!¡8òmt1x.aÜ9ˆ–’jdsåMÊ“ƒÄÀ÷¢fy ZŠF‘‚ʬٖ¤œ#äŒ8L5£7š:Ì¥C€SçÏùÊX‘dÉ9 Äó®H ¨8rTXbjN•pH˜ŠtµSI¤¹äé-ªQ€ìð –Âñ–T²ÐS#¨^ +]0ŒéDiL0•Ô -|ŒÔù¨i çÈéRáyyTž¦g"‡)‰‹jv4ç˜3?ÊÅv̘]“w¸IMÃ@Ó¡Q™;°£ tÚO®üR‹t#Whào•N‘£Ò¤U"o¼(1mÎJ£:ÏŠÌwÔ0UãR¼TIF“2°-9§ÌÑbê}¹|¤Rk©rI¹ÔQQ¡£ 2gâÊ_˜ c„°štu©rT?!Ë­NËO9¾tÍ{5J6 Q|ùÀwyªÏɹäåÇîRÎD .©¤ä¥(Aþ~ Fd¡ÙS‚'{IÅ’ATg)/ã/5’€Uˆ<ª:÷öéÆLIðøÐÇm˜€¬RÍÐ@ׯ ¨óF ”|ñ¸H%/"‘f4Sùs¤¶á¦wÂO©ÒZ#NLRNÜÑÅG cÍŽ“Žûø -ˆMl…o ZÒ¹™ŠÛ4šeš¹@‡Ô¬tѺ“¤7ˆåœ¨ÞÙ 2“ ã\šë€:—¹¤yU(7&OÊ€…Œ?bö|›h]ýåšd”K}ÎF—•†…›*Òè³yåWøH-iÀØq'B{…Úƒ¤_¢”+ÕÚ˜ñ ³&ò£p£È]1 r³X …6•¥¢³VX¼qM.`ŒÊ­\—‰ËðìSÊŒ§ûr¢lÇ®a¹×oMtÏ ³¦w’nAéWTž ªWy*HG ™ë%1g4ƒªaÑéÝÌh—µ T+0ðŽï9àó¿ Wº%ŽªKTä1Wbd!±«¤ÑÆÄ¹OIx…ÊyP©6Ï©Á`K¾"¹P­/¦ ÿʱìá„À¼‘ÐD™ƒ5 pÙjp¢]J¥5¯¹¨x¨:†Ô£G²aWÙ©¼we ‘Cëª gÒEÞŠJ%Ötth1t•ŠÇWNÑpÂ*cö6¹J T¶¥ .eäsâZ·]¨q…ήCEÕ$yR¼à$p3]Ù"g -—’¥°#€»œ1ÂEw @Xbji¿8.E´à@fLª3BuC»| ‘ƒÂ¨Ôo{,¡#˹¦:’žƒs§ò4kÞ*ßÔÆöX—M„.’²m>÷•í…²†¼TM›„beTáЂ†&WÊ$$*4;úé0Á€ÙS¦K>¯K2WÁUC{3C8á–iÈýÑñ%\ì‚4’Ÿ¥4º³sY’¨Š@~*݇Št+ Ì<Š0ý5&Ô2ø8ý±Ú%%×ͦbr…¸;Ȧ0¨qI]JƒLšÀr )g˜”H³"©+ÄcHå(2Ë•…MA`$eÚ„$9[HìÍ‚&¼Nà¥2œ7Rð1•aºS*›1a%¦Œ  -°c -ó1P)– -Jًಶ"åHÄìd˜ƒ¬BÒ°Ò)‰«¼"ÙVáÚ.)(*”p˜oC’ˆ °@%æ8¯¸°.%)© -ÿ’·å/x¹ -g‚ã•7ürvã,¿&±cbV ®œ_ƒc¹Ä„¢JR ÉEu˜,é=)Ôœ)$ëÏ?½xr4¡Sa]xÁÓw£Œ‘ãc¶wÒv×—¯$j½`L•!¾Å"§5gìBN-8&ûA[ˆ&íQª¬¢‹¼õÑbÒŽF§Ïêã ¹ˆ7`JBò8;7½·Ò`QÒ”\R½¼-˜kÝ´l¬?ƒ~EFvL&LÊ9NMS¥\ô8A꣣ ÄŠTˆ•'PÑæhBWAY„L‘’²òÒ¹+5f'0x²ÐRS€YXRæÒœ„¦*dGA–Z¢Š+ÈK Ðå‚Z×Q,TÁø &Z«™ƒ™\š ÂïŒ,;å|¤'çX,”<œŸsÐgM.JBé q(åµrq®ä-p¾CLO‚ŒK®0tSnI>±VJ‡eSbv €5‹¿ŒQá‰PA­[žî!8Å®?·;j|Û¯åM`w« -÷4¢ñÇxÈë×}Õ¶9è4µ‡×StFûjz£ÛÙn¿¾\wNº`æ³?k˲F…™Œ9yzôû -ÿŽÿZ¡¶ñÏQ»žOåP˜Œ2é¦$sªÄºÇVÒÎ5ÏkêÕº]âp4À}súü¿à1@>C‹ -&–˜â‡%þLš]ô3å+Á—  xQ -C0ßbþ{GaÖHØ–Õ±3h -7*Dspý×ÇÅ6ñÏÑrtrù9LŒaå´Thù=nÒMãqx®óú Ø&þ9ž€Ñä“6%ÖX^Q嘗rþ–ÇoCS¹9 ÚÀspý×ÇÅ6ñÏѬì")瘀Xø -]`È|†v†cç Ý”spý×ÇU¢ös<QP¦cØx”Wüv. ;ãæ "‚TAÆãŠªös4 iø0Û²½$0,@%8ýDùbCîE˜‚ˆè1¶HŒ& ²²ÄÜRkJÞÖãìøq 7¢ÂˆÃH&ù)RØ -×l” ‹¯Ú+Uœ4hÉƒŠ°Ø@ua$Q¤?F£Z]7Ç -S–öñýø»„>iЊ•a“EXj4–¬ÒðœeJkTh àAA°ûÝÀ5pc -ˆ5ûwkþ¦a÷­‡æÆ B5²KÝä` ™¼â¨xz’>•¹ä1([*€(ùƒó‚zû–*GF !]¤AÜ*°¤(A8á!!Ë“§"5`œ‰r[k@uÓ×ú@(F¼ÁB2w2)E(€(ø /g+ÙE×@ËÊÎ2£µQFN"åAáhYoˆ5¨ ;*E猱§üë<å¶\»h0¡ó@j ’SÊU¹°7‡d#+7ªæ ’eÄšDÎ(EVKWÓ·Â3:JîZ’©"`ªb,cÒB|Îݱò›†)ïäýk°å ÐL2-ÓO%¾.fEw£y‚HTqCÄI»‰à1pº\ð1¹P&‚‚vƒ]w1 •î[†´ãroЏ#å;¡aµ;ÌU˜1:† €üR’wA•Ò)¿È+¥£¤tÒÒ£K6÷ ¶t9eá@ÁM¾ Ç ×ë»d·}\1ȤyNòJ•Ñ…ž‘“)ÊßÀhÂLF eÞO¥,”T©!þ9dŸÿêÂÌ—Må[3šï²BÂ’=*àØYvÓuP !¨¿1Ý€è0Òu6€d1?dŽ…rµµ‚@ÇS+QU€ºÙhtñ$Ÿ“QÌ%éÎÄÙ”a6Ý“§í˜z³pmEUƒ˜*°5”‚½Ê˜WAÒ!„`~¿ -°G#´pb ŠQ¡à=dÌyòüPV*@=cÛ­C?§‡æ`;ã 4kJ  Ååœ,Gþ…ËRQ¥:€bÄ5ðÆ»Ç$ÞsÍÈu L> ÂmÞ#1*pqòT•Âmw†È e@žÒªó”‹ÆØä㲨ªÚ$LSe$UÌcu²`93cP‚€Í*Oh”§A%ïX&ÖÉ[™lŸ¾x1rÕƒ<¨ÒrHú(¹•»Ž‘ó0xx `"2…qwFˆREJtNQÌö7î+@©ð9°ªG - Œ¯7ª-ë@î[ªáž4”¢Ö™¤eÈàÍ!ѯªÍ=¡´†œ× K¦d\¬—_ 3¦/T€4Å¡¦ó<EO`´1 V冷O{yšÏ[ ÆÓ]š:œBAõ=Œ%`uTÝeyB«0¬ušv‚FDüš‹»FGDS”Zí|ir‹ÔN˜d>÷ÇAÕ.Ó³®ùíò''ap2.Í)’ ÀsÆ;½‡ˆ˜d ÉÇ¸š¦ øø|9I*ÙF¾Ý’󥩺é`¹†Y1¥šðã‡^]$·»‰j׈…bÈW¸n<êÃÂÝCùŽƒÞøòr! [¹û;–3¡fS|µjzdÝ¿€/^Dt}û³”\ßšâÓÒÏI¯dÊîX&4„²$B‡&=8M4&gÇA*ï¬Är¥=‚s¨(‰éw”3‹²E¢d^ùÍÉiÝk‚ÌÿœßL”ü²©|»¼œÎ!´I^’$¹ÏA D!9™gŽT›@ñ%˜—}nK, |  xš•¥S]oènL‡EÅ0˜ox~TÌ”úœA²tò–íq O™yÜÐÓºŒÛ^‹ÄƒP±ÂÚdt“JAE³Ö¬®Ek‹@">³š»O]o£K´Õ0¯9B:Ú"MáõñFj*9ïAÉ]ì€Ý0/tÄQPÉá%² -ÙÁÇ¡Èm”¸ J¦r ‰ÒÛ*MÅ=ÀÙðµVÀ7i…Rô¾lž¿ÉýmïnuøY«pÃÇ?óÍ/›Ê·±aåðæuZW±C -$dœvyê+ïÓTVAÁ9áAi¨ó†Pð%@ -çåÀwSäoN|–“6ÌÜôœšBVo7ÏÛ0õÎX:•]yŸ\ -n¹ªÿTD¹µâÛp€D¾9ç^(ûæ°M8h¥TEx -PöÍÁ -Bx)íá ¾9'ë[¨óÍê2B]æexò9PØžªª5ÌÅÎ5§Ù”ë -®9È$+iÓœk@ÍϹæàþå)G®9$,hçšsê€Ø5§›T5vBGó’Ê&TÞ7ÙyñÎçæüeDßІNR•„g`Úg⎼sà»UcÈ‘‹“"öØ;çAeì‹ Î;‡Ý!„ý(‹W#$rÎñë€:ç;HÄ>7C òšy•¶£:bòƽ`’±¤§h.Î7R#ˆ=8åöÅKßœ“¸té}sšUIïGÁ×-2‘´†r;Ù5§9Lð”¹saPÌw p -ò²Ö4^è®òJpθ ®9íö»ô®9Ðx5aE©1HpÍEPçšÓMíqlœç‹TÄq3©ŠfNRƒ·„塸  àšÓü´×B3/Mãsy/Õ§Ìã¤hÎÁ5‡Ï¯§uá=n†•$òèIC]¸îØædØ®×Ø^0Ù7g84Û‚œo.E¾9­œoΰ'RWÞ7gXÐã\…)“aî–Ì ›/Ä>·ˆ_$Î9*Ï5ÔX…Œ@ž£c$0]TYdæA“=Þ‡…;CÚu§œ.˜^¸Á9w;É\’)6ñ*sF{•¨˜%@½W‰Þ¡áêè‘yŠEL~eVE^¥ `¸œäÜKDßÂÓs‡â`–’¨‘|î®M'ïJ¬¾Ç“ñÛ !ŒÛ3ÁŸºkÉÉ»$¥" ð¨,/ó|áÆ,ß e´ÁüÝ™ %$“ Û%ëä>%õÙAýúQÏÆSà›î™~J®v%QŽW䯔̓ žÙ—³ÔBÝEŒ”͹1$lzun%¬ÚË<£p»†¯‡lÍ’÷ l”–,'–Þp-DP¦~¥Ì³¥È±„­ã¯áÅFV%C(zMs‰”)\CïY¢×j¸4çYò Ä³ Î†UŒàmeXeÕ„cÂÁ³$çs"̓öðÅa ‡Ó )Žx½¢ô "§-•ÞÉ®%EâÄÎä‡Èµõ†rn(\€Ý‘raUPe:€B ã"4ä*Ëqwø•ÆUa\'ô„ùQÔ®"çUPâ·\ïÆsrZ‚ÊRG#ÖÓ‡zqÅï K¶el?uWup.Ýðéñ¹#Wç\ŠA1}yh Db± ¹æ9/$¡kL]“€ÂÓµ?&ó‘2ÍŠDzÊ4=BŒ?×ÑáñÞ%Ì6P;ñšýè¦gc$®Íy—$ñ.y “)À,âY0&»D†Å$ñÓøÈ/ÙGð‹ÊhkƒUŒ‘ؤ¬3k®¿*2m’¼e‘\€é|ì>Ñ”>*ºw<î«È»@‰gÅC½åP¸[,x—À¦W§K³ݱlÓ‹îaÍÛ•^ãþ0Uip¾ÊŠ?ç V©¬@ÉêBE"p"}P}íDF)¤ÓÃãðTðIÜK™ÖXÍÜ -¡ ýÚ ¶˜ò³cdve™&ÕÍÌ Æj HIL@Z»‹³¯PÒ³`k‰Öê›™€¾l*ßÂä² ©<84«ŠXà„9 O€zó¾qPð(˜`@1O°×7ô.J*5 O©˜Nƃ‚Ú…É´ŠÔJÖ“ÏrqP@ùÝŠôØ(tÊâ´ÝùÂÜ3´8w -(>®êÏ5ÅÈ~Œ¹QEÊ#½ð,"fÂY)ŠˆåPð€…W Gê·vójaÀêP,_ë€þÏk•`bH™rE_FÌ­òÞC’‹ÀAÀ©)É@Š:™Ót“Û‡rÔ_Söfå†þ2SRdžÞ…Ýã !v_.ÆŸ—,• BñC8›Ø… -€úøJ«„ksQ$”ÆZx¨s&–¨Ä;)d1yK´—%[Äg0ÞGLàAÞf€R -È\£Š4h‡Òâ¨HbR}ë’³ ¼«±ˆMŽÈDÇBòµ£P“(œ9ä5‡Rô"RC Þm?P|£§ü@QRî˜(–pÅ.`$€jb¨'/zùaÚ½ K·D±y5Ú;gIŠvX AáŒÕÉ7èÈ–QËÛ š ÖTwß$P OF')$™#&ô[ŒäÛ!,kR§¨  ‡ê2 \°%¥ëN¹ÛAŦ]4$›ìWHóƒÖÈ‹<)%IȆ©Æ¡˜´)ê¬ÿþNs¬”\8Å,°á"sK!G3{GÔƒfb¨gõ®7‡çhÔh?¢é¹C}H'´$Ä¡ ¡…–`_ृ&œ.¹cãL éó°"@® ̾`…´­4Y&AžÀ—òx½û%Á(£¢×é*z.¢éñÏêÛ=”ÿ²©|˸i&ÄåH3—#ÍX\ŽLÞÉ»¸iêq9ÒŒÅåH3).'m˜¹é¥q9ÒLŠË‘f,.Gš±¸i&ÅåHSË‘¦—ú\¹P\Ž oæ]¸4cq9ÒLŠË‘f,.Gšz\ª¯q°>ÆåH3—#ÍX\Ž4“âr’†9£¸—ƒ!¦—#ÍX\Ž4cq9ÒLŠË‘f,.Gš±¸i&ÅåH3—#ÍX\Ž4“âr’†—#ÍX\Ž4“âr¤‹Ë‘f,.GêIq92¼šç¸©ëq9ROŠË‘z,.G걸Jâr¢v..G걸™<šç¸©Çâr¤‹Ë‘zR\Ž7¯I!•鱸©'ÄåH=—#õX\Ž¥q9ICŠËñæÏ`·”zB\ŽÔcq9R×ãr¤ž—#õX\ŽÔcq9²ö†œâr¤‹Ëa·ðAüx#õ¤¸©Çâr¤‹Ë‘zR\ŽÔcq9RÅåH5).'iH~Z©ÇârÒõº¸©Çâr¤‹Ë‘zR\Ž4õ¸iÆâr¤™—#ÍX\Ž4cq9ÒLŠË‘f,.Gš±¸i&ÅåÈðhÞÅåH3—#Çͧv©'Ùt:èÙx´S;@Êœæ.õ˜õ³¼·H—O!é­nz’ 5;’gjp Ôà © ùœìÉ d¨Ï†4÷hÚN½&ض¢Þjv€õÎ푳$;IvJìØ­‘Š;€³Y¥v€1hánØš@š1;€3Œ¥v€Öìp¹Õìh}³´fÀcšÚ4n@‰/µàQKí´]CÍ;À”.(3fÀ‘S;NqÌ€kIí¸âÔ¢&†Öì¦ ÝgˆöÎÙ¢vvŠí)y°XÙ¸ Þ”¤Å1hQµÑYz1cv€úbÐ,šÔû54n@d§vÜ’ÔàÔšÔl²_EÝP'/²¤”ä”à:´`Q¹nˆFv9N±nð÷]Pï#êŠAãv€…¡·º Ýhzu;@´½2\Ôìuê ßIÅcÐq;€Æv€ÄLŒ©Õç±Â6ÔO‚ÌÐ%P‚'‘¢ÀD•á*Uì"Jð"¢/qN—DÿVÖ€/™È· ÐÀ"m3;²*’P6˜&i&ÊÛ@˜)ùÓ` 0Ì?…r¶ÈŒ7·¢G¦"?ƒü§ù—4¤hì=A$f»‰xùÏ(îm†EtHN_9§n[@ÕÆJyB-€•S€D¶§ÍaÍQ¸†‚@ÁÏ@U„§e[,õ0ål†3ìÛœëJ(o  R”ò.)ÃkˆL°gÒÔÚQ‚m¡¼-Àpœ ¬+ØJŸ:S€·Ù(o -0T±AÁ`80« ¹í!o¥PÞ`AUNÝE¦Ã{ZÎgëðî4üܽàV±)À»l↔7¡;"§f,¹ãÊkÑ9¿ ä±%Àƒdl ˆ Îû“ÎÓÃIH”,9˜0Þö^ÃÏ9–^ÈÔË\´ ‘É ¢ÓY3ˆI(XÀ½JÇË› çÊ£j@¼·EFŒM†•,sàΨ{ZíM†_¸(˜ =e[„IP@Wñ¸Ë2€Â) è–¨¡»¡¼-ÀPe%BsÐ\ã™ × ƒS@u¦èŒqÌ–“g–hÆ\ÃNzK€iR+Ø¢!N›€St“7pmoyËRA˜Ž­®€@379JÅåXÈ]ª[rw¦ã†X»c+@ÎF¯t­P -€)ÅYòf‰—; bÍ+EVUÎ -³ÑŽ"[r'ó)â™îS­ù¸;+@îvEyå>b‘Àâm³QCˆ!)‰ æž—SÂ*¼¢²pÈl&”·—D_y+@ýª³hŒ2 –äB* –Ìï*JDÈ1oŠßpˆ`%ª¥iÁJÊt…z½˜ê7ÆIÛ*z–]ËùƵºk9ßHâL>ÏQžqÎ7J²+j9ßø{œóÍ_Iá=zÅa½êÓ¾q ×(í[îj&%ißò’¯32máÚ$_!ïEÃ;GÓc’ö k‹ÐIHÞ 8ÎCɲ'âœa9³Ì`5È31~¯:²2™!\äY°UH¢±:hÈûÆ÷S”ö-Ï2šH’÷ Sã#Ô¿`1ÎÝæ|8i¼dfò¨aˆ†ç›.ÄK -¦”(^R8D%ñ’ô‚FÄù´è)ˆ³nyP/ .^’4?!£xI -Â2—އxÉ,°?o§À8?!SËNÅ$•ÒAÅÇ3 —¤i¢–üÍ]8Qò7Y1)o öòC’ü+~ÇùÚ¨x­ˆsºé¬Š@ÁnΨˆ¼¡¡;ÊY*jéß¼Ð&Hþ>çs±”iþ·ÒÉi n(¥‹¨çø2rÐK+~kX®Ó¿1©åsöƒÈ£—;z¥#)(&0 ”ètøˆ^ݵvnŒª€Ü¶?'daN™w ¦Á’Âðž†`Épx|°$*&µ3o<•G6§çDÁ’”K¨“ Ê£`IÁ7m*ÆŠBVÉ)/¥JO„ûÆ{î¾Í´ãÁV¬«:¿6áL¡_„!\R.+ån -.u^»R Ö|Œ¯~…KP)è¡>\R˜,½ ‰…µ ÔP½ãø¦'qÉú»wÌr¯­Ç§ŒÎS-=L>‡äz‚ïýðÀ‚±š>Ä\J/!¤–Ä’ -elOqPÆ¢%e´ƒ—D²k7¢ Éy–" -qÝ‘Kì%ÁŠx1M‚ÏäMg{I<4xI|oÁKâ‡üÑüœCrðttN%g«MO¹s§¤ÇÜyT’»Xpb ÈK"r¾/ •Ç‹¦­°ÎU²¸”Hê$ß[O„“€b1Fh'Üxy‡^—'BQæn‹ä¹+Å…§§<‚&~òe¢¢%Ss -¥;QE†lÖ-]®cáS2d‘!›¯IY²½M*X²(¶dhé^²R -·D(Ö˜Yª.=sùä$µ2–ZK„q®#Z“å=n›uå¬K)T²©'˜²)GeĤÓ7ž ¡èYÊœ—ìlÙÛ²ÔÈҰЌ٥cå±-»¬œ„Ï{'Ù¯í°¤Bªä™®“¼éGòŠü$²F2ªñaÀ´`jœ+YÆS䛢¶.¯™2ï'˜  …êY%ÚÂ)]w^) ŽIßÓ=öË”@iÁRò’X0jœèùMê5mß§»üü¸™p¦àà&ã„[‰X‚=ÓiÅ €—Ê ½,ûQ“ípäáw-ˆ ~oY¢Uê$ñËOHÃË›‘“$‚&|.¹c'I^T»+·²ý/ÁR€AŒK$K¬ ¥§s„Ôr™E‰KCÞR’€ünÎ%Qÿ}úÛeRý óù6Ñ“ÄqÑ»–ig¦!»²e$1&æÊ¦$ž.º 9FF•ƒBo·³H ˜Ì$£â´ªƒbÌñ›qg•i%• Ír€HÆâ ô" -ü£;³ïf>Ç7ÔqžÆÊ›²b]Pa}Mób ZÄ<8<’¦ÞC©L} z8™¡:"¢÷ŠÈl¡›”.ô -4ã}è)CjÈpÐm®»€\J 1¶ ¥¢¾_X®¶¯ô4ÙÃ<.P󣌜Ö8 -©ADë&=ŒAÑ1ë 4S²·còK°¢ -&c4Qè]Ô˜µQEx£ÌŽ5^ "!S¤vÑ{„G(4í^Ú@É^¢O)Ad lß!–l© òº’™ƒúÃ…™|β#Þ …cÌ2¶!êQø<°t`0í§Ãž%8ðÐC4„‡K{A6z¼8ÂB$>TOvHâ ½dY^c7ŬW#ÇÊ -í>pŠ4»¤±â7xcPŒ¶­C¹’v˜X±ò2™½âg¼°LÐu¼ÍHò)œ]ŒŒAMÃØ‹A v=”¢º¨;Þhá­Ó“I´©ÊÉ®a÷ÁŒÍ»ïh„ëq¥æ…€„” ?Ž¿æÈˆ@ÆÊyr•‡\-tw‡Ã 0è $ûCiWeI!ëäå³ÔÇdwÑ6R(~J^ÊåR®‘=¢†tëRE©³3Å`É&rD5rÏ’2æ aAm **¨%îG¢<ûÖÁ0º ÞŸ°h—=5~êvªÆ9%Ÿ2 ML¤3¾{³¤4žÁüÛžr¨DféΜòçañíÀþ‚éF—›2ë÷šò'8\.]R|S*~>P»kA¬¯ò±»VQÀFÚ¹Z0É­¯…ˆ©‚„ÞÞ_ЕéP6Š~á"Sѽ‘Ñe%®Í;HêØ(x61~éuqfu( N%†3º–5Ïrš‘É©¢™Úé͵3‰B¬t&ˆ¶Pt¶{ºÚ!cZæ˜6š=3Ì»ìe3Œ*˰Z—65Ö OÐ Pç½Lt‘4þ•ä`Õø£¡~ârÊFûZË®’èüŽÇÙCP[vL -5Û¿G˜7¸?aTZÌY@yòÐ(ž@müxøÚèµÁÇÇ®=adW…õd F–°âªAÉÁÕ;p.«Ò˜ô'n…?m“òàd ü›ã$Üž~å£Ga)¾}ô“r½ªØßõ c#Ùö ¨²Ø¿äÑÜé ~«¨_gÿ,R:À°¿jŸ˜ÁÅÜø‡8~ÕîÈ–!€½ATÔž~u«Æ_B{ÿ“k…?9ÛtÒƒnŒäWýΊ$¥ñÿâÎ]÷’†–Ó=·ðäâ†<ˆÏOŠò,B¹mÁŒ‹:ð[¼+¡™t›cZKÉ0¥QOØ.¦–””b*K 0¥N??"1OT8Ý<^mL_5òŠ‘”nlº1A¤´’’Ç3¶‹·4Ýï˜R*IIÈÏïëò’ÿ{ûõXÇÿ•|·ˆy£ï-Áp0\çLy$e€63¡-IM°wÿ[rGEm*\Hÿã§ÿÅýÆüKðþ>ÿ¿=°?}°0´š6^½É;?Ùm^GY‚ßû”9X|ÙŽ’Q0éS°N÷QBa,ŽòDdžûlï3Ž}¶ÀJsÐ;Õ-DQÌR}¼´‹Æ"u@jJ^RyF’vš²Ûv^@D“½Â+,+,BQƒÅSæÀê2ÓP2 -ý(y ©í´ -|^(°™,±Òk“| 9†~Ówðk<çñ³²4ç2A Å{ç\.`³¦£ßGÔ&·´Êq;Oô«@Êlr¨Æ#ñ#L³‚…ç3˜KÑÀ AXˆ]Ðc.xëVbµkA5CíW9„û`µgCÙ%Àë‹­"‡e^“¢I¿¨ˆ Û¯$–Є}EFÕÌJÜVÕÌrr:KÊÔPjŠrÂ}Å@›ñkD‹LeZòkH‹£Š¢þ"+JLÄ\bEDÛb 0XbZ&ÛKž‚?,²K¡[§„z8X,Ù®CÈ-Ä`~–scˆtÄÊ¡z!ú§G([DPâo,5]”D” De®Ñ"Sxç6üùñCc‡g X Ûð‡pÀéh·GIÅOèÐqVdìÍ£k"z ñþX¾º°Wb‰ÜS.cçåV±nuI±{PK”vÊpC.àW%¦#¶ØÁg¢ZrÔC .p»ýÚçF‹†ññhQÒó -íêßP7£ÀnÒÒÄ©V'_¯²†»sÈš‹”lj ײ¾²ÇÁ0Û—Å…’!ÈN/weòàx‘(°þje÷ñå†kŸÀçvR¹¢¡% \r¢À?DtÀœs(¯(ETƧtðMeª†)›4JY Ÿ˜’Ù)À 7.Ÿ¾ýÒ'¨Ö¤ŸÃ‹2…ŸÁº«šð.A\¢²ÒüŽ.?âô 8EþsI0ç  ²J!@béXX¥%…¡]P''ùõTT(Œ+¨¬5ÏÎ5ÀÕí¦Nxfr*äj G·íq»ðIA!XÜ‚ÆöZ4 ÃIÏmm_Ä⌠w/}DÐ&ƒèuè—‚ ¶XcNãFòþÐC]-©zHÏUu14ÕÎÀ‘q8p¸a°’’%0Íé¨íÖYI°¨°x*äpPDrŠž/z Ä….•UÎ ° ·¦gôÅ\昅 »¦ÈðBUêæ3AG«kP^ŠžûÂf \*f Î¸ ‘qïÏ,„ -}WÕW z–ŒŒQqvh E!¡[“!g$H…Bê#ò¡Í9šÀ²TÌ¡‡Öç %DYnA\á53àX_h-#¥${þ*Ê@Ïø,ÞH@Ú‰±¡ -¢Á,á Š?L@a5²°Âe0‡7PÒ&a²ã‚â~ D[’î•Ã)¦0OiE¯Y øÇ1S1I±ì‹™|£!XÃR%`§ÄêlÑ2 ‡ ·!V™#þ4­!šŸz¢œ)ZÑÎa¹,êOöüê‚Ââñ«‚"Z±ˆй•SàÖ–Rݤ -Yˆ6T½¿©è¿†G·0Ì ¢7tNÇø Õö–SFzà—°Ú¥47œOÑvGÑlö4â£1*ÈH·¤)‰W|=LkÆCo%Üe GÁ54¡pðQžSf!ãr–³r‰ý]•(D)z°aù æ*ÇìÁáÍp=ÙœÒÏY¦d•EG Îw“ñ7Š*ºçšßf@'@•vVRÀÿ 3Að~•Ñ U FŒ9ÈQxœW-Š.µÃ>ø‚Ë -9GN¬©üÆÀ ä*°†…¡<Øäaij[P%¢rîÃÐÈ@=¡»?‚'ë;ölS›Õƒ‚Ýà†Kj]`fF*£Üö+1‰@&^a»&ª°ä±FñX:§T£( b)&T¡çK+Â[<Ð1ÈÂä—Ã"Tšˆ;Vx<Ê¢6³À•cvIEîРU(<§xt+z! ,ŒgŒ¶<x7%Q/©¯BSA>ï˜\ywÕ¿»]òÙÛÉëVØÓ GÆU ,§À$?ÿÌŒ€‘W%Q‚¬ÊPdÌ¿TNñúE*Š@•Û©fÁQi°rH'Œý攋-ççðn ¸½ÕãGŠ(Àmaʸ’ÅE—Ç´Õ±±& ´(Œû³¢äüxHq±WÅ3dX‘c¯Ät‘7‚|CÙ}3C)„xµ‰<.G‘s蜴*!øªùÊüÀ½e¥ÍQx@™eõ1˜Ýû5À£ÜŠ‚ÂñÝ-Á -ÉäiYpmR’‹ŠrØ‚’Vä2-3 dË1žÂlHý›C9L•[Šg/E™a–Vq<ØRÒ -Pð($W¡O‘XWœ4¥Ìèa.| GÄcжðúT(c ÜŒih #`ÖPDP‡. †³@¶lð|¼àöø ¿:Çl$†(pv–—À\’ÈÃÂs*l„Ú7%à°$¬ÍTÃÓENY @ö' ’•Ø xc¡A² ß1ÅÜ p[ÁïVáBºÈ(—E"GÕ° E ìo¹¶X‚Æ…”ðÖ¶,!·2ê<øìÔJ.%ß,.†­„ù‚-IB+ìÈš%Ya-9‹ªä[¬ -ðê¯> -}„R=eC<ð † ’V,ÌtŒ˜¢:çq’ˆÞ¢ÐKÖêóèÞNTÁ16ø¨QqÞM`aLÞq ƒéÁ6[*A05g‰i´ËÉ* Jb‡q‹RÓƒRa-¤ û; ,Qq@-ð1Òáeæjßz´+¿äSɉۊ5 iÚ´¯ôöKÏØEm”®œJ_è "Ä~%*ǯm#œ ¥î±C£ú*ÀÞƒ¼9C>Qü¶ c‚†ôî8› -£M%²Õ2Ëp+.–¨*J* Ò‚#aY)<è¦­Ôøú0n§M8yEïkÍR!Ðn³âÊ Tš"< @FÉK¬¸BŒÈr4ö[Jbº¨NMò¼Ë£j®`¹*ÒöU»[/ƒ³‹/‰Ñä‘SŽ/­ènûZ†I‰x] d$¤E ò­L‹vÑL-}Óà‘Q3ª¶g%“ -³â;‹ˆ]´P|s‚NOÓ¯ð‰šÀE®‡ -]‘n’ -ßã)wùíDF6RhFæiðu¡bï"ø"2&S°UQ²KP¢ð¢Q.Gž`™Ìó¨ú{ã½Aƒb‘(¢ªÒ%iRÅ@þ „¼˜u£:,!RI†Vt¨0ÌÀÎhÎÇ’|ÅU[¾ˆx+ ±,ÃÛ8·³%dˆp‘{³>£1w.Ï¡µFnÙU*0²W¹·«@ÍIðæ¡{ΰÚ)ÜÛ|€–&4É’nÀð*ÀÇ·"{ïØgµ¼ÒJ^lºë¾Ý$Ð,‘0Áñ‰@ªÀÊ |J`YîˆTâ.”’ðºÕ»ÂlðJLp Ü.Á‹R\ÓUØŠ7XAl܆ÐiQšÜɘðϧb–Üþ€æXЏRTx¿©È£"ƒ0×\·è”¥ÉÆ"š.Lb5ˆö‚Ò!#K”î„KÎ2#B’!FºœQЬà ÒS¢|oŠî•"‹8˜÷ e$’T*H) ¿g¢‚Ì öŸÅ>ô©¢|Á<Ð~BœP‘;O‹‡Y«=A¨&+IŽN:ñä)pûäD%cLj L)Éå p‹YOƒÖSïSAìq3ddÖä&&g4^RF]ï7„“ ç7P•-ÆìYµ—nE’ÐtMïÐÀPh‰KÄ;O¬¢gò.íœßè¹3àÊñ¤D‚dŽVdŠÀb™Ç‰{CzØû¦ÌhÊ8w0‘AæóŒËÊÂE"™n N­då¦,T–øùá\Á Ìɽ*x¤‰îÎ}…L,¸š½ª„Q`ûÂ*öX ¾@G’$ÌP’Kz‡7½ìEƒO(x$nÈ1(¦G{PáõÌ-kùZzm¦@×=X• -¨qAçlÅi,@аÜLƒÐþJþwðª¢&£H <X5‘”;2y–hŸ¡#æ¿F¦HFnÙBSh€DÇŒ&WŠ­óçÃfFð™Ù» X¥*ðøWøØD;^Ãmr.Íœ´× /tÿÛÃY6é#‰%ð] 1^h[&÷6J -vÎEIRœÀG`‰)À@å)eF²Z©§,³mAÞ*´¨– YVÀñmeÇ ÓZ(~‹ìÌsJ‘K‘lz8¬!2á©¢KˆA*ɾ‰2¢À@%a¾\øTgÅ‚‚Q-Ó´±ä‡5Pí`ÓdSXÆ«ÀߩԒh -âV -d 8‡ƒë×!÷´tTAŒ├QóWHDFrȌܕô ˆR.¢É ,Í’0fÀ¿RKvñ² -!~Z;7töÃÈ?ÉþŽY¯‰h¨`E©.‘1¥6æ–:¬ˆ$@Ê´7"~R T’,"¥*i甆Á+4Ö€!F‡AXŒ) `WdôE‚¨ - 9‰‡ äÂÍ' ž ?ÃnC<4dxyT9[˜+b—¸ ôEBdkAÉgœÕ츊ˆ -!ÀœsL–µÂ¤8nߣÛÈè5™„4ŠºÓ8Ÿ E¸ -Í7`ª()Úô$Lö€Á{¹š‹‘(Ñúà†Š5Xàs°dˆ9T™ "0ÅhEô¡‘&év`¥ÌÜ‚œ ”üµDÞ )d$ÊŒI­H³B[}². Î$êø½Åä÷,„gíþÁaÿ¨·Óî·ÛƒþN; ÿ -¡òpÛCexv!IÂÒNfÕp8æ -ä›ï+f>ûz1ó~÷k¿·6èôFvòÓÓ ÇPúø/?ýç×Cü[I[ëÙ¯n}°kùé?Ss;ý­vc~p4Üoí úëB«Ûíì Z‡ûmnºiW9Ó0ÃQ³±T03ÞörÃÎx*ýBœüIÚX5©ûÅêï­î©Pçõ¦ÔÇ ,w[#÷%×՞ݹý¤Ýõ±ßl÷[ÝÆtc¹m›´'µØùÝnºoD}ìP‹¸Ý£þ¡kÃ43i -G£Æ½6õ1hÏ\n4yË-™¤þ ˆglÒ@vÚðŸ¬SLB ÿRŠ~²ÒJ#oÌÝ7?°'»ÛÆoW:[– ¼[ذ-Í; FÊ»åVïï]Ò1D+Љ²…ÿAꚌ^£úÿ“çü…ã+OÆ4ºí…Ö 7΃ßÄ|“±Ã‰ ±­æˆë­ðüÏ79¬F8êt -.û[¡|lÇiô°ßgZùצÑIl¦·0ƈ*3'½^ë ½ÓÈgî@ÛLq'á9•ð?ÙŸ¿§ÇM‘y_}^Ôȶoˆ0C`%z¹!Î5Wjù ]΃8nþ`<‡ÿ²‚¯½1DZiÜdÔƒ¶[ú¯í?\û†NbüwÚ² ¶Œ–~ÒÆ}z¬èov_7FŸºíáOÿ™yØëÿÑÃß@~›šëõ-¯žùÕn(ˆ33sVºû½íÿ>³À‚ár§kW…ŸX‚íôÔ„À—i‘ÜæÈß3O;ÃŽ•°Ó lŒZÛ?«“ùÖ°³O£ßÛ9êŒÎöµÒ3k­ÁhbW£Aÿcûsf#ñOÝÕ -½Æ’±Åh´ÞÞî[ékÿJ ± Î8O ¬&ò¾=3pÙZEÝ*U¼†³·1þþ&‹ LxÏçŽ{I)!£šI™áKJh÷|¦×ÞmÜhXÆžŸO0ïçò½„s ý w_d—¬ÿÍvÿ_€&-¿:šþQ¦{fÄ|þy±ß,ýÙÞ>‚Éб‹É2eCæÿœ\ùCdúÏÔêÑèËd&¨P¦°Ú ûY* SO‘k(¢©>‘Ȧ±†§>_Å\qŒ_hùè¿ÿýÔxÔ~ü*N!¹€NF·àˆýÆÔºÅÅÑð5 JØ£Ñ|_'IgÅ‹äz£CÄIáðÔߎ¢ä Û9ø¿eÍ3š(Šü6F½üÖþ§-|‹ƒþacc¿µÓÿãǵý/¹¶¿CÞð5г\ƒ ¥ŸÌó£¦ÍVçp2ÏOOÎYïBæù[ÝÞÎå°=l#@9–¿Õ=¤‘œGÃöÚÆÊ¼ƒã³wc¶èsé ûýÁbüõ»Ó|<ŽqÃ#Sˆ¿‡ZCFÒª4øÄ§€·â`2ª~!¤0hDÒèê+X ‡ÛÝA:ÿßÛƒQºüÃV‡’»§y¸±’ÒXúó°e¹õ|{·?h7ž¶ÃÄ­OJè?Îì@üÁåÿ…\þ‡Úuz…F žFCJ2za©Yªo«mZ½¡eJ_EÕˆz;ë¥ã?rßò¤¡‹hCnÚ;:XèvøÕ²fèa§·Öïô¶×¾`ä ÿMè¤'½ƒ”П4‰Œßr6¨j“¬øv’PÓ«©¿…iâÄã-§~S{4öjQ‘!„Î5åø"×J´k&a˜&;¦o‹B% „Q%bVV™!òA -¤Eäǽª0ceÒ³d϶P::ïp¢˜WY|c™3G¥ž6T2gælê Ù²c{øa×2m*fÈn¿í>Œ¬'™¢@‹C<ÐÚÈPì§Jê´pØÂíšxB—öÞ“¸)–Ý"W·4kXv f“ ÿwÒ˜I½1ôóŠS¯t†£ÄŽüSš†m²cm<<ï§$[ñOœ+v®xŒ›}i6_Xv[dôÇO[ý.tõÿ`ÄA»=Ú©n¬tÑÅ¢âOÛ`Ô¸;èàïà…;èôZ£öNƒ„ËFÕ9h¯§þèŒöÕôF·³Ý~}ñÒÙÚêƒurên{°Õ´.»iع'“8aA¼‹ýí£ƒvo´ØÙ ¿ðnÆÀ€¿FŽ ø@¢ùn»½³ÒÞ=mYìÿøWŒËZ°97h·ÈùÉœ™Xñà˜~ à_E©´½ú,WÁA0´ þؘZ?ê¶«–)uzµ¡¸Üà#—ï»)»©[ýÖ`ªÍ<éu¶û;mW|Üέͭ;°,fÚêˆE4ƒõvw³¿NƒÓlÖúÃÌÿ,ùÛi{7LÙñãì_‹0òvݺéóɈf|ÃýÇ/QêðûüÑʯv©Ç`Ø~õçA·gL·F#Ž$«mÍßÒÍW%j·½ßéî ÚŽ>\F^÷gø×èÓ¡CåÔÅÞðÝï­ÁðFTº2nû{DÖø‡á1 {ñþ¸–×þM¨êõ{í³`©ÛßþØÞ9š\Ó¯I¸_¾À­NÔ6q–EZšÙhó¡<ÃBãæ_“(þ:RÄÉH9*:­­nûL'ã,;ýÂç3…뿟-@ÛïƒàaÛGÃQÿà;`ß”D¯[“â=‡g§Ô¿ãÜl@içïk>ÿ®£<Üýã; ïÿN>åâ_³÷…RMR–ï]ö,òpú¾sËï‚{W¥iæšqÚòöÛ`Ä9Óú\Óïb"‹Ó¡jÏvb¿“EY­RK°§.ìÓ™ö•Õ¾/ß-§¹»ž­þÈJ`+pü–7þÑw#T ·Üè ¶Ûó`¢ú>¤ -{Ù}ó8hZ;VÜú -“©þòdÎï°9ëL4µ¾6ñ09Ë0Øqê«T>Àt‚é¡öGõv­nÇ‘¬Êœkç°Ód Ë´ÝçB -dò¹ß˜;õë­á¨=pï£nçî Ñp+h|ìY»4jì úG‡'·í ûÝÖ¨ÝØ‚ a‹£ñÖUã°žÇaç਋1ª5z&-gw³ﻙ˨>ñŽE+OY=Ìa­Ûêµñå`À]Ýy;q€¾+óÂîl×i;Åwm¯3Ü·~– ‹ü¾÷{;í?—;ƒáè³)ÇÅÇ#•±½(1îs>}ÀÑâ>ûL|ã9+ -6ÚÛýÞN:Ü9°îöÎ>¯Ã³wOÎúðɤí?<p»&xNŒ¯LÓ'ì¨7ý^¥ͼ<®eâAE3ÓǵìØSÔìZIÀµ>vxj:ê;»Ž)ʦÈOn=ˆæQÊê„)S{r4¸­°thYÕNcëScq`/ËÁÉ{Ýô¶;>Ôv‘Ç·JxBgýš¸\wõvcä€ÍÐ,{ -_Ùi;{½Øò+Ob[ì9±Ol‰jôY¶†[ÑAëðì¬-ݘñµw̓`L9®‰•¶¡~1òOZ4õ·Î=a¢«NNl>Øiöμ5ÁÐYo¹k¯e_M”›rd鉄ï5O&Fnä–"ñ¼Þ ³úÞNmøû)+nv·?ÀÀ¨Ñvox"YÛF#+ÓÆ®ŒcVi·¬Û:<:¸áI 8Ü;øØl÷Àêx"£†fCŸ‹åTZÆöÄÙ£Ãr–ì)AÊ&7™¦4™!´µ·Hi5F5yò[`:­Ñö xZ¨:VX8­Ý ÊŽrê¸`%Ýj †'miX†å‘ñet†Ö£þ˜ŸáøÆñu4ùæ‚æì_›ÉZ‡™œ¡q<“I'k·7jîtOáˆÔèp°ÛïÈ¡ÝÐ*ïn@5i·†v¹‰KaR“­ˆ'mú°Ùkïµ¢—Ç´Ú³ÛÐÞK½SzëŠm4…»Næ|¶áp¿eåööIØ‚VíXzv~û«5+&Ý6SDp4ך uozõ&5ÝkzLC¾2'¸2&7$gÑ)Míxò¨à“i¥ -î1-û‡Û'ql1‰f¨[ <ÝœràG­^χ/LÖŠ±Ù©ZÇöA,iM=in4ÏÚ[…>¾|z=µñluíõåÆïòýïÀÊ‚±Ä8Iµ@‹Œ‹“9KáöÁ§“ð¨eŸŠ<ž(«’:餜vS$ŠÈøyÒ~"óLº?¶ûÛèË™¬·Ï¹/cÍ=¶æ˜à{_ëüÙ»mß2  ÓÖ]W±§ÕÛáè€ãè+HÏݘÐWÏ0öU:Ù„>{0úì £}Iø~°ñô.˜®\òpa§Á4„lûgˆõyØôêû`ÿ³\í­µÆä4û·ÅÍÅñ¡Ð»J¶Úulÿ¸6how†ãz|׳1pSþ‚&£uÅÓ[ÛÛ}Þ BÂ¥FöªÓíDQÚÒÆW¶Áö®-.¿s±4ÑPPc;^hRXM§}âíûy¾IŸK˜Ç@HDoÄþfXÂZ¿Ûñ*Òä{Ý-åQ¿×ßÞôìÑÿ£GO!ÆÓ SØÙcÑìœÄÅÜ`þEèÉýjhë8Ñ ÌÔMasÐ:<<­%NÃ#æƒàÒ&{ òÚÒÂ:'ši]Ûe»×öfŸ¶»í6÷-=5ZƒvÃ^ 6¾5¬¼$5lü±ßî5†­ßp[½FLà°ãÖÀ”á׎à£öš'CìÒþ;íìSÿ¨aOU¯Ñï5ÚD¹84u·Ɇ;É@×v0ÿiÏ®¶1êCÛíFMè­F·õ ¢ í^Xê£8­áÑö>Lï~o­C¡­g)ÅÞ:þn¾3lõ>B.ÑæÉÇÖm¿íz{Ð9<í*MöjýM' )–ýŸak×Û{ø&ûÌÓ˜/èÓ›ož¨.{îd/›û'kÌ®éæ sÏx’£¢Ösê ÓKà);Þ#-NdHÁŸ‹î\wå˜ü”¡6-í¤ATÇò {*PžÙ¬ÙŽ?²Ä¨7£àÔ³ X»½¹6÷¶z­N×aù´¥DIÚŽ™à‰1g'’ 91`û'ˆ“ð†Üs²!†ÓD·ÌDiÔ³R42/Û[Æž£?úƒÑpŠ’áÆæä·Ÿ~=³Ï%b£Ù¥O¿Þë_$k<ã€t)CÖìÄÔzŒe­~ŸÅ~=QÑŽïîpÂbn«ÿûY$ÜÊɧÓÇνûùšníAt:«£Í:éÀ0QN:1“Í“ùÓYež3Fg|©Üß±·vg·ã…ðÏ;Ug¿ÔR”qô®cµòuÖÆhNŸIÔ~õzns¡ùôøQãv×ßÌÞü¸üföú°ypuñÚ…£å©»;»vÄ×ò{{Œwß<+滳Ýç×wç÷G ûÅK‘`äýÅÅm±òÛìÍ;—žQGvÒÃ…·{oûö§‹¿-Þß¹n~ºüðËÜÆôùMâykçÈS}˜ºº½´mO-ìëw7nÎ]P¯ÎÿzíýÕÙ…KO–ÚGWn?}p~ÿÆövë#üÔ¹º´»²OC‹l¦U :¿¼¿Þyû`g¾{áÎ¥éÁÕ×Gs+ƒ\ž½ñ`_ÙaòOßÌÎõ¶/\½õèÆLqðúV§(f†»jn°}_\ýx]ø.· ŸZÌ—ÚÅ3•í\ï,Ì´ì&‹G·¦¦¯µç»ÅÚ­áÅÊ…Ù…û7Ï?[ºV¨Ž°xÿU~þv±Ð{õæÓW×åÖù7ØïíÞ»¤Ûù•ó°-¯ògùã êöüÇËù4èÓ•L¼9ÿhq¦uóâò¹«/0Lx‹½`;L¶õó}¿\½½|“ºùlé!µ_¸¶ôžz“/ä}KÁϳ«·o/]“‹wönqGÏnݼ±óá×·¸›~ƶ¿Õyㆱ­æø)¼ SS·Ö¡U[#Ìœ›_|‡è¶òã¿Ì?lÏm.~¸º¸;óð·¥VëÒ/óùÖ“ÇÕÚ…çOæVæ×w7:¿Íþöæúžf^¿Ø|G}™ï¼\z'®>×ÏçV—?<{·ÐùÏÜØ=¸°·¼°{EXÞ~_ë;ý0`¹ñÛÁùՕ+—/ï<$ì8\Ó6_½ó´õ-év^¶folŽ~žÛ|0:_\ ¹&Üf<œs]mØ´º‘¨K/w.ìÉ÷7ï,f˯gÒÁÍ÷7—-\¹vu¾_½­ïWŠÜxsÝfùÜÙ!ž`51ª¬Ü{÷@ ÝܼzxãýòÔîÃæ\vsó¥¼üËÛ›4“#ùÑzÕ^žºxxya?_ÿ¸tu¥¹èÕžƒ}d6K;@¨³öt\´‹;yaoiXÜØ~²>W¼”Ïêû°v¯û4éüç»KÓ×¶ªIÛR}l?\°ÃÌm>Ú¹j™Ííjq~åÅÇIóŦQ»»/Š]{x–d&ïêGãä3Z[¾¼Ö½±¼h^Ê«·ï¾‡Ìnaiv]Û»ËK‹¦˜Ï§WŸ"ïiŠ{O¯á¨‹3ï¯ÌíÌw{Oûs›ûϱ}<¼ê;8\ºÖÿU._œ.^Í­ïî_²Ÿ½¹8Ÿ_]ÙgÖyyq÷Ò½Üη¿O,qééó{Ž£Û¾ÙT˳{·ž¿¿¸¥÷ŸÍ=¹°=LÛ]œ[ß|Õ-?t§o"w ÷ ôd7ç?Nv–oÞS«¹~¥£ÅÞ-ëÙÖÑÒÔ­ßž…›§öW è©Q±g'ØÞkP¾¿zãþp×òïíóf^u_Ím¼°À­æÞÏÞ¼·Ð´MÞ?µü`åâ¼xyônnãhS‡¿bcàir0;ؾ~‘¶,>¨3/nÞY]èë»{Sbëí“9uñÜ/K@Ú âîÂÊ,üt;{pWÜÊÚ[×ïˆkS w<ìvøÂš"~¾¸€_â¯ùÆŠ| ½EŸ»6O½ÍÝœ^.Ìôâº|÷òp šÜÄÆðë¢ÆOpZý:¢a`À´Y?ýÛþ‹Ø¦³†sò žÃ™Øap¥´f˜V±vïÑ&Àn`oa죎%7éú¨ø«ïoà ã?Çn@\È€Ml$Döön<öHØ@”úanÖ¶H Ý­ ûû›QÛ 7 }ø -ãBU)FnáºÂ¯Ø›úî„IÌN^ÍíÓ·…&?ù.iÔôW¢ ¸Ž#ci¯øuz™ˆ/üô8¾nÑrñ9ŒÜ -«†Æ«“ðZ;²‡·iµ•"Z®§}ÜI§³à‡&Ò®ŠÃé‚[–líí@¼Ø17áÈÜðS\ól„Hÿà¸öûùè>™hëˆHìÙQÚ$nˆ‹ógô󈑶ş%f8Ëõ¼—Wñ'ÚXNþõ2• ¯Ìm>}Ø[ž½ÔÞ´zÀ®Œïj®goϽ•å÷^\_>w¥ ×,­tÀô/VžYü8ûìü“½…ÎÛw³KÛ»Hw[$c˜ÑÚñêN,‹\}†êhk©ÆƒS]Ü›¾|‡dµû—_‡K/ÑDzó³O/MU ûGë/>üm>^Òü»öÜzoquvãí` „ÛîìH‡¹ŠªÅõ_³î»›Óï—ûõ¿Îü|ù•UTŸ.m_Ûœ™Ï¯ÉéHµó[{‹í+K÷‚È…Ôƒ£*à†¥³×åj¤ÝÅ’…Õ_A®ºËý]ÛÆ:x®ígÓý™Gë¯ç`b @YYÞ¼ü+ÊË4 þ¢òrÍʼnƒžP§aq¤X'òÛAƒ)»ÍÁ=Þ‡'>²ØôüÁêSŒòåÇó û¯Ï]·3~÷ΑÀ›¦]p¸ÀüÇGW­¢²¶«ýA¹zÃÛùòÖ¹ðOóÙõƒn[õ Ѥóùå›K¯›¾—bùí›+ç——zGp<å…ê $úºöËÌ«²Ø^y0ÿxmÖÞ/~婽¸0÷ø×§ ’»?<û Íý‹Yññhk-[9lvïWÛƒÚÐîxÖFÿÚCÛa˃ó_.XdT÷áÚ[ÚšyÙI%ä߯PÅç+|e¨âÙ£Ãô>§¦ÅMµÔ^z»ºõÎJ,7€÷ì^^Ú¾š½žÓSÕcË -Ÿ•$ðøêüìÍ;O..Þ?輚7OŸ7ç_YÛ›[ß¼ -ŠÇÝ wßóÅÎ `肹5³xÿÕÊ@Ö±‰åÕ77&M¿Ü¼øËÆò»ó_,îZ”ÍwË_®->˜º<…"Oà(^ì]øh)£úùÆî/ûFÕöZ].]½’ïÆ÷ì×á»ù·³OüÐ+v›÷Î壕åu h³ÙœNþvé\vÿÕݛ܇¿rÑ®ûèÃîîõΥǬ¬wmnyñŽ+“—´3Wí07Þô_½>©ÕÓ+ůÛ7VkMn´ß^þˆv·ë¿îÝè,]ë¿–M1·a–ßÜ=]¹í>xf3FKç‡öny´OâÍüùÝ…_žÞ©û>ç^Y‘ú·u»Ó³¿Eb#w•5-†ŸAyôŸL؇¦=¨óüÖòo÷n.vWLy#ßž?·¸»ñ¾¿Ðùùcé[¯ÎõnßïO"$Ü ½ÕþöaõhwFÌ­^_z8{cþ0Ëyn7§fÓÕpèÙ¹âÍί‹»Õû™¥—íÑÅJ«ƒK›Vxûb®¿¿z–’Œ—¢ð××aúvZwîG¤rûV®&QIõqnis®¨ÖQž|·¸ûx—4q žï½óË soö–f÷ÖïýrKÜŸ«f>ÎMn2wåÃìÓÍû­å›‹£h:–/Ÿÿyöú³öÞly8x‡¦Ì ÃXï -î—¥¥µý³®•ä¿´—›w»®Þ.îÞƒûæ·—7^øÝR–k. ÁÄÿØÒȇ‹³Ow7¢Îo玛ë;Ó³×ýð1’Üí¿6óŸ—{ ìºñçö·9Tqçì}˜lÁ¥îÌ~ûí{‡î¶Ž1roõhñÞÛápñÚÖòÒÍË¿\xb)òÅoó«·Í8Ñ<þÙ^g_¢uCLY¦§/Xnsfqws`õÁl÷ :Š÷‡oÞß½°|îáìàüÛÑânМ@·•½G÷.ƒsèùòÂÓo@b(À|K¢×ò/Ï?t2i>î/Þ½}¡måŽ*'ËíöÓ—Cßïå©û;Ï@} Üâùbûæ[P$Ž®Ñ»‰Ô•©Ë¥Üxf…¥»æVż²Úø³7ož¥“ŽìO;3"³áµ—ùí'ziÎLÿÚÞ³;}Ü }ÿ?'ß!B/î…$$tHIH!!½HîsŸ}q?û‘l° ÆðÛÝ“ai¤ÑhúXÍd yŠLµ[™B*Tk}Vï”OÉ&øŠµ£ìCg¿øU|Œ{€ì7u¯1â TñOù”²õ8Êù:²ê7÷Æë ýöü/çãÏ"/nÔ€´nøê]§¯T6ß?ÖÃé/TôTJMõÎæ; ?Z*Gj}û|Û† CW¥wm3B, 3 ªbdBKþ!ë8Ìg×úõÚ};_zÿ¾qÙù6J³‰òÛê-¿³ë÷æ*ý¡øÞ{À˜Fƒ=|ñð«õ[IïýÜ[ -ÔÛßpÚyCÀD«w!õ -,®_«ê‡ ·òÓ8lszõñ#ëþU©H ­`øw5K6ÁLP4VO«©½X -pØÍLz®°ç±е, 4€B?Ý\{¯%ì -º{´#ïˆgù§¼[5nˆ€IçÆˆQ"ëÄU­Ç´`vs/áüš©ëZOÕ®ßs*0Lõ}S;{ªõúàé™Z|;sRÚƒÕ‡|ôV}˜°ƒ.ü|õ’pè»'ëü+ê·ßO6 AØïùA¯Jà¿úø÷Ðw3â¯d%gë1Œ1ÊA/Ç`2~T«m>±ýßO'c•XÆh%ì Š ¤¬íÒ›°7OÉOB£Õ»¿ÐuQÏdC¨*ª."ùôùP’ßîïÕ“öÕ‰®m”åç‹ûš`¡Íµ©[i6×Bø³»êiµ^´º¹zÕT;Hñbúç˜þùˆáÇïâá»rê`ɽ³ÍAâ,TinK@ýáÒ7‹»ZIûçÚñõÞx–×+OŠZKÿ]¾¨…Ÿd̤äOm­vgåW ٔŞLž60mŽýhj}S UH2Ì䪬Ý­¡ªþéfFÑüýýÝq^ì%÷Kïá¸~v~ö {ó[ùÿè#»ÝÛ¿ÚÍÕß3fpĈñ”ùLËd3ìΓ ²èŽ<æ2§°ûíxñóöi0äsŽ!»â‘ж¼ Ǹ' ×vÿ‡`q£_MJ;-·µãúŒ·Í×,þãÔáæDLßœ‚ÌúæE~m÷ÛæH%ø*ÅÖŽ+É—ÜÝZºÓ,õôŽ}ÁÕS;Ô“¼°om©úUAÇ*Ý÷š Œ»>u¢cN!«½Ó¯W4qsÕוZÕøz©vÏžÛÀ{2Æó7j{ïâÕd6­Ú¥çàµÄïêWõNM(¥DâEûÜ:HƒÝíÆ>]`§ªŽœW3ý©$ŸJ ¼tÓOÅãÊ ©þ4{ë`AÇÁúZœ‡£$1~³z›[¯\½tÂ6rDÌA^cHåçÍûLeë½|êRxñà2\‹7K:îÍþyúˆ‡]òˆ´Q•êíqU±IèsT&÷ÄÓm9SÎ â~!–´Äß;ý3ùjïæ5]üÜàök7ñ+Åee›{äG´¿î®ní5ÕüYûVóP3uG 8“olóè Fý/.í~~5¾ò•µ¤שêNÊ€Ó—JÃY:Tï - ªýŽíêEÄx:EKæÖ@Ÿ~¶[<~¾ûÅYþ…¥a©£ˆ/'ZÞ#Õ$ƒå -yK¹³ònì咟ú5Ms¾çË>”-Q0>*Õ¡)ø†/úœûgö!é똵éª7üî} æ§U˱òH_>ßÞ¿Ù;Û+‚­*ЭϷe¼7Yþ9†—ç¯ÿÓx¹«ÿŒ÷þŸ‡¿÷ß—ï÷‡¢ëEQS9Ž«þûÛ¥k®S(H•Ü^õÒ_/=î„[Òê.ÇõOy.*77ó{›¿ÆKmçò?}¯ó÷\‹Ö[ßÿý÷Ç%n*—Œ…8.¾BMGiU÷þý`8q³°%À‡H¿‚{õôVàOH¯—6êtFÑg|@Ù<¹úIÀ‡XŒ|­ÞÜmmã×Uòµ$髸u>||~—ǯwäkQ?¾áC<„ƒ¯õý×Gø”XǯÇ(ºbÙb¾$ñ©Ða}åmW‚Oé]ì^~tœÃ¯dª -hJ™|Èä×Zù¡ÿƒ_Ûø5S½)üÄñCþJI|¾í“¯t5ÌMU>F€„ºZÿ¸Ì÷3°>v÷_1+µ6’R)—Ù/ÿ €q—’"à;~U½ä/0ég¥Òü“ºkŸ¨ê‘HÃܳXÙ’vÄJä"Ïßœ‡ÿý‡´¿©ªÛ/Oêq¦s.V¹L)÷üQHY{Ýñd£q Ûæ&ßÎi£í×H°!®Sפ»Cû6,5ÖìBûÛ‹õp([´w ¿lŽ&¬¢)mèÒånV¨—:ç‡ÅÃûh©š ËdFñìÓO7U)¼­W£_gÉzéR½)½åïÓ›?—’¢FÃî!½áÈ6ÜGß~@(=ý¾³µ§ªÍ;L[m䡵T\µTµUÛU¥ÈßÝÿåÞ¶›\ªðÛ×L,}nç-5ñC`À Yä¦Zõü±V"N†\ó1%kBÛ5ŸàÆ=é?°°Ÿ¯©RÆ8¸ ÚݾK¥weåÖÁt+<(¡ƒm€Ýú’¡TëE¡ŸÁ´Õ[SÊ\J•ÒÎNÁ½±æŽþGˆù?.œ2\8w÷Á…î¯W9•xûeŽÛØþÅ™†Ì K$¯B\b÷ì‡Kæ$!vº»ðˆyzãWø ÄЗÎÿ§žfÞS —>éøS‰œ‹r¡èUž §+»\DLÝr+œâèúž‚§ –çë\|ãý‚KT¾¸ds5Ë¥B%.}Ò=á2—ÕW.{›Ip¹§—uŽÿØ?à„öÀIáß'ýµUN‰®msj:Üå4áºÏé›;gÔä—os]nõî·‰[žj\¡°½Çmœ¬?q›ŸBŠ+å“®|¾æªÑ~„«íÿlr•ïKnkï;Ì53E®Õ[¹æv7R n?ªnq·ÅîhkGæÚüY›;ù{ qg_é*w~½Ž¶/wyÖÖ¸îÁû%ws¬¤¹Û“Ã#îþì;Â=ÞZÜóWï—{‹ò î#ßùá¾ö²uîçîô‡ûM‹·Õû …¿K;¡h) ÅŸÏÚ¡Tyƒe+7!~§·’„R^óÛ!}7­æ?/C…Xo-´Ùïü„ÊχG¡Z·)‡¶®¶ÞC­ËÆ^hï~G¾|†Ú¿'Ç¡]ßC¡ë#î:tû W·ÄÐKø_…¾÷õ-ók«áÐQ?ŽÊÏáÄËíi8s¤6‚ÔÑÃJTJ…õÞ ¼v³úÞ<|=Wv·÷Â#¾n¾­‡÷/äðñëz&Ü 'bá+ã;îí÷úᇧ£ð«ØDu4üyX~¢Å§Hhoã1K—Ÿ"©ný9¯6_# -×þˆ—×?‘Bó›‹”+B,ÒŠ™ÈNêT‰¦ë‘Ól¾¹ÌìGzùðEäq§ùy»üE¾ëÙnõõÄ•èÙnk%õmz·÷¹¢þS+k»ÑÂJ‰KF~å‡Nd ¤È@I½%ãT )õryEiçöÊ]æ‰W~ÒIMM&Kª.Ü4ÔZ)w¤]«·ïñwõÇèDµä¥¬jFâƒnZ½Û<ÓN -â›vßÿJjƒ{6;{§úZ£ñ­7Ë%Y?/¬îê/ÍÍW#¼·)âCsß(EO¾ƒêóšq󓯯¥óÉ—ÎA>_ qÀ¾6êùÎÃówþåx×V#Í÷¯U¹\¯­V*±Áêq媵zº[ýíñ§k|<¬¬m–__ÖöŸï¶Özúebíçñüf=³Ñ)¯’÷‰õÝÞóÝúõI¤¹þ½­H…t½Ù/¬Wn¯ -»ÍäVáú|I ðýòÝÈdÊo…ÝþÕÆÞwk£WKW6úß=c3·WÏm5)¶y_á6ï?Þ¾‹\÷ê­(õ.^ŠÕûÎSñôéô±øë=ƒ!ÿöZ2þ>JÍo¾_ê–êáÒwÿmßrv7)•‹b«P>úýÝ.?ÞÖO*‘³¿ûж·;¨lïe³•«Óçbåûf稚‹^ª%=™¨¶/¹bõ%ùÑ©ÅN_µÕܳQÛ}xk×n÷~u.ŸX¯+½[ßJì"˜úÕÊÝNý'•è7x£YnTöûo³çj¡ñ‘|ÚJ7 [ÅDâu«}qWÞz5êýíÄŸ¸»]x§¶ŽŸ¯¶ŸO -ÍøÞÅ ¹~Þ=i>ô `ž/¿­¸Þï´Ö¯EÌùmÅŠÉÖóÉÅëNBàNv -/¥òÎqûEÜy-­r»)íéy·¨V/vO•ðîîÇÚee/»S[Ý«tyqï"ô—Þû©¾ÅöÅç^xkãòoÿú·û{À]=þ赯ÐÁž_0)5qÏíó‡Ò«vx¢ç6?vÛÛG¹‡hû¨ž;¼=êî%¾¹ÐeêX?ÞX;ÞÏÇ÷ŽŸ~oÛÉ»“p»tÑÌ·Ï6ÚýãÕ·¥».œì<vN£Õ×ÓDés°N‹OíÓs}%tÚ,TÏÔÆÕëÙ^*¾zöô¶s×IÝD´Nåª}Û¹ºõs®÷òxžnmœ§ó_çÕDëBx$/šÒS÷â¾{[¸L¬ßq—å•—óËËÛïÂw•EKþju7{Õ>8j]}¿k]¹§†»{Üùc÷EK¶¯³ívõz+.h×wgÏ©›„¼õwSþÞnº¿w½ÈÖíeocóä´w¾¹ÔûÛÚ?¸]=Üß¿=¹?Ù¿í'oïôÝßsw4.[½{5ýôzpÇ÷ï?N.ò6¯<쯟—ÞË«‡RãçîqïôìïñíqSz’Diëiï(zýô6øâž¥ƒÏÕçýÜÇÉóû[¿ÿ"_&V_Úù‹—ÏÝ*¦¯êþÝÖëÑeêãõûiký͈¾ß¿TŠÚÛàõ»÷¾V=Ðß;ÂÃGèì£ð±¹vôñÑkÛŸ±¸û¬Æ„ËÏ»¿þ•Ö²¿_Û éôëù¶°ö-ò{áïý£ë›ï¯· `~ô›‚òsºÕ õ9)ûÐßÌ^ô¯“Z}Xy4œ¾ƒÑÛhi¡Ý ²lwŒ=Ë(%4_D߉ð˸w _„ÎrÉÍwoøÒ˜U†±ñÐâ–q]ý¼·`ãôH« \—ž^>ñÅAÖKÿ#å‹ö&¶Yž*(7Zjãä6ÇçR;™ÔÆó¯„ŸDyí / 8~"?¬JÇ¿¥Ê£Qk„×{›, Së‡ê3èùO.~ŸÃd8TÉÈüT3þôò¿ü—Þ9«p~Gäsë¯påÄ<;0»Ê›¼±wSJº¤ƒ%ûqN2uˆ_kô+߸~À*œ~¿Ðû¬¿Ÿ¼Þ–nvŠÅôW-U=-‡Îrây³ØP7ʵã ùl3÷»6€îÛ|ãf¿<„ºG§OÖÊ'":ÊôËu`£{Ýãvm­*£Ši!£5è÷ÅÁ—ù<¸å@ß(r©óxŠËäbgÜʃ¦Þ]¶Ìe¶30úÞ¶Áò6àÃú÷ -ŠÔÕœþÍöî„NCtý©[Ií´N+Í-îÈz ò–Í ”†ò~[ý©œ×”F±¡äW*©ç‹ÒÍ®x¤577@ö¤î2ŒÅ}C[ý½`4"¯d(°];(*SåLòÐÝR½¶›n(N?2þ"aupÜ¿®¿½ ^÷¯ž?= nöT­T3FP7‡^P)¾zɆºÆ] Âχ,¨f ”…ŸÈG‹µÜÔê{¾àUyNnœoÊ_3ø]•Pš› ž´ÈᇸǂÊ×®®jPÕðÊÛçN™•ph¹Óãëé›&’Cu¾{ˆkÔþo8½aBídâ. oìÊëÃh3U/ßjŽåž¯ñ--# ÔäÔÆÃ—zØËˆUûv¯µuqÞcAE —«½Ý׺t¹ãP+üNòÊ`CÝúÉo¾öw™PVcJ„´{¹j¸ùp$ñP/2üÑu"ĆÚl<ì^œ'â.¨$£ŸÄ>Ÿ<¬†žnn½ Öù“æ÷jKZi×6×H…k¹'ßÛ!O¨'×õЯÔ=þt£YqAE0ðN¡zÝ=¸ºbB½Ú{Ûò„úÚQîkP/uþjðŽ%ìåî¾~ìºÄ„z½•ùô„Ú_9Jq.¨ŒyjÛ|õåc› UßÍ„¸Í«L æ܇çïZ»6¡ÞJ ×áIœ·zIªÖßÅX!Þp.·Åß$óE„švA…q_,°ÞwC|E×M¨¿)•‚1—Ë]ö.j©#l9ùbº?h8„šgO[k­åß1¦ØaœÞš_LË»TòH‘|¹é„é÷{·Ÿ•w¯µ_|ø"d P·9ÅÚH¼+¯ySòlä².$‡¾nŽ©”}è]«Î95ÚÑîWÞóWÓ9>N¼x]oåÏóW`Ä•¨Ç¯° ÑTyÅbüÃëƒæz@Õ…kkæƒ7ÝýëçsèÌóWm+éúÕAº˜<¼ñì®?÷º1Ï_‹bôüÎóWô5¤>7DÏZ·{«ž¿î…în¿êhc­="í1öc¸º·S/–æú(„òî_o·>==©¤Þú®_H;]¹ÍqžÝO/+ùuÏ_oVºZÄóW´Î÷¿ž¼ˆ¥Ï_?Þj…®×¯°€ƒUe„´ñ¶E¹pæÙýîóö¨åõk”‹n]&' -Z-îÜ>xvß7B‚ׯENŒ$ò¿’ãÉWדÖÂóñUשãƒÁ†ùk9»æúõø¦ž,Ú•Ó‡¦Œ†"heþ>vQÙ77+ïÔ¦£{íZ¡\¨ô5ص±¦úA”˜¢.ýüzŒ²ØVãÒ•Ã2þ9ÙwTÞìP†aì–,F؉±õýŒÉàÁ²±ßBXŠÛ“œ´ƒlÇ"·£ÆÀÎ?û>ŠRý¸6´)ù—õÛðªPµÿw“Í8د*±ƒ< ªa´ƒ.zš°Ü9÷„ -båUð„Jì O¨¬1xÇ^®Ü¹·C•"6¨únéÈõ>  Û`U"í@2ÚÃåÖßPO¨€áuÑ*’š#À®å¢mÐõ€Ú¹ò^k¨6zš0± <¡¢mð̆ºÆe=¡¢ªµbžË%І'TT4Žûú`XðÉ's'0ÂU>¿ÿðñh¢û÷ñ9õ95üÓ­ží¹ž³ô4ǣʳI}&ë(ÁÂ/‹)›‹lt‚o∠C›3§Pûë›|&z´iqèQOÌíMþ¾ã÷Ǧ3Áre¾kßÃ!ã)§·©`Ô/*ÀÄzU-x”Él°FzÅü“Þù2!Ùå,ƒéÀâÖ¿é#.O0ÀRîù¡²2üsè2 -¾>x¾‚`êvfgyÛ`Òí}øEkâ/i!ˆªô&s¶áp?Ú7ýiC4Ú±Ïo+++äRæ©]ÉgÍéÍØòœµoþb@Á;i1¶ÁÛ\o.÷)A¼xõWjº?†uücÎÚÞÄgã^dŒó±Bògê…È#6GsÃÃ&=Wˆzm{òšHó±_,B„/ûPöÕÐÑ„déµ6m4?4¿š¡ÞÒlÓWýògú B±æû òœÏs‚F\ð%–Îí€ørr¡„‹ aÈÖ¨w«Îý•‚îHõr«oÇ¡5ã%R‹gCc”2"6úºÕ!†=¦“®¦é}Ô×Ê<ž çâãÓŽ'qà1×qÏáŽÌ²8iãäxg®ëÍè(ÁœL%åg]ûÙ¨Ic4_0'_$j?¾e3- ͽ3Û$†¬ÐÅlnQ˜àY…Íg:éo¡‰5|àÆ1T¬UxOÜäž¿Rë šx€ØhXC‘ÕøÍy“ãj@¯æyúO›åöBgw3,¤ÛBÿ\¤œ•1ò6¯6'ïªù¶tä¾'X!òCKOmï`8-ÛÜ`5¿uæÄ -õÛ×2É›º~Û¹1íl¶¤Æ·å¾>Yè‘Õx0¢1Ò~ÓžJÂdUÒŠ€çAǹø(©˜›Ì@dqÒp)·.Iå[©º¯;¹ö¸˜òEÛs(‹'LëwcÛCzîšÓ™4'K ÓòÖõ†Ûçkˆk©hL²{ø¹âw­s3_õý¹)ÂÒ8ÚÑç¢è Œk¨¡ƒ8ÈhÉFÎŒH›¢ð͈´ëþÂæän³#íÛ‘K¡õǬÛß“Ybm͹1‹µxèÅÓJgÏœ훜xöñüÝ-îx–Î~"~Íi‹ÒÌà.AB³5‚ƦÓ!ÞÁ9T %µ·!AÅ*l¥±1=ø™ êi¾­@ï™LḓqjfB6¸L÷”‡}j Ïû‚E/ÔZcÙ4¼9rކ¯·Y›>m!áW';SÜLˆ} "úqØØÈð”8SFè´,uÄŸÕì=§ðT¿€oVpõ»âãàY”v8‘lÍ -˜+ú`‘±€ˆÃú¸ö0&o\Äë¥é¿nahðÔï -©»Ûs+¿BõjP÷ïùð0ÝÑgs5x–†/öIórøÂ—×a÷¤óÜ0»1ÞrÎþí>ìL3nÜÅp¦ñ†æu:l»¹”œ3òms|l;•{‡)Ö¦p ¡›{qD³ÉìLµš'9B6„í?§¤v¯kä˜ä bøçY’IÐÛc‚6€“ècãÄb\bm*n¦y]LÁ2ûǵNDêA6¦àpI8ÕìÍ?¢f;ÝÝ@ ~üÓÕì¦KÍfèˬLžŽK.R͆-¥¶›N>äb“ Í)-.1yqˆ´©‡¸9&g%wJÐßM·, ´$Î)½½ƒYÁF{E È -ìº@sLø±q3]Íì8%Ÿ'AûSs1Þ#I!¶uA››"ÆBŸ° ÓÉ~ù% »KÕ¹ð³#w(3°ø;;"`䥅‰yÁY84¿!½:÷7o²ôAød§¥)¹’³ äuY£Œ(Æ@óÆ9È(„@ÌœÛÙd!s4G”Ñ[åð瀣MÇšh™dÄNO _ÀŸŸ¬L2]ŠŸ1ÛG³3F -=±ùú$Øô±7¶ ùDî6xKŒq·Á[ÊfFÍ¥^”7›?“±iš¸Õ¼³öÜÜÍæ¼‡ÑÆÝÚ.îLB‡öLÜÍ“ Àæ-€»Á(„»ù ´éMçnTœ:Т¸d  ¥t)> å˜'ȹi,;ÛFiö$[w1óȬ\G°ˆÆ¼êØÆåÊèº/~4ÔØØQÜ2œø½ÉlÒod‡:á|å øÐùË£„ -ÖP&³ñÁqN汸G{ƒ›çÊ™ -Âp”q­ßFi3 4=«Â5 -+† äayÏ8+§É3XžÎd€;ö­½ü ¨ý»vÎ3÷@.í?˜X#Í¢ý{‰52ÐÜÚ?Žâ)io&ùxù3é<²…£ËÄuËÇëñ¨3¶Íœhè¥@7ò™å5Jíð\ÿ5&*OØ;6=ôûY:ó<ä#KÚÿ9?›] žà~8óuÎý0q‚4_‡}º -»™õT‡Yiplß]Pz’óG>ÄdZ>É‚}ÈÜbªœ%E²nIUÎzOz&3N,ÝÿMÈRÝô‘眘w`“™çI2·ƒ¦öâh>Ã?Sb?8”Ym¶âL¤iþüÐ^ç†^û±èPÞ–tg,Ë“,|ÍÉFμΙÒbG® ì|2 sÌ·%ˆƒ'|½Ì5¾¿²ÊeŠR‹øª3•óM®å# þ‹(ç›\Ëçb6ÁËù&×ò™Êíüå|“kù–œ¥‹ÁËù&×ò-¹J—óM®å0‹)ç›\Ë·ä*] \Î7¹–ÏÍBÊù&×òQ.°€r¾ñçìµ|¦á19ßäìñ¸gÀr>W´K„³}6Ìd©M6Ž -Ÿw%1ZìbÍÏ´Øsšœœã(wpJÝVÍß:“Cʬ¸u㩨ò2€/*Dp-D•Ë!Å@ÕOKÃ÷Ù°KÜ’ºe䱭߯}T¤-Ñ7Yœ,†ª<³¼ìöMÒ1¬ff_áÈýà*»s:º&"~âœrîÀJ`ÄOstM97“ë÷|ïYD;LTö Ûª;“;€Ÿ°“þµ¥ZùJ1ñÌ/!îf_bîæjÀüèdÂ39åÙhÏ/a'\N+»›9¿„eFaÙݼž-,”ËM²fÀw~‰ÛJ´‡¡R\(6Ýæùv¥%ÜãAŸ[ñg¹ûa½Ú’­²x6ãxlKo%ï<Ía”ߺ×^h‡Y9ÙÑæé |MÈ4ðáhs8 ¼éß. -to/¬t1AÏZf=|_ŸœÐÌt¦x×þMœ³ÔÞN®¿ ;|\Þ5r!7ð_ê8>§ç°×œ6Gi3edÚ6NɼŸ%-á¾îôz2Tjß{ØwÕä0µÎF›f‚˜CÙ„ô„Ѧ•èLØ(¼Š£MIæŸa™®Š9‘6µpu&¤M{[Ãĉ SF†å;¥³NÆ™GÕ˜\¾ãWÍEy3ôO?ö•iÓêöè 3¦Œñš2‰±+àŸÏCnæª7f>5\ö +—chzŽ1Q°°1›§Æ´W¹Œ¶{Ö’={ÅÊô¾æýjž\‹í¦qi(õ4òX¶§7F¦•ëzÆt\Ì–4õÄ;¼Jòƒ‘z¹4ªôªüÎb!{×±PïEÐSJ ¦ú‚\eYQ\ñjðë)ãgÒÓ¶ÈÁ÷ÖÓf:û¯[¬³ïÖÓü¡j_K wäCc[n1tà²IžÍ ÓrÎIô;'Ó 9©n&ïÍäb?yA¨š^‹;iZNïMvÜ{ó±=Ù{à4ïÍö<Þ›³š‘Åxo¤Hí|^Þ›í…$'ÁñÔ/ZÞv„Ý=œOï 9ž“êáæöÞ`œ<Õmç7Óªƒ–þç³@ go–D•¥Ñ=ViìÆñ/ïT¤›ÓJc§*ÒKæ 3¤v*ÏãÉd;{iøò¬©UóD{]NHmQ©ÐïÑa ®ª#Îå¨ê兼ꘌ’Y€‰KšrŒ†Ìfê@~’þ§½§<ù}Ç~ÿáPNûŠõÅÞ‰“H»¼°nÜì¶E<ü‡°Ðc8½xZ°'{ uZZX‘l/tëíXXò]${º "ÙËŸEÉâ( )’źµ…Éâ@óÉâ(cE²^/ºž^FvÊz¬+‰$øOMažÇ ã<žùpƒùKí»(Ï-Ö®ûÿ¤(¹7‹/ÊéÓ ü¹ŠòÆ‘öOŠò|Øž‹(ʲΉӚ»(Ï‘dAêòf/Êó¡1Ò0V_y+³½ý¾<–sá -¬Ì^âçm7¹">£½ñúàh¾Þ361ïÐòªãhó»4M¤uBþ¢QÓ#¤–ÎÏâÂVÜÓC\Ü&Å€f“jI_z¾ÃÇwºëèã=ziÌsÈ- …½çúûIﺾÿ«ÖŒÈf·v\دnæ~cx¿¼Ö©œ×:Ç•ój³ØP·Ë¥ì]¹\Ê5ñÚ…£oK8­¼ynM•³(lBÜwá}™~ß·Ó«»Ø/µz··c÷[Û *ÏÉ•5îË«îlÒz÷9WÂ¥«ìî¸ä]ì·²÷²Óó‚z3¹Ø¯ž1lPݼåSƒ!TwÙ|öÜÞØèªC aEþ¤²;!ë 5µ¶úáU짆Ã?êߥw±_çbRÜǤb¿¯ãcO¨&Úzx¾÷*ö{˜TØxpæ µº{QA]»§0ò)­^{A=#(8·&|òÉ$÷<‹Ø®úR¾lùxn‰Ü\žØ§š˜–ÊÐR­\û{w ØIoƒÛ´§öú¼ç õ9–œ¿ýò‘²äëN/_ï«·9X&ÞéõãcZ~æÄxsýÄŒ®`×ë±c»%ížVÀëõÆ$ä~Œsûl£jr&¦ÿ<›ŠÛVªçä»ðæ¹YÏ5Ôˆ@‡šM xjÅÇE+d…¶½™4­)·+L“© TfMÚœ0'–Ã9๩?L¹ŒÉ•Wk›ö±¦hWnTØÇÒćªúâ -ûXþ1 .ìs,άê³ÅÖUØÇÊ*Æ=Ù¼*Ha«ª‘¶à¾ÀîîÙ -ûX¶œ‹ QØg‰:{U߈ ,¬°çq3›ö±¬k"Ö[ØçÅ]la«ªZk -ìc©<Ôg³ÐÂ>Ö{ú‚ö¹Ó³±ªoiʽQ -û\s²\C‹.ìcíá’ûÅÍóööp,Eq‘…}¬¡–¬zÏÅöù/¢°UÕ·¤MUgBšßÂ>H›»°UÕgk *ìcUõù:ç/ìc à¬XYHa«ªU±2gaK¯ö6qöÅQGH[Xak—<²»ç)ìcUõM·==1â»þÇ3?WaŸkIco🩰Ï9§i6â»HÖi#2b·¯[3½sj‚µ5íOßa?îì‡)[àë?Y΢rø¼ÅÏ×]Soñó‹ªß”íú$Ó"†ªÊïTmÃý  ×ÛÝÙ;ûœÈñôqŸßzS»zí þ¾QåãžjלØÌfkbzÆŒsB©Ofãi2mÛ—É$EŒowbÓ]`‚ÛlæËÿØHsßÿ<üüÏŽ´ÀYÓ/ÿóååØžûò?‚´©÷ÿù¬éó~u¯ÿ|è¹.ÿ³etM¸ÿÏ©”Çå.gŠ¿ì–Ù/ÿCé9ýþ?û|§^þçûÝvßÍù«<7ÚŠKÞNslú-nZúßtü»9wúÿ¾‰¼½ž˜¿¦obz£ÏìnRÓ7G]ÓÒ¨¬tÅwõ¤bGvZˆ]zú«w´’gJRc$\"‚|áø,ijÜ„cΔ³.0>Ùï/`Tßÿ³oªM¹d–T+ÍWT+ÍOùäœvÂSˆè -NGRŸ5ÐÜ…¾d» d³NŸyghÍv‡ä‚îá¤wH.´Ú÷h<Ú–÷zCͳÚeÉYïé§àæë‡±Ù}KîËOì=ö‰M»±é¥VPy“HŽ[þX8çË †%X‹)Œq¿ÖyœÙNKçqŽÖš\1ËåŽðÛ¾€ó´› ÊýRàBÌ™J(¼ÓGq ¹ãÄäj¼¼Æ€4UÃ7 zê@Îó8ý2"oÔiU³”P¤F‡ÑædAç‘qïßR zÏ™ïý£=áê¿Å”4‘´„IWÿùR§üð´ËŸ¹•¥Áh‹ªö½üqÙÞ®¸§ßj_!4Ûýòlï Ö;î, hFÉ. £‹ äÇÈB0Sšß¾¢¨w‰®g-Õ´Ò¼Epb&äìÕ÷ùxzì<æãÌŠiWî ¯óx6{!Õ˜ÛÎY™ÖõT3g+¤ÂÕÀJ½}®3¥îàPLÏi~ßᎣù9ž|N¤}ú(oöa{R­s†Z*&vÝŸ\He7<üUŠ*¤²ó4—ÒÈxõ#)# ¢1Z`œew Jå#Ê2ÉÂñ ¬ÌXwÛ™ñY¢·üú­»í|«Ó«Ž£-è2ÌÛÉñòu`nrhäå˜Xw;–Ú1ã›Zœ†Nk—ašî"܉–F²2S,kïëÇ•7¡\ÊmŸVÂÛG•ÔÑñú×MJ…Oõ}ZgxvY»c…P… -"ôÛÎ#±æ( ÜÝ8´CuTæ Â'}»gËy5]¾|ÑaUæ-ÑÚ(ï’ÀþßM^ð„Ê×ø¤W¢Žh‡‰+‡‰ë¬»œTˆø-yC­‡ÏÛ,¨†^M·u›}òºš.1¡Fn_ñ®ÌÄ´hßžÝ-¹Š.ñ‹w¹ÄÄkøzÌ*DDErsm´µî’Ày·rãU™w=j=¢:Ïûþ¿ƒð¹T½á(õtC=dA¥é<„Œ›'žHæ«Õv͹µü5=üd–„þ%×s¬ç–hé¢ãQ©Ìû’¿Iæ‹>žKå¿~«&‡¶J×;²;bïaÓòûj(ù&]âàTd¯JÂNªÌ”¹4ùZ·õÉõUcίú#Ì ‰[Þs*{'Î- ßÚ뫾j0}\³óϸåBÕHÔûH¸œ‚ª£iy­þËãü&nyÒÁÒ¨/<ôSï¹€ -±+vÆ:è…‡“o;ôÒÓf¾ðpöò¸ãÛo;œ#ðáá¼”æóÂC÷Î]‘?ù¶Ã ø(˜ tZÒs\xèÅÅÉ=ƒ^³^x89n‰}WÄìN®Ž±BžÕ1¼Ï 'g)˜ÌG›ïÂC;6Ço;ôÜ[¨Ç×…‡v0ã·NòÙLLñv_x¼lÏE\x諬tþ 'ßvHÀ,âÂÃÂÄÛiÌ.±ÒO‰o<íÃ?%•»ìÝKðéfsEÑWѽŸCåç­s¡)YùNß©e›Ù>§´êòMéð­½q´£ž>?ì*?'ñ‡ÇÈi1!W^CLJͷüû—=lÄ?®µŸ•þ槺ËînÄ"R¼®®<^lm%þžÃò×åCžì/)5-´N¸lª»É‰O?'©5)¶É×JÍ_{¼Ûæëjô°ß¿1âý~º5wÕ[3Pn/ö‡u‰Ç©õ\æ4+µŒU€÷šë.¿ð>#Ìf'Žz×ÕóÖµQ¼;øÆ£b^I³íÊxÃâJ²¸ÙÚfá‹`üí÷¥7q­Ïñ^ìa?|r~\ˆ|ösµ¨(?ax5ü~ÏÝcyë¶U®Êý¥¿å]LˆÛù$’\±v|¼ÂGî¡mÿ˩ͻŽ,n¿l+Þ3ýÐTzÚ.ÇBFA])ÿUÎkgä~ÑòUýðLÝ-߇6s¿kÛ›¹ÁýjÍ¿íWO7¥.`î³P?9»,6Tî–2›“k\zE`\H½iX[Ùén®¶¸>YWñã«5(6OO¯SÕ“³~‚ï¿g±”8M}q¥Ó'¦ŸûcrÃõïÐ’Î)ÙåÐ9EˆŸ3 E€Š–$åÈÀ{¶¾áëzš|±vч¯å¬Õ­–«UÅÆmð©Jzå¯olm éØóGõîíÇ ` -Zb8Õ+!YVË/½œ?¬§l?ô"åuë‡rfôƒX:ooX?l 6mÑÄÍD¶ž-Üì&€|½ õV¨7lKÙ&Xïfï†?dì?|çylË™j“²Ëc™Ó‡ÐP["Ý›]‘~Û]~¢OÝ~ ¨¾d†Äc…8&sdé#wjYįŠî핯j•÷Ð]ñðø2V½Ílž¢ô^#ér&øýVé¡t*#íÁt©Fm¡.‹›‰æ¯ö¾âÕÓÒÎv)ñÞÇ×(¨R•Ï& -`F|45~OsŒ¬XœN^¿›°Žøþ—¹³·Ý×ÒYwÀçÞBÙÜKh?*EŒ_žg#ž¬“¤Ÿ/-|•¤þZ¨^nâ×|JYR@¾˜îþ%ô8AîÒÈ…sz²Äaü]œ·ªÁ3HhÆ1ÓöGHóŸ7Öî7“”¤Ë+·Ã¶´ÙÖ´›@ Ú ¾3¥|óV¼wpÙÏ+·MÜŒ¦`gŽ¥Ô¬žö „Î5¸ôË¢©|ÕËiÚFEG}‹>‚çðõZz}Ö„F¦&àöÁ‡Èç’¾CS•Ķõº©ÜÚ^ohËG‰î6ê¹E[êO²*E¹¿½Ÿß4ãÚfѾxÎz· (²ôÒô÷ö®ÝÒ!=ã’þnÖQ[×§ož&{°_©½"ç9zŇ#3…¾{ìƒ¤í½™zµø'ŒTjrU;Ú&!œNÇùÒ“ÄigÜW®JµØ~©cò‰ Úïmäð–\w_ZnÞIñÐ%x0‘ > ‘pnG‚ãæx†\_Hñ°)¥×ÈßXxs#<àtÞÜå8‘@tüÛ§…‡äŠ™‘¦O¡šÚ<ÙHXÿ%HXÂ÷وܜ<¸ˆú!†üþ¯IߥDsˆ„ÆU6ôÚ¶Í$,‘͸^ù2L7 ˆÌ eŽÁ€ÆG-Ф$à‹(Ç^39Ã$ÌØäÕxó,„¸íGËBšÿ…´ó9¿;âu<ÓÆorÒF9šb `ü"ånfÚBzk»£¤‹wAwø¡…ôw™g.Ä'6ÑJȃP½QJ _ ”¼èK?N¤´O˜Ö^…û]CHî½ëؼ”öðúŸÒZrÖ5“Ò&ŽÑÝä禴Øs|>Jã?^”æ{ŒV*=•JìŒ01¢´®æFèLØÒOë9ÏHJüô1À~Ÿ~n' €`êíølŒplÝ,›ÃI ¼™¼# zN=û“'ñÏjŽ…4"›9´IIÀc! ¹8#öÔe@iΘ -â”Iô 9Á.¤òo¶½fã¶»2ŸH¸}J¥F“° iæ<Ø“ø¦–kÆ=»ˆ–™‹,î2ëY6-¤ùMæjÙû°ûdw[ö¯½Mû׃vÑt+(Bœèš£w'’ÉêîN®l¤®Ï*½z«|µ :žé¹…N›–KñŒ§œî^»SØ{.Ýì*ÇFU¿KWûÝ|åÝÁÖX7Û%Ü8ŸÔÈópÍEÑü[®†OÓÕ°÷¤®†Øúñµ&è@¦½žê`äý ˆÞÑt,€9M]CûåÚH¦£št’r~,£¸«X&qøÃçz?ºeb½QkMä…ÛV{ýdš¿Ä¶úFÏÕ ÎÂÑÓ i÷^ÉŒ!j7'r%¥'jµêΉÃÑD»ÕߥH¾Ü´ÂÆ-Åfq÷Buò^ê†ÁÝ·ð%¹ÃDCßÚ¨Gö™ì‡:Ä?Dðj‘Àž*¨bš:Ò1Qg CTTþa?Ÿõ±ÇKÑ—ãýÜócHCoâ•9‰³·Ìø':nÆ©þÍW¼³…üàt©ŠÉfÕýèëkðé°"EŒ·<©ç^ö/¶ÑcÉ“ð9Åî§VsÏ_BæÑãR1©6¥èÍ©þ–Á‰™sKÝ)âʲ—InàšG^õ3D|~ˆMÒ­fž4š¼Ñ_™îðÞà3Jf·G)j^pNጔ÷" &07! Ô÷“º9|Õ³ø'gí/XŒv-¤…ò¿Ý©mêõ¼x½kò·mywm‹øÓ¾²º9×¥hõxK¼Ùm6hZ&Ïží×ééAî¥s_å›eÍÒ?<|îI¾×ªpw˜lHQ.Ù ñoP`mEN8‘¬’K2F+äs9N¯#4úm;ÁŒ¬XáÐÿ8BD¨z˜pùÏ"D$<`þq„ˆ„‡Ì?ŽáWj°ÿÓÙ/Bi Š¥>=Ã9d5δ~ÿa¢ 㺥 -Ô1ÿcEÈl0\”ú·±"ÓyùDZ"CÂEÿ8Vd;7 ¡CNq«¾5¦4ñÜâàô¿òtb§ÕAú%p[qrªÐ+‡™Î¤u\ïUùNÁ–K¼À±ïã.ýüŠQ/.u—]áÒ×÷\Z¬qñÆ _;ÔkLUAfÊ ÑÑ’áÊC¿ôWMí´N]gX#ÆÍq}ÀTOK‡›¹ÁÓZ®Qž1OžÉ[²9Æc;ÿkòz8^#™Çê×°ÎL‡ÎáÒ F?H‘Õ§¢õƒë”aè بͺ^N;Ž:EO'!\¦ˆñ§íõœ6òutÊFœiÞ¯þƒð¡DÈ sîtjJ·tÐÇö`÷÷rÈÓ¨5Gàk›Œ›¤”Û¿†JlAx-L4y3:×iT« ¡ùsDZ%×[‹æŸ>cíÚZU~µeI™ª>áCÆhqÇaâŸSü,†dg& øÒ²ÎɉmýÀÐëµÍØÃqeë~3OUçL°xü1•¿†ŠàÄûuØR(zòpõ=;‘ÝîeˆÔ1àÛvΤþÛ34’·ð 43*¬n»bÁØa¿n{$sÌür/“1Ìý};$CfHò3|=³¤äÛo}êŽhîVŒm´ -ætÞî%Û]NºÆÕPmaçgÅ\ÍÛ‡JX—TÒ%}õ¡›x,?«µ½Ò»ÖmÌ‘r´É’Fh°äñ}–µŸ›;“d~»¼P6ãð©'XŸîGšÙ)Í~_å±é(¿'µd¢°ªdB;µ›ÊKÑëÆo×S¨l]©.Þ;oÏrä½d…) ’W5$g\ú¤[yzÆ%vÏã&ýËï#ƒmcÝ8æ/ï.óyp‰ŒÕ@1Ž%317m½CÙžbœ¼a®òOó©ÞOÆ2¾äøÈøê!1’Ö¬3e²NTcl¬ÓL¿ˆ‰±MîŠl½™Þ&7€e»¶•{9ûÍR-ð% ö3&SO«n³½I`ÝEøCÀhýŸ5yÚ•y\\–„À`©s5¸}£Ié®6Ô8Á4³4{€ú]²8c>²C2„©>¨Sýýøú0ùÄLe©?Ɉ´]ªÉ7QŠ` =žrRÿ®·E²Ä.¹–†µ‹£úàí~3:ÈøÈè°ù†þeFÇÈ1ðO3:ÌôîÒ?Îè@Ÿª-™á_etŒG$ÿIFÉK(u.Rÿ6£cɪ•ÿ·ÃD››ÑAtz -þeF‡#êõï2:hÔËšQÀŒ¯Ô”gtLM™5£ƒq<ÿEFǬ 3:\ ÿ*£0©ãgtx&A-6£Ã›ÒšÑÁ¢´Ñ1¤´›Ñᢴ•Ñ1KÔÃÔ”›ÑaKMù—$5å;?ߎLÏ蘞š²Œ[jÊ¿Ìè° é˜ÑAõ´i™%sgtX\àgtx¥¦,8£ƒÁ:ÿEFÇ’Yó;žÑ±ýáÌ7˜+"º4¬ÁŠ.0"Š«qE‡>×fÂþƒñ; $6íQJ Ã(eÓ¥tÛ9˜ïòÓð7W}ziw“ö¶v|XA²›¶ÿð$ÃŒh€ƒÍ…< X­”BÆ‚`W0óa}Çh 8qˆÜÓœÂÏ›–Kzç‹F*€–‘úrfltcËôC˜ã‘q%›#S h°(‘‘‘Fm¸›«ž•WŽ|g4mÅùÇMÚš!Yã-ýÏcȃÖú(°¡üîGêWçúSñè/òR=¿ßÇ(ô±0"cñ꯻iº::]iè딾Îʆ6$™ÓŒ=(#K:ÍY࿽B#öT°W§$q‹SiøI¦TW?Tøzž±‚kâõÙýóQ²?ü$Ø£Ÿb÷eý”ì?TÞ"–óU±Vc¦áÞÌ‘uäL9²ÅÕ¤hbñz:§qJiWù‚ŸDû£;Orj–Œ%à% -ÿp›W‘J³C÷ǹé¼×üzº O›Á›Е¸ô¿Ù¼‰]‰¶ ´/ob@W"q?øô&~a(t½£[‚p]ý¼·;¡yšŽ~ÿ¾É#Êuéáéå³Õû¿ n„eú/ÿâ_ÍXD}YTø¢`këvéqòô²Xn} ׹bÿ·òr÷ûòõÙëÿßå>stream -! ‚†?Ið?YƒâòY»ÑÅÀÈÿ¿mçWhû?Ë¿¼³|qÅ/ß/Á‡Kÿu9+‹¼±œe `ñÂ2˜H‚ad5EÓ—3‚bdU[na£š•5UÅFg£- †U²7éZV×d«§¾\†žšœÕTIƒFMÌŠš&áx"/d ÑÀV'Ë’L[Õ¬¤ê¡UÏÊ< . -Å PàAÅÐUh’³°bxJä¥,/ëúòôŒ¬¡È¶êt[“ f GOæ¢Âz°'od%™×±UË*š$.‹<ŸÕ$„:l %+K¼æì‹H04Gô¬.¨2<}u@•àGØ?|Jeç‹È3*ÌF1 UÐŬ¤Ù!¦aM¢0ÚAÀVX;E—(kYA¤åQ‹"ÂÄD€2ê ¢ …bí ,1+iænZ[' 2‡ÑÓ&›`‡]ˈf)+ ¬@f5Q ªJV€ýÐlœ ½[tëEB,ª°É’¬’MôÉ"VвO%@3ôÊH¼˜U‘ŽªÃÆð:ŽªÈ@:†D'Û+Š8ª¬ÀF(tTYêP†”U$ƒ MT…,Ùn˜•¤KÁdi•xÀ%/geˆ¸E¢å Jö¢{©Ê*]¤ñtÔѹ±MZq5¢`Û[“µmŒ3X}Ä“ZA<Âx2c>«ò²BN$¬‚çEì£)YÆY„dè²Õ,A¼!è¶¾H 2`@Wp]°G¢L„6©d¢jV5àìÙú*` -V} vyæj›Ê¨i8g{_MȪpâí@FMd*ÈjÇ×{G°‡H†yS82g‚ÈL -J“a»€ùeéÛÖ$Yš­ï%Q“Àú‘@Ç&›$ :Q–í}áàuët1„`ˆƒnÀh*æќí}o˜02j"SÑeÆz)"’í¥ÿÁÆr<±|vêü¼rÂbåZ@ÒY¹f³sø™Åб9(K‡¾L¦S`²ulÎØ¡w`ÖŽƒ3wÄQpö½™ Ú™,~å:8“‡1lžÎ? £G´³X=.‹Åì)QŒ³{‡Åð¡™Åòq!,¦Ka±}†Éø¡ÁúÍ51sŽcìÚ™ÀqÖl"Ûƒ •k¢[ò 3~~}.K¢asžp¶tÀöàòzÏ!! ÷2I&¸”ðF[x i”ìƒ -\ip‚+ -.D¼ñ„²Ep7ó¦õ@Í"´(lÌÑbËÄL€ Rá‘“ãÖ!#ÇŸ3ÈbyØw†<ð4 <ÔáqÞJZñ B¼FÄ’€‡_£ÏÉYƒW¤eƼMåb|>,Á¹™Œ-g+ 2bs˜ÉØn¦rÁ !¡1iò‘©`xèâl6ËfÊlþH— -¬U§²S5™R{‹™rvL³7C³ô¶58®Y0´¶:®Ñ0ôæ‘Ày FTtÅÄÁ¾,DŽ¡ìÃëqöÐlMmü39ë\1àø)eiJL£ìÃÃ|c›dló)íãÒìò•\b!™vCà2Ä2S’±DC0²í,†°eˆd¦ô~dî^F>Sc+}lñÑi¾Øý]\]Ð/ª¸Pø$k"ÙE[+ð!Eâ ÷‘@å¨#š‘€%‘ã -è2àAì ø6ɦ²,×3ЉNe•j‚…ÕdGö¼ -/ÚÝC“ð”áp2bŽÀRl,/ò,ðEÂ5¡U† -Z‹´€)¸œ¨ „÷ ÀÓ}u¥„xW!ÿ$*e5M—¨p#,WÒÕ‰„Õá6áÛ N/1PÊp¼d‰JÇ€y`/&?„ÍÍ# ›°/N%øðA´ô ^6‡(ФÀÒTÂÕÂ)ê’)ïùž® ôËK¦ˆ–Ul‹"Ú—‹}e™:´Jt£%éòp8‡2œ8IÆ£D0pÞ¢4 X9¡REN$I ÓØàd C[‚­2Å/´ªšD5Ã|üèl«ç¨MPa(5IAé»E óÕÈÄ«šl-TÓk„‰yêÈmbì &‹ä§â*‘`k (ÉI_P'E¥Úš€ª=nŽª‘Ó£‰€M‚æ,'ƒÆÓy¾hÎ*2eÉDö«¸<åð(·añè ¨„sMPIh%ÖðÝ Á,*µ°‰Ò¤ %@úmzh+™6)º)€xˆR5P¹ Bš@}£3F¥ÎU8(öU£+ÓyPp“ðZJÙó;zL¥FCí°ò ä -ÑL44Ø@áÐ@{¹.Ûš°/´RåÌö a2I{‹AŒGWq¨ $–"¡alBw 6³ ôMö3W!'Êj…PùLšÐ´Õ€mJèÉ%ëÒÞ«ZÛ­ £ExÐ(ICÇ€Mºe¢î`Jf_ªZ¤UXÃ3âx²L¹–ÉÇMßh -úl‘§”7à3²¨;šxª]›üØlUjâp:1 TK¬iŽ ¦CŠ€…sFõkØU`/áª`Í/—©#³äB??´Û‘5ªTlñè|3DÂÌL?-¯Ò=@Ì“å¸0ÉöÂruÍtš¢†{ DIàhÞ!i˜R]¥"3’•å2)KÕßôx£Õ«é C#5‹2Qr­&“ÕÔÚ>‡™8,(Øš„n"Ù°Íû¢™CX Qæ4ôÚòªéÓ@,kÄ !+C¥B•v ìBžÔ°DQ¶"°" úp8B_Ä”Àª£}áä 1ȉJ#£;Žê£@ؼˆS,r=Žx¥°/¬診9A 5"H®‡'`@Dw†4D•W°r2Püˆ†0bÞT¬&²Eè "=(™"l‘U Ø•hØd² $~ÑŽ0Â29Ц®ñ(ÎÉ9ÙÇÐL½G$ÞüÎkT¿GMÉ„GiA=pø “›óè› ÚzãPOÃ&Ó>ÜW·½É ›}G­º¦.ÛQU’u–W skÀ~¥ä„“ÉÂ$‘2|œ²H8´‡¥K•Þ4à›6e¼*нžˆÖ892}P¦1iĸh˜-ÄýuG•fàY¸3Hä¨Ç"‹—‰u --Žû¬i†Éy`e¦ì-§£„^KžŠi…š¿’F#HLÖbuz:M‰©PçúTk)NšP:àq"%l ¨YĘ¡aÀ -õÜÈ5r5É0EŒ&£·K$]AÙP¨fGÇô¤¡#Pœ1‰ÊBým¸ -0q‰ì„¬[§ÕPIØý - -=8ÖÀMˆ\(õi¦ 1 ƒ. ì 2t`Ó³Ìó¨ (–ãŠÈ2Ô4E¦š-:{I_8é*QhU4Æ‘$Ù"'Ð"xdàö&Tç Éêk¶šÊ ‚•%¢k€ <\!«à5âa!›þ2\? ±å]ÐP°ÊŠÅ$tÍTqà ˆŠû¥R¢ÀMVˆ²ŽâŽ¢†žQ2]ÁÄ:ÀÝ@„. ŒÌÕ¢FC•hÕHx:O05´ÞƬ¼;‡¨Ã‘Ò ÝåÐyÃrÂØ k[«Í¤Ò-˳ÑÖ_CUIS]溆îPê´9l­6SWäýÓ«Õæ`¬¬å#géo”¸Ävà;Úm.|hîćÎs¸ñ¡÷Ž|èØ•};ó±o`w>vîÐG„véã^wêCïàn}¤½àŽ}¤P†k›;÷ér‚º÷¡÷~܈à.~è=‡“{wó#ýwô#ìÀ®~ìÜÙ(îîGb êðG* èòG°,§¿£Ýæà_¹f;þí6W+SRç­<&K¤°ƒŽv›`ƒvf ÀÑî˜;À˜;(ḭ́€£Ý1034`ovŒÂ`;+@àhw,Ÿ$p´Û4æj=РØÛíÁhg ìí¶ÁÊ53pàhvì&;xÀ˜6;ˆàhwà‰Hp´;&Â&0& *@óa€>G`zÏZ ½ƒ°wÐðô ` }…肃°wð0öh@* jÀÞƒ Ø9h¸ ÐY ?`ßàì8D<½ƒ‡!¼ƒ"ð`E`ïàÁdFÁÔó HPþ0$ ƒ%( –À혠¤44ARÐàôž#<½ƒ(°wðô¤ H ¦À ¨À®CHfƒ”! WÐÞØ9pÈ‚ê ƒT-¶@ ¸ ò6hèi;pð‚«á zšƒ0 ÷! ì<ˆA{ cಃ2p«‡2Lí(X0ƒa…²ƒÐÎ k8Úæ-3´aovŒÂoàž°Žv‡Îr8ÚÎ v Ã{%ć=Üoø %Û -(FTìÉ~ÀÓ„UM15(™Tîè45õsIGFU%Hb`8ÝQ¬X$œö5Ha©ŒNN$ÂŒŒœ§Õ2ÕhŽˆÊ¬"ÓœQ]6‹Gp,¢ó «ÉБ%ËèåTlRLeH¤¸Ä?1¤=--4cmM#ÁͳõÅj S•ѯ¨FƒÉÊpšhÙú¨IÅ¢!WG8±Ôs-ëææ b †&Þ•lú(Àº¦…lešÙKÃ5`8€~L ¦$¢gâ§ÛB«_ПL˜+´bø½ð£&I4ý¥£¾È·±ˆá ·EUÌz>’žkíhwTí2mR±I1Ã?þ8"œwÃ@eJE¢U$J$ žH -ižml•ySÇWjLaÚ-¯Ò€W¸• ØŠÊ0q#©œ»Ó`Í8§qÉqOc†Ay<†ŒX\לÏc ‡Åéqm,^„Áàö¸ƒ,~í,Žsfñ|$/×ÇøƒïC3“ó㢼ŸNrœûc°‡ÅÿGÎ&°=¸ ˜ú¶pÀöàâœÁ†L‹è\Hx#Š-;ð€—ï垊À„rê 2dî·o ù¢Å‰‰€Þ <ã„C"ìƒÚ}xtUADŽ2& -¼&§dðU³¬L2$" „¬„þu ;S_§LâJ¢¸<6oS¯ÛŸK5pî#c·Ùjƒ‚tÆÜÖ.2öš©W0¨‡Ac,j|dªÔÚ7“³²Ù0›i?ÒuŠ$äˆ"S”è{7¼v—)^Ç„0ÃcõqÉÏÔÊCå`k',5†¡ì°& -ä0¨*MŽj1Ñeâqc^{ Í4ºY‡wüˆ3Nóà1Ž'K?zdÙ`^暇 Æ”ØLñŽàÆ$؇Ý4²$И,d M–teÈ`¦ðb9†$dšU ÙÊÀ,YýÈ´Ð?¼¬y¶ÊÆÔïØÊàÂß·é¡$eR×° KûÃÑŠ°%úúÌ3å%\’†¯2Ñ1ÏÖ#`¢#4™±\¸¢.áV›Oè TxÉފɪˆ'Dà ñˆº@yÀ5€oªÄ£¯ZÑ4:`éX[è¨åUò°L{3ó pr*O_ª‚]UŒ·£7UÃX(¦EÏ1ÉCE—. ©“è2$Ø$ÐðÉä‘÷c‰HRâ³&)¢è{×1Hak‚ 3£ÞöF1 ǘ¼}lš€.eœ2€%‘ JˆÔ¯‹±eÊdHÔcì¸ -A'b¨ù&É/SªÆÄ2}+iIXˆ¼¦ÆÀÑ0v©€©J, :Ò º§ešfHrp0¼šÁP¨¦)¸“"æË! ë° @Ü\Ê6¡'Ã9ÀÍF’€œE#`ê}Çôhâ×'`Iè»bÔŠÇ£§’—CÁVI˜l ‘áЭ-‘´lÉL‡A ~ƒ]ѱïÿô™™-ú¶<ÆÊ‹)…àrI”H"T«™ù,$”$Ñì!‰ÇxAZ1§‚Uª#1, ×Ã&BÞ -;°?(ZTK¬|à "æ'˘@€p%3¥ƒIàÁ ªÐ0† ™Î'˜od5™«%}ñhÄ 0€„Yê’FÖ‹/»ÂTÌ@‘` -är ±h4öNˆT1˜É‹ÆPìaF‰@Ù›tʱHßa«„™*‡g  .j  Bhßá18‹a² ;®9¢n†D1šÂk&'@b’È!—ÍrÄb$FÇWS!š)Û×0 Á̳Âý J% KaîpJNi®ƒJ ¯Îb5ÒÍDÎa«DB¢H¥8aÏ^%°Œ -RT‘£ bªNDé$Ü+’ùŠü†¼Ù -öiÌH“%šäLàŸÕtÑÖÚr´bî>¾¬E_KdcíÑjñ÷w&×w¾ç@’­Â -‡X¶ªp -4*’j˜ÙìVàñq€eÉ*¢ ±VÌL ÆOßp5jm9Zmƒ’ˆ @ñlµ ¡¼Ñ =Ù[5TÊH#ð5ƒZSÃFû"‰àÆîroH4ò| J&ÁrÊK7Í2L‰~ŒÙWIóÖ@Hìµ7€EoLɼ¦üA”Éy7¬"b×Dɇädgˆ±Ü$°¨>˜½@-Î{${']š¿:—â§êƒ‹lAýšçÈâA®»Ë®˜»Zo9[EÍziÙ’u¥×¥Í(ºß„?Ú!¿•€&­¨h5ŨEÐYD$ÆŽî“é¥Â«X7y–„-QA÷oç!ò>Õ—)ñ<«X »jš°M.—íf½3 +N[’.(±†$,<­J¡M]*OÛЧÄvYsÙFty{¹¤¼´ÖšÞ­Ç)G‹^¡Ü;A(Œõæ%ßDî³öÿ°Jº¤õ@‘3‡Õuq ©!Y^£à I÷¬±]) ÃS‘ººZš8/KTxl?Xw¨5œJUhòbý?5èe7¸':Éq4Œj;™Mšì"Æd'IÝäf›iÚZu£Zµ³ Öª@OÉ…IK_’+ø…l"Ô+WxÛr¶#ýšÕÀõŽ-ν•;”N½Åø+s°˜j™ÒYs>Œî1Z!ù8Ú²ig]2±¨ ®'A!ïkë -7Jåæ4tÉ“"{Ø;›ÒÖ„^{ÊD0‘-Ï´næp’bQägý$ 69êÊ¡˜¢(f}8 -ØV!×N.y[súëâhVq€ôÈøE*ù1CFSÚÕúiSaÝÖR²ÂBì•"R!%Ëu»±‚®‹‚`]§úƒŸ$ùÓE0H wÐiÙíæòØE;¹²†:¿¾ •Ó @'{݉½ç­vÁÝY,ȘŠ9º­zKBöAö$OZ‰g¯s ‘Ëg•$—DUHç:YχeX‡- œr¨£©W¹Ï=¤w„¯wì-Ç4„-¦XFJ!Sq¨ªÁ¹0*§%C7F_ö!æc(3\Šz]ZË9£¸N~VŽEÝ€H PQG?®êY‹™‡µÄÔИÊL-²8ÕRF0¯ ÚyW6‹’‚¤Kºi/Àr({OoŒœKžõ w‚VÞDi<’Š­‰ÛtÔ–s}ñî&9É[eS òá4»½Ë2…¤ÉBx^— -¥%íÆŒQ㤚  9ÜÖh鋳¬?Ú8£&ÊÉT¬ØÀO"hõ£ÍïsÅ¥Tú ¶ƒP8±Ñì䥨-w˜'›¾íØ€EÑȰé >ugÌ®$DÇš³\g–çqË®‘Õ—‰•_Êö*áåáàÅ&,Âa´ÿVvë2êìDÎÙĶ.®ÍÒó»)ó{ wVºî¼§CI ®¬­‰]ëÕ;–ò Á}ï›Ât)«ÌI¼èª©Tà!¨ -¬†`X|ìTèæþq'“Ó‚ù´Qt›­Âö7ò)¥ÓDC»RŒ"o¹e¢äz;\QÁ5 ½Žz(‚Á™Ì »/aA’Qh/osȈ®8De:E)Le]ôU$&/.©tPþï9^û:°»Þ7{$Æ›†:H§Ù#iRuj¨Ãé -­ÂÈé°É©@ëo: ß÷hÞ÷^€UJà Öá-%'c7?ˆÖ)Æ“½üÆnÍôý¯øn<Má_¾þž$>¿»NãóÓ/ñD~Oå38žÌçÆãé|æ,œÐç‡kâ)ý¼TâI}š£„Óú,ÒVbßOb©}ž&žÜgáÇÓûþ¡h‚ŸÑñ? (žägt<ÍÏèp¢ŸÇާúm©¢É~K<ÝÏ2'ü¹v+å¿Ã«ô¾›}ößáUšµyb´»´)€¯8šÒ´h€ÿâFšT@«ýG“@<Ö"vøî‹ÛÄÀß}O› ÿIƒ¨àýã·)‚¯=‚æÓ>0-Mº Ækj h“¿¢ j¼¦ܼäkÚ`‡ïÞg›:hµ iR5¾Ÿ©6PãûiS ­iR -HSã¤B¦ÐÖÆ‰F‡©ÇÉÒ %0bt„v`p˜’°éŒ’®; Ò^`Qb¢”¶©‰Ë×ßCNäÑßAOpí8AÁè8EáY‹’¼±0MÁZ‰¥]ª°5Š‘¡+%,ìÄ( »â1ÒÂg{„¶pMY¸`UÇ© ï¨(yáݤ/'0¦0<8Hb08Nc0áq"CÞP˜ÊhµžlR´’l‘;|Ò¶‰¾ÿž&¹ÁÔ6è -ÞÞmŠ£Æ÷)6ÍñM½6ž<}Ñ÷¯NŸî.~¢ÔáÉóÛÓé›7.~(ÿ=þ}zqóæô©¿ß}¸ý|†‹'Œ}zs÷îøþÝñã»›·À??~äê¼?ß<~4m—zùK¾¡§/Òëg7o^?Ÿn¯®2pùÛñíéÕíñÝûÓíãGo?ÿ=]on>ÜïNÿä?]¼½=}Ì=]|üëà :¸¼|öëóÇþv ç -endstream endobj 7 0 obj [6 0 R] endobj 27 0 obj <> endobj xref -0 28 -0000000000 65535 f -0000000016 00000 n -0000000144 00000 n -0000052136 00000 n -0000000000 00000 f -0000059705 00000 n -0000059519 00000 n -0000280311 00000 n -0000052187 00000 n -0000052594 00000 n -0000063929 00000 n -0000061245 00000 n -0000061132 00000 n -0000058251 00000 n -0000058957 00000 n -0000059005 00000 n -0000059589 00000 n -0000059620 00000 n -0000060891 00000 n -0000061280 00000 n -0000064003 00000 n -0000064243 00000 n -0000065311 00000 n -0000074719 00000 n -0000140308 00000 n -0000205897 00000 n -0000271486 00000 n -0000280334 00000 n -trailer -<<7BAC5166B5FBAA4BAFB4DE9E83A2E968>]>> -startxref -280518 -%%EOF diff --git a/application/modules/gitlist/logo/horizontal.png b/application/modules/gitlist/logo/horizontal.png deleted file mode 100644 index d0811a7..0000000 Binary files a/application/modules/gitlist/logo/horizontal.png and /dev/null differ diff --git a/application/modules/gitlist/logo/horizontal.svg b/application/modules/gitlist/logo/horizontal.svg deleted file mode 100644 index 2a6fcfd..0000000 --- a/application/modules/gitlist/logo/horizontal.svg +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/application/modules/gitlist/logo/logomark.png b/application/modules/gitlist/logo/logomark.png deleted file mode 100644 index 46b46d1..0000000 Binary files a/application/modules/gitlist/logo/logomark.png and /dev/null differ diff --git a/application/modules/gitlist/logo/logomark.svg b/application/modules/gitlist/logo/logomark.svg deleted file mode 100644 index d53eb45..0000000 --- a/application/modules/gitlist/logo/logomark.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - diff --git a/application/modules/gitlist/logo/vertical.png b/application/modules/gitlist/logo/vertical.png deleted file mode 100644 index 6dc50d4..0000000 Binary files a/application/modules/gitlist/logo/vertical.png and /dev/null differ diff --git a/application/modules/gitlist/logo/vertical.svg b/application/modules/gitlist/logo/vertical.svg deleted file mode 100644 index 0e2eaf2..0000000 --- a/application/modules/gitlist/logo/vertical.svg +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/application/modules/gitlist/src/Application.php b/application/modules/gitlist/src/Application.php deleted file mode 100644 index fd0f119..0000000 --- a/application/modules/gitlist/src/Application.php +++ /dev/null @@ -1,187 +0,0 @@ -path = realpath($root); - - $this['debug'] = $config->get('app', 'debug'); - $this['theme'] = $config->get('app', 'theme') ? $config->get('app', 'theme') : 'default'; - $this['date.format'] = $config->get('date', 'format') ? $config->get('date', 'format') : 'd/m/Y H:i:s'; - $this['filetypes'] = $config->getSection('filetypes'); - $this['binary_filetypes'] = $config->getSection('binary_filetypes'); - $this['cache.archives'] = $this->getCachePath() . 'archives'; - $this['avatar.url'] = $config->get('avatar', 'url'); - $this['avatar.query'] = $config->get('avatar', 'query'); - - // Register services - $this->register(new TwigServiceProvider(), array( - 'twig.path' => array($this->getThemePath($this['theme']), $this->getThemePath('default')), - 'twig.options' => $config->get('app', 'cache') ? - array('cache' => $this->getCachePath() . 'views') : array(), - )); - - $repositories = $config->get('git', 'repositories'); - $this['git.projects'] = $config->get('git', 'project_list') ? - $this->parseProjectList($config->get('git', 'project_list')) : - false; - - $this->register(new GitServiceProvider(), array( - 'git.client' => $config->get('git', 'client'), - 'git.repos' => $repositories, - 'ini.file' => 'config.ini', - 'git.hidden' => $config->get('git', 'hidden') ? - $config->get('git', 'hidden') : array(), - 'git.default_branch' => $config->get('git', 'default_branch') ? - $config->get('git', 'default_branch') : 'master', - )); - - $this->register(new ViewUtilServiceProvider()); - $this->register(new RepositoryUtilServiceProvider()); - $this->register(new RoutingUtilServiceProvider()); - $this->register(new UrlGeneratorServiceProvider()); - - $this['twig'] = $this->share($this->extend('twig', function ($twig, $app) use ($config) { - $twig->addFilter(new \Twig_SimpleFilter('htmlentities', 'htmlentities')); - $twig->addFilter(new \Twig_SimpleFilter('md5', 'md5')); - $twig->addFilter(new \Twig_SimpleFilter('format_date', array($app, 'formatDate'))); - $twig->addFilter(new \Twig_SimpleFilter('format_size', array($app, 'formatSize'))); - $twig->addFunction(new \Twig_SimpleFunction('avatar', array($app, 'getAvatar'))); - $twig->addGlobal('theme', $app['theme']); - $twig->addGlobal('title', $config->get('app', 'title') ? $config->get('app', 'title') : 'GitList'); - $twig->addGlobal('show_http_remote', $config->get('clone_button', 'show_http_remote')); - $twig->addGlobal('use_https', $config->get('clone_button', 'use_https')); - $twig->addGlobal('http_url_subdir', $config->get('clone_button', 'http_url_subdir')); - $twig->addGlobal('http_user', $config->get('clone_button', 'http_user_dynamic') ? $_SERVER['PHP_AUTH_USER'] : $config->get('clone_button', 'http_user')); - $twig->addGlobal('http_host', $config->get('clone_button', 'http_host')); - $twig->addGlobal('show_ssh_remote', $config->get('clone_button', 'show_ssh_remote')); - $twig->addGlobal('ssh_user', $config->get('clone_button', 'ssh_user_dynamic') ? $_SERVER['PHP_AUTH_USER'] : $config->get('clone_button', 'ssh_user')); - $twig->addGlobal('ssh_url_subdir', $config->get('clone_button', 'ssh_url_subdir')); - $twig->addGlobal('ssh_host', $config->get('clone_button', 'ssh_host')); - $twig->addGlobal('ssh_port', $config->get('clone_button', 'ssh_port')); - - return $twig; - })); - - $this['escaper.argument'] = $this->share(function() { - return new Escaper\ArgumentEscaper(); - }); - - // Handle errors - $this->error(function (\Exception $e, $code) use ($app) { - if ($app['debug']) { - return; - } - - return $app['twig']->render('error.twig', array( - 'message' => $e->getMessage(), - )); - }); - - $this->finish(function () use ($app, $config) { - if (!$config->get('app', 'cache')) { - $fs = new Filesystem(); - $fs->remove($app['cache.archives']); - } - }); - } - - public function formatDate($date) - { - return $date->format($this['date.format']); - } - - public function formatSize($size) - { - $mod = 1000; - $units = array('B', 'kB', 'MB', 'GB'); - for ($i = 0; $size > $mod; $i++) { - $size /= $mod; - } - - return round($size, 2) . $units[$i]; - } - - public function getAvatar($email, $size) - { - $url = $this['avatar.url'] ? $this['avatar.url'] : '//gravatar.com/avatar/'; - $query = array("s=$size"); - if (is_string($this['avatar.query'])) { - $query[] = $this['avatar.query']; - } elseif (is_array($this['avatar.query'])) { - $query = array_merge($query, $this['avatar.query']); - } - $id = md5(strtolower($email)); - - return $url . $id . '?' . implode('&', $query); - } - - public function getPath() - { - return $this->path . DIRECTORY_SEPARATOR; - } - - public function setPath($path) - { - $this->path = $path; - - return $this; - } - - public function getCachePath() - { - return $this->path - . DIRECTORY_SEPARATOR - . 'cache' - . DIRECTORY_SEPARATOR; - } - - public function getThemePath($theme) - { - return $this->path - . DIRECTORY_SEPARATOR - . 'themes' - . DIRECTORY_SEPARATOR - . $theme - . DIRECTORY_SEPARATOR - . 'twig' - . DIRECTORY_SEPARATOR; - } - - public function parseProjectList($project_list) - { - $projects = array(); - $file = fopen($project_list, 'r'); - while ($file && !feof($file)) { - $projects[] = trim(fgets($file)); - } - fclose($file); - - return $projects; - } -} diff --git a/application/modules/gitlist/src/Config.php b/application/modules/gitlist/src/Config.php deleted file mode 100644 index 2a00b7a..0000000 --- a/application/modules/gitlist/src/Config.php +++ /dev/null @@ -1,77 +0,0 @@ -data = $data; - } - - public static function fromFile($file) - { - if (!file_exists($file)) { - die(sprintf('Please, create the %1$s file.', $file)); - } - - $data = parse_ini_file($file, true); - $config = new static($data); - $config->validateOptions(); - - return $config; - } - - public function get($section, $option) - { - if (!array_key_exists($section, $this->data)) { - return false; - } - - if (!array_key_exists($option, $this->data[$section])) { - return false; - } - - return $this->data[$section][$option]; - } - - public function getSection($section) - { - if (!array_key_exists($section, $this->data)) { - return false; - } - - return $this->data[$section]; - } - - public function set($section, $option, $value) - { - $this->data[$section][$option] = $value; - } - - protected function validateOptions() - { - $repositories = $this->get('git', 'repositories'); - - $atLeastOneOk = false; - $atLeastOneWrong = false; - - foreach ($repositories as $directory) { - if (!$directory || !is_dir($directory)) { - $atLeastOneWrong = true; - } else { - $atLeastOneOk = true; - } - } - - if (!$atLeastOneOk) { - die('Please, edit the config file and provide your repositories directory'); - } - - if ($atLeastOneWrong) { - die('One or more of the supplied repository paths appears to be wrong. Please, check the config file'); - } - } -} diff --git a/application/modules/gitlist/src/Controller/BlobController.php b/application/modules/gitlist/src/Controller/BlobController.php deleted file mode 100644 index 1945c08..0000000 --- a/application/modules/gitlist/src/Controller/BlobController.php +++ /dev/null @@ -1,95 +0,0 @@ -get(MODULE_NAME.'/{repo}/blob/{commitishPath}', function ($repo, $commitishPath) use ($app) { - $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); - - list($branch, $file) = $app['util.routing'] - ->parseCommitishPathParam($commitishPath, $repo); - - list($branch, $file) = $app['util.repository']->extractRef($repository, $branch, $file); - - $blob = $repository->getBlob("$branch:\"$file\""); - $breadcrumbs = $app['util.view']->getBreadcrumbs($file); - $fileType = $app['util.repository']->getFileType($file); - - if ($fileType !== 'image' && $app['util.repository']->isBinary($file)) { - return $app->redirect($app['url_generator']->generate('blob_raw', array( - 'repo' => $repo, - 'commitishPath' => $commitishPath, - ))); - } - - return $app['twig']->render('file.twig', array( - 'file' => $file, - 'fileType' => $fileType, - 'blob' => $blob->output(), - 'repo' => $repo, - 'branch' => $branch, - 'breadcrumbs' => $breadcrumbs, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - )); - })->assert('repo', $app['util.routing']->getRepositoryRegex()) - ->assert('commitishPath', '.+') - ->convert('commitishPath', 'escaper.argument:escape') - ->bind('blob'); - - $route->get(MODULE_NAME.'/{repo}/raw/{commitishPath}', function ($repo, $commitishPath) use ($app) { - $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); - - list($branch, $file) = $app['util.routing'] - ->parseCommitishPathParam($commitishPath, $repo); - - list($branch, $file) = $app['util.repository']->extractRef($repository, $branch, $file); - - $blob = $repository->getBlob("$branch:\"$file\"")->output(); - - $headers = array(); - if ($app['util.repository']->isBinary($file)) { - $headers['Content-Disposition'] = 'attachment; filename="' . $file . '"'; - $headers['Content-Type'] = 'application/octet-stream'; - } else { - $headers['Content-Type'] = 'text/plain'; - } - - return new Response($blob, 200, $headers); - })->assert('repo', $app['util.routing']->getRepositoryRegex()) - ->assert('commitishPath', $app['util.routing']->getCommitishPathRegex()) - ->convert('commitishPath', 'escaper.argument:escape') - ->bind('blob_raw'); - - $route->get(MODULE_NAME.'/{repo}/logpatch/{commitishPath}', function ($repo, $commitishPath) use ($app) { - $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); - - list($branch, $file) = $app['util.routing'] - ->parseCommitishPathParam($commitishPath, $repo); - - $filePatchesLog = $repository->getCommitsLogPatch($file); - $breadcrumbs = $app['util.view']->getBreadcrumbs($file); - - return $app['twig']->render('logpatch.twig', array( - 'branch' => $branch, - 'repo' => $repo, - 'breadcrumbs' => $breadcrumbs, - 'commits' => $filePatchesLog, - )); - })->assert('repo', $app['util.routing']->getRepositoryRegex()) - ->assert('commitishPath', '.+') - ->convert('commitishPath', 'escaper.argument:escape') - ->bind('logpatch'); - - return $route; - } -} diff --git a/application/modules/gitlist/src/Controller/CommitController.php b/application/modules/gitlist/src/Controller/CommitController.php deleted file mode 100644 index bb8439b..0000000 --- a/application/modules/gitlist/src/Controller/CommitController.php +++ /dev/null @@ -1,132 +0,0 @@ -get(MODULE_NAME.'/{repo}/commits/search', function (Request $request, $repo) use ($app) { - $subRequest = Request::create( - '/' . $repo . '/commits/master/search', - 'POST', - array('query' => $request->get('query')) - ); - - return $app->handle($subRequest, \Symfony\Component\HttpKernel\HttpKernelInterface::SUB_REQUEST); - })->assert('repo', $app['util.routing']->getRepositoryRegex()); - - $route->get(MODULE_NAME.'/{repo}/commits/{commitishPath}', function (Request $request, $repo, $commitishPath) use ($app) { - $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); - - if ($commitishPath === null) { - $commitishPath = $repository->getHead(); - } - - list($branch, $file) = $app['util.routing'] - ->parseCommitishPathParam($commitishPath, $repo); - - list($branch, $file) = $app['util.repository']->extractRef($repository, $branch, $file); - - $type = $file ? "$branch -- \"$file\"" : $branch; - $pager = $app['util.view']->getPager($request->get('page'), $repository->getTotalCommits($type)); - $commits = $repository->getPaginatedCommits($type, $pager['current']); - $categorized = array(); - - foreach ($commits as $commit) { - $date = $commit->getCommiterDate(); - $date = $date->format('Y-m-d'); - $categorized[$date][] = $commit; - } - - $template = $request->isXmlHttpRequest() ? 'commits_list.twig' : 'commits.twig'; - - return $app['twig']->render($template, array( - 'page' => 'commits', - 'pager' => $pager, - 'repo' => $repo, - 'branch' => $branch, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'commits' => $categorized, - 'file' => $file, - )); - })->assert('repo', $app['util.routing']->getRepositoryRegex()) - ->assert('commitishPath', $app['util.routing']->getCommitishPathRegex()) - ->value('commitishPath', null) - ->convert('commitishPath', 'escaper.argument:escape') - ->bind('commits'); - - $route->post(MODULE_NAME.'/{repo}/commits/{branch}/search', function (Request $request, $repo, $branch = '') use ($app) { - $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); - $query = $request->get('query'); - - $commits = $repository->searchCommitLog($query, $branch); - $categorized = array(); - - foreach ($commits as $commit) { - $date = $commit->getCommiterDate(); - $date = $date->format('Y-m-d'); - $categorized[$date][] = $commit; - } - - return $app['twig']->render('searchcommits.twig', array( - 'repo' => $repo, - 'branch' => $branch, - 'file' => '', - 'commits' => $categorized, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'query' => $query, - )); - })->assert('repo', $app['util.routing']->getRepositoryRegex()) - ->assert('branch', $app['util.routing']->getBranchRegex()) - ->convert('branch', 'escaper.argument:escape') - ->bind('searchcommits'); - - $route->get(MODULE_NAME.'/{repo}/commit/{commit}', function ($repo, $commit) use ($app) { - $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); - $commit = $repository->getCommit($commit); - $branch = $repository->getHead(); - - return $app['twig']->render('commit.twig', array( - 'branch' => $branch, - 'repo' => $repo, - 'commit' => $commit, - )); - })->assert('repo', $app['util.routing']->getRepositoryRegex()) - ->assert('commit', '[a-f0-9^]+') - ->bind('commit'); - - $route->get(MODULE_NAME.'/{repo}/blame/{commitishPath}', function ($repo, $commitishPath) use ($app) { - $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); - - list($branch, $file) = $app['util.routing'] - ->parseCommitishPathParam($commitishPath, $repo); - - list($branch, $file) = $app['util.repository']->extractRef($repository, $branch, $file); - - $blames = $repository->getBlame("$branch -- \"$file\""); - - return $app['twig']->render('blame.twig', array( - 'file' => $file, - 'repo' => $repo, - 'branch' => $branch, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'blames' => $blames, - )); - })->assert('repo', $app['util.routing']->getRepositoryRegex()) - ->assert('commitishPath', $app['util.routing']->getCommitishPathRegex()) - ->convert('commitishPath', 'escaper.argument:escape') - ->bind('blame'); - - return $route; - } -} diff --git a/application/modules/gitlist/src/Controller/MainController.php b/application/modules/gitlist/src/Controller/MainController.php deleted file mode 100644 index b2523b7..0000000 --- a/application/modules/gitlist/src/Controller/MainController.php +++ /dev/null @@ -1,77 +0,0 @@ -get(MODULE_NAME.'/', function () use ($app) { - $repositories = $app['git']->getRepositories($app['git.repos']); - - return $app['twig']->render('index.twig', array( - 'repositories' => $repositories, - )); - })->bind('homepage'); - - $route->get(MODULE_NAME.'/refresh', function (Request $request) use ($app) { - // Go back to calling page - return $app->redirect($request->headers->get('Referer')); - })->bind('refresh'); - - $route->get(MODULE_NAME.'/{repo}/stats/{branch}', function ($repo, $branch) use ($app) { - $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); - - if ($branch === null) { - $branch = $repository->getHead(); - } - - $stats = $repository->getBranchStatistics($branch); - $authors = $repository->getAuthorStatistics($branch); - - return $app['twig']->render('stats.twig', array( - 'repo' => $repo, - 'branch' => $branch, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'stats' => $stats, - 'authors' => $authors, - )); - })->assert('repo', $app['util.routing']->getRepositoryRegex()) - ->assert('branch', $app['util.routing']->getBranchRegex()) - ->value('branch', null) - ->convert('branch', 'escaper.argument:escape') - ->bind('stats'); - - $route->get(MODULE_NAME.'/{repo}/{branch}/rss/', function ($repo, $branch) use ($app) { - $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); - - if ($branch === null) { - $branch = $repository->getHead(); - } - - $commits = $repository->getPaginatedCommits($branch); - - $html = $app['twig']->render('rss.twig', array( - 'repo' => $repo, - 'branch' => $branch, - 'commits' => $commits, - )); - - return new Response($html, 200, array('Content-Type' => 'application/rss+xml')); - })->assert('repo', $app['util.routing']->getRepositoryRegex()) - ->assert('branch', $app['util.routing']->getBranchRegex()) - ->value('branch', null) - ->convert('branch', 'escaper.argument:escape') - ->bind('rss'); - - return $route; - } -} diff --git a/application/modules/gitlist/src/Controller/NetworkController.php b/application/modules/gitlist/src/Controller/NetworkController.php deleted file mode 100644 index 77d30c1..0000000 --- a/application/modules/gitlist/src/Controller/NetworkController.php +++ /dev/null @@ -1,129 +0,0 @@ -get( - MODULE_NAME.'/{repo}/network/{commitishPath}/{page}.json', - function ($repo, $commitishPath, $page) use ($app) { - /** @var Repository $repository */ - $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); - - if ($commitishPath === null) { - $commitishPath = $repository->getHead(); - } - - $pager = $app['util.view']->getPager($page, $repository->getTotalCommits($commitishPath)); - $commits = $repository->getPaginatedCommits($commitishPath, $pager['current']); - - $jsonFormattedCommits = array(); - - foreach ($commits as $commit) { - $detailsUrl = $app['url_generator']->generate( - 'commit', - array( - 'repo' => $repo, - 'commit' => $commit->getHash(), - ) - ); - - $jsonFormattedCommits[$commit->getHash()] = array( - 'hash' => $commit->getHash(), - 'parentsHash' => $commit->getParentsHash(), - 'date' => $commit->getDate()->format('U'), - 'message' => htmlentities($commit->getMessage()), - 'details' => $detailsUrl, - 'author' => array( - 'name' => $commit->getAuthor()->getName(), - 'email' => $commit->getAuthor()->getEmail(), - 'image' => $app->getAvatar($commit->getAuthor()->getEmail(), 40), - ), - ); - } - - $nextPageUrl = null; - - if ($pager['last'] !== $pager['current']) { - $nextPageUrl = $app['url_generator']->generate( - 'networkData', - array( - 'repo' => $repo, - 'commitishPath' => $commitishPath, - 'page' => $pager['next'], - ) - ); - } - - // when no commits are given, return an empty response - issue #369 - if (count($commits) === 0) { - return $app->json( - array( - 'repo' => $repo, - 'commitishPath' => $commitishPath, - 'nextPage' => null, - 'start' => null, - 'commits' => $jsonFormattedCommits, - ), - 200 - ); - } - - return $app->json( - array( - 'repo' => $repo, - 'commitishPath' => $commitishPath, - 'nextPage' => $nextPageUrl, - 'start' => $commits[0]->getHash(), - 'commits' => $jsonFormattedCommits, - ), - 200 - ); - } - )->assert('repo', $app['util.routing']->getRepositoryRegex()) - ->assert('commitishPath', $app['util.routing']->getCommitishPathRegex()) - ->value('commitishPath', null) - ->convert('commitishPath', 'escaper.argument:escape') - ->assert('page', '\d+') - ->value('page', '0') - ->bind('networkData'); - - $route->get( - MODULE_NAME.'/{repo}/network/{commitishPath}', - function ($repo, $commitishPath) use ($app) { - $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); - - if ($commitishPath === null) { - $commitishPath = $repository->getHead(); - } - - list($branch, $file) = $app['util.routing']->parseCommitishPathParam($commitishPath, $repo); - list($branch, $file) = $app['util.repository']->extractRef($repository, $branch, $file); - - return $app['twig']->render( - 'network.twig', - array( - 'repo' => $repo, - 'branch' => $branch, - 'commitishPath' => $commitishPath, - ) - ); - } - )->assert('repo', $app['util.routing']->getRepositoryRegex()) - ->assert('commitishPath', $app['util.routing']->getCommitishPathRegex()) - ->value('commitishPath', null) - ->convert('commitishPath', 'escaper.argument:escape') - ->bind('network'); - - return $route; - } -} diff --git a/application/modules/gitlist/src/Controller/TreeController.php b/application/modules/gitlist/src/Controller/TreeController.php deleted file mode 100644 index 36b9a22..0000000 --- a/application/modules/gitlist/src/Controller/TreeController.php +++ /dev/null @@ -1,128 +0,0 @@ -get(MODULE_NAME.'/{repo}/tree/{commitishPath}/', $treeController = function ($repo, $commitishPath = '') use ($app) { - $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); - if (!$commitishPath) { - $commitishPath = $repository->getHead(); - } - - list($branch, $tree) = $app['util.routing']->parseCommitishPathParam($commitishPath, $repo); - - list($branch, $tree) = $app['util.repository']->extractRef($repository, $branch, $tree); - $files = $repository->getTree($tree ? "$branch:\"$tree\"/" : $branch); - $breadcrumbs = $app['util.view']->getBreadcrumbs($tree); - - $parent = null; - if (($slash = strrpos($tree, '/')) !== false) { - $parent = substr($tree, 0, $slash); - } elseif (!empty($tree)) { - $parent = ''; - } - - return $app['twig']->render('tree.twig', array( - 'files' => $files->output(), - 'repo' => $repo, - 'branch' => $branch, - 'path' => $tree ? $tree . '/' : $tree, - 'parent' => $parent, - 'breadcrumbs' => $breadcrumbs, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'readme' => $app['util.repository']->getReadme($repository, $branch, $tree ? "$tree" : ''), - )); - })->assert('repo', $app['util.routing']->getRepositoryRegex()) - ->assert('commitishPath', $app['util.routing']->getCommitishPathRegex()) - ->convert('commitishPath', 'escaper.argument:escape') - ->bind('tree'); - - $route->post(MODULE_NAME.'/{repo}/tree/{branch}/search', function (Request $request, $repo, $branch = '', $tree = '') use ($app) { - $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); - if (!$branch) { - $branch = $repository->getHead(); - } - - $query = $request->get('query'); - $breadcrumbs = array(array('dir' => 'Search results for: ' . $query, 'path' => '')); - $results = $repository->searchTree($query, $branch); - - return $app['twig']->render('search.twig', array( - 'results' => $results, - 'repo' => $repo, - 'branch' => $branch, - 'path' => $tree, - 'breadcrumbs' => $breadcrumbs, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'query' => $query, - )); - })->assert('repo', $app['util.routing']->getRepositoryRegex()) - ->assert('branch', $app['util.routing']->getBranchRegex()) - ->convert('branch', 'escaper.argument:escape') - ->bind('search'); - - $route->get(MODULE_NAME.'/{repo}/{format}ball/{branch}', function ($repo, $format, $branch) use ($app) { - $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); - - $tree = $repository->getBranchTree($branch); - - if (false === $tree) { - return $app->abort(404, 'Invalid commit or tree reference: ' . $branch); - } - - $file = $app['cache.archives'] . DIRECTORY_SEPARATOR - . $repo . DIRECTORY_SEPARATOR - . substr($tree, 0, 2) . DIRECTORY_SEPARATOR - . substr($tree, 2) - . '.' - . $format; - - if (!file_exists($file)) { - $repository->createArchive($tree, $file, $format); - } - - /** - * Generating name for downloading, lowercasing and removing all non - * ascii and special characters. - */ - $filename = strtolower($repo . '_' . $branch); - $filename = preg_replace('#[^a-z0-9]+#', '_', $filename); - $filename = $filename . '.' . $format; - - $response = new BinaryFileResponse($file); - $response->setContentDisposition('attachment', $filename); - - return $response; - })->assert('format', '(zip|tar)') - ->assert('repo', $app['util.routing']->getRepositoryRegex()) - ->assert('branch', $app['util.routing']->getBranchRegex()) - ->convert('branch', 'escaper.argument:escape') - ->bind('archive'); - - $route->get(MODULE_NAME.'/{repo}/{branch}/', function ($repo, $branch) use ($app, $treeController) { - return $treeController($repo, $branch); - })->assert('repo', $app['util.routing']->getRepositoryRegex()) - ->assert('branch', $app['util.routing']->getBranchRegex()) - ->convert('branch', 'escaper.argument:escape') - ->bind('branch'); - - $route->get(MODULE_NAME.'/{repo}/', function ($repo) use ($app, $treeController) { - return $treeController($repo); - })->assert('repo', $app['util.routing']->getRepositoryRegex()) - ->bind('repository'); - - return $route; - } -} diff --git a/application/modules/gitlist/src/Controller/TreeGraphController.php b/application/modules/gitlist/src/Controller/TreeGraphController.php deleted file mode 100644 index 371c2ca..0000000 --- a/application/modules/gitlist/src/Controller/TreeGraphController.php +++ /dev/null @@ -1,72 +0,0 @@ -get( - MODULE_NAME.'/{repo}/treegraph/{commitishPath}', - function ($repo, $commitishPath) use ($app) { - /** @var \GitList\Git\Repository $repository */ - $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); - - $command = 'log --graph --date-order --all -C -M -n 100 --date=iso ' . - '--pretty=format:"B[%d] C[%H] D[%ad] A[%an] E[%ae] H[%h] S[%s]"'; - $rawRows = $repository->getClient()->run($repository, $command); - $rawRows = explode("\n", $rawRows); - $graphItems = array(); - - foreach ($rawRows as $row) { - if (preg_match("/^(.+?)(\s(B\[(.*?)\])? C\[(.+?)\] D\[(.+?)\] A\[(.+?)\] E\[(.+?)\] H\[(.+?)\] S\[(.+?)\])?$/", $row, $output)) { - if (!isset($output[4])) { - $graphItems[] = array( - 'relation' => $output[1], - ); - continue; - } - $graphItems[] = array( - 'relation' => $output[1], - 'branch' => $output[4], - 'rev' => $output[5], - 'date' => $output[6], - 'author' => $output[7], - 'author_email' => $output[8], - 'short_rev' => $output[9], - 'subject' => preg_replace('/(^|\s)(#[[:xdigit:]]+)(\s|$)/', '$1$2$3', $output[10]), - ); - } - } - - if ($commitishPath === null) { - $commitishPath = $repository->getHead(); - } - - list($branch, $file) = $app['util.routing']->parseCommitishPathParam($commitishPath, $repo); - list($branch, $file) = $app['util.repository']->extractRef($repository, $branch, $file); - - return $app['twig']->render( - 'treegraph.twig', - array( - 'repo' => $repo, - 'branch' => $branch, - 'commitishPath' => $commitishPath, - 'graphItems' => $graphItems, - ) - ); - } - )->assert('repo', $app['util.routing']->getRepositoryRegex()) - ->assert('commitishPath', $app['util.routing']->getCommitishPathRegex()) - ->value('commitishPath', null) - ->convert('commitishPath', 'escaper.argument:escape') - ->bind('treegraph'); - - return $route; - } -} diff --git a/application/modules/gitlist/src/Escaper/ArgumentEscaper.php b/application/modules/gitlist/src/Escaper/ArgumentEscaper.php deleted file mode 100644 index 6717dd8..0000000 --- a/application/modules/gitlist/src/Escaper/ArgumentEscaper.php +++ /dev/null @@ -1,15 +0,0 @@ -setDefaultBranch($options['default_branch']); - $this->setHidden($options['hidden']); - $this->setProjects($options['projects']); - } - - public function getRepositoryFromName($paths, $repo) - { - $repositories = $this->getRepositories($paths); - $path = $repositories[$repo]['path']; - - return $this->getRepository($path); - } - - /** - * Searches for valid repositories on the specified path. - * - * @param array $paths Array of paths where repositories will be searched - * - * @return array Found repositories, containing their name, path and description sorted - * by repository name - */ - public function getRepositories($paths) - { - $allRepositories = array(); - - foreach ($paths as $path) { - $repositories = $this->recurseDirectory($path); - - if (empty($repositories)) { - throw new \RuntimeException('There are no GIT repositories in ' . $path); - } - - /** - * Use "+" to preserve keys, only a problem with numeric repos. - */ - $allRepositories = $allRepositories + $repositories; - } - - $allRepositories = array_unique($allRepositories, SORT_REGULAR); - uksort($allRepositories, function ($k1, $k2) { - return strtolower($k2) < strtolower($k1); - }); - - return $allRepositories; - } - - /** - * Return name of default branch as a string. - */ - public function getDefaultBranch() - { - return $this->defaultBranch; - } - - /** - * Overloads the parent::createRepository method for the correct Repository class instance. - * - * {@inheritdoc} - */ - public function createRepository($path, $bare = null) - { - if (file_exists($path . '/.git/HEAD') && !file_exists($path . '/HEAD')) { - throw new \RuntimeException('A GIT repository already exists at ' . $path); - } - - $repository = new Repository($path, $this); - - return $repository->create($bare); - } - - /** - * Overloads the parent::getRepository method for the correct Repository class instance. - * - * {@inheritdoc} - */ - public function getRepository($path) - { - if (!file_exists($path) || !file_exists($path . '/.git/HEAD') && !file_exists($path . '/HEAD')) { - throw new \RuntimeException('There is no GIT repository at ' . $path); - } - - return new Repository($path, $this); - } - - /** - * Set default branch as a string. - * - * @param string $branch name of branch to use when repo's HEAD is detached - * - * @return object - */ - protected function setDefaultBranch($branch) - { - $this->defaultBranch = $branch; - - return $this; - } - - /** - * Get hidden repository list. - * - * @return array List of repositories to hide - */ - protected function getHidden() - { - return $this->hidden; - } - - /** - * Set the hidden repository list. - * - * @param array $hidden List of repositories to hide - * - * @return object - */ - protected function setHidden($hidden) - { - $this->hidden = $hidden; - - return $this; - } - - /** - * Get project list. - * - * @return array List of repositories to show - */ - protected function getProjects() - { - return $this->projects; - } - - /** - * Set the shown repository list. - * - * @param array $projects List of repositories to show - */ - protected function setProjects($projects) - { - $this->projects = $projects; - - return $this; - } - - private function recurseDirectory($path, $appendPath = '') - { - $dir = new \DirectoryIterator($path); - - $repositories = array(); - - foreach ($dir as $file) { - if ($file->isDot()) { - continue; - } - - if (strrpos($file->getFilename(), '.') === 0) { - continue; - } - - if (!$file->isReadable()) { - continue; - } - - if ($file->isDir()) { - $isBare = file_exists($file->getPathname() . '/HEAD'); - $isRepository = file_exists($file->getPathname() . '/.git/HEAD'); - - if ($isRepository || $isBare) { - $hidden = function ($path, $hide) { - $return = false; - - array_walk($hide, function ($value, $key) use ($path, &$return) { - if (($path === $value) || (1 === preg_match($value, $path))) { - $return = true; - } - }); - - return $return; - }; - - if ($hidden($file->getPathname(), $this->getHidden())) { - continue; - } - - if ($isBare) { - $description = $file->getPathname() . '/description'; - } else { - $description = $file->getPathname() . '/.git/description'; - } - - if (file_exists($description)) { - $description = file_get_contents($description); - } else { - $description = null; - } - - $repoName = $appendPath . $file->getFilename(); - - if (is_array($this->getProjects()) && !in_array($repoName, $this->getProjects())) { - continue; - } - - $repositories[$repoName] = array( - 'name' => $repoName, - 'path' => $file->getPathname(), - 'description' => $description, - ); - - continue; - } - $repositories = array_merge($repositories, $this->recurseDirectory($file->getPathname(), $appendPath . $file->getFilename() . '/')); - } - } - - return $repositories; - } -} diff --git a/application/modules/gitlist/src/Git/Repository.php b/application/modules/gitlist/src/Git/Repository.php deleted file mode 100644 index 81a175f..0000000 --- a/application/modules/gitlist/src/Git/Repository.php +++ /dev/null @@ -1,457 +0,0 @@ -getClient()->run($this, "show $commitHash"); - $logs = explode("\n", $logs); - - return strpos($logs[0], 'commit') === 0; - } - - /** - * Get the current branch, returning a default value when HEAD is detached. - */ - public function getHead($default = null) - { - $client = $this->getClient(); - - return parent::getHead($client->getDefaultBranch()); - } - - /** - * Show Patches that where apllied to the selected file. - * - * @param string $file File path for which we will retrieve a list of patch logs - * - * @return array Collection of Commits data - */ - public function getCommitsLogPatch($file) - { - $record_delimiter = chr(hexdec('0x1e')); - $file_patches = $this->getClient()->run( - $this, - 'log -p --pretty=format:"' . $record_delimiter . '%H' - . '%h%T%P' - . '%aN%aE' - . '%at%cN%cE' - . '%ct' - . '' - . '' - . "\" -- $file" - ); - - $patch_collection = array(); - foreach (preg_split('/(' . $record_delimiter . '\)/', $file_patches, null, PREG_SPLIT_NO_EMPTY) as $patches) { - $patches = '' . $patches; - $xmlEnd = strpos($patches, '') + 7; - $commitInfo = substr($patches, 0, $xmlEnd); - $commitData = substr($patches, $xmlEnd); - $logs = explode("\n", $commitData); - - // Read commit metadata - $format = new PrettyFormat(); - $data = $format->parse($commitInfo); - $commit = new Commit(); - $commit->importData($data[0]); - $commit->setDiffs($this->readDiffLogs($logs)); - $patch_collection[] = $commit; - } - - return $patch_collection; - } - - /** - * Show the data from a specific commit. - * - * @param string $commitHash Hash of the specific commit to read data - * - * @return array Commit data - */ - public function getCommit($commitHash) - { - $logs = $this->getClient()->run( - $this, - 'show --pretty=format:"%H' - . '%h%T%P' - . '%aN%aE' - . '%at%cN%cE' - . '%ct' - . '' - . '' - . "\" $commitHash" - ); - - $xmlEnd = strpos($logs, '') + 7; - $commitInfo = substr($logs, 0, $xmlEnd); - $commitData = substr($logs, $xmlEnd); - $logs = explode("\n", $commitData); - - // Read commit metadata - $format = new PrettyFormat(); - $data = $format->parse($commitInfo); - $commit = new Commit(); - $commit->importData($data[0]); - - if ($commit->getParentsHash()) { - $command = 'diff ' . $commitHash . '~1..' . $commitHash; - $logs = explode("\n", $this->getClient()->run($this, $command)); - } - - $commit->setDiffs($this->readDiffLogs($logs)); - - return $commit; - } - - /** - * Blames the provided file and parses the output. - * - * @param string $file File that will be blamed - * - * @return array Commits hashes containing the lines - */ - public function getBlame($file) - { - $blame = array(); - $logs = $this->getClient()->run($this, "blame --root -sl $file"); - $logs = explode("\n", $logs); - - $i = 0; - $previousCommit = ''; - foreach ($logs as $log) { - if ($log == '') { - continue; - } - - preg_match_all("/([a-zA-Z0-9]{40})\s+.*?([0-9]+)\)(.+)/", $log, $match); - - $currentCommit = $match[1][0]; - if ($currentCommit != $previousCommit) { - ++$i; - $blame[$i] = array( - 'line' => '', - 'commit' => $currentCommit, - 'commitShort' => substr($currentCommit, 0, 8), - ); - } - - $blame[$i]['line'] .= $match[3][0] . PHP_EOL; - $previousCommit = $currentCommit; - } - - return $blame; - } - - /** - * Read diff logs and generate a collection of diffs. - * - * @param array $logs Array of log rows - * - * @return array Array of diffs - */ - public function readDiffLogs(array $logs) - { - $diffs = array(); - $lineNumOld = 0; - $lineNumNew = 0; - foreach ($logs as $log) { - // Skip empty lines - if ($log == '') { - continue; - } - - if ('diff' === substr($log, 0, 4)) { - if (isset($diff)) { - $diffs[] = $diff; - } - - $diff = new Diff(); - if (preg_match('/^diff --[\S]+ a\/?(.+) b\/?/', $log, $name)) { - $diff->setFile($name[1]); - } - continue; - } - - if ('index' === substr($log, 0, 5)) { - $diff->setIndex($log); - continue; - } - - if ('---' === substr($log, 0, 3)) { - $diff->setOld($log); - continue; - } - - if ('+++' === substr($log, 0, 3)) { - $diff->setNew($log); - continue; - } - - // Handle binary files properly. - if ('Binary' === substr($log, 0, 6)) { - $m = array(); - if (preg_match('/Binary files (.+) and (.+) differ/', $log, $m)) { - $diff->setOld($m[1]); - $diff->setNew(" {$m[2]}"); - } - } - - if (!empty($log)) { - switch ($log[0]) { - case '@': - // Set the line numbers - preg_match('/@@ -([0-9]+)(?:,[0-9]+)? \+([0-9]+)/', $log, $matches); - $lineNumOld = $matches[1] - 1; - $lineNumNew = $matches[2] - 1; - break; - case '-': - $lineNumOld++; - break; - case '+': - $lineNumNew++; - break; - default: - $lineNumOld++; - $lineNumNew++; - } - } else { - $lineNumOld++; - $lineNumNew++; - } - - if (isset($diff)) { - $diff->addLine($log, $lineNumOld, $lineNumNew); - } - } - - if (isset($diff)) { - $diffs[] = $diff; - } - - return $diffs; - } - - /** - * Show the repository commit log with pagination. - * - * @param string $file - * @param int $page - * - * @return array Commit log - */ - public function getPaginatedCommits($file = null, $page = 0) - { - $page = 15 * $page; - $pager = "--skip=$page --max-count=15"; - $command = - "log $pager --pretty=format:\"%H" - . '%h%T%P' - . '%aN%aE' - . '%at%cN' - . '%cE' - . '%ct' - . '"'; - - if ($file) { - $command .= " $file"; - } - - try { - $logs = $this->getPrettyFormat($command); - } catch (\RuntimeException $e) { - return array(); - } - - foreach ($logs as $log) { - $commit = new Commit(); - $commit->importData($log); - $commits[] = $commit; - } - - return $commits; - } - - public function searchCommitLog($query, $branch) - { - $query = escapeshellarg($query); - $query = strtr($query, array('[' => '\\[', ']' => '\\]')); - $command = - "log --grep={$query} -i --pretty=format:\"%H" - . '%h%T%P' - . '%aN%aE' - . '%at%cN' - . '%cE' - . '%ct' - . '"' - . " $branch"; - - try { - $logs = $this->getPrettyFormat($command); - } catch (\RuntimeException $e) { - return array(); - } - - foreach ($logs as $log) { - $commit = new Commit(); - $commit->importData($log); - $commits[] = $commit; - } - - return $commits; - } - - public function searchTree($query, $branch) - { - if (empty($query)) { - return null; - } - - $query = preg_replace('/(--?[A-Za-z0-9\-]+)/', '', $query); - $query = escapeshellarg($query); - - try { - $results = $this->getClient()->run($this, "grep -i --line-number -- {$query} $branch"); - } catch (\RuntimeException $e) { - return false; - } - - $results = explode("\n", $results); - $searchResults = array(); - - foreach ($results as $result) { - if ($result == '') { - continue; - } - - preg_match_all('/([\w\-._]+):([^:]+):([0-9]+):(.+)/', $result, $matches, PREG_SET_ORDER); - - $data['branch'] = $matches[0][1]; - $data['file'] = $matches[0][2]; - $data['line'] = $matches[0][3]; - $data['match'] = $matches[0][4]; - - $searchResults[] = $data; - } - - return $searchResults; - } - - public function getAuthorStatistics($branch) - { - $logs = $this->getClient()->run($this, 'log --pretty=format:"%aN||%aE" ' . $branch); - - if (empty($logs)) { - throw new \RuntimeException('No statistics available'); - } - - $logs = explode("\n", $logs); - $logs = array_count_values($logs); - arsort($logs); - - foreach ($logs as $user => $count) { - $user = explode('||', $user); - $data[] = array('name' => $user[0], 'email' => $user[1], 'commits' => $count); - } - - return $data; - } - - public function getBranchStatistics($branch) - { - // Calculate amount of files, extensions and file size - $logs = $this->getClient()->run($this, 'ls-tree -r -l ' . $branch); - $lines = explode("\n", $logs); - $files = array(); - $data['extensions'] = array(); - $data['size'] = 0; - $data['files'] = 0; - - foreach ($lines as $key => $line) { - if (empty($line)) { - unset($lines[$key]); - continue; - } - - $files[] = preg_split("/[\s]+/", $line); - } - - foreach ($files as $file) { - if ($file[1] == 'blob') { - $data['files']++; - } - - if (is_numeric($file[3])) { - $data['size'] += $file[3]; - } - } - - $logs = $this->getClient()->run($this, 'ls-tree -l -r --name-only ' . $branch); - $files = explode("\n", $logs); - foreach ($files as $file) { - if (($pos = strrpos($file, '.')) !== false) { - $extension = substr($file, $pos); - - if (($pos = strrpos($extension, '/')) === false) { - $data['extensions'][] = $extension; - } - } - } - - $data['extensions'] = array_count_values($data['extensions']); - arsort($data['extensions']); - - return $data; - } - - /** - * Create a TAR or ZIP archive of a git tree. - * - * @param string $tree Tree-ish reference - * @param string $output Output File name - * @param string $format Archive format - */ - public function createArchive($tree, $output, $format = 'zip') - { - $fs = new Filesystem(); - $fs->mkdir(dirname($output)); - $this->getClient()->run($this, "archive --format=$format --output='$output' $tree"); - } - - /** - * Return true if $path exists in $branch; return false otherwise. - * - * @param string $commitish commitish reference; branch, tag, SHA1, etc - * @param string $path path whose existence we want to verify - * - * @return bool - * - * GRIPE Arguably belongs in Gitter, as it's generally useful functionality. - * Also, this really may not be the best way to do this. - */ - public function pathExists($commitish, $path) - { - $output = $this->getClient()->run($this, "ls-tree $commitish '$path'"); - - if (strlen($output) > 0) { - return true; - } - - return false; - } -} diff --git a/application/modules/gitlist/src/Provider/GitServiceProvider.php b/application/modules/gitlist/src/Provider/GitServiceProvider.php deleted file mode 100644 index 0ec0344..0000000 --- a/application/modules/gitlist/src/Provider/GitServiceProvider.php +++ /dev/null @@ -1,27 +0,0 @@ - 'php', - 'c' => 'clike', - 'h' => 'clike', - 'cpp' => 'clike', - 'm' => 'clike', - 'mm' => 'clike', - 'ino' => 'clike', - 'cs' => 'text/x-csharp', - 'java' => 'text/x-java', - 'clj' => 'clojure', - 'coffee' => 'coffeescript', - 'css' => 'css', - 'diff' => 'diff', - 'ecl' => 'ecl', - 'el' => 'erlang', - 'go' => 'go', - 'groovy' => 'groovy', - 'hs' => 'haskell', - 'lhs' => 'haskell', - 'jsp' => 'application/x-jsp', - 'asp' => 'htmlembedded', - 'aspx' => 'htmlembedded', - 'html' => 'htmlmixed', - 'tpl' => 'htmlmixed', - 'js' => 'javascript', - 'json' => 'javascript', - 'less' => 'less', - 'lua' => 'lua', - 'md' => 'markdown', - 'markdown' => 'markdown', - 'sql' => 'mysql', - 'ml' => 'ocaml', - 'mli' => 'ocaml', - 'pl' => 'perl', - 'pm' => 'perl', - 'pas' => 'pascal', - 'ini' => 'properties', - 'cfg' => 'properties', - 'nt' => 'ntriples', - 'py' => 'python', - 'rb' => 'ruby', - 'rst' => 'rst', - 'r' => 'r', - 'sh' => 'shell', - 'ss' => 'scheme', - 'scala' => 'text/x-scala', - 'scm' => 'scheme', - 'sls' => 'scheme', - 'sps' => 'scheme', - 'rs' => 'rust', - 'st' => 'smalltalk', - 'tex' => 'stex', - 'vbs' => 'vbscript', - 'vb' => 'vbscript', - 'v' => 'verilog', - 'xml' => 'xml', - 'xsd' => 'xml', - 'xsl' => 'xml', - 'xul' => 'xml', - 'xlf' => 'xml', - 'xliff' => 'xml', - 'xaml' => 'xml', - 'wxs' => 'xml', - 'wxl' => 'xml', - 'wxi' => 'xml', - 'wsdl' => 'xml', - 'svg' => 'xml', - 'rss' => 'xml', - 'rdf' => 'xml', - 'plist' => 'xml', - 'mxml' => 'xml', - 'kml' => 'xml', - 'glade' => 'xml', - 'xq' => 'xquery', - 'xqm' => 'xquery', - 'xquery' => 'xquery', - 'xqy' => 'xquery', - 'yml' => 'yaml', - 'yaml' => 'yaml', - 'png' => 'image', - 'jpg' => 'image', - 'gif' => 'image', - 'jpeg' => 'image', - 'bmp' => 'image', - 'csproj' => 'xml', - ); - - protected static $binaryTypes = array( - 'exe', 'com', 'so', 'la', 'o', 'dll', 'pyc', - 'jpg', 'jpeg', 'bmp', 'gif', 'png', 'xmp', 'pcx', 'svgz', 'ttf', 'tiff', 'oet', - 'gz', 'tar', 'rar', 'zip', '7z', 'jar', 'class', - 'odt', 'ods', 'pdf', 'doc', 'docx', 'dot', 'xls', 'xlsx', - ); - - public function __construct(Application $app) - { - $this->app = $app; - } - - /** - * Returns the file type based on filename by treating the extension. - * - * The file type is used by CodeMirror, a Javascript-based IDE implemented in - * GitList, to properly highlight the blob syntax (if it's a source-code) - * - * @param string $file File name - * - * @return mixed File type - */ - public function getFileType($file) - { - if (($pos = strrpos($file, '.')) !== false) { - $fileType = substr($file, $pos + 1); - } else { - return 'text'; - } - - if (!empty($this->app['filetypes'])) { - if (isset($this->app['filetypes'][$fileType])) { - return $this->app['filetypes'][$fileType]; - } - } - - if (isset($this->defaultFileTypes[$fileType])) { - return $this->defaultFileTypes[$fileType]; - } - - return 'text'; - } - - /** - * Returns whether the file is binary. - * - * @param string $file - * - * @return bool - */ - public function isBinary($file) - { - if (($pos = strrpos($file, '.')) !== false) { - $fileType = substr($file, $pos + 1); - } else { - return false; - } - - if (!empty($this->app['binary_filetypes']) && array_key_exists($fileType, $this->app['binary_filetypes'])) { - return $this->app['binary_filetypes'][$fileType]; - } - - if (in_array($fileType, self::$binaryTypes)) { - return true; - } - - return false; - } - - public function getReadme($repository, $branch = null, $path = '') - { - if ($branch === null) { - $branch = $repository->getHead(); - } - - if ($path != '') { - $path = "$path/"; - } - - $files = $repository->getTree($path != '' ? "$branch:\"$path\"" : $branch)->output(); - - foreach ($files as $file) { - if (preg_match('/^readme*/i', $file['name'])) { - return array( - 'filename' => $file['name'], - 'content' => $repository->getBlob("$branch:\"$path{$file['name']}\"")->output(), - ); - } - } - // No contextual readme, try to catch the main one if we are in deeper context - if ($path != '') { - return $this->getReadme($repository, $branch, ''); - } - - return array(); - } - - /** - * Returns an Array where the first value is the tree-ish and the second is the path. - * - * @param \GitList\Git\Repository $repository - * @param string $branch - * @param string $tree - * - * @return array - */ - public function extractRef($repository, $branch = '', $tree = '') - { - $branch = trim($branch, '/'); - $tree = trim($tree, '/'); - $input = $branch . '/' . $tree; - - // If the ref appears to be a SHA, just split the string - if (preg_match('/^([[:alnum:]]{40})(.+)/', $input, $matches)) { - $branch = $matches[1]; - } else { - // Otherwise, attempt to detect the ref using a list of the project's branches and tags - $validRefs = array_merge((array) $repository->getBranches(), (array) $repository->getTags()); - foreach ($validRefs as $key => $ref) { - if (!preg_match(sprintf('#^%s/#', preg_quote($ref, '#')), $input)) { - unset($validRefs[$key]); - } - } - - // No exact ref match, so just try our best - if (count($validRefs) > 1) { - preg_match('/([^\/]+)(.*)/', $input, $matches); - $branch = preg_replace('/^\/|\/$/', '', $matches[1]); - } else { - // Extract branch name - $branch = array_shift($validRefs); - } - } - - return array($branch, $tree); - } -} diff --git a/application/modules/gitlist/src/Util/Routing.php b/application/modules/gitlist/src/Util/Routing.php deleted file mode 100644 index b307736..0000000 --- a/application/modules/gitlist/src/Util/Routing.php +++ /dev/null @@ -1,164 +0,0 @@ -app = $app; - } - - /* @brief Return $commitish, $path parsed from $commitishPath, based on - * what's in $repo. Raise a 404 if $branchpath does not represent a - * valid branch and path. - * - * A helper for parsing routes that use commit-ish names and paths - * separated by /, since route regexes are not enough to get that right. - * - * @param string $commitishPath - * @param string $repo - * @return array - */ - public function parseCommitishPathParam($commitishPath, $repo) - { - $app = $this->app; - $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); - - $commitish = null; - $path = null; - - $slashPosition = strpos($commitishPath, '/'); - if (strlen($commitishPath) >= 40 && - ($slashPosition === false || - $slashPosition === 40)) { - // We may have a commit hash as our commitish. - $hash = substr($commitishPath, 0, 40); - if (preg_match('/[^a-zA-Z0-9]/i', $hash) === 0) { - if ($repository->hasCommit($hash)) { - $commitish = $hash; - } - } - } - - if ($commitish === null) { - $branches = $repository->getBranches(); - - $tags = $repository->getTags(); - if ($tags !== null && count($tags) > 0) { - $branches = array_merge($branches, $tags); - } - - $matchedBranch = null; - $matchedBranchLength = 0; - foreach ($branches as $branch) { - if (strpos($commitishPath, $branch) === 0 && - strlen($branch) > $matchedBranchLength) { - $matchedBranch = $branch; - $matchedBranchLength = strlen($matchedBranch); - } - } - - if ($matchedBranch !== null) { - $commitish = $matchedBranch; - } else { - // We may have partial commit hash as our commitish. - $hash = $slashPosition === false ? $commitishPath : substr($commitishPath, 0, $slashPosition); - if ($repository->hasCommit($hash)) { - $commit = $repository->getCommit($hash); - $commitish = $commit->getHash(); - } else { - throw new EmptyRepositoryException('This repository is currently empty. There are no commits.'); - } - } - } - - $commitishLength = strlen($commitish); - $path = substr($commitishPath, $commitishLength); - if (strpos($path, '/') === 0) { - $path = substr($path, 1); - } - - return array($commitish, $path); - } - - public function getBranchRegex() - { - static $branchRegex = null; - - if ($branchRegex === null) { - $branchRegex = '(?!/|.*([/.]\.|//|@\{|\\\\))[^\040\177 ~^:?*\[]+(?app['git']->getRepositories($this->app['git.repos']) - ); - usort( - $quotedPaths, - function ($a, $b) { - return strlen($b) - strlen($a); - } - ); - $regex = implode('|', $quotedPaths); - } - - return $regex; - } - - public function isWindows() - { - switch (PHP_OS) { - case 'WIN32': - case 'WINNT': - case 'Windows': - return true; - default: - return false; - } - } - - /** - * Strips the base path from a full repository path. - * - * @param string $repoPath Full path to the repository - * - * @return string Relative path to the repository from git.repositories - */ - public function getRelativePath($repoPath) - { - if (strpos($repoPath, $this->app['git.repos']) === 0) { - $relativePath = substr($repoPath, strlen($this->app['git.repos'])); - - return ltrim(strtr($relativePath, '\\', '/'), '/'); - } - throw new \InvalidArgumentException( - sprintf("Path '%s' does not match configured repository directory", $repoPath) - ); - } -} diff --git a/application/modules/gitlist/src/Util/View.php b/application/modules/gitlist/src/Util/View.php deleted file mode 100644 index 9d8dc20..0000000 --- a/application/modules/gitlist/src/Util/View.php +++ /dev/null @@ -1,49 +0,0 @@ - $path) { - $breadcrumbs[] = array( - 'dir' => $path, - 'path' => implode('/', array_slice($paths, 0, $i + 1)), - ); - } - - return $breadcrumbs; - } - - public function getPager($pageNumber, $totalCommits) - { - $pageNumber = (empty($pageNumber)) ? 0 : $pageNumber; - $lastPage = (int) ($totalCommits / 15); - - // If total commits are integral multiple of 15, the lastPage will be commits/15 - 1. - $lastPage = ($lastPage * 15 == $totalCommits) ? $lastPage - 1 : $lastPage; - $nextPage = $pageNumber + 1; - $previousPage = $pageNumber - 1; - - return array('current' => $pageNumber, - 'next' => $nextPage, - 'previous' => $previousPage, - 'last' => $lastPage, - 'total' => $totalCommits, - ); - } -} diff --git a/application/modules/gitlist/themes/default/twig/blame.twig b/application/modules/gitlist/themes/default/twig/blame.twig deleted file mode 100644 index d58d918..0000000 --- a/application/modules/gitlist/themes/default/twig/blame.twig +++ /dev/null @@ -1,25 +0,0 @@ -{% extends 'layout_page.twig' %} - -{% set page = 'commits' %} - -{% block title %}GitList{% endblock %} - -{% block content %} - {% include 'breadcrumb.twig' with {breadcrumbs: [{dir: 'Blame', path:''}]} %} - -
-
-
{{ file }}
-
- - {% for blame in blames %} - - - - - {% endfor %} -
{{ blame.commitShort }}
{{ blame.line }}
-
- -
-{% endblock %} diff --git a/application/modules/gitlist/themes/default/twig/branch_menu.twig b/application/modules/gitlist/themes/default/twig/branch_menu.twig deleted file mode 100644 index c627d1d..0000000 --- a/application/modules/gitlist/themes/default/twig/branch_menu.twig +++ /dev/null @@ -1,21 +0,0 @@ -
- - - -
\ No newline at end of file diff --git a/application/modules/gitlist/themes/default/twig/breadcrumb.twig b/application/modules/gitlist/themes/default/twig/breadcrumb.twig deleted file mode 100644 index 735e8d7..0000000 --- a/application/modules/gitlist/themes/default/twig/breadcrumb.twig +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/application/modules/gitlist/themes/default/twig/commit.twig b/application/modules/gitlist/themes/default/twig/commit.twig deleted file mode 100644 index c80a05f..0000000 --- a/application/modules/gitlist/themes/default/twig/commit.twig +++ /dev/null @@ -1,82 +0,0 @@ -{% extends 'layout_page.twig' %} - -{% set page = 'commits' %} - -{% block title %}GitList{% endblock %} - -{% block content %} - {% include 'breadcrumb.twig' with {breadcrumbs: [{dir: "Commit #{commit.hash}", path:''}]} %} - -
-
- Browse code -

{{ commit.message }}

-
-
- {% if commit.body is not empty %} -

{{ commit.body | nl2br }}

- {% endif %} - - - {{ commit.author.name }} authored on {{ commit.date | format_date }} - {% if commit.author.email != commit.commiter.email %} - • {{ commit.commiter.name }} committed on {{ commit.commiterDate | format_date }} - {% endif %} -
Showing {{ commit.changedFiles }} changed files -
-
-
- -
    - {% for diff in commit.diffs %} -
  • {{ diff.file }} {{ diff.index }}
  • - {% endfor %} -
- - {% for diff in commit.diffs %} -
- - -
- - {% for line in diff.getLines %} - - - - - - {% endfor %} -
- {% if line.getType != 'chunk' %} - - - {% endif %} - {{ line.getNumOld }} - {% if line.getType != 'chunk' %} - - {% endif %} - - {% if line.getType != 'chunk' %} - - - {% endif %} - {{ line.getNumNew }} - {% if line.getType != 'chunk' %} - - {% endif %} - - {{ line.getLine }} -
-
-
- {% endfor %} - -
-{% endblock %} diff --git a/application/modules/gitlist/themes/default/twig/commits.twig b/application/modules/gitlist/themes/default/twig/commits.twig deleted file mode 100644 index b059ff7..0000000 --- a/application/modules/gitlist/themes/default/twig/commits.twig +++ /dev/null @@ -1,13 +0,0 @@ -{% extends 'layout_page.twig' %} - -{% set page = 'commits' %} - -{% block title %}GitList{% endblock %} - -{% block content %} - {% include 'breadcrumb.twig' with {breadcrumbs: [{dir: 'Commit history', path:''}]} %} - - {% include 'commits_list.twig' %} - -
-{% endblock %} diff --git a/application/modules/gitlist/themes/default/twig/commits_list.twig b/application/modules/gitlist/themes/default/twig/commits_list.twig deleted file mode 100644 index 6521276..0000000 --- a/application/modules/gitlist/themes/default/twig/commits_list.twig +++ /dev/null @@ -1,45 +0,0 @@ -{% if commits %} -{% for date, commit in commits %} - - - - - - - - {% for item in commit %} - - - - - {% endfor %} - -
{{ date | date("F j, Y") }}
- View {{ item.shortHash }} -

{{ item.message }}

- - {{ item.author.name }} authored on {{ item.date | format_date }} - {% if item.author.email != item.commiter.email %} - • {{ item.commiter.name }} committed on {{ item.commiterDate | format_date }} - {% endif %} - -
-{% endfor %} -{% else %} -

No results found.

-{% endif %} - -{% if page != 'searchcommits' %} -
    - {% if pager.current != 0 %} - - {% endif %} - {% if pager.current != pager.last %} - - {% endif %} -
-{% endif %} diff --git a/application/modules/gitlist/themes/default/twig/error.twig b/application/modules/gitlist/themes/default/twig/error.twig deleted file mode 100644 index a22e67d..0000000 --- a/application/modules/gitlist/themes/default/twig/error.twig +++ /dev/null @@ -1,17 +0,0 @@ -{% extends 'layout.twig' %} -{% block title %}GitList{% endblock %} - -{% block body %} -{% include 'navigation.twig' %} - -
- -
- Oops! {{ message }} -
- -
- - {% include 'footer.twig' %} -
-{% endblock %} diff --git a/application/modules/gitlist/themes/default/twig/file.twig b/application/modules/gitlist/themes/default/twig/file.twig deleted file mode 100644 index 34ea180..0000000 --- a/application/modules/gitlist/themes/default/twig/file.twig +++ /dev/null @@ -1,33 +0,0 @@ -{% extends 'layout_page.twig' %} - -{% set page = 'files' %} - -{% block title %}GitList{% endblock %} - -{% block content %} - {% include 'breadcrumb.twig' with {breadcrumbs: breadcrumbs} %} - -
-
-
- - -
- {% if fileType == 'image' %} -
{{ file }}
- - {% elseif fileType == 'markdown' %} -
{{ blob }}
- - {% else %} -
{{ blob|htmlentities|raw }}
- {% endif %} -
- -
-{% endblock %} diff --git a/application/modules/gitlist/themes/default/twig/footer.twig b/application/modules/gitlist/themes/default/twig/footer.twig deleted file mode 100644 index f76aa82..0000000 --- a/application/modules/gitlist/themes/default/twig/footer.twig +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/application/modules/gitlist/themes/default/twig/index.twig b/application/modules/gitlist/themes/default/twig/index.twig deleted file mode 100644 index 1f52c6e..0000000 --- a/application/modules/gitlist/themes/default/twig/index.twig +++ /dev/null @@ -1,34 +0,0 @@ -{% extends 'layout.twig' %} -{% block title %}GitList{% endblock %} - -{% block body %} -{% include 'navigation.twig' %} - -
- - -
- {% for repository in repositories %} -
- -
- {% if repository.description %} -

{{ repository.description }}

- {% else %} -

There is no repository description file. Please, create one to remove this message.

- {% endif %} -
-
- {% endfor %} -
- -
- - {% include 'footer.twig' %} -
-{% endblock %} diff --git a/application/modules/gitlist/themes/default/twig/layout.twig b/application/modules/gitlist/themes/default/twig/layout.twig deleted file mode 100644 index c26d259..0000000 --- a/application/modules/gitlist/themes/default/twig/layout.twig +++ /dev/null @@ -1,30 +0,0 @@ - - - - - {{ title }}{% if title %} - {% endif %}{% block title %}Welcome!{% endblock %} - - - - - - - - {% block body %}{% endblock %} - {% block javascripts %} - - - - - - - - - - - - {% endblock %} - - diff --git a/application/modules/gitlist/themes/default/twig/layout_page.twig b/application/modules/gitlist/themes/default/twig/layout_page.twig deleted file mode 100644 index 307fffb..0000000 --- a/application/modules/gitlist/themes/default/twig/layout_page.twig +++ /dev/null @@ -1,31 +0,0 @@ -{% extends 'layout.twig' %} - -{% block body %} - {% include 'navigation.twig' %} - -
-
-
- {% if page in ['commits', 'searchcommits'] %} - - {% else %} - - {% endif %} - - {% if branches is defined %} - {% include 'branch_menu.twig' %} - {% endif %} - - {% include 'menu.twig' %} -
-
- - {% block content %}{% endblock %} - - {% include 'footer.twig' %} -
-{% endblock %} diff --git a/application/modules/gitlist/themes/default/twig/logpatch.twig b/application/modules/gitlist/themes/default/twig/logpatch.twig deleted file mode 100644 index 361a8a6..0000000 --- a/application/modules/gitlist/themes/default/twig/logpatch.twig +++ /dev/null @@ -1,83 +0,0 @@ -{% extends 'layout_page.twig' %} - -{% set page = 'commits' %} - -{% block title %}GitList{% endblock %} - -{% block content %} - - {% include 'breadcrumb.twig' with {breadcrumbs: breadcrumbs} %} - - {% for commit in commits %} - -
-
- Browse code -

{{ commit.message }}

-
-
- {% if commit.body is not empty %} -

{{ commit.body | nl2br }}

- {% endif %} - - - {{ commit.author.name }} authored on {{ commit.date | format_date }} - {% if commit.author.email != commit.commiter.email %} - • {{ commit.commiter.name }} committed on {{ commit.commiterDate | format_date }} - {% endif %} -
Showing {{ commit.changedFiles }} changed files -
-
-
- - {% for diff in commit.diffs %} -
- - -
- - {% for line in diff.getLines %} - - - - - - {% endfor %} -
- {% if line.getType != 'chunk' %} - - - {% endif %} - {{ line.getNumOld }} - {% if line.getType != 'chunk' %} - - {% endif %} - - {% if line.getType != 'chunk' %} - - - {% endif %} - {{ line.getNumNew }} - {% if line.getType != 'chunk' %} - - {% endif %} - - {{ line.getLine }} -
-
-
- {% endfor %} - - {% endfor %} - - - -
-{% endblock %} diff --git a/application/modules/gitlist/themes/default/twig/menu.twig b/application/modules/gitlist/themes/default/twig/menu.twig deleted file mode 100644 index f98e5e1..0000000 --- a/application/modules/gitlist/themes/default/twig/menu.twig +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/application/modules/gitlist/themes/default/twig/navigation.twig b/application/modules/gitlist/themes/default/twig/navigation.twig deleted file mode 100644 index cf8df6b..0000000 --- a/application/modules/gitlist/themes/default/twig/navigation.twig +++ /dev/null @@ -1,20 +0,0 @@ - diff --git a/application/modules/gitlist/themes/default/twig/network.twig b/application/modules/gitlist/themes/default/twig/network.twig deleted file mode 100644 index 8d5b31d..0000000 --- a/application/modules/gitlist/themes/default/twig/network.twig +++ /dev/null @@ -1,23 +0,0 @@ -{% extends 'layout_page.twig' %} - -{% set page = 'network' %} - -{% block title %}GitList{% endblock %} - -{% block content %} - {% include 'breadcrumb.twig' with {breadcrumbs: [{dir: 'Network', path:''}]} %} -
-
-
Network Graph of {{ repo }} / {{ commitishPath }}
-
- -
- {#
#} - -
-
- - - -
-{% endblock %} diff --git a/application/modules/gitlist/themes/default/twig/rss.twig b/application/modules/gitlist/themes/default/twig/rss.twig deleted file mode 100644 index 9416ca8..0000000 --- a/application/modules/gitlist/themes/default/twig/rss.twig +++ /dev/null @@ -1,18 +0,0 @@ - - - - Latest commits in {{ repo }}:{{ branch }} - RSS provided by GitList - {{ url('homepage') }} - - {% for commit in commits %} - - {{ commit.message }} - {{ commit.author.name }} authored {{ commit.shortHash }} in {{ commit.date | format_date }} - {{ url('commit', {repo: repo, commit: commit.hash}) }} - {{ commit.date | date('r') }} - {{ commit.author.email }} ({{ commit.author.name }}) - - {% endfor %} - - diff --git a/application/modules/gitlist/themes/default/twig/search.twig b/application/modules/gitlist/themes/default/twig/search.twig deleted file mode 100644 index c01abb8..0000000 --- a/application/modules/gitlist/themes/default/twig/search.twig +++ /dev/null @@ -1,42 +0,0 @@ -{% extends 'layout_page.twig' %} - -{% set page = 'files' %} - -{% block title %}GitList{% endblock %} - -{% block content %} - {% embed 'breadcrumb.twig' with {breadcrumbs: breadcrumbs} %} - {% block extra %} -
-
- ZIP - TAR -
- -
- {% endblock %} - {% endembed %} - - {% if results %} - - - - - - - - - {% for result in results %} - - - - - {% endfor %} - -
namematch
{{ result.file }}{{ result.match }}
- {% else %} -

No results found.

- {% endif %} - -
-{% endblock %} diff --git a/application/modules/gitlist/themes/default/twig/searchcommits.twig b/application/modules/gitlist/themes/default/twig/searchcommits.twig deleted file mode 100644 index 20495bc..0000000 --- a/application/modules/gitlist/themes/default/twig/searchcommits.twig +++ /dev/null @@ -1,13 +0,0 @@ -{% extends 'layout_page.twig' %} - -{% set page = 'searchcommits' %} - -{% block title %}GitList{% endblock %} - -{% block content %} - {% include 'breadcrumb.twig' with {breadcrumbs: [{dir: 'Commits search results for: ' ~ query, path:''}]} %} - - {% include 'commits_list.twig' %} - -
-{% endblock %} diff --git a/application/modules/gitlist/themes/default/twig/stats.twig b/application/modules/gitlist/themes/default/twig/stats.twig deleted file mode 100644 index 495663e..0000000 --- a/application/modules/gitlist/themes/default/twig/stats.twig +++ /dev/null @@ -1,48 +0,0 @@ -{% extends 'layout_page.twig' %} - -{% set page = 'stats' %} - -{% block title %}GitList{% endblock %} - -{% block content %} - {% include 'breadcrumb.twig' with {breadcrumbs: [{dir: 'Statistics', path:''}]} %} - - - - - - - - - - - - - - - - -
File extensions ({{ stats.extensions|length }})Authors ({{ authors|length }})Other
-
    - {% for ext, amount in stats.extensions %} -
  • {{ ext }}: {{ amount }} files
  • - {% endfor %} -
-
-
    - {% for author in authors %} -
  • {{ author.name }}: {{ author.commits }} commits
  • - {% endfor %} -
-
-

- Total files: {{ stats.files }} -

- -

- Total bytes: {{ stats.size }} bytes ({{ stats.size | format_size }}) -

-
- -
-{% endblock %} diff --git a/application/modules/gitlist/themes/default/twig/tree.twig b/application/modules/gitlist/themes/default/twig/tree.twig deleted file mode 100644 index 984513a..0000000 --- a/application/modules/gitlist/themes/default/twig/tree.twig +++ /dev/null @@ -1,95 +0,0 @@ -{% extends 'layout_page.twig' %} - -{% set page = 'files' %} - -{% block title %}GitList{% endblock %} - -{% block content %} - {% embed 'breadcrumb.twig' with {breadcrumbs: breadcrumbs} %} - {% block extra %} -
-
- {% if show_http_remote or show_ssh_remote %} - Clone - {% endif %} - ZIP - TAR -
- -
- {% if show_http_remote or show_ssh_remote %} -
-
- × -
- {% if show_ssh_remote %} - - {% endif %} - {% if show_http_remote %} - - {% endif %} -

- {% if show_ssh_remote %} - - {% endif %} - {% if show_http_remote %} - - {% endif %} -
-
- {% endif %} - {% endblock %} - {% endembed %} - - {% if files is not empty %} - - - - - - - - - - {% if parent is not null %} - - - - - - {% endif %} - {% for file in files %} - - - - - - {% endfor %} - -
namemodesize
- {% if not parent %} - .. - {% else %} - .. - {% endif %} -
{{ file.name }}{{ file.mode }}{% if file.size %}{{ file.size | format_size }}{% endif %}
- {% else %} -

This repository is empty.

- {% endif %} - {% if readme is defined and readme is not empty %} -
-
-
{{ readme.filename }}
-
-
{{ readme.content }}
-
- {% endif %} - -
-{% endblock %} diff --git a/application/modules/gitlist/themes/default/twig/treegraph.twig b/application/modules/gitlist/themes/default/twig/treegraph.twig deleted file mode 100644 index a8bd45b..0000000 --- a/application/modules/gitlist/themes/default/twig/treegraph.twig +++ /dev/null @@ -1,48 +0,0 @@ -{% extends 'layout_page.twig' %} - -{% set page = 'treegraph' %} - -{% block title %}GitList{% endblock %} - -{% block content %} - {% include 'breadcrumb.twig' with {breadcrumbs: [{dir: 'Graph', path:''}]} %} -
-
-
Graph of {{ repo }}
-
- -
-
- -
    - {% for item in graphItems %} -
  • {{ item.relation }}
  • - {% endfor %} -
-
-
-
-
    - {% for item in graphItems %} -
  • - {% if item.rev is defined %} - {{ item.short_rev }} - {{ item.branch }} - {{ item.subject }} by - {{ item.author }} <{{ item.author_email }}> - {{ item.date }}; - {% else %} - - {% endif %} -
  • - {% endfor %} -
-
-
-
-
- - - -
-{% endblock %} diff --git a/application/modules/gitlist/vendor/autoload.php b/application/modules/gitlist/vendor/autoload.php deleted file mode 100644 index a0ebb53..0000000 --- a/application/modules/gitlist/vendor/autoload.php +++ /dev/null @@ -1,7 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -if (version_compare('5.3.3', PHP_VERSION, '>')) { - fwrite( - STDERR, - sprintf( - 'This version of PHPUnit is supported on PHP 5.3, PHP 5.4, PHP 5.5, and PHP 5.6.' . PHP_EOL . - 'You are using PHP %s%s.' . PHP_EOL, - PHP_VERSION, - defined('PHP_BINARY') ? ' (' . PHP_BINARY . ')' : '' - ) - ); - - die(1); -} - -if (!ini_get('date.timezone')) { - ini_set('date.timezone', 'UTC'); -} - -foreach (array(__DIR__ . '/../../autoload.php', __DIR__ . '/../vendor/autoload.php', __DIR__ . '/vendor/autoload.php') as $file) { - if (file_exists($file)) { - define('PHPUNIT_COMPOSER_INSTALL', $file); - - break; - } -} - -unset($file); - -if (!defined('PHPUNIT_COMPOSER_INSTALL')) { - fwrite(STDERR, - 'You need to set up the project dependencies using Composer:' . PHP_EOL . PHP_EOL . - ' composer install' . PHP_EOL . PHP_EOL . - 'You can learn all about Composer on https://getcomposer.org/.' . PHP_EOL - ); - - die(1); -} - -require PHPUNIT_COMPOSER_INSTALL; - -PHPUnit_TextUI_Command::main(); diff --git a/application/modules/gitlist/vendor/composer/ClassLoader.php b/application/modules/gitlist/vendor/composer/ClassLoader.php deleted file mode 100644 index ac67d30..0000000 --- a/application/modules/gitlist/vendor/composer/ClassLoader.php +++ /dev/null @@ -1,415 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @see http://www.php-fig.org/psr/psr-0/ - * @see http://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - // PSR-4 - private $prefixLengthsPsr4 = array(); - private $prefixDirsPsr4 = array(); - private $fallbackDirsPsr4 = array(); - - // PSR-0 - private $prefixesPsr0 = array(); - private $fallbackDirsPsr0 = array(); - - private $useIncludePath = false; - private $classMap = array(); - private $classMapAuthoritative = false; - private $missingClasses = array(); - - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', $this->prefixesPsr0); - } - - return array(); - } - - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param array $classMap Class to filename map - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - */ - public function add($prefix, $paths, $prepend = false) - { - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - (array) $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - (array) $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = (array) $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - (array) $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - (array) $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - (array) $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - (array) $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 base directories - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - } - - /** - * Unregisters this instance as an autoloader. - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return bool|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - includeFile($file); - - return true; - } - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731 - if ('\\' == $class[0]) { - $class = substr($class, 1); - } - - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) { - if (0 === strpos($class, $prefix)) { - foreach ($this->prefixDirsPsr4[$prefix] as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } -} - -/** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - */ -function includeFile($file) -{ - include $file; -} diff --git a/application/modules/gitlist/vendor/composer/LICENSE b/application/modules/gitlist/vendor/composer/LICENSE deleted file mode 100644 index f0157a6..0000000 --- a/application/modules/gitlist/vendor/composer/LICENSE +++ /dev/null @@ -1,56 +0,0 @@ -Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Upstream-Name: Composer -Upstream-Contact: Jordi Boggiano -Source: https://github.com/composer/composer - -Files: * -Copyright: 2016, Nils Adermann - 2016, Jordi Boggiano -License: Expat - -Files: src/Composer/Util/TlsHelper.php -Copyright: 2016, Nils Adermann - 2016, Jordi Boggiano - 2013, Evan Coury -License: Expat and BSD-2-Clause - -License: BSD-2-Clause - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - . - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - . - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -License: Expat - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is furnished - to do so, subject to the following conditions: - . - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - . - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. diff --git a/application/modules/gitlist/vendor/composer/autoload_classmap.php b/application/modules/gitlist/vendor/composer/autoload_classmap.php deleted file mode 100644 index bc5155a..0000000 --- a/application/modules/gitlist/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,454 +0,0 @@ - $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php', - 'File_Iterator_Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php', - 'File_Iterator_Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php', - 'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/Assert.php', - 'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/AssertionFailedError.php', - 'PHPUnit\\Framework\\BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/BaseTestListener.php', - 'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/Test.php', - 'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php', - 'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestListener.php', - 'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestSuite.php', - 'PHPUnit_Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php', - 'PHPUnit_Extensions_GroupTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php', - 'PHPUnit_Extensions_PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestCase.php', - 'PHPUnit_Extensions_PhptTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php', - 'PHPUnit_Extensions_RepeatedTest' => $vendorDir . '/phpunit/phpunit/src/Extensions/RepeatedTest.php', - 'PHPUnit_Extensions_TestDecorator' => $vendorDir . '/phpunit/phpunit/src/Extensions/TestDecorator.php', - 'PHPUnit_Extensions_TicketListener' => $vendorDir . '/phpunit/phpunit/src/Extensions/TicketListener.php', - 'PHPUnit_Framework_Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php', - 'PHPUnit_Framework_AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php', - 'PHPUnit_Framework_BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/BaseTestListener.php', - 'PHPUnit_Framework_CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php', - 'PHPUnit_Framework_Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint.php', - 'PHPUnit_Framework_Constraint_And' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/And.php', - 'PHPUnit_Framework_Constraint_ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php', - 'PHPUnit_Framework_Constraint_ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php', - 'PHPUnit_Framework_Constraint_Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php', - 'PHPUnit_Framework_Constraint_Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php', - 'PHPUnit_Framework_Constraint_ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php', - 'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php', - 'PHPUnit_Framework_Constraint_Composite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Composite.php', - 'PHPUnit_Framework_Constraint_Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Count.php', - 'PHPUnit_Framework_Constraint_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php', - 'PHPUnit_Framework_Constraint_ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php', - 'PHPUnit_Framework_Constraint_ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php', - 'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php', - 'PHPUnit_Framework_Constraint_FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php', - 'PHPUnit_Framework_Constraint_GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php', - 'PHPUnit_Framework_Constraint_IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php', - 'PHPUnit_Framework_Constraint_IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php', - 'PHPUnit_Framework_Constraint_IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php', - 'PHPUnit_Framework_Constraint_IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php', - 'PHPUnit_Framework_Constraint_IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php', - 'PHPUnit_Framework_Constraint_IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php', - 'PHPUnit_Framework_Constraint_IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php', - 'PHPUnit_Framework_Constraint_IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php', - 'PHPUnit_Framework_Constraint_IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php', - 'PHPUnit_Framework_Constraint_IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php', - 'PHPUnit_Framework_Constraint_JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php', - 'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php', - 'PHPUnit_Framework_Constraint_LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php', - 'PHPUnit_Framework_Constraint_Not' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Not.php', - 'PHPUnit_Framework_Constraint_ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php', - 'PHPUnit_Framework_Constraint_Or' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Or.php', - 'PHPUnit_Framework_Constraint_PCREMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php', - 'PHPUnit_Framework_Constraint_SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php', - 'PHPUnit_Framework_Constraint_StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php', - 'PHPUnit_Framework_Constraint_StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php', - 'PHPUnit_Framework_Constraint_StringMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php', - 'PHPUnit_Framework_Constraint_StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php', - 'PHPUnit_Framework_Constraint_TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php', - 'PHPUnit_Framework_Constraint_TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php', - 'PHPUnit_Framework_Constraint_Xor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Xor.php', - 'PHPUnit_Framework_Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error.php', - 'PHPUnit_Framework_Error_Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php', - 'PHPUnit_Framework_Error_Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php', - 'PHPUnit_Framework_Error_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php', - 'PHPUnit_Framework_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php', - 'PHPUnit_Framework_ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php', - 'PHPUnit_Framework_ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php', - 'PHPUnit_Framework_IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php', - 'PHPUnit_Framework_IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php', - 'PHPUnit_Framework_IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php', - 'PHPUnit_Framework_InvalidCoversTargetError' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetError.php', - 'PHPUnit_Framework_InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php', - 'PHPUnit_Framework_MockObject_BadMethodCallException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php', - 'PHPUnit_Framework_MockObject_Builder_Identity' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php', - 'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php', - 'PHPUnit_Framework_MockObject_Builder_Match' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php', - 'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php', - 'PHPUnit_Framework_MockObject_Builder_Namespace' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php', - 'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php', - 'PHPUnit_Framework_MockObject_Builder_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php', - 'PHPUnit_Framework_MockObject_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php', - 'PHPUnit_Framework_MockObject_Generator' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php', - 'PHPUnit_Framework_MockObject_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php', - 'PHPUnit_Framework_MockObject_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php', - 'PHPUnit_Framework_MockObject_Invocation_Object' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php', - 'PHPUnit_Framework_MockObject_Invocation_Static' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php', - 'PHPUnit_Framework_MockObject_Invokable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php', - 'PHPUnit_Framework_MockObject_Matcher' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php', - 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php', - 'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php', - 'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php', - 'PHPUnit_Framework_MockObject_Matcher_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php', - 'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php', - 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php', - 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php', - 'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php', - 'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php', - 'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php', - 'PHPUnit_Framework_MockObject_Matcher_MethodName' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php', - 'PHPUnit_Framework_MockObject_Matcher_Parameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php', - 'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php', - 'PHPUnit_Framework_MockObject_MockBuilder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php', - 'PHPUnit_Framework_MockObject_MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php', - 'PHPUnit_Framework_MockObject_RuntimeException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php', - 'PHPUnit_Framework_MockObject_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php', - 'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php', - 'PHPUnit_Framework_MockObject_Stub_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php', - 'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php', - 'PHPUnit_Framework_MockObject_Stub_Return' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php', - 'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php', - 'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php', - 'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php', - 'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php', - 'PHPUnit_Framework_MockObject_Verifiable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php', - 'PHPUnit_Framework_OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/OutputError.php', - 'PHPUnit_Framework_RiskyTest' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTest.php', - 'PHPUnit_Framework_RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php', - 'PHPUnit_Framework_SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php', - 'PHPUnit_Framework_SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php', - 'PHPUnit_Framework_SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php', - 'PHPUnit_Framework_SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php', - 'PHPUnit_Framework_SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php', - 'PHPUnit_Framework_SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php', - 'PHPUnit_Framework_Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php', - 'PHPUnit_Framework_TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php', - 'PHPUnit_Framework_TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php', - 'PHPUnit_Framework_TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php', - 'PHPUnit_Framework_TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php', - 'PHPUnit_Framework_TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php', - 'PHPUnit_Framework_TestSuite_DataProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php', - 'PHPUnit_Framework_UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php', - 'PHPUnit_Framework_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Warning.php', - 'PHPUnit_Runner_BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php', - 'PHPUnit_Runner_Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php', - 'PHPUnit_Runner_Filter_Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php', - 'PHPUnit_Runner_Filter_GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group.php', - 'PHPUnit_Runner_Filter_Group_Exclude' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php', - 'PHPUnit_Runner_Filter_Group_Include' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php', - 'PHPUnit_Runner_Filter_Test' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Test.php', - 'PHPUnit_Runner_StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php', - 'PHPUnit_Runner_TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', - 'PHPUnit_Runner_Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php', - 'PHPUnit_TextUI_Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php', - 'PHPUnit_TextUI_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php', - 'PHPUnit_TextUI_TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php', - 'PHPUnit_Util_Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php', - 'PHPUnit_Util_Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php', - 'PHPUnit_Util_ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php', - 'PHPUnit_Util_Fileloader' => $vendorDir . '/phpunit/phpunit/src/Util/Fileloader.php', - 'PHPUnit_Util_Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php', - 'PHPUnit_Util_Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php', - 'PHPUnit_Util_Getopt' => $vendorDir . '/phpunit/phpunit/src/Util/Getopt.php', - 'PHPUnit_Util_GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php', - 'PHPUnit_Util_InvalidArgumentHelper' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php', - 'PHPUnit_Util_Log_JSON' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JSON.php', - 'PHPUnit_Util_Log_JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php', - 'PHPUnit_Util_Log_TAP' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TAP.php', - 'PHPUnit_Util_PHP' => $vendorDir . '/phpunit/phpunit/src/Util/PHP.php', - 'PHPUnit_Util_PHP_Default' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Default.php', - 'PHPUnit_Util_PHP_Windows' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Windows.php', - 'PHPUnit_Util_Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php', - 'PHPUnit_Util_Regex' => $vendorDir . '/phpunit/phpunit/src/Util/Regex.php', - 'PHPUnit_Util_String' => $vendorDir . '/phpunit/phpunit/src/Util/String.php', - 'PHPUnit_Util_Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php', - 'PHPUnit_Util_TestDox_NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php', - 'PHPUnit_Util_TestDox_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php', - 'PHPUnit_Util_TestDox_ResultPrinter_HTML' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php', - 'PHPUnit_Util_TestDox_ResultPrinter_Text' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php', - 'PHPUnit_Util_TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Util/TestSuiteIterator.php', - 'PHPUnit_Util_Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php', - 'PHPUnit_Util_XML' => $vendorDir . '/phpunit/phpunit/src/Util/XML.php', - 'PHP_CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php', - 'PHP_CodeCoverage_Driver' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver.php', - 'PHP_CodeCoverage_Driver_HHVM' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php', - 'PHP_CodeCoverage_Driver_PHPDBG' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php', - 'PHP_CodeCoverage_Driver_Xdebug' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php', - 'PHP_CodeCoverage_Exception' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Exception.php', - 'PHP_CodeCoverage_Exception_UnintentionallyCoveredCode' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php', - 'PHP_CodeCoverage_Filter' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Filter.php', - 'PHP_CodeCoverage_Report_Clover' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php', - 'PHP_CodeCoverage_Report_Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php', - 'PHP_CodeCoverage_Report_Factory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php', - 'PHP_CodeCoverage_Report_HTML' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php', - 'PHP_CodeCoverage_Report_HTML_Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php', - 'PHP_CodeCoverage_Report_HTML_Renderer_Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php', - 'PHP_CodeCoverage_Report_HTML_Renderer_Directory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php', - 'PHP_CodeCoverage_Report_HTML_Renderer_File' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php', - 'PHP_CodeCoverage_Report_Node' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node.php', - 'PHP_CodeCoverage_Report_Node_Directory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Directory.php', - 'PHP_CodeCoverage_Report_Node_File' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/File.php', - 'PHP_CodeCoverage_Report_Node_Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Iterator.php', - 'PHP_CodeCoverage_Report_PHP' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/PHP.php', - 'PHP_CodeCoverage_Report_Text' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Text.php', - 'PHP_CodeCoverage_Report_XML' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML.php', - 'PHP_CodeCoverage_Report_XML_Directory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Directory.php', - 'PHP_CodeCoverage_Report_XML_File' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File.php', - 'PHP_CodeCoverage_Report_XML_File_Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Coverage.php', - 'PHP_CodeCoverage_Report_XML_File_Method' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Method.php', - 'PHP_CodeCoverage_Report_XML_File_Report' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Report.php', - 'PHP_CodeCoverage_Report_XML_File_Unit' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Unit.php', - 'PHP_CodeCoverage_Report_XML_Node' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Node.php', - 'PHP_CodeCoverage_Report_XML_Project' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Project.php', - 'PHP_CodeCoverage_Report_XML_Tests' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Tests.php', - 'PHP_CodeCoverage_Report_XML_Totals' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Totals.php', - 'PHP_CodeCoverage_Util' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Util.php', - 'PHP_CodeCoverage_Util_InvalidArgumentHelper' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Util/InvalidArgumentHelper.php', - 'PHP_Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php', - 'PHP_Token' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_TokenWithScope' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_TokenWithScopeAndVisibility' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ABSTRACT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AMPERSAND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AND_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ARRAY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ARRAY_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ASYNC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AWAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BACKTICK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BAD_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BOOLEAN_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BOOLEAN_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BOOL_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BREAK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CALLABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CARET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CASE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CATCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLASS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLASS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLASS_NAME_CONSTANT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLONE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLOSE_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLOSE_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLOSE_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLOSE_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COALESCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COMMA' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COMPILER_HALT_OFFSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CONCAT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CONST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CONSTANT_ENCAPSED_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CONTINUE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CURLY_OPEN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DEC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DEFAULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DIR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DIV' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DIV_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOC_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOLLAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOUBLE_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOUBLE_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOUBLE_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOUBLE_QUOTES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ELLIPSIS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ELSE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ELSEIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EMPTY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENCAPSED_AND_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDDECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDFOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDFOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDSWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDWHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_END_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENUM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EQUALS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EVAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EXCLAMATION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EXIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EXTENDS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FINAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FINALLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FUNC_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_GLOBAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_GOTO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_HALT_COMPILER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IMPLEMENTS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INCLUDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INCLUDE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INLINE_HTML' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INSTANCEOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INSTEADOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INTERFACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ISSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_GREATER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_NOT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_NOT_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_SMALLER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_Includes' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_JOIN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LAMBDA_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LAMBDA_CP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LAMBDA_OP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LINE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LIST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LOGICAL_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LOGICAL_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LOGICAL_XOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_METHOD_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MINUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MINUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MOD_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MUL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NAMESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NEW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NS_SEPARATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NUM_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OBJECT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ONUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_TAG_WITH_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PERCENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PIPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PLUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PLUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_POW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_POW_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PRINT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PRIVATE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PROTECTED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PUBLIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_QUESTION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_REQUIRE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_REQUIRE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_RETURN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SEMICOLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SHAPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SPACESHIP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_START_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_STATIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_STRING_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_STRING_VARNAME' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SUPER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_Stream' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream.php', - 'PHP_Token_Stream_CachingFactory' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php', - 'PHP_Token_THROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TILDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TRAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TRAIT_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TRY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TYPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TYPELIST_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TYPELIST_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_UNSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_UNSET_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_USE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_USE_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_VAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_VARIABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_WHERE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_WHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_ATTRIBUTE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_CATEGORY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_CATEGORY_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_CHILDREN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_REQUIRED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_TAG_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_TAG_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_TEXT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XOR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_YIELD' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_YIELD_FROM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', - 'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php', - 'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php', - 'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php', - 'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php', - 'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php', - 'SebastianBergmann\\Comparator\\DoubleComparator' => $vendorDir . '/sebastian/comparator/src/DoubleComparator.php', - 'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php', - 'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php', - 'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php', - 'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php', - 'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php', - 'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php', - 'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php', - 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php', - 'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php', - 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php', - 'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php', - 'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php', - 'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => $vendorDir . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php', - 'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php', - 'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php', - 'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php', - 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php', - 'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php', - 'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php', - 'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php', - 'SebastianBergmann\\GlobalState\\Blacklist' => $vendorDir . '/sebastian/global-state/src/Blacklist.php', - 'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php', - 'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/Exception.php', - 'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php', - 'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/RuntimeException.php', - 'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php', - 'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php', - 'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php', - 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php', - 'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php', - 'Text_Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php', -); diff --git a/application/modules/gitlist/vendor/composer/autoload_files.php b/application/modules/gitlist/vendor/composer/autoload_files.php deleted file mode 100644 index 315ab83..0000000 --- a/application/modules/gitlist/vendor/composer/autoload_files.php +++ /dev/null @@ -1,10 +0,0 @@ - $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', -); diff --git a/application/modules/gitlist/vendor/composer/autoload_namespaces.php b/application/modules/gitlist/vendor/composer/autoload_namespaces.php deleted file mode 100644 index 73b5090..0000000 --- a/application/modules/gitlist/vendor/composer/autoload_namespaces.php +++ /dev/null @@ -1,14 +0,0 @@ - array($vendorDir . '/phpdocumentor/reflection-docblock/src'), - 'Twig_' => array($vendorDir . '/twig/twig/lib'), - 'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src'), - 'Pimple' => array($vendorDir . '/pimple/pimple/lib'), - 'Gitter' => array($vendorDir . '/klaussilveira/gitter/lib'), -); diff --git a/application/modules/gitlist/vendor/composer/autoload_psr4.php b/application/modules/gitlist/vendor/composer/autoload_psr4.php deleted file mode 100644 index 3b72837..0000000 --- a/application/modules/gitlist/vendor/composer/autoload_psr4.php +++ /dev/null @@ -1,27 +0,0 @@ - array($vendorDir . '/twig/twig/src'), - 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), - 'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'), - 'Symfony\\Component\\Routing\\' => array($vendorDir . '/symfony/routing'), - 'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'), - 'Symfony\\Component\\HttpKernel\\' => array($vendorDir . '/symfony/http-kernel'), - 'Symfony\\Component\\HttpFoundation\\' => array($vendorDir . '/symfony/http-foundation'), - 'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'), - 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'), - 'Symfony\\Component\\DomCrawler\\' => array($vendorDir . '/symfony/dom-crawler'), - 'Symfony\\Component\\Debug\\' => array($vendorDir . '/symfony/debug'), - 'Symfony\\Component\\CssSelector\\' => array($vendorDir . '/symfony/css-selector'), - 'Symfony\\Component\\BrowserKit\\' => array($vendorDir . '/symfony/browser-kit'), - 'Symfony\\Bridge\\Twig\\' => array($vendorDir . '/symfony/twig-bridge'), - 'Silex\\' => array($vendorDir . '/silex/silex/src/Silex'), - 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), - 'GitList\\' => array($baseDir . '/src'), - 'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'), -); diff --git a/application/modules/gitlist/vendor/composer/autoload_real.php b/application/modules/gitlist/vendor/composer/autoload_real.php deleted file mode 100644 index beaf5e4..0000000 --- a/application/modules/gitlist/vendor/composer/autoload_real.php +++ /dev/null @@ -1,70 +0,0 @@ -= 50600 && !defined('HHVM_VERSION'); - if ($useStaticLoader) { - require_once __DIR__ . '/autoload_static.php'; - - call_user_func(\Composer\Autoload\ComposerStaticInitf745c517d30ee4778dfe192e71dd63a5::getInitializer($loader)); - } else { - $map = require __DIR__ . '/autoload_namespaces.php'; - foreach ($map as $namespace => $path) { - $loader->set($namespace, $path); - } - - $map = require __DIR__ . '/autoload_psr4.php'; - foreach ($map as $namespace => $path) { - $loader->setPsr4($namespace, $path); - } - - $classMap = require __DIR__ . '/autoload_classmap.php'; - if ($classMap) { - $loader->addClassMap($classMap); - } - } - - $loader->register(true); - - if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInitf745c517d30ee4778dfe192e71dd63a5::$files; - } else { - $includeFiles = require __DIR__ . '/autoload_files.php'; - } - foreach ($includeFiles as $fileIdentifier => $file) { - composerRequiref745c517d30ee4778dfe192e71dd63a5($fileIdentifier, $file); - } - - return $loader; - } -} - -function composerRequiref745c517d30ee4778dfe192e71dd63a5($fileIdentifier, $file) -{ - if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { - require $file; - - $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; - } -} diff --git a/application/modules/gitlist/vendor/composer/autoload_static.php b/application/modules/gitlist/vendor/composer/autoload_static.php deleted file mode 100644 index 527dd19..0000000 --- a/application/modules/gitlist/vendor/composer/autoload_static.php +++ /dev/null @@ -1,617 +0,0 @@ - __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', - ); - - public static $prefixLengthsPsr4 = array ( - 'T' => - array ( - 'Twig\\' => 5, - ), - 'S' => - array ( - 'Symfony\\Polyfill\\Mbstring\\' => 26, - 'Symfony\\Component\\Yaml\\' => 23, - 'Symfony\\Component\\Routing\\' => 26, - 'Symfony\\Component\\Process\\' => 26, - 'Symfony\\Component\\HttpKernel\\' => 29, - 'Symfony\\Component\\HttpFoundation\\' => 33, - 'Symfony\\Component\\Filesystem\\' => 29, - 'Symfony\\Component\\EventDispatcher\\' => 34, - 'Symfony\\Component\\DomCrawler\\' => 29, - 'Symfony\\Component\\Debug\\' => 24, - 'Symfony\\Component\\CssSelector\\' => 30, - 'Symfony\\Component\\BrowserKit\\' => 29, - 'Symfony\\Bridge\\Twig\\' => 20, - 'Silex\\' => 6, - ), - 'P' => - array ( - 'Psr\\Log\\' => 8, - ), - 'G' => - array ( - 'GitList\\' => 8, - ), - 'D' => - array ( - 'Doctrine\\Instantiator\\' => 22, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'Twig\\' => - array ( - 0 => __DIR__ . '/..' . '/twig/twig/src', - ), - 'Symfony\\Polyfill\\Mbstring\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', - ), - 'Symfony\\Component\\Yaml\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/yaml', - ), - 'Symfony\\Component\\Routing\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/routing', - ), - 'Symfony\\Component\\Process\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/process', - ), - 'Symfony\\Component\\HttpKernel\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/http-kernel', - ), - 'Symfony\\Component\\HttpFoundation\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/http-foundation', - ), - 'Symfony\\Component\\Filesystem\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/filesystem', - ), - 'Symfony\\Component\\EventDispatcher\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/event-dispatcher', - ), - 'Symfony\\Component\\DomCrawler\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/dom-crawler', - ), - 'Symfony\\Component\\Debug\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/debug', - ), - 'Symfony\\Component\\CssSelector\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/css-selector', - ), - 'Symfony\\Component\\BrowserKit\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/browser-kit', - ), - 'Symfony\\Bridge\\Twig\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/twig-bridge', - ), - 'Silex\\' => - array ( - 0 => __DIR__ . '/..' . '/silex/silex/src/Silex', - ), - 'Psr\\Log\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/log/Psr/Log', - ), - 'GitList\\' => - array ( - 0 => __DIR__ . '/../..' . '/src', - ), - 'Doctrine\\Instantiator\\' => - array ( - 0 => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator', - ), - ); - - public static $prefixesPsr0 = array ( - 'p' => - array ( - 'phpDocumentor' => - array ( - 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src', - ), - ), - 'T' => - array ( - 'Twig_' => - array ( - 0 => __DIR__ . '/..' . '/twig/twig/lib', - ), - ), - 'P' => - array ( - 'Prophecy\\' => - array ( - 0 => __DIR__ . '/..' . '/phpspec/prophecy/src', - ), - 'Pimple' => - array ( - 0 => __DIR__ . '/..' . '/pimple/pimple/lib', - ), - ), - 'G' => - array ( - 'Gitter' => - array ( - 0 => __DIR__ . '/..' . '/klaussilveira/gitter/lib', - ), - ), - ); - - public static $classMap = array ( - 'File_Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php', - 'File_Iterator_Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php', - 'File_Iterator_Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php', - 'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/Assert.php', - 'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/AssertionFailedError.php', - 'PHPUnit\\Framework\\BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/BaseTestListener.php', - 'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/Test.php', - 'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php', - 'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestListener.php', - 'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestSuite.php', - 'PHPUnit_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php', - 'PHPUnit_Extensions_GroupTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php', - 'PHPUnit_Extensions_PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestCase.php', - 'PHPUnit_Extensions_PhptTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php', - 'PHPUnit_Extensions_RepeatedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/RepeatedTest.php', - 'PHPUnit_Extensions_TestDecorator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TestDecorator.php', - 'PHPUnit_Extensions_TicketListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TicketListener.php', - 'PHPUnit_Framework_Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php', - 'PHPUnit_Framework_AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/AssertionFailedError.php', - 'PHPUnit_Framework_BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/BaseTestListener.php', - 'PHPUnit_Framework_CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CodeCoverageException.php', - 'PHPUnit_Framework_Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint.php', - 'PHPUnit_Framework_Constraint_And' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/And.php', - 'PHPUnit_Framework_Constraint_ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php', - 'PHPUnit_Framework_Constraint_ArraySubset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php', - 'PHPUnit_Framework_Constraint_Attribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php', - 'PHPUnit_Framework_Constraint_Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php', - 'PHPUnit_Framework_Constraint_ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php', - 'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php', - 'PHPUnit_Framework_Constraint_Composite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Composite.php', - 'PHPUnit_Framework_Constraint_Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Count.php', - 'PHPUnit_Framework_Constraint_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception.php', - 'PHPUnit_Framework_Constraint_ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php', - 'PHPUnit_Framework_Constraint_ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php', - 'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php', - 'PHPUnit_Framework_Constraint_FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php', - 'PHPUnit_Framework_Constraint_GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php', - 'PHPUnit_Framework_Constraint_IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php', - 'PHPUnit_Framework_Constraint_IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php', - 'PHPUnit_Framework_Constraint_IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php', - 'PHPUnit_Framework_Constraint_IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php', - 'PHPUnit_Framework_Constraint_IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php', - 'PHPUnit_Framework_Constraint_IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php', - 'PHPUnit_Framework_Constraint_IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php', - 'PHPUnit_Framework_Constraint_IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php', - 'PHPUnit_Framework_Constraint_IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php', - 'PHPUnit_Framework_Constraint_IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsType.php', - 'PHPUnit_Framework_Constraint_JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php', - 'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php', - 'PHPUnit_Framework_Constraint_LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php', - 'PHPUnit_Framework_Constraint_Not' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Not.php', - 'PHPUnit_Framework_Constraint_ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php', - 'PHPUnit_Framework_Constraint_Or' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Or.php', - 'PHPUnit_Framework_Constraint_PCREMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php', - 'PHPUnit_Framework_Constraint_SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php', - 'PHPUnit_Framework_Constraint_StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php', - 'PHPUnit_Framework_Constraint_StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php', - 'PHPUnit_Framework_Constraint_StringMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php', - 'PHPUnit_Framework_Constraint_StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php', - 'PHPUnit_Framework_Constraint_TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php', - 'PHPUnit_Framework_Constraint_TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php', - 'PHPUnit_Framework_Constraint_Xor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Xor.php', - 'PHPUnit_Framework_Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error.php', - 'PHPUnit_Framework_Error_Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php', - 'PHPUnit_Framework_Error_Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php', - 'PHPUnit_Framework_Error_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php', - 'PHPUnit_Framework_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception.php', - 'PHPUnit_Framework_ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php', - 'PHPUnit_Framework_ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php', - 'PHPUnit_Framework_IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php', - 'PHPUnit_Framework_IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php', - 'PHPUnit_Framework_IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestError.php', - 'PHPUnit_Framework_InvalidCoversTargetError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetError.php', - 'PHPUnit_Framework_InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php', - 'PHPUnit_Framework_MockObject_BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php', - 'PHPUnit_Framework_MockObject_Builder_Identity' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php', - 'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php', - 'PHPUnit_Framework_MockObject_Builder_Match' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php', - 'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php', - 'PHPUnit_Framework_MockObject_Builder_Namespace' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php', - 'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php', - 'PHPUnit_Framework_MockObject_Builder_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php', - 'PHPUnit_Framework_MockObject_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php', - 'PHPUnit_Framework_MockObject_Generator' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php', - 'PHPUnit_Framework_MockObject_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php', - 'PHPUnit_Framework_MockObject_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php', - 'PHPUnit_Framework_MockObject_Invocation_Object' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php', - 'PHPUnit_Framework_MockObject_Invocation_Static' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php', - 'PHPUnit_Framework_MockObject_Invokable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php', - 'PHPUnit_Framework_MockObject_Matcher' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php', - 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php', - 'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php', - 'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php', - 'PHPUnit_Framework_MockObject_Matcher_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php', - 'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php', - 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php', - 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php', - 'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php', - 'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php', - 'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php', - 'PHPUnit_Framework_MockObject_Matcher_MethodName' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php', - 'PHPUnit_Framework_MockObject_Matcher_Parameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php', - 'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php', - 'PHPUnit_Framework_MockObject_MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php', - 'PHPUnit_Framework_MockObject_MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php', - 'PHPUnit_Framework_MockObject_RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php', - 'PHPUnit_Framework_MockObject_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php', - 'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php', - 'PHPUnit_Framework_MockObject_Stub_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php', - 'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php', - 'PHPUnit_Framework_MockObject_Stub_Return' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php', - 'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php', - 'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php', - 'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php', - 'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php', - 'PHPUnit_Framework_MockObject_Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php', - 'PHPUnit_Framework_OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/OutputError.php', - 'PHPUnit_Framework_RiskyTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTest.php', - 'PHPUnit_Framework_RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTestError.php', - 'PHPUnit_Framework_SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php', - 'PHPUnit_Framework_SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php', - 'PHPUnit_Framework_SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php', - 'PHPUnit_Framework_SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestError.php', - 'PHPUnit_Framework_SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php', - 'PHPUnit_Framework_SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SyntheticError.php', - 'PHPUnit_Framework_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php', - 'PHPUnit_Framework_TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php', - 'PHPUnit_Framework_TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php', - 'PHPUnit_Framework_TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php', - 'PHPUnit_Framework_TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php', - 'PHPUnit_Framework_TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php', - 'PHPUnit_Framework_TestSuite_DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php', - 'PHPUnit_Framework_UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php', - 'PHPUnit_Framework_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Warning.php', - 'PHPUnit_Runner_BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php', - 'PHPUnit_Runner_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php', - 'PHPUnit_Runner_Filter_Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php', - 'PHPUnit_Runner_Filter_GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group.php', - 'PHPUnit_Runner_Filter_Group_Exclude' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php', - 'PHPUnit_Runner_Filter_Group_Include' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php', - 'PHPUnit_Runner_Filter_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Test.php', - 'PHPUnit_Runner_StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php', - 'PHPUnit_Runner_TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', - 'PHPUnit_Runner_Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php', - 'PHPUnit_TextUI_Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php', - 'PHPUnit_TextUI_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php', - 'PHPUnit_TextUI_TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php', - 'PHPUnit_Util_Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php', - 'PHPUnit_Util_Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Configuration.php', - 'PHPUnit_Util_ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php', - 'PHPUnit_Util_Fileloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Fileloader.php', - 'PHPUnit_Util_Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php', - 'PHPUnit_Util_Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php', - 'PHPUnit_Util_Getopt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Getopt.php', - 'PHPUnit_Util_GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php', - 'PHPUnit_Util_InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php', - 'PHPUnit_Util_Log_JSON' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JSON.php', - 'PHPUnit_Util_Log_JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php', - 'PHPUnit_Util_Log_TAP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TAP.php', - 'PHPUnit_Util_PHP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP.php', - 'PHPUnit_Util_PHP_Default' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Default.php', - 'PHPUnit_Util_PHP_Windows' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Windows.php', - 'PHPUnit_Util_Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php', - 'PHPUnit_Util_Regex' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Regex.php', - 'PHPUnit_Util_String' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/String.php', - 'PHPUnit_Util_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php', - 'PHPUnit_Util_TestDox_NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php', - 'PHPUnit_Util_TestDox_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php', - 'PHPUnit_Util_TestDox_ResultPrinter_HTML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php', - 'PHPUnit_Util_TestDox_ResultPrinter_Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php', - 'PHPUnit_Util_TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestSuiteIterator.php', - 'PHPUnit_Util_Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php', - 'PHPUnit_Util_XML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XML.php', - 'PHP_CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php', - 'PHP_CodeCoverage_Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Driver.php', - 'PHP_CodeCoverage_Driver_HHVM' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php', - 'PHP_CodeCoverage_Driver_PHPDBG' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php', - 'PHP_CodeCoverage_Driver_Xdebug' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php', - 'PHP_CodeCoverage_Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Exception.php', - 'PHP_CodeCoverage_Exception_UnintentionallyCoveredCode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php', - 'PHP_CodeCoverage_Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Filter.php', - 'PHP_CodeCoverage_Report_Clover' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php', - 'PHP_CodeCoverage_Report_Crap4j' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php', - 'PHP_CodeCoverage_Report_Factory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php', - 'PHP_CodeCoverage_Report_HTML' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php', - 'PHP_CodeCoverage_Report_HTML_Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php', - 'PHP_CodeCoverage_Report_HTML_Renderer_Dashboard' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php', - 'PHP_CodeCoverage_Report_HTML_Renderer_Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php', - 'PHP_CodeCoverage_Report_HTML_Renderer_File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php', - 'PHP_CodeCoverage_Report_Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node.php', - 'PHP_CodeCoverage_Report_Node_Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Directory.php', - 'PHP_CodeCoverage_Report_Node_File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/File.php', - 'PHP_CodeCoverage_Report_Node_Iterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Iterator.php', - 'PHP_CodeCoverage_Report_PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/PHP.php', - 'PHP_CodeCoverage_Report_Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Text.php', - 'PHP_CodeCoverage_Report_XML' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML.php', - 'PHP_CodeCoverage_Report_XML_Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Directory.php', - 'PHP_CodeCoverage_Report_XML_File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File.php', - 'PHP_CodeCoverage_Report_XML_File_Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Coverage.php', - 'PHP_CodeCoverage_Report_XML_File_Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Method.php', - 'PHP_CodeCoverage_Report_XML_File_Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Report.php', - 'PHP_CodeCoverage_Report_XML_File_Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Unit.php', - 'PHP_CodeCoverage_Report_XML_Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Node.php', - 'PHP_CodeCoverage_Report_XML_Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Project.php', - 'PHP_CodeCoverage_Report_XML_Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Tests.php', - 'PHP_CodeCoverage_Report_XML_Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Totals.php', - 'PHP_CodeCoverage_Util' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Util.php', - 'PHP_CodeCoverage_Util_InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Util/InvalidArgumentHelper.php', - 'PHP_Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php', - 'PHP_Token' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_TokenWithScope' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_TokenWithScopeAndVisibility' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ABSTRACT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AMPERSAND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AND_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ARRAY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ARRAY_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ASYNC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_AWAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BACKTICK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BAD_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BOOLEAN_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BOOLEAN_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BOOL_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_BREAK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CALLABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CARET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CASE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CATCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLASS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLASS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLASS_NAME_CONSTANT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLONE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLOSE_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLOSE_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLOSE_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CLOSE_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COALESCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COMMA' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_COMPILER_HALT_OFFSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CONCAT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CONST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CONSTANT_ENCAPSED_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CONTINUE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_CURLY_OPEN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DEC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DEFAULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DIR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DIV' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DIV_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOC_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOLLAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOUBLE_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOUBLE_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOUBLE_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_DOUBLE_QUOTES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ELLIPSIS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ELSE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ELSEIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EMPTY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENCAPSED_AND_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDDECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDFOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDFOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDSWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENDWHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_END_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ENUM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EQUALS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EVAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EXCLAMATION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EXIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_EXTENDS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FINAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FINALLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_FUNC_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_GLOBAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_GOTO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_HALT_COMPILER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IMPLEMENTS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INCLUDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INCLUDE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INLINE_HTML' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INSTANCEOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INSTEADOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INTERFACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_INT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ISSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_GREATER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_NOT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_NOT_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_IS_SMALLER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_Includes' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_JOIN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LAMBDA_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LAMBDA_CP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LAMBDA_OP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LINE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LIST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LOGICAL_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LOGICAL_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LOGICAL_XOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_METHOD_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MINUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MINUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MOD_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_MUL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NAMESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NEW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NS_SEPARATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_NUM_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OBJECT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_ONUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OPEN_TAG_WITH_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PERCENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PIPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PLUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PLUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_POW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_POW_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PRINT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PRIVATE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PROTECTED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_PUBLIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_QUESTION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_REQUIRE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_REQUIRE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_RETURN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SEMICOLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SHAPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SPACESHIP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_START_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_STATIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_STRING_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_STRING_VARNAME' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SUPER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_SWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_Stream' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream.php', - 'PHP_Token_Stream_CachingFactory' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php', - 'PHP_Token_THROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TILDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TRAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TRAIT_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TRY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TYPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TYPELIST_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_TYPELIST_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_UNSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_UNSET_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_USE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_USE_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_VAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_VARIABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_WHERE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_WHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_ATTRIBUTE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_CATEGORY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_CATEGORY_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_CHILDREN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_REQUIRED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_TAG_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_TAG_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XHP_TEXT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_XOR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_YIELD' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'PHP_Token_YIELD_FROM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', - 'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php', - 'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php', - 'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php', - 'SebastianBergmann\\Comparator\\DOMNodeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DOMNodeComparator.php', - 'SebastianBergmann\\Comparator\\DateTimeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DateTimeComparator.php', - 'SebastianBergmann\\Comparator\\DoubleComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DoubleComparator.php', - 'SebastianBergmann\\Comparator\\ExceptionComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ExceptionComparator.php', - 'SebastianBergmann\\Comparator\\Factory' => __DIR__ . '/..' . '/sebastian/comparator/src/Factory.php', - 'SebastianBergmann\\Comparator\\MockObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/MockObjectComparator.php', - 'SebastianBergmann\\Comparator\\NumericComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumericComparator.php', - 'SebastianBergmann\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ObjectComparator.php', - 'SebastianBergmann\\Comparator\\ResourceComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ResourceComparator.php', - 'SebastianBergmann\\Comparator\\ScalarComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ScalarComparator.php', - 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/SplObjectStorageComparator.php', - 'SebastianBergmann\\Comparator\\TypeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/TypeComparator.php', - 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php', - 'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php', - 'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php', - 'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php', - 'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php', - 'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php', - 'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php', - 'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php', - 'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php', - 'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php', - 'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php', - 'SebastianBergmann\\GlobalState\\Blacklist' => __DIR__ . '/..' . '/sebastian/global-state/src/Blacklist.php', - 'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php', - 'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/Exception.php', - 'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php', - 'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/RuntimeException.php', - 'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php', - 'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php', - 'SebastianBergmann\\RecursionContext\\Exception' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Exception.php', - 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/recursion-context/src/InvalidArgumentException.php', - 'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php', - 'Text_Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitf745c517d30ee4778dfe192e71dd63a5::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitf745c517d30ee4778dfe192e71dd63a5::$prefixDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInitf745c517d30ee4778dfe192e71dd63a5::$prefixesPsr0; - $loader->classMap = ComposerStaticInitf745c517d30ee4778dfe192e71dd63a5::$classMap; - - }, null, ClassLoader::class); - } -} diff --git a/application/modules/gitlist/vendor/composer/installed.json b/application/modules/gitlist/vendor/composer/installed.json deleted file mode 100644 index 2042435..0000000 --- a/application/modules/gitlist/vendor/composer/installed.json +++ /dev/null @@ -1,2067 +0,0 @@ -[ - { - "name": "symfony/process", - "version": "v2.8.39", - "version_normalized": "2.8.39.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "ee2c91470ff262b1a00aec27875d38594aa87629" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/ee2c91470ff262b1a00aec27875d38594aa87629", - "reference": "ee2c91470ff262b1a00aec27875d38594aa87629", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "time": "2018-04-03 05:20:27", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com" - }, - { - "name": "sebastian/recursion-context", - "version": "1.0.5", - "version_normalized": "1.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "time": "2016-10-03 07:41:43", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "source", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context" - }, - { - "name": "sebastian/exporter", - "version": "1.2.2", - "version_normalized": "1.2.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~1.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" - }, - "time": "2016-06-17 09:04:28", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "installation-source": "source", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ] - }, - { - "name": "sebastian/diff", - "version": "1.4.3", - "version_normalized": "1.4.3.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "time": "2017-05-22 07:24:03", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "installation-source": "source", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ] - }, - { - "name": "sebastian/comparator", - "version": "1.2.4", - "version_normalized": "1.2.4.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "time": "2017-01-29 09:50:25", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "installation-source": "source", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ] - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "2.0.5", - "version_normalized": "2.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e6a969a640b00d8daa3c66518b0405fb41ae0c4b", - "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" - }, - "time": "2016-01-25 08:17:30", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-0": { - "phpDocumentor": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" - } - ] - }, - { - "name": "doctrine/instantiator", - "version": "1.0.5", - "version_normalized": "1.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", - "shasum": "" - }, - "require": { - "php": ">=5.3,<8.0-DEV" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" - }, - "time": "2015-06-14 21:17:01", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", - "keywords": [ - "constructor", - "instantiate" - ] - }, - { - "name": "klaussilveira/gitter", - "version": "0.4", - "version_normalized": "0.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/klaussilveira/gitter.git", - "reference": "649f8423323c844bf7e516dec2e39711206b2a02" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/klaussilveira/gitter/zipball/649f8423323c844bf7e516dec2e39711206b2a02", - "reference": "649f8423323c844bf7e516dec2e39711206b2a02", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "1.0.*", - "php": ">=5.3", - "phpdocumentor/reflection-docblock": "2.0.*", - "sebastian/comparator": "1.2.*", - "sebastian/recursion-context": "1.0.*", - "symfony/process": "2.8.*" - }, - "require-dev": { - "mockery/mockery": "0.9.1", - "phpunit/phpunit": "~4.8", - "symfony/filesystem": "2.8.*" - }, - "time": "2018-06-01 03:23:15", - "type": "library", - "installation-source": "source", - "autoload": { - "psr-0": { - "Gitter": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Klaus Silveira", - "email": "klaussilveira@php.net", - "homepage": "http://www.klaussilveira.com/", - "role": "Developer" - } - ], - "description": "Gitter allows you to interact in an object oriented manner with Git repositories.", - "homepage": "https://github.com/klaussilveira/gitter", - "keywords": [ - "git", - "vcs" - ] - }, - { - "name": "symfony/routing", - "version": "v3.0.9", - "version_normalized": "3.0.9.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "9038984bd9c05ab07280121e9e10f61a7231457b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/9038984bd9c05ab07280121e9e10f61a7231457b", - "reference": "9038984bd9c05ab07280121e9e10f61a7231457b", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "conflict": { - "symfony/config": "<2.8" - }, - "require-dev": { - "doctrine/annotations": "~1.0", - "doctrine/common": "~2.2", - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/http-foundation": "~2.8|~3.0", - "symfony/yaml": "~2.8|~3.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/dependency-injection": "For loading routes from a service", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "time": "2016-06-29 05:40:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Routing Component", - "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ] - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.8.0", - "version_normalized": "1.8.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "3296adf6a6454a050679cde90f95350ad604b171" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171", - "reference": "3296adf6a6454a050679cde90f95350ad604b171", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "time": "2018-04-26 10:06:28", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ] - }, - { - "name": "symfony/http-foundation", - "version": "v3.0.9", - "version_normalized": "3.0.9.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "49ba00f8ede742169cb6b70abe33243f4d673f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/49ba00f8ede742169cb6b70abe33243f4d673f82", - "reference": "49ba00f8ede742169cb6b70abe33243f4d673f82", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "symfony/expression-language": "~2.8|~3.0" - }, - "time": "2016-07-17 13:54:30", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpFoundation Component", - "homepage": "https://symfony.com" - }, - { - "name": "symfony/event-dispatcher", - "version": "v3.0.9", - "version_normalized": "3.0.9.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "54da3ff63dec3c9c0e32ec3f95a7d94ef64baa00" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/54da3ff63dec3c9c0e32ec3f95a7d94ef64baa00", - "reference": "54da3ff63dec3c9c0e32ec3f95a7d94ef64baa00", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/dependency-injection": "~2.8|~3.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/stopwatch": "~2.8|~3.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "time": "2016-07-19 10:44:15", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com" - }, - { - "name": "psr/log", - "version": "1.0.2", - "version_normalized": "1.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2016-10-10 12:19:37", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ] - }, - { - "name": "symfony/debug", - "version": "v2.8.39", - "version_normalized": "2.8.39.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "4486d2be5e068b51fece4c8551c14e709f573c8d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/4486d2be5e068b51fece4c8551c14e709f573c8d", - "reference": "4486d2be5e068b51fece4c8551c14e709f573c8d", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" - }, - "require-dev": { - "symfony/class-loader": "~2.2|~3.0.0", - "symfony/http-kernel": "~2.3.24|~2.5.9|^2.6.2|~3.0.0" - }, - "time": "2018-04-03 05:20:27", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Debug Component", - "homepage": "https://symfony.com" - }, - { - "name": "symfony/http-kernel", - "version": "v2.8.12", - "version_normalized": "2.8.12.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "0e39ed020c6a4bfb888974414fbfe2779637a487" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/0e39ed020c6a4bfb888974414fbfe2779637a487", - "reference": "0e39ed020c6a4bfb888974414fbfe2779637a487", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "psr/log": "~1.0", - "symfony/debug": "~2.6,>=2.6.2", - "symfony/event-dispatcher": "~2.6,>=2.6.7|~3.0.0", - "symfony/http-foundation": "~2.7.15|~2.8.8|~3.0.8" - }, - "conflict": { - "symfony/config": "<2.7" - }, - "require-dev": { - "symfony/browser-kit": "~2.3|~3.0.0", - "symfony/class-loader": "~2.1|~3.0.0", - "symfony/config": "~2.8", - "symfony/console": "~2.3|~3.0.0", - "symfony/css-selector": "~2.0,>=2.0.5|~3.0.0", - "symfony/dependency-injection": "~2.8|~3.0.0", - "symfony/dom-crawler": "~2.0,>=2.0.5|~3.0.0", - "symfony/expression-language": "~2.4|~3.0.0", - "symfony/finder": "~2.0,>=2.0.5|~3.0.0", - "symfony/process": "~2.0,>=2.0.5|~3.0.0", - "symfony/routing": "~2.8|~3.0.0", - "symfony/stopwatch": "~2.3|~3.0.0", - "symfony/templating": "~2.2|~3.0.0", - "symfony/translation": "~2.0,>=2.0.5|~3.0.0", - "symfony/var-dumper": "~2.6|~3.0.0" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/class-loader": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/finder": "", - "symfony/var-dumper": "" - }, - "time": "2016-10-03 18:44:05", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpKernel Component", - "homepage": "https://symfony.com" - }, - { - "name": "pimple/pimple", - "version": "v1.1.1", - "version_normalized": "1.1.1.0", - "source": { - "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d", - "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2013-11-22 08:30:29", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-0": { - "Pimple": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Pimple is a simple Dependency Injection Container for PHP 5.3", - "homepage": "http://pimple.sensiolabs.org", - "keywords": [ - "container", - "dependency injection" - ] - }, - { - "name": "silex/silex", - "version": "v1.3.6", - "version_normalized": "1.3.6.0", - "source": { - "type": "git", - "url": "https://github.com/silexphp/Silex.git", - "reference": "ff8aa6bc2e066e14b07e0c63e9bd9dd1458af136" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/silexphp/Silex/zipball/ff8aa6bc2e066e14b07e0c63e9bd9dd1458af136", - "reference": "ff8aa6bc2e066e14b07e0c63e9bd9dd1458af136", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "pimple/pimple": "~1.0", - "symfony/event-dispatcher": "~2.3|3.0.*", - "symfony/http-foundation": "~2.3|3.0.*", - "symfony/http-kernel": "~2.3|3.0.*", - "symfony/routing": "~2.3|3.0.*" - }, - "require-dev": { - "doctrine/dbal": "~2.2", - "monolog/monolog": "^1.4.1", - "swiftmailer/swiftmailer": "~5", - "symfony/browser-kit": "~2.3|3.0.*", - "symfony/config": "~2.3|3.0.*", - "symfony/css-selector": "~2.3|3.0.*", - "symfony/debug": "~2.3|3.0.*", - "symfony/dom-crawler": "~2.3|3.0.*", - "symfony/finder": "~2.3|3.0.*", - "symfony/form": "~2.3|3.0.*", - "symfony/intl": "~2.3|3.0.*", - "symfony/monolog-bridge": "~2.3|3.0.*", - "symfony/options-resolver": "~2.3|3.0.*", - "symfony/phpunit-bridge": "~2.7", - "symfony/process": "~2.3|3.0.*", - "symfony/security": "~2.3|3.0.*", - "symfony/serializer": "~2.3|3.0.*", - "symfony/translation": "~2.3|3.0.*", - "symfony/twig-bridge": "~2.3|3.0.*", - "symfony/validator": "~2.3|3.0.*", - "twig/twig": "~1.28|~2.0" - }, - "time": "2017-04-30 16:26:54", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-4": { - "Silex\\": "src/Silex" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - } - ], - "description": "The PHP micro-framework based on the Symfony Components", - "homepage": "http://silex.sensiolabs.org", - "keywords": [ - "microframework" - ] - }, - { - "name": "symfony/filesystem", - "version": "v2.8.39", - "version_normalized": "2.8.39.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "125403a59e4cb4e3ebf46d0162fabcde613d2b97" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/125403a59e4cb4e3ebf46d0162fabcde613d2b97", - "reference": "125403a59e4cb4e3ebf46d0162fabcde613d2b97", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "time": "2018-02-19 16:23:47", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Filesystem Component", - "homepage": "https://symfony.com" - }, - { - "name": "twig/twig", - "version": "v1.35.3", - "version_normalized": "1.35.3.0", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "b48680b6eb7d16b5025b9bfc4108d86f6b8af86f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/b48680b6eb7d16b5025b9bfc4108d86f6b8af86f", - "reference": "b48680b6eb7d16b5025b9bfc4108d86f6b8af86f", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "psr/container": "^1.0", - "symfony/debug": "^2.7", - "symfony/phpunit-bridge": "^3.3" - }, - "time": "2018-03-20 04:25:58", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.35-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-0": { - "Twig_": "lib/" - }, - "psr-4": { - "Twig\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" - }, - { - "name": "Twig Team", - "homepage": "http://twig.sensiolabs.org/contributors", - "role": "Contributors" - } - ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "http://twig.sensiolabs.org", - "keywords": [ - "templating" - ] - }, - { - "name": "symfony/twig-bridge", - "version": "v2.8.39", - "version_normalized": "2.8.39.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/twig-bridge.git", - "reference": "83c45099a7f108416e714a92c06604e5e1e2f76d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/83c45099a7f108416e714a92c06604e5e1e2f76d", - "reference": "83c45099a7f108416e714a92c06604e5e1e2f76d", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "twig/twig": "~1.34|~2.4" - }, - "conflict": { - "symfony/form": "<2.8.23" - }, - "require-dev": { - "symfony/asset": "~2.7|~3.0.0", - "symfony/console": "~2.8|~3.0.0", - "symfony/expression-language": "~2.4|~3.0.0", - "symfony/finder": "~2.3|~3.0.0", - "symfony/form": "^2.8.23", - "symfony/http-foundation": "^2.8.29|~3.0.0", - "symfony/http-kernel": "~2.8|~3.0.0", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/routing": "~2.2|~3.0.0", - "symfony/security": "~2.6|~3.0.0", - "symfony/security-acl": "~2.6|~3.0.0", - "symfony/stopwatch": "~2.2|~3.0.0", - "symfony/templating": "~2.1|~3.0.0", - "symfony/translation": "~2.7|~3.0.0", - "symfony/var-dumper": "~2.7.16|~2.8.9|~3.0.9", - "symfony/yaml": "^2.0.5|~3.0.0" - }, - "suggest": { - "symfony/asset": "For using the AssetExtension", - "symfony/expression-language": "For using the ExpressionExtension", - "symfony/finder": "", - "symfony/form": "For using the FormExtension", - "symfony/http-kernel": "For using the HttpKernelExtension", - "symfony/routing": "For using the RoutingExtension", - "symfony/security": "For using the SecurityExtension", - "symfony/stopwatch": "For using the StopwatchExtension", - "symfony/templating": "For using the TwigEngine", - "symfony/translation": "For using the TranslationExtension", - "symfony/var-dumper": "For using the DumpExtension", - "symfony/yaml": "For using the YamlExtension" - }, - "time": "2018-04-20 06:15:58", - "type": "symfony-bridge", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-4": { - "Symfony\\Bridge\\Twig\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Twig Bridge", - "homepage": "https://symfony.com" - }, - { - "name": "phpunit/php-token-stream", - "version": "1.4.12", - "version_normalized": "1.4.12.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "time": "2017-12-04 08:55:13", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "installation-source": "source", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ] - }, - { - "name": "symfony/yaml", - "version": "v3.4.9", - "version_normalized": "3.4.9.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "033cfa61ef06ee0847e056e530201842b6e926c3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/033cfa61ef06ee0847e056e530201842b6e926c3", - "reference": "033cfa61ef06ee0847e056e530201842b6e926c3", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "conflict": { - "symfony/console": "<3.4" - }, - "require-dev": { - "symfony/console": "~3.4|~4.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "time": "2018-04-08 08:21:29", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com" - }, - { - "name": "sebastian/version", - "version": "1.0.6", - "version_normalized": "1.0.6.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", - "shasum": "" - }, - "time": "2015-06-21 13:59:46", - "type": "library", - "installation-source": "source", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version" - }, - { - "name": "sebastian/global-state", - "version": "1.1.1", - "version_normalized": "1.1.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "suggest": { - "ext-uopz": "*" - }, - "time": "2015-10-12 03:26:01", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "installation-source": "source", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ] - }, - { - "name": "sebastian/environment", - "version": "1.3.8", - "version_normalized": "1.3.8.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.0" - }, - "time": "2016-08-18 05:49:44", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "installation-source": "source", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ] - }, - { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "version_normalized": "1.2.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2015-06-21 13:50:34", - "type": "library", - "installation-source": "source", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ] - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "2.3.8", - "version_normalized": "2.3.8.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", - "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": ">=5.3.3", - "phpunit/php-text-template": "~1.2", - "sebastian/exporter": "~1.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "suggest": { - "ext-soap": "*" - }, - "time": "2015-10-02 06:51:40", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, - "installation-source": "source", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ] - }, - { - "name": "phpunit/php-timer", - "version": "1.0.9", - "version_normalized": "1.0.9.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "time": "2017-02-26 11:10:40", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "installation-source": "source", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ] - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.4.5", - "version_normalized": "1.4.5.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2017-11-27 13:52:08", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "installation-source": "source", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ] - }, - { - "name": "phpunit/php-code-coverage", - "version": "2.2.4", - "version_normalized": "2.2.4.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", - "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": "~1.3", - "phpunit/php-text-template": "~1.2", - "phpunit/php-token-stream": "~1.3", - "sebastian/environment": "^1.3.2", - "sebastian/version": "~1.0" - }, - "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~4" - }, - "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.2.1", - "ext-xmlwriter": "*" - }, - "time": "2015-10-06 15:47:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "installation-source": "source", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ] - }, - { - "name": "phpspec/prophecy", - "version": "1.7.6", - "version_normalized": "1.7.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712", - "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" - }, - "time": "2018-04-18 13:57:24", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7.x-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-0": { - "Prophecy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ] - }, - { - "name": "phpunit/phpunit", - "version": "4.8.36", - "version_normalized": "4.8.36.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "46023de9a91eec7dfb06cc56cb4e260017298517" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517", - "reference": "46023de9a91eec7dfb06cc56cb4e260017298517", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpspec/prophecy": "^1.3.1", - "phpunit/php-code-coverage": "~2.1", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "~2.3", - "sebastian/comparator": "~1.2.2", - "sebastian/diff": "~1.2", - "sebastian/environment": "~1.3", - "sebastian/exporter": "~1.2", - "sebastian/global-state": "~1.0", - "sebastian/version": "~1.0", - "symfony/yaml": "~2.1|~3.0" - }, - "suggest": { - "phpunit/php-invoker": "~1.1" - }, - "time": "2017-06-21 08:07:12", - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.8.x-dev" - } - }, - "installation-source": "source", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ] - }, - { - "name": "symfony/dom-crawler", - "version": "v3.0.9", - "version_normalized": "3.0.9.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "dff8fecf1f56990d88058e3a1885c2a5f1b8e970" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/dff8fecf1f56990d88058e3a1885c2a5f1b8e970", - "reference": "dff8fecf1f56990d88058e3a1885c2a5f1b8e970", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/polyfill-mbstring": "~1.0" - }, - "require-dev": { - "symfony/css-selector": "~2.8|~3.0" - }, - "suggest": { - "symfony/css-selector": "" - }, - "time": "2016-07-30 07:22:48", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony DomCrawler Component", - "homepage": "https://symfony.com" - }, - { - "name": "symfony/browser-kit", - "version": "v2.8.39", - "version_normalized": "2.8.39.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/browser-kit.git", - "reference": "11ccc2ebefba78c1bb0a2d2d2dd4b4e09a5fba02" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/11ccc2ebefba78c1bb0a2d2d2dd4b4e09a5fba02", - "reference": "11ccc2ebefba78c1bb0a2d2d2dd4b4e09a5fba02", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/dom-crawler": "~2.1|~3.0.0" - }, - "require-dev": { - "symfony/css-selector": "^2.0.5|~3.0.0", - "symfony/process": "~2.3.34|^2.7.6|~3.0.0" - }, - "suggest": { - "symfony/process": "" - }, - "time": "2018-03-19 21:11:56", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-4": { - "Symfony\\Component\\BrowserKit\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony BrowserKit Component", - "homepage": "https://symfony.com" - }, - { - "name": "symfony/css-selector", - "version": "v2.8.39", - "version_normalized": "2.8.39.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "3cdc270724e4666006118283c700a4d7f9cbe264" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/3cdc270724e4666006118283c700a4d7f9cbe264", - "reference": "3cdc270724e4666006118283c700a4d7f9cbe264", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "time": "2018-03-10 18:19:36", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony CssSelector Component", - "homepage": "https://symfony.com" - } -] diff --git a/application/modules/gitlist/vendor/doctrine/instantiator/.scrutinizer.yml b/application/modules/gitlist/vendor/doctrine/instantiator/.scrutinizer.yml deleted file mode 100644 index aad5e40..0000000 --- a/application/modules/gitlist/vendor/doctrine/instantiator/.scrutinizer.yml +++ /dev/null @@ -1,46 +0,0 @@ -before_commands: - - "composer install --prefer-source" - -tools: - external_code_coverage: - timeout: 600 - php_code_coverage: - enabled: true - test_command: ./vendor/bin/phpunit - php_code_sniffer: - enabled: true - config: - standard: PSR2 - filter: - paths: ["src/*", "tests/*"] - php_cpd: - enabled: true - excluded_dirs: ["build/*", "tests", "vendor"] - php_cs_fixer: - enabled: true - config: - level: all - filter: - paths: ["src/*", "tests/*"] - php_loc: - enabled: true - excluded_dirs: ["build", "tests", "vendor"] - php_mess_detector: - enabled: true - config: - ruleset: phpmd.xml.dist - design_rules: { eval_expression: false } - filter: - paths: ["src/*"] - php_pdepend: - enabled: true - excluded_dirs: ["build", "tests", "vendor"] - php_analyzer: - enabled: true - filter: - paths: ["src/*", "tests/*"] - php_hhvm: - enabled: true - filter: - paths: ["src/*", "tests/*"] - sensiolabs_security_checker: true diff --git a/application/modules/gitlist/vendor/doctrine/instantiator/.travis.install.sh b/application/modules/gitlist/vendor/doctrine/instantiator/.travis.install.sh deleted file mode 100644 index 2819188..0000000 --- a/application/modules/gitlist/vendor/doctrine/instantiator/.travis.install.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -set -x -if [ "$TRAVIS_PHP_VERSION" = 'hhvm' ] || [ "$TRAVIS_PHP_VERSION" = 'hhvm-nightly' ] ; then - curl -sS https://getcomposer.org/installer > composer-installer.php - hhvm composer-installer.php - hhvm -v ResourceLimit.SocketDefaultTimeout=30 -v Http.SlowQueryThreshold=30000 composer.phar update --prefer-source -elif [ "$TRAVIS_PHP_VERSION" = '5.3.3' ] ; then - composer self-update - composer update --prefer-source --no-dev - composer dump-autoload -else - composer self-update - composer update --prefer-source -fi diff --git a/application/modules/gitlist/vendor/doctrine/instantiator/CONTRIBUTING.md b/application/modules/gitlist/vendor/doctrine/instantiator/CONTRIBUTING.md deleted file mode 100644 index 75b84b2..0000000 --- a/application/modules/gitlist/vendor/doctrine/instantiator/CONTRIBUTING.md +++ /dev/null @@ -1,35 +0,0 @@ -# Contributing - - * Coding standard for the project is [PSR-2](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md) - * The project will follow strict [object calisthenics](http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php) - * Any contribution must provide tests for additional introduced conditions - * Any un-confirmed issue needs a failing test case before being accepted - * Pull requests must be sent from a new hotfix/feature branch, not from `master`. - -## Installation - -To install the project and run the tests, you need to clone it first: - -```sh -$ git clone git://github.com/doctrine/instantiator.git -``` - -You will then need to run a composer installation: - -```sh -$ cd Instantiator -$ curl -s https://getcomposer.org/installer | php -$ php composer.phar update -``` - -## Testing - -The PHPUnit version to be used is the one installed as a dev- dependency via composer: - -```sh -$ ./vendor/bin/phpunit -``` - -Accepted coverage for new contributions is 80%. Any contribution not satisfying this requirement -won't be merged. - diff --git a/application/modules/gitlist/vendor/doctrine/instantiator/LICENSE b/application/modules/gitlist/vendor/doctrine/instantiator/LICENSE deleted file mode 100644 index 4d983d1..0000000 --- a/application/modules/gitlist/vendor/doctrine/instantiator/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2014 Doctrine Project - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/application/modules/gitlist/vendor/doctrine/instantiator/README.md b/application/modules/gitlist/vendor/doctrine/instantiator/README.md deleted file mode 100644 index 393ec7c..0000000 --- a/application/modules/gitlist/vendor/doctrine/instantiator/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# Instantiator - -This library provides a way of avoiding usage of constructors when instantiating PHP classes. - -[![Build Status](https://travis-ci.org/doctrine/instantiator.svg?branch=master)](https://travis-ci.org/doctrine/instantiator) -[![Code Coverage](https://scrutinizer-ci.com/g/doctrine/instantiator/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/doctrine/instantiator/?branch=master) -[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/doctrine/instantiator/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/doctrine/instantiator/?branch=master) -[![Dependency Status](https://www.versioneye.com/package/php--doctrine--instantiator/badge.svg)](https://www.versioneye.com/package/php--doctrine--instantiator) -[![HHVM Status](http://hhvm.h4cc.de/badge/doctrine/instantiator.png)](http://hhvm.h4cc.de/package/doctrine/instantiator) - -[![Latest Stable Version](https://poser.pugx.org/doctrine/instantiator/v/stable.png)](https://packagist.org/packages/doctrine/instantiator) -[![Latest Unstable Version](https://poser.pugx.org/doctrine/instantiator/v/unstable.png)](https://packagist.org/packages/doctrine/instantiator) - -## Installation - -The suggested installation method is via [composer](https://getcomposer.org/): - -```sh -php composer.phar require "doctrine/instantiator:~1.0.3" -``` - -## Usage - -The instantiator is able to create new instances of any class without using the constructor or any API of the class -itself: - -```php -$instantiator = new \Doctrine\Instantiator\Instantiator(); - -$instance = $instantiator->instantiate('My\\ClassName\\Here'); -``` - -## Contributing - -Please read the [CONTRIBUTING.md](CONTRIBUTING.md) contents if you wish to help out! - -## Credits - -This library was migrated from [ocramius/instantiator](https://github.com/Ocramius/Instantiator), which -has been donated to the doctrine organization, and which is now deprecated in favour of this package. diff --git a/application/modules/gitlist/vendor/doctrine/instantiator/phpmd.xml.dist b/application/modules/gitlist/vendor/doctrine/instantiator/phpmd.xml.dist deleted file mode 100644 index 8254105..0000000 --- a/application/modules/gitlist/vendor/doctrine/instantiator/phpmd.xml.dist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/application/modules/gitlist/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php b/application/modules/gitlist/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php deleted file mode 100644 index 3065375..0000000 --- a/application/modules/gitlist/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php +++ /dev/null @@ -1,29 +0,0 @@ -. - */ - -namespace Doctrine\Instantiator\Exception; - -/** - * Base exception marker interface for the instantiator component - * - * @author Marco Pivetta - */ -interface ExceptionInterface -{ -} diff --git a/application/modules/gitlist/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php b/application/modules/gitlist/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php deleted file mode 100644 index ea8d28c..0000000 --- a/application/modules/gitlist/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php +++ /dev/null @@ -1,62 +0,0 @@ -. - */ - -namespace Doctrine\Instantiator\Exception; - -use InvalidArgumentException as BaseInvalidArgumentException; -use ReflectionClass; - -/** - * Exception for invalid arguments provided to the instantiator - * - * @author Marco Pivetta - */ -class InvalidArgumentException extends BaseInvalidArgumentException implements ExceptionInterface -{ - /** - * @param string $className - * - * @return self - */ - public static function fromNonExistingClass($className) - { - if (interface_exists($className)) { - return new self(sprintf('The provided type "%s" is an interface, and can not be instantiated', $className)); - } - - if (PHP_VERSION_ID >= 50400 && trait_exists($className)) { - return new self(sprintf('The provided type "%s" is a trait, and can not be instantiated', $className)); - } - - return new self(sprintf('The provided class "%s" does not exist', $className)); - } - - /** - * @param ReflectionClass $reflectionClass - * - * @return self - */ - public static function fromAbstractClass(ReflectionClass $reflectionClass) - { - return new self(sprintf( - 'The provided class "%s" is abstract, and can not be instantiated', - $reflectionClass->getName() - )); - } -} diff --git a/application/modules/gitlist/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php b/application/modules/gitlist/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php deleted file mode 100644 index 1681e56..0000000 --- a/application/modules/gitlist/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php +++ /dev/null @@ -1,79 +0,0 @@ -. - */ - -namespace Doctrine\Instantiator\Exception; - -use Exception; -use ReflectionClass; -use UnexpectedValueException as BaseUnexpectedValueException; - -/** - * Exception for given parameters causing invalid/unexpected state on instantiation - * - * @author Marco Pivetta - */ -class UnexpectedValueException extends BaseUnexpectedValueException implements ExceptionInterface -{ - /** - * @param ReflectionClass $reflectionClass - * @param Exception $exception - * - * @return self - */ - public static function fromSerializationTriggeredException(ReflectionClass $reflectionClass, Exception $exception) - { - return new self( - sprintf( - 'An exception was raised while trying to instantiate an instance of "%s" via un-serialization', - $reflectionClass->getName() - ), - 0, - $exception - ); - } - - /** - * @param ReflectionClass $reflectionClass - * @param string $errorString - * @param int $errorCode - * @param string $errorFile - * @param int $errorLine - * - * @return UnexpectedValueException - */ - public static function fromUncleanUnSerialization( - ReflectionClass $reflectionClass, - $errorString, - $errorCode, - $errorFile, - $errorLine - ) { - return new self( - sprintf( - 'Could not produce an instance of "%s" via un-serialization, since an error was triggered ' - . 'in file "%s" at line "%d"', - $reflectionClass->getName(), - $errorFile, - $errorLine - ), - 0, - new Exception($errorString, $errorCode) - ); - } -} diff --git a/application/modules/gitlist/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php b/application/modules/gitlist/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php deleted file mode 100644 index 6d5b3b6..0000000 --- a/application/modules/gitlist/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php +++ /dev/null @@ -1,273 +0,0 @@ -. - */ - -namespace Doctrine\Instantiator; - -use Closure; -use Doctrine\Instantiator\Exception\InvalidArgumentException; -use Doctrine\Instantiator\Exception\UnexpectedValueException; -use Exception; -use ReflectionClass; - -/** - * {@inheritDoc} - * - * @author Marco Pivetta - */ -final class Instantiator implements InstantiatorInterface -{ - /** - * Markers used internally by PHP to define whether {@see \unserialize} should invoke - * the method {@see \Serializable::unserialize()} when dealing with classes implementing - * the {@see \Serializable} interface. - */ - const SERIALIZATION_FORMAT_USE_UNSERIALIZER = 'C'; - const SERIALIZATION_FORMAT_AVOID_UNSERIALIZER = 'O'; - - /** - * @var \Closure[] of {@see \Closure} instances used to instantiate specific classes - */ - private static $cachedInstantiators = array(); - - /** - * @var object[] of objects that can directly be cloned - */ - private static $cachedCloneables = array(); - - /** - * {@inheritDoc} - */ - public function instantiate($className) - { - if (isset(self::$cachedCloneables[$className])) { - return clone self::$cachedCloneables[$className]; - } - - if (isset(self::$cachedInstantiators[$className])) { - $factory = self::$cachedInstantiators[$className]; - - return $factory(); - } - - return $this->buildAndCacheFromFactory($className); - } - - /** - * Builds the requested object and caches it in static properties for performance - * - * @param string $className - * - * @return object - */ - private function buildAndCacheFromFactory($className) - { - $factory = self::$cachedInstantiators[$className] = $this->buildFactory($className); - $instance = $factory(); - - if ($this->isSafeToClone(new ReflectionClass($instance))) { - self::$cachedCloneables[$className] = clone $instance; - } - - return $instance; - } - - /** - * Builds a {@see \Closure} capable of instantiating the given $className without - * invoking its constructor. - * - * @param string $className - * - * @return Closure - */ - private function buildFactory($className) - { - $reflectionClass = $this->getReflectionClass($className); - - if ($this->isInstantiableViaReflection($reflectionClass)) { - return function () use ($reflectionClass) { - return $reflectionClass->newInstanceWithoutConstructor(); - }; - } - - $serializedString = sprintf( - '%s:%d:"%s":0:{}', - $this->getSerializationFormat($reflectionClass), - strlen($className), - $className - ); - - $this->checkIfUnSerializationIsSupported($reflectionClass, $serializedString); - - return function () use ($serializedString) { - return unserialize($serializedString); - }; - } - - /** - * @param string $className - * - * @return ReflectionClass - * - * @throws InvalidArgumentException - */ - private function getReflectionClass($className) - { - if (! class_exists($className)) { - throw InvalidArgumentException::fromNonExistingClass($className); - } - - $reflection = new ReflectionClass($className); - - if ($reflection->isAbstract()) { - throw InvalidArgumentException::fromAbstractClass($reflection); - } - - return $reflection; - } - - /** - * @param ReflectionClass $reflectionClass - * @param string $serializedString - * - * @throws UnexpectedValueException - * - * @return void - */ - private function checkIfUnSerializationIsSupported(ReflectionClass $reflectionClass, $serializedString) - { - set_error_handler(function ($code, $message, $file, $line) use ($reflectionClass, & $error) { - $error = UnexpectedValueException::fromUncleanUnSerialization( - $reflectionClass, - $message, - $code, - $file, - $line - ); - }); - - $this->attemptInstantiationViaUnSerialization($reflectionClass, $serializedString); - - restore_error_handler(); - - if ($error) { - throw $error; - } - } - - /** - * @param ReflectionClass $reflectionClass - * @param string $serializedString - * - * @throws UnexpectedValueException - * - * @return void - */ - private function attemptInstantiationViaUnSerialization(ReflectionClass $reflectionClass, $serializedString) - { - try { - unserialize($serializedString); - } catch (Exception $exception) { - restore_error_handler(); - - throw UnexpectedValueException::fromSerializationTriggeredException($reflectionClass, $exception); - } - } - - /** - * @param ReflectionClass $reflectionClass - * - * @return bool - */ - private function isInstantiableViaReflection(ReflectionClass $reflectionClass) - { - if (\PHP_VERSION_ID >= 50600) { - return ! ($this->hasInternalAncestors($reflectionClass) && $reflectionClass->isFinal()); - } - - return \PHP_VERSION_ID >= 50400 && ! $this->hasInternalAncestors($reflectionClass); - } - - /** - * Verifies whether the given class is to be considered internal - * - * @param ReflectionClass $reflectionClass - * - * @return bool - */ - private function hasInternalAncestors(ReflectionClass $reflectionClass) - { - do { - if ($reflectionClass->isInternal()) { - return true; - } - } while ($reflectionClass = $reflectionClass->getParentClass()); - - return false; - } - - /** - * Verifies if the given PHP version implements the `Serializable` interface serialization - * with an incompatible serialization format. If that's the case, use serialization marker - * "C" instead of "O". - * - * @link http://news.php.net/php.internals/74654 - * - * @param ReflectionClass $reflectionClass - * - * @return string the serialization format marker, either self::SERIALIZATION_FORMAT_USE_UNSERIALIZER - * or self::SERIALIZATION_FORMAT_AVOID_UNSERIALIZER - */ - private function getSerializationFormat(ReflectionClass $reflectionClass) - { - if ($this->isPhpVersionWithBrokenSerializationFormat() - && $reflectionClass->implementsInterface('Serializable') - ) { - return self::SERIALIZATION_FORMAT_USE_UNSERIALIZER; - } - - return self::SERIALIZATION_FORMAT_AVOID_UNSERIALIZER; - } - - /** - * Checks whether the current PHP runtime uses an incompatible serialization format - * - * @return bool - */ - private function isPhpVersionWithBrokenSerializationFormat() - { - return PHP_VERSION_ID === 50429 || PHP_VERSION_ID === 50513; - } - - /** - * Checks if a class is cloneable - * - * @param ReflectionClass $reflection - * - * @return bool - */ - private function isSafeToClone(ReflectionClass $reflection) - { - if (method_exists($reflection, 'isCloneable') && ! $reflection->isCloneable()) { - return false; - } - - // not cloneable if it implements `__clone`, as we want to avoid calling it - return ! $reflection->hasMethod('__clone'); - } -} diff --git a/application/modules/gitlist/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php b/application/modules/gitlist/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php deleted file mode 100644 index b665bea..0000000 --- a/application/modules/gitlist/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php +++ /dev/null @@ -1,37 +0,0 @@ -. - */ - -namespace Doctrine\Instantiator; - -/** - * Instantiator provides utility methods to build objects without invoking their constructors - * - * @author Marco Pivetta - */ -interface InstantiatorInterface -{ - /** - * @param string $className - * - * @return object - * - * @throws \Doctrine\Instantiator\Exception\ExceptionInterface - */ - public function instantiate($className); -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/LICENSE b/application/modules/gitlist/vendor/klaussilveira/gitter/LICENSE deleted file mode 100644 index 5c1b258..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/LICENSE +++ /dev/null @@ -1,9 +0,0 @@ -Copyright (c) 2012, Klaus Silveira and contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -Neither the name of Gitter nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/README.md b/application/modules/gitlist/vendor/klaussilveira/gitter/README.md deleted file mode 100644 index 117c2e1..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# Gitter -[![Build Status](https://secure.travis-ci.org/klaussilveira/gitter.png)](http://travis-ci.org/klaussilveira/gitter) - -Gitter allows you to interact in an object oriented manner with Git repositories -via PHP. The main goal of the library is not to replace the system `git` command, -but provide a coherent, stable and performatic object oriented interface. - -Most commands are sent to the system's `git` command, parsed and then interpreted -by Gitter. Everything is transparent to you, so you don't have to worry about a thing. - -## Requirements -* git (http://git-scm.com) (tested with 1.7.5.4) - -## Authors and contributors -* [Klaus Silveira](http://www.klaussilveira.com) (Creator, developer) - -## License -[New BSD license](http://www.opensource.org/licenses/bsd-license.php) - -## Usage - -Gitter is very easy to use and you'll just need a few method calls to get -started. For example, to create a new repository: - - $client = new Gitter\Client; - $repository = $client->createRepository('/home/user/test'); - -Or a bare repository: - - $client = new Gitter\Client; - $repository = $client->createRepository('/home/user/test', true); - -Or to open an existing repository: - - $client = new Gitter\Client; - $repository = $client->getRepository('/home/user/anothertest'); - -Both methods will return a `Repository` object, which has various methods -that allow you to interact with that repository. - -### Getting a list of commits - -Once you get hold of the `Repository` object, you can use: - - $commits = $repository->getCommits(); - print_r($commits); - -To get a list of various commits. - -### Getting a single commit - -Given a specific commit hash, you can find information about that commit: - - $commit = $repository->getCommit('920be98a05'); - print_r($commit); - -### Getting statistics for repository - -Statistics aggregators can be added to the repository: - - $repository->addStatistics(array( - new Gitter\Statistics\Contributors, - new Gitter\Statistics\Date, - new Gitter\Statistics\Day, - new Gitter\Statistics\Hour - )); - print_r($repository->getStatistics()); diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Client.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Client.php deleted file mode 100644 index 37effe9..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Client.php +++ /dev/null @@ -1,123 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Gitter; - -use Symfony\Component\Process\ExecutableFinder; -use Symfony\Component\Process\Process; - -class Client -{ - protected $path; - - public function __construct($path = null) - { - if (!$path) { - $finder = new ExecutableFinder(); - $path = $finder->find('git', '/usr/bin/git'); - } - - $this->setPath($path); - } - - /** - * Creates a new repository on the specified path. - * - * @param string $path Path where the new repository will be created - * - * @return Repository Instance of Repository - */ - public function createRepository($path, $bare = null) - { - if (file_exists($path . '/.git/HEAD') && !file_exists($path . '/HEAD')) { - throw new \RuntimeException('A GIT repository already exists at ' . $path); - } - - $repository = new Repository($path, $this); - - return $repository->create($bare); - } - - /** - * Opens a repository at the specified path. - * - * @param string $path Path where the repository is located - * - * @return Repository Instance of Repository - */ - public function getRepository($path) - { - if (!file_exists($path) || !file_exists($path . '/.git/HEAD') && !file_exists($path . '/HEAD')) { - throw new \RuntimeException('There is no GIT repository at ' . $path); - } - - return new Repository($path, $this); - } - - public function run($repository, $command) - { - if (version_compare($this->getVersion(), '1.7.2', '>=')) { - $command = '-c "color.ui"=false ' . $command; - } - - $process = new Process($this->getPath() . ' ' . $command, $repository->getPath()); - $process->setTimeout(180); - $process->run(); - - if (!$process->isSuccessful()) { - throw new \RuntimeException($process->getErrorOutput()); - } - - return $process->getOutput(); - } - - public function getVersion() - { - static $version; - - if (null !== $version) { - return $version; - } - - $process = new Process($this->getPath() . ' --version'); - $process->run(); - - if (!$process->isSuccessful()) { - throw new \RuntimeException($process->getErrorOutput()); - } - - $version = trim(substr($process->getOutput(), 12)); - - return $version; - } - - /** - * Get the current Git binary path. - * - * @return string Path where the Git binary is located - */ - protected function getPath() - { - return escapeshellarg($this->path); - } - - /** - * Set the current Git binary path. - * - * @param string $path Path where the Git binary is located - */ - protected function setPath($path) - { - $this->path = $path; - - return $this; - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/AbstractModel.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/AbstractModel.php deleted file mode 100644 index bb20304..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/AbstractModel.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Gitter\Model; - -abstract class AbstractModel -{ - protected $repository; - - public function getRepository() - { - return $this->repository; - } - - public function setRepository($repository) - { - $this->repository = $repository; - - return $this; - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Blob.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Blob.php deleted file mode 100644 index 064f625..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Blob.php +++ /dev/null @@ -1,75 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Gitter\Model; - -use Gitter\Repository; - -class Blob extends GitObject -{ - protected $mode; - protected $name; - protected $size; - - public function __construct($hash, Repository $repository) - { - $this->setHash($hash); - $this->setRepository($repository); - } - - public function output() - { - $data = $this->getRepository()->getClient()->run($this->getRepository(), 'show ' . $this->getHash()); - - return $data; - } - - public function getMode() - { - return $this->mode; - } - - public function setMode($mode) - { - $this->mode = $mode; - - return $this; - } - - public function getName() - { - return $this->name; - } - - public function setName($name) - { - $this->name = $name; - - return $this; - } - - public function getSize() - { - return $this->size; - } - - public function setSize($size) - { - $this->size = $size; - - return $this; - } - - public function isBlob() - { - return true; - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Branch.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Branch.php deleted file mode 100644 index bec7e1d..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Branch.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Gitter\Model; - -class Branch extends AbstractModel -{ - protected $name; - - public function getName() - { - return $this->name; - } - - public function setName($name) - { - $this->name = $name; - - return $this; - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Commit/Author.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Commit/Author.php deleted file mode 100644 index 14997bd..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Commit/Author.php +++ /dev/null @@ -1,46 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Gitter\Model\Commit; - -use Gitter\Model\AbstractModel; - -class Author extends AbstractModel -{ - protected $name; - protected $email; - - public function __construct($name, $email) - { - $this->setName($name); - $this->setEmail($email); - } - - public function getName() - { - return $this->name; - } - - public function setName($name) - { - $this->name = $name; - } - - public function getEmail() - { - return $this->email; - } - - public function setEmail($email) - { - $this->email = $email; - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Commit/Commit.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Commit/Commit.php deleted file mode 100644 index 44af582..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Commit/Commit.php +++ /dev/null @@ -1,189 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Gitter\Model\Commit; - -use Gitter\Model\GitObject; -use Gitter\Util\DateTime; - -class Commit extends GitObject -{ - protected $shortHash; - protected $treeHash; - protected $parentsHash; - protected $author; - protected $date; - protected $commiter; - protected $commiterDate; - protected $message; - protected $body; - protected $diffs; - - public function importData(array $data) - { - $this->setHash($data['hash']); - $this->setShortHash($data['short_hash']); - $this->setTreeHash($data['tree']); - $this->setParentsHash(isset($data['parents']) ? array_filter(explode(' ', $data['parents'])) : array()); - - $this->setAuthor( - new Author($data['author'], $data['author_email']) - ); - - $this->setDate( - new DateTime('@' . $data['date']) - ); - - $this->setCommiter( - new Author($data['commiter'], $data['commiter_email']) - ); - - $this->setCommiterDate( - new DateTime('@' . $data['commiter_date']) - ); - - $this->setMessage($data['message']); - - if (isset($data['body'])) { - $this->setBody($data['body']); - } - } - - public function getShortHash() - { - return $this->shortHash; - } - - public function setShortHash($shortHash) - { - $this->shortHash = $shortHash; - - return $this; - } - - public function getTreeHash() - { - return $this->treeHash; - } - - public function setTreeHash($treeHash) - { - $this->treeHash = $treeHash; - - return $this; - } - - public function getParentsHash() - { - return $this->parentsHash; - } - - public function setParentsHash($parentsHash) - { - $this->parentsHash = $parentsHash; - - return $this; - } - - public function getAuthor() - { - return $this->author; - } - - public function setAuthor($author) - { - $this->author = $author; - - return $this; - } - - public function getDate() - { - return $this->date; - } - - public function setDate($date) - { - $this->date = $date; - - return $this; - } - - public function getCommiter() - { - return $this->commiter; - } - - public function setCommiter($commiter) - { - $this->commiter = $commiter; - - return $this; - } - - public function getCommiterDate() - { - return $this->commiterDate; - } - - public function setCommiterDate($commiterDate) - { - $this->commiterDate = $commiterDate; - - return $this; - } - - public function getMessage() - { - return $this->message; - } - - public function setMessage($message) - { - $this->message = $message; - - return $this; - } - - public function getBody() - { - return $this->body; - } - - public function setBody($body) - { - $this->body = $body; - - return $this; - } - - public function getDiffs() - { - return $this->diffs; - } - - public function setDiffs($diffs) - { - $this->diffs = $diffs; - - return $this; - } - - public function getChangedFiles() - { - return sizeof($this->diffs); - } - - public function isCommit() - { - return true; - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Commit/Diff.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Commit/Diff.php deleted file mode 100644 index 1dfcaee..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Commit/Diff.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Gitter\Model\Commit; - -use Gitter\Model\AbstractModel; - -class Diff extends AbstractModel -{ - protected $lines; - protected $index; - protected $old; - protected $new; - protected $file; - - public function addLine($line, $oldNo, $newNo) - { - $this->lines[] = new DiffLine($line, $oldNo, $newNo); - } - - public function getLines() - { - return $this->lines; - } - - public function setIndex($index) - { - $this->index = $index; - } - - public function getIndex() - { - return $this->index; - } - - public function setOld($old) - { - $this->old = $old; - } - - public function getOld() - { - return $this->old; - } - - public function setNew($new) - { - $this->new = $new; - } - - public function getNew() - { - return $this->new; - } - - public function setFile($file) - { - $this->file = $file; - } - - public function getFile() - { - return $this->file; - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Commit/DiffLine.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Commit/DiffLine.php deleted file mode 100644 index 22d95eb..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Commit/DiffLine.php +++ /dev/null @@ -1,68 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Gitter\Model\Commit; - -use Gitter\Model\Line; - -class DiffLine extends Line -{ - protected $numNew; - protected $numOld; - - public function __construct($data, $numOld, $numNew) - { - parent::__construct($data); - - if (!empty($data)) { - switch ($data[0]) { - case '@': - $this->numOld = '...'; - $this->numNew = '...'; - break; - case '-': - $this->numOld = $numOld; - $this->numNew = ''; - break; - case '+': - $this->numOld = ''; - $this->numNew = $numNew; - break; - default: - $this->numOld = $numOld; - $this->numNew = $numNew; - } - } else { - $this->numOld = $numOld; - $this->numNew = $numNew; - } - } - - public function getNumOld() - { - return $this->numOld; - } - - public function setNumOld($num) - { - $this->numOld = $num; - } - - public function getNumNew() - { - return $this->numNew; - } - - public function setNumNew($num) - { - $this->numNew = $num; - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/GitObject.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/GitObject.php deleted file mode 100644 index 749d674..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/GitObject.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Gitter\Model; - -class GitObject extends AbstractModel -{ - protected $hash; - - public function isBlob() - { - return false; - } - - public function isTag() - { - return false; - } - - public function isCommit() - { - return false; - } - - public function isTree() - { - return false; - } - - public function getHash() - { - return $this->hash; - } - - public function setHash($hash) - { - $this->hash = $hash; - - return $this; - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Line.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Line.php deleted file mode 100644 index 70376e6..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Line.php +++ /dev/null @@ -1,61 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Gitter\Model; - -class Line extends AbstractModel -{ - protected $line; - protected $type; - - public function __construct($data) - { - if (!empty($data)) { - if ('@' == $data[0]) { - $this->setType('chunk'); - } - - if ('-' == $data[0]) { - $this->setType('old'); - } - - if ('+' == $data[0]) { - $this->setType('new'); - } - } - - $this->setLine($data); - } - - public function getLine() - { - return $this->line; - } - - public function setLine($line) - { - $this->line = $line; - - return $this; - } - - public function getType() - { - return $this->type; - } - - public function setType($type) - { - $this->type = $type; - - return $this; - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Symlink.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Symlink.php deleted file mode 100644 index 37d3545..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Symlink.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Gitter\Model; - -class Symlink extends AbstractModel -{ - protected $mode; - protected $name; - protected $path; - - public function getMode() - { - return $this->mode; - } - - public function setMode($mode) - { - $this->mode = $mode; - - return $this; - } - - public function getName() - { - return $this->name; - } - - public function setName($name) - { - $this->name = $name; - - return $this; - } - - public function getPath() - { - return $this->path; - } - - public function setPath($path) - { - $this->path = $path; - - return $this; - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Tag.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Tag.php deleted file mode 100644 index 25e70c5..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Tag.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Gitter\Model; - -class Tag extends GitObject -{ - protected $name; - - public function getName() - { - return $this->name; - } - - public function setName($name) - { - $this->name = $name; - - return $this; - } - - public function isTag() - { - return true; - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Tree.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Tree.php deleted file mode 100644 index a90fca6..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Model/Tree.php +++ /dev/null @@ -1,184 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Gitter\Model; - -use Gitter\Repository; - -class Tree extends GitObject implements \RecursiveIterator -{ - protected $mode; - protected $name; - protected $data; - protected $position = 0; - - public function __construct($hash, Repository $repository) - { - $this->setHash($hash); - $this->setRepository($repository); - } - - public function parse() - { - $data = $this->getRepository()->getClient()->run($this->getRepository(), 'ls-tree -lz ' . $this->getHash()); - $lines = explode("\0", $data); - $files = array(); - $root = array(); - - foreach ($lines as $key => $line) { - if (empty($line)) { - unset($lines[$key]); - continue; - } - - $files[] = preg_split("/[\s]+/", $line, 5); - } - - foreach ($files as $file) { - if ('commit' == $file[1]) { - // submodule - continue; - } - - if ('120000' == $file[0]) { - $show = $this->getRepository()->getClient()->run($this->getRepository(), 'show ' . $file[2]); - $tree = new Symlink(); - $tree->setMode($file[0]); - $tree->setName($file[4]); - $tree->setPath($show); - $root[] = $tree; - continue; - } - - if ('blob' == $file[1]) { - $blob = new Blob($file[2], $this->getRepository()); - $blob->setMode($file[0]); - $blob->setName($file[4]); - $blob->setSize($file[3]); - $root[] = $blob; - continue; - } - - $tree = new Tree($file[2], $this->getRepository()); - $tree->setMode($file[0]); - $tree->setName($file[4]); - $root[] = $tree; - } - - $this->data = $root; - } - - public function output() - { - $files = $folders = array(); - - foreach ($this as $node) { - if ($node instanceof Blob) { - $file['type'] = 'blob'; - $file['name'] = $node->getName(); - $file['size'] = $node->getSize(); - $file['mode'] = $node->getMode(); - $file['hash'] = $node->getHash(); - $files[] = $file; - continue; - } - - if ($node instanceof Tree) { - $folder['type'] = 'folder'; - $folder['name'] = $node->getName(); - $folder['size'] = ''; - $folder['mode'] = $node->getMode(); - $folder['hash'] = $node->getHash(); - $folders[] = $folder; - continue; - } - - if ($node instanceof Symlink) { - $folder['type'] = 'symlink'; - $folder['name'] = $node->getName(); - $folder['size'] = ''; - $folder['mode'] = $node->getMode(); - $folder['hash'] = ''; - $folder['path'] = $node->getPath(); - $folders[] = $folder; - } - } - - // Little hack to make folders appear before files - $files = array_merge($folders, $files); - - return $files; - } - - public function valid() - { - return isset($this->data[$this->position]); - } - - public function hasChildren() - { - return is_array($this->data[$this->position]); - } - - public function next() - { - $this->position++; - } - - public function current() - { - return $this->data[$this->position]; - } - - public function getChildren() - { - return $this->data[$this->position]; - } - - public function rewind() - { - $this->position = 0; - } - - public function key() - { - return $this->position; - } - - public function getMode() - { - return $this->mode; - } - - public function setMode($mode) - { - $this->mode = $mode; - - return $this; - } - - public function getName() - { - return $this->name; - } - - public function setName($name) - { - $this->name = $name; - - return $this; - } - - public function isTree() - { - return true; - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/PrettyFormat.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/PrettyFormat.php deleted file mode 100644 index a3902b5..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/PrettyFormat.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Gitter; - -class PrettyFormat -{ - public function parse($output) - { - if (empty($output)) { - throw new \RuntimeException('No data available'); - } - - $data = $this->iteratorToArray(new \SimpleXmlIterator("$output")); - - return $data['item']; - } - - protected function iteratorToArray($iterator) - { - foreach ($iterator as $key => $item) { - if ($iterator->hasChildren()) { - $data[$key][] = $this->iteratorToArray($item); - continue; - } - - $data[$key] = trim(strval($item)); - } - - return $data; - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Repository.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Repository.php deleted file mode 100644 index f2c830f..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Repository.php +++ /dev/null @@ -1,691 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Gitter; - -use Gitter\Model\Blob; -use Gitter\Model\Commit\Commit; -use Gitter\Model\Commit\Diff; -use Gitter\Model\Tree; -use Gitter\Statistics\StatisticsInterface; - -class Repository -{ - protected $path; - protected $client; - protected $commitsHaveBeenParsed = false; - - protected $statistics = array(); - - public function __construct($path, Client $client) - { - $this->setPath($path); - $this->setClient($client); - } - - /** - * @param bool $value - */ - public function setCommitsHaveBeenParsed($value) - { - $this->commitsHaveBeenParsed = $value; - } - - /** - * @return bool - */ - public function getCommitsHaveBeenParsed() - { - return $this->commitsHaveBeenParsed; - } - - /** - * Create a new git repository. - */ - public function create($bare = null) - { - mkdir($this->getPath()); - $command = 'init'; - - if ($bare) { - $command .= ' --bare'; - } - - $this->getClient()->run($this, $command); - - return $this; - } - - /** - * Get a git configuration variable. - * - * @param string $key Configuration key - */ - public function getConfig($key) - { - $key = $this->getClient()->run($this, 'config ' . $key); - - return trim($key); - } - - /** - * Set a git configuration variable. - * - * @param string $key Configuration key - * @param string $value Configuration value - */ - public function setConfig($key, $value) - { - $this->getClient()->run($this, "config $key \"$value\""); - - return $this; - } - - /** - * Add statistic aggregator. - * - * @param StatisticsInterface|array $statistics - */ - public function addStatistics($statistics) - { - if (!is_array($statistics)) { - $statistics = array($statistics); - } - - foreach ($statistics as $statistic) { - $reflect = new \ReflectionClass($statistic); - $this->statistics[strtolower($reflect->getShortName())] = $statistic; - } - } - - /** - * Get statistic aggregators. - * - * @return array - */ - public function getStatistics() - { - if (false === $this->getCommitsHaveBeenParsed()) { - $this->getCommits(); - } - - foreach ($this->statistics as $statistic) { - $statistic->sortCommits(); - } - - return $this->statistics; - } - - /** - * Add untracked files. - * - * @param mixed $files Files to be added to the repository - */ - public function add($files = '.') - { - if (is_array($files)) { - $files = implode(' ', array_map('escapeshellarg', $files)); - } else { - $files = escapeshellarg($files); - } - - $this->getClient()->run($this, "add $files"); - - return $this; - } - - /** - * Add all untracked files. - */ - public function addAll() - { - $this->getClient()->run($this, 'add -A'); - - return $this; - } - - /** - * Commit changes to the repository. - * - * @param string $message Description of the changes made - */ - public function commit($message) - { - $this->getClient()->run($this, "commit -m \"$message\""); - - return $this; - } - - /** - * Checkout a branch. - * - * @param string $branch Branch to be checked out - */ - public function checkout($branch) - { - $this->getClient()->run($this, "checkout $branch"); - - return $this; - } - - /** - * Pull repository changes. - */ - public function pull() - { - $this->getClient()->run($this, 'pull'); - - return $this; - } - - /** - * Update remote references. - * - * @param string $repository Repository to be pushed - * @param string $refspec Refspec for the push - */ - public function push($repository = null, $refspec = null) - { - $command = 'push'; - - if ($repository) { - $command .= " $repository"; - } - - if ($refspec) { - $command .= " $refspec"; - } - - $this->getClient()->run($this, $command); - - return $this; - } - - /** - * Get name of repository (top level directory). - * - * @return string - */ - public function getName() - { - $name = rtrim($this->path, '/'); - - if (strstr($name, DIRECTORY_SEPARATOR)) { - $name = substr($name, strrpos($name, DIRECTORY_SEPARATOR) + 1); - } - - return trim($name); - } - - /** - * Show a list of the repository branches. - * - * @return array List of branches - */ - public function getBranches() - { - static $cache = array(); - - if (array_key_exists($this->path, $cache)) { - return $cache[$this->path]; - } - - $branches = $this->getClient()->run($this, 'branch'); - $branches = explode("\n", $branches); - $branches = array_filter(preg_replace('/[\*\s]/', '', $branches)); - - if (empty($branches)) { - return $cache[$this->path] = $branches; - } - - // Since we've stripped whitespace, the result "* (detached from " - // and "* (no branch)" that is displayed in detached HEAD state - // becomes "(detachedfrom" and "(nobranch)" respectively. - if ((0 === strpos($branches[0], '(detachedfrom')) || ('(nobranch)' === $branches[0])) { - $branches = array_slice($branches, 1); - } - - return $cache[$this->path] = $branches; - } - - /** - * Return the current repository branch. - * - * @return mixed current repository branch as a string, or NULL if in - * detached HEAD state - */ - public function getCurrentBranch() - { - $branches = $this->getClient()->run($this, 'branch'); - $branches = explode("\n", $branches); - - foreach ($branches as $branch) { - if ('*' === $branch[0]) { - if (preg_match('/(detached|no branch)/', $branch)) { - return null; - } - - return substr($branch, 2); - } - } - } - - /** - * Check if a specified branch exists. - * - * @param string $branch Branch to be checked - * - * @return bool True if the branch exists - */ - public function hasBranch($branch) - { - $branches = $this->getBranches(); - $status = in_array($branch, $branches); - - return $status; - } - - /** - * Create a new repository branch. - * - * @param string $branch Branch name - */ - public function createBranch($branch) - { - $this->getClient()->run($this, "branch $branch"); - } - - /** - * Create a new repository tag. - * - * @param string $tag Tag name - */ - public function createTag($tag, $message = null) - { - $command = 'tag'; - - if ($message) { - $command .= " -a -m '$message'"; - } - - $command .= " $tag"; - - $this->getClient()->run($this, $command); - } - - /** - * Show a list of the repository tags. - * - * @return array List of tags - */ - public function getTags() - { - static $cache = array(); - - if (array_key_exists($this->path, $cache)) { - return $cache[$this->path]; - } - - $tags = $this->getClient()->run($this, 'tag'); - $tags = explode("\n", $tags); - array_pop($tags); - - if (empty($tags[0])) { - return $cache[$this->path] = null; - } - - return $cache[$this->path] = $tags; - } - - /** - * Show the amount of commits on the repository. - * - * @return int Total number of commits - */ - public function getTotalCommits($file = null) - { - if (defined('PHP_WINDOWS_VERSION_BUILD')) { - $command = "rev-list --count --all $file"; - } else { - $command = "rev-list --all $file | wc -l"; - } - - $commits = $this->getClient()->run($this, $command); - - return trim($commits); - } - - /** - * Show the repository commit log. - * - * @return array Commit log - */ - public function getCommits($file = null) - { - $command = 'log --pretty=format:"%H%h%T%P%an%ae%at%cn%ce%ct"'; - - if ($file) { - $command .= " $file"; - } - - $logs = $this->getPrettyFormat($command); - - foreach ($logs as $log) { - $commit = new Commit(); - $commit->importData($log); - $commits[] = $commit; - - foreach ($this->statistics as $statistic) { - $statistic->addCommit($commit); - } - } - - $this->setCommitsHaveBeenParsed(true); - - return $commits; - } - - /** - * Show the data from a specific commit. - * - * @param string $commitHash Hash of the specific commit to read data - * - * @return array Commit data - */ - public function getCommit($commitHash) - { - if (version_compare($this->getClient()->getVersion(), '1.8.4', '>=')) { - $logs = $this->getClient()->run($this, "show --ignore-blank-lines -w -b --pretty=format:\"%H%h%T%P%an%ae%at%cn%ce%ct\" $commitHash"); - } else { - $logs = $this->getClient()->run($this, "show --pretty=format:\"%H%h%T%P%an%ae%at%cn%ce%ct\" $commitHash"); - } - $xmlEnd = strpos($logs, '') + 7; - $commitInfo = substr($logs, 0, $xmlEnd); - $commitData = substr($logs, $xmlEnd); - $logs = explode("\n", $commitData); - array_shift($logs); - - // Read commit metadata - $format = new PrettyFormat(); - $data = $format->parse($commitInfo); - $commit = new Commit(); - $commit->importData($data[0]); - - if (empty($logs[1])) { - $logs = explode("\n", $this->getClient()->run($this, 'diff ' . $commitHash . '~1..' . $commitHash)); - } - - $commit->setDiffs($this->readDiffLogs($logs)); - - return $commit; - } - - /** - * Read diff logs and generate a collection of diffs. - * - * @param array $logs Array of log rows - * - * @return array Array of diffs - */ - public function readDiffLogs(array $logs) - { - $diffs = array(); - $lineNumOld = 0; - $lineNumNew = 0; - foreach ($logs as $log) { - if ('diff' === substr($log, 0, 4)) { - if (isset($diff)) { - $diffs[] = $diff; - } - - $diff = new Diff(); - if (preg_match('/^diff --[\S]+ a\/?(.+) b\/?/', $log, $name)) { - $diff->setFile($name[1]); - } - continue; - } - - if ('index' === substr($log, 0, 5)) { - $diff->setIndex($log); - continue; - } - - if ('---' === substr($log, 0, 3)) { - $diff->setOld($log); - continue; - } - - if ('+++' === substr($log, 0, 3)) { - $diff->setNew($log); - continue; - } - - // Handle binary files properly. - if ('Binary' === substr($log, 0, 6)) { - $m = array(); - if (preg_match('/Binary files (.+) and (.+) differ/', $log, $m)) { - $diff->setOld($m[1]); - $diff->setNew(" {$m[2]}"); - } - } - - if (!empty($log)) { - switch ($log[0]) { - case '@': - // Set the line numbers - preg_match('/@@ -([0-9]+)/', $log, $matches); - $lineNumOld = $matches[1] - 1; - $lineNumNew = $matches[1] - 1; - break; - case '-': - $lineNumOld++; - break; - case '+': - $lineNumNew++; - break; - default: - $lineNumOld++; - $lineNumNew++; - } - } else { - $lineNumOld++; - $lineNumNew++; - } - - if ($diff) { - $diff->addLine($log, $lineNumOld, $lineNumNew); - } - } - - if (isset($diff)) { - $diffs[] = $diff; - } - - return $diffs; - } - - /** - * Get the current HEAD. - * - * @param $default Optional branch to default to if in detached HEAD state. - * If not passed, just grabs the first branch listed. - * - * @return string the name of the HEAD branch, or a backup option if - * in detached HEAD state - */ - public function getHead($default = null) - { - $file = ''; - if (file_exists($this->getPath() . '/.git/HEAD')) { - $file = file_get_contents($this->getPath() . '/.git/HEAD'); - } elseif (file_exists($this->getPath() . '/HEAD')) { - $file = file_get_contents($this->getPath() . '/HEAD'); - } - - // Find first existing branch - foreach (explode("\n", $file) as $line) { - $m = array(); - if (preg_match('#ref:\srefs/heads/(.+)#', $line, $m)) { - if ($this->hasBranch($m[1])) { - return $m[1]; - } - } - } - - // If we were given a default branch and it exists, return that. - if (null !== $default && $this->hasBranch($default)) { - return $default; - } - - // Otherwise, return the first existing branch. - $branches = $this->getBranches(); - if (!empty($branches)) { - return current($branches); - } - - // No branches exist - null is the best we can do in this case. - return null; - } - - /** - * Extract the tree hash for a given branch or tree reference. - * - * @param string $branch - * - * @return string - */ - public function getBranchTree($branch) - { - $hash = $this->getClient()->run($this, "log --pretty=\"%T\" --max-count=1 $branch"); - $hash = trim($hash, "\r\n "); - - return $hash ?: false; - } - - /** - * Get the Tree for the provided folder. - * - * @param string $tree Folder that will be parsed - * - * @return Tree Instance of Tree for the provided folder - */ - public function getTree($tree) - { - $tree = new Tree($tree, $this); - $tree->parse(); - - return $tree; - } - - /** - * Get the Blob for the provided file. - * - * @param string $blob File that will be parsed - * - * @return Blob Instance of Blob for the provided file - */ - public function getBlob($blob) - { - return new Blob($blob, $this); - } - - /** - * Blames the provided file and parses the output. - * - * @param string $file File that will be blamed - * - * @return array Commits hashes containing the lines - */ - public function getBlame($file) - { - $blame = array(); - $logs = $this->getClient()->run($this, "blame -s $file"); - $logs = explode("\n", $logs); - - $i = 0; - $previousCommit = ''; - foreach ($logs as $log) { - if ('' == $log) { - continue; - } - - preg_match_all("/([a-zA-Z0-9^]{8})\s+.*?([0-9]+)\)(.+)/", $log, $match); - - $currentCommit = $match[1][0]; - if ($currentCommit != $previousCommit) { - $i++; - $blame[$i] = array('line' => '', 'commit' => $currentCommit); - } - - $blame[$i]['line'] .= PHP_EOL . $match[3][0]; - $previousCommit = $currentCommit; - } - - return $blame; - } - - /** - * Get the current Repository path. - * - * @return string Path where the repository is located - */ - public function getPath() - { - return $this->path; - } - - /** - * Set the current Repository path. - * - * @param string $path Path where the repository is located - */ - public function setPath($path) - { - $this->path = $path; - } - - /** - * Get the current Client instance. - * - * @return Client Client instance - */ - public function getClient() - { - return $this->client; - } - - /** - * Set the Client. - * - * @param Client $path Client instance - */ - public function setClient(Client $client) - { - $this->client = $client; - - return $this; - } - - /** - * Get and parse the output of a git command with a XML-based pretty format. - * - * @param string $command Command to be run by git - * - * @return array Parsed command output - */ - public function getPrettyFormat($command) - { - $output = $this->getClient()->run($this, $command); - $format = new PrettyFormat(); - - return $format->parse($output); - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Statistics/Contributors.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Statistics/Contributors.php deleted file mode 100644 index 36cb46b..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Statistics/Contributors.php +++ /dev/null @@ -1,39 +0,0 @@ -getAuthor()->getEmail(); - $commitDate = $commit->getCommiterDate()->format('Y-m-d'); - - if (!isset($this->items[$email])) { - $this->items[$email] = new Collection(); - } - - $this->items[$email]->items[$commitDate][] = $commit; - ksort($this->items[$email]->items); - } - - public function sortCommits() - { - uasort($this->items, function ($sortA, $sortB) { - if (count($sortA) === count($sortB)) { - return 0; - } - - return count($sortA) > count($sortB) ? -1 : 1; - }); - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Statistics/Date.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Statistics/Date.php deleted file mode 100644 index a6243c0..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Statistics/Date.php +++ /dev/null @@ -1,27 +0,0 @@ -getCommiterDate()->format('Y-m-d'); - - $this->items[$day][] = $commit; - } - - public function sortCommits() - { - ksort($this->items); - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Statistics/Day.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Statistics/Day.php deleted file mode 100644 index 5c72f7d..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Statistics/Day.php +++ /dev/null @@ -1,27 +0,0 @@ -getCommiterDate()->format('N'); - - $this->items[$day][] = $commit; - } - - public function sortCommits() - { - ksort($this->items); - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Statistics/Hour.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Statistics/Hour.php deleted file mode 100644 index 7c2c8aa..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Statistics/Hour.php +++ /dev/null @@ -1,27 +0,0 @@ -getCommiterDate()->format('H'); - - $this->items[$hour][] = $commit; - } - - public function sortCommits() - { - ksort($this->items); - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Statistics/StatisticsInterface.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Statistics/StatisticsInterface.php deleted file mode 100644 index 76e512a..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Statistics/StatisticsInterface.php +++ /dev/null @@ -1,12 +0,0 @@ -items; - } - - /** - * @param array $items - */ - public function setItems($items) - { - $this->items = $items; - } - - /** - * {@inheritdoc} - */ - public function offsetExists($offset) - { - return isset($this->items[$offset]); - } - - /** - * {@inheritdoc} - */ - public function offsetGet($offset) - { - return isset($this->items[$offset]); - } - - /** - * {@inheritdoc} - */ - public function offsetSet($offset, $value) - { - if (null === $offset) { - $this->items[] = $value; - } else { - $this->items[$offset] = $value; - } - } - - /** - * {@inheritdoc} - */ - public function offsetUnset($offset) - { - unset($this->items[$offset]); - } - - /** - * {@inheritdoc} - */ - public function getIterator() - { - return new \ArrayIterator($this->items); - } - - /** - * {@inheritdoc} - */ - public function count() - { - return count($this->items); - } -} diff --git a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Util/DateTime.php b/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Util/DateTime.php deleted file mode 100644 index f9813b0..0000000 --- a/application/modules/gitlist/vendor/klaussilveira/gitter/lib/Gitter/Util/DateTime.php +++ /dev/null @@ -1,70 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Gitter\Util; - -/** - * Fixes the issue that the $timezone parameter and the current timezone are ignored when - * the $time parameter either is a UNIX timestamp (e.g. @946684800) or specifies a timezone - * (e.g. 2010-01-28T15:00:00+02:00). - * - * @see https://github.com/klaussilveira/gitlist/issues/140 - */ -class DateTime extends \DateTime -{ - /** - * @const The regular expression for an UNIX timestamp - */ - const UNIX_TIMESTAMP_PATTERN = '/^@\d+$/'; - - /** - * @param string $time a date/time string - * @param DateTimeZone $timezone a DateTimeZone object representing the desired time zone - * - * @return DateTime a new DateTime instance - * - * @see http://php.net/manual/en/datetime.construct.php - */ - public function __construct($time = 'now', \DateTimeZone $timezone = null) - { - if ($timezone) { - parent::__construct($time, $timezone); - } else { - parent::__construct($time); - } - - if ($this->isUnixTimestamp($time)) { - if (!$timezone) { - $timezone = new \DateTimeZone(date_default_timezone_get()); - } - - $this->setTimezone($timezone); - } - } - - /** - * Checks if an UNIX timestamp is passed. - * - * @param string $time a date/time string - * - * @return bool Returns true if the $time parameter is a UNIX timestamp - */ - protected function isUnixTimestamp($time) - { - if (preg_match(self::UNIX_TIMESTAMP_PATTERN, $time)) { - return true; - } - - return false; - } -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/LICENSE b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/LICENSE deleted file mode 100644 index 792e404..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2010 Mike van Riel - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/README.md b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/README.md deleted file mode 100644 index 6405d1a..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/README.md +++ /dev/null @@ -1,57 +0,0 @@ -The ReflectionDocBlock Component [![Build Status](https://secure.travis-ci.org/phpDocumentor/ReflectionDocBlock.png)](https://travis-ci.org/phpDocumentor/ReflectionDocBlock) -================================ - -Introduction ------------- - -The ReflectionDocBlock component of phpDocumentor provides a DocBlock parser -that is 100% compatible with the [PHPDoc standard](http://phpdoc.org/docs/latest). - -With this component, a library can provide support for annotations via DocBlocks -or otherwise retrieve information that is embedded in a DocBlock. - -> **Note**: *this is a core component of phpDocumentor and is constantly being -> optimized for performance.* - -Installation ------------- - -You can install the component in the following ways: - -* Use the official Github repository (https://github.com/phpDocumentor/ReflectionDocBlock) -* Via Composer (http://packagist.org/packages/phpdocumentor/reflection-docblock) - -Usage ------ - -The ReflectionDocBlock component is designed to work in an identical fashion to -PHP's own Reflection extension (http://php.net/manual/en/book.reflection.php). - -Parsing can be initiated by instantiating the -`\phpDocumentor\Reflection\DocBlock()` class and passing it a string containing -a DocBlock (including asterisks) or by passing an object supporting the -`getDocComment()` method. - -> *Examples of objects having the `getDocComment()` method are the -> `ReflectionClass` and the `ReflectionMethod` classes of the PHP -> Reflection extension* - -Example: - - $class = new ReflectionClass('MyClass'); - $phpdoc = new \phpDocumentor\Reflection\DocBlock($class); - -or - - $docblock = << - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection; - -use phpDocumentor\Reflection\DocBlock\Tag; -use phpDocumentor\Reflection\DocBlock\Context; -use phpDocumentor\Reflection\DocBlock\Location; - -/** - * Parses the DocBlock for any structure. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class DocBlock implements \Reflector -{ - /** @var string The opening line for this docblock. */ - protected $short_description = ''; - - /** - * @var DocBlock\Description The actual - * description for this docblock. - */ - protected $long_description = null; - - /** - * @var Tag[] An array containing all - * the tags in this docblock; except inline. - */ - protected $tags = array(); - - /** @var Context Information about the context of this DocBlock. */ - protected $context = null; - - /** @var Location Information about the location of this DocBlock. */ - protected $location = null; - - /** @var bool Is this DocBlock (the start of) a template? */ - protected $isTemplateStart = false; - - /** @var bool Does this DocBlock signify the end of a DocBlock template? */ - protected $isTemplateEnd = false; - - /** - * Parses the given docblock and populates the member fields. - * - * The constructor may also receive namespace information such as the - * current namespace and aliases. This information is used by some tags - * (e.g. @return, @param, etc.) to turn a relative Type into a FQCN. - * - * @param \Reflector|string $docblock A docblock comment (including - * asterisks) or reflector supporting the getDocComment method. - * @param Context $context The context in which the DocBlock - * occurs. - * @param Location $location The location within the file that this - * DocBlock occurs in. - * - * @throws \InvalidArgumentException if the given argument does not have the - * getDocComment method. - */ - public function __construct( - $docblock, - Context $context = null, - Location $location = null - ) { - if (is_object($docblock)) { - if (!method_exists($docblock, 'getDocComment')) { - throw new \InvalidArgumentException( - 'Invalid object passed; the given reflector must support ' - . 'the getDocComment method' - ); - } - - $docblock = $docblock->getDocComment(); - } - - $docblock = $this->cleanInput($docblock); - - list($templateMarker, $short, $long, $tags) = $this->splitDocBlock($docblock); - $this->isTemplateStart = $templateMarker === '#@+'; - $this->isTemplateEnd = $templateMarker === '#@-'; - $this->short_description = $short; - $this->long_description = new DocBlock\Description($long, $this); - $this->parseTags($tags); - - $this->context = $context; - $this->location = $location; - } - - /** - * Strips the asterisks from the DocBlock comment. - * - * @param string $comment String containing the comment text. - * - * @return string - */ - protected function cleanInput($comment) - { - $comment = trim( - preg_replace( - '#[ \t]*(?:\/\*\*|\*\/|\*)?[ \t]{0,1}(.*)?#u', - '$1', - $comment - ) - ); - - // reg ex above is not able to remove */ from a single line docblock - if (substr($comment, -2) == '*/') { - $comment = trim(substr($comment, 0, -2)); - } - - // normalize strings - $comment = str_replace(array("\r\n", "\r"), "\n", $comment); - - return $comment; - } - - /** - * Splits the DocBlock into a template marker, summary, description and block of tags. - * - * @param string $comment Comment to split into the sub-parts. - * - * @author Richard van Velzen (@_richardJ) Special thanks to Richard for the regex responsible for the split. - * @author Mike van Riel for extending the regex with template marker support. - * - * @return string[] containing the template marker (if any), summary, description and a string containing the tags. - */ - protected function splitDocBlock($comment) - { - // Performance improvement cheat: if the first character is an @ then only tags are in this DocBlock. This - // method does not split tags so we return this verbatim as the fourth result (tags). This saves us the - // performance impact of running a regular expression - if (strpos($comment, '@') === 0) { - return array('', '', '', $comment); - } - - // clears all extra horizontal whitespace from the line endings to prevent parsing issues - $comment = preg_replace('/\h*$/Sum', '', $comment); - - /* - * Splits the docblock into a template marker, short description, long description and tags section - * - * - The template marker is empty, #@+ or #@- if the DocBlock starts with either of those (a newline may - * occur after it and will be stripped). - * - The short description is started from the first character until a dot is encountered followed by a - * newline OR two consecutive newlines (horizontal whitespace is taken into account to consider spacing - * errors). This is optional. - * - The long description, any character until a new line is encountered followed by an @ and word - * characters (a tag). This is optional. - * - Tags; the remaining characters - * - * Big thanks to RichardJ for contributing this Regular Expression - */ - preg_match( - '/ - \A - # 1. Extract the template marker - (?:(\#\@\+|\#\@\-)\n?)? - - # 2. Extract the summary - (?: - (?! @\pL ) # The summary may not start with an @ - ( - [^\n.]+ - (?: - (?! \. \n | \n{2} ) # End summary upon a dot followed by newline or two newlines - [\n.] (?! [ \t]* @\pL ) # End summary when an @ is found as first character on a new line - [^\n.]+ # Include anything else - )* - \.? - )? - ) - - # 3. Extract the description - (?: - \s* # Some form of whitespace _must_ precede a description because a summary must be there - (?! @\pL ) # The description may not start with an @ - ( - [^\n]+ - (?: \n+ - (?! [ \t]* @\pL ) # End description when an @ is found as first character on a new line - [^\n]+ # Include anything else - )* - ) - )? - - # 4. Extract the tags (anything that follows) - (\s+ [\s\S]*)? # everything that follows - /ux', - $comment, - $matches - ); - array_shift($matches); - - while (count($matches) < 4) { - $matches[] = ''; - } - - return $matches; - } - - /** - * Creates the tag objects. - * - * @param string $tags Tag block to parse. - * - * @return void - */ - protected function parseTags($tags) - { - $result = array(); - $tags = trim($tags); - if ('' !== $tags) { - if ('@' !== $tags[0]) { - throw new \LogicException( - 'A tag block started with text instead of an actual tag,' - . ' this makes the tag block invalid: ' . $tags - ); - } - foreach (explode("\n", $tags) as $tag_line) { - if (isset($tag_line[0]) && ($tag_line[0] === '@')) { - $result[] = $tag_line; - } else { - $result[count($result) - 1] .= "\n" . $tag_line; - } - } - - // create proper Tag objects - foreach ($result as $key => $tag_line) { - $result[$key] = Tag::createInstance(trim($tag_line), $this); - } - } - - $this->tags = $result; - } - - /** - * Gets the text portion of the doc block. - * - * Gets the text portion (short and long description combined) of the doc - * block. - * - * @return string The text portion of the doc block. - */ - public function getText() - { - $short = $this->getShortDescription(); - $long = $this->getLongDescription()->getContents(); - - if ($long) { - return "{$short}\n\n{$long}"; - } else { - return $short; - } - } - - /** - * Set the text portion of the doc block. - * - * Sets the text portion (short and long description combined) of the doc - * block. - * - * @param string $docblock The new text portion of the doc block. - * - * @return $this This doc block. - */ - public function setText($comment) - { - list(,$short, $long) = $this->splitDocBlock($comment); - $this->short_description = $short; - $this->long_description = new DocBlock\Description($long, $this); - return $this; - } - /** - * Returns the opening line or also known as short description. - * - * @return string - */ - public function getShortDescription() - { - return $this->short_description; - } - - /** - * Returns the full description or also known as long description. - * - * @return DocBlock\Description - */ - public function getLongDescription() - { - return $this->long_description; - } - - /** - * Returns whether this DocBlock is the start of a Template section. - * - * A Docblock may serve as template for a series of subsequent DocBlocks. This is indicated by a special marker - * (`#@+`) that is appended directly after the opening `/**` of a DocBlock. - * - * An example of such an opening is: - * - * ``` - * /**#@+ - * * My DocBlock - * * / - * ``` - * - * The description and tags (not the summary!) are copied onto all subsequent DocBlocks and also applied to all - * elements that follow until another DocBlock is found that contains the closing marker (`#@-`). - * - * @see self::isTemplateEnd() for the check whether a closing marker was provided. - * - * @return boolean - */ - public function isTemplateStart() - { - return $this->isTemplateStart; - } - - /** - * Returns whether this DocBlock is the end of a Template section. - * - * @see self::isTemplateStart() for a more complete description of the Docblock Template functionality. - * - * @return boolean - */ - public function isTemplateEnd() - { - return $this->isTemplateEnd; - } - - /** - * Returns the current context. - * - * @return Context - */ - public function getContext() - { - return $this->context; - } - - /** - * Returns the current location. - * - * @return Location - */ - public function getLocation() - { - return $this->location; - } - - /** - * Returns the tags for this DocBlock. - * - * @return Tag[] - */ - public function getTags() - { - return $this->tags; - } - - /** - * Returns an array of tags matching the given name. If no tags are found - * an empty array is returned. - * - * @param string $name String to search by. - * - * @return Tag[] - */ - public function getTagsByName($name) - { - $result = array(); - - /** @var Tag $tag */ - foreach ($this->getTags() as $tag) { - if ($tag->getName() != $name) { - continue; - } - - $result[] = $tag; - } - - return $result; - } - - /** - * Checks if a tag of a certain type is present in this DocBlock. - * - * @param string $name Tag name to check for. - * - * @return bool - */ - public function hasTag($name) - { - /** @var Tag $tag */ - foreach ($this->getTags() as $tag) { - if ($tag->getName() == $name) { - return true; - } - } - - return false; - } - - /** - * Appends a tag at the end of the list of tags. - * - * @param Tag $tag The tag to add. - * - * @return Tag The newly added tag. - * - * @throws \LogicException When the tag belongs to a different DocBlock. - */ - public function appendTag(Tag $tag) - { - if (null === $tag->getDocBlock()) { - $tag->setDocBlock($this); - } - - if ($tag->getDocBlock() === $this) { - $this->tags[] = $tag; - } else { - throw new \LogicException( - 'This tag belongs to a different DocBlock object.' - ); - } - - return $tag; - } - - - /** - * Builds a string representation of this object. - * - * @todo determine the exact format as used by PHP Reflection and - * implement it. - * - * @return string - * @codeCoverageIgnore Not yet implemented - */ - public static function export() - { - throw new \Exception('Not yet implemented'); - } - - /** - * Returns the exported information (we should use the export static method - * BUT this throws an exception at this point). - * - * @return string - * @codeCoverageIgnore Not yet implemented - */ - public function __toString() - { - return 'Not yet implemented'; - } -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Context.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Context.php deleted file mode 100644 index 81aa83c..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Context.php +++ /dev/null @@ -1,154 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock; - -/** - * The context in which a DocBlock occurs. - * - * @author Vasil Rangelov - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class Context -{ - /** @var string The current namespace. */ - protected $namespace = ''; - - /** @var array List of namespace aliases => Fully Qualified Namespace. */ - protected $namespace_aliases = array(); - - /** @var string Name of the structural element, within the namespace. */ - protected $lsen = ''; - - /** - * Cteates a new context. - * @param string $namespace The namespace where this DocBlock - * resides in. - * @param array $namespace_aliases List of namespace aliases => Fully - * Qualified Namespace. - * @param string $lsen Name of the structural element, within - * the namespace. - */ - public function __construct( - $namespace = '', - array $namespace_aliases = array(), - $lsen = '' - ) { - if (!empty($namespace)) { - $this->setNamespace($namespace); - } - $this->setNamespaceAliases($namespace_aliases); - $this->setLSEN($lsen); - } - - /** - * @return string The namespace where this DocBlock resides in. - */ - public function getNamespace() - { - return $this->namespace; - } - - /** - * @return array List of namespace aliases => Fully Qualified Namespace. - */ - public function getNamespaceAliases() - { - return $this->namespace_aliases; - } - - /** - * Returns the Local Structural Element Name. - * - * @return string Name of the structural element, within the namespace. - */ - public function getLSEN() - { - return $this->lsen; - } - - /** - * Sets a new namespace. - * - * Sets a new namespace for the context. Leading and trailing slashes are - * trimmed, and the keywords "global" and "default" are treated as aliases - * to no namespace. - * - * @param string $namespace The new namespace to set. - * - * @return $this - */ - public function setNamespace($namespace) - { - if ('global' !== $namespace - && 'default' !== $namespace - ) { - // Srip leading and trailing slash - $this->namespace = trim((string)$namespace, '\\'); - } else { - $this->namespace = ''; - } - return $this; - } - - /** - * Sets the namespace aliases, replacing all previous ones. - * - * @param array $namespace_aliases List of namespace aliases => Fully - * Qualified Namespace. - * - * @return $this - */ - public function setNamespaceAliases(array $namespace_aliases) - { - $this->namespace_aliases = array(); - foreach ($namespace_aliases as $alias => $fqnn) { - $this->setNamespaceAlias($alias, $fqnn); - } - return $this; - } - - /** - * Adds a namespace alias to the context. - * - * @param string $alias The alias name (the part after "as", or the last - * part of the Fully Qualified Namespace Name) to add. - * @param string $fqnn The Fully Qualified Namespace Name for this alias. - * Any form of leading/trailing slashes are accepted, but what will be - * stored is a name, prefixed with a slash, and no trailing slash. - * - * @return $this - */ - public function setNamespaceAlias($alias, $fqnn) - { - $this->namespace_aliases[$alias] = '\\' . trim((string)$fqnn, '\\'); - return $this; - } - - /** - * Sets a new Local Structural Element Name. - * - * Sets a new Local Structural Element Name. A local name also contains - * punctuation determining the kind of structural element (e.g. trailing "(" - * and ")" for functions and methods). - * - * @param string $lsen The new local name of a structural element. - * - * @return $this - */ - public function setLSEN($lsen) - { - $this->lsen = (string)$lsen; - return $this; - } -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Description.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Description.php deleted file mode 100644 index d41142e..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Description.php +++ /dev/null @@ -1,223 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock; - -use phpDocumentor\Reflection\DocBlock; - -/** - * Parses a Description of a DocBlock or tag. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class Description implements \Reflector -{ - /** @var string */ - protected $contents = ''; - - /** @var array The contents, as an array of strings and Tag objects. */ - protected $parsedContents = null; - - /** @var DocBlock The DocBlock which this description belongs to. */ - protected $docblock = null; - - /** - * Populates the fields of a description. - * - * @param string $content The description's conetnts. - * @param DocBlock $docblock The DocBlock which this description belongs to. - */ - public function __construct($content, DocBlock $docblock = null) - { - $this->setContent($content)->setDocBlock($docblock); - } - - /** - * Gets the text of this description. - * - * @return string - */ - public function getContents() - { - return $this->contents; - } - - /** - * Sets the text of this description. - * - * @param string $content The new text of this description. - * - * @return $this - */ - public function setContent($content) - { - $this->contents = trim($content); - - $this->parsedContents = null; - return $this; - } - - /** - * Returns the parsed text of this description. - * - * @return array An array of strings and tag objects, in the order they - * occur within the description. - */ - public function getParsedContents() - { - if (null === $this->parsedContents) { - $this->parsedContents = preg_split( - '/\{ - # "{@}" is not a valid inline tag. This ensures that - # we do not treat it as one, but treat it literally. - (?!@\}) - # We want to capture the whole tag line, but without the - # inline tag delimiters. - (\@ - # Match everything up to the next delimiter. - [^{}]* - # Nested inline tag content should not be captured, or - # it will appear in the result separately. - (?: - # Match nested inline tags. - (?: - # Because we did not catch the tag delimiters - # earlier, we must be explicit with them here. - # Notice that this also matches "{}", as a way - # to later introduce it as an escape sequence. - \{(?1)?\} - | - # Make sure we match hanging "{". - \{ - ) - # Match content after the nested inline tag. - [^{}]* - )* # If there are more inline tags, match them as well. - # We use "*" since there may not be any nested inline - # tags. - ) - \}/Sux', - $this->contents, - null, - PREG_SPLIT_DELIM_CAPTURE - ); - - $count = count($this->parsedContents); - for ($i=1; $i<$count; $i += 2) { - $this->parsedContents[$i] = Tag::createInstance( - $this->parsedContents[$i], - $this->docblock - ); - } - - //In order to allow "literal" inline tags, the otherwise invalid - //sequence "{@}" is changed to "@", and "{}" is changed to "}". - //See unit tests for examples. - for ($i=0; $i<$count; $i += 2) { - $this->parsedContents[$i] = str_replace( - array('{@}', '{}'), - array('@', '}'), - $this->parsedContents[$i] - ); - } - } - return $this->parsedContents; - } - - /** - * Return a formatted variant of the Long Description using MarkDown. - * - * @todo this should become a more intelligent piece of code where the - * configuration contains a setting what format long descriptions are. - * - * @codeCoverageIgnore Will be removed soon, in favor of adapters at - * PhpDocumentor itself that will process text in various formats. - * - * @return string - */ - public function getFormattedContents() - { - $result = $this->contents; - - // if the long description contains a plain HTML element, surround - // it with a pre element. Please note that we explicitly used str_replace - // and not preg_replace to gain performance - if (strpos($result, '') !== false) { - $result = str_replace( - array('', "\r\n", "\n", "\r", ''), - array('
', '', '', '', '
'), - $result - ); - } - - if (class_exists('Parsedown')) { - $markdown = \Parsedown::instance(); - $result = $markdown->parse($result); - } elseif (class_exists('dflydev\markdown\MarkdownExtraParser')) { - $markdown = new \dflydev\markdown\MarkdownExtraParser(); - $result = $markdown->transformMarkdown($result); - } - - return trim($result); - } - - /** - * Gets the docblock this tag belongs to. - * - * @return DocBlock The docblock this description belongs to. - */ - public function getDocBlock() - { - return $this->docblock; - } - - /** - * Sets the docblock this tag belongs to. - * - * @param DocBlock $docblock The new docblock this description belongs to. - * Setting NULL removes any association. - * - * @return $this - */ - public function setDocBlock(DocBlock $docblock = null) - { - $this->docblock = $docblock; - - return $this; - } - - /** - * Builds a string representation of this object. - * - * @todo determine the exact format as used by PHP Reflection - * and implement it. - * - * @return void - * @codeCoverageIgnore Not yet implemented - */ - public static function export() - { - throw new \Exception('Not yet implemented'); - } - - /** - * Returns the long description as a string. - * - * @return string - */ - public function __toString() - { - return $this->getContents(); - } -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Location.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Location.php deleted file mode 100644 index 966ed44..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Location.php +++ /dev/null @@ -1,76 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock; - -/** - * The location a DocBlock occurs within a file. - * - * @author Vasil Rangelov - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class Location -{ - /** @var int Line where the DocBlock text starts. */ - protected $lineNumber = 0; - - /** @var int Column where the DocBlock text starts. */ - protected $columnNumber = 0; - - public function __construct( - $lineNumber = 0, - $columnNumber = 0 - ) { - $this->setLineNumber($lineNumber)->setColumnNumber($columnNumber); - } - - /** - * @return int Line where the DocBlock text starts. - */ - public function getLineNumber() - { - return $this->lineNumber; - } - - /** - * - * @param type $lineNumber - * @return $this - */ - public function setLineNumber($lineNumber) - { - $this->lineNumber = (int)$lineNumber; - - return $this; - } - - /** - * @return int Column where the DocBlock text starts. - */ - public function getColumnNumber() - { - return $this->columnNumber; - } - - /** - * - * @param int $columnNumber - * @return $this - */ - public function setColumnNumber($columnNumber) - { - $this->columnNumber = (int)$columnNumber; - - return $this; - } -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Serializer.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Serializer.php deleted file mode 100644 index c161785..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Serializer.php +++ /dev/null @@ -1,198 +0,0 @@ - - * @copyright 2013 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock; - -use phpDocumentor\Reflection\DocBlock; - -/** - * Serializes a DocBlock instance. - * - * @author Barry vd. Heuvel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class Serializer -{ - - /** @var string The string to indent the comment with. */ - protected $indentString = ' '; - - /** @var int The number of times the indent string is repeated. */ - protected $indent = 0; - - /** @var bool Whether to indent the first line. */ - protected $isFirstLineIndented = true; - - /** @var int|null The max length of a line. */ - protected $lineLength = null; - - /** - * Create a Serializer instance. - * - * @param int $indent The number of times the indent string is - * repeated. - * @param string $indentString The string to indent the comment with. - * @param bool $indentFirstLine Whether to indent the first line. - * @param int|null $lineLength The max length of a line or NULL to - * disable line wrapping. - */ - public function __construct( - $indent = 0, - $indentString = ' ', - $indentFirstLine = true, - $lineLength = null - ) { - $this->setIndentationString($indentString); - $this->setIndent($indent); - $this->setIsFirstLineIndented($indentFirstLine); - $this->setLineLength($lineLength); - } - - /** - * Sets the string to indent comments with. - * - * @param string $indentationString The string to indent comments with. - * - * @return $this This serializer object. - */ - public function setIndentationString($indentString) - { - $this->indentString = (string)$indentString; - return $this; - } - - /** - * Gets the string to indent comments with. - * - * @return string The indent string. - */ - public function getIndentationString() - { - return $this->indentString; - } - - /** - * Sets the number of indents. - * - * @param int $indent The number of times the indent string is repeated. - * - * @return $this This serializer object. - */ - public function setIndent($indent) - { - $this->indent = (int)$indent; - return $this; - } - - /** - * Gets the number of indents. - * - * @return int The number of times the indent string is repeated. - */ - public function getIndent() - { - return $this->indent; - } - - /** - * Sets whether or not the first line should be indented. - * - * Sets whether or not the first line (the one with the "/**") should be - * indented. - * - * @param bool $indentFirstLine The new value for this setting. - * - * @return $this This serializer object. - */ - public function setIsFirstLineIndented($indentFirstLine) - { - $this->isFirstLineIndented = (bool)$indentFirstLine; - return $this; - } - - /** - * Gets whether or not the first line should be indented. - * - * @return bool Whether or not the first line should be indented. - */ - public function isFirstLineIndented() - { - return $this->isFirstLineIndented; - } - - /** - * Sets the line length. - * - * Sets the length of each line in the serialization. Content will be - * wrapped within this limit. - * - * @param int|null $lineLength The length of each line. NULL to disable line - * wrapping altogether. - * - * @return $this This serializer object. - */ - public function setLineLength($lineLength) - { - $this->lineLength = null === $lineLength ? null : (int)$lineLength; - return $this; - } - - /** - * Gets the line length. - * - * @return int|null The length of each line or NULL if line wrapping is - * disabled. - */ - public function getLineLength() - { - return $this->lineLength; - } - - /** - * Generate a DocBlock comment. - * - * @param DocBlock The DocBlock to serialize. - * - * @return string The serialized doc block. - */ - public function getDocComment(DocBlock $docblock) - { - $indent = str_repeat($this->indentString, $this->indent); - $firstIndent = $this->isFirstLineIndented ? $indent : ''; - - $text = $docblock->getText(); - if ($this->lineLength) { - //3 === strlen(' * ') - $wrapLength = $this->lineLength - strlen($indent) - 3; - $text = wordwrap($text, $wrapLength); - } - $text = str_replace("\n", "\n{$indent} * ", $text); - - $comment = "{$firstIndent}/**\n{$indent} * {$text}\n{$indent} *\n"; - - /** @var Tag $tag */ - foreach ($docblock->getTags() as $tag) { - $tagText = (string) $tag; - if ($this->lineLength) { - $tagText = wordwrap($tagText, $wrapLength); - } - $tagText = str_replace("\n", "\n{$indent} * ", $tagText); - - $comment .= "{$indent} * {$tagText}\n"; - } - - $comment .= $indent . ' */'; - - return $comment; - } -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag.php deleted file mode 100644 index a96db09..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag.php +++ /dev/null @@ -1,377 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock; - -use phpDocumentor\Reflection\DocBlock; - -/** - * Parses a tag definition for a DocBlock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class Tag implements \Reflector -{ - /** - * PCRE regular expression matching a tag name. - */ - const REGEX_TAGNAME = '[\w\-\_\\\\]+'; - - /** @var string Name of the tag */ - protected $tag = ''; - - /** - * @var string|null Content of the tag. - * When set to NULL, it means it needs to be regenerated. - */ - protected $content = ''; - - /** @var string Description of the content of this tag */ - protected $description = ''; - - /** - * @var array|null The description, as an array of strings and Tag objects. - * When set to NULL, it means it needs to be regenerated. - */ - protected $parsedDescription = null; - - /** @var Location Location of the tag. */ - protected $location = null; - - /** @var DocBlock The DocBlock which this tag belongs to. */ - protected $docblock = null; - - /** - * @var array An array with a tag as a key, and an FQCN to a class that - * handles it as an array value. The class is expected to inherit this - * class. - */ - private static $tagHandlerMappings = array( - 'author' - => '\phpDocumentor\Reflection\DocBlock\Tag\AuthorTag', - 'covers' - => '\phpDocumentor\Reflection\DocBlock\Tag\CoversTag', - 'deprecated' - => '\phpDocumentor\Reflection\DocBlock\Tag\DeprecatedTag', - 'example' - => '\phpDocumentor\Reflection\DocBlock\Tag\ExampleTag', - 'link' - => '\phpDocumentor\Reflection\DocBlock\Tag\LinkTag', - 'method' - => '\phpDocumentor\Reflection\DocBlock\Tag\MethodTag', - 'param' - => '\phpDocumentor\Reflection\DocBlock\Tag\ParamTag', - 'property-read' - => '\phpDocumentor\Reflection\DocBlock\Tag\PropertyReadTag', - 'property' - => '\phpDocumentor\Reflection\DocBlock\Tag\PropertyTag', - 'property-write' - => '\phpDocumentor\Reflection\DocBlock\Tag\PropertyWriteTag', - 'return' - => '\phpDocumentor\Reflection\DocBlock\Tag\ReturnTag', - 'see' - => '\phpDocumentor\Reflection\DocBlock\Tag\SeeTag', - 'since' - => '\phpDocumentor\Reflection\DocBlock\Tag\SinceTag', - 'source' - => '\phpDocumentor\Reflection\DocBlock\Tag\SourceTag', - 'throw' - => '\phpDocumentor\Reflection\DocBlock\Tag\ThrowsTag', - 'throws' - => '\phpDocumentor\Reflection\DocBlock\Tag\ThrowsTag', - 'uses' - => '\phpDocumentor\Reflection\DocBlock\Tag\UsesTag', - 'var' - => '\phpDocumentor\Reflection\DocBlock\Tag\VarTag', - 'version' - => '\phpDocumentor\Reflection\DocBlock\Tag\VersionTag' - ); - - /** - * Factory method responsible for instantiating the correct sub type. - * - * @param string $tag_line The text for this tag, including description. - * @param DocBlock $docblock The DocBlock which this tag belongs to. - * @param Location $location Location of the tag. - * - * @throws \InvalidArgumentException if an invalid tag line was presented. - * - * @return static A new tag object. - */ - final public static function createInstance( - $tag_line, - DocBlock $docblock = null, - Location $location = null - ) { - if (!preg_match( - '/^@(' . self::REGEX_TAGNAME . ')(?:\s*([^\s].*)|$)?/us', - $tag_line, - $matches - )) { - throw new \InvalidArgumentException( - 'Invalid tag_line detected: ' . $tag_line - ); - } - - $handler = __CLASS__; - if (isset(self::$tagHandlerMappings[$matches[1]])) { - $handler = self::$tagHandlerMappings[$matches[1]]; - } elseif (isset($docblock)) { - $tagName = (string)new Type\Collection( - array($matches[1]), - $docblock->getContext() - ); - - if (isset(self::$tagHandlerMappings[$tagName])) { - $handler = self::$tagHandlerMappings[$tagName]; - } - } - - return new $handler( - $matches[1], - isset($matches[2]) ? $matches[2] : '', - $docblock, - $location - ); - } - - /** - * Registers a handler for tags. - * - * Registers a handler for tags. The class specified is autoloaded if it's - * not available. It must inherit from this class. - * - * @param string $tag Name of tag to regiser a handler for. When - * registering a namespaced tag, the full name, along with a prefixing - * slash MUST be provided. - * @param string|null $handler FQCN of handler. Specifing NULL removes the - * handler for the specified tag, if any. - * - * @return bool TRUE on success, FALSE on failure. - */ - final public static function registerTagHandler($tag, $handler) - { - $tag = trim((string)$tag); - - if (null === $handler) { - unset(self::$tagHandlerMappings[$tag]); - return true; - } - - if ('' !== $tag - && class_exists($handler, true) - && is_subclass_of($handler, __CLASS__) - && !strpos($tag, '\\') //Accept no slash, and 1st slash at offset 0. - ) { - self::$tagHandlerMappings[$tag] = $handler; - return true; - } - - return false; - } - - /** - * Parses a tag and populates the member variables. - * - * @param string $name Name of the tag. - * @param string $content The contents of the given tag. - * @param DocBlock $docblock The DocBlock which this tag belongs to. - * @param Location $location Location of the tag. - */ - public function __construct( - $name, - $content, - DocBlock $docblock = null, - Location $location = null - ) { - $this - ->setName($name) - ->setContent($content) - ->setDocBlock($docblock) - ->setLocation($location); - } - - /** - * Gets the name of this tag. - * - * @return string The name of this tag. - */ - public function getName() - { - return $this->tag; - } - - /** - * Sets the name of this tag. - * - * @param string $name The new name of this tag. - * - * @return $this - * @throws \InvalidArgumentException When an invalid tag name is provided. - */ - public function setName($name) - { - if (!preg_match('/^' . self::REGEX_TAGNAME . '$/u', $name)) { - throw new \InvalidArgumentException( - 'Invalid tag name supplied: ' . $name - ); - } - - $this->tag = $name; - - return $this; - } - - /** - * Gets the content of this tag. - * - * @return string - */ - public function getContent() - { - if (null === $this->content) { - $this->content = $this->description; - } - - return $this->content; - } - - /** - * Sets the content of this tag. - * - * @param string $content The new content of this tag. - * - * @return $this - */ - public function setContent($content) - { - $this->setDescription($content); - $this->content = $content; - - return $this; - } - - /** - * Gets the description component of this tag. - * - * @return string - */ - public function getDescription() - { - return $this->description; - } - - /** - * Sets the description component of this tag. - * - * @param string $description The new description component of this tag. - * - * @return $this - */ - public function setDescription($description) - { - $this->content = null; - $this->parsedDescription = null; - $this->description = trim($description); - - return $this; - } - - /** - * Gets the parsed text of this description. - * - * @return array An array of strings and tag objects, in the order they - * occur within the description. - */ - public function getParsedDescription() - { - if (null === $this->parsedDescription) { - $description = new Description($this->description, $this->docblock); - $this->parsedDescription = $description->getParsedContents(); - } - return $this->parsedDescription; - } - - /** - * Gets the docblock this tag belongs to. - * - * @return DocBlock The docblock this tag belongs to. - */ - public function getDocBlock() - { - return $this->docblock; - } - - /** - * Sets the docblock this tag belongs to. - * - * @param DocBlock $docblock The new docblock this tag belongs to. Setting - * NULL removes any association. - * - * @return $this - */ - public function setDocBlock(DocBlock $docblock = null) - { - $this->docblock = $docblock; - - return $this; - } - - /** - * Gets the location of the tag. - * - * @return Location The tag's location. - */ - public function getLocation() - { - return $this->location; - } - - /** - * Sets the location of the tag. - * - * @param Location $location The new location of the tag. - * - * @return $this - */ - public function setLocation(Location $location = null) - { - $this->location = $location; - - return $this; - } - - /** - * Builds a string representation of this object. - * - * @todo determine the exact format as used by PHP Reflection and implement it. - * - * @return void - * @codeCoverageIgnore Not yet implemented - */ - public static function export() - { - throw new \Exception('Not yet implemented'); - } - - /** - * Returns the tag as a serialized string - * - * @return string - */ - public function __toString() - { - return "@{$this->getName()} {$this->getContent()}"; - } -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/AuthorTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/AuthorTag.php deleted file mode 100644 index bacf52e..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/AuthorTag.php +++ /dev/null @@ -1,131 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for an @author tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class AuthorTag extends Tag -{ - /** - * PCRE regular expression matching any valid value for the name component. - */ - const REGEX_AUTHOR_NAME = '[^\<]*'; - - /** - * PCRE regular expression matching any valid value for the email component. - */ - const REGEX_AUTHOR_EMAIL = '[^\>]*'; - - /** @var string The name of the author */ - protected $authorName = ''; - - /** @var string The email of the author */ - protected $authorEmail = ''; - - public function getContent() - { - if (null === $this->content) { - $this->content = $this->authorName; - if ('' != $this->authorEmail) { - $this->content .= "<{$this->authorEmail}>"; - } - } - - return $this->content; - } - - /** - * {@inheritdoc} - */ - public function setContent($content) - { - parent::setContent($content); - if (preg_match( - '/^(' . self::REGEX_AUTHOR_NAME . - ')(\<(' . self::REGEX_AUTHOR_EMAIL . - ')\>)?$/u', - $this->description, - $matches - )) { - $this->authorName = trim($matches[1]); - if (isset($matches[3])) { - $this->authorEmail = trim($matches[3]); - } - } - - return $this; - } - - /** - * Gets the author's name. - * - * @return string The author's name. - */ - public function getAuthorName() - { - return $this->authorName; - } - - /** - * Sets the author's name. - * - * @param string $authorName The new author name. - * An invalid value will set an empty string. - * - * @return $this - */ - public function setAuthorName($authorName) - { - $this->content = null; - $this->authorName - = preg_match('/^' . self::REGEX_AUTHOR_NAME . '$/u', $authorName) - ? $authorName : ''; - - return $this; - } - - /** - * Gets the author's email. - * - * @return string The author's email. - */ - public function getAuthorEmail() - { - return $this->authorEmail; - } - - /** - * Sets the author's email. - * - * @param string $authorEmail The new author email. - * An invalid value will set an empty string. - * - * @return $this - */ - public function setAuthorEmail($authorEmail) - { - $this->authorEmail - = preg_match('/^' . self::REGEX_AUTHOR_EMAIL . '$/u', $authorEmail) - ? $authorEmail : ''; - - $this->content = null; - return $this; - } -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/CoversTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/CoversTag.php deleted file mode 100644 index bd31b56..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/CoversTag.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @covers tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class CoversTag extends SeeTag -{ -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/DeprecatedTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/DeprecatedTag.php deleted file mode 100644 index 7226316..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/DeprecatedTag.php +++ /dev/null @@ -1,26 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag\VersionTag; - -/** - * Reflection class for a @deprecated tag in a Docblock. - * - * @author Vasil Rangelov - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class DeprecatedTag extends VersionTag -{ -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ExampleTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ExampleTag.php deleted file mode 100644 index 0e163ea..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ExampleTag.php +++ /dev/null @@ -1,156 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @example tag in a Docblock. - * - * @author Vasil Rangelov - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class ExampleTag extends SourceTag -{ - /** - * @var string Path to a file to use as an example. - * May also be an absolute URI. - */ - protected $filePath = ''; - - /** - * @var bool Whether the file path component represents an URI. - * This determines how the file portion appears at {@link getContent()}. - */ - protected $isURI = false; - - /** - * {@inheritdoc} - */ - public function getContent() - { - if (null === $this->content) { - $filePath = ''; - if ($this->isURI) { - if (false === strpos($this->filePath, ':')) { - $filePath = str_replace( - '%2F', - '/', - rawurlencode($this->filePath) - ); - } else { - $filePath = $this->filePath; - } - } else { - $filePath = '"' . $this->filePath . '"'; - } - - $this->content = $filePath . ' ' . parent::getContent(); - } - - return $this->content; - } - /** - * {@inheritdoc} - */ - public function setContent($content) - { - Tag::setContent($content); - if (preg_match( - '/^ - # File component - (?: - # File path in quotes - \"([^\"]+)\" - | - # File URI - (\S+) - ) - # Remaining content (parsed by SourceTag) - (?:\s+(.*))? - $/sux', - $this->description, - $matches - )) { - if ('' !== $matches[1]) { - $this->setFilePath($matches[1]); - } else { - $this->setFileURI($matches[2]); - } - - if (isset($matches[3])) { - parent::setContent($matches[3]); - } else { - $this->setDescription(''); - } - $this->content = $content; - } - - return $this; - } - - /** - * Returns the file path. - * - * @return string Path to a file to use as an example. - * May also be an absolute URI. - */ - public function getFilePath() - { - return $this->filePath; - } - - /** - * Sets the file path. - * - * @param string $filePath The new file path to use for the example. - * - * @return $this - */ - public function setFilePath($filePath) - { - $this->isURI = false; - $this->filePath = trim($filePath); - - $this->content = null; - return $this; - } - - /** - * Sets the file path as an URI. - * - * This function is equivalent to {@link setFilePath()}, except that it - * convers an URI to a file path before that. - * - * There is no getFileURI(), as {@link getFilePath()} is compatible. - * - * @param type $uri The new file URI to use as an example. - */ - public function setFileURI($uri) - { - $this->isURI = true; - if (false === strpos($uri, ':')) { - //Relative URL - $this->filePath = rawurldecode( - str_replace(array('/', '\\'), '%2F', $uri) - ); - } else { - //Absolute URL or URI. - $this->filePath = $uri; - } - - $this->content = null; - return $this; - } -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/LinkTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/LinkTag.php deleted file mode 100644 index f79f25d..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/LinkTag.php +++ /dev/null @@ -1,81 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @link tag in a Docblock. - * - * @author Ben Selby - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class LinkTag extends Tag -{ - /** @var string */ - protected $link = ''; - - /** - * {@inheritdoc} - */ - public function getContent() - { - if (null === $this->content) { - $this->content = "{$this->link} {$this->description}"; - } - - return $this->content; - } - - /** - * {@inheritdoc} - */ - public function setContent($content) - { - parent::setContent($content); - $parts = preg_split('/\s+/Su', $this->description, 2); - - $this->link = $parts[0]; - - $this->setDescription(isset($parts[1]) ? $parts[1] : $parts[0]); - - $this->content = $content; - return $this; - } - - /** - * Gets the link - * - * @return string - */ - public function getLink() - { - return $this->link; - } - - /** - * Sets the link - * - * @param string $link The link - * - * @return $this - */ - public function setLink($link) - { - $this->link = $link; - - $this->content = null; - return $this; - } -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/MethodTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/MethodTag.php deleted file mode 100644 index 7a5ce79..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/MethodTag.php +++ /dev/null @@ -1,209 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @method in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class MethodTag extends ReturnTag -{ - - /** @var string */ - protected $method_name = ''; - - /** @var string */ - protected $arguments = ''; - - /** @var bool */ - protected $isStatic = false; - - /** - * {@inheritdoc} - */ - public function getContent() - { - if (null === $this->content) { - $this->content = ''; - if ($this->isStatic) { - $this->content .= 'static '; - } - $this->content .= $this->type . - " {$this->method_name}({$this->arguments}) " . - $this->description; - } - - return $this->content; - } - - /** - * {@inheritdoc} - */ - public function setContent($content) - { - Tag::setContent($content); - // 1. none or more whitespace - // 2. optionally the keyword "static" followed by whitespace - // 3. optionally a word with underscores followed by whitespace : as - // type for the return value - // 4. then optionally a word with underscores followed by () and - // whitespace : as method name as used by phpDocumentor - // 5. then a word with underscores, followed by ( and any character - // until a ) and whitespace : as method name with signature - // 6. any remaining text : as description - if (preg_match( - '/^ - # Static keyword - # Declates a static method ONLY if type is also present - (?: - (static) - \s+ - )? - # Return type - (?: - ([\w\|_\\\\]+) - \s+ - )? - # Legacy method name (not captured) - (?: - [\w_]+\(\)\s+ - )? - # Method name - ([\w\|_\\\\]+) - # Arguments - \(([^\)]*)\) - \s* - # Description - (.*) - $/sux', - $this->description, - $matches - )) { - list( - , - $static, - $this->type, - $this->method_name, - $this->arguments, - $this->description - ) = $matches; - if ($static) { - if (!$this->type) { - $this->type = 'static'; - } else { - $this->isStatic = true; - } - } else { - if (!$this->type) { - $this->type = 'void'; - } - } - $this->parsedDescription = null; - } - - return $this; - } - - /** - * Sets the name of this method. - * - * @param string $method_name The name of the method. - * - * @return $this - */ - public function setMethodName($method_name) - { - $this->method_name = $method_name; - - $this->content = null; - return $this; - } - - /** - * Retrieves the method name. - * - * @return string - */ - public function getMethodName() - { - return $this->method_name; - } - - /** - * Sets the arguments for this method. - * - * @param string $arguments A comma-separated arguments line. - * - * @return void - */ - public function setArguments($arguments) - { - $this->arguments = $arguments; - - $this->content = null; - return $this; - } - - /** - * Returns an array containing each argument as array of type and name. - * - * Please note that the argument sub-array may only contain 1 element if no - * type was specified. - * - * @return string[] - */ - public function getArguments() - { - if (empty($this->arguments)) { - return array(); - } - - $arguments = explode(',', $this->arguments); - foreach ($arguments as $key => $value) { - $arguments[$key] = explode(' ', trim($value)); - } - - return $arguments; - } - - /** - * Checks whether the method tag describes a static method or not. - * - * @return bool TRUE if the method declaration is for a static method, FALSE - * otherwise. - */ - public function isStatic() - { - return $this->isStatic; - } - - /** - * Sets a new value for whether the method is static or not. - * - * @param bool $isStatic The new value to set. - * - * @return $this - */ - public function setIsStatic($isStatic) - { - $this->isStatic = $isStatic; - - $this->content = null; - return $this; - } -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ParamTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ParamTag.php deleted file mode 100644 index 9bc0270..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ParamTag.php +++ /dev/null @@ -1,119 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @param tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class ParamTag extends ReturnTag -{ - /** @var string */ - protected $variableName = ''; - - /** @var bool determines whether this is a variadic argument */ - protected $isVariadic = false; - - /** - * {@inheritdoc} - */ - public function getContent() - { - if (null === $this->content) { - $this->content - = "{$this->type} {$this->variableName} {$this->description}"; - } - return $this->content; - } - /** - * {@inheritdoc} - */ - public function setContent($content) - { - Tag::setContent($content); - $parts = preg_split( - '/(\s+)/Su', - $this->description, - 3, - PREG_SPLIT_DELIM_CAPTURE - ); - - // if the first item that is encountered is not a variable; it is a type - if (isset($parts[0]) - && (strlen($parts[0]) > 0) - && ($parts[0][0] !== '$') - ) { - $this->type = array_shift($parts); - array_shift($parts); - } - - // if the next item starts with a $ or ...$ it must be the variable name - if (isset($parts[0]) - && (strlen($parts[0]) > 0) - && ($parts[0][0] == '$' || substr($parts[0], 0, 4) === '...$') - ) { - $this->variableName = array_shift($parts); - array_shift($parts); - - if (substr($this->variableName, 0, 3) === '...') { - $this->isVariadic = true; - $this->variableName = substr($this->variableName, 3); - } - } - - $this->setDescription(implode('', $parts)); - - $this->content = $content; - return $this; - } - - /** - * Returns the variable's name. - * - * @return string - */ - public function getVariableName() - { - return $this->variableName; - } - - /** - * Sets the variable's name. - * - * @param string $name The new name for this variable. - * - * @return $this - */ - public function setVariableName($name) - { - $this->variableName = $name; - - $this->content = null; - return $this; - } - - /** - * Returns whether this tag is variadic. - * - * @return boolean - */ - public function isVariadic() - { - return $this->isVariadic; - } -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyReadTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyReadTag.php deleted file mode 100644 index 3340602..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyReadTag.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @property-read tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class PropertyReadTag extends PropertyTag -{ -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyTag.php deleted file mode 100644 index 288ecff..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyTag.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @property tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class PropertyTag extends ParamTag -{ -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyWriteTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyWriteTag.php deleted file mode 100644 index ec4e866..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/PropertyWriteTag.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @property-write tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class PropertyWriteTag extends PropertyTag -{ -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ReturnTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ReturnTag.php deleted file mode 100644 index 9293db9..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ReturnTag.php +++ /dev/null @@ -1,99 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; -use phpDocumentor\Reflection\DocBlock\Type\Collection; - -/** - * Reflection class for a @return tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class ReturnTag extends Tag -{ - /** @var string The raw type component. */ - protected $type = ''; - - /** @var Collection The parsed type component. */ - protected $types = null; - - /** - * {@inheritdoc} - */ - public function getContent() - { - if (null === $this->content) { - $this->content = "{$this->type} {$this->description}"; - } - - return $this->content; - } - - /** - * {@inheritdoc} - */ - public function setContent($content) - { - parent::setContent($content); - - $parts = preg_split('/\s+/Su', $this->description, 2); - - // any output is considered a type - $this->type = $parts[0]; - $this->types = null; - - $this->setDescription(isset($parts[1]) ? $parts[1] : ''); - - $this->content = $content; - return $this; - } - - /** - * Returns the unique types of the variable. - * - * @return string[] - */ - public function getTypes() - { - return $this->getTypesCollection()->getArrayCopy(); - } - - /** - * Returns the type section of the variable. - * - * @return string - */ - public function getType() - { - return (string) $this->getTypesCollection(); - } - - /** - * Returns the type collection. - * - * @return void - */ - protected function getTypesCollection() - { - if (null === $this->types) { - $this->types = new Collection( - array($this->type), - $this->docblock ? $this->docblock->getContext() : null - ); - } - return $this->types; - } -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SeeTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SeeTag.php deleted file mode 100644 index 4f5f22c..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SeeTag.php +++ /dev/null @@ -1,81 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @see tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class SeeTag extends Tag -{ - /** @var string */ - protected $refers = null; - - /** - * {@inheritdoc} - */ - public function getContent() - { - if (null === $this->content) { - $this->content = "{$this->refers} {$this->description}"; - } - return $this->content; - } - - /** - * {@inheritdoc} - */ - public function setContent($content) - { - parent::setContent($content); - $parts = preg_split('/\s+/Su', $this->description, 2); - - // any output is considered a type - $this->refers = $parts[0]; - - $this->setDescription(isset($parts[1]) ? $parts[1] : ''); - - $this->content = $content; - return $this; - } - - /** - * Gets the structural element this tag refers to. - * - * @return string - */ - public function getReference() - { - return $this->refers; - } - - /** - * Sets the structural element this tag refers to. - * - * @param string $refers The new type this tag refers to. - * - * @return $this - */ - public function setReference($refers) - { - $this->refers = $refers; - - $this->content = null; - return $this; - } -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SinceTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SinceTag.php deleted file mode 100644 index ba009c4..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SinceTag.php +++ /dev/null @@ -1,26 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag\VersionTag; - -/** - * Reflection class for a @since tag in a Docblock. - * - * @author Vasil Rangelov - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class SinceTag extends VersionTag -{ -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SourceTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SourceTag.php deleted file mode 100644 index 3400220..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SourceTag.php +++ /dev/null @@ -1,137 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @source tag in a Docblock. - * - * @author Vasil Rangelov - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class SourceTag extends Tag -{ - /** - * @var int The starting line, relative to the structural element's - * location. - */ - protected $startingLine = 1; - - /** - * @var int|null The number of lines, relative to the starting line. NULL - * means "to the end". - */ - protected $lineCount = null; - - /** - * {@inheritdoc} - */ - public function getContent() - { - if (null === $this->content) { - $this->content - = "{$this->startingLine} {$this->lineCount} {$this->description}"; - } - - return $this->content; - } - - /** - * {@inheritdoc} - */ - public function setContent($content) - { - parent::setContent($content); - if (preg_match( - '/^ - # Starting line - ([1-9]\d*) - \s* - # Number of lines - (?: - ((?1)) - \s+ - )? - # Description - (.*) - $/sux', - $this->description, - $matches - )) { - $this->startingLine = (int)$matches[1]; - if (isset($matches[2]) && '' !== $matches[2]) { - $this->lineCount = (int)$matches[2]; - } - $this->setDescription($matches[3]); - $this->content = $content; - } - - return $this; - } - - /** - * Gets the starting line. - * - * @return int The starting line, relative to the structural element's - * location. - */ - public function getStartingLine() - { - return $this->startingLine; - } - - /** - * Sets the starting line. - * - * @param int $startingLine The new starting line, relative to the - * structural element's location. - * - * @return $this - */ - public function setStartingLine($startingLine) - { - $this->startingLine = $startingLine; - - $this->content = null; - return $this; - } - - /** - * Returns the number of lines. - * - * @return int|null The number of lines, relative to the starting line. NULL - * means "to the end". - */ - public function getLineCount() - { - return $this->lineCount; - } - - /** - * Sets the number of lines. - * - * @param int|null $lineCount The new number of lines, relative to the - * starting line. NULL means "to the end". - * - * @return $this - */ - public function setLineCount($lineCount) - { - $this->lineCount = $lineCount; - - $this->content = null; - return $this; - } -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ThrowsTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ThrowsTag.php deleted file mode 100644 index 58ee44a..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ThrowsTag.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @throws tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class ThrowsTag extends ReturnTag -{ -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/UsesTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/UsesTag.php deleted file mode 100644 index da0d663..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/UsesTag.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @uses tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class UsesTag extends SeeTag -{ -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VarTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VarTag.php deleted file mode 100644 index 236b2c8..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VarTag.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @var tag in a Docblock. - * - * @author Mike van Riel - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class VarTag extends ParamTag -{ -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VersionTag.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VersionTag.php deleted file mode 100644 index 260f698..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/VersionTag.php +++ /dev/null @@ -1,108 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Tag; - -use phpDocumentor\Reflection\DocBlock\Tag; - -/** - * Reflection class for a @version tag in a Docblock. - * - * @author Vasil Rangelov - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class VersionTag extends Tag -{ - /** - * PCRE regular expression matching a version vector. - * Assumes the "x" modifier. - */ - const REGEX_VECTOR = '(?: - # Normal release vectors. - \d\S* - | - # VCS version vectors. Per PHPCS, they are expected to - # follow the form of the VCS name, followed by ":", followed - # by the version vector itself. - # By convention, popular VCSes like CVS, SVN and GIT use "$" - # around the actual version vector. - [^\s\:]+\:\s*\$[^\$]+\$ - )'; - - /** @var string The version vector. */ - protected $version = ''; - - public function getContent() - { - if (null === $this->content) { - $this->content = "{$this->version} {$this->description}"; - } - - return $this->content; - } - - /** - * {@inheritdoc} - */ - public function setContent($content) - { - parent::setContent($content); - - if (preg_match( - '/^ - # The version vector - (' . self::REGEX_VECTOR . ') - \s* - # The description - (.+)? - $/sux', - $this->description, - $matches - )) { - $this->version = $matches[1]; - $this->setDescription(isset($matches[2]) ? $matches[2] : ''); - $this->content = $content; - } - - return $this; - } - - /** - * Gets the version section of the tag. - * - * @return string The version section of the tag. - */ - public function getVersion() - { - return $this->version; - } - - /** - * Sets the version section of the tag. - * - * @param string $version The new version section of the tag. - * An invalid value will set an empty string. - * - * @return $this - */ - public function setVersion($version) - { - $this->version - = preg_match('/^' . self::REGEX_VECTOR . '$/ux', $version) - ? $version - : ''; - - $this->content = null; - return $this; - } -} diff --git a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Type/Collection.php b/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Type/Collection.php deleted file mode 100644 index 327819c..0000000 --- a/application/modules/gitlist/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Type/Collection.php +++ /dev/null @@ -1,228 +0,0 @@ - - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ - -namespace phpDocumentor\Reflection\DocBlock\Type; - -use phpDocumentor\Reflection\DocBlock\Context; - -/** - * Collection - * - * @author Mike van Riel - * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) - * @license http://www.opensource.org/licenses/mit-license.php MIT - * @link http://phpdoc.org - */ -class Collection extends \ArrayObject -{ - /** @var string Definition of the OR operator for types */ - const OPERATOR_OR = '|'; - - /** @var string Definition of the ARRAY operator for types */ - const OPERATOR_ARRAY = '[]'; - - /** @var string Definition of the NAMESPACE operator in PHP */ - const OPERATOR_NAMESPACE = '\\'; - - /** @var string[] List of recognized keywords */ - protected static $keywords = array( - 'string', 'int', 'integer', 'bool', 'boolean', 'float', 'double', - 'object', 'mixed', 'array', 'resource', 'void', 'null', 'scalar', - 'callback', 'callable', 'false', 'true', 'self', '$this', 'static' - ); - - /** - * Current invoking location. - * - * This is used to prepend to type with a relative location. - * May also be 'default' or 'global', in which case they are ignored. - * - * @var Context - */ - protected $context = null; - - /** - * Registers the namespace and aliases; uses that to add and expand the - * given types. - * - * @param string[] $types Array containing a list of types to add to this - * container. - * @param Context $location The current invoking location. - */ - public function __construct( - array $types = array(), - Context $context = null - ) { - $this->context = null === $context ? new Context() : $context; - - foreach ($types as $type) { - $this->add($type); - } - } - - /** - * Returns the current invoking location. - * - * @return Context - */ - public function getContext() - { - return $this->context; - } - - /** - * Adds a new type to the collection and expands it if it contains a - * relative namespace. - * - * If a class in the type contains a relative namespace than this collection - * will try to expand that into a FQCN. - * - * @param string $type A 'Type' as defined in the phpDocumentor - * documentation. - * - * @throws \InvalidArgumentException if a non-string argument is passed. - * - * @see http://phpdoc.org/docs/latest/for-users/types.html for the - * definition of a type. - * - * @return void - */ - public function add($type) - { - if (!is_string($type)) { - throw new \InvalidArgumentException( - 'A type should be represented by a string, received: ' - .var_export($type, true) - ); - } - - // separate the type by the OR operator - $type_parts = explode(self::OPERATOR_OR, $type); - foreach ($type_parts as $part) { - $expanded_type = $this->expand($part); - if ($expanded_type) { - $this[] = $expanded_type; - } - } - } - - /** - * Returns a string representation of the collection. - * - * @return string The resolved types across the collection, separated with - * {@link self::OPERATOR_OR}. - */ - public function __toString() - { - return implode(self::OPERATOR_OR, $this->getArrayCopy()); - } - - /** - * Analyzes the given type and returns the FQCN variant. - * - * When a type is provided this method checks whether it is not a keyword or - * Fully Qualified Class Name. If so it will use the given namespace and - * aliases to expand the type to a FQCN representation. - * - * This method only works as expected if the namespace and aliases are set; - * no dynamic reflection is being performed here. - * - * @param string $type The relative or absolute type. - * - * @uses getNamespace to determine with what to prefix the type name. - * @uses getNamespaceAliases to check whether the first part of the relative - * type name should not be replaced with another namespace. - * - * @return string - */ - protected function expand($type) - { - $type = trim($type); - if (!$type) { - return ''; - } - - if ($this->isTypeAnArray($type)) { - return $this->expand(substr($type, 0, -2)) . self::OPERATOR_ARRAY; - } - - if ($this->isRelativeType($type) && !$this->isTypeAKeyword($type)) { - $type_parts = explode(self::OPERATOR_NAMESPACE, $type, 2); - - $namespace_aliases = $this->context->getNamespaceAliases(); - // if the first segment is not an alias; prepend namespace name and - // return - if (!isset($namespace_aliases[$type_parts[0]]) && - !isset($namespace_aliases[strstr($type_parts[0], '::', true)])) { - $namespace = $this->context->getNamespace(); - if ('' !== $namespace) { - $namespace .= self::OPERATOR_NAMESPACE; - } - return self::OPERATOR_NAMESPACE . $namespace . $type; - } - - if (strpos($type_parts[0], '::')) { - $type_parts[] = strstr($type_parts[0], '::'); - $type_parts[0] = $namespace_aliases[strstr($type_parts[0], '::', true)]; - return implode('', $type_parts); - } - - $type_parts[0] = $namespace_aliases[$type_parts[0]]; - $type = implode(self::OPERATOR_NAMESPACE, $type_parts); - } - - return $type; - } - - /** - * Detects whether the given type represents an array. - * - * @param string $type A relative or absolute type as defined in the - * phpDocumentor documentation. - * - * @return bool - */ - protected function isTypeAnArray($type) - { - return substr($type, -2) === self::OPERATOR_ARRAY; - } - - /** - * Detects whether the given type represents a PHPDoc keyword. - * - * @param string $type A relative or absolute type as defined in the - * phpDocumentor documentation. - * - * @return bool - */ - protected function isTypeAKeyword($type) - { - return in_array(strtolower($type), static::$keywords, true); - } - - /** - * Detects whether the given type represents a relative or absolute path. - * - * This method will detect keywords as being absolute; even though they are - * not preceeded by a namespace separator. - * - * @param string $type A relative or absolute type as defined in the - * phpDocumentor documentation. - * - * @return bool - */ - protected function isRelativeType($type) - { - return ($type[0] !== self::OPERATOR_NAMESPACE) - || $this->isTypeAKeyword($type); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/CHANGES.md b/application/modules/gitlist/vendor/phpspec/prophecy/CHANGES.md deleted file mode 100644 index 0dadd52..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/CHANGES.md +++ /dev/null @@ -1,194 +0,0 @@ -1.7.5 / 2018/04/18 -================== - -* Allow sebastian/comparator ^3.0 (@sebastianbergmann) - -1.7.4 / 2018/02/11 -================== - -* Fix issues with PHP 7.2 (thanks @greg0ire) -* Support object type hints in PHP 7.2 (thanks @@jansvoboda11) - -1.7.3 / 2017/11/24 -================== - -* Fix SplInfo ClassPatch to work with Symfony 4 (Thanks @gnugat) - -1.7.2 / 2017-10-04 -================== - -* Reverted "check method predictions only once" due to it breaking Spies - -1.7.1 / 2017-10-03 -================== - -* Allow PHP5 keywords methods generation on PHP7 (thanks @bycosta) -* Allow reflection-docblock v4 (thanks @GrahamCampbell) -* Check method predictions only once (thanks @dontub) -* Escape file path sent to \SplFileObjectConstructor when running on Windows (thanks @danmartin-epiphany) - -1.7.0 / 2017-03-02 -================== - -* Add full PHP 7.1 Support (thanks @prolic) -* Allow `sebastian/comparator ^2.0` (thanks @sebastianbergmann) -* Allow `sebastian/recursion-context ^3.0` (thanks @sebastianbergmann) -* Allow `\Error` instances in `ThrowPromise` (thanks @jameshalsall) -* Support `phpspec/phpspect ^3.2` (thanks @Sam-Burns) -* Fix failing builds (thanks @Sam-Burns) - -1.6.2 / 2016-11-21 -================== - -* Added support for detecting @method on interfaces that the class itself implements, or when the stubbed class is an interface itself (thanks @Seldaek) -* Added support for sebastian/recursion-context 2 (thanks @sebastianbergmann) -* Added testing on PHP 7.1 on Travis (thanks @danizord) -* Fixed the usage of the phpunit comparator (thanks @Anyqax) - -1.6.1 / 2016-06-07 -================== - - * Ignored empty method names in invalid `@method` phpdoc - * Fixed the mocking of SplFileObject - * Added compatibility with phpdocumentor/reflection-docblock 3 - -1.6.0 / 2016-02-15 -================== - - * Add Variadics support (thanks @pamil) - * Add ProphecyComparator for comparing objects that need revealing (thanks @jon-acker) - * Add ApproximateValueToken (thanks @dantleech) - * Add support for 'self' and 'parent' return type (thanks @bendavies) - * Add __invoke to allowed reflectable methods list (thanks @ftrrtf) - * Updated ExportUtil to reflect the latest changes by Sebastian (thanks @jakari) - * Specify the required php version for composer (thanks @jakzal) - * Exclude 'args' in the generated backtrace (thanks @oradwell) - * Fix code generation for scalar parameters (thanks @trowski) - * Fix missing sprintf in InvalidArgumentException __construct call (thanks @emmanuelballery) - * Fix phpdoc for magic methods (thanks @Tobion) - * Fix PhpDoc for interfaces usage (thanks @ImmRanneft) - * Prevent final methods from being manually extended (thanks @kamioftea) - * Enhance exception for invalid argument to ThrowPromise (thanks @Tobion) - -1.5.0 / 2015-04-27 -================== - - * Add support for PHP7 scalar type hints (thanks @trowski) - * Add support for PHP7 return types (thanks @trowski) - * Update internal test suite to support PHP7 - -1.4.1 / 2015-04-27 -================== - - * Fixed bug in closure-based argument tokens (#181) - -1.4.0 / 2015-03-27 -================== - - * Fixed errors in return type phpdocs (thanks @sobit) - * Fixed stringifying of hash containing one value (thanks @avant1) - * Improved clarity of method call expectation exception (thanks @dantleech) - * Add ability to specify which argument is returned in willReturnArgument (thanks @coderbyheart) - * Add more information to MethodNotFound exceptions (thanks @ciaranmcnulty) - * Support for mocking classes with methods that return references (thanks @edsonmedina) - * Improved object comparison (thanks @whatthejeff) - * Adopted '^' in composer dependencies (thanks @GrahamCampbell) - * Fixed non-typehinted arguments being treated as optional (thanks @whatthejeff) - * Magic methods are now filtered for keywords (thanks @seagoj) - * More readable errors for failure when expecting single calls (thanks @dantleech) - -1.3.1 / 2014-11-17 -================== - - * Fix the edge case when failed predictions weren't recorded for `getCheckedPredictions()` - -1.3.0 / 2014-11-14 -================== - - * Add a way to get checked predictions with `MethodProphecy::getCheckedPredictions()` - * Fix HHVM compatibility - * Remove dead code (thanks @stof) - * Add support for DirectoryIterators (thanks @shanethehat) - -1.2.0 / 2014-07-18 -================== - - * Added support for doubling magic methods documented in the class phpdoc (thanks @armetiz) - * Fixed a segfault appearing in some cases (thanks @dmoreaulf) - * Fixed the doubling of methods with typehints on non-existent classes (thanks @gquemener) - * Added support for internal classes using keywords as method names (thanks @milan) - * Added IdenticalValueToken and Argument::is (thanks @florianv) - * Removed the usage of scalar typehints in HHVM as HHVM 3 does not support them anymore in PHP code (thanks @whatthejeff) - -1.1.2 / 2014-01-24 -================== - - * Spy automatically promotes spied method call to an expected one - -1.1.1 / 2014-01-15 -================== - - * Added support for HHVM - -1.1.0 / 2014-01-01 -================== - - * Changed the generated class names to use a static counter instead of a random number - * Added a clss patch for ReflectionClass::newInstance to make its argument optional consistently (thanks @docteurklein) - * Fixed mirroring of classes with typehints on non-existent classes (thanks @docteurklein) - * Fixed the support of array callables in CallbackPromise and CallbackPrediction (thanks @ciaranmcnulty) - * Added support for properties in ObjectStateToken (thanks @adrienbrault) - * Added support for mocking classes with a final constructor (thanks @ciaranmcnulty) - * Added ArrayEveryEntryToken and Argument::withEveryEntry() (thanks @adrienbrault) - * Added an exception when trying to prophesize on a final method instead of ignoring silently (thanks @docteurklein) - * Added StringContainToken and Argument::containingString() (thanks @peterjmit) - * Added ``shouldNotHaveBeenCalled`` on the MethodProphecy (thanks @ciaranmcnulty) - * Fixed the comparison of objects in ExactValuetoken (thanks @sstok) - * Deprecated ``shouldNotBeenCalled`` in favor of ``shouldNotHaveBeenCalled`` - -1.0.4 / 2013-08-10 -================== - - * Better randomness for generated class names (thanks @sstok) - * Add support for interfaces into TypeToken and Argument::type() (thanks @sstok) - * Add support for old-style (method name === class name) constructors (thanks @l310 for report) - -1.0.3 / 2013-07-04 -================== - - * Support callable typehints (thanks @stof) - * Do not attempt to autoload arrays when generating code (thanks @MarcoDeBortoli) - * New ArrayEntryToken (thanks @kagux) - -1.0.2 / 2013-05-19 -================== - - * Logical `AND` token added (thanks @kagux) - * Logical `NOT` token added (thanks @kagux) - * Add support for setting custom constructor arguments - * Properly stringify hashes - * Record calls that throw exceptions - * Migrate spec suite to PhpSpec 2.0 - -1.0.1 / 2013-04-30 -================== - - * Fix broken UnexpectedCallException message - * Trim AggregateException message - -1.0.0 / 2013-04-29 -================== - - * Improve exception messages - -1.0.0-BETA2 / 2013-04-03 -======================== - - * Add more debug information to CallTimes and Call prediction exception messages - * Fix MethodNotFoundException wrong namespace (thanks @gunnarlium) - * Fix some typos in the exception messages (thanks @pborreli) - -1.0.0-BETA1 / 2013-03-25 -======================== - - * Initial release diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/CONTRIBUTING.md b/application/modules/gitlist/vendor/phpspec/prophecy/CONTRIBUTING.md deleted file mode 100644 index 4a8169d..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/CONTRIBUTING.md +++ /dev/null @@ -1,22 +0,0 @@ -Contributing ------------- - -Prophecy is an open source, community-driven project. If you'd like to contribute, -feel free to do this, but remember to follow these few simple rules: - -- Make your feature addition or bug fix, -- Add either specs or examples for any changes you're making (bugfixes or additions) - (please look into `spec/` folder for some examples). This is important so we don't break - it in a future version unintentionally, -- Commit your code, but do not mess with `CHANGES.md`, - -Running tests -------------- - -Make sure that you don't break anything with your changes by running: - -```bash -$> composer install --prefer-dist -$> vendor/bin/phpspec run -$> vendor/bin/phpunit -``` diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/LICENSE b/application/modules/gitlist/vendor/phpspec/prophecy/LICENSE deleted file mode 100644 index c8b3647..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright (c) 2013 Konstantin Kudryashov - Marcello Duarte - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/README.md b/application/modules/gitlist/vendor/phpspec/prophecy/README.md deleted file mode 100644 index b190d43..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/README.md +++ /dev/null @@ -1,391 +0,0 @@ -# Prophecy - -[![Stable release](https://poser.pugx.org/phpspec/prophecy/version.svg)](https://packagist.org/packages/phpspec/prophecy) -[![Build Status](https://travis-ci.org/phpspec/prophecy.svg?branch=master)](https://travis-ci.org/phpspec/prophecy) - -Prophecy is a highly opinionated yet very powerful and flexible PHP object mocking -framework. Though initially it was created to fulfil phpspec2 needs, it is flexible -enough to be used inside any testing framework out there with minimal effort. - -## A simple example - -```php -prophet->prophesize('App\Security\Hasher'); - $user = new App\Entity\User($hasher->reveal()); - - $hasher->generateHash($user, 'qwerty')->willReturn('hashed_pass'); - - $user->setPassword('qwerty'); - - $this->assertEquals('hashed_pass', $user->getPassword()); - } - - protected function setup() - { - $this->prophet = new \Prophecy\Prophet; - } - - protected function tearDown() - { - $this->prophet->checkPredictions(); - } -} -``` - -## Installation - -### Prerequisites - -Prophecy requires PHP 5.3.3 or greater. - -### Setup through composer - -First, add Prophecy to the list of dependencies inside your `composer.json`: - -```json -{ - "require-dev": { - "phpspec/prophecy": "~1.0" - } -} -``` - -Then simply install it with composer: - -```bash -$> composer install --prefer-dist -``` - -You can read more about Composer on its [official webpage](http://getcomposer.org). - -## How to use it - -First of all, in Prophecy every word has a logical meaning, even the name of the library -itself (Prophecy). When you start feeling that, you'll become very fluid with this -tool. - -For example, Prophecy has been named that way because it concentrates on describing the future -behavior of objects with very limited knowledge about them. But as with any other prophecy, -those object prophecies can't create themselves - there should be a Prophet: - -```php -$prophet = new Prophecy\Prophet; -``` - -The Prophet creates prophecies by *prophesizing* them: - -```php -$prophecy = $prophet->prophesize(); -``` - -The result of the `prophesize()` method call is a new object of class `ObjectProphecy`. Yes, -that's your specific object prophecy, which describes how your object would behave -in the near future. But first, you need to specify which object you're talking about, -right? - -```php -$prophecy->willExtend('stdClass'); -$prophecy->willImplement('SessionHandlerInterface'); -``` - -There are 2 interesting calls - `willExtend` and `willImplement`. The first one tells -object prophecy that our object should extend specific class, the second one says that -it should implement some interface. Obviously, objects in PHP can implement multiple -interfaces, but extend only one parent class. - -### Dummies - -Ok, now we have our object prophecy. What can we do with it? First of all, we can get -our object *dummy* by revealing its prophecy: - -```php -$dummy = $prophecy->reveal(); -``` - -The `$dummy` variable now holds a special dummy object. Dummy objects are objects that extend -and/or implement preset classes/interfaces by overriding all their public methods. The key -point about dummies is that they do not hold any logic - they just do nothing. Any method -of the dummy will always return `null` and the dummy will never throw any exceptions. -Dummy is your friend if you don't care about the actual behavior of this double and just need -a token object to satisfy a method typehint. - -You need to understand one thing - a dummy is not a prophecy. Your object prophecy is still -assigned to `$prophecy` variable and in order to manipulate with your expectations, you -should work with it. `$dummy` is a dummy - a simple php object that tries to fulfil your -prophecy. - -### Stubs - -Ok, now we know how to create basic prophecies and reveal dummies from them. That's -awesome if we don't care about our _doubles_ (objects that reflect originals) -interactions. If we do, we need to use *stubs* or *mocks*. - -A stub is an object double, which doesn't have any expectations about the object behavior, -but when put in specific environment, behaves in specific way. Ok, I know, it's cryptic, -but bear with me for a minute. Simply put, a stub is a dummy, which depending on the called -method signature does different things (has logic). To create stubs in Prophecy: - -```php -$prophecy->read('123')->willReturn('value'); -``` - -Oh wow. We've just made an arbitrary call on the object prophecy? Yes, we did. And this -call returned us a new object instance of class `MethodProphecy`. Yep, that's a specific -method with arguments prophecy. Method prophecies give you the ability to create method -promises or predictions. We'll talk about method predictions later in the _Mocks_ section. - -#### Promises - -Promises are logical blocks, that represent your fictional methods in prophecy terms -and they are handled by the `MethodProphecy::will(PromiseInterface $promise)` method. -As a matter of fact, the call that we made earlier (`willReturn('value')`) is a simple -shortcut to: - -```php -$prophecy->read('123')->will(new Prophecy\Promise\ReturnPromise(array('value'))); -``` - -This promise will cause any call to our double's `read()` method with exactly one -argument - `'123'` to always return `'value'`. But that's only for this -promise, there's plenty others you can use: - -- `ReturnPromise` or `->willReturn(1)` - returns a value from a method call -- `ReturnArgumentPromise` or `->willReturnArgument($index)` - returns the nth method argument from call -- `ThrowPromise` or `->willThrow($exception)` - causes the method to throw specific exception -- `CallbackPromise` or `->will($callback)` - gives you a quick way to define your own custom logic - -Keep in mind, that you can always add even more promises by implementing -`Prophecy\Promise\PromiseInterface`. - -#### Method prophecies idempotency - -Prophecy enforces same method prophecies and, as a consequence, same promises and -predictions for the same method calls with the same arguments. This means: - -```php -$methodProphecy1 = $prophecy->read('123'); -$methodProphecy2 = $prophecy->read('123'); -$methodProphecy3 = $prophecy->read('321'); - -$methodProphecy1 === $methodProphecy2; -$methodProphecy1 !== $methodProphecy3; -``` - -That's interesting, right? Now you might ask me how would you define more complex -behaviors where some method call changes behavior of others. In PHPUnit or Mockery -you do that by predicting how many times your method will be called. In Prophecy, -you'll use promises for that: - -```php -$user->getName()->willReturn(null); - -// For PHP 5.4 -$user->setName('everzet')->will(function () { - $this->getName()->willReturn('everzet'); -}); - -// For PHP 5.3 -$user->setName('everzet')->will(function ($args, $user) { - $user->getName()->willReturn('everzet'); -}); - -// Or -$user->setName('everzet')->will(function ($args) use ($user) { - $user->getName()->willReturn('everzet'); -}); -``` - -And now it doesn't matter how many times or in which order your methods are called. -What matters is their behaviors and how well you faked it. - -#### Arguments wildcarding - -The previous example is awesome (at least I hope it is for you), but that's not -optimal enough. We hardcoded `'everzet'` in our expectation. Isn't there a better -way? In fact there is, but it involves understanding what this `'everzet'` -actually is. - -You see, even if method arguments used during method prophecy creation look -like simple method arguments, in reality they are not. They are argument token -wildcards. As a matter of fact, `->setName('everzet')` looks like a simple call just -because Prophecy automatically transforms it under the hood into: - -```php -$user->setName(new Prophecy\Argument\Token\ExactValueToken('everzet')); -``` - -Those argument tokens are simple PHP classes, that implement -`Prophecy\Argument\Token\TokenInterface` and tell Prophecy how to compare real arguments -with your expectations. And yes, those classnames are damn big. That's why there's a -shortcut class `Prophecy\Argument`, which you can use to create tokens like that: - -```php -use Prophecy\Argument; - -$user->setName(Argument::exact('everzet')); -``` - -`ExactValueToken` is not very useful in our case as it forced us to hardcode the username. -That's why Prophecy comes bundled with a bunch of other tokens: - -- `IdenticalValueToken` or `Argument::is($value)` - checks that the argument is identical to a specific value -- `ExactValueToken` or `Argument::exact($value)` - checks that the argument matches a specific value -- `TypeToken` or `Argument::type($typeOrClass)` - checks that the argument matches a specific type or - classname -- `ObjectStateToken` or `Argument::which($method, $value)` - checks that the argument method returns - a specific value -- `CallbackToken` or `Argument::that(callback)` - checks that the argument matches a custom callback -- `AnyValueToken` or `Argument::any()` - matches any argument -- `AnyValuesToken` or `Argument::cetera()` - matches any arguments to the rest of the signature -- `StringContainsToken` or `Argument::containingString($value)` - checks that the argument contains a specific string value - -And you can add even more by implementing `TokenInterface` with your own custom classes. - -So, let's refactor our initial `{set,get}Name()` logic with argument tokens: - -```php -use Prophecy\Argument; - -$user->getName()->willReturn(null); - -// For PHP 5.4 -$user->setName(Argument::type('string'))->will(function ($args) { - $this->getName()->willReturn($args[0]); -}); - -// For PHP 5.3 -$user->setName(Argument::type('string'))->will(function ($args, $user) { - $user->getName()->willReturn($args[0]); -}); - -// Or -$user->setName(Argument::type('string'))->will(function ($args) use ($user) { - $user->getName()->willReturn($args[0]); -}); -``` - -That's it. Now our `{set,get}Name()` prophecy will work with any string argument provided to it. -We've just described how our stub object should behave, even though the original object could have -no behavior whatsoever. - -One last bit about arguments now. You might ask, what happens in case of: - -```php -use Prophecy\Argument; - -$user->getName()->willReturn(null); - -// For PHP 5.4 -$user->setName(Argument::type('string'))->will(function ($args) { - $this->getName()->willReturn($args[0]); -}); - -// For PHP 5.3 -$user->setName(Argument::type('string'))->will(function ($args, $user) { - $user->getName()->willReturn($args[0]); -}); - -// Or -$user->setName(Argument::type('string'))->will(function ($args) use ($user) { - $user->getName()->willReturn($args[0]); -}); - -$user->setName(Argument::any())->will(function () { -}); -``` - -Nothing. Your stub will continue behaving the way it did before. That's because of how -arguments wildcarding works. Every argument token type has a different score level, which -wildcard then uses to calculate the final arguments match score and use the method prophecy -promise that has the highest score. In this case, `Argument::type()` in case of success -scores `5` and `Argument::any()` scores `3`. So the type token wins, as does the first -`setName()` method prophecy and its promise. The simple rule of thumb - more precise token -always wins. - -#### Getting stub objects - -Ok, now we know how to define our prophecy method promises, let's get our stub from -it: - -```php -$stub = $prophecy->reveal(); -``` - -As you might see, the only difference between how we get dummies and stubs is that with -stubs we describe every object conversation instead of just agreeing with `null` returns -(object being *dummy*). As a matter of fact, after you define your first promise -(method call), Prophecy will force you to define all the communications - it throws -the `UnexpectedCallException` for any call you didn't describe with object prophecy before -calling it on a stub. - -### Mocks - -Now we know how to define doubles without behavior (dummies) and doubles with behavior, but -no expectations (stubs). What's left is doubles for which we have some expectations. These -are called mocks and in Prophecy they look almost exactly the same as stubs, except that -they define *predictions* instead of *promises* on method prophecies: - -```php -$entityManager->flush()->shouldBeCalled(); -``` - -#### Predictions - -The `shouldBeCalled()` method here assigns `CallPrediction` to our method prophecy. -Predictions are a delayed behavior check for your prophecies. You see, during the entire lifetime -of your doubles, Prophecy records every single call you're making against it inside your -code. After that, Prophecy can use this collected information to check if it matches defined -predictions. You can assign predictions to method prophecies using the -`MethodProphecy::should(PredictionInterface $prediction)` method. As a matter of fact, -the `shouldBeCalled()` method we used earlier is just a shortcut to: - -```php -$entityManager->flush()->should(new Prophecy\Prediction\CallPrediction()); -``` - -It checks if your method of interest (that matches both the method name and the arguments wildcard) -was called 1 or more times. If the prediction failed then it throws an exception. When does this -check happen? Whenever you call `checkPredictions()` on the main Prophet object: - -```php -$prophet->checkPredictions(); -``` - -In PHPUnit, you would want to put this call into the `tearDown()` method. If no predictions -are defined, it would do nothing. So it won't harm to call it after every test. - -There are plenty more predictions you can play with: - -- `CallPrediction` or `shouldBeCalled()` - checks that the method has been called 1 or more times -- `NoCallsPrediction` or `shouldNotBeCalled()` - checks that the method has not been called -- `CallTimesPrediction` or `shouldBeCalledTimes($count)` - checks that the method has been called - `$count` times -- `CallbackPrediction` or `should($callback)` - checks the method against your own custom callback - -Of course, you can always create your own custom prediction any time by implementing -`PredictionInterface`. - -### Spies - -The last bit of awesomeness in Prophecy is out-of-the-box spies support. As I said in the previous -section, Prophecy records every call made during the double's entire lifetime. This means -you don't need to record predictions in order to check them. You can also do it -manually by using the `MethodProphecy::shouldHave(PredictionInterface $prediction)` method: - -```php -$em = $prophet->prophesize('Doctrine\ORM\EntityManager'); - -$controller->createUser($em->reveal()); - -$em->flush()->shouldHaveBeenCalled(); -``` - -Such manipulation with doubles is called spying. And with Prophecy it just works. diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/fixtures/EmptyClass.php b/application/modules/gitlist/vendor/phpspec/prophecy/fixtures/EmptyClass.php deleted file mode 100644 index 4db3b50..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/fixtures/EmptyClass.php +++ /dev/null @@ -1,7 +0,0 @@ -beConstructedWith(array(42, 'zet', $object)); - - $class = get_class($object->getWrappedObject()); - $hash = spl_object_hash($object->getWrappedObject()); - - $this->__toString()->shouldReturn("exact(42), exact(\"zet\"), exact($class:$hash Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n))"); - } - - function it_generates_string_representation_from_all_tokens_imploded( - TokenInterface $token1, - TokenInterface $token2, - TokenInterface $token3 - ) { - $token1->__toString()->willReturn('token_1'); - $token2->__toString()->willReturn('token_2'); - $token3->__toString()->willReturn('token_3'); - - $this->beConstructedWith(array($token1, $token2, $token3)); - $this->__toString()->shouldReturn('token_1, token_2, token_3'); - } - - function it_exposes_list_of_tokens(TokenInterface $token) - { - $this->beConstructedWith(array($token)); - - $this->getTokens()->shouldReturn(array($token)); - } - - function it_returns_score_of_1_if_there_are_no_tokens_and_arguments() - { - $this->beConstructedWith(array()); - - $this->scoreArguments(array())->shouldReturn(1); - } - - function it_should_return_match_score_based_on_all_tokens_score( - TokenInterface $token1, - TokenInterface $token2, - TokenInterface $token3 - ) { - $token1->scoreArgument('one')->willReturn(3); - $token1->isLast()->willReturn(false); - $token2->scoreArgument(2)->willReturn(5); - $token2->isLast()->willReturn(false); - $token3->scoreArgument($obj = new \stdClass())->willReturn(10); - $token3->isLast()->willReturn(false); - - $this->beConstructedWith(array($token1, $token2, $token3)); - $this->scoreArguments(array('one', 2, $obj))->shouldReturn(18); - } - - function it_returns_false_if_there_is_less_arguments_than_tokens( - TokenInterface $token1, - TokenInterface $token2, - TokenInterface $token3 - ) { - $token1->scoreArgument('one')->willReturn(3); - $token1->isLast()->willReturn(false); - $token2->scoreArgument(2)->willReturn(5); - $token2->isLast()->willReturn(false); - $token3->scoreArgument(null)->willReturn(false); - $token3->isLast()->willReturn(false); - - $this->beConstructedWith(array($token1, $token2, $token3)); - $this->scoreArguments(array('one', 2))->shouldReturn(false); - } - - function it_returns_false_if_there_is_less_tokens_than_arguments( - TokenInterface $token1, - TokenInterface $token2, - TokenInterface $token3 - ) { - $token1->scoreArgument('one')->willReturn(3); - $token1->isLast()->willReturn(false); - $token2->scoreArgument(2)->willReturn(5); - $token2->isLast()->willReturn(false); - $token3->scoreArgument($obj = new \stdClass())->willReturn(10); - $token3->isLast()->willReturn(false); - - $this->beConstructedWith(array($token1, $token2, $token3)); - $this->scoreArguments(array('one', 2, $obj, 4))->shouldReturn(false); - } - - function it_should_return_false_if_one_of_the_tokens_returns_false( - TokenInterface $token1, - TokenInterface $token2, - TokenInterface $token3 - ) { - $token1->scoreArgument('one')->willReturn(3); - $token1->isLast()->willReturn(false); - $token2->scoreArgument(2)->willReturn(false); - $token2->isLast()->willReturn(false); - $token3->scoreArgument($obj = new \stdClass())->willReturn(10); - $token3->isLast()->willReturn(false); - - $this->beConstructedWith(array($token1, $token2, $token3)); - $this->scoreArguments(array('one', 2, $obj))->shouldReturn(false); - } - - function it_should_calculate_score_until_last_token( - TokenInterface $token1, - TokenInterface $token2, - TokenInterface $token3 - ) { - $token1->scoreArgument('one')->willReturn(3); - $token1->isLast()->willReturn(false); - - $token2->scoreArgument(2)->willReturn(7); - $token2->isLast()->willReturn(true); - - $token3->scoreArgument($obj = new \stdClass())->willReturn(10); - $token3->isLast()->willReturn(false); - - $this->beConstructedWith(array($token1, $token2, $token3)); - $this->scoreArguments(array('one', 2, $obj))->shouldReturn(10); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValueTokenSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValueTokenSpec.php deleted file mode 100644 index a43e923..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValueTokenSpec.php +++ /dev/null @@ -1,28 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function its_string_representation_is_star() - { - $this->__toString()->shouldReturn('*'); - } - - function it_scores_any_argument_as_3() - { - $this->scoreArgument(42)->shouldReturn(3); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValuesTokenSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValuesTokenSpec.php deleted file mode 100644 index c29076f..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValuesTokenSpec.php +++ /dev/null @@ -1,28 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_last() - { - $this->shouldBeLast(); - } - - function its_string_representation_is_star_with_followup() - { - $this->__toString()->shouldReturn('* [, ...]'); - } - - function it_scores_any_argument_as_2() - { - $this->scoreArgument(42)->shouldReturn(2); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ApproximateValueTokenSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ApproximateValueTokenSpec.php deleted file mode 100644 index 8799d6d..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ApproximateValueTokenSpec.php +++ /dev/null @@ -1,55 +0,0 @@ -beConstructedWith(10.12345678, 4); - } - - function it_is_initializable() - { - $this->shouldHaveType('Prophecy\Argument\Token\ApproximateValueToken'); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_scores_10_if_rounded_argument_matches_rounded_value() - { - $this->scoreArgument(10.12345)->shouldReturn(10); - } - - function it_does_not_score_if_rounded_argument_does_not_match_rounded_value() - { - $this->scoreArgument(10.1234)->shouldReturn(false); - } - - function it_uses_a_default_precision_of_zero() - { - $this->beConstructedWith(10.7); - $this->scoreArgument(11.4)->shouldReturn(10); - } - - function it_does_not_score_if_rounded_argument_is_not_numeric() - { - $this->scoreArgument('hello')->shouldReturn(false); - } - - function it_has_simple_string_representation() - { - $this->__toString()->shouldBe('≅10.1235'); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayCountTokenSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayCountTokenSpec.php deleted file mode 100644 index cc81fe0..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayCountTokenSpec.php +++ /dev/null @@ -1,58 +0,0 @@ -beConstructedWith(2); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_scores_6_if_argument_array_has_proper_count() - { - $this->scoreArgument(array(1,2))->shouldReturn(6); - } - - function it_scores_6_if_argument_countable_object_has_proper_count(\Countable $countable) - { - $countable->count()->willReturn(2); - $this->scoreArgument($countable)->shouldReturn(6); - } - - function it_does_not_score_if_argument_is_neither_array_nor_countable_object() - { - $this->scoreArgument('string')->shouldBe(false); - $this->scoreArgument(5)->shouldBe(false); - $this->scoreArgument(new \stdClass)->shouldBe(false); - } - - function it_does_not_score_if_argument_array_has_wrong_count() - { - $this->scoreArgument(array(1))->shouldReturn(false); - } - - function it_does_not_score_if_argument_countable_object_has_wrong_count(\Countable $countable) - { - $countable->count()->willReturn(3); - $this->scoreArgument($countable)->shouldReturn(false); - } - - function it_has_simple_string_representation() - { - $this->__toString()->shouldBe('count(2)'); - } - -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEntryTokenSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEntryTokenSpec.php deleted file mode 100644 index 632118a..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEntryTokenSpec.php +++ /dev/null @@ -1,202 +0,0 @@ -beConstructedWith($key, $value); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_holds_key_and_value($key, $value) - { - $this->getKey()->shouldBe($key); - $this->getValue()->shouldBe($value); - } - - function its_string_representation_tells_that_its_an_array_containing_the_key_value_pair($key, $value) - { - $key->__toString()->willReturn('key'); - $value->__toString()->willReturn('value'); - $this->__toString()->shouldBe('[..., key => value, ...]'); - } - - function it_wraps_non_token_value_into_ExactValueToken(TokenInterface $key, \stdClass $object) - { - $this->beConstructedWith($key, $object); - $this->getValue()->shouldHaveType('\Prophecy\Argument\Token\ExactValueToken'); - } - - function it_wraps_non_token_key_into_ExactValueToken(\stdClass $object, TokenInterface $value) - { - $this->beConstructedWith($object, $value); - $this->getKey()->shouldHaveType('\Prophecy\Argument\Token\ExactValueToken'); - } - - function it_scores_array_half_of_combined_scores_from_key_and_value_tokens($key, $value) - { - $key->scoreArgument('key')->willReturn(4); - $value->scoreArgument('value')->willReturn(6); - $this->scoreArgument(array('key'=>'value'))->shouldBe(5); - } - - function it_scores_traversable_object_half_of_combined_scores_from_key_and_value_tokens( - TokenInterface $key, - TokenInterface $value, - \Iterator $object - ) { - $object->current()->will(function () use ($object) { - $object->valid()->willReturn(false); - - return 'value'; - }); - $object->key()->willReturn('key'); - $object->rewind()->willReturn(null); - $object->next()->willReturn(null); - $object->valid()->willReturn(true); - $key->scoreArgument('key')->willReturn(6); - $value->scoreArgument('value')->willReturn(2); - $this->scoreArgument($object)->shouldBe(4); - } - - function it_throws_exception_during_scoring_of_array_accessible_object_if_key_is_not_ExactValueToken( - TokenInterface $key, - TokenInterface $value, - \ArrayAccess $object - ) { - $key->__toString()->willReturn('any_token'); - $this->beConstructedWith($key,$value); - $errorMessage = 'You can only use exact value tokens to match key of ArrayAccess object'.PHP_EOL. - 'But you used `any_token`.'; - $this->shouldThrow(new InvalidArgumentException($errorMessage))->duringScoreArgument($object); - } - - function it_scores_array_accessible_object_half_of_combined_scores_from_key_and_value_tokens( - ExactValueToken $key, - TokenInterface $value, - \ArrayAccess $object - ) { - $object->offsetExists('key')->willReturn(true); - $object->offsetGet('key')->willReturn('value'); - $key->getValue()->willReturn('key'); - $key->scoreArgument('key')->willReturn(3); - $value->scoreArgument('value')->willReturn(1); - $this->scoreArgument($object)->shouldBe(2); - } - - function it_accepts_any_key_token_type_to_score_object_that_is_both_traversable_and_array_accessible( - TokenInterface $key, - TokenInterface $value, - \ArrayIterator $object - ) { - $this->beConstructedWith($key, $value); - $object->current()->will(function () use ($object) { - $object->valid()->willReturn(false); - - return 'value'; - }); - $object->key()->willReturn('key'); - $object->rewind()->willReturn(null); - $object->next()->willReturn(null); - $object->valid()->willReturn(true); - $this->shouldNotThrow(new InvalidArgumentException)->duringScoreArgument($object); - } - - function it_does_not_score_if_argument_is_neither_array_nor_traversable_nor_array_accessible() - { - $this->scoreArgument('string')->shouldBe(false); - $this->scoreArgument(new \stdClass)->shouldBe(false); - } - - function it_does_not_score_empty_array() - { - $this->scoreArgument(array())->shouldBe(false); - } - - function it_does_not_score_array_if_key_and_value_tokens_do_not_score_same_entry($key, $value) - { - $argument = array(1 => 'foo', 2 => 'bar'); - $key->scoreArgument(1)->willReturn(true); - $key->scoreArgument(2)->willReturn(false); - $value->scoreArgument('foo')->willReturn(false); - $value->scoreArgument('bar')->willReturn(true); - $this->scoreArgument($argument)->shouldBe(false); - } - - function it_does_not_score_traversable_object_without_entries(\Iterator $object) - { - $object->rewind()->willReturn(null); - $object->next()->willReturn(null); - $object->valid()->willReturn(false); - $this->scoreArgument($object)->shouldBe(false); - } - - function it_does_not_score_traversable_object_if_key_and_value_tokens_do_not_score_same_entry( - TokenInterface $key, - TokenInterface $value, - \Iterator $object - ) { - $object->current()->willReturn('foo'); - $object->current()->will(function () use ($object) { - $object->valid()->willReturn(false); - - return 'bar'; - }); - $object->key()->willReturn(1); - $object->key()->willReturn(2); - $object->rewind()->willReturn(null); - $object->next()->willReturn(null); - $object->valid()->willReturn(true); - $key->scoreArgument(1)->willReturn(true); - $key->scoreArgument(2)->willReturn(false); - $value->scoreArgument('foo')->willReturn(false); - $value->scoreArgument('bar')->willReturn(true); - $this->scoreArgument($object)->shouldBe(false); - } - - function it_does_not_score_array_accessible_object_if_it_has_no_offset_with_key_token_value( - ExactValueToken $key, - \ArrayAccess $object - ) { - $object->offsetExists('key')->willReturn(false); - $key->getValue()->willReturn('key'); - $this->scoreArgument($object)->shouldBe(false); - } - - function it_does_not_score_array_accessible_object_if_key_and_value_tokens_do_not_score_same_entry( - ExactValueToken $key, - TokenInterface $value, - \ArrayAccess $object - ) { - $object->offsetExists('key')->willReturn(true); - $object->offsetGet('key')->willReturn('value'); - $key->getValue()->willReturn('key'); - $value->scoreArgument('value')->willReturn(false); - $key->scoreArgument('key')->willReturn(true); - $this->scoreArgument($object)->shouldBe(false); - } - - function its_score_is_capped_at_8($key, $value) - { - $key->scoreArgument('key')->willReturn(10); - $value->scoreArgument('value')->willReturn(10); - $this->scoreArgument(array('key'=>'value'))->shouldBe(8); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEveryEntryTokenSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEveryEntryTokenSpec.php deleted file mode 100644 index e57ff8c..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEveryEntryTokenSpec.php +++ /dev/null @@ -1,96 +0,0 @@ -beConstructedWith($value); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_holds_value($value) - { - $this->getValue()->shouldBe($value); - } - - function its_string_representation_tells_that_its_an_array_containing_only_value($value) - { - $value->__toString()->willReturn('value'); - $this->__toString()->shouldBe('[value, ..., value]'); - } - - function it_wraps_non_token_value_into_ExactValueToken(\stdClass $stdClass) - { - $this->beConstructedWith($stdClass); - $this->getValue()->shouldHaveType('Prophecy\Argument\Token\ExactValueToken'); - } - - function it_does_not_score_if_argument_is_neither_array_nor_traversable() - { - $this->scoreArgument('string')->shouldBe(false); - $this->scoreArgument(new \stdClass)->shouldBe(false); - } - - function it_does_not_score_empty_array() - { - $this->scoreArgument(array())->shouldBe(false); - } - - function it_does_not_score_traversable_object_without_entries(\Iterator $object) - { - $object->rewind()->willReturn(null); - $object->next()->willReturn(null); - $object->valid()->willReturn(false); - $this->scoreArgument($object)->shouldBe(false); - } - - function it_scores_avg_of_scores_from_value_tokens($value) - { - $value->scoreArgument('value1')->willReturn(6); - $value->scoreArgument('value2')->willReturn(3); - $this->scoreArgument(array('value1', 'value2'))->shouldBe(4.5); - } - - function it_scores_false_if_entry_scores_false($value) - { - $value->scoreArgument('value1')->willReturn(6); - $value->scoreArgument('value2')->willReturn(false); - $this->scoreArgument(array('value1', 'value2'))->shouldBe(false); - } - - function it_does_not_score_array_keys($value) - { - $value->scoreArgument('value')->willReturn(6); - $value->scoreArgument('key')->shouldNotBeCalled(0); - $this->scoreArgument(array('key' => 'value'))->shouldBe(6); - } - - function it_scores_traversable_object_from_value_token(TokenInterface $value, \Iterator $object) - { - $object->current()->will(function ($args, $object) { - $object->valid()->willReturn(false); - - return 'value'; - }); - $object->key()->willReturn('key'); - $object->rewind()->willReturn(null); - $object->next()->willReturn(null); - $object->valid()->willReturn(true); - $value->scoreArgument('value')->willReturn(2); - $this->scoreArgument($object)->shouldBe(2); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/CallbackTokenSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/CallbackTokenSpec.php deleted file mode 100644 index 4395bf0..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/CallbackTokenSpec.php +++ /dev/null @@ -1,42 +0,0 @@ -beConstructedWith('get_class'); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_scores_7_if_argument_matches_callback() - { - $this->beConstructedWith(function ($argument) { return 2 === $argument; }); - - $this->scoreArgument(2)->shouldReturn(7); - } - - function it_does_not_scores_if_argument_does_not_match_callback() - { - $this->beConstructedWith(function ($argument) { return 2 === $argument; }); - - $this->scoreArgument(5)->shouldReturn(false); - } - - function its_string_representation_should_tell_that_its_callback() - { - $this->__toString()->shouldReturn('callback()'); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ExactValueTokenSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ExactValueTokenSpec.php deleted file mode 100644 index 14322f8..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ExactValueTokenSpec.php +++ /dev/null @@ -1,152 +0,0 @@ -beConstructedWith(42); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_holds_value() - { - $this->getValue()->shouldReturn(42); - } - - function it_scores_10_if_value_is_equal_to_argument() - { - $this->scoreArgument(42)->shouldReturn(10); - $this->scoreArgument('42')->shouldReturn(10); - } - - function it_scores_10_if_value_is_an_object_and_equal_to_argument() - { - $value = new \DateTime(); - $value2 = clone $value; - - $this->beConstructedWith($value); - $this->scoreArgument($value2)->shouldReturn(10); - } - - function it_does_not_scores_if_value_is_not_equal_to_argument() - { - $this->scoreArgument(50)->shouldReturn(false); - $this->scoreArgument(new \stdClass())->shouldReturn(false); - } - - function it_does_not_scores_if_value_an_object_and_is_not_equal_to_argument() - { - $value = new ExactValueTokenFixtureB('ABC'); - $value2 = new ExactValueTokenFixtureB('CBA'); - - $this->beConstructedWith($value); - $this->scoreArgument($value2)->shouldReturn(false); - } - - function it_does_not_scores_if_value_type_and_is_not_equal_to_argument() - { - $this->beConstructedWith(false); - $this->scoreArgument(0)->shouldReturn(false); - } - - function it_generates_proper_string_representation_for_integer() - { - $this->beConstructedWith(42); - $this->__toString()->shouldReturn('exact(42)'); - } - - function it_generates_proper_string_representation_for_string() - { - $this->beConstructedWith('some string'); - $this->__toString()->shouldReturn('exact("some string")'); - } - - function it_generates_single_line_representation_for_multiline_string() - { - $this->beConstructedWith("some\nstring"); - $this->__toString()->shouldReturn('exact("some\\nstring")'); - } - - function it_generates_proper_string_representation_for_double() - { - $this->beConstructedWith(42.3); - $this->__toString()->shouldReturn('exact(42.3)'); - } - - function it_generates_proper_string_representation_for_boolean_true() - { - $this->beConstructedWith(true); - $this->__toString()->shouldReturn('exact(true)'); - } - - function it_generates_proper_string_representation_for_boolean_false() - { - $this->beConstructedWith(false); - $this->__toString()->shouldReturn('exact(false)'); - } - - function it_generates_proper_string_representation_for_null() - { - $this->beConstructedWith(null); - $this->__toString()->shouldReturn('exact(null)'); - } - - function it_generates_proper_string_representation_for_empty_array() - { - $this->beConstructedWith(array()); - $this->__toString()->shouldReturn('exact([])'); - } - - function it_generates_proper_string_representation_for_array() - { - $this->beConstructedWith(array('zet', 42)); - $this->__toString()->shouldReturn('exact(["zet", 42])'); - } - - function it_generates_proper_string_representation_for_resource() - { - $resource = fopen(__FILE__, 'r'); - $this->beConstructedWith($resource); - $this->__toString()->shouldReturn('exact(stream:'.$resource.')'); - } - - function it_generates_proper_string_representation_for_object(\stdClass $object) - { - $objHash = sprintf('%s:%s', - get_class($object->getWrappedObject()), - spl_object_hash($object->getWrappedObject()) - ); - - $this->beConstructedWith($object); - $this->__toString()->shouldReturn("exact($objHash Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n))"); - } -} - -class ExactValueTokenFixtureA -{ - public $errors; -} - -class ExactValueTokenFixtureB extends ExactValueTokenFixtureA -{ - public $errors; - public $value = null; - - public function __construct($value) - { - $this->value = $value; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/IdenticalValueTokenSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/IdenticalValueTokenSpec.php deleted file mode 100644 index 00c3a21..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/IdenticalValueTokenSpec.php +++ /dev/null @@ -1,152 +0,0 @@ -beConstructedWith(42); - } - - function it_is_initializable() - { - $this->shouldHaveType('Prophecy\Argument\Token\IdenticalValueToken'); - } - - function it_scores_11_if_string_value_is_identical_to_argument() - { - $this->beConstructedWith('foo'); - $this->scoreArgument('foo')->shouldReturn(11); - } - - function it_scores_11_if_boolean_value_is_identical_to_argument() - { - $this->beConstructedWith(false); - $this->scoreArgument(false)->shouldReturn(11); - } - - function it_scores_11_if_integer_value_is_identical_to_argument() - { - $this->beConstructedWith(31); - $this->scoreArgument(31)->shouldReturn(11); - } - - function it_scores_11_if_float_value_is_identical_to_argument() - { - $this->beConstructedWith(31.12); - $this->scoreArgument(31.12)->shouldReturn(11); - } - - function it_scores_11_if_array_value_is_identical_to_argument() - { - $this->beConstructedWith(array('foo' => 'bar')); - $this->scoreArgument(array('foo' => 'bar'))->shouldReturn(11); - } - - function it_scores_11_if_object_value_is_identical_to_argument() - { - $object = new \stdClass(); - - $this->beConstructedWith($object); - $this->scoreArgument($object)->shouldReturn(11); - } - - function it_scores_false_if_value_is_not_identical_to_argument() - { - $this->beConstructedWith(new \stdClass()); - $this->scoreArgument('foo')->shouldReturn(false); - } - - function it_scores_false_if_object_value_is_not_the_same_instance_than_argument() - { - $this->beConstructedWith(new \stdClass()); - $this->scoreArgument(new \stdClass())->shouldReturn(false); - } - - function it_scores_false_if_integer_value_is_not_identical_to_boolean_argument() - { - $this->beConstructedWith(1); - $this->scoreArgument(true)->shouldReturn(false); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_generates_proper_string_representation_for_integer() - { - $this->beConstructedWith(42); - $this->__toString()->shouldReturn('identical(42)'); - } - - function it_generates_proper_string_representation_for_string() - { - $this->beConstructedWith('some string'); - $this->__toString()->shouldReturn('identical("some string")'); - } - - function it_generates_single_line_representation_for_multiline_string() - { - $this->beConstructedWith("some\nstring"); - $this->__toString()->shouldReturn('identical("some\\nstring")'); - } - - function it_generates_proper_string_representation_for_double() - { - $this->beConstructedWith(42.3); - $this->__toString()->shouldReturn('identical(42.3)'); - } - - function it_generates_proper_string_representation_for_boolean_true() - { - $this->beConstructedWith(true); - $this->__toString()->shouldReturn('identical(true)'); - } - - function it_generates_proper_string_representation_for_boolean_false() - { - $this->beConstructedWith(false); - $this->__toString()->shouldReturn('identical(false)'); - } - - function it_generates_proper_string_representation_for_null() - { - $this->beConstructedWith(null); - $this->__toString()->shouldReturn('identical(null)'); - } - - function it_generates_proper_string_representation_for_empty_array() - { - $this->beConstructedWith(array()); - $this->__toString()->shouldReturn('identical([])'); - } - - function it_generates_proper_string_representation_for_array() - { - $this->beConstructedWith(array('zet', 42)); - $this->__toString()->shouldReturn('identical(["zet", 42])'); - } - - function it_generates_proper_string_representation_for_resource() - { - $resource = fopen(__FILE__, 'r'); - $this->beConstructedWith($resource); - $this->__toString()->shouldReturn('identical(stream:'.$resource.')'); - } - - function it_generates_proper_string_representation_for_object($object) - { - $objHash = sprintf('%s:%s', - get_class($object->getWrappedObject()), - spl_object_hash($object->getWrappedObject()) - ); - - $this->beConstructedWith($object); - $this->__toString()->shouldReturn("identical($objHash Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n))"); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalAndTokenSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalAndTokenSpec.php deleted file mode 100644 index a79acf4..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalAndTokenSpec.php +++ /dev/null @@ -1,69 +0,0 @@ -beConstructedWith(array()); - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->beConstructedWith(array()); - $this->shouldNotBeLast(); - } - - function it_generates_string_representation_from_all_tokens_imploded( - TokenInterface $token1, - TokenInterface $token2, - TokenInterface $token3 - ) { - $token1->__toString()->willReturn('token_1'); - $token2->__toString()->willReturn('token_2'); - $token3->__toString()->willReturn('token_3'); - - $this->beConstructedWith(array($token1, $token2, $token3)); - $this->__toString()->shouldReturn('bool(token_1 AND token_2 AND token_3)'); - } - - function it_wraps_non_token_arguments_into_ExactValueToken() - { - $this->beConstructedWith(array(15, '1985')); - $this->__toString()->shouldReturn("bool(exact(15) AND exact(\"1985\"))"); - } - - function it_scores_the_maximum_score_from_all_scores_returned_by_tokens(TokenInterface $token1, TokenInterface $token2) - { - $token1->scoreArgument(1)->willReturn(10); - $token2->scoreArgument(1)->willReturn(5); - $this->beConstructedWith(array($token1, $token2)); - $this->scoreArgument(1)->shouldReturn(10); - } - - function it_does_not_score_if_there_are_no_arguments_or_tokens() - { - $this->beConstructedWith(array()); - $this->scoreArgument('any')->shouldReturn(false); - } - - function it_does_not_score_if_either_of_tokens_does_not_score(TokenInterface $token1, TokenInterface $token2) - { - $token1->scoreArgument(1)->willReturn(10); - $token1->scoreArgument(2)->willReturn(false); - - $token2->scoreArgument(1)->willReturn(false); - $token2->scoreArgument(2)->willReturn(10); - - $this->beConstructedWith(array($token1, $token2)); - - $this->scoreArgument(1)->shouldReturn(false); - $this->scoreArgument(2)->shouldReturn(false); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalNotTokenSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalNotTokenSpec.php deleted file mode 100644 index c2cbbad..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalNotTokenSpec.php +++ /dev/null @@ -1,62 +0,0 @@ -beConstructedWith($token); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_holds_originating_token($token) - { - $this->getOriginatingToken()->shouldReturn($token); - } - - function it_has_simple_string_representation($token) - { - $token->__toString()->willReturn('value'); - $this->__toString()->shouldBe('not(value)'); - } - - function it_wraps_non_token_argument_into_ExactValueToken() - { - $this->beConstructedWith(5); - $token = $this->getOriginatingToken(); - $token->shouldhaveType('Prophecy\Argument\Token\ExactValueToken'); - $token->getValue()->shouldBe(5); - } - - function it_scores_4_if_preset_token_does_not_match_the_argument($token) - { - $token->scoreArgument('argument')->willReturn(false); - $this->scoreArgument('argument')->shouldBe(4); - } - - function it_does_not_score_if_preset_token_matches_argument($token) - { - $token->scoreArgument('argument')->willReturn(5); - $this->scoreArgument('argument')->shouldBe(false); - } - - function it_is_last_if_preset_token_is_last($token) - { - $token->isLast()->willReturn(true); - $this->shouldBeLast(); - } - - function it_is_not_last_if_preset_token_is_not_last($token) - { - $token->isLast()->willReturn(false); - $this->shouldNotBeLast(); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ObjectStateTokenSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ObjectStateTokenSpec.php deleted file mode 100644 index d71b22a..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ObjectStateTokenSpec.php +++ /dev/null @@ -1,89 +0,0 @@ -beConstructedWith('getName', 'stdClass'); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_scores_8_if_argument_object_has_specific_method_state(\ReflectionClass $reflection) - { - $reflection->getName()->willReturn('stdClass'); - - $this->scoreArgument($reflection)->shouldReturn(8); - } - - function it_scores_8_if_argument_object_has_specific_property_state(\stdClass $class) - { - $class->getName = 'stdClass'; - - $this->scoreArgument($class)->shouldReturn(8); - } - - function it_does_not_score_if_argument_method_state_does_not_match() - { - $value = new ObjectStateTokenFixtureB('ABC'); - $value2 = new ObjectStateTokenFixtureB('CBA'); - - $this->beConstructedWith('getSelf', $value); - $this->scoreArgument($value2)->shouldReturn(false); - } - - function it_does_not_score_if_argument_property_state_does_not_match(\stdClass $class) - { - $class->getName = 'SplFileInfo'; - - $this->scoreArgument($class)->shouldReturn(false); - } - - function it_does_not_score_if_argument_object_does_not_have_method_or_property(ObjectStateTokenFixtureA $class) - { - $this->scoreArgument($class)->shouldReturn(false); - } - - function it_does_not_score_if_argument_is_not_object() - { - $this->scoreArgument(42)->shouldReturn(false); - } - - function it_has_simple_string_representation() - { - $this->__toString()->shouldReturn('state(getName(), "stdClass")'); - } -} - -class ObjectStateTokenFixtureA -{ - public $errors; -} - -class ObjectStateTokenFixtureB extends ObjectStateTokenFixtureA -{ - public $errors; - public $value = null; - - public function __construct($value) - { - $this->value = $value; - } - - public function getSelf() - { - return $this; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/StringContainsTokenSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/StringContainsTokenSpec.php deleted file mode 100644 index c7fd265..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/StringContainsTokenSpec.php +++ /dev/null @@ -1,49 +0,0 @@ -beConstructedWith('a substring'); - } - - function it_is_initializable() - { - $this->shouldHaveType('Prophecy\Argument\Token\StringContainsToken'); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_holds_value() - { - $this->getValue()->shouldReturn('a substring'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_scores_6_if_the_argument_contains_the_value() - { - $this->scoreArgument('Argument containing a substring')->shouldReturn(6); - } - - function it_does_not_score_if_the_argument_does_not_contain_the_value() - { - $this->scoreArgument('Argument will not match')->shouldReturn(false); - } - - function its_string_representation_shows_substring() - { - $this->__toString()->shouldReturn('contains("a substring")'); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/TypeTokenSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/TypeTokenSpec.php deleted file mode 100644 index 2829f31..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/TypeTokenSpec.php +++ /dev/null @@ -1,57 +0,0 @@ -beConstructedWith('integer'); - } - - function it_implements_TokenInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); - } - - function it_is_not_last() - { - $this->shouldNotBeLast(); - } - - function it_scores_5_if_argument_matches_simple_type() - { - $this->beConstructedWith('integer'); - - $this->scoreArgument(42)->shouldReturn(5); - } - - function it_does_not_scores_if_argument_does_not_match_simple_type() - { - $this->beConstructedWith('integer'); - - $this->scoreArgument(42.0)->shouldReturn(false); - } - - function it_scores_5_if_argument_is_an_instance_of_specified_class(\ReflectionObject $object) - { - $this->beConstructedWith('ReflectionClass'); - - $this->scoreArgument($object)->shouldReturn(5); - } - - function it_has_simple_string_representation() - { - $this->__toString()->shouldReturn('type(integer)'); - } - - function it_scores_5_if_argument_is_an_instance_of_specified_interface(TokenInterface $interface) - { - $this->beConstructedWith('Prophecy\Argument\Token\TokenInterface'); - - $this->scoreArgument($interface)->shouldReturn(5); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/ArgumentSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/ArgumentSpec.php deleted file mode 100644 index 64232a4..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/ArgumentSpec.php +++ /dev/null @@ -1,107 +0,0 @@ -exact(42); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ExactValueToken'); - $token->getValue()->shouldReturn(42); - } - - function it_has_a_shortcut_for_any_argument_token() - { - $token = $this->any(); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\AnyValueToken'); - } - - function it_has_a_shortcut_for_multiple_arguments_token() - { - $token = $this->cetera(); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\AnyValuesToken'); - } - - function it_has_a_shortcut_for_type_token() - { - $token = $this->type('integer'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\TypeToken'); - } - - function it_has_a_shortcut_for_callback_token() - { - $token = $this->that('get_class'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\CallbackToken'); - } - - function it_has_a_shortcut_for_object_state_token() - { - $token = $this->which('getName', 'everzet'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ObjectStateToken'); - } - - function it_has_a_shortcut_for_logical_and_token() - { - $token = $this->allOf('integer', 5); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\LogicalAndToken'); - } - - function it_has_a_shortcut_for_array_count_token() - { - $token = $this->size(5); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayCountToken'); - } - - function it_has_a_shortcut_for_array_entry_token() - { - $token = $this->withEntry('key', 'value'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEntryToken'); - } - - function it_has_a_shortcut_for_array_every_entry_token() - { - $token = $this->withEveryEntry('value'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEveryEntryToken'); - } - - function it_has_a_shortcut_for_identical_value_token() - { - $token = $this->is('value'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\IdenticalValueToken'); - } - - function it_has_a_shortcut_for_array_entry_token_matching_any_key() - { - $token = $this->containing('value'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEntryToken'); - $token->getKey()->shouldHaveType('Prophecy\Argument\Token\AnyValueToken'); - } - - function it_has_a_shortcut_for_array_entry_token_matching_any_value() - { - $token = $this->withKey('key'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEntryToken'); - $token->getValue()->shouldHaveType('Prophecy\Argument\Token\AnyValueToken'); - } - - function it_has_a_shortcut_for_logical_not_token() - { - $token = $this->not('kagux'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\LogicalNotToken'); - } - - function it_has_a_shortcut_for_string_contains_token() - { - $token = $this->containingString('string'); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\StringContainsToken'); - } - - function it_has_a_shortcut_for_approximate_token() - { - $token = $this->approximate(10); - $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ApproximateValueToken'); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Call/CallCenterSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Call/CallCenterSpec.php deleted file mode 100644 index 83d61f1..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Call/CallCenterSpec.php +++ /dev/null @@ -1,180 +0,0 @@ -scoreArguments(array(5, 2, 3))->willReturn(10); - $objectProphecy->getMethodProphecies()->willReturn(array()); - - $this->makeCall($objectProphecy, 'setValues', array(5, 2, 3)); - - $calls = $this->findCalls('setValues', $wildcard); - $calls->shouldHaveCount(1); - - $calls[0]->shouldBeAnInstanceOf('Prophecy\Call\Call'); - $calls[0]->getMethodName()->shouldReturn('setValues'); - $calls[0]->getArguments()->shouldReturn(array(5, 2, 3)); - $calls[0]->getReturnValue()->shouldReturn(null); - } - - function it_returns_null_for_any_call_through_makeCall_if_no_method_prophecies_added( - $objectProphecy - ) - { - $objectProphecy->getMethodProphecies()->willReturn(array()); - - $this->makeCall($objectProphecy, 'setValues', array(5, 2, 3))->shouldReturn(null); - } - - function it_executes_promise_of_method_prophecy_that_matches_signature_passed_to_makeCall( - $objectProphecy, - MethodProphecy $method1, - MethodProphecy $method2, - MethodProphecy $method3, - ArgumentsWildcard $arguments1, - ArgumentsWildcard $arguments2, - ArgumentsWildcard $arguments3, - PromiseInterface $promise - ) { - $method1->hasReturnVoid()->willReturn(false); - $method1->getMethodName()->willReturn('getName'); - $method1->getArgumentsWildcard()->willReturn($arguments1); - $arguments1->scoreArguments(array('world', 'everything'))->willReturn(false); - - $method2->hasReturnVoid()->willReturn(false); - $method2->getMethodName()->willReturn('setTitle'); - $method2->getArgumentsWildcard()->willReturn($arguments2); - $arguments2->scoreArguments(array('world', 'everything'))->willReturn(false); - - $method3->hasReturnVoid()->willReturn(false); - $method3->getMethodName()->willReturn('getName'); - $method3->getArgumentsWildcard()->willReturn($arguments3); - $method3->getPromise()->willReturn($promise); - $arguments3->scoreArguments(array('world', 'everything'))->willReturn(200); - - $objectProphecy->getMethodProphecies()->willReturn(array( - 'method1' => array($method1), - 'method2' => array($method2, $method3) - )); - $objectProphecy->getMethodProphecies('getName')->willReturn(array($method1, $method3)); - $objectProphecy->reveal()->willReturn(new \stdClass()); - - $promise->execute(array('world', 'everything'), $objectProphecy->getWrappedObject(), $method3)->willReturn(42); - - $this->makeCall($objectProphecy, 'getName', array('world', 'everything'))->shouldReturn(42); - - $calls = $this->findCalls('getName', $arguments3); - $calls->shouldHaveCount(1); - $calls[0]->getReturnValue()->shouldReturn(42); - } - - function it_executes_promise_of_method_prophecy_that_matches_with_highest_score_to_makeCall( - $objectProphecy, - MethodProphecy $method1, - MethodProphecy $method2, - MethodProphecy $method3, - ArgumentsWildcard $arguments1, - ArgumentsWildcard $arguments2, - ArgumentsWildcard $arguments3, - PromiseInterface $promise - ) { - $method1->hasReturnVoid()->willReturn(false); - $method1->getMethodName()->willReturn('getName'); - $method1->getArgumentsWildcard()->willReturn($arguments1); - $arguments1->scoreArguments(array('world', 'everything'))->willReturn(50); - - $method2->hasReturnVoid()->willReturn(false); - $method2->getMethodName()->willReturn('getName'); - $method2->getArgumentsWildcard()->willReturn($arguments2); - $method2->getPromise()->willReturn($promise); - $arguments2->scoreArguments(array('world', 'everything'))->willReturn(300); - - $method3->hasReturnVoid()->willReturn(false); - $method3->getMethodName()->willReturn('getName'); - $method3->getArgumentsWildcard()->willReturn($arguments3); - $arguments3->scoreArguments(array('world', 'everything'))->willReturn(200); - - $objectProphecy->getMethodProphecies()->willReturn(array( - 'method1' => array($method1), - 'method2' => array($method2, $method3) - )); - $objectProphecy->getMethodProphecies('getName')->willReturn(array( - $method1, $method2, $method3 - )); - $objectProphecy->reveal()->willReturn(new \stdClass()); - - $promise->execute(array('world', 'everything'), $objectProphecy->getWrappedObject(), $method2) - ->willReturn('second'); - - $this->makeCall($objectProphecy, 'getName', array('world', 'everything')) - ->shouldReturn('second'); - } - - function it_throws_exception_if_call_does_not_match_any_of_defined_method_prophecies( - $objectProphecy, - MethodProphecy $method, - ArgumentsWildcard $arguments - ) { - $method->getMethodName()->willReturn('getName'); - $method->getArgumentsWildcard()->willReturn($arguments); - $arguments->scoreArguments(array('world', 'everything'))->willReturn(false); - $arguments->__toString()->willReturn('arg1, arg2'); - - $objectProphecy->getMethodProphecies()->willReturn(array('method1' => array($method))); - $objectProphecy->getMethodProphecies('getName')->willReturn(array($method)); - - $this->shouldThrow('Prophecy\Exception\Call\UnexpectedCallException') - ->duringMakeCall($objectProphecy, 'getName', array('world', 'everything')); - } - - function it_returns_null_if_method_prophecy_that_matches_makeCall_arguments_has_no_promise( - $objectProphecy, - MethodProphecy $method, - ArgumentsWildcard $arguments - ) { - $method->hasReturnVoid()->willReturn(false); - $method->getMethodName()->willReturn('getName'); - $method->getArgumentsWildcard()->willReturn($arguments); - $method->getPromise()->willReturn(null); - $arguments->scoreArguments(array('world', 'everything'))->willReturn(100); - - $objectProphecy->getMethodProphecies()->willReturn(array($method)); - $objectProphecy->getMethodProphecies('getName')->willReturn(array($method)); - - $this->makeCall($objectProphecy, 'getName', array('world', 'everything')) - ->shouldReturn(null); - } - - function it_finds_recorded_calls_by_a_method_name_and_arguments_wildcard( - $objectProphecy, - ArgumentsWildcard $wildcard - ) { - $objectProphecy->getMethodProphecies()->willReturn(array()); - - $this->makeCall($objectProphecy, 'getName', array('world')); - $this->makeCall($objectProphecy, 'getName', array('everything')); - $this->makeCall($objectProphecy, 'setName', array(42)); - - $wildcard->scoreArguments(array('world'))->willReturn(false); - $wildcard->scoreArguments(array('everything'))->willReturn(10); - - $calls = $this->findCalls('getName', $wildcard); - - $calls->shouldHaveCount(1); - $calls[0]->getMethodName()->shouldReturn('getName'); - $calls[0]->getArguments()->shouldReturn(array('everything')); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Call/CallSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Call/CallSpec.php deleted file mode 100644 index a622b49..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Call/CallSpec.php +++ /dev/null @@ -1,51 +0,0 @@ -beConstructedWith('setValues', array(5, 2), 42, $exception, 'some_file.php', 23); - } - - function it_exposes_method_name_through_getter() - { - $this->getMethodName()->shouldReturn('setValues'); - } - - function it_exposes_arguments_through_getter() - { - $this->getArguments()->shouldReturn(array(5, 2)); - } - - function it_exposes_return_value_through_getter() - { - $this->getReturnValue()->shouldReturn(42); - } - - function it_exposes_exception_through_getter($exception) - { - $this->getException()->shouldReturn($exception); - } - - function it_exposes_file_and_line_through_getter() - { - $this->getFile()->shouldReturn('some_file.php'); - $this->getLine()->shouldReturn(23); - } - - function it_returns_shortpath_to_callPlace() - { - $this->getCallPlace()->shouldReturn('some_file.php:23'); - } - - function it_returns_unknown_as_callPlace_if_no_file_or_line_provided() - { - $this->beConstructedWith('setValues', array(), 0, null, null, null); - - $this->getCallPlace()->shouldReturn('unknown'); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ClosureComparatorSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ClosureComparatorSpec.php deleted file mode 100644 index c174e73..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ClosureComparatorSpec.php +++ /dev/null @@ -1,39 +0,0 @@ -shouldHaveType('SebastianBergmann\Comparator\Comparator'); - } - - function it_accepts_only_closures() - { - $this->accepts(123, 321)->shouldReturn(false); - $this->accepts('string', 'string')->shouldReturn(false); - $this->accepts(false, true)->shouldReturn(false); - $this->accepts(true, false)->shouldReturn(false); - $this->accepts((object)array(), (object)array())->shouldReturn(false); - $this->accepts(function(){}, (object)array())->shouldReturn(false); - $this->accepts(function(){}, (object)array())->shouldReturn(false); - - $this->accepts(function(){}, function(){})->shouldReturn(true); - } - - function it_asserts_that_all_closures_are_different() - { - $this->shouldThrow()->duringAssertEquals(function(){}, function(){}); - } - - function it_asserts_that_all_closures_are_different_even_if_its_the_same_closure() - { - $closure = function(){}; - - $this->shouldThrow()->duringAssertEquals($closure, $closure); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Comparator/FactorySpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Comparator/FactorySpec.php deleted file mode 100644 index 6b13336..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Comparator/FactorySpec.php +++ /dev/null @@ -1,20 +0,0 @@ -shouldHaveType('SebastianBergmann\Comparator\Factory'); - } - - function it_should_have_ClosureComparator_registered() - { - $comparator = $this->getInstance()->getComparatorFor(function(){}, function(){}); - $comparator->shouldHaveType('Prophecy\Comparator\ClosureComparator'); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ProphecyComparatorSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ProphecyComparatorSpec.php deleted file mode 100644 index 615a0de..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ProphecyComparatorSpec.php +++ /dev/null @@ -1,40 +0,0 @@ -shouldHaveType('SebastianBergmann\Comparator\ObjectComparator'); - } - - function it_accepts_only_prophecy_objects() - { - $this->accepts(123, 321)->shouldReturn(false); - $this->accepts('string', 'string')->shouldReturn(false); - $this->accepts(false, true)->shouldReturn(false); - $this->accepts(true, false)->shouldReturn(false); - $this->accepts((object)array(), (object)array())->shouldReturn(false); - $this->accepts(function(){}, (object)array())->shouldReturn(false); - $this->accepts(function(){}, function(){})->shouldReturn(false); - - $prophet = new Prophet(); - $prophecy = $prophet->prophesize('Prophecy\Prophecy\ObjectProphecy'); - - $this->accepts($prophecy, $prophecy)->shouldReturn(true); - } - - function it_asserts_that_an_object_is_equal_to_its_revealed_prophecy() - { - $prophet = new Prophet(); - $prophecy = $prophet->prophesize('Prophecy\Prophecy\ObjectProphecy'); - $prophecy->__call('reveal', array())->willReturn(new \stdClass()); - - $this->shouldNotThrow()->duringAssertEquals($prophecy->reveal(), $prophecy); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/DisableConstructorPatchSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/DisableConstructorPatchSpec.php deleted file mode 100644 index 4fd28d7..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/DisableConstructorPatchSpec.php +++ /dev/null @@ -1,54 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); - } - - function its_priority_is_100() - { - $this->getPriority()->shouldReturn(100); - } - - function it_supports_anything(ClassNode $node) - { - $this->supports($node)->shouldReturn(true); - } - - function it_makes_all_constructor_arguments_optional( - ClassNode $class, - MethodNode $method, - ArgumentNode $arg1, - ArgumentNode $arg2 - ) { - $class->hasMethod('__construct')->willReturn(true); - $class->getMethod('__construct')->willReturn($method); - $method->getArguments()->willReturn(array($arg1, $arg2)); - - $arg1->setDefault(null)->shouldBeCalled(); - $arg2->setDefault(null)->shouldBeCalled(); - - $method->setCode(Argument::type('string'))->shouldBeCalled(); - - $this->apply($class); - } - - function it_creates_new_constructor_if_object_has_none(ClassNode $class) - { - $class->hasMethod('__construct')->willReturn(false); - $class->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode')) - ->shouldBeCalled(); - - $this->apply($class); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/HhvmExceptionPatchSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/HhvmExceptionPatchSpec.php deleted file mode 100644 index 9d04421..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/HhvmExceptionPatchSpec.php +++ /dev/null @@ -1,34 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); - } - - function its_priority_is_minus_50() - { - $this->getPriority()->shouldReturn(-50); - } - - function it_uses_parent_code_for_setTraceOptions(ClassNode $node, MethodNode $method, MethodNode $getterMethod) - { - $node->hasMethod('setTraceOptions')->willReturn(true); - $node->getMethod('setTraceOptions')->willReturn($method); - $node->hasMethod('getTraceOptions')->willReturn(true); - $node->getMethod('getTraceOptions')->willReturn($getterMethod); - - $method->useParentCode()->shouldBeCalled(); - $getterMethod->useParentCode()->shouldBeCalled(); - - $this->apply($node); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/KeywordPatchSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/KeywordPatchSpec.php deleted file mode 100644 index 4ecb82e..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/KeywordPatchSpec.php +++ /dev/null @@ -1,73 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); - } - - function its_priority_is_49() - { - $this->getPriority()->shouldReturn(49); - } - - function it_will_remove_echo_and_eval_methods( - ClassNode $node, - MethodNode $method1, - MethodNode $method2, - MethodNode $method3 - ) { - if (\PHP_VERSION_ID >= 70000) { - throw new SkippingException('Reserved keywords list in PHP 7 does not include most of PHP 5.6 keywords'); - } - - $node->removeMethod('eval')->shouldBeCalled(); - $node->removeMethod('echo')->shouldBeCalled(); - - $method1->getName()->willReturn('echo'); - $method2->getName()->willReturn('eval'); - $method3->getName()->willReturn('notKeyword'); - - $node->getMethods()->willReturn(array( - 'echo' => $method1, - 'eval' => $method2, - 'notKeyword' => $method3, - )); - - $this->apply($node); - } - - function it_will_remove_halt_compiler_method( - ClassNode $node, - MethodNode $method1, - MethodNode $method2, - MethodNode $method3 - ) { - if (\PHP_VERSION_ID < 70000) { - throw new SkippingException('Reserved keywords list in PHP 7 does not include most of PHP 5.6 keywords'); - } - - $node->removeMethod('__halt_compiler')->shouldBeCalled(); - - $method1->getName()->willReturn('__halt_compiler'); - $method2->getName()->willReturn('echo'); - $method3->getName()->willReturn('notKeyword'); - - $node->getMethods()->willReturn(array( - '__halt_compiler' => $method1, - 'echo' => $method2, - 'notKeyword' => $method3, - )); - - $this->apply($node); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php deleted file mode 100644 index f7a5631..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php +++ /dev/null @@ -1,140 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); - } - - function it_supports_anything(ClassNode $node) - { - $this->supports($node)->shouldReturn(true); - } - - function it_discovers_api_using_phpdoc(ClassNode $node) - { - $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApi'); - $node->getInterfaces()->willReturn(array()); - - $node->addMethod(new MethodNode('undefinedMethod'))->shouldBeCalled(); - - $this->apply($node); - } - - function it_ignores_existing_methods(ClassNode $node) - { - $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiExtended'); - $node->getInterfaces()->willReturn(array()); - - $node->addMethod(new MethodNode('undefinedMethod'))->shouldBeCalled(); - $node->addMethod(new MethodNode('definedMethod'))->shouldNotBeCalled(); - - $this->apply($node); - } - - function it_ignores_empty_methods_from_phpdoc(ClassNode $node) - { - $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiInvalidMethodDefinition'); - $node->getInterfaces()->willReturn(array()); - - $node->addMethod(new MethodNode(''))->shouldNotBeCalled(); - - $this->apply($node); - } - - function it_discovers_api_using_phpdoc_from_implemented_interfaces(ClassNode $node) - { - $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiImplemented'); - $node->getInterfaces()->willReturn(array()); - - $node->addMethod(new MethodNode('implementedMethod'))->shouldBeCalled(); - - $this->apply($node); - } - - function it_discovers_api_using_phpdoc_from_own_interfaces(ClassNode $node) - { - $node->getParentClass()->willReturn('stdClass'); - $node->getInterfaces()->willReturn(array('spec\Prophecy\Doubler\ClassPatch\MagicalApiImplemented')); - - $node->addMethod(new MethodNode('implementedMethod'))->shouldBeCalled(); - - $this->apply($node); - } - - function it_discovers_api_using_phpdoc_from_extended_parent_interfaces(ClassNode $node) - { - $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiImplementedExtended'); - $node->getInterfaces()->willReturn(array()); - - $node->addMethod(new MethodNode('implementedMethod'))->shouldBeCalled(); - - $this->apply($node); - } - - function it_has_50_priority() - { - $this->getPriority()->shouldReturn(50); - } -} - -/** - * @method void undefinedMethod() - */ -class MagicalApi -{ - /** - * @return void - */ - public function definedMethod() - { - - } -} - -/** - * @method void invalidMethodDefinition - * @method void - * @method - */ -class MagicalApiInvalidMethodDefinition -{ -} - -/** - * @method void undefinedMethod() - * @method void definedMethod() - */ -class MagicalApiExtended extends MagicalApi -{ - -} - -/** - */ -class MagicalApiImplemented implements MagicalApiInterface -{ - -} - -/** - */ -class MagicalApiImplementedExtended extends MagicalApiImplemented -{ -} - -/** - * @method void implementedMethod() - */ -interface MagicalApiInterface -{ - -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ProphecySubjectPatchSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ProphecySubjectPatchSpec.php deleted file mode 100644 index 96f0e20..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ProphecySubjectPatchSpec.php +++ /dev/null @@ -1,79 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); - } - - function it_has_priority_of_0() - { - $this->getPriority()->shouldReturn(0); - } - - function it_supports_any_class(ClassNode $node) - { - $this->supports($node)->shouldReturn(true); - } - - function it_forces_class_to_implement_ProphecySubjectInterface(ClassNode $node) - { - $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface')->shouldBeCalled(); - - $node->addProperty('objectProphecy', 'private')->willReturn(null); - $node->getMethods()->willReturn(array()); - $node->hasMethod(Argument::any())->willReturn(false); - $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); - $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); - - $this->apply($node); - } - - function it_forces_all_class_methods_except_constructor_to_proxy_calls_into_prophecy_makeCall( - ClassNode $node, - MethodNode $constructor, - MethodNode $method1, - MethodNode $method2, - MethodNode $method3 - ) { - $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface')->willReturn(null); - $node->addProperty('objectProphecy', 'private')->willReturn(null); - $node->hasMethod(Argument::any())->willReturn(false); - $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); - $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); - - $constructor->getName()->willReturn('__construct'); - $method1->getName()->willReturn('method1'); - $method2->getName()->willReturn('method2'); - $method3->getName()->willReturn('method3'); - - $method1->getReturnType()->willReturn('int'); - $method2->getReturnType()->willReturn('int'); - $method3->getReturnType()->willReturn('void'); - - $node->getMethods()->willReturn(array( - 'method1' => $method1, - 'method2' => $method2, - 'method3' => $method3, - )); - - $constructor->setCode(Argument::any())->shouldNotBeCalled(); - - $method1->setCode('return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());') - ->shouldBeCalled(); - $method2->setCode('return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());') - ->shouldBeCalled(); - $method3->setCode('$this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());') - ->shouldBeCalled(); - - $this->apply($node); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatchSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatchSpec.php deleted file mode 100644 index effd61e..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatchSpec.php +++ /dev/null @@ -1,43 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); - } - - function its_priority_is_50() - { - $this->getPriority()->shouldReturn(50); - } - - function it_supports_ReflectionClass_only(ClassNode $reflectionClassNode, ClassNode $anotherClassNode) - { - $reflectionClassNode->getParentClass()->willReturn('ReflectionClass'); - $anotherClassNode->getParentClass()->willReturn('stdClass'); - - $this->supports($reflectionClassNode)->shouldReturn(true); - $this->supports($anotherClassNode)->shouldReturn(false); - } - - function it_makes_all_newInstance_arguments_optional( - ClassNode $class, - MethodNode $method, - ArgumentNode $arg1 - ) { - $class->getMethod('newInstance')->willReturn($method); - $method->getArguments()->willReturn(array($arg1)); - $arg1->setDefault(null)->shouldBeCalled(); - - $this->apply($class); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/SplFileInfoPatchSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/SplFileInfoPatchSpec.php deleted file mode 100644 index 8fb949b..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/SplFileInfoPatchSpec.php +++ /dev/null @@ -1,98 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); - } - - function its_priority_is_50() - { - $this->getPriority()->shouldReturn(50); - } - - function it_does_not_support_nodes_without_parent_class(ClassNode $node) - { - $node->getParentClass()->willReturn('stdClass'); - $this->supports($node)->shouldReturn(false); - } - - function it_supports_nodes_with_SplFileInfo_as_parent_class(ClassNode $node) - { - $node->getParentClass()->willReturn('SplFileInfo'); - $this->supports($node)->shouldReturn(true); - } - - function it_supports_nodes_with_derivative_of_SplFileInfo_as_parent_class(ClassNode $node) - { - $node->getParentClass()->willReturn('SplFileInfo'); - $this->supports($node)->shouldReturn(true); - } - - function it_adds_a_method_to_node_if_not_exists(ClassNode $node) - { - $node->hasMethod('__construct')->willReturn(false); - $node->addMethod(Argument::any())->shouldBeCalled(); - $node->getParentClass()->shouldBeCalled(); - - $this->apply($node); - } - - function it_updates_existing_method_if_found(ClassNode $node, MethodNode $method) - { - $node->hasMethod('__construct')->willReturn(true); - $node->getMethod('__construct')->willReturn($method); - $node->getParentClass()->shouldBeCalled(); - - $method->useParentCode()->shouldBeCalled(); - - $this->apply($node); - } - - function it_should_not_supply_a_file_for_a_directory_iterator(ClassNode $node, MethodNode $method) - { - $node->hasMethod('__construct')->willReturn(true); - $node->getMethod('__construct')->willReturn($method); - $node->getParentClass()->willReturn('DirectoryIterator'); - - $method->setCode(Argument::that(function($value) { - return strpos($value, '.php') === false; - }))->shouldBeCalled(); - - $this->apply($node); - } - - function it_should_supply_a_file_for_a_spl_file_object(ClassNode $node, MethodNode $method) - { - $node->hasMethod('__construct')->willReturn(true); - $node->getMethod('__construct')->willReturn($method); - $node->getParentClass()->willReturn('SplFileObject'); - - $method->setCode(Argument::that(function($value) { - return strpos($value, '.php') !== false; - }))->shouldBeCalled(); - - $this->apply($node); - } - - function it_should_supply_a_file_for_a_symfony_spl_file_info(ClassNode $node, MethodNode $method) - { - $node->hasMethod('__construct')->willReturn(true); - $node->getMethod('__construct')->willReturn($method); - $node->getParentClass()->willReturn('Symfony\\Component\\Finder\\SplFileInfo'); - - $method->setCode(Argument::that(function($value) { - return strpos($value, '.php') !== false; - }))->shouldBeCalled(); - - $this->apply($node); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/TraversablePatchSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/TraversablePatchSpec.php deleted file mode 100644 index abce2f1..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/TraversablePatchSpec.php +++ /dev/null @@ -1,50 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); - } - - function it_supports_class_that_implements_only_Traversable(ClassNode $node) - { - $node->getInterfaces()->willReturn(array('Traversable')); - - $this->supports($node)->shouldReturn(true); - } - - function it_does_not_support_class_that_implements_Iterator(ClassNode $node) - { - $node->getInterfaces()->willReturn(array('Traversable', 'Iterator')); - - $this->supports($node)->shouldReturn(false); - } - - function it_does_not_support_class_that_implements_IteratorAggregate(ClassNode $node) - { - $node->getInterfaces()->willReturn(array('Traversable', 'IteratorAggregate')); - - $this->supports($node)->shouldReturn(false); - } - - function it_has_100_priority() - { - $this->getPriority()->shouldReturn(100); - } - - function it_forces_node_to_implement_IteratorAggregate(ClassNode $node) - { - $node->addInterface('Iterator')->shouldBeCalled(); - - $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); - - $this->apply($node); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/DoublerSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/DoublerSpec.php deleted file mode 100644 index b58b1a8..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/DoublerSpec.php +++ /dev/null @@ -1,115 +0,0 @@ -beConstructedWith($mirror, $creator, $namer); - } - - function it_does_not_have_patches_by_default() - { - $this->getClassPatches()->shouldHaveCount(0); - } - - function its_registerClassPatch_adds_a_patch_to_the_doubler(ClassPatchInterface $patch) - { - $this->registerClassPatch($patch); - $this->getClassPatches()->shouldReturn(array($patch)); - } - - function its_getClassPatches_sorts_patches_by_priority( - ClassPatchInterface $alt1, - ClassPatchInterface $alt2, - ClassPatchInterface $alt3, - ClassPatchInterface $alt4 - ) { - $alt1->getPriority()->willReturn(2); - $alt2->getPriority()->willReturn(50); - $alt3->getPriority()->willReturn(10); - $alt4->getPriority()->willReturn(0); - - $this->registerClassPatch($alt1); - $this->registerClassPatch($alt2); - $this->registerClassPatch($alt3); - $this->registerClassPatch($alt4); - - $this->getClassPatches()->shouldReturn(array($alt2, $alt3, $alt1, $alt4)); - } - - function its_double_mirrors_alterates_and_instantiates_provided_class( - $mirror, - $creator, - $namer, - ClassPatchInterface $alt1, - ClassPatchInterface $alt2, - \ReflectionClass $class, - \ReflectionClass $interface1, - \ReflectionClass $interface2, - ClassNode $node - ) { - $mirror->reflect($class, array($interface1, $interface2))->willReturn($node); - $alt1->supports($node)->willReturn(true); - $alt2->supports($node)->willReturn(false); - $alt1->getPriority()->willReturn(1); - $alt2->getPriority()->willReturn(2); - $namer->name($class, array($interface1, $interface2))->willReturn('SplStack'); - $class->getName()->willReturn('stdClass'); - $interface1->getName()->willReturn('ArrayAccess'); - $interface2->getName()->willReturn('Iterator'); - - $alt1->apply($node)->shouldBeCalled(); - $alt2->apply($node)->shouldNotBeCalled(); - $creator->create('SplStack', $node)->shouldBeCalled(); - - $this->registerClassPatch($alt1); - $this->registerClassPatch($alt2); - - $this->double($class, array($interface1, $interface2)) - ->shouldReturnAnInstanceOf('SplStack'); - } - - function it_double_instantiates_a_class_with_constructor_argument( - $mirror, - \ReflectionClass $class, - ClassNode $node, - $namer - ) { - $class->getName()->willReturn('ReflectionClass'); - $mirror->reflect($class, array())->willReturn($node); - $namer->name($class, array())->willReturn('ReflectionClass'); - - $double = $this->double($class, array(), array('stdClass')); - $double->shouldBeAnInstanceOf('ReflectionClass'); - $double->getName()->shouldReturn('stdClass'); - } - - function it_can_instantiate_class_with_final_constructor( - $mirror, - \ReflectionClass $class, - ClassNode $node, - $namer - ) { - $class->getName()->willReturn('spec\Prophecy\Doubler\WithFinalConstructor'); - $mirror->reflect($class, array())->willReturn($node); - $namer->name($class, array())->willReturn('spec\Prophecy\Doubler\WithFinalConstructor'); - - $double = $this->double($class, array()); - - $double->shouldBeAnInstanceOf('spec\Prophecy\Doubler\WithFinalConstructor'); - } -} - -class WithFinalConstructor -{ - final public function __construct() {} -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCodeGeneratorSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCodeGeneratorSpec.php deleted file mode 100644 index 4e59307..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCodeGeneratorSpec.php +++ /dev/null @@ -1,416 +0,0 @@ -getParentClass()->willReturn('RuntimeException'); - $class->getInterfaces()->willReturn(array( - 'Prophecy\Doubler\Generator\MirroredInterface', 'ArrayAccess', 'ArrayIterator' - )); - $class->getProperties()->willReturn(array('name' => 'public', 'email' => 'private')); - $class->getMethods()->willReturn(array($method1, $method2, $method3, $method4, $method5)); - - $method1->getName()->willReturn('getName'); - $method1->getVisibility()->willReturn('public'); - $method1->returnsReference()->willReturn(false); - $method1->isStatic()->willReturn(true); - $method1->getArguments()->willReturn(array($argument11, $argument12, $argument13)); - $method1->hasReturnType()->willReturn(true); - $method1->getReturnType()->willReturn('string'); - $method1->hasNullableReturnType()->willReturn(true); - $method1->getCode()->willReturn('return $this->name;'); - - $method2->getName()->willReturn('getEmail'); - $method2->getVisibility()->willReturn('protected'); - $method2->returnsReference()->willReturn(false); - $method2->isStatic()->willReturn(false); - $method2->getArguments()->willReturn(array($argument21)); - $method2->hasReturnType()->willReturn(false); - $method2->hasNullableReturnType()->willReturn(true); - $method2->getCode()->willReturn('return $this->email;'); - - $method3->getName()->willReturn('getRefValue'); - $method3->getVisibility()->willReturn('public'); - $method3->returnsReference()->willReturn(true); - $method3->isStatic()->willReturn(false); - $method3->getArguments()->willReturn(array($argument31)); - $method3->hasReturnType()->willReturn(true); - $method3->getReturnType()->willReturn('string'); - $method3->hasNullableReturnType()->willReturn(false); - $method3->getCode()->willReturn('return $this->refValue;'); - - $method4->getName()->willReturn('doSomething'); - $method4->getVisibility()->willReturn('public'); - $method4->returnsReference()->willReturn(false); - $method4->isStatic()->willReturn(false); - $method4->getArguments()->willReturn(array()); - $method4->hasReturnType()->willReturn(true); - $method4->getReturnType()->willReturn('void'); - $method4->hasNullableReturnType()->willReturn(false); - $method4->getCode()->willReturn('return;'); - - $method5->getName()->willReturn('returnObject'); - $method5->getVisibility()->willReturn('public'); - $method5->returnsReference()->willReturn(false); - $method5->isStatic()->willReturn(false); - $method5->getArguments()->willReturn(array()); - $method5->hasReturnType()->willReturn(true); - $method5->getReturnType()->willReturn(version_compare(PHP_VERSION, '7.2', '>=') ? 'object' : '\object'); - $method5->hasNullableReturnType()->willReturn(false); - $method5->getCode()->willReturn('return;'); - - $argument11->getName()->willReturn('fullname'); - $argument11->getTypeHint()->willReturn('array'); - $argument11->isOptional()->willReturn(true); - $argument11->getDefault()->willReturn(null); - $argument11->isPassedByReference()->willReturn(false); - $argument11->isVariadic()->willReturn(false); - $argument11->isNullable()->willReturn(false); - - $argument12->getName()->willReturn('class'); - $argument12->getTypeHint()->willReturn('ReflectionClass'); - $argument12->isOptional()->willReturn(false); - $argument12->isPassedByReference()->willReturn(false); - $argument12->isVariadic()->willReturn(false); - $argument12->isNullable()->willReturn(false); - - $argument13->getName()->willReturn('instance'); - $argument13->getTypeHint()->willReturn('object'); - $argument13->isOptional()->willReturn(false); - $argument13->isPassedByReference()->willReturn(false); - $argument13->isVariadic()->willReturn(false); - $argument13->isNullable()->willReturn(false); - - $argument21->getName()->willReturn('default'); - $argument21->getTypeHint()->willReturn('string'); - $argument21->isOptional()->willReturn(true); - $argument21->getDefault()->willReturn('ever.zet@gmail.com'); - $argument21->isPassedByReference()->willReturn(false); - $argument21->isVariadic()->willReturn(false); - $argument21->isNullable()->willReturn(true); - - $argument31->getName()->willReturn('refValue'); - $argument31->getTypeHint()->willReturn(null); - $argument31->isOptional()->willReturn(false); - $argument31->getDefault()->willReturn(); - $argument31->isPassedByReference()->willReturn(false); - $argument31->isVariadic()->willReturn(false); - $argument31->isNullable()->willReturn(false); - - $code = $this->generate('CustomClass', $class); - - if (version_compare(PHP_VERSION, '7.2', '>=')) { - $expected = <<<'PHP' -namespace { -class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface, \ArrayAccess, \ArrayIterator { -public $name; -private $email; - -public static function getName(array $fullname = NULL, \ReflectionClass $class, object $instance): ?string { -return $this->name; -} -protected function getEmail(?string $default = 'ever.zet@gmail.com') { -return $this->email; -} -public function &getRefValue( $refValue): string { -return $this->refValue; -} -public function doSomething(): void { -return; -} -public function returnObject(): object { -return; -} - -} -} -PHP; - } elseif (version_compare(PHP_VERSION, '7.1', '>=')) { - $expected = <<<'PHP' -namespace { -class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface, \ArrayAccess, \ArrayIterator { -public $name; -private $email; - -public static function getName(array $fullname = NULL, \ReflectionClass $class, \object $instance): ?string { -return $this->name; -} -protected function getEmail(?string $default = 'ever.zet@gmail.com') { -return $this->email; -} -public function &getRefValue( $refValue): string { -return $this->refValue; -} -public function doSomething(): void { -return; -} -public function returnObject(): \object { -return; -} - -} -} -PHP; - } elseif (version_compare(PHP_VERSION, '7.0', '>=')) { - $expected = <<<'PHP' -namespace { -class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface, \ArrayAccess, \ArrayIterator { -public $name; -private $email; - -public static function getName(array $fullname = NULL, \ReflectionClass $class, \object $instance): string { -return $this->name; -} -protected function getEmail(string $default = 'ever.zet@gmail.com') { -return $this->email; -} -public function &getRefValue( $refValue): string { -return $this->refValue; -} -public function doSomething() { -return; -} -public function returnObject(): \object { -return; -} - -} -} -PHP; - } else { - $expected = <<<'PHP' -namespace { -class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface, \ArrayAccess, \ArrayIterator { -public $name; -private $email; - -public static function getName(array $fullname = NULL, \ReflectionClass $class, \object $instance) { -return $this->name; -} -protected function getEmail(\string $default = 'ever.zet@gmail.com') { -return $this->email; -} -public function &getRefValue( $refValue) { -return $this->refValue; -} -public function doSomething() { -return; -} -public function returnObject() { -return; -} - -} -} -PHP; - } - $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); - $code->shouldBe($expected); - } - - function it_generates_proper_php_code_for_variadics( - ClassNode $class, - MethodNode $method1, - MethodNode $method2, - MethodNode $method3, - MethodNode $method4, - ArgumentNode $argument1, - ArgumentNode $argument2, - ArgumentNode $argument3, - ArgumentNode $argument4 - ) { - $class->getParentClass()->willReturn('stdClass'); - $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface')); - $class->getProperties()->willReturn(array()); - $class->getMethods()->willReturn(array( - $method1, $method2, $method3, $method4 - )); - - $method1->getName()->willReturn('variadic'); - $method1->getVisibility()->willReturn('public'); - $method1->returnsReference()->willReturn(false); - $method1->isStatic()->willReturn(false); - $method1->getArguments()->willReturn(array($argument1)); - $method1->hasReturnType()->willReturn(false); - $method1->getCode()->willReturn(''); - - $method2->getName()->willReturn('variadicByRef'); - $method2->getVisibility()->willReturn('public'); - $method2->returnsReference()->willReturn(false); - $method2->isStatic()->willReturn(false); - $method2->getArguments()->willReturn(array($argument2)); - $method2->hasReturnType()->willReturn(false); - $method2->getCode()->willReturn(''); - - $method3->getName()->willReturn('variadicWithType'); - $method3->getVisibility()->willReturn('public'); - $method3->returnsReference()->willReturn(false); - $method3->isStatic()->willReturn(false); - $method3->getArguments()->willReturn(array($argument3)); - $method3->hasReturnType()->willReturn(false); - $method3->getCode()->willReturn(''); - - $method4->getName()->willReturn('variadicWithTypeByRef'); - $method4->getVisibility()->willReturn('public'); - $method4->returnsReference()->willReturn(false); - $method4->isStatic()->willReturn(false); - $method4->getArguments()->willReturn(array($argument4)); - $method4->hasReturnType()->willReturn(false); - $method4->getCode()->willReturn(''); - - $argument1->getName()->willReturn('args'); - $argument1->getTypeHint()->willReturn(null); - $argument1->isOptional()->willReturn(false); - $argument1->isPassedByReference()->willReturn(false); - $argument1->isVariadic()->willReturn(true); - $argument1->isNullable()->willReturn(false); - - $argument2->getName()->willReturn('args'); - $argument2->getTypeHint()->willReturn(null); - $argument2->isOptional()->willReturn(false); - $argument2->isPassedByReference()->willReturn(true); - $argument2->isVariadic()->willReturn(true); - $argument2->isNullable()->willReturn(false); - - $argument3->getName()->willReturn('args'); - $argument3->getTypeHint()->willReturn('\ReflectionClass'); - $argument3->isOptional()->willReturn(false); - $argument3->isPassedByReference()->willReturn(false); - $argument3->isVariadic()->willReturn(true); - $argument3->isNullable()->willReturn(false); - - $argument4->getName()->willReturn('args'); - $argument4->getTypeHint()->willReturn('\ReflectionClass'); - $argument4->isOptional()->willReturn(false); - $argument4->isPassedByReference()->willReturn(true); - $argument4->isVariadic()->willReturn(true); - $argument4->isNullable()->willReturn(false); - - $code = $this->generate('CustomClass', $class); - $expected = <<<'PHP' -namespace { -class CustomClass extends \stdClass implements \Prophecy\Doubler\Generator\MirroredInterface { - -public function variadic( ...$args) { - -} -public function variadicByRef( &...$args) { - -} -public function variadicWithType(\\ReflectionClass ...$args) { - -} -public function variadicWithTypeByRef(\\ReflectionClass &...$args) { - -} - -} -} -PHP; - $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); - $code->shouldBe($expected); - } - - function it_overrides_properly_methods_with_args_passed_by_reference( - ClassNode $class, - MethodNode $method, - ArgumentNode $argument - ) { - $class->getParentClass()->willReturn('RuntimeException'); - $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface')); - $class->getProperties()->willReturn(array()); - $class->getMethods()->willReturn(array($method)); - - $method->getName()->willReturn('getName'); - $method->getVisibility()->willReturn('public'); - $method->isStatic()->willReturn(false); - $method->getArguments()->willReturn(array($argument)); - $method->hasReturnType()->willReturn(false); - $method->returnsReference()->willReturn(false); - $method->getCode()->willReturn('return $this->name;'); - - $argument->getName()->willReturn('fullname'); - $argument->getTypeHint()->willReturn('array'); - $argument->isOptional()->willReturn(true); - $argument->getDefault()->willReturn(null); - $argument->isPassedByReference()->willReturn(true); - $argument->isVariadic()->willReturn(false); - $argument->isNullable()->willReturn(false); - - $code = $this->generate('CustomClass', $class); - $expected =<<<'PHP' -namespace { -class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface { - -public function getName(array &$fullname = NULL) { -return $this->name; -} - -} -} -PHP; - $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); - $code->shouldBe($expected); - } - - function it_generates_empty_class_for_empty_ClassNode(ClassNode $class) - { - $class->getParentClass()->willReturn('stdClass'); - $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface')); - $class->getProperties()->willReturn(array()); - $class->getMethods()->willReturn(array()); - - $code = $this->generate('CustomClass', $class); - $expected =<<<'PHP' -namespace { -class CustomClass extends \stdClass implements \Prophecy\Doubler\Generator\MirroredInterface { - - -} -} -PHP; - $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); - $code->shouldBe($expected); - } - - function it_wraps_class_in_namespace_if_it_is_namespaced(ClassNode $class) - { - $class->getParentClass()->willReturn('stdClass'); - $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface')); - $class->getProperties()->willReturn(array()); - $class->getMethods()->willReturn(array()); - - $code = $this->generate('My\Awesome\CustomClass', $class); - $expected =<<<'PHP' -namespace My\Awesome { -class CustomClass extends \stdClass implements \Prophecy\Doubler\Generator\MirroredInterface { - - -} -} -PHP; - $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); - $code->shouldBe($expected); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCreatorSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCreatorSpec.php deleted file mode 100644 index e7cae23..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCreatorSpec.php +++ /dev/null @@ -1,37 +0,0 @@ -beConstructedWith($generator); - } - - function it_evaluates_code_generated_by_ClassCodeGenerator($generator, ClassNode $class) - { - $generator->generate('stdClass', $class)->shouldBeCalled()->willReturn( - 'return 42;' - ); - - $this->create('stdClass', $class)->shouldReturn(42); - } - - function it_throws_an_exception_if_class_does_not_exist_after_evaluation($generator, ClassNode $class) - { - $generator->generate('CustomClass', $class)->shouldBeCalled()->willReturn( - 'return 42;' - ); - - $class->getParentClass()->willReturn('stdClass'); - $class->getInterfaces()->willReturn(array('Interface1', 'Interface2')); - - $this->shouldThrow('Prophecy\Exception\Doubler\ClassCreatorException') - ->duringCreate('CustomClass', $class); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ArgumentNodeSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ArgumentNodeSpec.php deleted file mode 100644 index 2c8d188..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ArgumentNodeSpec.php +++ /dev/null @@ -1,92 +0,0 @@ -beConstructedWith('name'); - } - - function it_is_not_be_passed_by_reference_by_default() - { - $this->shouldNotBePassedByReference(); - } - - function it_is_passed_by_reference_if_marked() - { - $this->setAsPassedByReference(); - $this->shouldBePassedByReference(); - } - - function it_is_not_variadic_by_default() - { - $this->shouldNotBeVariadic(); - } - - function it_is_variadic_if_marked() - { - $this->setAsVariadic(); - $this->shouldBeVariadic(); - } - - function it_does_not_have_default_by_default() - { - $this->shouldNotHaveDefault(); - } - - function it_does_not_have_default_if_variadic() - { - $this->setDefault(null); - $this->setAsVariadic(); - $this->shouldNotHaveDefault(); - } - - function it_does_have_default_if_not_variadic() - { - $this->setDefault(null); - $this->setAsVariadic(false); - $this->hasDefault()->shouldReturn(true); - } - - function it_has_name_with_which_it_was_been_constructed() - { - $this->getName()->shouldReturn('name'); - } - - function it_has_no_typehint_by_default() - { - $this->getTypeHint()->shouldReturn(null); - } - - function its_typeHint_is_mutable() - { - $this->setTypeHint('array'); - $this->getTypeHint()->shouldReturn('array'); - } - - function it_does_not_have_default_value_by_default() - { - $this->getDefault()->shouldReturn(null); - } - - function it_is_not_optional_by_default() - { - $this->isOptional()->shouldReturn(false); - } - - function its_default_is_mutable() - { - $this->setDefault(array()); - $this->getDefault()->shouldReturn(array()); - } - - function it_is_marked_as_optional_when_default_is_set() - { - $this->setDefault(null); - $this->isOptional()->shouldReturn(true); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ClassNodeSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ClassNodeSpec.php deleted file mode 100644 index 16fc498..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ClassNodeSpec.php +++ /dev/null @@ -1,185 +0,0 @@ -getParentClass()->shouldReturn('stdClass'); - } - - function its_parentClass_is_mutable() - { - $this->setParentClass('Exception'); - $this->getParentClass()->shouldReturn('Exception'); - } - - function its_parentClass_is_set_to_stdClass_if_user_set_null() - { - $this->setParentClass(null); - $this->getParentClass()->shouldReturn('stdClass'); - } - - function it_does_not_implement_any_interface_by_default() - { - $this->getInterfaces()->shouldHaveCount(0); - } - - function its_addInterface_adds_item_to_the_list_of_implemented_interfaces() - { - $this->addInterface('MyInterface'); - $this->getInterfaces()->shouldHaveCount(1); - } - - function its_hasInterface_returns_true_if_class_implements_interface() - { - $this->addInterface('MyInterface'); - $this->hasInterface('MyInterface')->shouldReturn(true); - } - - function its_hasInterface_returns_false_if_class_does_not_implements_interface() - { - $this->hasInterface('MyInterface')->shouldReturn(false); - } - - function it_supports_implementation_of_multiple_interfaces() - { - $this->addInterface('MyInterface'); - $this->addInterface('MySecondInterface'); - $this->getInterfaces()->shouldHaveCount(2); - } - - function it_ignores_same_interfaces_added_twice() - { - $this->addInterface('MyInterface'); - $this->addInterface('MyInterface'); - - $this->getInterfaces()->shouldHaveCount(1); - $this->getInterfaces()->shouldReturn(array('MyInterface')); - } - - function it_does_not_have_methods_by_default() - { - $this->getMethods()->shouldHaveCount(0); - } - - function it_can_has_methods(MethodNode $method1, MethodNode $method2) - { - $method1->getName()->willReturn('__construct'); - $method2->getName()->willReturn('getName'); - - $this->addMethod($method1); - $this->addMethod($method2); - - $this->getMethods()->shouldReturn(array( - '__construct' => $method1, - 'getName' => $method2 - )); - } - - function its_hasMethod_returns_true_if_method_exists(MethodNode $method) - { - $method->getName()->willReturn('getName'); - - $this->addMethod($method); - - $this->hasMethod('getName')->shouldReturn(true); - } - - function its_getMethod_returns_method_by_name(MethodNode $method) - { - $method->getName()->willReturn('getName'); - - $this->addMethod($method); - - $this->getMethod('getName')->shouldReturn($method); - } - - function its_hasMethod_returns_false_if_method_does_not_exists() - { - $this->hasMethod('getName')->shouldReturn(false); - } - - function its_hasMethod_returns_false_if_method_has_been_removed(MethodNode $method) - { - $method->getName()->willReturn('getName'); - $this->addMethod($method); - $this->removeMethod('getName'); - - $this->hasMethod('getName')->shouldReturn(false); - } - - - function it_does_not_have_properties_by_default() - { - $this->getProperties()->shouldHaveCount(0); - } - - function it_is_able_to_have_properties() - { - $this->addProperty('title'); - $this->addProperty('text', 'private'); - $this->getProperties()->shouldReturn(array( - 'title' => 'public', - 'text' => 'private' - )); - } - - function its_addProperty_does_not_accept_unsupported_visibility() - { - $this->shouldThrow('InvalidArgumentException')->duringAddProperty('title', 'town'); - } - - function its_addProperty_lowercases_visibility_before_setting() - { - $this->addProperty('text', 'PRIVATE'); - $this->getProperties()->shouldReturn(array('text' => 'private')); - } - - function its_has_no_unextendable_methods_by_default() - { - $this->getUnextendableMethods()->shouldHaveCount(0); - } - - function its_addUnextendableMethods_adds_an_unextendable_method() - { - $this->addUnextendableMethod('testMethod'); - $this->getUnextendableMethods()->shouldHaveCount(1); - } - - function its_methods_are_extendable_by_default() - { - $this->isExtendable('testMethod')->shouldReturn(true); - } - - function its_unextendable_methods_are_not_extendable() - { - $this->addUnextendableMethod('testMethod'); - $this->isExtendable('testMethod')->shouldReturn(false); - } - - function its_addUnextendableMethods_doesnt_create_duplicates() - { - $this->addUnextendableMethod('testMethod'); - $this->addUnextendableMethod('testMethod'); - $this->getUnextendableMethods()->shouldHaveCount(1); - } - - function it_throws_an_exception_when_adding_a_method_that_isnt_extendable(MethodNode $method) - { - $this->addUnextendableMethod('testMethod'); - $method->getName()->willReturn('testMethod'); - - $expectedException = new MethodNotExtendableException( - "Method `testMethod` is not extendable, so can not be added.", - "stdClass", - "testMethod" - ); - $this->shouldThrow($expectedException)->duringAddMethod($method); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/MethodNodeSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/MethodNodeSpec.php deleted file mode 100644 index 8ae07a5..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/MethodNodeSpec.php +++ /dev/null @@ -1,161 +0,0 @@ -beConstructedWith('getTitle'); - } - - function it_has_a_name() - { - $this->getName()->shouldReturn('getTitle'); - } - - function it_has_public_visibility_by_default() - { - $this->getVisibility()->shouldReturn('public'); - } - - function its_visibility_is_mutable() - { - $this->setVisibility('private'); - $this->getVisibility()->shouldReturn('private'); - } - - function it_is_not_static_by_default() - { - $this->shouldNotBeStatic(); - } - - function it_does_not_return_a_reference_by_default() - { - $this->returnsReference()->shouldReturn(false); - } - - function it_should_be_settable_as_returning_a_reference_through_setter() - { - $this->setReturnsReference(); - $this->returnsReference()->shouldReturn(true); - } - - function it_should_be_settable_as_static_through_setter() - { - $this->setStatic(); - $this->shouldBeStatic(); - } - - function it_accepts_only_supported_visibilities() - { - $this->shouldThrow('InvalidArgumentException')->duringSetVisibility('stealth'); - } - - function it_lowercases_visibility_before_setting_it() - { - $this->setVisibility('Public'); - $this->getVisibility()->shouldReturn('public'); - } - - function its_useParentCode_causes_method_to_call_parent(ArgumentNode $argument1, ArgumentNode $argument2) - { - $argument1->getName()->willReturn('objectName'); - $argument2->getName()->willReturn('default'); - - $argument1->isVariadic()->willReturn(false); - $argument2->isVariadic()->willReturn(true); - - $this->addArgument($argument1); - $this->addArgument($argument2); - - $this->useParentCode(); - - $this->getCode()->shouldReturn( - 'return parent::getTitle($objectName, ...$default);' - ); - } - - function its_code_is_mutable() - { - $this->setCode('echo "code";'); - $this->getCode()->shouldReturn('echo "code";'); - } - - function its_reference_returning_methods_will_generate_exceptions() - { - $this->setCode('echo "code";'); - $this->setReturnsReference(); - $this->getCode()->shouldReturn("throw new \Prophecy\Exception\Doubler\ReturnByReferenceException('Returning by reference not supported', get_class(\$this), 'getTitle');"); - } - - function its_setCode_provided_with_null_cleans_method_body() - { - $this->setCode(null); - $this->getCode()->shouldReturn(''); - } - - function it_is_constructable_with_code() - { - $this->beConstructedWith('getTitle', 'die();'); - $this->getCode()->shouldReturn('die();'); - } - - function it_does_not_have_arguments_by_default() - { - $this->getArguments()->shouldHaveCount(0); - } - - function it_supports_adding_arguments(ArgumentNode $argument1, ArgumentNode $argument2) - { - $this->addArgument($argument1); - $this->addArgument($argument2); - - $this->getArguments()->shouldReturn(array($argument1, $argument2)); - } - - function it_does_not_have_return_type_by_default() - { - $this->hasReturnType()->shouldReturn(false); - } - - function it_setReturnType_sets_return_type() - { - $returnType = 'array'; - - $this->setReturnType($returnType); - - $this->hasReturnType()->shouldReturn(true); - $this->getReturnType()->shouldReturn($returnType); - } - - function it_handles_object_return_type() - { - $this->setReturnType('object'); - $this->getReturnType()->shouldReturn(version_compare(PHP_VERSION, '7.2', '>=') ? 'object' : '\object'); - } - - function it_handles_type_aliases() - { - $this->setReturnType('double'); - $this->getReturnType()->shouldReturn(version_compare(PHP_VERSION, '7.0', '>=') ? 'float' : '\float'); - - $this->setReturnType('real'); - $this->getReturnType()->shouldReturn(version_compare(PHP_VERSION, '7.0', '>=') ? 'float' : '\float'); - - $this->setReturnType('boolean'); - $this->getReturnType()->shouldReturn(version_compare(PHP_VERSION, '7.0', '>=') ? 'bool' : '\bool'); - - $this->setReturnType('integer'); - $this->getReturnType()->shouldReturn(version_compare(PHP_VERSION, '7.0', '>=') ? 'int' : '\int'); - } - - function it_handles_null_return_type() - { - $this->setReturnType(null); - $this->getReturnType()->shouldReturn(null); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/LazyDoubleSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/LazyDoubleSpec.php deleted file mode 100644 index fdf1e96..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/LazyDoubleSpec.php +++ /dev/null @@ -1,79 +0,0 @@ -beConstructedWith($doubler); - } - - function it_returns_anonymous_double_instance_by_default($doubler, ProphecySubjectInterface $double) - { - $doubler->double(null, array())->willReturn($double); - - $this->getInstance()->shouldReturn($double); - } - - function it_returns_class_double_instance_if_set($doubler, ProphecySubjectInterface $double, \ReflectionClass $class) - { - $doubler->double($class, array())->willReturn($double); - - $this->setParentClass($class); - - $this->getInstance()->shouldReturn($double); - } - - function it_returns_same_double_instance_if_called_2_times( - $doubler, - ProphecySubjectInterface $double1, - ProphecySubjectInterface $double2 - ) { - $doubler->double(null, array())->willReturn($double1); - $doubler->double(null, array())->willReturn($double2); - - $this->getInstance()->shouldReturn($double2); - $this->getInstance()->shouldReturn($double2); - } - - function its_setParentClass_throws_ClassNotFoundException_if_class_not_found() - { - $this->shouldThrow('Prophecy\Exception\Doubler\ClassNotFoundException') - ->duringSetParentClass('SomeUnexistingClass'); - } - - function its_setParentClass_throws_exception_if_prophecy_is_already_created( - $doubler, - ProphecySubjectInterface $double - ) { - $doubler->double(null, array())->willReturn($double); - - $this->getInstance(); - - $this->shouldThrow('Prophecy\Exception\Doubler\DoubleException') - ->duringSetParentClass('stdClass'); - } - - function its_addInterface_throws_InterfaceNotFoundException_if_no_interface_found() - { - $this->shouldThrow('Prophecy\Exception\Doubler\InterfaceNotFoundException') - ->duringAddInterface('SomeUnexistingInterface'); - } - - function its_addInterface_throws_exception_if_prophecy_is_already_created( - $doubler, - ProphecySubjectInterface $double - ) { - $doubler->double(null, array())->willReturn($double); - - $this->getInstance(); - - $this->shouldThrow('Prophecy\Exception\Doubler\DoubleException') - ->duringAddInterface('ArrayAccess'); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/NameGeneratorSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/NameGeneratorSpec.php deleted file mode 100644 index 1e9b17f..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Doubler/NameGeneratorSpec.php +++ /dev/null @@ -1,60 +0,0 @@ -getName()->willReturn('stdClass'); - $this->name($class, array())->shouldStartWith('Double\stdClass\\'); - } - - function its_name_generates_name_based_on_namespaced_class_reflection(\ReflectionClass $class) - { - $class->getName()->willReturn('Some\Custom\Class'); - $this->name($class, array())->shouldStartWith('Double\Some\Custom\Class\P'); - } - - function its_name_generates_name_based_on_interface_shortnames( - \ReflectionClass $interface1, - \ReflectionClass $interface2 - ) { - $interface1->getShortName()->willReturn('HandlerInterface'); - $interface2->getShortName()->willReturn('LoaderInterface'); - - $this->name(null, array($interface1, $interface2))->shouldStartWith( - 'Double\HandlerInterface\LoaderInterface\P' - ); - } - - function it_generates_proper_name_for_no_class_and_interfaces_list() - { - $this->name(null, array())->shouldStartWith('Double\stdClass\P'); - } - - function its_name_generates_name_based_only_on_class_if_its_available( - \ReflectionClass $class, - \ReflectionClass $interface1, - \ReflectionClass $interface2 - ) { - $class->getName()->willReturn('Some\Custom\Class'); - $interface1->getShortName()->willReturn('HandlerInterface'); - $interface2->getShortName()->willReturn('LoaderInterface'); - - $this->name($class, array($interface1, $interface2))->shouldStartWith( - 'Double\Some\Custom\Class\P' - ); - } - - public function getMatchers() - { - return array( - 'startWith' => function ($subject, $string) { - return 0 === strpos($subject, $string); - }, - ); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Call/UnexpectedCallExceptionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Call/UnexpectedCallExceptionSpec.php deleted file mode 100644 index 5e2c635..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Call/UnexpectedCallExceptionSpec.php +++ /dev/null @@ -1,30 +0,0 @@ -beConstructedWith('msg', $objectProphecy, 'getName', array('arg1', 'arg2')); - } - - function it_is_prophecy_exception() - { - $this->shouldBeAnInstanceOf('Prophecy\Exception\Prophecy\ObjectProphecyException'); - } - - function it_exposes_method_name_through_getter() - { - $this->getMethodName()->shouldReturn('getName'); - } - - function it_exposes_arguments_through_getter() - { - $this->getArguments()->shouldReturn(array('arg1', 'arg2')); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassCreatorExceptionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassCreatorExceptionSpec.php deleted file mode 100644 index da3aa58..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassCreatorExceptionSpec.php +++ /dev/null @@ -1,26 +0,0 @@ -beConstructedWith('', $node); - } - - function it_is_a_prophecy_exception() - { - $this->shouldBeAnInstanceOf('Prophecy\Exception\Exception'); - $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoublerException'); - } - - function it_contains_a_reflected_node($node) - { - $this->getClassNode()->shouldReturn($node); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassMirrorExceptionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassMirrorExceptionSpec.php deleted file mode 100644 index c4f547a..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassMirrorExceptionSpec.php +++ /dev/null @@ -1,24 +0,0 @@ -beConstructedWith('', $class); - } - - function it_is_a_prophecy_exception() - { - $this->shouldBeAnInstanceOf('Prophecy\Exception\Exception'); - $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoublerException'); - } - - function it_contains_a_reflected_class_link($class) - { - $this->getReflectedClass()->shouldReturn($class); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassNotFoundExceptionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassNotFoundExceptionSpec.php deleted file mode 100644 index 251512b..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassNotFoundExceptionSpec.php +++ /dev/null @@ -1,25 +0,0 @@ -beConstructedWith('msg', 'CustomClass'); - } - - function it_is_a_prophecy_exception() - { - $this->shouldBeAnInstanceOf('Prophecy\Exception\Exception'); - $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoubleException'); - } - - function its_getClassname_returns_classname() - { - $this->getClassname()->shouldReturn('CustomClass'); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/DoubleExceptionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/DoubleExceptionSpec.php deleted file mode 100644 index 6fe5a19..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/DoubleExceptionSpec.php +++ /dev/null @@ -1,14 +0,0 @@ -shouldBeAnInstanceOf('RuntimeException'); - $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoublerException'); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/InterfaceNotFoundExceptionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/InterfaceNotFoundExceptionSpec.php deleted file mode 100644 index ad1a439..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/InterfaceNotFoundExceptionSpec.php +++ /dev/null @@ -1,24 +0,0 @@ -beConstructedWith('msg', 'CustomInterface'); - } - - function it_extends_ClassNotFoundException() - { - $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\ClassNotFoundException'); - } - - function its_getClassname_returns_classname() - { - $this->getClassname()->shouldReturn('CustomInterface'); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotExtendableExceptionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotExtendableExceptionSpec.php deleted file mode 100644 index 5028b02..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotExtendableExceptionSpec.php +++ /dev/null @@ -1,29 +0,0 @@ -beConstructedWith('', 'User', 'getName'); - } - - function it_is_DoubleException() - { - $this->shouldHaveType('Prophecy\Exception\Doubler\DoubleException'); - } - - function it_has_MethodName() - { - $this->getMethodName()->shouldReturn('getName'); - } - - function it_has_classname() - { - $this->getClassName()->shouldReturn('User'); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotFoundExceptionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotFoundExceptionSpec.php deleted file mode 100644 index a889dd7..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotFoundExceptionSpec.php +++ /dev/null @@ -1,40 +0,0 @@ -beConstructedWith('', 'User', 'getName', array(1, 2, 3)); - } - - function it_is_DoubleException() - { - $this->shouldHaveType('Prophecy\Exception\Doubler\DoubleException'); - } - - function it_has_MethodName() - { - $this->getMethodName()->shouldReturn('getName'); - } - - function it_has_classnamej() - { - $this->getClassname()->shouldReturn('User'); - } - - function it_has_an_arguments_list() - { - $this->getArguments()->shouldReturn(array(1, 2, 3)); - } - - function it_has_a_default_null_argument_list() - { - $this->beConstructedWith('', 'User', 'getName'); - $this->getArguments()->shouldReturn(null); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/AggregateExceptionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/AggregateExceptionSpec.php deleted file mode 100644 index d78ea73..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/AggregateExceptionSpec.php +++ /dev/null @@ -1,50 +0,0 @@ -beConstructedWith(null); - } - - function it_is_prediction_exception() - { - $this->shouldBeAnInstanceOf('RuntimeException'); - $this->shouldBeAnInstanceOf('Prophecy\Exception\Prediction\PredictionException'); - } - - function it_can_store_objectProphecy_link(ObjectProphecy $object) - { - $this->setObjectProphecy($object); - $this->getObjectProphecy()->shouldReturn($object); - } - - function it_should_not_have_exceptions_at_the_beginning() - { - $this->getExceptions()->shouldHaveCount(0); - } - - function it_should_append_exception_through_append_method(PredictionException $exception) - { - $exception->getMessage()->willReturn('Exception #1'); - - $this->append($exception); - - $this->getExceptions()->shouldReturn(array($exception)); - } - - function it_should_update_message_during_append(PredictionException $exception) - { - $exception->getMessage()->willReturn('Exception #1'); - - $this->append($exception); - - $this->getMessage()->shouldReturn(" Exception #1"); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/NoCallsExceptionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/NoCallsExceptionSpec.php deleted file mode 100644 index c2aa31d..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/NoCallsExceptionSpec.php +++ /dev/null @@ -1,27 +0,0 @@ -getObjectProphecy()->willReturn($objectProphecy); - - $this->beConstructedWith('message', $methodProphecy); - } - - function it_is_PredictionException() - { - $this->shouldHaveType('Prophecy\Exception\Prediction\PredictionException'); - } - - function it_extends_MethodProphecyException() - { - $this->shouldHaveType('Prophecy\Exception\Prophecy\MethodProphecyException'); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsCountExceptionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsCountExceptionSpec.php deleted file mode 100644 index e18932e..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsCountExceptionSpec.php +++ /dev/null @@ -1,27 +0,0 @@ -getObjectProphecy()->willReturn($objectProphecy); - - $this->beConstructedWith('message', $methodProphecy, 5, array($call1, $call2)); - } - - function it_extends_UnexpectedCallsException() - { - $this->shouldBeAnInstanceOf('Prophecy\Exception\Prediction\UnexpectedCallsException'); - } - - function it_should_expose_expectedCount_through_getter() - { - $this->getExpectedCount()->shouldReturn(5); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsExceptionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsExceptionSpec.php deleted file mode 100644 index 49d12d5..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsExceptionSpec.php +++ /dev/null @@ -1,33 +0,0 @@ -getObjectProphecy()->willReturn($objectProphecy); - - $this->beConstructedWith('message', $methodProphecy, array($call1, $call2)); - } - - function it_is_PredictionException() - { - $this->shouldHaveType('Prophecy\Exception\Prediction\PredictionException'); - } - - function it_extends_MethodProphecyException() - { - $this->shouldHaveType('Prophecy\Exception\Prophecy\MethodProphecyException'); - } - - function it_should_expose_calls_list_through_getter($call1, $call2) - { - $this->getCalls()->shouldReturn(array($call1, $call2)); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/MethodProphecyExceptionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/MethodProphecyExceptionSpec.php deleted file mode 100644 index d05c66a..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/MethodProphecyExceptionSpec.php +++ /dev/null @@ -1,28 +0,0 @@ -getObjectProphecy()->willReturn($objectProphecy); - - $this->beConstructedWith('message', $methodProphecy); - } - - function it_extends_DoubleException() - { - $this->shouldBeAnInstanceOf('Prophecy\Exception\Prophecy\ObjectProphecyException'); - } - - function it_holds_a_stub_reference($methodProphecy) - { - $this->getMethodProphecy()->shouldReturn($methodProphecy); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/ObjectProphecyExceptionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/ObjectProphecyExceptionSpec.php deleted file mode 100644 index 91ffd5b..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/ObjectProphecyExceptionSpec.php +++ /dev/null @@ -1,24 +0,0 @@ -beConstructedWith('message', $objectProphecy); - } - - function it_should_be_a_prophecy_exception() - { - $this->shouldBeAnInstanceOf('Prophecy\Exception\Prophecy\ProphecyException'); - } - - function it_holds_double_reference($objectProphecy) - { - $this->getObjectProphecy()->shouldReturn($objectProphecy); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallPredictionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallPredictionSpec.php deleted file mode 100644 index 4f03db2..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallPredictionSpec.php +++ /dev/null @@ -1,42 +0,0 @@ -shouldHaveType('Prophecy\Prediction\PredictionInterface'); - } - - function it_does_nothing_if_there_is_more_than_one_call_been_made( - ObjectProphecy $object, - MethodProphecy $method, - Call $call - ) { - $this->check(array($call), $object, $method)->shouldReturn(null); - } - - function it_throws_NoCallsException_if_no_calls_found( - ObjectProphecy $object, - MethodProphecy $method, - ArgumentsWildcard $arguments - ) { - $method->getObjectProphecy()->willReturn($object); - $method->getMethodName()->willReturn('getName'); - $method->getArgumentsWildcard()->willReturn($arguments); - $arguments->__toString()->willReturn('123'); - $object->reveal()->willReturn(new \stdClass()); - $object->findProphecyMethodCalls('getName', Argument::any())->willReturn(array()); - - $this->shouldThrow('Prophecy\Exception\Prediction\NoCallsException') - ->duringCheck(array(), $object, $method); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallTimesPredictionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallTimesPredictionSpec.php deleted file mode 100644 index e49eab9..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallTimesPredictionSpec.php +++ /dev/null @@ -1,53 +0,0 @@ -beConstructedWith(2); - } - - function it_is_prediction() - { - $this->shouldHaveType('Prophecy\Prediction\PredictionInterface'); - } - - function it_does_nothing_if_there_were_exact_amount_of_calls_being_made( - ObjectProphecy $object, - MethodProphecy $method, - Call $call1, - Call $call2 - ) { - $this->check(array($call1, $call2), $object, $method)->shouldReturn(null); - } - - function it_throws_UnexpectedCallsCountException_if_calls_found( - ObjectProphecy $object, - MethodProphecy $method, - Call $call, - ArgumentsWildcard $arguments - ) { - $object->reveal()->willReturn(new \stdClass()); - $object->findProphecyMethodCalls('getName', Argument::any())->willReturn(array()); - $method->getObjectProphecy()->willReturn($object); - $method->getMethodName()->willReturn('getName'); - $method->getArgumentsWildcard()->willReturn($arguments); - $arguments->__toString()->willReturn('123'); - - $call->getMethodName()->willReturn('getName'); - $call->getArguments()->willReturn(array(5, 4, 'three')); - $call->getCallPlace()->willReturn('unknown'); - - $this->shouldThrow('Prophecy\Exception\Prediction\UnexpectedCallsCountException') - ->duringCheck(array($call), $object, $method); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallbackPredictionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallbackPredictionSpec.php deleted file mode 100644 index 6da95f0..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallbackPredictionSpec.php +++ /dev/null @@ -1,34 +0,0 @@ -beConstructedWith('get_class'); - } - - function it_is_prediction() - { - $this->shouldHaveType('Prophecy\Prediction\PredictionInterface'); - } - - function it_proxies_call_to_callback(ObjectProphecy $object, MethodProphecy $method, Call $call) - { - $returnFirstCallCallback = function ($calls, $object, $method) { - throw new RuntimeException; - }; - - $this->beConstructedWith($returnFirstCallCallback); - - $this->shouldThrow('RuntimeException')->duringCheck(array($call), $object, $method); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prediction/NoCallsPredictionSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prediction/NoCallsPredictionSpec.php deleted file mode 100644 index d302845..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prediction/NoCallsPredictionSpec.php +++ /dev/null @@ -1,42 +0,0 @@ -shouldHaveType('Prophecy\Prediction\PredictionInterface'); - } - - function it_does_nothing_if_there_is_no_calls_made(ObjectProphecy $object, MethodProphecy $method) - { - $this->check(array(), $object, $method)->shouldReturn(null); - } - - function it_throws_UnexpectedCallsException_if_calls_found( - ObjectProphecy $object, - MethodProphecy $method, - Call $call, - ArgumentsWildcard $arguments - ) { - $object->reveal()->willReturn(new \stdClass); - $method->getObjectProphecy()->willReturn($object); - $method->getMethodName()->willReturn('getName'); - $method->getArgumentsWildcard()->willReturn($arguments); - $arguments->__toString()->willReturn('123'); - - $call->getMethodName()->willReturn('getName'); - $call->getArguments()->willReturn(array(5, 4, 'three')); - $call->getCallPlace()->willReturn('unknown'); - - $this->shouldThrow('Prophecy\Exception\Prediction\UnexpectedCallsException') - ->duringCheck(array($call), $object, $method); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Promise/CallbackPromiseSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Promise/CallbackPromiseSpec.php deleted file mode 100644 index fb1dc62..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Promise/CallbackPromiseSpec.php +++ /dev/null @@ -1,96 +0,0 @@ -beConstructedWith('get_class'); - } - - function it_is_promise() - { - $this->shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface'); - } - - function it_should_execute_closure_callback(ObjectProphecy $object, MethodProphecy $method) - { - $firstArgumentCallback = function ($args) { - return $args[0]; - }; - - $this->beConstructedWith($firstArgumentCallback); - - $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); - } - - function it_should_execute_static_array_callback(ObjectProphecy $object, MethodProphecy $method) - { - $firstArgumentCallback = array('spec\Prophecy\Promise\ClassCallback', 'staticCallbackMethod'); - - $this->beConstructedWith($firstArgumentCallback); - - $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); - } - - function it_should_execute_instance_array_callback(ObjectProphecy $object, MethodProphecy $method) - { - $class = new ClassCallback(); - $firstArgumentCallback = array($class, 'callbackMethod'); - - $this->beConstructedWith($firstArgumentCallback); - - $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); - } - - function it_should_execute_string_function_callback(ObjectProphecy $object, MethodProphecy $method) - { - $firstArgumentCallback = 'spec\Prophecy\Promise\functionCallbackFirstArgument'; - - $this->beConstructedWith($firstArgumentCallback); - - $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); - } - -} - -/** - * Class used to test callbackpromise - * - * @param array - * @return string - */ -class ClassCallback -{ - /** - * @param array $args - */ - function callbackMethod($args) - { - return $args[0]; - } - - /** - * @param array $args - */ - static function staticCallbackMethod($args) - { - return $args[0]; - } -} - -/** - * Callback function used to test callbackpromise - * - * @param array - * @return string - */ -function functionCallbackFirstArgument($args) -{ - return $args[0]; -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnArgumentPromiseSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnArgumentPromiseSpec.php deleted file mode 100644 index 1cef3aa..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnArgumentPromiseSpec.php +++ /dev/null @@ -1,31 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface'); - } - - function it_should_return_first_argument_if_provided(ObjectProphecy $object, MethodProphecy $method) - { - $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); - } - - function it_should_return_null_if_no_arguments_provided(ObjectProphecy $object, MethodProphecy $method) - { - $this->execute(array(), $object, $method)->shouldReturn(null); - } - - function it_should_return_nth_argument_if_provided(ObjectProphecy $object, MethodProphecy $method) - { - $this->beConstructedWith(1); - $this->execute(array('one', 'two'), $object, $method)->shouldReturn('two'); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnPromiseSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnPromiseSpec.php deleted file mode 100644 index bc6a991..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnPromiseSpec.php +++ /dev/null @@ -1,49 +0,0 @@ -beConstructedWith(array(42)); - } - - function it_is_promise() - { - $this->shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface'); - } - - function it_returns_value_it_was_constructed_with(ObjectProphecy $object, MethodProphecy $method) - { - $this->execute(array(), $object, $method)->shouldReturn(42); - } - - function it_always_returns_last_value_left_in_the_return_values(ObjectProphecy $object, MethodProphecy $method) - { - $this->execute(array(), $object, $method)->shouldReturn(42); - $this->execute(array(), $object, $method)->shouldReturn(42); - } - - function it_consequently_returns_multiple_values_it_was_constructed_with( - ObjectProphecy $object, - MethodProphecy $method - ) { - $this->beConstructedWith(array(42, 24, 12)); - - $this->execute(array(), $object, $method)->shouldReturn(42); - $this->execute(array(), $object, $method)->shouldReturn(24); - $this->execute(array(), $object, $method)->shouldReturn(12); - } - - function it_returns_null_if_constructed_with_empty_array(ObjectProphecy $object, MethodProphecy $method) - { - $this->beConstructedWith(array()); - - $this->execute(array(), $object, $method)->shouldReturn(null); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Promise/ThrowPromiseSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Promise/ThrowPromiseSpec.php deleted file mode 100644 index b5a10bc..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Promise/ThrowPromiseSpec.php +++ /dev/null @@ -1,92 +0,0 @@ -beConstructedWith('RuntimeException'); - } - - function it_is_promise() - { - $this->shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface'); - } - - function it_instantiates_and_throws_exception_from_provided_classname(ObjectProphecy $object, MethodProphecy $method) - { - $this->beConstructedWith('InvalidArgumentException'); - - $this->shouldThrow('InvalidArgumentException') - ->duringExecute(array(), $object, $method); - } - - function it_instantiates_exceptions_with_required_arguments(ObjectProphecy $object, MethodProphecy $method) - { - $this->beConstructedWith('spec\Prophecy\Promise\RequiredArgumentException'); - - $this->shouldThrow('spec\Prophecy\Promise\RequiredArgumentException') - ->duringExecute(array(), $object, $method); - } - - function it_throws_provided_exception(ObjectProphecy $object, MethodProphecy $method) - { - $this->beConstructedWith($exc = new \RuntimeException('Some exception')); - - $this->shouldThrow($exc)->duringExecute(array(), $object, $method); - } - - function it_throws_error_instances(ObjectProphecy $object, MethodProphecy $method) - { - if (!class_exists('\Error')) { - throw new SkippingException('The class Error, introduced in PHP 7, does not exist'); - } - - $this->beConstructedWith($exc = new \Error('Error exception')); - - $this->shouldThrow($exc)->duringExecute(array(), $object, $method); - } - - function it_throws_errors_by_class_name() - { - if (!class_exists('\Error')) { - throw new SkippingException('The class Error, introduced in PHP 7, does not exist'); - } - - $this->beConstructedWith('\Error'); - - $this->shouldNotThrow('Prophecy\Exception\InvalidArgumentException')->duringInstantiation(); - } - - function it_does_not_throw_something_that_is_not_throwable_by_class_name() - { - $this->beConstructedWith('\stdClass'); - - $this->shouldThrow('Prophecy\Exception\InvalidArgumentException')->duringInstantiation(); - } - - function it_does_not_throw_something_that_is_not_throwable_by_instance() - { - $this->beConstructedWith(new \stdClass()); - - $this->shouldThrow('Prophecy\Exception\InvalidArgumentException')->duringInstantiation(); - } - - function it_throws_an_exception_by_class_name() - { - $this->beConstructedWith('\Exception'); - - $this->shouldNotThrow('Prophecy\Exception\InvalidArgumentException')->duringInstantiation(); - } -} - -class RequiredArgumentException extends \Exception -{ - final public function __construct($message, $code) {} -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/MethodProphecySpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/MethodProphecySpec.php deleted file mode 100644 index 969e644..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/MethodProphecySpec.php +++ /dev/null @@ -1,342 +0,0 @@ -reveal()->willReturn($reflection); - - $this->beConstructedWith($objectProphecy, 'getName', null); - } - - function it_is_initializable() - { - $this->shouldHaveType('Prophecy\Prophecy\MethodProphecy'); - } - - function its_constructor_throws_MethodNotFoundException_for_unexisting_method($objectProphecy) - { - $this->shouldThrow('Prophecy\Exception\Doubler\MethodNotFoundException')->during( - '__construct', array($objectProphecy, 'getUnexisting', null) - ); - } - - function its_constructor_throws_MethodProphecyException_for_final_methods($objectProphecy, ClassWithFinalMethod $subject) - { - $objectProphecy->reveal()->willReturn($subject); - - $this->shouldThrow('Prophecy\Exception\Prophecy\MethodProphecyException')->during( - '__construct', array($objectProphecy, 'finalMethod', null) - ); - } - - function its_constructor_transforms_array_passed_as_3rd_argument_to_ArgumentsWildcard( - $objectProphecy - ) - { - $this->beConstructedWith($objectProphecy, 'getName', array(42, 33)); - - $wildcard = $this->getArgumentsWildcard(); - $wildcard->shouldNotBe(null); - $wildcard->__toString()->shouldReturn('exact(42), exact(33)'); - } - - function its_constructor_does_not_touch_third_argument_if_it_is_null($objectProphecy) - { - $this->beConstructedWith($objectProphecy, 'getName', null); - - $wildcard = $this->getArgumentsWildcard(); - $wildcard->shouldBe(null); - } - - function it_records_promise_through_will_method(PromiseInterface $promise, $objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->will($promise); - $this->getPromise()->shouldReturn($promise); - } - - function it_adds_itself_to_ObjectProphecy_during_call_to_will(PromiseInterface $objectProphecy, $promise) - { - $objectProphecy->addMethodProphecy($this)->shouldBeCalled(); - - $this->will($promise); - } - - function it_adds_ReturnPromise_during_willReturn_call($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->willReturn(42); - $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\ReturnPromise'); - } - - function it_adds_ThrowPromise_during_willThrow_call($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->willThrow('RuntimeException'); - $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\ThrowPromise'); - } - - function it_adds_ReturnArgumentPromise_during_willReturnArgument_call($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->willReturnArgument(); - $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\ReturnArgumentPromise'); - } - - function it_adds_ReturnArgumentPromise_during_willReturnArgument_call_with_index_argument($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->willReturnArgument(1); - $promise = $this->getPromise(); - $promise->shouldBeAnInstanceOf('Prophecy\Promise\ReturnArgumentPromise'); - $promise->execute(array('one', 'two'), $objectProphecy, $this)->shouldReturn('two'); - } - - function it_adds_CallbackPromise_during_will_call_with_callback_argument($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $callback = function () {}; - - $this->will($callback); - $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\CallbackPromise'); - } - - function it_records_prediction_through_should_method(PredictionInterface $prediction, $objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->callOnWrappedObject('should', array($prediction)); - $this->getPrediction()->shouldReturn($prediction); - } - - function it_adds_CallbackPrediction_during_should_call_with_callback_argument($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $callback = function () {}; - - $this->callOnWrappedObject('should', array($callback)); - $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\CallbackPrediction'); - } - - function it_adds_itself_to_ObjectProphecy_during_call_to_should($objectProphecy, PredictionInterface $prediction) - { - $objectProphecy->addMethodProphecy($this)->shouldBeCalled(); - - $this->callOnWrappedObject('should', array($prediction)); - } - - function it_adds_CallPrediction_during_shouldBeCalled_call($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->callOnWrappedObject('shouldBeCalled', array()); - $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\CallPrediction'); - } - - function it_adds_NoCallsPrediction_during_shouldNotBeCalled_call($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->callOnWrappedObject('shouldNotBeCalled', array()); - $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\NoCallsPrediction'); - } - - function it_adds_CallTimesPrediction_during_shouldBeCalledTimes_call($objectProphecy) - { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->callOnWrappedObject('shouldBeCalledTimes', array(5)); - $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\CallTimesPrediction'); - } - - function it_checks_prediction_via_shouldHave_method_call( - $objectProphecy, - ArgumentsWildcard $arguments, - PredictionInterface $prediction, - Call $call1, - Call $call2 - ) { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled(); - $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); - - $this->withArguments($arguments); - $this->callOnWrappedObject('shouldHave', array($prediction)); - } - - function it_sets_return_promise_during_shouldHave_call_if_none_was_set_before( - $objectProphecy, - ArgumentsWildcard $arguments, - PredictionInterface $prediction, - Call $call1, - Call $call2 - ) { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled(); - $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); - - $this->withArguments($arguments); - $this->callOnWrappedObject('shouldHave', array($prediction)); - - $this->getPromise()->shouldReturnAnInstanceOf('Prophecy\Promise\ReturnPromise'); - } - - function it_does_not_set_return_promise_during_shouldHave_call_if_it_was_set_before( - $objectProphecy, - ArgumentsWildcard $arguments, - PredictionInterface $prediction, - Call $call1, - Call $call2, - PromiseInterface $promise - ) { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled(); - $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); - - $this->will($promise); - $this->withArguments($arguments); - $this->callOnWrappedObject('shouldHave', array($prediction)); - - $this->getPromise()->shouldReturn($promise); - } - - function it_records_checked_predictions( - $objectProphecy, - ArgumentsWildcard $arguments, - PredictionInterface $prediction1, - PredictionInterface $prediction2, - Call $call1, - Call $call2, - PromiseInterface $promise - ) { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - $prediction1->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->willReturn(); - $prediction2->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->willReturn(); - $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); - - $this->will($promise); - $this->withArguments($arguments); - $this->callOnWrappedObject('shouldHave', array($prediction1)); - $this->callOnWrappedObject('shouldHave', array($prediction2)); - - $this->getCheckedPredictions()->shouldReturn(array($prediction1, $prediction2)); - } - - function it_records_even_failed_checked_predictions( - $objectProphecy, - ArgumentsWildcard $arguments, - PredictionInterface $prediction, - Call $call1, - Call $call2, - PromiseInterface $promise - ) { - $objectProphecy->addMethodProphecy($this)->willReturn(null); - $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->willThrow(new \RuntimeException()); - $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); - - $this->will($promise); - $this->withArguments($arguments); - - try { - $this->callOnWrappedObject('shouldHave', array($prediction)); - } catch (\Exception $e) {} - - $this->getCheckedPredictions()->shouldReturn(array($prediction)); - } - - function it_checks_prediction_via_shouldHave_method_call_with_callback( - $objectProphecy, - ArgumentsWildcard $arguments, - Call $call1, - Call $call2 - ) { - $callback = function ($calls, $object, $method) { - throw new \RuntimeException; - }; - $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); - - $this->withArguments($arguments); - $this->shouldThrow('RuntimeException')->duringShouldHave($callback); - } - - function it_does_nothing_during_checkPrediction_if_no_prediction_set() - { - $this->checkPrediction()->shouldReturn(null); - } - - function it_checks_set_prediction_during_checkPrediction( - $objectProphecy, - ArgumentsWildcard $arguments, - PredictionInterface $prediction, - Call $call1, - Call $call2 - ) { - $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled(); - $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); - $objectProphecy->addMethodProphecy($this)->willReturn(null); - - $this->withArguments($arguments); - $this->callOnWrappedObject('should', array($prediction)); - $this->checkPrediction(); - } - - function it_links_back_to_ObjectProphecy_through_getter($objectProphecy) - { - $this->getObjectProphecy()->shouldReturn($objectProphecy); - } - - function it_has_MethodName() - { - $this->getMethodName()->shouldReturn('getName'); - } - - function it_contains_ArgumentsWildcard_it_was_constructed_with($objectProphecy, ArgumentsWildcard $wildcard) - { - $this->beConstructedWith($objectProphecy, 'getName', $wildcard); - - $this->getArgumentsWildcard()->shouldReturn($wildcard); - } - - function its_ArgumentWildcard_is_mutable_through_setter(ArgumentsWildcard $wildcard) - { - $this->withArguments($wildcard); - - $this->getArgumentsWildcard()->shouldReturn($wildcard); - } - - function its_withArguments_transforms_passed_array_into_ArgumentsWildcard() - { - $this->withArguments(array(42, 33)); - - $wildcard = $this->getArgumentsWildcard(); - $wildcard->shouldNotBe(null); - $wildcard->__toString()->shouldReturn('exact(42), exact(33)'); - } - - function its_withArguments_throws_exception_if_wrong_arguments_provided() - { - $this->shouldThrow('Prophecy\Exception\InvalidArgumentException')->duringWithArguments(42); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/ObjectProphecySpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/ObjectProphecySpec.php deleted file mode 100644 index c6afb3e..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/ObjectProphecySpec.php +++ /dev/null @@ -1,283 +0,0 @@ -beConstructedWith($lazyDouble); - - $lazyDouble->getInstance()->willReturn($double); - } - - function it_implements_ProphecyInterface() - { - $this->shouldBeAnInstanceOf('Prophecy\Prophecy\ProphecyInterface'); - } - - function it_sets_parentClass_during_willExtend_call($lazyDouble) - { - $lazyDouble->setParentClass('123')->shouldBeCalled(); - - $this->willExtend('123'); - } - - function it_adds_interface_during_willImplement_call($lazyDouble) - { - $lazyDouble->addInterface('222')->shouldBeCalled(); - - $this->willImplement('222'); - } - - function it_sets_constructor_arguments_during_willBeConstructedWith_call($lazyDouble) - { - $lazyDouble->setArguments(array(1, 2, 5))->shouldBeCalled(); - - $this->willBeConstructedWith(array(1, 2, 5)); - } - - function it_does_not_have_method_prophecies_by_default() - { - $this->getMethodProphecies()->shouldHaveCount(0); - } - - function it_should_get_method_prophecies_by_method_name( - MethodProphecy $method1, - MethodProphecy $method2, - ArgumentsWildcard $arguments - ) { - $method1->getMethodName()->willReturn('getName'); - $method1->getArgumentsWildcard()->willReturn($arguments); - $method2->getMethodName()->willReturn('setName'); - $method2->getArgumentsWildcard()->willReturn($arguments); - - $this->addMethodProphecy($method1); - $this->addMethodProphecy($method2); - - $methods = $this->getMethodProphecies('setName'); - $methods->shouldHaveCount(1); - $methods[0]->getMethodName()->shouldReturn('setName'); - } - - function it_should_return_empty_array_if_no_method_prophecies_found() - { - $methods = $this->getMethodProphecies('setName'); - $methods->shouldHaveCount(0); - } - - function it_should_proxy_makeProphecyMethodCall_to_CallCenter($lazyDouble, CallCenter $callCenter) - { - $this->beConstructedWith($lazyDouble, $callCenter); - - $callCenter->makeCall($this->getWrappedObject(), 'setName', array('everzet'))->willReturn(42); - - $this->makeProphecyMethodCall('setName', array('everzet'))->shouldReturn(42); - } - - function it_should_reveal_arguments_and_return_values_from_callCenter( - $lazyDouble, - CallCenter $callCenter, - RevealerInterface $revealer - ) { - $this->beConstructedWith($lazyDouble, $callCenter, $revealer); - - $revealer->reveal(array('question'))->willReturn(array('life')); - $revealer->reveal('answer')->willReturn(42); - - $callCenter->makeCall($this->getWrappedObject(), 'setName', array('life'))->willReturn('answer'); - - $this->makeProphecyMethodCall('setName', array('question'))->shouldReturn(42); - } - - function it_should_proxy_getProphecyMethodCalls_to_CallCenter( - $lazyDouble, - CallCenter $callCenter, - ArgumentsWildcard $wildcard, - Call $call - ) { - $this->beConstructedWith($lazyDouble, $callCenter); - - $callCenter->findCalls('setName', $wildcard)->willReturn(array($call)); - - $this->findProphecyMethodCalls('setName', $wildcard)->shouldReturn(array($call)); - } - - function its_addMethodProphecy_adds_method_prophecy( - MethodProphecy $methodProphecy, - ArgumentsWildcard $argumentsWildcard - ) { - $methodProphecy->getArgumentsWildcard()->willReturn($argumentsWildcard); - $methodProphecy->getMethodName()->willReturn('getUsername'); - - $this->addMethodProphecy($methodProphecy); - - $this->getMethodProphecies()->shouldReturn(array( - 'getUsername' => array($methodProphecy) - )); - } - - function its_addMethodProphecy_handles_prophecies_with_different_arguments( - MethodProphecy $methodProphecy1, - MethodProphecy $methodProphecy2, - ArgumentsWildcard $argumentsWildcard1, - ArgumentsWildcard $argumentsWildcard2 - ) { - $methodProphecy1->getArgumentsWildcard()->willReturn($argumentsWildcard1); - $methodProphecy1->getMethodName()->willReturn('getUsername'); - - $methodProphecy2->getArgumentsWildcard()->willReturn($argumentsWildcard2); - $methodProphecy2->getMethodName()->willReturn('getUsername'); - - $this->addMethodProphecy($methodProphecy1); - $this->addMethodProphecy($methodProphecy2); - - $this->getMethodProphecies()->shouldReturn(array( - 'getUsername' => array( - $methodProphecy1, - $methodProphecy2, - ) - )); - } - - function its_addMethodProphecy_handles_prophecies_for_different_methods( - MethodProphecy $methodProphecy1, - MethodProphecy $methodProphecy2, - ArgumentsWildcard $argumentsWildcard1, - ArgumentsWildcard $argumentsWildcard2 - ) { - $methodProphecy1->getArgumentsWildcard()->willReturn($argumentsWildcard1); - $methodProphecy1->getMethodName()->willReturn('getUsername'); - - $methodProphecy2->getArgumentsWildcard()->willReturn($argumentsWildcard2); - $methodProphecy2->getMethodName()->willReturn('isUsername'); - - $this->addMethodProphecy($methodProphecy1); - $this->addMethodProphecy($methodProphecy2); - - $this->getMethodProphecies()->shouldReturn(array( - 'getUsername' => array( - $methodProphecy1 - ), - 'isUsername' => array( - $methodProphecy2 - ) - )); - } - - function its_addMethodProphecy_throws_exception_when_method_has_no_ArgumentsWildcard(MethodProphecy $methodProphecy) - { - $methodProphecy->getArgumentsWildcard()->willReturn(null); - $methodProphecy->getObjectProphecy()->willReturn($this); - $methodProphecy->getMethodName()->willReturn('getTitle'); - - $this->shouldThrow('Prophecy\Exception\Prophecy\MethodProphecyException')->duringAddMethodProphecy( - $methodProphecy - ); - } - - function it_returns_null_after_checkPredictions_call_if_there_is_no_method_prophecies() - { - $this->checkProphecyMethodsPredictions()->shouldReturn(null); - } - - function it_throws_AggregateException_during_checkPredictions_if_predictions_fail( - MethodProphecy $methodProphecy1, MethodProphecy $methodProphecy2, - ArgumentsWildcard $argumentsWildcard1, - ArgumentsWildcard $argumentsWildcard2 - ) { - $methodProphecy1->getMethodName()->willReturn('getName'); - $methodProphecy1->getArgumentsWildcard()->willReturn($argumentsWildcard1); - $methodProphecy1->checkPrediction() - ->willThrow('Prophecy\Exception\Prediction\AggregateException'); - - $methodProphecy2->getMethodName()->willReturn('setName'); - $methodProphecy2->getArgumentsWildcard()->willReturn($argumentsWildcard2); - $methodProphecy2->checkPrediction() - ->willThrow('Prophecy\Exception\Prediction\AggregateException'); - - $this->addMethodProphecy($methodProphecy1); - $this->addMethodProphecy($methodProphecy2); - - $this->shouldThrow('Prophecy\Exception\Prediction\AggregateException') - ->duringCheckProphecyMethodsPredictions(); - } - - function it_returns_new_MethodProphecy_instance_for_arbitrary_call( - Doubler $doubler, - ProphecySubjectInterface $reflection - ) { - $doubler->double(Argument::any())->willReturn($reflection); - - $return = $this->getProphecy(); - $return->shouldBeAnInstanceOf('Prophecy\Prophecy\MethodProphecy'); - $return->getMethodName()->shouldReturn('getProphecy'); - } - - function it_returns_same_MethodProphecy_for_same_registered_signature( - Doubler $doubler, - ProphecySubjectInterface $reflection - ) { - $doubler->double(Argument::any())->willReturn($reflection); - - $this->addMethodProphecy($methodProphecy1 = $this->getProphecy(1, 2, 3)); - $methodProphecy2 = $this->getProphecy(1, 2, 3); - - $methodProphecy2->shouldBe($methodProphecy1); - } - - function it_returns_new_MethodProphecy_for_different_signatures( - Doubler $doubler, - ProphecySubjectInterface $reflection - ) { - $doubler->double(Argument::any())->willReturn($reflection); - - $value = new ObjectProphecySpecFixtureB('ABC'); - $value2 = new ObjectProphecySpecFixtureB('CBA'); - - $this->addMethodProphecy($methodProphecy1 = $this->getProphecy(1, 2, 3, $value)); - $methodProphecy2 = $this->getProphecy(1, 2, 3, $value2); - - $methodProphecy2->shouldNotBe($methodProphecy1); - } - - function it_returns_new_MethodProphecy_for_all_callback_signatures( - Doubler $doubler, - ProphecySubjectInterface $reflection - ) { - $doubler->double(Argument::any())->willReturn($reflection); - - $this->addMethodProphecy($methodProphecy1 = $this->getProphecy(function(){})); - $methodProphecy2 = $this->getProphecy(function(){}); - - $methodProphecy2->shouldNotBe($methodProphecy1); - } -} - -class ObjectProphecySpecFixtureA -{ - public $errors; -} - -class ObjectProphecySpecFixtureB extends ObjectProphecySpecFixtureA -{ - public $errors; - public $value = null; - - public function __construct($value) - { - $this->value = $value; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/RevealerSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/RevealerSpec.php deleted file mode 100644 index fcaa7ca..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/RevealerSpec.php +++ /dev/null @@ -1,44 +0,0 @@ -shouldBeAnInstanceOf('Prophecy\Prophecy\RevealerInterface'); - } - - function it_reveals_single_instance_of_ProphecyInterface(ProphecyInterface $prophecy, \stdClass $object) - { - $prophecy->reveal()->willReturn($object); - - $this->reveal($prophecy)->shouldReturn($object); - } - - function it_reveals_instances_of_ProphecyInterface_inside_array( - ProphecyInterface $prophecy1, - ProphecyInterface $prophecy2, - \stdClass $object1, - \stdClass $object2 - ) { - $prophecy1->reveal()->willReturn($object1); - $prophecy2->reveal()->willReturn($object2); - - $this->reveal(array( - array('item' => $prophecy2), - $prophecy1 - ))->shouldReturn(array( - array('item' => $object2), - $object1 - )); - } - - function it_does_not_touch_non_prophecy_interface() - { - $this->reveal(42)->shouldReturn(42); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/ProphetSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/ProphetSpec.php deleted file mode 100644 index 67f0275..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/ProphetSpec.php +++ /dev/null @@ -1,81 +0,0 @@ -double(null, array())->willReturn($double); - - $this->beConstructedWith($doubler); - } - - function it_constructs_new_prophecy_on_prophesize_call() - { - $prophecy = $this->prophesize(); - $prophecy->shouldBeAnInstanceOf('Prophecy\Prophecy\ObjectProphecy'); - } - - function it_constructs_new_prophecy_with_parent_class_if_specified($doubler, ProphecySubjectInterface $newDouble) - { - $doubler->double(Argument::any(), array())->willReturn($newDouble); - - $this->prophesize('Prophecy\Prophet')->reveal()->shouldReturn($newDouble); - } - - function it_constructs_new_prophecy_with_interface_if_specified($doubler, ProphecySubjectInterface $newDouble) - { - $doubler->double(null, Argument::any())->willReturn($newDouble); - - $this->prophesize('ArrayAccess')->reveal()->shouldReturn($newDouble); - } - - function it_exposes_all_created_prophecies_through_getter() - { - $prophecy1 = $this->prophesize(); - $prophecy2 = $this->prophesize(); - - $this->getProphecies()->shouldReturn(array($prophecy1, $prophecy2)); - } - - function it_does_nothing_during_checkPredictions_call_if_no_predictions_defined() - { - $this->checkPredictions()->shouldReturn(null); - } - - function it_throws_AggregateException_if_defined_predictions_fail( - MethodProphecy $method1, - MethodProphecy $method2, - ArgumentsWildcard $arguments1, - ArgumentsWildcard $arguments2 - ) { - $method1->getMethodName()->willReturn('getName'); - $method1->getArgumentsWildcard()->willReturn($arguments1); - $method1->checkPrediction()->willReturn(null); - - $method2->getMethodName()->willReturn('isSet'); - $method2->getArgumentsWildcard()->willReturn($arguments2); - $method2->checkPrediction()->willThrow( - 'Prophecy\Exception\Prediction\AggregateException' - ); - - $this->prophesize()->addMethodProphecy($method1); - $this->prophesize()->addMethodProphecy($method2); - - $this->shouldThrow('Prophecy\Exception\Prediction\AggregateException') - ->duringCheckPredictions(); - } - - function it_exposes_doubler_through_getter($doubler) - { - $this->getDoubler()->shouldReturn($doubler); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Util/StringUtilSpec.php b/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Util/StringUtilSpec.php deleted file mode 100644 index 80573cf..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/spec/Prophecy/Util/StringUtilSpec.php +++ /dev/null @@ -1,91 +0,0 @@ -stringify(42)->shouldReturn('42'); - } - - function it_generates_proper_string_representation_for_string() - { - $this->stringify('some string')->shouldReturn('"some string"'); - } - - function it_generates_single_line_representation_for_multiline_string() - { - $this->stringify("some\nstring")->shouldReturn('"some\\nstring"'); - } - - function it_generates_proper_string_representation_for_double() - { - $this->stringify(42.3)->shouldReturn('42.3'); - } - - function it_generates_proper_string_representation_for_boolean_true() - { - $this->stringify(true)->shouldReturn('true'); - } - - function it_generates_proper_string_representation_for_boolean_false() - { - $this->stringify(false)->shouldReturn('false'); - } - - function it_generates_proper_string_representation_for_null() - { - $this->stringify(null)->shouldReturn('null'); - } - - function it_generates_proper_string_representation_for_empty_array() - { - $this->stringify(array())->shouldReturn('[]'); - } - - function it_generates_proper_string_representation_for_array() - { - $this->stringify(array('zet', 42))->shouldReturn('["zet", 42]'); - } - - function it_generates_proper_string_representation_for_hash_containing_one_value() - { - $this->stringify(array('ever' => 'zet'))->shouldReturn('["ever" => "zet"]'); - } - - function it_generates_proper_string_representation_for_hash() - { - $this->stringify(array('ever' => 'zet', 52 => 'hey', 'num' => 42))->shouldReturn( - '["ever" => "zet", 52 => "hey", "num" => 42]' - ); - } - - function it_generates_proper_string_representation_for_resource() - { - $resource = fopen(__FILE__, 'r'); - $this->stringify($resource)->shouldReturn('stream:'.$resource); - } - - function it_generates_proper_string_representation_for_object(\stdClass $object) - { - $objHash = sprintf('%s:%s', - get_class($object->getWrappedObject()), - spl_object_hash($object->getWrappedObject()) - ) . " Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n)"; - - $this->stringify($object)->shouldReturn("$objHash"); - } - - function it_generates_proper_string_representation_for_object_without_exporting(\stdClass $object) - { - $objHash = sprintf('%s:%s', - get_class($object->getWrappedObject()), - spl_object_hash($object->getWrappedObject()) - ); - - $this->stringify($object, false)->shouldReturn("$objHash"); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument.php deleted file mode 100644 index fde6aa9..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument.php +++ /dev/null @@ -1,212 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy; - -use Prophecy\Argument\Token; - -/** - * Argument tokens shortcuts. - * - * @author Konstantin Kudryashov - */ -class Argument -{ - /** - * Checks that argument is exact value or object. - * - * @param mixed $value - * - * @return Token\ExactValueToken - */ - public static function exact($value) - { - return new Token\ExactValueToken($value); - } - - /** - * Checks that argument is of specific type or instance of specific class. - * - * @param string $type Type name (`integer`, `string`) or full class name - * - * @return Token\TypeToken - */ - public static function type($type) - { - return new Token\TypeToken($type); - } - - /** - * Checks that argument object has specific state. - * - * @param string $methodName - * @param mixed $value - * - * @return Token\ObjectStateToken - */ - public static function which($methodName, $value) - { - return new Token\ObjectStateToken($methodName, $value); - } - - /** - * Checks that argument matches provided callback. - * - * @param callable $callback - * - * @return Token\CallbackToken - */ - public static function that($callback) - { - return new Token\CallbackToken($callback); - } - - /** - * Matches any single value. - * - * @return Token\AnyValueToken - */ - public static function any() - { - return new Token\AnyValueToken; - } - - /** - * Matches all values to the rest of the signature. - * - * @return Token\AnyValuesToken - */ - public static function cetera() - { - return new Token\AnyValuesToken; - } - - /** - * Checks that argument matches all tokens - * - * @param mixed ... a list of tokens - * - * @return Token\LogicalAndToken - */ - public static function allOf() - { - return new Token\LogicalAndToken(func_get_args()); - } - - /** - * Checks that argument array or countable object has exact number of elements. - * - * @param integer $value array elements count - * - * @return Token\ArrayCountToken - */ - public static function size($value) - { - return new Token\ArrayCountToken($value); - } - - /** - * Checks that argument array contains (key, value) pair - * - * @param mixed $key exact value or token - * @param mixed $value exact value or token - * - * @return Token\ArrayEntryToken - */ - public static function withEntry($key, $value) - { - return new Token\ArrayEntryToken($key, $value); - } - - /** - * Checks that arguments array entries all match value - * - * @param mixed $value - * - * @return Token\ArrayEveryEntryToken - */ - public static function withEveryEntry($value) - { - return new Token\ArrayEveryEntryToken($value); - } - - /** - * Checks that argument array contains value - * - * @param mixed $value - * - * @return Token\ArrayEntryToken - */ - public static function containing($value) - { - return new Token\ArrayEntryToken(self::any(), $value); - } - - /** - * Checks that argument array has key - * - * @param mixed $key exact value or token - * - * @return Token\ArrayEntryToken - */ - public static function withKey($key) - { - return new Token\ArrayEntryToken($key, self::any()); - } - - /** - * Checks that argument does not match the value|token. - * - * @param mixed $value either exact value or argument token - * - * @return Token\LogicalNotToken - */ - public static function not($value) - { - return new Token\LogicalNotToken($value); - } - - /** - * @param string $value - * - * @return Token\StringContainsToken - */ - public static function containingString($value) - { - return new Token\StringContainsToken($value); - } - - /** - * Checks that argument is identical value. - * - * @param mixed $value - * - * @return Token\IdenticalValueToken - */ - public static function is($value) - { - return new Token\IdenticalValueToken($value); - } - - /** - * Check that argument is same value when rounding to the - * given precision. - * - * @param float $value - * @param float $precision - * - * @return Token\ApproximateValueToken - */ - public static function approximate($value, $precision = 0) - { - return new Token\ApproximateValueToken($value, $precision); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php deleted file mode 100644 index a088f21..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php +++ /dev/null @@ -1,101 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument; - -/** - * Arguments wildcarding. - * - * @author Konstantin Kudryashov - */ -class ArgumentsWildcard -{ - /** - * @var Token\TokenInterface[] - */ - private $tokens = array(); - private $string; - - /** - * Initializes wildcard. - * - * @param array $arguments Array of argument tokens or values - */ - public function __construct(array $arguments) - { - foreach ($arguments as $argument) { - if (!$argument instanceof Token\TokenInterface) { - $argument = new Token\ExactValueToken($argument); - } - - $this->tokens[] = $argument; - } - } - - /** - * Calculates wildcard match score for provided arguments. - * - * @param array $arguments - * - * @return false|int False OR integer score (higher - better) - */ - public function scoreArguments(array $arguments) - { - if (0 == count($arguments) && 0 == count($this->tokens)) { - return 1; - } - - $arguments = array_values($arguments); - $totalScore = 0; - foreach ($this->tokens as $i => $token) { - $argument = isset($arguments[$i]) ? $arguments[$i] : null; - if (1 >= $score = $token->scoreArgument($argument)) { - return false; - } - - $totalScore += $score; - - if (true === $token->isLast()) { - return $totalScore; - } - } - - if (count($arguments) > count($this->tokens)) { - return false; - } - - return $totalScore; - } - - /** - * Returns string representation for wildcard. - * - * @return string - */ - public function __toString() - { - if (null === $this->string) { - $this->string = implode(', ', array_map(function ($token) { - return (string) $token; - }, $this->tokens)); - } - - return $this->string; - } - - /** - * @return array - */ - public function getTokens() - { - return $this->tokens; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php deleted file mode 100644 index 5098811..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php +++ /dev/null @@ -1,52 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -/** - * Any single value token. - * - * @author Konstantin Kudryashov - */ -class AnyValueToken implements TokenInterface -{ - /** - * Always scores 3 for any argument. - * - * @param $argument - * - * @return int - */ - public function scoreArgument($argument) - { - return 3; - } - - /** - * Returns false. - * - * @return bool - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return '*'; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php deleted file mode 100644 index f76b17b..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php +++ /dev/null @@ -1,52 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -/** - * Any values token. - * - * @author Konstantin Kudryashov - */ -class AnyValuesToken implements TokenInterface -{ - /** - * Always scores 2 for any argument. - * - * @param $argument - * - * @return int - */ - public function scoreArgument($argument) - { - return 2; - } - - /** - * Returns true to stop wildcard from processing other tokens. - * - * @return bool - */ - public function isLast() - { - return true; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return '* [, ...]'; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php deleted file mode 100644 index d4918b1..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php +++ /dev/null @@ -1,55 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -/** - * Approximate value token - * - * @author Daniel Leech - */ -class ApproximateValueToken implements TokenInterface -{ - private $value; - private $precision; - - public function __construct($value, $precision = 0) - { - $this->value = $value; - $this->precision = $precision; - } - - /** - * {@inheritdoc} - */ - public function scoreArgument($argument) - { - return round($argument, $this->precision) === round($this->value, $this->precision) ? 10 : false; - } - - /** - * {@inheritdoc} - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return sprintf('≅%s', round($this->value, $this->precision)); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php deleted file mode 100644 index 96b4bef..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php +++ /dev/null @@ -1,86 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -/** - * Array elements count token. - * - * @author Boris Mikhaylov - */ - -class ArrayCountToken implements TokenInterface -{ - private $count; - - /** - * @param integer $value - */ - public function __construct($value) - { - $this->count = $value; - } - - /** - * Scores 6 when argument has preset number of elements. - * - * @param $argument - * - * @return bool|int - */ - public function scoreArgument($argument) - { - return $this->isCountable($argument) && $this->hasProperCount($argument) ? 6 : false; - } - - /** - * Returns false. - * - * @return boolean - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return sprintf('count(%s)', $this->count); - } - - /** - * Returns true if object is either array or instance of \Countable - * - * @param $argument - * @return bool - */ - private function isCountable($argument) - { - return (is_array($argument) || $argument instanceof \Countable); - } - - /** - * Returns true if $argument has expected number of elements - * - * @param array|\Countable $argument - * - * @return bool - */ - private function hasProperCount($argument) - { - return $this->count === count($argument); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php deleted file mode 100644 index 0305fc7..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php +++ /dev/null @@ -1,143 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -use Prophecy\Exception\InvalidArgumentException; - -/** - * Array entry token. - * - * @author Boris Mikhaylov - */ -class ArrayEntryToken implements TokenInterface -{ - /** @var \Prophecy\Argument\Token\TokenInterface */ - private $key; - /** @var \Prophecy\Argument\Token\TokenInterface */ - private $value; - - /** - * @param mixed $key exact value or token - * @param mixed $value exact value or token - */ - public function __construct($key, $value) - { - $this->key = $this->wrapIntoExactValueToken($key); - $this->value = $this->wrapIntoExactValueToken($value); - } - - /** - * Scores half of combined scores from key and value tokens for same entry. Capped at 8. - * If argument implements \ArrayAccess without \Traversable, then key token is restricted to ExactValueToken. - * - * @param array|\ArrayAccess|\Traversable $argument - * - * @throws \Prophecy\Exception\InvalidArgumentException - * @return bool|int - */ - public function scoreArgument($argument) - { - if ($argument instanceof \Traversable) { - $argument = iterator_to_array($argument); - } - - if ($argument instanceof \ArrayAccess) { - $argument = $this->convertArrayAccessToEntry($argument); - } - - if (!is_array($argument) || empty($argument)) { - return false; - } - - $keyScores = array_map(array($this->key,'scoreArgument'), array_keys($argument)); - $valueScores = array_map(array($this->value,'scoreArgument'), $argument); - $scoreEntry = function ($value, $key) { - return $value && $key ? min(8, ($key + $value) / 2) : false; - }; - - return max(array_map($scoreEntry, $valueScores, $keyScores)); - } - - /** - * Returns false. - * - * @return boolean - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return sprintf('[..., %s => %s, ...]', $this->key, $this->value); - } - - /** - * Returns key - * - * @return TokenInterface - */ - public function getKey() - { - return $this->key; - } - - /** - * Returns value - * - * @return TokenInterface - */ - public function getValue() - { - return $this->value; - } - - /** - * Wraps non token $value into ExactValueToken - * - * @param $value - * @return TokenInterface - */ - private function wrapIntoExactValueToken($value) - { - return $value instanceof TokenInterface ? $value : new ExactValueToken($value); - } - - /** - * Converts instance of \ArrayAccess to key => value array entry - * - * @param \ArrayAccess $object - * - * @return array|null - * @throws \Prophecy\Exception\InvalidArgumentException - */ - private function convertArrayAccessToEntry(\ArrayAccess $object) - { - if (!$this->key instanceof ExactValueToken) { - throw new InvalidArgumentException(sprintf( - 'You can only use exact value tokens to match key of ArrayAccess object'.PHP_EOL. - 'But you used `%s`.', - $this->key - )); - } - - $key = $this->key->getValue(); - - return $object->offsetExists($key) ? array($key => $object[$key]) : array(); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php deleted file mode 100644 index 5d41fa4..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php +++ /dev/null @@ -1,82 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -/** - * Array every entry token. - * - * @author Adrien Brault - */ -class ArrayEveryEntryToken implements TokenInterface -{ - /** - * @var TokenInterface - */ - private $value; - - /** - * @param mixed $value exact value or token - */ - public function __construct($value) - { - if (!$value instanceof TokenInterface) { - $value = new ExactValueToken($value); - } - - $this->value = $value; - } - - /** - * {@inheritdoc} - */ - public function scoreArgument($argument) - { - if (!$argument instanceof \Traversable && !is_array($argument)) { - return false; - } - - $scores = array(); - foreach ($argument as $key => $argumentEntry) { - $scores[] = $this->value->scoreArgument($argumentEntry); - } - - if (empty($scores) || in_array(false, $scores, true)) { - return false; - } - - return array_sum($scores) / count($scores); - } - - /** - * {@inheritdoc} - */ - public function isLast() - { - return false; - } - - /** - * {@inheritdoc} - */ - public function __toString() - { - return sprintf('[%s, ..., %s]', $this->value, $this->value); - } - - /** - * @return TokenInterface - */ - public function getValue() - { - return $this->value; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php deleted file mode 100644 index f45ba20..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php +++ /dev/null @@ -1,75 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -use Prophecy\Exception\InvalidArgumentException; - -/** - * Callback-verified token. - * - * @author Konstantin Kudryashov - */ -class CallbackToken implements TokenInterface -{ - private $callback; - - /** - * Initializes token. - * - * @param callable $callback - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function __construct($callback) - { - if (!is_callable($callback)) { - throw new InvalidArgumentException(sprintf( - 'Callable expected as an argument to CallbackToken, but got %s.', - gettype($callback) - )); - } - - $this->callback = $callback; - } - - /** - * Scores 7 if callback returns true, false otherwise. - * - * @param $argument - * - * @return bool|int - */ - public function scoreArgument($argument) - { - return call_user_func($this->callback, $argument) ? 7 : false; - } - - /** - * Returns false. - * - * @return bool - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return 'callback()'; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php deleted file mode 100644 index aa960f3..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php +++ /dev/null @@ -1,116 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -use SebastianBergmann\Comparator\ComparisonFailure; -use Prophecy\Comparator\Factory as ComparatorFactory; -use Prophecy\Util\StringUtil; - -/** - * Exact value token. - * - * @author Konstantin Kudryashov - */ -class ExactValueToken implements TokenInterface -{ - private $value; - private $string; - private $util; - private $comparatorFactory; - - /** - * Initializes token. - * - * @param mixed $value - * @param StringUtil $util - * @param ComparatorFactory $comparatorFactory - */ - public function __construct($value, StringUtil $util = null, ComparatorFactory $comparatorFactory = null) - { - $this->value = $value; - $this->util = $util ?: new StringUtil(); - - $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); - } - - /** - * Scores 10 if argument matches preset value. - * - * @param $argument - * - * @return bool|int - */ - public function scoreArgument($argument) - { - if (is_object($argument) && is_object($this->value)) { - $comparator = $this->comparatorFactory->getComparatorFor( - $argument, $this->value - ); - - try { - $comparator->assertEquals($argument, $this->value); - return 10; - } catch (ComparisonFailure $failure) {} - } - - // If either one is an object it should be castable to a string - if (is_object($argument) xor is_object($this->value)) { - if (is_object($argument) && !method_exists($argument, '__toString')) { - return false; - } - - if (is_object($this->value) && !method_exists($this->value, '__toString')) { - return false; - } - } elseif (is_numeric($argument) && is_numeric($this->value)) { - // noop - } elseif (gettype($argument) !== gettype($this->value)) { - return false; - } - - return $argument == $this->value ? 10 : false; - } - - /** - * Returns preset value against which token checks arguments. - * - * @return mixed - */ - public function getValue() - { - return $this->value; - } - - /** - * Returns false. - * - * @return bool - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - if (null === $this->string) { - $this->string = sprintf('exact(%s)', $this->util->stringify($this->value)); - } - - return $this->string; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php deleted file mode 100644 index 0b6d23a..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php +++ /dev/null @@ -1,74 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -use Prophecy\Util\StringUtil; - -/** - * Identical value token. - * - * @author Florian Voutzinos - */ -class IdenticalValueToken implements TokenInterface -{ - private $value; - private $string; - private $util; - - /** - * Initializes token. - * - * @param mixed $value - * @param StringUtil $util - */ - public function __construct($value, StringUtil $util = null) - { - $this->value = $value; - $this->util = $util ?: new StringUtil(); - } - - /** - * Scores 11 if argument matches preset value. - * - * @param $argument - * - * @return bool|int - */ - public function scoreArgument($argument) - { - return $argument === $this->value ? 11 : false; - } - - /** - * Returns false. - * - * @return bool - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - if (null === $this->string) { - $this->string = sprintf('identical(%s)', $this->util->stringify($this->value)); - } - - return $this->string; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php deleted file mode 100644 index 4ee1b25..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php +++ /dev/null @@ -1,80 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -/** - * Logical AND token. - * - * @author Boris Mikhaylov - */ -class LogicalAndToken implements TokenInterface -{ - private $tokens = array(); - - /** - * @param array $arguments exact values or tokens - */ - public function __construct(array $arguments) - { - foreach ($arguments as $argument) { - if (!$argument instanceof TokenInterface) { - $argument = new ExactValueToken($argument); - } - $this->tokens[] = $argument; - } - } - - /** - * Scores maximum score from scores returned by tokens for this argument if all of them score. - * - * @param $argument - * - * @return bool|int - */ - public function scoreArgument($argument) - { - if (0 === count($this->tokens)) { - return false; - } - - $maxScore = 0; - foreach ($this->tokens as $token) { - $score = $token->scoreArgument($argument); - if (false === $score) { - return false; - } - $maxScore = max($score, $maxScore); - } - - return $maxScore; - } - - /** - * Returns false. - * - * @return boolean - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return sprintf('bool(%s)', implode(' AND ', $this->tokens)); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php deleted file mode 100644 index 623efa5..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php +++ /dev/null @@ -1,73 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -/** - * Logical NOT token. - * - * @author Boris Mikhaylov - */ -class LogicalNotToken implements TokenInterface -{ - /** @var \Prophecy\Argument\Token\TokenInterface */ - private $token; - - /** - * @param mixed $value exact value or token - */ - public function __construct($value) - { - $this->token = $value instanceof TokenInterface? $value : new ExactValueToken($value); - } - - /** - * Scores 4 when preset token does not match the argument. - * - * @param $argument - * - * @return bool|int - */ - public function scoreArgument($argument) - { - return false === $this->token->scoreArgument($argument) ? 4 : false; - } - - /** - * Returns true if preset token is last. - * - * @return bool|int - */ - public function isLast() - { - return $this->token->isLast(); - } - - /** - * Returns originating token. - * - * @return TokenInterface - */ - public function getOriginatingToken() - { - return $this->token; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return sprintf('not(%s)', $this->token); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php deleted file mode 100644 index d771077..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php +++ /dev/null @@ -1,104 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -use SebastianBergmann\Comparator\ComparisonFailure; -use Prophecy\Comparator\Factory as ComparatorFactory; -use Prophecy\Util\StringUtil; - -/** - * Object state-checker token. - * - * @author Konstantin Kudryashov - */ -class ObjectStateToken implements TokenInterface -{ - private $name; - private $value; - private $util; - private $comparatorFactory; - - /** - * Initializes token. - * - * @param string $methodName - * @param mixed $value Expected return value - * @param null|StringUtil $util - * @param ComparatorFactory $comparatorFactory - */ - public function __construct( - $methodName, - $value, - StringUtil $util = null, - ComparatorFactory $comparatorFactory = null - ) { - $this->name = $methodName; - $this->value = $value; - $this->util = $util ?: new StringUtil; - - $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); - } - - /** - * Scores 8 if argument is an object, which method returns expected value. - * - * @param mixed $argument - * - * @return bool|int - */ - public function scoreArgument($argument) - { - if (is_object($argument) && method_exists($argument, $this->name)) { - $actual = call_user_func(array($argument, $this->name)); - - $comparator = $this->comparatorFactory->getComparatorFor( - $this->value, $actual - ); - - try { - $comparator->assertEquals($this->value, $actual); - return 8; - } catch (ComparisonFailure $failure) { - return false; - } - } - - if (is_object($argument) && property_exists($argument, $this->name)) { - return $argument->{$this->name} === $this->value ? 8 : false; - } - - return false; - } - - /** - * Returns false. - * - * @return bool - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return sprintf('state(%s(), %s)', - $this->name, - $this->util->stringify($this->value) - ); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php deleted file mode 100644 index 24ff8c2..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php +++ /dev/null @@ -1,67 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -/** - * String contains token. - * - * @author Peter Mitchell - */ -class StringContainsToken implements TokenInterface -{ - private $value; - - /** - * Initializes token. - * - * @param string $value - */ - public function __construct($value) - { - $this->value = $value; - } - - public function scoreArgument($argument) - { - return strpos($argument, $this->value) !== false ? 6 : false; - } - - /** - * Returns preset value against which token checks arguments. - * - * @return mixed - */ - public function getValue() - { - return $this->value; - } - - /** - * Returns false. - * - * @return bool - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return sprintf('contains("%s")', $this->value); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php deleted file mode 100644 index 625d3ba..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php +++ /dev/null @@ -1,43 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -/** - * Argument token interface. - * - * @author Konstantin Kudryashov - */ -interface TokenInterface -{ - /** - * Calculates token match score for provided argument. - * - * @param $argument - * - * @return bool|int - */ - public function scoreArgument($argument); - - /** - * Returns true if this token prevents check of other tokens (is last one). - * - * @return bool|int - */ - public function isLast(); - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString(); -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php deleted file mode 100644 index cb65132..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php +++ /dev/null @@ -1,76 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Argument\Token; - -use Prophecy\Exception\InvalidArgumentException; - -/** - * Value type token. - * - * @author Konstantin Kudryashov - */ -class TypeToken implements TokenInterface -{ - private $type; - - /** - * @param string $type - */ - public function __construct($type) - { - $checker = "is_{$type}"; - if (!function_exists($checker) && !interface_exists($type) && !class_exists($type)) { - throw new InvalidArgumentException(sprintf( - 'Type or class name expected as an argument to TypeToken, but got %s.', $type - )); - } - - $this->type = $type; - } - - /** - * Scores 5 if argument has the same type this token was constructed with. - * - * @param $argument - * - * @return bool|int - */ - public function scoreArgument($argument) - { - $checker = "is_{$this->type}"; - if (function_exists($checker)) { - return call_user_func($checker, $argument) ? 5 : false; - } - - return $argument instanceof $this->type ? 5 : false; - } - - /** - * Returns false. - * - * @return bool - */ - public function isLast() - { - return false; - } - - /** - * Returns string representation for token. - * - * @return string - */ - public function __toString() - { - return sprintf('type(%s)', $this->type); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php deleted file mode 100644 index 2f3fbad..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php +++ /dev/null @@ -1,127 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Call; - -use Exception; - -/** - * Call object. - * - * @author Konstantin Kudryashov - */ -class Call -{ - private $methodName; - private $arguments; - private $returnValue; - private $exception; - private $file; - private $line; - - /** - * Initializes call. - * - * @param string $methodName - * @param array $arguments - * @param mixed $returnValue - * @param Exception $exception - * @param null|string $file - * @param null|int $line - */ - public function __construct($methodName, array $arguments, $returnValue, - Exception $exception = null, $file, $line) - { - $this->methodName = $methodName; - $this->arguments = $arguments; - $this->returnValue = $returnValue; - $this->exception = $exception; - - if ($file) { - $this->file = $file; - $this->line = intval($line); - } - } - - /** - * Returns called method name. - * - * @return string - */ - public function getMethodName() - { - return $this->methodName; - } - - /** - * Returns called method arguments. - * - * @return array - */ - public function getArguments() - { - return $this->arguments; - } - - /** - * Returns called method return value. - * - * @return null|mixed - */ - public function getReturnValue() - { - return $this->returnValue; - } - - /** - * Returns exception that call thrown. - * - * @return null|Exception - */ - public function getException() - { - return $this->exception; - } - - /** - * Returns callee filename. - * - * @return string - */ - public function getFile() - { - return $this->file; - } - - /** - * Returns callee line number. - * - * @return int - */ - public function getLine() - { - return $this->line; - } - - /** - * Returns short notation for callee place. - * - * @return string - */ - public function getCallPlace() - { - if (null === $this->file) { - return 'unknown'; - } - - return sprintf('%s:%d', $this->file, $this->line); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php deleted file mode 100644 index 53b80f0..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php +++ /dev/null @@ -1,171 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Call; - -use Prophecy\Exception\Prophecy\MethodProphecyException; -use Prophecy\Prophecy\MethodProphecy; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Argument\ArgumentsWildcard; -use Prophecy\Util\StringUtil; -use Prophecy\Exception\Call\UnexpectedCallException; - -/** - * Calls receiver & manager. - * - * @author Konstantin Kudryashov - */ -class CallCenter -{ - private $util; - - /** - * @var Call[] - */ - private $recordedCalls = array(); - - /** - * Initializes call center. - * - * @param StringUtil $util - */ - public function __construct(StringUtil $util = null) - { - $this->util = $util ?: new StringUtil; - } - - /** - * Makes and records specific method call for object prophecy. - * - * @param ObjectProphecy $prophecy - * @param string $methodName - * @param array $arguments - * - * @return mixed Returns null if no promise for prophecy found or promise return value. - * - * @throws \Prophecy\Exception\Call\UnexpectedCallException If no appropriate method prophecy found - */ - public function makeCall(ObjectProphecy $prophecy, $methodName, array $arguments) - { - // For efficiency exclude 'args' from the generated backtrace - if (PHP_VERSION_ID >= 50400) { - // Limit backtrace to last 3 calls as we don't use the rest - // Limit argument was introduced in PHP 5.4.0 - $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 3); - } elseif (defined('DEBUG_BACKTRACE_IGNORE_ARGS')) { - // DEBUG_BACKTRACE_IGNORE_ARGS was introduced in PHP 5.3.6 - $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); - } else { - $backtrace = debug_backtrace(); - } - - $file = $line = null; - if (isset($backtrace[2]) && isset($backtrace[2]['file'])) { - $file = $backtrace[2]['file']; - $line = $backtrace[2]['line']; - } - - // If no method prophecies defined, then it's a dummy, so we'll just return null - if ('__destruct' === $methodName || 0 == count($prophecy->getMethodProphecies())) { - $this->recordedCalls[] = new Call($methodName, $arguments, null, null, $file, $line); - - return null; - } - - // There are method prophecies, so it's a fake/stub. Searching prophecy for this call - $matches = array(); - foreach ($prophecy->getMethodProphecies($methodName) as $methodProphecy) { - if (0 < $score = $methodProphecy->getArgumentsWildcard()->scoreArguments($arguments)) { - $matches[] = array($score, $methodProphecy); - } - } - - // If fake/stub doesn't have method prophecy for this call - throw exception - if (!count($matches)) { - throw $this->createUnexpectedCallException($prophecy, $methodName, $arguments); - } - - // Sort matches by their score value - @usort($matches, function ($match1, $match2) { return $match2[0] - $match1[0]; }); - - // If Highest rated method prophecy has a promise - execute it or return null instead - $methodProphecy = $matches[0][1]; - $returnValue = null; - $exception = null; - if ($promise = $methodProphecy->getPromise()) { - try { - $returnValue = $promise->execute($arguments, $prophecy, $methodProphecy); - } catch (\Exception $e) { - $exception = $e; - } - } - - if ($methodProphecy->hasReturnVoid() && $returnValue !== null) { - throw new MethodProphecyException( - "The method \"$methodName\" has a void return type, but the promise returned a value", - $methodProphecy - ); - } - - $this->recordedCalls[] = new Call( - $methodName, $arguments, $returnValue, $exception, $file, $line - ); - - if (null !== $exception) { - throw $exception; - } - - return $returnValue; - } - - /** - * Searches for calls by method name & arguments wildcard. - * - * @param string $methodName - * @param ArgumentsWildcard $wildcard - * - * @return Call[] - */ - public function findCalls($methodName, ArgumentsWildcard $wildcard) - { - return array_values( - array_filter($this->recordedCalls, function (Call $call) use ($methodName, $wildcard) { - return $methodName === $call->getMethodName() - && 0 < $wildcard->scoreArguments($call->getArguments()) - ; - }) - ); - } - - private function createUnexpectedCallException(ObjectProphecy $prophecy, $methodName, - array $arguments) - { - $classname = get_class($prophecy->reveal()); - $argstring = implode(', ', array_map(array($this->util, 'stringify'), $arguments)); - $expected = implode("\n", array_map(function (MethodProphecy $methodProphecy) { - return sprintf(' - %s(%s)', - $methodProphecy->getMethodName(), - $methodProphecy->getArgumentsWildcard() - ); - }, call_user_func_array('array_merge', $prophecy->getMethodProphecies()))); - - return new UnexpectedCallException( - sprintf( - "Method call:\n". - " - %s(%s)\n". - "on %s was not expected, expected calls were:\n%s", - - $methodName, $argstring, $classname, $expected - ), - $prophecy, $methodName, $arguments - ); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php deleted file mode 100644 index 874e474..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php +++ /dev/null @@ -1,42 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Comparator; - -use SebastianBergmann\Comparator\Comparator; -use SebastianBergmann\Comparator\ComparisonFailure; - -/** - * Closure comparator. - * - * @author Konstantin Kudryashov - */ -final class ClosureComparator extends Comparator -{ - public function accepts($expected, $actual) - { - return is_object($expected) && $expected instanceof \Closure - && is_object($actual) && $actual instanceof \Closure; - } - - public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false) - { - throw new ComparisonFailure( - $expected, - $actual, - // we don't need a diff - '', - '', - false, - 'all closures are born different' - ); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php deleted file mode 100644 index 2070db1..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php +++ /dev/null @@ -1,47 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Comparator; - -use SebastianBergmann\Comparator\Factory as BaseFactory; - -/** - * Prophecy comparator factory. - * - * @author Konstantin Kudryashov - */ -final class Factory extends BaseFactory -{ - /** - * @var Factory - */ - private static $instance; - - public function __construct() - { - parent::__construct(); - - $this->register(new ClosureComparator()); - $this->register(new ProphecyComparator()); - } - - /** - * @return Factory - */ - public static function getInstance() - { - if (self::$instance === null) { - self::$instance = new Factory; - } - - return self::$instance; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php deleted file mode 100644 index 298a8e3..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php +++ /dev/null @@ -1,28 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Comparator; - -use Prophecy\Prophecy\ProphecyInterface; -use SebastianBergmann\Comparator\ObjectComparator; - -class ProphecyComparator extends ObjectComparator -{ - public function accepts($expected, $actual) - { - return is_object($expected) && is_object($actual) && $actual instanceof ProphecyInterface; - } - - public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = array()) - { - parent::assertEquals($expected, $actual->reveal(), $delta, $canonicalize, $ignoreCase, $processed); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php deleted file mode 100644 index d6b6b1a..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php +++ /dev/null @@ -1,68 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler; - -use ReflectionClass; - -/** - * Cached class doubler. - * Prevents mirroring/creation of the same structure twice. - * - * @author Konstantin Kudryashov - */ -class CachedDoubler extends Doubler -{ - private $classes = array(); - - /** - * {@inheritdoc} - */ - public function registerClassPatch(ClassPatch\ClassPatchInterface $patch) - { - $this->classes[] = array(); - - parent::registerClassPatch($patch); - } - - /** - * {@inheritdoc} - */ - protected function createDoubleClass(ReflectionClass $class = null, array $interfaces) - { - $classId = $this->generateClassId($class, $interfaces); - if (isset($this->classes[$classId])) { - return $this->classes[$classId]; - } - - return $this->classes[$classId] = parent::createDoubleClass($class, $interfaces); - } - - /** - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces - * - * @return string - */ - private function generateClassId(ReflectionClass $class = null, array $interfaces) - { - $parts = array(); - if (null !== $class) { - $parts[] = $class->getName(); - } - foreach ($interfaces as $interface) { - $parts[] = $interface->getName(); - } - sort($parts); - - return md5(implode('', $parts)); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php deleted file mode 100644 index d6d1968..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php +++ /dev/null @@ -1,48 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use Prophecy\Doubler\Generator\Node\ClassNode; - -/** - * Class patch interface. - * Class patches extend doubles functionality or help - * Prophecy to avoid some internal PHP bugs. - * - * @author Konstantin Kudryashov - */ -interface ClassPatchInterface -{ - /** - * Checks if patch supports specific class node. - * - * @param ClassNode $node - * - * @return bool - */ - public function supports(ClassNode $node); - - /** - * Applies patch to the specific class node. - * - * @param ClassNode $node - * @return void - */ - public function apply(ClassNode $node); - - /** - * Returns patch priority, which determines when patch will be applied. - * - * @return int Priority number (higher - earlier) - */ - public function getPriority(); -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php deleted file mode 100644 index 61998fc..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php +++ /dev/null @@ -1,72 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use Prophecy\Doubler\Generator\Node\ClassNode; -use Prophecy\Doubler\Generator\Node\MethodNode; - -/** - * Disable constructor. - * Makes all constructor arguments optional. - * - * @author Konstantin Kudryashov - */ -class DisableConstructorPatch implements ClassPatchInterface -{ - /** - * Checks if class has `__construct` method. - * - * @param ClassNode $node - * - * @return bool - */ - public function supports(ClassNode $node) - { - return true; - } - - /** - * Makes all class constructor arguments optional. - * - * @param ClassNode $node - */ - public function apply(ClassNode $node) - { - if (!$node->hasMethod('__construct')) { - $node->addMethod(new MethodNode('__construct', '')); - - return; - } - - $constructor = $node->getMethod('__construct'); - foreach ($constructor->getArguments() as $argument) { - $argument->setDefault(null); - } - - $constructor->setCode(<< - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use Prophecy\Doubler\Generator\Node\ClassNode; - -/** - * Exception patch for HHVM to remove the stubs from special methods - * - * @author Christophe Coevoet - */ -class HhvmExceptionPatch implements ClassPatchInterface -{ - /** - * Supports exceptions on HHVM. - * - * @param ClassNode $node - * - * @return bool - */ - public function supports(ClassNode $node) - { - if (!defined('HHVM_VERSION')) { - return false; - } - - return 'Exception' === $node->getParentClass() || is_subclass_of($node->getParentClass(), 'Exception'); - } - - /** - * Removes special exception static methods from the doubled methods. - * - * @param ClassNode $node - * - * @return void - */ - public function apply(ClassNode $node) - { - if ($node->hasMethod('setTraceOptions')) { - $node->getMethod('setTraceOptions')->useParentCode(); - } - if ($node->hasMethod('getTraceOptions')) { - $node->getMethod('getTraceOptions')->useParentCode(); - } - } - - /** - * {@inheritdoc} - */ - public function getPriority() - { - return -50; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php deleted file mode 100644 index 41ea2fc..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php +++ /dev/null @@ -1,140 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use Prophecy\Doubler\Generator\Node\ClassNode; - -/** - * Remove method functionality from the double which will clash with php keywords. - * - * @author Milan Magudia - */ -class KeywordPatch implements ClassPatchInterface -{ - /** - * Support any class - * - * @param ClassNode $node - * - * @return boolean - */ - public function supports(ClassNode $node) - { - return true; - } - - /** - * Remove methods that clash with php keywords - * - * @param ClassNode $node - */ - public function apply(ClassNode $node) - { - $methodNames = array_keys($node->getMethods()); - $methodsToRemove = array_intersect($methodNames, $this->getKeywords()); - foreach ($methodsToRemove as $methodName) { - $node->removeMethod($methodName); - } - } - - /** - * Returns patch priority, which determines when patch will be applied. - * - * @return int Priority number (higher - earlier) - */ - public function getPriority() - { - return 49; - } - - /** - * Returns array of php keywords. - * - * @return array - */ - private function getKeywords() - { - if (\PHP_VERSION_ID >= 70000) { - return array('__halt_compiler'); - } - - return array( - '__halt_compiler', - 'abstract', - 'and', - 'array', - 'as', - 'break', - 'callable', - 'case', - 'catch', - 'class', - 'clone', - 'const', - 'continue', - 'declare', - 'default', - 'die', - 'do', - 'echo', - 'else', - 'elseif', - 'empty', - 'enddeclare', - 'endfor', - 'endforeach', - 'endif', - 'endswitch', - 'endwhile', - 'eval', - 'exit', - 'extends', - 'final', - 'finally', - 'for', - 'foreach', - 'function', - 'global', - 'goto', - 'if', - 'implements', - 'include', - 'include_once', - 'instanceof', - 'insteadof', - 'interface', - 'isset', - 'list', - 'namespace', - 'new', - 'or', - 'print', - 'private', - 'protected', - 'public', - 'require', - 'require_once', - 'return', - 'static', - 'switch', - 'throw', - 'trait', - 'try', - 'unset', - 'use', - 'var', - 'while', - 'xor', - 'yield', - ); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php deleted file mode 100644 index 5f2c607..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php +++ /dev/null @@ -1,89 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use Prophecy\Doubler\Generator\Node\ClassNode; -use Prophecy\Doubler\Generator\Node\MethodNode; -use Prophecy\PhpDocumentor\ClassAndInterfaceTagRetriever; -use Prophecy\PhpDocumentor\MethodTagRetrieverInterface; - -/** - * Discover Magical API using "@method" PHPDoc format. - * - * @author Thomas Tourlourat - * @author Kévin Dunglas - * @author Théo FIDRY - */ -class MagicCallPatch implements ClassPatchInterface -{ - private $tagRetriever; - - public function __construct(MethodTagRetrieverInterface $tagRetriever = null) - { - $this->tagRetriever = null === $tagRetriever ? new ClassAndInterfaceTagRetriever() : $tagRetriever; - } - - /** - * Support any class - * - * @param ClassNode $node - * - * @return boolean - */ - public function supports(ClassNode $node) - { - return true; - } - - /** - * Discover Magical API - * - * @param ClassNode $node - */ - public function apply(ClassNode $node) - { - $types = array_filter($node->getInterfaces(), function ($interface) { - return 0 !== strpos($interface, 'Prophecy\\'); - }); - $types[] = $node->getParentClass(); - - foreach ($types as $type) { - $reflectionClass = new \ReflectionClass($type); - $tagList = $this->tagRetriever->getTagList($reflectionClass); - - foreach($tagList as $tag) { - $methodName = $tag->getMethodName(); - - if (empty($methodName)) { - continue; - } - - if (!$reflectionClass->hasMethod($methodName)) { - $methodNode = new MethodNode($methodName); - $methodNode->setStatic($tag->isStatic()); - $node->addMethod($methodNode); - } - } - } - } - - /** - * Returns patch priority, which determines when patch will be applied. - * - * @return integer Priority number (higher - earlier) - */ - public function getPriority() - { - return 50; - } -} - diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php deleted file mode 100644 index fc2cc4d..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php +++ /dev/null @@ -1,104 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use Prophecy\Doubler\Generator\Node\ClassNode; -use Prophecy\Doubler\Generator\Node\MethodNode; -use Prophecy\Doubler\Generator\Node\ArgumentNode; - -/** - * Add Prophecy functionality to the double. - * This is a core class patch for Prophecy. - * - * @author Konstantin Kudryashov - */ -class ProphecySubjectPatch implements ClassPatchInterface -{ - /** - * Always returns true. - * - * @param ClassNode $node - * - * @return bool - */ - public function supports(ClassNode $node) - { - return true; - } - - /** - * Apply Prophecy functionality to class node. - * - * @param ClassNode $node - */ - public function apply(ClassNode $node) - { - $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface'); - $node->addProperty('objectProphecy', 'private'); - - foreach ($node->getMethods() as $name => $method) { - if ('__construct' === strtolower($name)) { - continue; - } - - if ($method->getReturnType() === 'void') { - $method->setCode( - '$this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());' - ); - } else { - $method->setCode( - 'return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());' - ); - } - } - - $prophecySetter = new MethodNode('setProphecy'); - $prophecyArgument = new ArgumentNode('prophecy'); - $prophecyArgument->setTypeHint('Prophecy\Prophecy\ProphecyInterface'); - $prophecySetter->addArgument($prophecyArgument); - $prophecySetter->setCode('$this->objectProphecy = $prophecy;'); - - $prophecyGetter = new MethodNode('getProphecy'); - $prophecyGetter->setCode('return $this->objectProphecy;'); - - if ($node->hasMethod('__call')) { - $__call = $node->getMethod('__call'); - } else { - $__call = new MethodNode('__call'); - $__call->addArgument(new ArgumentNode('name')); - $__call->addArgument(new ArgumentNode('arguments')); - - $node->addMethod($__call); - } - - $__call->setCode(<<getProphecy(), func_get_arg(0) -); -PHP - ); - - $node->addMethod($prophecySetter); - $node->addMethod($prophecyGetter); - } - - /** - * Returns patch priority, which determines when patch will be applied. - * - * @return int Priority number (higher - earlier) - */ - public function getPriority() - { - return 0; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php deleted file mode 100644 index 9166aee..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php +++ /dev/null @@ -1,57 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use Prophecy\Doubler\Generator\Node\ClassNode; - -/** - * ReflectionClass::newInstance patch. - * Makes first argument of newInstance optional, since it works but signature is misleading - * - * @author Florian Klein - */ -class ReflectionClassNewInstancePatch implements ClassPatchInterface -{ - /** - * Supports ReflectionClass - * - * @param ClassNode $node - * - * @return bool - */ - public function supports(ClassNode $node) - { - return 'ReflectionClass' === $node->getParentClass(); - } - - /** - * Updates newInstance's first argument to make it optional - * - * @param ClassNode $node - */ - public function apply(ClassNode $node) - { - foreach ($node->getMethod('newInstance')->getArguments() as $argument) { - $argument->setDefault(null); - } - } - - /** - * Returns patch priority, which determines when patch will be applied. - * - * @return int Priority number (higher = earlier) - */ - public function getPriority() - { - return 50; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php deleted file mode 100644 index ceee94a..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php +++ /dev/null @@ -1,123 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use Prophecy\Doubler\Generator\Node\ClassNode; -use Prophecy\Doubler\Generator\Node\MethodNode; - -/** - * SplFileInfo patch. - * Makes SplFileInfo and derivative classes usable with Prophecy. - * - * @author Konstantin Kudryashov - */ -class SplFileInfoPatch implements ClassPatchInterface -{ - /** - * Supports everything that extends SplFileInfo. - * - * @param ClassNode $node - * - * @return bool - */ - public function supports(ClassNode $node) - { - if (null === $node->getParentClass()) { - return false; - } - return 'SplFileInfo' === $node->getParentClass() - || is_subclass_of($node->getParentClass(), 'SplFileInfo') - ; - } - - /** - * Updated constructor code to call parent one with dummy file argument. - * - * @param ClassNode $node - */ - public function apply(ClassNode $node) - { - if ($node->hasMethod('__construct')) { - $constructor = $node->getMethod('__construct'); - } else { - $constructor = new MethodNode('__construct'); - $node->addMethod($constructor); - } - - if ($this->nodeIsDirectoryIterator($node)) { - $constructor->setCode('return parent::__construct("' . __DIR__ . '");'); - - return; - } - - if ($this->nodeIsSplFileObject($node)) { - $filePath = str_replace('\\','\\\\',__FILE__); - $constructor->setCode('return parent::__construct("' . $filePath .'");'); - - return; - } - - if ($this->nodeIsSymfonySplFileInfo($node)) { - $filePath = str_replace('\\','\\\\',__FILE__); - $constructor->setCode('return parent::__construct("' . $filePath .'", "", "");'); - - return; - } - - $constructor->useParentCode(); - } - - /** - * Returns patch priority, which determines when patch will be applied. - * - * @return int Priority number (higher - earlier) - */ - public function getPriority() - { - return 50; - } - - /** - * @param ClassNode $node - * @return boolean - */ - private function nodeIsDirectoryIterator(ClassNode $node) - { - $parent = $node->getParentClass(); - - return 'DirectoryIterator' === $parent - || is_subclass_of($parent, 'DirectoryIterator'); - } - - /** - * @param ClassNode $node - * @return boolean - */ - private function nodeIsSplFileObject(ClassNode $node) - { - $parent = $node->getParentClass(); - - return 'SplFileObject' === $parent - || is_subclass_of($parent, 'SplFileObject'); - } - - /** - * @param ClassNode $node - * @return boolean - */ - private function nodeIsSymfonySplFileInfo(ClassNode $node) - { - $parent = $node->getParentClass(); - - return 'Symfony\\Component\\Finder\\SplFileInfo' === $parent; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php deleted file mode 100644 index eea0202..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php +++ /dev/null @@ -1,83 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\ClassPatch; - -use Prophecy\Doubler\Generator\Node\ClassNode; -use Prophecy\Doubler\Generator\Node\MethodNode; - -/** - * Traversable interface patch. - * Forces classes that implement interfaces, that extend Traversable to also implement Iterator. - * - * @author Konstantin Kudryashov - */ -class TraversablePatch implements ClassPatchInterface -{ - /** - * Supports nodetree, that implement Traversable, but not Iterator or IteratorAggregate. - * - * @param ClassNode $node - * - * @return bool - */ - public function supports(ClassNode $node) - { - if (in_array('Iterator', $node->getInterfaces())) { - return false; - } - if (in_array('IteratorAggregate', $node->getInterfaces())) { - return false; - } - - foreach ($node->getInterfaces() as $interface) { - if ('Traversable' !== $interface && !is_subclass_of($interface, 'Traversable')) { - continue; - } - if ('Iterator' === $interface || is_subclass_of($interface, 'Iterator')) { - continue; - } - if ('IteratorAggregate' === $interface || is_subclass_of($interface, 'IteratorAggregate')) { - continue; - } - - return true; - } - - return false; - } - - /** - * Forces class to implement Iterator interface. - * - * @param ClassNode $node - */ - public function apply(ClassNode $node) - { - $node->addInterface('Iterator'); - - $node->addMethod(new MethodNode('current')); - $node->addMethod(new MethodNode('key')); - $node->addMethod(new MethodNode('next')); - $node->addMethod(new MethodNode('rewind')); - $node->addMethod(new MethodNode('valid')); - } - - /** - * Returns patch priority, which determines when patch will be applied. - * - * @return int Priority number (higher - earlier) - */ - public function getPriority() - { - return 100; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php deleted file mode 100644 index 699be3a..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php +++ /dev/null @@ -1,22 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler; - -/** - * Core double interface. - * All doubled classes will implement this one. - * - * @author Konstantin Kudryashov - */ -interface DoubleInterface -{ -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php deleted file mode 100644 index a378ae2..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php +++ /dev/null @@ -1,146 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler; - -use Doctrine\Instantiator\Instantiator; -use Prophecy\Doubler\ClassPatch\ClassPatchInterface; -use Prophecy\Doubler\Generator\ClassMirror; -use Prophecy\Doubler\Generator\ClassCreator; -use Prophecy\Exception\InvalidArgumentException; -use ReflectionClass; - -/** - * Cached class doubler. - * Prevents mirroring/creation of the same structure twice. - * - * @author Konstantin Kudryashov - */ -class Doubler -{ - private $mirror; - private $creator; - private $namer; - - /** - * @var ClassPatchInterface[] - */ - private $patches = array(); - - /** - * @var \Doctrine\Instantiator\Instantiator - */ - private $instantiator; - - /** - * Initializes doubler. - * - * @param ClassMirror $mirror - * @param ClassCreator $creator - * @param NameGenerator $namer - */ - public function __construct(ClassMirror $mirror = null, ClassCreator $creator = null, - NameGenerator $namer = null) - { - $this->mirror = $mirror ?: new ClassMirror; - $this->creator = $creator ?: new ClassCreator; - $this->namer = $namer ?: new NameGenerator; - } - - /** - * Returns list of registered class patches. - * - * @return ClassPatchInterface[] - */ - public function getClassPatches() - { - return $this->patches; - } - - /** - * Registers new class patch. - * - * @param ClassPatchInterface $patch - */ - public function registerClassPatch(ClassPatchInterface $patch) - { - $this->patches[] = $patch; - - @usort($this->patches, function (ClassPatchInterface $patch1, ClassPatchInterface $patch2) { - return $patch2->getPriority() - $patch1->getPriority(); - }); - } - - /** - * Creates double from specific class or/and list of interfaces. - * - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces Array of ReflectionClass instances - * @param array $args Constructor arguments - * - * @return DoubleInterface - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function double(ReflectionClass $class = null, array $interfaces, array $args = null) - { - foreach ($interfaces as $interface) { - if (!$interface instanceof ReflectionClass) { - throw new InvalidArgumentException(sprintf( - "[ReflectionClass \$interface1 [, ReflectionClass \$interface2]] array expected as\n". - "a second argument to `Doubler::double(...)`, but got %s.", - is_object($interface) ? get_class($interface).' class' : gettype($interface) - )); - } - } - - $classname = $this->createDoubleClass($class, $interfaces); - $reflection = new ReflectionClass($classname); - - if (null !== $args) { - return $reflection->newInstanceArgs($args); - } - if ((null === $constructor = $reflection->getConstructor()) - || ($constructor->isPublic() && !$constructor->isFinal())) { - return $reflection->newInstance(); - } - - if (!$this->instantiator) { - $this->instantiator = new Instantiator(); - } - - return $this->instantiator->instantiate($classname); - } - - /** - * Creates double class and returns its FQN. - * - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces - * - * @return string - */ - protected function createDoubleClass(ReflectionClass $class = null, array $interfaces) - { - $name = $this->namer->name($class, $interfaces); - $node = $this->mirror->reflect($class, $interfaces); - - foreach ($this->patches as $patch) { - if ($patch->supports($node)) { - $patch->apply($node); - } - } - - $this->creator->create($name, $node); - - return $name; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php deleted file mode 100644 index 891faa8..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php +++ /dev/null @@ -1,129 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\Generator; - -/** - * Class code creator. - * Generates PHP code for specific class node tree. - * - * @author Konstantin Kudryashov - */ -class ClassCodeGenerator -{ - /** - * @var TypeHintReference - */ - private $typeHintReference; - - public function __construct(TypeHintReference $typeHintReference = null) - { - $this->typeHintReference = $typeHintReference ?: new TypeHintReference(); - } - - /** - * Generates PHP code for class node. - * - * @param string $classname - * @param Node\ClassNode $class - * - * @return string - */ - public function generate($classname, Node\ClassNode $class) - { - $parts = explode('\\', $classname); - $classname = array_pop($parts); - $namespace = implode('\\', $parts); - - $code = sprintf("class %s extends \%s implements %s {\n", - $classname, $class->getParentClass(), implode(', ', - array_map(function ($interface) {return '\\'.$interface;}, $class->getInterfaces()) - ) - ); - - foreach ($class->getProperties() as $name => $visibility) { - $code .= sprintf("%s \$%s;\n", $visibility, $name); - } - $code .= "\n"; - - foreach ($class->getMethods() as $method) { - $code .= $this->generateMethod($method)."\n"; - } - $code .= "\n}"; - - return sprintf("namespace %s {\n%s\n}", $namespace, $code); - } - - private function generateMethod(Node\MethodNode $method) - { - $php = sprintf("%s %s function %s%s(%s)%s {\n", - $method->getVisibility(), - $method->isStatic() ? 'static' : '', - $method->returnsReference() ? '&':'', - $method->getName(), - implode(', ', $this->generateArguments($method->getArguments())), - $this->getReturnType($method) - ); - $php .= $method->getCode()."\n"; - - return $php.'}'; - } - - /** - * @return string - */ - private function getReturnType(Node\MethodNode $method) - { - if (version_compare(PHP_VERSION, '7.1', '>=')) { - if ($method->hasReturnType()) { - return $method->hasNullableReturnType() - ? sprintf(': ?%s', $method->getReturnType()) - : sprintf(': %s', $method->getReturnType()); - } - } - - if (version_compare(PHP_VERSION, '7.0', '>=')) { - return $method->hasReturnType() && $method->getReturnType() !== 'void' - ? sprintf(': %s', $method->getReturnType()) - : ''; - } - - return ''; - } - - private function generateArguments(array $arguments) - { - $typeHintReference = $this->typeHintReference; - return array_map(function (Node\ArgumentNode $argument) use ($typeHintReference) { - $php = ''; - - if (version_compare(PHP_VERSION, '7.1', '>=')) { - $php .= $argument->isNullable() ? '?' : ''; - } - - if ($hint = $argument->getTypeHint()) { - $php .= $typeHintReference->isBuiltInParamTypeHint($hint) ? $hint : '\\'.$hint; - } - - $php .= ' '.($argument->isPassedByReference() ? '&' : ''); - - $php .= $argument->isVariadic() ? '...' : ''; - - $php .= '$'.$argument->getName(); - - if ($argument->isOptional() && !$argument->isVariadic()) { - $php .= ' = '.var_export($argument->getDefault(), true); - } - - return $php; - }, $arguments); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php deleted file mode 100644 index 882a4a4..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php +++ /dev/null @@ -1,67 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\Generator; - -use Prophecy\Exception\Doubler\ClassCreatorException; - -/** - * Class creator. - * Creates specific class in current environment. - * - * @author Konstantin Kudryashov - */ -class ClassCreator -{ - private $generator; - - /** - * Initializes creator. - * - * @param ClassCodeGenerator $generator - */ - public function __construct(ClassCodeGenerator $generator = null) - { - $this->generator = $generator ?: new ClassCodeGenerator; - } - - /** - * Creates class. - * - * @param string $classname - * @param Node\ClassNode $class - * - * @return mixed - * - * @throws \Prophecy\Exception\Doubler\ClassCreatorException - */ - public function create($classname, Node\ClassNode $class) - { - $code = $this->generator->generate($classname, $class); - $return = eval($code); - - if (!class_exists($classname, false)) { - if (count($class->getInterfaces())) { - throw new ClassCreatorException(sprintf( - 'Could not double `%s` and implement interfaces: [%s].', - $class->getParentClass(), implode(', ', $class->getInterfaces()) - ), $class); - } - - throw new ClassCreatorException( - sprintf('Could not double `%s`.', $class->getParentClass()), - $class - ); - } - - return $return; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php deleted file mode 100644 index 9f99239..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php +++ /dev/null @@ -1,258 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\Generator; - -use Prophecy\Exception\InvalidArgumentException; -use Prophecy\Exception\Doubler\ClassMirrorException; -use ReflectionClass; -use ReflectionMethod; -use ReflectionParameter; - -/** - * Class mirror. - * Core doubler class. Mirrors specific class and/or interfaces into class node tree. - * - * @author Konstantin Kudryashov - */ -class ClassMirror -{ - private static $reflectableMethods = array( - '__construct', - '__destruct', - '__sleep', - '__wakeup', - '__toString', - '__call', - '__invoke' - ); - - /** - * Reflects provided arguments into class node. - * - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces - * - * @return Node\ClassNode - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function reflect(ReflectionClass $class = null, array $interfaces) - { - $node = new Node\ClassNode; - - if (null !== $class) { - if (true === $class->isInterface()) { - throw new InvalidArgumentException(sprintf( - "Could not reflect %s as a class, because it\n". - "is interface - use the second argument instead.", - $class->getName() - )); - } - - $this->reflectClassToNode($class, $node); - } - - foreach ($interfaces as $interface) { - if (!$interface instanceof ReflectionClass) { - throw new InvalidArgumentException(sprintf( - "[ReflectionClass \$interface1 [, ReflectionClass \$interface2]] array expected as\n". - "a second argument to `ClassMirror::reflect(...)`, but got %s.", - is_object($interface) ? get_class($interface).' class' : gettype($interface) - )); - } - if (false === $interface->isInterface()) { - throw new InvalidArgumentException(sprintf( - "Could not reflect %s as an interface, because it\n". - "is class - use the first argument instead.", - $interface->getName() - )); - } - - $this->reflectInterfaceToNode($interface, $node); - } - - $node->addInterface('Prophecy\Doubler\Generator\ReflectionInterface'); - - return $node; - } - - private function reflectClassToNode(ReflectionClass $class, Node\ClassNode $node) - { - if (true === $class->isFinal()) { - throw new ClassMirrorException(sprintf( - 'Could not reflect class %s as it is marked final.', $class->getName() - ), $class); - } - - $node->setParentClass($class->getName()); - - foreach ($class->getMethods(ReflectionMethod::IS_ABSTRACT) as $method) { - if (false === $method->isProtected()) { - continue; - } - - $this->reflectMethodToNode($method, $node); - } - - foreach ($class->getMethods(ReflectionMethod::IS_PUBLIC) as $method) { - if (0 === strpos($method->getName(), '_') - && !in_array($method->getName(), self::$reflectableMethods)) { - continue; - } - - if (true === $method->isFinal()) { - $node->addUnextendableMethod($method->getName()); - continue; - } - - $this->reflectMethodToNode($method, $node); - } - } - - private function reflectInterfaceToNode(ReflectionClass $interface, Node\ClassNode $node) - { - $node->addInterface($interface->getName()); - - foreach ($interface->getMethods() as $method) { - $this->reflectMethodToNode($method, $node); - } - } - - private function reflectMethodToNode(ReflectionMethod $method, Node\ClassNode $classNode) - { - $node = new Node\MethodNode($method->getName()); - - if (true === $method->isProtected()) { - $node->setVisibility('protected'); - } - - if (true === $method->isStatic()) { - $node->setStatic(); - } - - if (true === $method->returnsReference()) { - $node->setReturnsReference(); - } - - if (version_compare(PHP_VERSION, '7.0', '>=') && $method->hasReturnType()) { - $returnType = (string) $method->getReturnType(); - $returnTypeLower = strtolower($returnType); - - if ('self' === $returnTypeLower) { - $returnType = $method->getDeclaringClass()->getName(); - } - if ('parent' === $returnTypeLower) { - $returnType = $method->getDeclaringClass()->getParentClass()->getName(); - } - - $node->setReturnType($returnType); - - if (version_compare(PHP_VERSION, '7.1', '>=') && $method->getReturnType()->allowsNull()) { - $node->setNullableReturnType(true); - } - } - - if (is_array($params = $method->getParameters()) && count($params)) { - foreach ($params as $param) { - $this->reflectArgumentToNode($param, $node); - } - } - - $classNode->addMethod($node); - } - - private function reflectArgumentToNode(ReflectionParameter $parameter, Node\MethodNode $methodNode) - { - $name = $parameter->getName() == '...' ? '__dot_dot_dot__' : $parameter->getName(); - $node = new Node\ArgumentNode($name); - - $node->setTypeHint($this->getTypeHint($parameter)); - - if ($this->isVariadic($parameter)) { - $node->setAsVariadic(); - } - - if ($this->hasDefaultValue($parameter)) { - $node->setDefault($this->getDefaultValue($parameter)); - } - - if ($parameter->isPassedByReference()) { - $node->setAsPassedByReference(); - } - - $methodNode->addArgument($node); - } - - private function hasDefaultValue(ReflectionParameter $parameter) - { - if ($this->isVariadic($parameter)) { - return false; - } - - if ($parameter->isDefaultValueAvailable()) { - return true; - } - - return $parameter->isOptional() || $this->isNullable($parameter); - } - - private function getDefaultValue(ReflectionParameter $parameter) - { - if (!$parameter->isDefaultValueAvailable()) { - return null; - } - - return $parameter->getDefaultValue(); - } - - private function getTypeHint(ReflectionParameter $parameter) - { - if (null !== $className = $this->getParameterClassName($parameter)) { - return $className; - } - - if (true === $parameter->isArray()) { - return 'array'; - } - - if (version_compare(PHP_VERSION, '5.4', '>=') && true === $parameter->isCallable()) { - return 'callable'; - } - - if (version_compare(PHP_VERSION, '7.0', '>=') && true === $parameter->hasType()) { - return (string) $parameter->getType(); - } - - return null; - } - - private function isVariadic(ReflectionParameter $parameter) - { - return PHP_VERSION_ID >= 50600 && $parameter->isVariadic(); - } - - private function isNullable(ReflectionParameter $parameter) - { - return $parameter->allowsNull() && null !== $this->getTypeHint($parameter); - } - - private function getParameterClassName(ReflectionParameter $parameter) - { - try { - return $parameter->getClass() ? $parameter->getClass()->getName() : null; - } catch (\ReflectionException $e) { - preg_match('/\[\s\<\w+?>\s([\w,\\\]+)/s', $parameter, $matches); - - return isset($matches[1]) ? $matches[1] : null; - } - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php deleted file mode 100644 index dd29b68..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php +++ /dev/null @@ -1,102 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\Generator\Node; - -/** - * Argument node. - * - * @author Konstantin Kudryashov - */ -class ArgumentNode -{ - private $name; - private $typeHint; - private $default; - private $optional = false; - private $byReference = false; - private $isVariadic = false; - private $isNullable = false; - - /** - * @param string $name - */ - public function __construct($name) - { - $this->name = $name; - } - - public function getName() - { - return $this->name; - } - - public function getTypeHint() - { - return $this->typeHint; - } - - public function setTypeHint($typeHint = null) - { - $this->typeHint = $typeHint; - } - - public function hasDefault() - { - return $this->isOptional() && !$this->isVariadic(); - } - - public function getDefault() - { - return $this->default; - } - - public function setDefault($default = null) - { - $this->optional = true; - $this->default = $default; - } - - public function isOptional() - { - return $this->optional; - } - - public function setAsPassedByReference($byReference = true) - { - $this->byReference = $byReference; - } - - public function isPassedByReference() - { - return $this->byReference; - } - - public function setAsVariadic($isVariadic = true) - { - $this->isVariadic = $isVariadic; - } - - public function isVariadic() - { - return $this->isVariadic; - } - - public function isNullable() - { - return $this->isNullable; - } - - public function setAsNullable($isNullable = true) - { - $this->isNullable = $isNullable; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php deleted file mode 100644 index 1499a1d..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php +++ /dev/null @@ -1,166 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\Generator\Node; - -use Prophecy\Exception\Doubler\MethodNotExtendableException; -use Prophecy\Exception\InvalidArgumentException; - -/** - * Class node. - * - * @author Konstantin Kudryashov - */ -class ClassNode -{ - private $parentClass = 'stdClass'; - private $interfaces = array(); - private $properties = array(); - private $unextendableMethods = array(); - - /** - * @var MethodNode[] - */ - private $methods = array(); - - public function getParentClass() - { - return $this->parentClass; - } - - /** - * @param string $class - */ - public function setParentClass($class) - { - $this->parentClass = $class ?: 'stdClass'; - } - - /** - * @return string[] - */ - public function getInterfaces() - { - return $this->interfaces; - } - - /** - * @param string $interface - */ - public function addInterface($interface) - { - if ($this->hasInterface($interface)) { - return; - } - - array_unshift($this->interfaces, $interface); - } - - /** - * @param string $interface - * - * @return bool - */ - public function hasInterface($interface) - { - return in_array($interface, $this->interfaces); - } - - public function getProperties() - { - return $this->properties; - } - - public function addProperty($name, $visibility = 'public') - { - $visibility = strtolower($visibility); - - if (!in_array($visibility, array('public', 'private', 'protected'))) { - throw new InvalidArgumentException(sprintf( - '`%s` property visibility is not supported.', $visibility - )); - } - - $this->properties[$name] = $visibility; - } - - /** - * @return MethodNode[] - */ - public function getMethods() - { - return $this->methods; - } - - public function addMethod(MethodNode $method) - { - if (!$this->isExtendable($method->getName())){ - $message = sprintf( - 'Method `%s` is not extendable, so can not be added.', $method->getName() - ); - throw new MethodNotExtendableException($message, $this->getParentClass(), $method->getName()); - } - $this->methods[$method->getName()] = $method; - } - - public function removeMethod($name) - { - unset($this->methods[$name]); - } - - /** - * @param string $name - * - * @return MethodNode|null - */ - public function getMethod($name) - { - return $this->hasMethod($name) ? $this->methods[$name] : null; - } - - /** - * @param string $name - * - * @return bool - */ - public function hasMethod($name) - { - return isset($this->methods[$name]); - } - - /** - * @return string[] - */ - public function getUnextendableMethods() - { - return $this->unextendableMethods; - } - - /** - * @param string $unextendableMethod - */ - public function addUnextendableMethod($unextendableMethod) - { - if (!$this->isExtendable($unextendableMethod)){ - return; - } - $this->unextendableMethods[] = $unextendableMethod; - } - - /** - * @param string $method - * @return bool - */ - public function isExtendable($method) - { - return !in_array($method, $this->unextendableMethods); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php deleted file mode 100644 index c74b483..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php +++ /dev/null @@ -1,198 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\Generator\Node; - -use Prophecy\Doubler\Generator\TypeHintReference; -use Prophecy\Exception\InvalidArgumentException; - -/** - * Method node. - * - * @author Konstantin Kudryashov - */ -class MethodNode -{ - private $name; - private $code; - private $visibility = 'public'; - private $static = false; - private $returnsReference = false; - private $returnType; - private $nullableReturnType = false; - - /** - * @var ArgumentNode[] - */ - private $arguments = array(); - - /** - * @var TypeHintReference - */ - private $typeHintReference; - - /** - * @param string $name - * @param string $code - */ - public function __construct($name, $code = null, TypeHintReference $typeHintReference = null) - { - $this->name = $name; - $this->code = $code; - $this->typeHintReference = $typeHintReference ?: new TypeHintReference(); - } - - public function getVisibility() - { - return $this->visibility; - } - - /** - * @param string $visibility - */ - public function setVisibility($visibility) - { - $visibility = strtolower($visibility); - - if (!in_array($visibility, array('public', 'private', 'protected'))) { - throw new InvalidArgumentException(sprintf( - '`%s` method visibility is not supported.', $visibility - )); - } - - $this->visibility = $visibility; - } - - public function isStatic() - { - return $this->static; - } - - public function setStatic($static = true) - { - $this->static = (bool) $static; - } - - public function returnsReference() - { - return $this->returnsReference; - } - - public function setReturnsReference() - { - $this->returnsReference = true; - } - - public function getName() - { - return $this->name; - } - - public function addArgument(ArgumentNode $argument) - { - $this->arguments[] = $argument; - } - - /** - * @return ArgumentNode[] - */ - public function getArguments() - { - return $this->arguments; - } - - public function hasReturnType() - { - return null !== $this->returnType; - } - - /** - * @param string $type - */ - public function setReturnType($type = null) - { - if ($type === '' || $type === null) { - $this->returnType = null; - return; - } - $typeMap = array( - 'double' => 'float', - 'real' => 'float', - 'boolean' => 'bool', - 'integer' => 'int', - ); - if (isset($typeMap[$type])) { - $type = $typeMap[$type]; - } - $this->returnType = $this->typeHintReference->isBuiltInReturnTypeHint($type) ? - $type : - '\\' . ltrim($type, '\\'); - } - - public function getReturnType() - { - return $this->returnType; - } - - /** - * @param bool $bool - */ - public function setNullableReturnType($bool = true) - { - $this->nullableReturnType = (bool) $bool; - } - - /** - * @return bool - */ - public function hasNullableReturnType() - { - return $this->nullableReturnType; - } - - /** - * @param string $code - */ - public function setCode($code) - { - $this->code = $code; - } - - public function getCode() - { - if ($this->returnsReference) - { - return "throw new \Prophecy\Exception\Doubler\ReturnByReferenceException('Returning by reference not supported', get_class(\$this), '{$this->name}');"; - } - - return (string) $this->code; - } - - public function useParentCode() - { - $this->code = sprintf( - 'return parent::%s(%s);', $this->getName(), implode(', ', - array_map(array($this, 'generateArgument'), $this->arguments) - ) - ); - } - - private function generateArgument(ArgumentNode $arg) - { - $argument = '$'.$arg->getName(); - - if ($arg->isVariadic()) { - $argument = '...'.$argument; - } - - return $argument; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php deleted file mode 100644 index d720b15..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php +++ /dev/null @@ -1,22 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler\Generator; - -/** - * Reflection interface. - * All reflected classes implement this interface. - * - * @author Konstantin Kudryashov - */ -interface ReflectionInterface -{ -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/TypeHintReference.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/TypeHintReference.php deleted file mode 100644 index ce95202..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/TypeHintReference.php +++ /dev/null @@ -1,46 +0,0 @@ -= 50400; - - case 'bool': - case 'float': - case 'int': - case 'string': - return PHP_VERSION_ID >= 70000; - - case 'iterable': - return PHP_VERSION_ID >= 70100; - - case 'object': - return PHP_VERSION_ID >= 70200; - - default: - return false; - } - } - - public function isBuiltInReturnTypeHint($type) - { - if ($type === 'void') { - return PHP_VERSION_ID >= 70100; - } - - return $this->isBuiltInParamTypeHint($type); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php deleted file mode 100644 index 8a99c4c..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php +++ /dev/null @@ -1,127 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler; - -use Prophecy\Exception\Doubler\DoubleException; -use Prophecy\Exception\Doubler\ClassNotFoundException; -use Prophecy\Exception\Doubler\InterfaceNotFoundException; -use ReflectionClass; - -/** - * Lazy double. - * Gives simple interface to describe double before creating it. - * - * @author Konstantin Kudryashov - */ -class LazyDouble -{ - private $doubler; - private $class; - private $interfaces = array(); - private $arguments = null; - private $double; - - /** - * Initializes lazy double. - * - * @param Doubler $doubler - */ - public function __construct(Doubler $doubler) - { - $this->doubler = $doubler; - } - - /** - * Tells doubler to use specific class as parent one for double. - * - * @param string|ReflectionClass $class - * - * @throws \Prophecy\Exception\Doubler\ClassNotFoundException - * @throws \Prophecy\Exception\Doubler\DoubleException - */ - public function setParentClass($class) - { - if (null !== $this->double) { - throw new DoubleException('Can not extend class with already instantiated double.'); - } - - if (!$class instanceof ReflectionClass) { - if (!class_exists($class)) { - throw new ClassNotFoundException(sprintf('Class %s not found.', $class), $class); - } - - $class = new ReflectionClass($class); - } - - $this->class = $class; - } - - /** - * Tells doubler to implement specific interface with double. - * - * @param string|ReflectionClass $interface - * - * @throws \Prophecy\Exception\Doubler\InterfaceNotFoundException - * @throws \Prophecy\Exception\Doubler\DoubleException - */ - public function addInterface($interface) - { - if (null !== $this->double) { - throw new DoubleException( - 'Can not implement interface with already instantiated double.' - ); - } - - if (!$interface instanceof ReflectionClass) { - if (!interface_exists($interface)) { - throw new InterfaceNotFoundException( - sprintf('Interface %s not found.', $interface), - $interface - ); - } - - $interface = new ReflectionClass($interface); - } - - $this->interfaces[] = $interface; - } - - /** - * Sets constructor arguments. - * - * @param array $arguments - */ - public function setArguments(array $arguments = null) - { - $this->arguments = $arguments; - } - - /** - * Creates double instance or returns already created one. - * - * @return DoubleInterface - */ - public function getInstance() - { - if (null === $this->double) { - if (null !== $this->arguments) { - return $this->double = $this->doubler->double( - $this->class, $this->interfaces, $this->arguments - ); - } - - $this->double = $this->doubler->double($this->class, $this->interfaces); - } - - return $this->double; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php deleted file mode 100644 index d67ec6a..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php +++ /dev/null @@ -1,52 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Doubler; - -use ReflectionClass; - -/** - * Name generator. - * Generates classname for double. - * - * @author Konstantin Kudryashov - */ -class NameGenerator -{ - private static $counter = 1; - - /** - * Generates name. - * - * @param ReflectionClass $class - * @param ReflectionClass[] $interfaces - * - * @return string - */ - public function name(ReflectionClass $class = null, array $interfaces) - { - $parts = array(); - - if (null !== $class) { - $parts[] = $class->getName(); - } else { - foreach ($interfaces as $interface) { - $parts[] = $interface->getShortName(); - } - } - - if (!count($parts)) { - $parts[] = 'stdClass'; - } - - return sprintf('Double\%s\P%d', implode('\\', $parts), self::$counter++); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php deleted file mode 100644 index 48ed225..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php +++ /dev/null @@ -1,40 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Call; - -use Prophecy\Exception\Prophecy\ObjectProphecyException; -use Prophecy\Prophecy\ObjectProphecy; - -class UnexpectedCallException extends ObjectProphecyException -{ - private $methodName; - private $arguments; - - public function __construct($message, ObjectProphecy $objectProphecy, - $methodName, array $arguments) - { - parent::__construct($message, $objectProphecy); - - $this->methodName = $methodName; - $this->arguments = $arguments; - } - - public function getMethodName() - { - return $this->methodName; - } - - public function getArguments() - { - return $this->arguments; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php deleted file mode 100644 index 822918a..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Doubler; - -use Prophecy\Doubler\Generator\Node\ClassNode; - -class ClassCreatorException extends \RuntimeException implements DoublerException -{ - private $node; - - public function __construct($message, ClassNode $node) - { - parent::__construct($message); - - $this->node = $node; - } - - public function getClassNode() - { - return $this->node; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php deleted file mode 100644 index 8fc53b8..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Doubler; - -use ReflectionClass; - -class ClassMirrorException extends \RuntimeException implements DoublerException -{ - private $class; - - public function __construct($message, ReflectionClass $class) - { - parent::__construct($message); - - $this->class = $class; - } - - public function getReflectedClass() - { - return $this->class; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php deleted file mode 100644 index 5bc826d..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php +++ /dev/null @@ -1,33 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Doubler; - -class ClassNotFoundException extends DoubleException -{ - private $classname; - - /** - * @param string $message - * @param string $classname - */ - public function __construct($message, $classname) - { - parent::__construct($message); - - $this->classname = $classname; - } - - public function getClassname() - { - return $this->classname; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php deleted file mode 100644 index 6642a58..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php +++ /dev/null @@ -1,18 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Doubler; - -use RuntimeException; - -class DoubleException extends RuntimeException implements DoublerException -{ -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php deleted file mode 100644 index 9d6be17..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php +++ /dev/null @@ -1,18 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Doubler; - -use Prophecy\Exception\Exception; - -interface DoublerException extends Exception -{ -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php deleted file mode 100644 index e344dea..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php +++ /dev/null @@ -1,20 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Doubler; - -class InterfaceNotFoundException extends ClassNotFoundException -{ - public function getInterfaceName() - { - return $this->getClassname(); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php deleted file mode 100644 index 56f47b1..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php +++ /dev/null @@ -1,41 +0,0 @@ -methodName = $methodName; - $this->className = $className; - } - - - /** - * @return string - */ - public function getMethodName() - { - return $this->methodName; - } - - /** - * @return string - */ - public function getClassName() - { - return $this->className; - } - - } diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php deleted file mode 100644 index a538349..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php +++ /dev/null @@ -1,60 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Doubler; - -class MethodNotFoundException extends DoubleException -{ - /** - * @var string|object - */ - private $classname; - - /** - * @var string - */ - private $methodName; - - /** - * @var array - */ - private $arguments; - - /** - * @param string $message - * @param string|object $classname - * @param string $methodName - * @param null|Argument\ArgumentsWildcard|array $arguments - */ - public function __construct($message, $classname, $methodName, $arguments = null) - { - parent::__construct($message); - - $this->classname = $classname; - $this->methodName = $methodName; - $this->arguments = $arguments; - } - - public function getClassname() - { - return $this->classname; - } - - public function getMethodName() - { - return $this->methodName; - } - - public function getArguments() - { - return $this->arguments; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php deleted file mode 100644 index 6303049..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php +++ /dev/null @@ -1,41 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Doubler; - -class ReturnByReferenceException extends DoubleException -{ - private $classname; - private $methodName; - - /** - * @param string $message - * @param string $classname - * @param string $methodName - */ - public function __construct($message, $classname, $methodName) - { - parent::__construct($message); - - $this->classname = $classname; - $this->methodName = $methodName; - } - - public function getClassname() - { - return $this->classname; - } - - public function getMethodName() - { - return $this->methodName; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php deleted file mode 100644 index ac9fe4d..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php +++ /dev/null @@ -1,26 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception; - -/** - * Core Prophecy exception interface. - * All Prophecy exceptions implement it. - * - * @author Konstantin Kudryashov - */ -interface Exception -{ - /** - * @return string - */ - public function getMessage(); -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php deleted file mode 100644 index bc91c69..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php +++ /dev/null @@ -1,16 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception; - -class InvalidArgumentException extends \InvalidArgumentException implements Exception -{ -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php deleted file mode 100644 index 44b598a..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php +++ /dev/null @@ -1,50 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prediction; - -use Prophecy\Prophecy\ObjectProphecy; - -class AggregateException extends \RuntimeException implements PredictionException -{ - private $exceptions = array(); - private $objectProphecy; - - public function append(PredictionException $exception) - { - $message = $exception->getMessage(); - $message = ' '.strtr($message, array("\n" => "\n "))."\n"; - - $this->message = rtrim($this->message.$message); - $this->exceptions[] = $exception; - } - - /** - * @return PredictionException[] - */ - public function getExceptions() - { - return $this->exceptions; - } - - public function setObjectProphecy(ObjectProphecy $objectProphecy) - { - $this->objectProphecy = $objectProphecy; - } - - /** - * @return ObjectProphecy - */ - public function getObjectProphecy() - { - return $this->objectProphecy; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php deleted file mode 100644 index bbbbc3d..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prediction; - -use RuntimeException; - -/** - * Basic failed prediction exception. - * Use it for custom prediction failures. - * - * @author Konstantin Kudryashov - */ -class FailedPredictionException extends RuntimeException implements PredictionException -{ -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php deleted file mode 100644 index 05ea4aa..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php +++ /dev/null @@ -1,18 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prediction; - -use Prophecy\Exception\Prophecy\MethodProphecyException; - -class NoCallsException extends MethodProphecyException implements PredictionException -{ -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php deleted file mode 100644 index 2596b1e..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php +++ /dev/null @@ -1,18 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prediction; - -use Prophecy\Exception\Exception; - -interface PredictionException extends Exception -{ -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php deleted file mode 100644 index 9d90543..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php +++ /dev/null @@ -1,31 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prediction; - -use Prophecy\Prophecy\MethodProphecy; - -class UnexpectedCallsCountException extends UnexpectedCallsException -{ - private $expectedCount; - - public function __construct($message, MethodProphecy $methodProphecy, $count, array $calls) - { - parent::__construct($message, $methodProphecy, $calls); - - $this->expectedCount = intval($count); - } - - public function getExpectedCount() - { - return $this->expectedCount; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php deleted file mode 100644 index 7a99c2d..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php +++ /dev/null @@ -1,32 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prediction; - -use Prophecy\Prophecy\MethodProphecy; -use Prophecy\Exception\Prophecy\MethodProphecyException; - -class UnexpectedCallsException extends MethodProphecyException implements PredictionException -{ - private $calls = array(); - - public function __construct($message, MethodProphecy $methodProphecy, array $calls) - { - parent::__construct($message, $methodProphecy); - - $this->calls = $calls; - } - - public function getCalls() - { - return $this->calls; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php deleted file mode 100644 index 1b03eaf..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php +++ /dev/null @@ -1,34 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prophecy; - -use Prophecy\Prophecy\MethodProphecy; - -class MethodProphecyException extends ObjectProphecyException -{ - private $methodProphecy; - - public function __construct($message, MethodProphecy $methodProphecy) - { - parent::__construct($message, $methodProphecy->getObjectProphecy()); - - $this->methodProphecy = $methodProphecy; - } - - /** - * @return MethodProphecy - */ - public function getMethodProphecy() - { - return $this->methodProphecy; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php deleted file mode 100644 index e345402..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php +++ /dev/null @@ -1,34 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prophecy; - -use Prophecy\Prophecy\ObjectProphecy; - -class ObjectProphecyException extends \RuntimeException implements ProphecyException -{ - private $objectProphecy; - - public function __construct($message, ObjectProphecy $objectProphecy) - { - parent::__construct($message); - - $this->objectProphecy = $objectProphecy; - } - - /** - * @return ObjectProphecy - */ - public function getObjectProphecy() - { - return $this->objectProphecy; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php deleted file mode 100644 index 9157332..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php +++ /dev/null @@ -1,18 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Exception\Prophecy; - -use Prophecy\Exception\Exception; - -interface ProphecyException extends Exception -{ -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php deleted file mode 100644 index 209821c..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php +++ /dev/null @@ -1,69 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\PhpDocumentor; - -use phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag; -use phpDocumentor\Reflection\DocBlock\Tags\Method; - -/** - * @author Théo FIDRY - * - * @internal - */ -final class ClassAndInterfaceTagRetriever implements MethodTagRetrieverInterface -{ - private $classRetriever; - - public function __construct(MethodTagRetrieverInterface $classRetriever = null) - { - if (null !== $classRetriever) { - $this->classRetriever = $classRetriever; - - return; - } - - $this->classRetriever = class_exists('phpDocumentor\Reflection\DocBlockFactory') && class_exists('phpDocumentor\Reflection\Types\ContextFactory') - ? new ClassTagRetriever() - : new LegacyClassTagRetriever() - ; - } - - /** - * @param \ReflectionClass $reflectionClass - * - * @return LegacyMethodTag[]|Method[] - */ - public function getTagList(\ReflectionClass $reflectionClass) - { - return array_merge( - $this->classRetriever->getTagList($reflectionClass), - $this->getInterfacesTagList($reflectionClass) - ); - } - - /** - * @param \ReflectionClass $reflectionClass - * - * @return LegacyMethodTag[]|Method[] - */ - private function getInterfacesTagList(\ReflectionClass $reflectionClass) - { - $interfaces = $reflectionClass->getInterfaces(); - $tagList = array(); - - foreach($interfaces as $interface) { - $tagList = array_merge($tagList, $this->classRetriever->getTagList($interface)); - } - - return $tagList; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php deleted file mode 100644 index 1d2da8f..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php +++ /dev/null @@ -1,52 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\PhpDocumentor; - -use phpDocumentor\Reflection\DocBlock\Tags\Method; -use phpDocumentor\Reflection\DocBlockFactory; -use phpDocumentor\Reflection\Types\ContextFactory; - -/** - * @author Théo FIDRY - * - * @internal - */ -final class ClassTagRetriever implements MethodTagRetrieverInterface -{ - private $docBlockFactory; - private $contextFactory; - - public function __construct() - { - $this->docBlockFactory = DocBlockFactory::createInstance(); - $this->contextFactory = new ContextFactory(); - } - - /** - * @param \ReflectionClass $reflectionClass - * - * @return Method[] - */ - public function getTagList(\ReflectionClass $reflectionClass) - { - try { - $phpdoc = $this->docBlockFactory->create( - $reflectionClass, - $this->contextFactory->createFromReflector($reflectionClass) - ); - - return $phpdoc->getTagsByName('method'); - } catch (\InvalidArgumentException $e) { - return array(); - } - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php deleted file mode 100644 index c0dec3d..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php +++ /dev/null @@ -1,35 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\PhpDocumentor; - -use phpDocumentor\Reflection\DocBlock; -use phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag; - -/** - * @author Théo FIDRY - * - * @internal - */ -final class LegacyClassTagRetriever implements MethodTagRetrieverInterface -{ - /** - * @param \ReflectionClass $reflectionClass - * - * @return LegacyMethodTag[] - */ - public function getTagList(\ReflectionClass $reflectionClass) - { - $phpdoc = new DocBlock($reflectionClass->getDocComment()); - - return $phpdoc->getTagsByName('method'); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php deleted file mode 100644 index d3989da..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php +++ /dev/null @@ -1,30 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\PhpDocumentor; - -use phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag; -use phpDocumentor\Reflection\DocBlock\Tags\Method; - -/** - * @author Théo FIDRY - * - * @internal - */ -interface MethodTagRetrieverInterface -{ - /** - * @param \ReflectionClass $reflectionClass - * - * @return LegacyMethodTag[]|Method[] - */ - public function getTagList(\ReflectionClass $reflectionClass); -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php deleted file mode 100644 index b478736..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php +++ /dev/null @@ -1,86 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prediction; - -use Prophecy\Call\Call; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; -use Prophecy\Argument\ArgumentsWildcard; -use Prophecy\Argument\Token\AnyValuesToken; -use Prophecy\Util\StringUtil; -use Prophecy\Exception\Prediction\NoCallsException; - -/** - * Call prediction. - * - * @author Konstantin Kudryashov - */ -class CallPrediction implements PredictionInterface -{ - private $util; - - /** - * Initializes prediction. - * - * @param StringUtil $util - */ - public function __construct(StringUtil $util = null) - { - $this->util = $util ?: new StringUtil; - } - - /** - * Tests that there was at least one call. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws \Prophecy\Exception\Prediction\NoCallsException - */ - public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) - { - if (count($calls)) { - return; - } - - $methodCalls = $object->findProphecyMethodCalls( - $method->getMethodName(), - new ArgumentsWildcard(array(new AnyValuesToken)) - ); - - if (count($methodCalls)) { - throw new NoCallsException(sprintf( - "No calls have been made that match:\n". - " %s->%s(%s)\n". - "but expected at least one.\n". - "Recorded `%s(...)` calls:\n%s", - - get_class($object->reveal()), - $method->getMethodName(), - $method->getArgumentsWildcard(), - $method->getMethodName(), - $this->util->stringifyCalls($methodCalls) - ), $method); - } - - throw new NoCallsException(sprintf( - "No calls have been made that match:\n". - " %s->%s(%s)\n". - "but expected at least one.", - - get_class($object->reveal()), - $method->getMethodName(), - $method->getArgumentsWildcard() - ), $method); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php deleted file mode 100644 index 31c6c57..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php +++ /dev/null @@ -1,107 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prediction; - -use Prophecy\Call\Call; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; -use Prophecy\Argument\ArgumentsWildcard; -use Prophecy\Argument\Token\AnyValuesToken; -use Prophecy\Util\StringUtil; -use Prophecy\Exception\Prediction\UnexpectedCallsCountException; - -/** - * Prediction interface. - * Predictions are logical test blocks, tied to `should...` keyword. - * - * @author Konstantin Kudryashov - */ -class CallTimesPrediction implements PredictionInterface -{ - private $times; - private $util; - - /** - * Initializes prediction. - * - * @param int $times - * @param StringUtil $util - */ - public function __construct($times, StringUtil $util = null) - { - $this->times = intval($times); - $this->util = $util ?: new StringUtil; - } - - /** - * Tests that there was exact amount of calls made. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws \Prophecy\Exception\Prediction\UnexpectedCallsCountException - */ - public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) - { - if ($this->times == count($calls)) { - return; - } - - $methodCalls = $object->findProphecyMethodCalls( - $method->getMethodName(), - new ArgumentsWildcard(array(new AnyValuesToken)) - ); - - if (count($calls)) { - $message = sprintf( - "Expected exactly %d calls that match:\n". - " %s->%s(%s)\n". - "but %d were made:\n%s", - - $this->times, - get_class($object->reveal()), - $method->getMethodName(), - $method->getArgumentsWildcard(), - count($calls), - $this->util->stringifyCalls($calls) - ); - } elseif (count($methodCalls)) { - $message = sprintf( - "Expected exactly %d calls that match:\n". - " %s->%s(%s)\n". - "but none were made.\n". - "Recorded `%s(...)` calls:\n%s", - - $this->times, - get_class($object->reveal()), - $method->getMethodName(), - $method->getArgumentsWildcard(), - $method->getMethodName(), - $this->util->stringifyCalls($methodCalls) - ); - } else { - $message = sprintf( - "Expected exactly %d calls that match:\n". - " %s->%s(%s)\n". - "but none were made.", - - $this->times, - get_class($object->reveal()), - $method->getMethodName(), - $method->getArgumentsWildcard() - ); - } - - throw new UnexpectedCallsCountException($message, $method, $this->times, $calls); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php deleted file mode 100644 index 44bc782..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php +++ /dev/null @@ -1,65 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prediction; - -use Prophecy\Call\Call; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; -use Prophecy\Exception\InvalidArgumentException; -use Closure; - -/** - * Callback prediction. - * - * @author Konstantin Kudryashov - */ -class CallbackPrediction implements PredictionInterface -{ - private $callback; - - /** - * Initializes callback prediction. - * - * @param callable $callback Custom callback - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function __construct($callback) - { - if (!is_callable($callback)) { - throw new InvalidArgumentException(sprintf( - 'Callable expected as an argument to CallbackPrediction, but got %s.', - gettype($callback) - )); - } - - $this->callback = $callback; - } - - /** - * Executes preset callback. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - */ - public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) - { - $callback = $this->callback; - - if ($callback instanceof Closure && method_exists('Closure', 'bind')) { - $callback = Closure::bind($callback, $object); - } - - call_user_func($callback, $calls, $object, $method); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php deleted file mode 100644 index 46ac5bf..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php +++ /dev/null @@ -1,68 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prediction; - -use Prophecy\Call\Call; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; -use Prophecy\Util\StringUtil; -use Prophecy\Exception\Prediction\UnexpectedCallsException; - -/** - * No calls prediction. - * - * @author Konstantin Kudryashov - */ -class NoCallsPrediction implements PredictionInterface -{ - private $util; - - /** - * Initializes prediction. - * - * @param null|StringUtil $util - */ - public function __construct(StringUtil $util = null) - { - $this->util = $util ?: new StringUtil; - } - - /** - * Tests that there were no calls made. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws \Prophecy\Exception\Prediction\UnexpectedCallsException - */ - public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) - { - if (!count($calls)) { - return; - } - - $verb = count($calls) === 1 ? 'was' : 'were'; - - throw new UnexpectedCallsException(sprintf( - "No calls expected that match:\n". - " %s->%s(%s)\n". - "but %d %s made:\n%s", - get_class($object->reveal()), - $method->getMethodName(), - $method->getArgumentsWildcard(), - count($calls), - $verb, - $this->util->stringifyCalls($calls) - ), $method, $calls); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php deleted file mode 100644 index f7fb06a..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php +++ /dev/null @@ -1,37 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prediction; - -use Prophecy\Call\Call; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; - -/** - * Prediction interface. - * Predictions are logical test blocks, tied to `should...` keyword. - * - * @author Konstantin Kudryashov - */ -interface PredictionInterface -{ - /** - * Tests that double fulfilled prediction. - * - * @param Call[] $calls - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws object - * @return void - */ - public function check(array $calls, ObjectProphecy $object, MethodProphecy $method); -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php deleted file mode 100644 index 5f406bf..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php +++ /dev/null @@ -1,66 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Promise; - -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; -use Prophecy\Exception\InvalidArgumentException; -use Closure; - -/** - * Callback promise. - * - * @author Konstantin Kudryashov - */ -class CallbackPromise implements PromiseInterface -{ - private $callback; - - /** - * Initializes callback promise. - * - * @param callable $callback Custom callback - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function __construct($callback) - { - if (!is_callable($callback)) { - throw new InvalidArgumentException(sprintf( - 'Callable expected as an argument to CallbackPromise, but got %s.', - gettype($callback) - )); - } - - $this->callback = $callback; - } - - /** - * Evaluates promise callback. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @return mixed - */ - public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) - { - $callback = $this->callback; - - if ($callback instanceof Closure && method_exists('Closure', 'bind')) { - $callback = Closure::bind($callback, $object); - } - - return call_user_func($callback, $args, $object, $method); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php deleted file mode 100644 index 382537b..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php +++ /dev/null @@ -1,35 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Promise; - -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; - -/** - * Promise interface. - * Promises are logical blocks, tied to `will...` keyword. - * - * @author Konstantin Kudryashov - */ -interface PromiseInterface -{ - /** - * Evaluates promise. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @return mixed - */ - public function execute(array $args, ObjectProphecy $object, MethodProphecy $method); -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php deleted file mode 100644 index 39bfeea..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php +++ /dev/null @@ -1,61 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Promise; - -use Prophecy\Exception\InvalidArgumentException; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; - -/** - * Return argument promise. - * - * @author Konstantin Kudryashov - */ -class ReturnArgumentPromise implements PromiseInterface -{ - /** - * @var int - */ - private $index; - - /** - * Initializes callback promise. - * - * @param int $index The zero-indexed number of the argument to return - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function __construct($index = 0) - { - if (!is_int($index) || $index < 0) { - throw new InvalidArgumentException(sprintf( - 'Zero-based index expected as argument to ReturnArgumentPromise, but got %s.', - $index - )); - } - $this->index = $index; - } - - /** - * Returns nth argument if has one, null otherwise. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @return null|mixed - */ - public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) - { - return count($args) > $this->index ? $args[$this->index] : null; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php deleted file mode 100644 index c7d5ac5..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php +++ /dev/null @@ -1,55 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Promise; - -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; - -/** - * Return promise. - * - * @author Konstantin Kudryashov - */ -class ReturnPromise implements PromiseInterface -{ - private $returnValues = array(); - - /** - * Initializes promise. - * - * @param array $returnValues Array of values - */ - public function __construct(array $returnValues) - { - $this->returnValues = $returnValues; - } - - /** - * Returns saved values one by one until last one, then continuously returns last value. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @return mixed - */ - public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) - { - $value = array_shift($this->returnValues); - - if (!count($this->returnValues)) { - $this->returnValues[] = $value; - } - - return $value; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php deleted file mode 100644 index 7250fa3..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php +++ /dev/null @@ -1,99 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Promise; - -use Doctrine\Instantiator\Instantiator; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\MethodProphecy; -use Prophecy\Exception\InvalidArgumentException; -use ReflectionClass; - -/** - * Throw promise. - * - * @author Konstantin Kudryashov - */ -class ThrowPromise implements PromiseInterface -{ - private $exception; - - /** - * @var \Doctrine\Instantiator\Instantiator - */ - private $instantiator; - - /** - * Initializes promise. - * - * @param string|\Exception|\Throwable $exception Exception class name or instance - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function __construct($exception) - { - if (is_string($exception)) { - if (!class_exists($exception) || !$this->isAValidThrowable($exception)) { - throw new InvalidArgumentException(sprintf( - 'Exception / Throwable class or instance expected as argument to ThrowPromise, but got %s.', - $exception - )); - } - } elseif (!$exception instanceof \Exception && !$exception instanceof \Throwable) { - throw new InvalidArgumentException(sprintf( - 'Exception / Throwable class or instance expected as argument to ThrowPromise, but got %s.', - is_object($exception) ? get_class($exception) : gettype($exception) - )); - } - - $this->exception = $exception; - } - - /** - * Throws predefined exception. - * - * @param array $args - * @param ObjectProphecy $object - * @param MethodProphecy $method - * - * @throws object - */ - public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) - { - if (is_string($this->exception)) { - $classname = $this->exception; - $reflection = new ReflectionClass($classname); - $constructor = $reflection->getConstructor(); - - if ($constructor->isPublic() && 0 == $constructor->getNumberOfRequiredParameters()) { - throw $reflection->newInstance(); - } - - if (!$this->instantiator) { - $this->instantiator = new Instantiator(); - } - - throw $this->instantiator->instantiate($classname); - } - - throw $this->exception; - } - - /** - * @param string $exception - * - * @return bool - */ - private function isAValidThrowable($exception) - { - return is_a($exception, 'Exception', true) || is_subclass_of($exception, 'Throwable', true); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php deleted file mode 100644 index 90df1ef..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php +++ /dev/null @@ -1,464 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prophecy; - -use Prophecy\Argument; -use Prophecy\Prophet; -use Prophecy\Promise; -use Prophecy\Prediction; -use Prophecy\Exception\Doubler\MethodNotFoundException; -use Prophecy\Exception\InvalidArgumentException; -use Prophecy\Exception\Prophecy\MethodProphecyException; - -/** - * Method prophecy. - * - * @author Konstantin Kudryashov - */ -class MethodProphecy -{ - private $objectProphecy; - private $methodName; - private $argumentsWildcard; - private $promise; - private $prediction; - private $checkedPredictions = array(); - private $bound = false; - private $voidReturnType = false; - - /** - * Initializes method prophecy. - * - * @param ObjectProphecy $objectProphecy - * @param string $methodName - * @param null|Argument\ArgumentsWildcard|array $arguments - * - * @throws \Prophecy\Exception\Doubler\MethodNotFoundException If method not found - */ - public function __construct(ObjectProphecy $objectProphecy, $methodName, $arguments = null) - { - $double = $objectProphecy->reveal(); - if (!method_exists($double, $methodName)) { - throw new MethodNotFoundException(sprintf( - 'Method `%s::%s()` is not defined.', get_class($double), $methodName - ), get_class($double), $methodName, $arguments); - } - - $this->objectProphecy = $objectProphecy; - $this->methodName = $methodName; - - $reflectedMethod = new \ReflectionMethod($double, $methodName); - if ($reflectedMethod->isFinal()) { - throw new MethodProphecyException(sprintf( - "Can not add prophecy for a method `%s::%s()`\n". - "as it is a final method.", - get_class($double), - $methodName - ), $this); - } - - if (null !== $arguments) { - $this->withArguments($arguments); - } - - if (version_compare(PHP_VERSION, '7.0', '>=') && true === $reflectedMethod->hasReturnType()) { - $type = (string) $reflectedMethod->getReturnType(); - - if ('void' === $type) { - $this->voidReturnType = true; - return; - } - - $this->will(function () use ($type) { - switch ($type) { - case 'string': return ''; - case 'float': return 0.0; - case 'int': return 0; - case 'bool': return false; - case 'array': return array(); - - case 'callable': - case 'Closure': - return function () {}; - - case 'Traversable': - case 'Generator': - // Remove eval() when minimum version >=5.5 - /** @var callable $generator */ - $generator = eval('return function () { yield; };'); - return $generator(); - - default: - $prophet = new Prophet; - return $prophet->prophesize($type)->reveal(); - } - }); - } - } - - /** - * Sets argument wildcard. - * - * @param array|Argument\ArgumentsWildcard $arguments - * - * @return $this - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function withArguments($arguments) - { - if (is_array($arguments)) { - $arguments = new Argument\ArgumentsWildcard($arguments); - } - - if (!$arguments instanceof Argument\ArgumentsWildcard) { - throw new InvalidArgumentException(sprintf( - "Either an array or an instance of ArgumentsWildcard expected as\n". - 'a `MethodProphecy::withArguments()` argument, but got %s.', - gettype($arguments) - )); - } - - $this->argumentsWildcard = $arguments; - - return $this; - } - - /** - * Sets custom promise to the prophecy. - * - * @param callable|Promise\PromiseInterface $promise - * - * @return $this - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function will($promise) - { - if (is_callable($promise)) { - $promise = new Promise\CallbackPromise($promise); - } - - if (!$promise instanceof Promise\PromiseInterface) { - throw new InvalidArgumentException(sprintf( - 'Expected callable or instance of PromiseInterface, but got %s.', - gettype($promise) - )); - } - - $this->bindToObjectProphecy(); - $this->promise = $promise; - - return $this; - } - - /** - * Sets return promise to the prophecy. - * - * @see \Prophecy\Promise\ReturnPromise - * - * @return $this - */ - public function willReturn() - { - if ($this->voidReturnType) { - throw new MethodProphecyException( - "The method \"$this->methodName\" has a void return type, and so cannot return anything", - $this - ); - } - - return $this->will(new Promise\ReturnPromise(func_get_args())); - } - - /** - * Sets return argument promise to the prophecy. - * - * @param int $index The zero-indexed number of the argument to return - * - * @see \Prophecy\Promise\ReturnArgumentPromise - * - * @return $this - */ - public function willReturnArgument($index = 0) - { - if ($this->voidReturnType) { - throw new MethodProphecyException("The method \"$this->methodName\" has a void return type", $this); - } - - return $this->will(new Promise\ReturnArgumentPromise($index)); - } - - /** - * Sets throw promise to the prophecy. - * - * @see \Prophecy\Promise\ThrowPromise - * - * @param string|\Exception $exception Exception class or instance - * - * @return $this - */ - public function willThrow($exception) - { - return $this->will(new Promise\ThrowPromise($exception)); - } - - /** - * Sets custom prediction to the prophecy. - * - * @param callable|Prediction\PredictionInterface $prediction - * - * @return $this - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function should($prediction) - { - if (is_callable($prediction)) { - $prediction = new Prediction\CallbackPrediction($prediction); - } - - if (!$prediction instanceof Prediction\PredictionInterface) { - throw new InvalidArgumentException(sprintf( - 'Expected callable or instance of PredictionInterface, but got %s.', - gettype($prediction) - )); - } - - $this->bindToObjectProphecy(); - $this->prediction = $prediction; - - return $this; - } - - /** - * Sets call prediction to the prophecy. - * - * @see \Prophecy\Prediction\CallPrediction - * - * @return $this - */ - public function shouldBeCalled() - { - return $this->should(new Prediction\CallPrediction); - } - - /** - * Sets no calls prediction to the prophecy. - * - * @see \Prophecy\Prediction\NoCallsPrediction - * - * @return $this - */ - public function shouldNotBeCalled() - { - return $this->should(new Prediction\NoCallsPrediction); - } - - /** - * Sets call times prediction to the prophecy. - * - * @see \Prophecy\Prediction\CallTimesPrediction - * - * @param $count - * - * @return $this - */ - public function shouldBeCalledTimes($count) - { - return $this->should(new Prediction\CallTimesPrediction($count)); - } - - /** - * Checks provided prediction immediately. - * - * @param callable|Prediction\PredictionInterface $prediction - * - * @return $this - * - * @throws \Prophecy\Exception\InvalidArgumentException - */ - public function shouldHave($prediction) - { - if (is_callable($prediction)) { - $prediction = new Prediction\CallbackPrediction($prediction); - } - - if (!$prediction instanceof Prediction\PredictionInterface) { - throw new InvalidArgumentException(sprintf( - 'Expected callable or instance of PredictionInterface, but got %s.', - gettype($prediction) - )); - } - - if (null === $this->promise && !$this->voidReturnType) { - $this->willReturn(); - } - - $calls = $this->getObjectProphecy()->findProphecyMethodCalls( - $this->getMethodName(), - $this->getArgumentsWildcard() - ); - - try { - $prediction->check($calls, $this->getObjectProphecy(), $this); - $this->checkedPredictions[] = $prediction; - } catch (\Exception $e) { - $this->checkedPredictions[] = $prediction; - - throw $e; - } - - return $this; - } - - /** - * Checks call prediction. - * - * @see \Prophecy\Prediction\CallPrediction - * - * @return $this - */ - public function shouldHaveBeenCalled() - { - return $this->shouldHave(new Prediction\CallPrediction); - } - - /** - * Checks no calls prediction. - * - * @see \Prophecy\Prediction\NoCallsPrediction - * - * @return $this - */ - public function shouldNotHaveBeenCalled() - { - return $this->shouldHave(new Prediction\NoCallsPrediction); - } - - /** - * Checks no calls prediction. - * - * @see \Prophecy\Prediction\NoCallsPrediction - * @deprecated - * - * @return $this - */ - public function shouldNotBeenCalled() - { - return $this->shouldNotHaveBeenCalled(); - } - - /** - * Checks call times prediction. - * - * @see \Prophecy\Prediction\CallTimesPrediction - * - * @param int $count - * - * @return $this - */ - public function shouldHaveBeenCalledTimes($count) - { - return $this->shouldHave(new Prediction\CallTimesPrediction($count)); - } - - /** - * Checks currently registered [with should(...)] prediction. - */ - public function checkPrediction() - { - if (null === $this->prediction) { - return; - } - - $this->shouldHave($this->prediction); - } - - /** - * Returns currently registered promise. - * - * @return null|Promise\PromiseInterface - */ - public function getPromise() - { - return $this->promise; - } - - /** - * Returns currently registered prediction. - * - * @return null|Prediction\PredictionInterface - */ - public function getPrediction() - { - return $this->prediction; - } - - /** - * Returns predictions that were checked on this object. - * - * @return Prediction\PredictionInterface[] - */ - public function getCheckedPredictions() - { - return $this->checkedPredictions; - } - - /** - * Returns object prophecy this method prophecy is tied to. - * - * @return ObjectProphecy - */ - public function getObjectProphecy() - { - return $this->objectProphecy; - } - - /** - * Returns method name. - * - * @return string - */ - public function getMethodName() - { - return $this->methodName; - } - - /** - * Returns arguments wildcard. - * - * @return Argument\ArgumentsWildcard - */ - public function getArgumentsWildcard() - { - return $this->argumentsWildcard; - } - - /** - * @return bool - */ - public function hasReturnVoid() - { - return $this->voidReturnType; - } - - private function bindToObjectProphecy() - { - if ($this->bound) { - return; - } - - $this->getObjectProphecy()->addMethodProphecy($this); - $this->bound = true; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php deleted file mode 100644 index 8d8f8a1..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php +++ /dev/null @@ -1,281 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prophecy; - -use SebastianBergmann\Comparator\ComparisonFailure; -use Prophecy\Comparator\Factory as ComparatorFactory; -use Prophecy\Call\Call; -use Prophecy\Doubler\LazyDouble; -use Prophecy\Argument\ArgumentsWildcard; -use Prophecy\Call\CallCenter; -use Prophecy\Exception\Prophecy\ObjectProphecyException; -use Prophecy\Exception\Prophecy\MethodProphecyException; -use Prophecy\Exception\Prediction\AggregateException; -use Prophecy\Exception\Prediction\PredictionException; - -/** - * Object prophecy. - * - * @author Konstantin Kudryashov - */ -class ObjectProphecy implements ProphecyInterface -{ - private $lazyDouble; - private $callCenter; - private $revealer; - private $comparatorFactory; - - /** - * @var MethodProphecy[][] - */ - private $methodProphecies = array(); - - /** - * Initializes object prophecy. - * - * @param LazyDouble $lazyDouble - * @param CallCenter $callCenter - * @param RevealerInterface $revealer - * @param ComparatorFactory $comparatorFactory - */ - public function __construct( - LazyDouble $lazyDouble, - CallCenter $callCenter = null, - RevealerInterface $revealer = null, - ComparatorFactory $comparatorFactory = null - ) { - $this->lazyDouble = $lazyDouble; - $this->callCenter = $callCenter ?: new CallCenter; - $this->revealer = $revealer ?: new Revealer; - - $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); - } - - /** - * Forces double to extend specific class. - * - * @param string $class - * - * @return $this - */ - public function willExtend($class) - { - $this->lazyDouble->setParentClass($class); - - return $this; - } - - /** - * Forces double to implement specific interface. - * - * @param string $interface - * - * @return $this - */ - public function willImplement($interface) - { - $this->lazyDouble->addInterface($interface); - - return $this; - } - - /** - * Sets constructor arguments. - * - * @param array $arguments - * - * @return $this - */ - public function willBeConstructedWith(array $arguments = null) - { - $this->lazyDouble->setArguments($arguments); - - return $this; - } - - /** - * Reveals double. - * - * @return object - * - * @throws \Prophecy\Exception\Prophecy\ObjectProphecyException If double doesn't implement needed interface - */ - public function reveal() - { - $double = $this->lazyDouble->getInstance(); - - if (null === $double || !$double instanceof ProphecySubjectInterface) { - throw new ObjectProphecyException( - "Generated double must implement ProphecySubjectInterface, but it does not.\n". - 'It seems you have wrongly configured doubler without required ClassPatch.', - $this - ); - } - - $double->setProphecy($this); - - return $double; - } - - /** - * Adds method prophecy to object prophecy. - * - * @param MethodProphecy $methodProphecy - * - * @throws \Prophecy\Exception\Prophecy\MethodProphecyException If method prophecy doesn't - * have arguments wildcard - */ - public function addMethodProphecy(MethodProphecy $methodProphecy) - { - $argumentsWildcard = $methodProphecy->getArgumentsWildcard(); - if (null === $argumentsWildcard) { - throw new MethodProphecyException(sprintf( - "Can not add prophecy for a method `%s::%s()`\n". - "as you did not specify arguments wildcard for it.", - get_class($this->reveal()), - $methodProphecy->getMethodName() - ), $methodProphecy); - } - - $methodName = $methodProphecy->getMethodName(); - - if (!isset($this->methodProphecies[$methodName])) { - $this->methodProphecies[$methodName] = array(); - } - - $this->methodProphecies[$methodName][] = $methodProphecy; - } - - /** - * Returns either all or related to single method prophecies. - * - * @param null|string $methodName - * - * @return MethodProphecy[] - */ - public function getMethodProphecies($methodName = null) - { - if (null === $methodName) { - return $this->methodProphecies; - } - - if (!isset($this->methodProphecies[$methodName])) { - return array(); - } - - return $this->methodProphecies[$methodName]; - } - - /** - * Makes specific method call. - * - * @param string $methodName - * @param array $arguments - * - * @return mixed - */ - public function makeProphecyMethodCall($methodName, array $arguments) - { - $arguments = $this->revealer->reveal($arguments); - $return = $this->callCenter->makeCall($this, $methodName, $arguments); - - return $this->revealer->reveal($return); - } - - /** - * Finds calls by method name & arguments wildcard. - * - * @param string $methodName - * @param ArgumentsWildcard $wildcard - * - * @return Call[] - */ - public function findProphecyMethodCalls($methodName, ArgumentsWildcard $wildcard) - { - return $this->callCenter->findCalls($methodName, $wildcard); - } - - /** - * Checks that registered method predictions do not fail. - * - * @throws \Prophecy\Exception\Prediction\AggregateException If any of registered predictions fail - */ - public function checkProphecyMethodsPredictions() - { - $exception = new AggregateException(sprintf("%s:\n", get_class($this->reveal()))); - $exception->setObjectProphecy($this); - - foreach ($this->methodProphecies as $prophecies) { - foreach ($prophecies as $prophecy) { - try { - $prophecy->checkPrediction(); - } catch (PredictionException $e) { - $exception->append($e); - } - } - } - - if (count($exception->getExceptions())) { - throw $exception; - } - } - - /** - * Creates new method prophecy using specified method name and arguments. - * - * @param string $methodName - * @param array $arguments - * - * @return MethodProphecy - */ - public function __call($methodName, array $arguments) - { - $arguments = new ArgumentsWildcard($this->revealer->reveal($arguments)); - - foreach ($this->getMethodProphecies($methodName) as $prophecy) { - $argumentsWildcard = $prophecy->getArgumentsWildcard(); - $comparator = $this->comparatorFactory->getComparatorFor( - $argumentsWildcard, $arguments - ); - - try { - $comparator->assertEquals($argumentsWildcard, $arguments); - return $prophecy; - } catch (ComparisonFailure $failure) {} - } - - return new MethodProphecy($this, $methodName, $arguments); - } - - /** - * Tries to get property value from double. - * - * @param string $name - * - * @return mixed - */ - public function __get($name) - { - return $this->reveal()->$name; - } - - /** - * Tries to set property value to double. - * - * @param string $name - * @param mixed $value - */ - public function __set($name, $value) - { - $this->reveal()->$name = $this->revealer->reveal($value); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php deleted file mode 100644 index 462f15a..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php +++ /dev/null @@ -1,27 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prophecy; - -/** - * Core Prophecy interface. - * - * @author Konstantin Kudryashov - */ -interface ProphecyInterface -{ - /** - * Reveals prophecy object (double) . - * - * @return object - */ - public function reveal(); -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php deleted file mode 100644 index 2d83958..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php +++ /dev/null @@ -1,34 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prophecy; - -/** - * Controllable doubles interface. - * - * @author Konstantin Kudryashov - */ -interface ProphecySubjectInterface -{ - /** - * Sets subject prophecy. - * - * @param ProphecyInterface $prophecy - */ - public function setProphecy(ProphecyInterface $prophecy); - - /** - * Returns subject prophecy. - * - * @return ProphecyInterface - */ - public function getProphecy(); -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php deleted file mode 100644 index 60ecdac..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php +++ /dev/null @@ -1,44 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prophecy; - -/** - * Basic prophecies revealer. - * - * @author Konstantin Kudryashov - */ -class Revealer implements RevealerInterface -{ - /** - * Unwraps value(s). - * - * @param mixed $value - * - * @return mixed - */ - public function reveal($value) - { - if (is_array($value)) { - return array_map(array($this, __FUNCTION__), $value); - } - - if (!is_object($value)) { - return $value; - } - - if ($value instanceof ProphecyInterface) { - $value = $value->reveal(); - } - - return $value; - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php deleted file mode 100644 index ffc82bb..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php +++ /dev/null @@ -1,29 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Prophecy; - -/** - * Prophecies revealer interface. - * - * @author Konstantin Kudryashov - */ -interface RevealerInterface -{ - /** - * Unwraps value(s). - * - * @param mixed $value - * - * @return mixed - */ - public function reveal($value); -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophet.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophet.php deleted file mode 100644 index ac64923..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Prophet.php +++ /dev/null @@ -1,134 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy; - -use Prophecy\Doubler\Doubler; -use Prophecy\Doubler\LazyDouble; -use Prophecy\Doubler\ClassPatch; -use Prophecy\Prophecy\ObjectProphecy; -use Prophecy\Prophecy\RevealerInterface; -use Prophecy\Prophecy\Revealer; -use Prophecy\Call\CallCenter; -use Prophecy\Util\StringUtil; -use Prophecy\Exception\Prediction\PredictionException; -use Prophecy\Exception\Prediction\AggregateException; - -/** - * Prophet creates prophecies. - * - * @author Konstantin Kudryashov - */ -class Prophet -{ - private $doubler; - private $revealer; - private $util; - - /** - * @var ObjectProphecy[] - */ - private $prophecies = array(); - - /** - * Initializes Prophet. - * - * @param null|Doubler $doubler - * @param null|RevealerInterface $revealer - * @param null|StringUtil $util - */ - public function __construct(Doubler $doubler = null, RevealerInterface $revealer = null, - StringUtil $util = null) - { - if (null === $doubler) { - $doubler = new Doubler; - $doubler->registerClassPatch(new ClassPatch\SplFileInfoPatch); - $doubler->registerClassPatch(new ClassPatch\TraversablePatch); - $doubler->registerClassPatch(new ClassPatch\DisableConstructorPatch); - $doubler->registerClassPatch(new ClassPatch\ProphecySubjectPatch); - $doubler->registerClassPatch(new ClassPatch\ReflectionClassNewInstancePatch); - $doubler->registerClassPatch(new ClassPatch\HhvmExceptionPatch()); - $doubler->registerClassPatch(new ClassPatch\MagicCallPatch); - $doubler->registerClassPatch(new ClassPatch\KeywordPatch); - } - - $this->doubler = $doubler; - $this->revealer = $revealer ?: new Revealer; - $this->util = $util ?: new StringUtil; - } - - /** - * Creates new object prophecy. - * - * @param null|string $classOrInterface Class or interface name - * - * @return ObjectProphecy - */ - public function prophesize($classOrInterface = null) - { - $this->prophecies[] = $prophecy = new ObjectProphecy( - new LazyDouble($this->doubler), - new CallCenter($this->util), - $this->revealer - ); - - if ($classOrInterface && class_exists($classOrInterface)) { - return $prophecy->willExtend($classOrInterface); - } - - if ($classOrInterface && interface_exists($classOrInterface)) { - return $prophecy->willImplement($classOrInterface); - } - - return $prophecy; - } - - /** - * Returns all created object prophecies. - * - * @return ObjectProphecy[] - */ - public function getProphecies() - { - return $this->prophecies; - } - - /** - * Returns Doubler instance assigned to this Prophet. - * - * @return Doubler - */ - public function getDoubler() - { - return $this->doubler; - } - - /** - * Checks all predictions defined by prophecies of this Prophet. - * - * @throws Exception\Prediction\AggregateException If any prediction fails - */ - public function checkPredictions() - { - $exception = new AggregateException("Some predictions failed:\n"); - foreach ($this->prophecies as $prophecy) { - try { - $prophecy->checkProphecyMethodsPredictions(); - } catch (PredictionException $e) { - $exception->append($e); - } - } - - if (count($exception->getExceptions())) { - throw $exception; - } - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php deleted file mode 100644 index 50dd3f3..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php +++ /dev/null @@ -1,212 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * This class is a modification from sebastianbergmann/exporter - * @see https://github.com/sebastianbergmann/exporter - */ -class ExportUtil -{ - /** - * Exports a value as a string - * - * The output of this method is similar to the output of print_r(), but - * improved in various aspects: - * - * - NULL is rendered as "null" (instead of "") - * - TRUE is rendered as "true" (instead of "1") - * - FALSE is rendered as "false" (instead of "") - * - Strings are always quoted with single quotes - * - Carriage returns and newlines are normalized to \n - * - Recursion and repeated rendering is treated properly - * - * @param mixed $value - * @param int $indentation The indentation level of the 2nd+ line - * @return string - */ - public static function export($value, $indentation = 0) - { - return self::recursiveExport($value, $indentation); - } - - /** - * Converts an object to an array containing all of its private, protected - * and public properties. - * - * @param mixed $value - * @return array - */ - public static function toArray($value) - { - if (!is_object($value)) { - return (array) $value; - } - - $array = array(); - - foreach ((array) $value as $key => $val) { - // properties are transformed to keys in the following way: - // private $property => "\0Classname\0property" - // protected $property => "\0*\0property" - // public $property => "property" - if (preg_match('/^\0.+\0(.+)$/', $key, $matches)) { - $key = $matches[1]; - } - - // See https://github.com/php/php-src/commit/5721132 - if ($key === "\0gcdata") { - continue; - } - - $array[$key] = $val; - } - - // Some internal classes like SplObjectStorage don't work with the - // above (fast) mechanism nor with reflection in Zend. - // Format the output similarly to print_r() in this case - if ($value instanceof \SplObjectStorage) { - // However, the fast method does work in HHVM, and exposes the - // internal implementation. Hide it again. - if (property_exists('\SplObjectStorage', '__storage')) { - unset($array['__storage']); - } elseif (property_exists('\SplObjectStorage', 'storage')) { - unset($array['storage']); - } - - if (property_exists('\SplObjectStorage', '__key')) { - unset($array['__key']); - } - - foreach ($value as $key => $val) { - $array[spl_object_hash($val)] = array( - 'obj' => $val, - 'inf' => $value->getInfo(), - ); - } - } - - return $array; - } - - /** - * Recursive implementation of export - * - * @param mixed $value The value to export - * @param int $indentation The indentation level of the 2nd+ line - * @param \SebastianBergmann\RecursionContext\Context $processed Previously processed objects - * @return string - * @see SebastianBergmann\Exporter\Exporter::export - */ - protected static function recursiveExport(&$value, $indentation, $processed = null) - { - if ($value === null) { - return 'null'; - } - - if ($value === true) { - return 'true'; - } - - if ($value === false) { - return 'false'; - } - - if (is_float($value) && floatval(intval($value)) === $value) { - return "$value.0"; - } - - if (is_resource($value)) { - return sprintf( - 'resource(%d) of type (%s)', - $value, - get_resource_type($value) - ); - } - - if (is_string($value)) { - // Match for most non printable chars somewhat taking multibyte chars into account - if (preg_match('/[^\x09-\x0d\x20-\xff]/', $value)) { - return 'Binary String: 0x' . bin2hex($value); - } - - return "'" . - str_replace(array("\r\n", "\n\r", "\r"), array("\n", "\n", "\n"), $value) . - "'"; - } - - $whitespace = str_repeat(' ', 4 * $indentation); - - if (!$processed) { - $processed = new Context; - } - - if (is_array($value)) { - if (($key = $processed->contains($value)) !== false) { - return 'Array &' . $key; - } - - $array = $value; - $key = $processed->add($value); - $values = ''; - - if (count($array) > 0) { - foreach ($array as $k => $v) { - $values .= sprintf( - '%s %s => %s' . "\n", - $whitespace, - self::recursiveExport($k, $indentation), - self::recursiveExport($value[$k], $indentation + 1, $processed) - ); - } - - $values = "\n" . $values . $whitespace; - } - - return sprintf('Array &%s (%s)', $key, $values); - } - - if (is_object($value)) { - $class = get_class($value); - - if ($value instanceof ProphecyInterface) { - return sprintf('%s Object (*Prophecy*)', $class); - } elseif ($hash = $processed->contains($value)) { - return sprintf('%s:%s Object', $class, $hash); - } - - $hash = $processed->add($value); - $values = ''; - $array = self::toArray($value); - - if (count($array) > 0) { - foreach ($array as $k => $v) { - $values .= sprintf( - '%s %s => %s' . "\n", - $whitespace, - self::recursiveExport($k, $indentation), - self::recursiveExport($v, $indentation + 1, $processed) - ); - } - - $values = "\n" . $values . $whitespace; - } - - return sprintf('%s:%s Object (%s)', $class, $hash, $values); - } - - return var_export($value, true); - } -} diff --git a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php b/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php deleted file mode 100644 index bb90156..0000000 --- a/application/modules/gitlist/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php +++ /dev/null @@ -1,89 +0,0 @@ - - * Marcello Duarte - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Prophecy\Util; - -use Prophecy\Call\Call; - -/** - * String utility. - * - * @author Konstantin Kudryashov - */ -class StringUtil -{ - /** - * Stringifies any provided value. - * - * @param mixed $value - * @param boolean $exportObject - * - * @return string - */ - public function stringify($value, $exportObject = true) - { - if (is_array($value)) { - if (range(0, count($value) - 1) === array_keys($value)) { - return '['.implode(', ', array_map(array($this, __FUNCTION__), $value)).']'; - } - - $stringify = array($this, __FUNCTION__); - - return '['.implode(', ', array_map(function ($item, $key) use ($stringify) { - return (is_integer($key) ? $key : '"'.$key.'"'). - ' => '.call_user_func($stringify, $item); - }, $value, array_keys($value))).']'; - } - if (is_resource($value)) { - return get_resource_type($value).':'.$value; - } - if (is_object($value)) { - return $exportObject ? ExportUtil::export($value) : sprintf('%s:%s', get_class($value), spl_object_hash($value)); - } - if (true === $value || false === $value) { - return $value ? 'true' : 'false'; - } - if (is_string($value)) { - $str = sprintf('"%s"', str_replace("\n", '\\n', $value)); - - if (50 <= strlen($str)) { - return substr($str, 0, 50).'"...'; - } - - return $str; - } - if (null === $value) { - return 'null'; - } - - return (string) $value; - } - - /** - * Stringifies provided array of calls. - * - * @param Call[] $calls Array of Call instances - * - * @return string - */ - public function stringifyCalls(array $calls) - { - $self = $this; - - return implode(PHP_EOL, array_map(function (Call $call) use ($self) { - return sprintf(' - %s(%s) @ %s', - $call->getMethodName(), - implode(', ', array_map(array($self, 'stringify'), $call->getArguments())), - str_replace(GETCWD().DIRECTORY_SEPARATOR, '', $call->getCallPlace()) - ); - }, $calls)); - } -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/CONTRIBUTING.md b/application/modules/gitlist/vendor/phpunit/php-code-coverage/CONTRIBUTING.md deleted file mode 100644 index 40dbc25..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/CONTRIBUTING.md +++ /dev/null @@ -1,5 +0,0 @@ -Pull Requests for bug fixes should be made against the current release branch (2.0). - -Pull Requests for new features should be made against master. - -For further notes please refer to [https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md](https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md) diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md b/application/modules/gitlist/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md deleted file mode 100644 index 353b6f6..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md +++ /dev/null @@ -1,56 +0,0 @@ -# Changes in PHP_CodeCoverage 2.2 - -All notable changes of the PHP_CodeCoverage 2.2 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. - -## [2.2.4] - 2015-10-06 - -### Fixed - -* Fixed [#391](https://github.com/sebastianbergmann/php-code-coverage/pull/391): Missing `` tag - -## [2.2.3] - 2015-09-14 - -### Fixed - -* Fixed [#368](https://github.com/sebastianbergmann/php-code-coverage/pull/368): Blacklists and whitelists are not merged when merging data sets -* Fixed [#370](https://github.com/sebastianbergmann/php-code-coverage/issues/370): Confusing statistics for source file that declares a class without methods -* Fixed [#372](https://github.com/sebastianbergmann/php-code-coverage/pull/372): Nested classes and functions are not handled correctly -* Fixed [#382](https://github.com/sebastianbergmann/php-code-coverage/issues/382): Crap4J report generates incorrect XML logfile - -## [2.2.2] - 2015-08-04 - -### Added - -* Reintroduced the `PHP_CodeCoverage_Driver_HHVM` driver as an extension of `PHP_CodeCoverage_Driver_Xdebug` that does not use `xdebug_start_code_coverage()` with options not supported by HHVM - -### Changed - -* Bumped required version of `sebastian/environment` to 1.3.2 for [#365](https://github.com/sebastianbergmann/php-code-coverage/issues/365) - -## [2.2.1] - 2015-08-02 - -### Changed - -* Bumped required version of `sebastian/environment` to 1.3.1 for [#365](https://github.com/sebastianbergmann/php-code-coverage/issues/365) - -## [2.2.0] - 2015-08-01 - -### Added - -* Added a driver for PHPDBG (requires PHP 7) -* Added `PHP_CodeCoverage::setDisableIgnoredLines()` to disable the ignoring of lines using annotations such as `@codeCoverageIgnore` - -### Changed - -* Annotating a method with `@deprecated` now has the same effect as annotating it with `@codeCoverageIgnore` - -### Removed - -* The dedicated driver for HHVM, `PHP_CodeCoverage_Driver_HHVM` has been removed - -[2.2.4]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.3...2.2.4 -[2.2.3]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.2...2.2.3 -[2.2.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.1...2.2.2 -[2.2.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.0...2.2.1 -[2.2.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.1...2.2.0 - diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/LICENSE b/application/modules/gitlist/vendor/phpunit/php-code-coverage/LICENSE deleted file mode 100644 index fcfa37e..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/LICENSE +++ /dev/null @@ -1,33 +0,0 @@ -PHP_CodeCoverage - -Copyright (c) 2009-2015, Sebastian Bergmann . -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of Sebastian Bergmann nor the names of his - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/README.md b/application/modules/gitlist/vendor/phpunit/php-code-coverage/README.md deleted file mode 100644 index 4411d7f..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/README.md +++ /dev/null @@ -1,50 +0,0 @@ -[![Latest Stable Version](https://poser.pugx.org/phpunit/php-code-coverage/v/stable.png)](https://packagist.org/packages/phpunit/php-code-coverage) -[![Build Status](https://travis-ci.org/sebastianbergmann/php-code-coverage.svg?branch=master)](https://travis-ci.org/sebastianbergmann/php-code-coverage) - -# PHP_CodeCoverage - -**PHP_CodeCoverage** is a library that provides collection, processing, and rendering functionality for PHP code coverage information. - -## Requirements - -PHP 5.3.3 is required but using the latest version of PHP is highly recommended - -### PHP 5 - -[Xdebug](http://xdebug.org/) is the only source of raw code coverage data supported for PHP 5. Version 2.1.3 of Xdebug is required but using the latest version is highly recommended. - -### PHP 7 - -[phpdbg](http://phpdbg.com/docs) is currently the only source of raw code coverage data supported for PHP 7. Once Xdebug has been updated for PHP 7 it, too, will be supported. - -### HHVM - -A version of HHVM that implements the Xdebug API for code coverage (`xdebug_*_code_coverage()`) is required. - -## Installation - -To add PHP_CodeCoverage as a local, per-project dependency to your project, simply add a dependency on `phpunit/php-code-coverage` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on PHP_CodeCoverage 2.0: - - { - "require": { - "phpunit/php-code-coverage": "^2" - } - } - -## Using the PHP_CodeCoverage API - -```php -start(''); - -// ... - -$coverage->stop(); - -$writer = new PHP_CodeCoverage_Report_Clover; -$writer->process($coverage, '/tmp/clover.xml'); - -$writer = new PHP_CodeCoverage_Report_HTML; -$writer->process($coverage, '/tmp/code-coverage-report'); -``` diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/build.xml b/application/modules/gitlist/vendor/phpunit/php-code-coverage/build.xml deleted file mode 100644 index c335d15..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/build.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/build/travis-ci.xml b/application/modules/gitlist/vendor/phpunit/php-code-coverage/build/travis-ci.xml deleted file mode 100644 index 15e879f..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/build/travis-ci.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - ../tests/PHP - - - - - - - - - - ../src - - - diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/scripts/auto_append.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/scripts/auto_append.php deleted file mode 100644 index 6cd768d..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/scripts/auto_append.php +++ /dev/null @@ -1,5 +0,0 @@ -stop(); - -$writer = new PHP_CodeCoverage_Report_HTML; -$writer->process($coverage, '/tmp/coverage'); diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/scripts/auto_prepend.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/scripts/auto_prepend.php deleted file mode 100644 index 7a8887a..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/scripts/auto_prepend.php +++ /dev/null @@ -1,10 +0,0 @@ -filter(); - -$filter->addFileToBlacklist(__FILE__); -$filter->addFileToBlacklist(dirname(__FILE__) . '/auto_append.php'); - -$coverage->start($_SERVER['SCRIPT_FILENAME']); diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage.php deleted file mode 100644 index 88326f0..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage.php +++ /dev/null @@ -1,920 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use SebastianBergmann\Environment\Runtime; - -/** - * Provides collection functionality for PHP code coverage information. - * - * @since Class available since Release 1.0.0 - */ -class PHP_CodeCoverage -{ - /** - * @var PHP_CodeCoverage_Driver - */ - private $driver; - - /** - * @var PHP_CodeCoverage_Filter - */ - private $filter; - - /** - * @var bool - */ - private $cacheTokens = false; - - /** - * @var bool - */ - private $checkForUnintentionallyCoveredCode = false; - - /** - * @var bool - */ - private $forceCoversAnnotation = false; - - /** - * @var bool - */ - private $mapTestClassNameToCoveredClassName = false; - - /** - * @var bool - */ - private $addUncoveredFilesFromWhitelist = true; - - /** - * @var bool - */ - private $processUncoveredFilesFromWhitelist = false; - - /** - * @var mixed - */ - private $currentId; - - /** - * Code coverage data. - * - * @var array - */ - private $data = array(); - - /** - * @var array - */ - private $ignoredLines = array(); - - /** - * @var bool - */ - private $disableIgnoredLines = false; - - /** - * Test data. - * - * @var array - */ - private $tests = array(); - - /** - * Constructor. - * - * @param PHP_CodeCoverage_Driver $driver - * @param PHP_CodeCoverage_Filter $filter - * @throws PHP_CodeCoverage_Exception - */ - public function __construct(PHP_CodeCoverage_Driver $driver = null, PHP_CodeCoverage_Filter $filter = null) - { - if ($driver === null) { - $driver = $this->selectDriver(); - } - - if ($filter === null) { - $filter = new PHP_CodeCoverage_Filter; - } - - $this->driver = $driver; - $this->filter = $filter; - } - - /** - * Returns the PHP_CodeCoverage_Report_Node_* object graph - * for this PHP_CodeCoverage object. - * - * @return PHP_CodeCoverage_Report_Node_Directory - * @since Method available since Release 1.1.0 - */ - public function getReport() - { - $factory = new PHP_CodeCoverage_Report_Factory; - - return $factory->create($this); - } - - /** - * Clears collected code coverage data. - */ - public function clear() - { - $this->currentId = null; - $this->data = array(); - $this->tests = array(); - } - - /** - * Returns the PHP_CodeCoverage_Filter used. - * - * @return PHP_CodeCoverage_Filter - */ - public function filter() - { - return $this->filter; - } - - /** - * Returns the collected code coverage data. - * Set $raw = true to bypass all filters. - * - * @param bool $raw - * @return array - * @since Method available since Release 1.1.0 - */ - public function getData($raw = false) - { - if (!$raw && $this->addUncoveredFilesFromWhitelist) { - $this->addUncoveredFilesFromWhitelist(); - } - - // We need to apply the blacklist filter a second time - // when no whitelist is used. - if (!$raw && !$this->filter->hasWhitelist()) { - $this->applyListsFilter($this->data); - } - - return $this->data; - } - - /** - * Sets the coverage data. - * - * @param array $data - * @since Method available since Release 2.0.0 - */ - public function setData(array $data) - { - $this->data = $data; - } - - /** - * Returns the test data. - * - * @return array - * @since Method available since Release 1.1.0 - */ - public function getTests() - { - return $this->tests; - } - - /** - * Sets the test data. - * - * @param array $tests - * @since Method available since Release 2.0.0 - */ - public function setTests(array $tests) - { - $this->tests = $tests; - } - - /** - * Start collection of code coverage information. - * - * @param mixed $id - * @param bool $clear - * @throws PHP_CodeCoverage_Exception - */ - public function start($id, $clear = false) - { - if (!is_bool($clear)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, - 'boolean' - ); - } - - if ($clear) { - $this->clear(); - } - - $this->currentId = $id; - - $this->driver->start(); - } - - /** - * Stop collection of code coverage information. - * - * @param bool $append - * @param mixed $linesToBeCovered - * @param array $linesToBeUsed - * @return array - * @throws PHP_CodeCoverage_Exception - */ - public function stop($append = true, $linesToBeCovered = array(), array $linesToBeUsed = array()) - { - if (!is_bool($append)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, - 'boolean' - ); - } - - if (!is_array($linesToBeCovered) && $linesToBeCovered !== false) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 2, - 'array or false' - ); - } - - $data = $this->driver->stop(); - $this->append($data, null, $append, $linesToBeCovered, $linesToBeUsed); - - $this->currentId = null; - - return $data; - } - - /** - * Appends code coverage data. - * - * @param array $data - * @param mixed $id - * @param bool $append - * @param mixed $linesToBeCovered - * @param array $linesToBeUsed - * @throws PHP_CodeCoverage_Exception - */ - public function append(array $data, $id = null, $append = true, $linesToBeCovered = array(), array $linesToBeUsed = array()) - { - if ($id === null) { - $id = $this->currentId; - } - - if ($id === null) { - throw new PHP_CodeCoverage_Exception; - } - - $this->applyListsFilter($data); - $this->applyIgnoredLinesFilter($data); - $this->initializeFilesThatAreSeenTheFirstTime($data); - - if (!$append) { - return; - } - - if ($id != 'UNCOVERED_FILES_FROM_WHITELIST') { - $this->applyCoversAnnotationFilter( - $data, - $linesToBeCovered, - $linesToBeUsed - ); - } - - if (empty($data)) { - return; - } - - $size = 'unknown'; - $status = null; - - if ($id instanceof PHPUnit_Framework_TestCase) { - $_size = $id->getSize(); - - if ($_size == PHPUnit_Util_Test::SMALL) { - $size = 'small'; - } elseif ($_size == PHPUnit_Util_Test::MEDIUM) { - $size = 'medium'; - } elseif ($_size == PHPUnit_Util_Test::LARGE) { - $size = 'large'; - } - - $status = $id->getStatus(); - $id = get_class($id) . '::' . $id->getName(); - } elseif ($id instanceof PHPUnit_Extensions_PhptTestCase) { - $size = 'large'; - $id = $id->getName(); - } - - $this->tests[$id] = array('size' => $size, 'status' => $status); - - foreach ($data as $file => $lines) { - if (!$this->filter->isFile($file)) { - continue; - } - - foreach ($lines as $k => $v) { - if ($v == PHP_CodeCoverage_Driver::LINE_EXECUTED) { - if (empty($this->data[$file][$k]) || !in_array($id, $this->data[$file][$k])) { - $this->data[$file][$k][] = $id; - } - } - } - } - } - - /** - * Merges the data from another instance of PHP_CodeCoverage. - * - * @param PHP_CodeCoverage $that - */ - public function merge(PHP_CodeCoverage $that) - { - $this->filter->setBlacklistedFiles( - array_merge($this->filter->getBlacklistedFiles(), $that->filter()->getBlacklistedFiles()) - ); - - $this->filter->setWhitelistedFiles( - array_merge($this->filter->getWhitelistedFiles(), $that->filter()->getWhitelistedFiles()) - ); - - foreach ($that->data as $file => $lines) { - if (!isset($this->data[$file])) { - if (!$this->filter->isFiltered($file)) { - $this->data[$file] = $lines; - } - - continue; - } - - foreach ($lines as $line => $data) { - if ($data !== null) { - if (!isset($this->data[$file][$line])) { - $this->data[$file][$line] = $data; - } else { - $this->data[$file][$line] = array_unique( - array_merge($this->data[$file][$line], $data) - ); - } - } - } - } - - $this->tests = array_merge($this->tests, $that->getTests()); - - } - - /** - * @param bool $flag - * @throws PHP_CodeCoverage_Exception - * @since Method available since Release 1.1.0 - */ - public function setCacheTokens($flag) - { - if (!is_bool($flag)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, - 'boolean' - ); - } - - $this->cacheTokens = $flag; - } - - /** - * @since Method available since Release 1.1.0 - */ - public function getCacheTokens() - { - return $this->cacheTokens; - } - - /** - * @param bool $flag - * @throws PHP_CodeCoverage_Exception - * @since Method available since Release 2.0.0 - */ - public function setCheckForUnintentionallyCoveredCode($flag) - { - if (!is_bool($flag)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, - 'boolean' - ); - } - - $this->checkForUnintentionallyCoveredCode = $flag; - } - - /** - * @param bool $flag - * @throws PHP_CodeCoverage_Exception - */ - public function setForceCoversAnnotation($flag) - { - if (!is_bool($flag)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, - 'boolean' - ); - } - - $this->forceCoversAnnotation = $flag; - } - - /** - * @param bool $flag - * @throws PHP_CodeCoverage_Exception - */ - public function setMapTestClassNameToCoveredClassName($flag) - { - if (!is_bool($flag)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, - 'boolean' - ); - } - - $this->mapTestClassNameToCoveredClassName = $flag; - } - - /** - * @param bool $flag - * @throws PHP_CodeCoverage_Exception - */ - public function setAddUncoveredFilesFromWhitelist($flag) - { - if (!is_bool($flag)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, - 'boolean' - ); - } - - $this->addUncoveredFilesFromWhitelist = $flag; - } - - /** - * @param bool $flag - * @throws PHP_CodeCoverage_Exception - */ - public function setProcessUncoveredFilesFromWhitelist($flag) - { - if (!is_bool($flag)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, - 'boolean' - ); - } - - $this->processUncoveredFilesFromWhitelist = $flag; - } - - /** - * @param bool $flag - * @throws PHP_CodeCoverage_Exception - */ - public function setDisableIgnoredLines($flag) - { - if (!is_bool($flag)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, - 'boolean' - ); - } - - $this->disableIgnoredLines = $flag; - } - - /** - * Applies the @covers annotation filtering. - * - * @param array $data - * @param mixed $linesToBeCovered - * @param array $linesToBeUsed - * @throws PHP_CodeCoverage_Exception_UnintentionallyCoveredCode - */ - private function applyCoversAnnotationFilter(array &$data, $linesToBeCovered, array $linesToBeUsed) - { - if ($linesToBeCovered === false || - ($this->forceCoversAnnotation && empty($linesToBeCovered))) { - $data = array(); - - return; - } - - if (empty($linesToBeCovered)) { - return; - } - - if ($this->checkForUnintentionallyCoveredCode) { - $this->performUnintentionallyCoveredCodeCheck( - $data, - $linesToBeCovered, - $linesToBeUsed - ); - } - - $data = array_intersect_key($data, $linesToBeCovered); - - foreach (array_keys($data) as $filename) { - $_linesToBeCovered = array_flip($linesToBeCovered[$filename]); - - $data[$filename] = array_intersect_key( - $data[$filename], - $_linesToBeCovered - ); - } - } - - /** - * Applies the blacklist/whitelist filtering. - * - * @param array $data - */ - private function applyListsFilter(array &$data) - { - foreach (array_keys($data) as $filename) { - if ($this->filter->isFiltered($filename)) { - unset($data[$filename]); - } - } - } - - /** - * Applies the "ignored lines" filtering. - * - * @param array $data - */ - private function applyIgnoredLinesFilter(array &$data) - { - foreach (array_keys($data) as $filename) { - if (!$this->filter->isFile($filename)) { - continue; - } - - foreach ($this->getLinesToBeIgnored($filename) as $line) { - unset($data[$filename][$line]); - } - } - } - - /** - * @param array $data - * @since Method available since Release 1.1.0 - */ - private function initializeFilesThatAreSeenTheFirstTime(array $data) - { - foreach ($data as $file => $lines) { - if ($this->filter->isFile($file) && !isset($this->data[$file])) { - $this->data[$file] = array(); - - foreach ($lines as $k => $v) { - $this->data[$file][$k] = $v == -2 ? null : array(); - } - } - } - } - - /** - * Processes whitelisted files that are not covered. - */ - private function addUncoveredFilesFromWhitelist() - { - $data = array(); - $uncoveredFiles = array_diff( - $this->filter->getWhitelist(), - array_keys($this->data) - ); - - foreach ($uncoveredFiles as $uncoveredFile) { - if (!file_exists($uncoveredFile)) { - continue; - } - - if ($this->processUncoveredFilesFromWhitelist) { - $this->processUncoveredFileFromWhitelist( - $uncoveredFile, - $data, - $uncoveredFiles - ); - } else { - $data[$uncoveredFile] = array(); - - $lines = count(file($uncoveredFile)); - - for ($i = 1; $i <= $lines; $i++) { - $data[$uncoveredFile][$i] = PHP_CodeCoverage_Driver::LINE_NOT_EXECUTED; - } - } - } - - $this->append($data, 'UNCOVERED_FILES_FROM_WHITELIST'); - } - - /** - * @param string $uncoveredFile - * @param array $data - * @param array $uncoveredFiles - */ - private function processUncoveredFileFromWhitelist($uncoveredFile, array &$data, array $uncoveredFiles) - { - $this->driver->start(); - include_once $uncoveredFile; - $coverage = $this->driver->stop(); - - foreach ($coverage as $file => $fileCoverage) { - if (!isset($data[$file]) && - in_array($file, $uncoveredFiles)) { - foreach (array_keys($fileCoverage) as $key) { - if ($fileCoverage[$key] == PHP_CodeCoverage_Driver::LINE_EXECUTED) { - $fileCoverage[$key] = PHP_CodeCoverage_Driver::LINE_NOT_EXECUTED; - } - } - - $data[$file] = $fileCoverage; - } - } - } - - /** - * Returns the lines of a source file that should be ignored. - * - * @param string $filename - * @return array - * @throws PHP_CodeCoverage_Exception - * @since Method available since Release 2.0.0 - */ - private function getLinesToBeIgnored($filename) - { - if (!is_string($filename)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, - 'string' - ); - } - - if (!isset($this->ignoredLines[$filename])) { - $this->ignoredLines[$filename] = array(); - - if ($this->disableIgnoredLines) { - return $this->ignoredLines[$filename]; - } - - $ignore = false; - $stop = false; - $lines = file($filename); - $numLines = count($lines); - - foreach ($lines as $index => $line) { - if (!trim($line)) { - $this->ignoredLines[$filename][] = $index + 1; - } - } - - if ($this->cacheTokens) { - $tokens = PHP_Token_Stream_CachingFactory::get($filename); - } else { - $tokens = new PHP_Token_Stream($filename); - } - - $classes = array_merge($tokens->getClasses(), $tokens->getTraits()); - $tokens = $tokens->tokens(); - - foreach ($tokens as $token) { - switch (get_class($token)) { - case 'PHP_Token_COMMENT': - case 'PHP_Token_DOC_COMMENT': - $_token = trim($token); - $_line = trim($lines[$token->getLine() - 1]); - - if ($_token == '// @codeCoverageIgnore' || - $_token == '//@codeCoverageIgnore') { - $ignore = true; - $stop = true; - } elseif ($_token == '// @codeCoverageIgnoreStart' || - $_token == '//@codeCoverageIgnoreStart') { - $ignore = true; - } elseif ($_token == '// @codeCoverageIgnoreEnd' || - $_token == '//@codeCoverageIgnoreEnd') { - $stop = true; - } - - if (!$ignore) { - $start = $token->getLine(); - $end = $start + substr_count($token, "\n"); - - // Do not ignore the first line when there is a token - // before the comment - if (0 !== strpos($_token, $_line)) { - $start++; - } - - for ($i = $start; $i < $end; $i++) { - $this->ignoredLines[$filename][] = $i; - } - - // A DOC_COMMENT token or a COMMENT token starting with "/*" - // does not contain the final \n character in its text - if (isset($lines[$i-1]) && 0 === strpos($_token, '/*') && '*/' === substr(trim($lines[$i-1]), -2)) { - $this->ignoredLines[$filename][] = $i; - } - } - break; - - case 'PHP_Token_INTERFACE': - case 'PHP_Token_TRAIT': - case 'PHP_Token_CLASS': - case 'PHP_Token_FUNCTION': - $docblock = $token->getDocblock(); - - $this->ignoredLines[$filename][] = $token->getLine(); - - if (strpos($docblock, '@codeCoverageIgnore') || strpos($docblock, '@deprecated')) { - $endLine = $token->getEndLine(); - - for ($i = $token->getLine(); $i <= $endLine; $i++) { - $this->ignoredLines[$filename][] = $i; - } - } elseif ($token instanceof PHP_Token_INTERFACE || - $token instanceof PHP_Token_TRAIT || - $token instanceof PHP_Token_CLASS) { - if (empty($classes[$token->getName()]['methods'])) { - for ($i = $token->getLine(); - $i <= $token->getEndLine(); - $i++) { - $this->ignoredLines[$filename][] = $i; - } - } else { - $firstMethod = array_shift( - $classes[$token->getName()]['methods'] - ); - - do { - $lastMethod = array_pop( - $classes[$token->getName()]['methods'] - ); - } while ($lastMethod !== null && - substr($lastMethod['signature'], 0, 18) == 'anonymous function'); - - if ($lastMethod === null) { - $lastMethod = $firstMethod; - } - - for ($i = $token->getLine(); - $i < $firstMethod['startLine']; - $i++) { - $this->ignoredLines[$filename][] = $i; - } - - for ($i = $token->getEndLine(); - $i > $lastMethod['endLine']; - $i--) { - $this->ignoredLines[$filename][] = $i; - } - } - } - break; - - case 'PHP_Token_NAMESPACE': - $this->ignoredLines[$filename][] = $token->getEndLine(); - - // Intentional fallthrough - case 'PHP_Token_OPEN_TAG': - case 'PHP_Token_CLOSE_TAG': - case 'PHP_Token_USE': - $this->ignoredLines[$filename][] = $token->getLine(); - break; - } - - if ($ignore) { - $this->ignoredLines[$filename][] = $token->getLine(); - - if ($stop) { - $ignore = false; - $stop = false; - } - } - } - - $this->ignoredLines[$filename][] = $numLines + 1; - - $this->ignoredLines[$filename] = array_unique( - $this->ignoredLines[$filename] - ); - - sort($this->ignoredLines[$filename]); - } - - return $this->ignoredLines[$filename]; - } - - /** - * @param array $data - * @param array $linesToBeCovered - * @param array $linesToBeUsed - * @throws PHP_CodeCoverage_Exception_UnintentionallyCoveredCode - * @since Method available since Release 2.0.0 - */ - private function performUnintentionallyCoveredCodeCheck(array &$data, array $linesToBeCovered, array $linesToBeUsed) - { - $allowedLines = $this->getAllowedLines( - $linesToBeCovered, - $linesToBeUsed - ); - - $message = ''; - - foreach ($data as $file => $_data) { - foreach ($_data as $line => $flag) { - if ($flag == 1 && - (!isset($allowedLines[$file]) || - !isset($allowedLines[$file][$line]))) { - $message .= sprintf( - '- %s:%d' . PHP_EOL, - $file, - $line - ); - } - } - } - - if (!empty($message)) { - throw new PHP_CodeCoverage_Exception_UnintentionallyCoveredCode( - $message - ); - } - } - - /** - * @param array $linesToBeCovered - * @param array $linesToBeUsed - * @return array - * @since Method available since Release 2.0.0 - */ - private function getAllowedLines(array $linesToBeCovered, array $linesToBeUsed) - { - $allowedLines = array(); - - foreach (array_keys($linesToBeCovered) as $file) { - if (!isset($allowedLines[$file])) { - $allowedLines[$file] = array(); - } - - $allowedLines[$file] = array_merge( - $allowedLines[$file], - $linesToBeCovered[$file] - ); - } - - foreach (array_keys($linesToBeUsed) as $file) { - if (!isset($allowedLines[$file])) { - $allowedLines[$file] = array(); - } - - $allowedLines[$file] = array_merge( - $allowedLines[$file], - $linesToBeUsed[$file] - ); - } - - foreach (array_keys($allowedLines) as $file) { - $allowedLines[$file] = array_flip( - array_unique($allowedLines[$file]) - ); - } - - return $allowedLines; - } - - /** - * @return PHP_CodeCoverage_Driver - * @throws PHP_CodeCoverage_Exception - */ - private function selectDriver() - { - $runtime = new Runtime; - - if (!$runtime->canCollectCodeCoverage()) { - throw new PHP_CodeCoverage_Exception('No code coverage driver available'); - } - - if ($runtime->isHHVM()) { - return new PHP_CodeCoverage_Driver_HHVM; - } elseif ($runtime->isPHPDBG()) { - return new PHP_CodeCoverage_Driver_PHPDBG; - } else { - return new PHP_CodeCoverage_Driver_Xdebug; - } - } -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver.php deleted file mode 100644 index 8635ace..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Interface for code coverage drivers. - * - * @since Class available since Release 1.0.0 - */ -interface PHP_CodeCoverage_Driver -{ - /** - * @var int - * @see http://xdebug.org/docs/code_coverage - */ - const LINE_EXECUTED = 1; - - /** - * @var int - * @see http://xdebug.org/docs/code_coverage - */ - const LINE_NOT_EXECUTED = -1; - - /** - * @var int - * @see http://xdebug.org/docs/code_coverage - */ - const LINE_NOT_EXECUTABLE = -2; - - /** - * Start collection of code coverage information. - */ - public function start(); - - /** - * Stop collection of code coverage information. - * - * @return array - */ - public function stop(); -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php deleted file mode 100644 index a9d8f0c..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Driver for HHVM's code coverage functionality. - * - * @since Class available since Release 2.2.2 - * @codeCoverageIgnore - */ -class PHP_CodeCoverage_Driver_HHVM extends PHP_CodeCoverage_Driver_Xdebug -{ - /** - * Start collection of code coverage information. - */ - public function start() - { - xdebug_start_code_coverage(); - } -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php deleted file mode 100644 index f3eb621..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php +++ /dev/null @@ -1,105 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Driver for PHPDBG's code coverage functionality. - * - * @since Class available since Release 2.2.0 - * @codeCoverageIgnore - */ -class PHP_CodeCoverage_Driver_PHPDBG implements PHP_CodeCoverage_Driver -{ - /** - * Constructor. - */ - public function __construct() - { - if (PHP_SAPI !== 'phpdbg') { - throw new PHP_CodeCoverage_Exception( - 'This driver requires the PHPDBG SAPI' - ); - } - - if (!function_exists('phpdbg_start_oplog')) { - throw new PHP_CodeCoverage_Exception( - 'This build of PHPDBG does not support code coverage' - ); - } - } - - /** - * Start collection of code coverage information. - */ - public function start() - { - phpdbg_start_oplog(); - } - - /** - * Stop collection of code coverage information. - * - * @return array - */ - public function stop() - { - static $fetchedLines = array(); - - $dbgData = phpdbg_end_oplog(); - - if ($fetchedLines == array()) { - $sourceLines = phpdbg_get_executable(); - } else { - $newFiles = array_diff( - get_included_files(), - array_keys($fetchedLines) - ); - - if ($newFiles) { - $sourceLines = phpdbg_get_executable( - array('files' => $newFiles) - ); - } else { - $sourceLines = array(); - } - } - - foreach ($sourceLines as $file => $lines) { - foreach ($lines as $lineNo => $numExecuted) { - $sourceLines[$file][$lineNo] = self::LINE_NOT_EXECUTED; - } - } - - $fetchedLines = array_merge($fetchedLines, $sourceLines); - - return $this->detectExecutedLines($fetchedLines, $dbgData); - } - - /** - * Convert phpdbg based data into the format CodeCoverage expects - * - * @param array $sourceLines - * @param array $dbgData - * @return array - */ - private function detectExecutedLines(array $sourceLines, array $dbgData) - { - foreach ($dbgData as $file => $coveredLines) { - foreach ($coveredLines as $lineNo => $numExecuted) { - // phpdbg also reports $lineNo=0 when e.g. exceptions get thrown. - // make sure we only mark lines executed which are actually executable. - if (isset($sourceLines[$file][$lineNo])) { - $sourceLines[$file][$lineNo] = self::LINE_EXECUTED; - } - } - } - - return $sourceLines; - } -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php deleted file mode 100644 index 0cd7b9a..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php +++ /dev/null @@ -1,97 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Driver for Xdebug's code coverage functionality. - * - * @since Class available since Release 1.0.0 - * @codeCoverageIgnore - */ -class PHP_CodeCoverage_Driver_Xdebug implements PHP_CodeCoverage_Driver -{ - /** - * Constructor. - */ - public function __construct() - { - if (!extension_loaded('xdebug')) { - throw new PHP_CodeCoverage_Exception('This driver requires Xdebug'); - } - - if (version_compare(phpversion('xdebug'), '2.2.0-dev', '>=') && - !ini_get('xdebug.coverage_enable')) { - throw new PHP_CodeCoverage_Exception( - 'xdebug.coverage_enable=On has to be set in php.ini' - ); - } - } - - /** - * Start collection of code coverage information. - */ - public function start() - { - xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE); - } - - /** - * Stop collection of code coverage information. - * - * @return array - */ - public function stop() - { - $data = xdebug_get_code_coverage(); - xdebug_stop_code_coverage(); - - return $this->cleanup($data); - } - - /** - * @param array $data - * @return array - * @since Method available since Release 2.0.0 - */ - private function cleanup(array $data) - { - foreach (array_keys($data) as $file) { - unset($data[$file][0]); - - if ($file != 'xdebug://debug-eval' && file_exists($file)) { - $numLines = $this->getNumberOfLinesInFile($file); - - foreach (array_keys($data[$file]) as $line) { - if (isset($data[$file][$line]) && $line > $numLines) { - unset($data[$file][$line]); - } - } - } - } - - return $data; - } - - /** - * @param string $file - * @return int - * @since Method available since Release 2.0.0 - */ - private function getNumberOfLinesInFile($file) - { - $buffer = file_get_contents($file); - $lines = substr_count($buffer, "\n"); - - if (substr($buffer, -1) !== "\n") { - $lines++; - } - - return $lines; - } -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception.php deleted file mode 100644 index bded3c0..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception.php +++ /dev/null @@ -1,18 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Exception class for PHP_CodeCoverage component. - * - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Exception extends RuntimeException -{ -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php deleted file mode 100644 index 463785e..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php +++ /dev/null @@ -1,18 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Exception that is raised when code is unintentionally covered. - * - * @since Class available since Release 2.0.0 - */ -class PHP_CodeCoverage_Exception_UnintentionallyCoveredCode extends PHP_CodeCoverage_Exception -{ -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Filter.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Filter.php deleted file mode 100644 index bb4a251..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Filter.php +++ /dev/null @@ -1,293 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Filter for blacklisting and whitelisting of code coverage information. - * - * @since Class available since Release 1.0.0 - */ -class PHP_CodeCoverage_Filter -{ - /** - * Source files that are blacklisted. - * - * @var array - */ - private $blacklistedFiles = array(); - - /** - * Source files that are whitelisted. - * - * @var array - */ - private $whitelistedFiles = array(); - - /** - * Adds a directory to the blacklist (recursively). - * - * @param string $directory - * @param string $suffix - * @param string $prefix - */ - public function addDirectoryToBlacklist($directory, $suffix = '.php', $prefix = '') - { - $facade = new File_Iterator_Facade; - $files = $facade->getFilesAsArray($directory, $suffix, $prefix); - - foreach ($files as $file) { - $this->addFileToBlacklist($file); - } - } - - /** - * Adds a file to the blacklist. - * - * @param string $filename - */ - public function addFileToBlacklist($filename) - { - $this->blacklistedFiles[realpath($filename)] = true; - } - - /** - * Adds files to the blacklist. - * - * @param array $files - */ - public function addFilesToBlacklist(array $files) - { - foreach ($files as $file) { - $this->addFileToBlacklist($file); - } - } - - /** - * Removes a directory from the blacklist (recursively). - * - * @param string $directory - * @param string $suffix - * @param string $prefix - */ - public function removeDirectoryFromBlacklist($directory, $suffix = '.php', $prefix = '') - { - $facade = new File_Iterator_Facade; - $files = $facade->getFilesAsArray($directory, $suffix, $prefix); - - foreach ($files as $file) { - $this->removeFileFromBlacklist($file); - } - } - - /** - * Removes a file from the blacklist. - * - * @param string $filename - */ - public function removeFileFromBlacklist($filename) - { - $filename = realpath($filename); - - if (isset($this->blacklistedFiles[$filename])) { - unset($this->blacklistedFiles[$filename]); - } - } - - /** - * Adds a directory to the whitelist (recursively). - * - * @param string $directory - * @param string $suffix - * @param string $prefix - */ - public function addDirectoryToWhitelist($directory, $suffix = '.php', $prefix = '') - { - $facade = new File_Iterator_Facade; - $files = $facade->getFilesAsArray($directory, $suffix, $prefix); - - foreach ($files as $file) { - $this->addFileToWhitelist($file); - } - } - - /** - * Adds a file to the whitelist. - * - * @param string $filename - */ - public function addFileToWhitelist($filename) - { - $this->whitelistedFiles[realpath($filename)] = true; - } - - /** - * Adds files to the whitelist. - * - * @param array $files - */ - public function addFilesToWhitelist(array $files) - { - foreach ($files as $file) { - $this->addFileToWhitelist($file); - } - } - - /** - * Removes a directory from the whitelist (recursively). - * - * @param string $directory - * @param string $suffix - * @param string $prefix - */ - public function removeDirectoryFromWhitelist($directory, $suffix = '.php', $prefix = '') - { - $facade = new File_Iterator_Facade; - $files = $facade->getFilesAsArray($directory, $suffix, $prefix); - - foreach ($files as $file) { - $this->removeFileFromWhitelist($file); - } - } - - /** - * Removes a file from the whitelist. - * - * @param string $filename - */ - public function removeFileFromWhitelist($filename) - { - $filename = realpath($filename); - - if (isset($this->whitelistedFiles[$filename])) { - unset($this->whitelistedFiles[$filename]); - } - } - - /** - * Checks whether a filename is a real filename. - * - * @param string $filename - * @return bool - */ - public function isFile($filename) - { - if ($filename == '-' || - strpos($filename, 'vfs://') === 0 || - strpos($filename, 'xdebug://debug-eval') !== false || - strpos($filename, 'eval()\'d code') !== false || - strpos($filename, 'runtime-created function') !== false || - strpos($filename, 'runkit created function') !== false || - strpos($filename, 'assert code') !== false || - strpos($filename, 'regexp code') !== false) { - return false; - } - - return file_exists($filename); - } - - /** - * Checks whether or not a file is filtered. - * - * When the whitelist is empty (default), blacklisting is used. - * When the whitelist is not empty, whitelisting is used. - * - * @param string $filename - * @return bool - * @throws PHP_CodeCoverage_Exception - */ - public function isFiltered($filename) - { - if (!$this->isFile($filename)) { - return true; - } - - $filename = realpath($filename); - - if (!empty($this->whitelistedFiles)) { - return !isset($this->whitelistedFiles[$filename]); - } - - return isset($this->blacklistedFiles[$filename]); - } - - /** - * Returns the list of blacklisted files. - * - * @return array - */ - public function getBlacklist() - { - return array_keys($this->blacklistedFiles); - } - - /** - * Returns the list of whitelisted files. - * - * @return array - */ - public function getWhitelist() - { - return array_keys($this->whitelistedFiles); - } - - /** - * Returns whether this filter has a whitelist. - * - * @return bool - * @since Method available since Release 1.1.0 - */ - public function hasWhitelist() - { - return !empty($this->whitelistedFiles); - } - - /** - * Returns the blacklisted files. - * - * @return array - * @since Method available since Release 2.0.0 - */ - public function getBlacklistedFiles() - { - return $this->blacklistedFiles; - } - - /** - * Sets the blacklisted files. - * - * @param array $blacklistedFiles - * @since Method available since Release 2.0.0 - */ - public function setBlacklistedFiles($blacklistedFiles) - { - $this->blacklistedFiles = $blacklistedFiles; - } - - /** - * Returns the whitelisted files. - * - * @return array - * @since Method available since Release 2.0.0 - */ - public function getWhitelistedFiles() - { - return $this->whitelistedFiles; - } - - /** - * Sets the whitelisted files. - * - * @param array $whitelistedFiles - * @since Method available since Release 2.0.0 - */ - public function setWhitelistedFiles($whitelistedFiles) - { - $this->whitelistedFiles = $whitelistedFiles; - } -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php deleted file mode 100644 index c0ea8d8..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php +++ /dev/null @@ -1,284 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Generates a Clover XML logfile from an PHP_CodeCoverage object. - * - * @since Class available since Release 1.0.0 - */ -class PHP_CodeCoverage_Report_Clover -{ - /** - * @param PHP_CodeCoverage $coverage - * @param string $target - * @param string $name - * @return string - */ - public function process(PHP_CodeCoverage $coverage, $target = null, $name = null) - { - $xmlDocument = new DOMDocument('1.0', 'UTF-8'); - $xmlDocument->formatOutput = true; - - $xmlCoverage = $xmlDocument->createElement('coverage'); - $xmlCoverage->setAttribute('generated', (int) $_SERVER['REQUEST_TIME']); - $xmlDocument->appendChild($xmlCoverage); - - $xmlProject = $xmlDocument->createElement('project'); - $xmlProject->setAttribute('timestamp', (int) $_SERVER['REQUEST_TIME']); - - if (is_string($name)) { - $xmlProject->setAttribute('name', $name); - } - - $xmlCoverage->appendChild($xmlProject); - - $packages = array(); - $report = $coverage->getReport(); - unset($coverage); - - foreach ($report as $item) { - $namespace = 'global'; - - if (!$item instanceof PHP_CodeCoverage_Report_Node_File) { - continue; - } - - $xmlFile = $xmlDocument->createElement('file'); - $xmlFile->setAttribute('name', $item->getPath()); - - $classes = $item->getClassesAndTraits(); - $coverage = $item->getCoverageData(); - $lines = array(); - - foreach ($classes as $className => $class) { - $classStatements = 0; - $coveredClassStatements = 0; - $coveredMethods = 0; - $classMethods = 0; - - foreach ($class['methods'] as $methodName => $method) { - if ($method['executableLines'] == 0) { - continue; - } - - $classMethods++; - $classStatements += $method['executableLines']; - $coveredClassStatements += $method['executedLines']; - if ($method['coverage'] == 100) { - $coveredMethods++; - } - - $methodCount = 0; - for ($i = $method['startLine']; - $i <= $method['endLine']; - $i++) { - if (isset($coverage[$i]) && ($coverage[$i] !== null)) { - $methodCount = max($methodCount, count($coverage[$i])); - } - } - - $lines[$method['startLine']] = array( - 'count' => $methodCount, - 'crap' => $method['crap'], - 'type' => 'method', - 'name' => $methodName - ); - } - - if (!empty($class['package']['namespace'])) { - $namespace = $class['package']['namespace']; - } - - $xmlClass = $xmlDocument->createElement('class'); - $xmlClass->setAttribute('name', $className); - $xmlClass->setAttribute('namespace', $namespace); - - if (!empty($class['package']['fullPackage'])) { - $xmlClass->setAttribute( - 'fullPackage', - $class['package']['fullPackage'] - ); - } - - if (!empty($class['package']['category'])) { - $xmlClass->setAttribute( - 'category', - $class['package']['category'] - ); - } - - if (!empty($class['package']['package'])) { - $xmlClass->setAttribute( - 'package', - $class['package']['package'] - ); - } - - if (!empty($class['package']['subpackage'])) { - $xmlClass->setAttribute( - 'subpackage', - $class['package']['subpackage'] - ); - } - - $xmlFile->appendChild($xmlClass); - - $xmlMetrics = $xmlDocument->createElement('metrics'); - $xmlMetrics->setAttribute('methods', $classMethods); - $xmlMetrics->setAttribute('coveredmethods', $coveredMethods); - $xmlMetrics->setAttribute('conditionals', 0); - $xmlMetrics->setAttribute('coveredconditionals', 0); - $xmlMetrics->setAttribute('statements', $classStatements); - $xmlMetrics->setAttribute( - 'coveredstatements', - $coveredClassStatements - ); - $xmlMetrics->setAttribute( - 'elements', - $classMethods + - $classStatements - /* + conditionals */ - ); - $xmlMetrics->setAttribute( - 'coveredelements', - $coveredMethods + - $coveredClassStatements - /* + coveredconditionals */ - ); - $xmlClass->appendChild($xmlMetrics); - } - - foreach ($coverage as $line => $data) { - if ($data === null || isset($lines[$line])) { - continue; - } - - $lines[$line] = array( - 'count' => count($data), 'type' => 'stmt' - ); - } - - ksort($lines); - - foreach ($lines as $line => $data) { - $xmlLine = $xmlDocument->createElement('line'); - $xmlLine->setAttribute('num', $line); - $xmlLine->setAttribute('type', $data['type']); - - if (isset($data['name'])) { - $xmlLine->setAttribute('name', $data['name']); - } - - if (isset($data['crap'])) { - $xmlLine->setAttribute('crap', $data['crap']); - } - - $xmlLine->setAttribute('count', $data['count']); - $xmlFile->appendChild($xmlLine); - } - - $linesOfCode = $item->getLinesOfCode(); - - $xmlMetrics = $xmlDocument->createElement('metrics'); - $xmlMetrics->setAttribute('loc', $linesOfCode['loc']); - $xmlMetrics->setAttribute('ncloc', $linesOfCode['ncloc']); - $xmlMetrics->setAttribute('classes', $item->getNumClassesAndTraits()); - $xmlMetrics->setAttribute('methods', $item->getNumMethods()); - $xmlMetrics->setAttribute( - 'coveredmethods', - $item->getNumTestedMethods() - ); - $xmlMetrics->setAttribute('conditionals', 0); - $xmlMetrics->setAttribute('coveredconditionals', 0); - $xmlMetrics->setAttribute( - 'statements', - $item->getNumExecutableLines() - ); - $xmlMetrics->setAttribute( - 'coveredstatements', - $item->getNumExecutedLines() - ); - $xmlMetrics->setAttribute( - 'elements', - $item->getNumMethods() + $item->getNumExecutableLines() - /* + conditionals */ - ); - $xmlMetrics->setAttribute( - 'coveredelements', - $item->getNumTestedMethods() + $item->getNumExecutedLines() - /* + coveredconditionals */ - ); - $xmlFile->appendChild($xmlMetrics); - - if ($namespace == 'global') { - $xmlProject->appendChild($xmlFile); - } else { - if (!isset($packages[$namespace])) { - $packages[$namespace] = $xmlDocument->createElement( - 'package' - ); - - $packages[$namespace]->setAttribute('name', $namespace); - $xmlProject->appendChild($packages[$namespace]); - } - - $packages[$namespace]->appendChild($xmlFile); - } - } - - $linesOfCode = $report->getLinesOfCode(); - - $xmlMetrics = $xmlDocument->createElement('metrics'); - $xmlMetrics->setAttribute('files', count($report)); - $xmlMetrics->setAttribute('loc', $linesOfCode['loc']); - $xmlMetrics->setAttribute('ncloc', $linesOfCode['ncloc']); - $xmlMetrics->setAttribute( - 'classes', - $report->getNumClassesAndTraits() - ); - $xmlMetrics->setAttribute('methods', $report->getNumMethods()); - $xmlMetrics->setAttribute( - 'coveredmethods', - $report->getNumTestedMethods() - ); - $xmlMetrics->setAttribute('conditionals', 0); - $xmlMetrics->setAttribute('coveredconditionals', 0); - $xmlMetrics->setAttribute( - 'statements', - $report->getNumExecutableLines() - ); - $xmlMetrics->setAttribute( - 'coveredstatements', - $report->getNumExecutedLines() - ); - $xmlMetrics->setAttribute( - 'elements', - $report->getNumMethods() + $report->getNumExecutableLines() - /* + conditionals */ - ); - $xmlMetrics->setAttribute( - 'coveredelements', - $report->getNumTestedMethods() + $report->getNumExecutedLines() - /* + coveredconditionals */ - ); - - $xmlProject->appendChild($xmlMetrics); - - if ($target !== null) { - if (!is_dir(dirname($target))) { - mkdir(dirname($target), 0777, true); - } - - return $xmlDocument->save($target); - } else { - return $xmlDocument->saveXML(); - } - } -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php deleted file mode 100644 index c006ea6..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php +++ /dev/null @@ -1,164 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * @since Class available since Release 2.0.0 - */ -class PHP_CodeCoverage_Report_Crap4j -{ - /** - * @var int - */ - private $threshold; - - /** - * @param int $threshold - */ - public function __construct($threshold = 30) - { - if (!is_int($threshold)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, - 'integer' - ); - } - - $this->threshold = $threshold; - } - - /** - * @param PHP_CodeCoverage $coverage - * @param string $target - * @param string $name - * @return string - */ - public function process(PHP_CodeCoverage $coverage, $target = null, $name = null) - { - $document = new DOMDocument('1.0', 'UTF-8'); - $document->formatOutput = true; - - $root = $document->createElement('crap_result'); - $document->appendChild($root); - - $project = $document->createElement('project', is_string($name) ? $name : ''); - $root->appendChild($project); - $root->appendChild($document->createElement('timestamp', date('Y-m-d H:i:s', (int) $_SERVER['REQUEST_TIME']))); - - $stats = $document->createElement('stats'); - $methodsNode = $document->createElement('methods'); - - $report = $coverage->getReport(); - unset($coverage); - - $fullMethodCount = 0; - $fullCrapMethodCount = 0; - $fullCrapLoad = 0; - $fullCrap = 0; - - foreach ($report as $item) { - $namespace = 'global'; - - if (!$item instanceof PHP_CodeCoverage_Report_Node_File) { - continue; - } - - $file = $document->createElement('file'); - $file->setAttribute('name', $item->getPath()); - - $classes = $item->getClassesAndTraits(); - - foreach ($classes as $className => $class) { - foreach ($class['methods'] as $methodName => $method) { - $crapLoad = $this->getCrapLoad($method['crap'], $method['ccn'], $method['coverage']); - - $fullCrap += $method['crap']; - $fullCrapLoad += $crapLoad; - $fullMethodCount++; - - if ($method['crap'] >= $this->threshold) { - $fullCrapMethodCount++; - } - - $methodNode = $document->createElement('method'); - - if (!empty($class['package']['namespace'])) { - $namespace = $class['package']['namespace']; - } - - $methodNode->appendChild($document->createElement('package', $namespace)); - $methodNode->appendChild($document->createElement('className', $className)); - $methodNode->appendChild($document->createElement('methodName', $methodName)); - $methodNode->appendChild($document->createElement('methodSignature', htmlspecialchars($method['signature']))); - $methodNode->appendChild($document->createElement('fullMethod', htmlspecialchars($method['signature']))); - $methodNode->appendChild($document->createElement('crap', $this->roundValue($method['crap']))); - $methodNode->appendChild($document->createElement('complexity', $method['ccn'])); - $methodNode->appendChild($document->createElement('coverage', $this->roundValue($method['coverage']))); - $methodNode->appendChild($document->createElement('crapLoad', round($crapLoad))); - - $methodsNode->appendChild($methodNode); - } - } - } - - $stats->appendChild($document->createElement('name', 'Method Crap Stats')); - $stats->appendChild($document->createElement('methodCount', $fullMethodCount)); - $stats->appendChild($document->createElement('crapMethodCount', $fullCrapMethodCount)); - $stats->appendChild($document->createElement('crapLoad', round($fullCrapLoad))); - $stats->appendChild($document->createElement('totalCrap', $fullCrap)); - - if ($fullMethodCount > 0) { - $crapMethodPercent = $this->roundValue((100 * $fullCrapMethodCount) / $fullMethodCount); - } else { - $crapMethodPercent = 0; - } - - $stats->appendChild($document->createElement('crapMethodPercent', $crapMethodPercent)); - - $root->appendChild($stats); - $root->appendChild($methodsNode); - - if ($target !== null) { - if (!is_dir(dirname($target))) { - mkdir(dirname($target), 0777, true); - } - - return $document->save($target); - } else { - return $document->saveXML(); - } - } - - /** - * @param float $crapValue - * @param int $cyclomaticComplexity - * @param float $coveragePercent - * @return float - */ - private function getCrapLoad($crapValue, $cyclomaticComplexity, $coveragePercent) - { - $crapLoad = 0; - - if ($crapValue >= $this->threshold) { - $crapLoad += $cyclomaticComplexity * (1.0 - $coveragePercent / 100); - $crapLoad += $cyclomaticComplexity / $this->threshold; - } - - return $crapLoad; - } - - /** - * @param float $value - * @return float - */ - private function roundValue($value) - { - return round($value, 2); - } -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php deleted file mode 100644 index b28964e..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php +++ /dev/null @@ -1,242 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Factory for PHP_CodeCoverage_Report_Node_* object graphs. - * - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_Factory -{ - /** - * @param PHP_CodeCoverage $coverage - * @return PHP_CodeCoverage_Report_Node_Directory - */ - public function create(PHP_CodeCoverage $coverage) - { - $files = $coverage->getData(); - $commonPath = $this->reducePaths($files); - $root = new PHP_CodeCoverage_Report_Node_Directory( - $commonPath, - null - ); - - $this->addItems( - $root, - $this->buildDirectoryStructure($files), - $coverage->getTests(), - $coverage->getCacheTokens() - ); - - return $root; - } - - /** - * @param PHP_CodeCoverage_Report_Node_Directory $root - * @param array $items - * @param array $tests - * @param bool $cacheTokens - */ - private function addItems(PHP_CodeCoverage_Report_Node_Directory $root, array $items, array $tests, $cacheTokens) - { - foreach ($items as $key => $value) { - if (substr($key, -2) == '/f') { - $key = substr($key, 0, -2); - - if (file_exists($root->getPath() . DIRECTORY_SEPARATOR . $key)) { - $root->addFile($key, $value, $tests, $cacheTokens); - } - } else { - $child = $root->addDirectory($key); - $this->addItems($child, $value, $tests, $cacheTokens); - } - } - } - - /** - * Builds an array representation of the directory structure. - * - * For instance, - * - * - * Array - * ( - * [Money.php] => Array - * ( - * ... - * ) - * - * [MoneyBag.php] => Array - * ( - * ... - * ) - * ) - * - * - * is transformed into - * - * - * Array - * ( - * [.] => Array - * ( - * [Money.php] => Array - * ( - * ... - * ) - * - * [MoneyBag.php] => Array - * ( - * ... - * ) - * ) - * ) - * - * - * @param array $files - * @return array - */ - private function buildDirectoryStructure($files) - { - $result = array(); - - foreach ($files as $path => $file) { - $path = explode('/', $path); - $pointer = &$result; - $max = count($path); - - for ($i = 0; $i < $max; $i++) { - if ($i == ($max - 1)) { - $type = '/f'; - } else { - $type = ''; - } - - $pointer = &$pointer[$path[$i] . $type]; - } - - $pointer = $file; - } - - return $result; - } - - /** - * Reduces the paths by cutting the longest common start path. - * - * For instance, - * - * - * Array - * ( - * [/home/sb/Money/Money.php] => Array - * ( - * ... - * ) - * - * [/home/sb/Money/MoneyBag.php] => Array - * ( - * ... - * ) - * ) - * - * - * is reduced to - * - * - * Array - * ( - * [Money.php] => Array - * ( - * ... - * ) - * - * [MoneyBag.php] => Array - * ( - * ... - * ) - * ) - * - * - * @param array $files - * @return string - */ - private function reducePaths(&$files) - { - if (empty($files)) { - return '.'; - } - - $commonPath = ''; - $paths = array_keys($files); - - if (count($files) == 1) { - $commonPath = dirname($paths[0]) . '/'; - $files[basename($paths[0])] = $files[$paths[0]]; - - unset($files[$paths[0]]); - - return $commonPath; - } - - $max = count($paths); - - for ($i = 0; $i < $max; $i++) { - // strip phar:// prefixes - if (strpos($paths[$i], 'phar://') === 0) { - $paths[$i] = substr($paths[$i], 7); - $paths[$i] = strtr($paths[$i], '/', DIRECTORY_SEPARATOR); - } - $paths[$i] = explode(DIRECTORY_SEPARATOR, $paths[$i]); - - if (empty($paths[$i][0])) { - $paths[$i][0] = DIRECTORY_SEPARATOR; - } - } - - $done = false; - $max = count($paths); - - while (!$done) { - for ($i = 0; $i < $max - 1; $i++) { - if (!isset($paths[$i][0]) || - !isset($paths[$i+1][0]) || - $paths[$i][0] != $paths[$i+1][0]) { - $done = true; - break; - } - } - - if (!$done) { - $commonPath .= $paths[0][0]; - - if ($paths[0][0] != DIRECTORY_SEPARATOR) { - $commonPath .= DIRECTORY_SEPARATOR; - } - - for ($i = 0; $i < $max; $i++) { - array_shift($paths[$i]); - } - } - } - - $original = array_keys($files); - $max = count($original); - - for ($i = 0; $i < $max; $i++) { - $files[implode('/', $paths[$i])] = $files[$original[$i]]; - unset($files[$original[$i]]); - } - - ksort($files); - - return substr($commonPath, 0, -1); - } -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php deleted file mode 100644 index 80916ef..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php +++ /dev/null @@ -1,182 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Generates an HTML report from an PHP_CodeCoverage object. - * - * @since Class available since Release 1.0.0 - */ -class PHP_CodeCoverage_Report_HTML -{ - /** - * @var string - */ - private $templatePath; - - /** - * @var string - */ - private $generator; - - /** - * @var int - */ - private $lowUpperBound; - - /** - * @var int - */ - private $highLowerBound; - - /** - * Constructor. - * - * @param int $lowUpperBound - * @param int $highLowerBound - * @param string $generator - */ - public function __construct($lowUpperBound = 50, $highLowerBound = 90, $generator = '') - { - $this->generator = $generator; - $this->highLowerBound = $highLowerBound; - $this->lowUpperBound = $lowUpperBound; - - $this->templatePath = sprintf( - '%s%sHTML%sRenderer%sTemplate%s', - dirname(__FILE__), - DIRECTORY_SEPARATOR, - DIRECTORY_SEPARATOR, - DIRECTORY_SEPARATOR, - DIRECTORY_SEPARATOR - ); - } - - /** - * @param PHP_CodeCoverage $coverage - * @param string $target - */ - public function process(PHP_CodeCoverage $coverage, $target) - { - $target = $this->getDirectory($target); - $report = $coverage->getReport(); - unset($coverage); - - if (!isset($_SERVER['REQUEST_TIME'])) { - $_SERVER['REQUEST_TIME'] = time(); - } - - $date = date('D M j G:i:s T Y', $_SERVER['REQUEST_TIME']); - - $dashboard = new PHP_CodeCoverage_Report_HTML_Renderer_Dashboard( - $this->templatePath, - $this->generator, - $date, - $this->lowUpperBound, - $this->highLowerBound - ); - - $directory = new PHP_CodeCoverage_Report_HTML_Renderer_Directory( - $this->templatePath, - $this->generator, - $date, - $this->lowUpperBound, - $this->highLowerBound - ); - - $file = new PHP_CodeCoverage_Report_HTML_Renderer_File( - $this->templatePath, - $this->generator, - $date, - $this->lowUpperBound, - $this->highLowerBound - ); - - $directory->render($report, $target . 'index.html'); - $dashboard->render($report, $target . 'dashboard.html'); - - foreach ($report as $node) { - $id = $node->getId(); - - if ($node instanceof PHP_CodeCoverage_Report_Node_Directory) { - if (!file_exists($target . $id)) { - mkdir($target . $id, 0777, true); - } - - $directory->render($node, $target . $id . '/index.html'); - $dashboard->render($node, $target . $id . '/dashboard.html'); - } else { - $dir = dirname($target . $id); - - if (!file_exists($dir)) { - mkdir($dir, 0777, true); - } - - $file->render($node, $target . $id . '.html'); - } - } - - $this->copyFiles($target); - } - - /** - * @param string $target - */ - private function copyFiles($target) - { - $dir = $this->getDirectory($target . 'css'); - copy($this->templatePath . 'css/bootstrap.min.css', $dir . 'bootstrap.min.css'); - copy($this->templatePath . 'css/nv.d3.min.css', $dir . 'nv.d3.min.css'); - copy($this->templatePath . 'css/style.css', $dir . 'style.css'); - - $dir = $this->getDirectory($target . 'fonts'); - copy($this->templatePath . 'fonts/glyphicons-halflings-regular.eot', $dir . 'glyphicons-halflings-regular.eot'); - copy($this->templatePath . 'fonts/glyphicons-halflings-regular.svg', $dir . 'glyphicons-halflings-regular.svg'); - copy($this->templatePath . 'fonts/glyphicons-halflings-regular.ttf', $dir . 'glyphicons-halflings-regular.ttf'); - copy($this->templatePath . 'fonts/glyphicons-halflings-regular.woff', $dir . 'glyphicons-halflings-regular.woff'); - copy($this->templatePath . 'fonts/glyphicons-halflings-regular.woff2', $dir . 'glyphicons-halflings-regular.woff2'); - - $dir = $this->getDirectory($target . 'js'); - copy($this->templatePath . 'js/bootstrap.min.js', $dir . 'bootstrap.min.js'); - copy($this->templatePath . 'js/d3.min.js', $dir . 'd3.min.js'); - copy($this->templatePath . 'js/holder.min.js', $dir . 'holder.min.js'); - copy($this->templatePath . 'js/html5shiv.min.js', $dir . 'html5shiv.min.js'); - copy($this->templatePath . 'js/jquery.min.js', $dir . 'jquery.min.js'); - copy($this->templatePath . 'js/nv.d3.min.js', $dir . 'nv.d3.min.js'); - copy($this->templatePath . 'js/respond.min.js', $dir . 'respond.min.js'); - } - - /** - * @param string $directory - * @return string - * @throws PHP_CodeCoverage_Exception - * @since Method available since Release 1.2.0 - */ - private function getDirectory($directory) - { - if (substr($directory, -1, 1) != DIRECTORY_SEPARATOR) { - $directory .= DIRECTORY_SEPARATOR; - } - - if (is_dir($directory)) { - return $directory; - } - - if (@mkdir($directory, 0777, true)) { - return $directory; - } - - throw new PHP_CodeCoverage_Exception( - sprintf( - 'Directory "%s" does not exist.', - $directory - ) - ); - } -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php deleted file mode 100644 index 51aa15e..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php +++ /dev/null @@ -1,271 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use SebastianBergmann\Environment\Runtime; - -/** - * Base class for PHP_CodeCoverage_Report_Node renderers. - * - * @since Class available since Release 1.1.0 - */ -abstract class PHP_CodeCoverage_Report_HTML_Renderer -{ - /** - * @var string - */ - protected $templatePath; - - /** - * @var string - */ - protected $generator; - - /** - * @var string - */ - protected $date; - - /** - * @var int - */ - protected $lowUpperBound; - - /** - * @var int - */ - protected $highLowerBound; - - /** - * @var string - */ - protected $version; - - /** - * Constructor. - * - * @param string $templatePath - * @param string $generator - * @param string $date - * @param int $lowUpperBound - * @param int $highLowerBound - */ - public function __construct($templatePath, $generator, $date, $lowUpperBound, $highLowerBound) - { - $version = new SebastianBergmann\Version('2.2.4', dirname(dirname(dirname(dirname(__DIR__))))); - - $this->templatePath = $templatePath; - $this->generator = $generator; - $this->date = $date; - $this->lowUpperBound = $lowUpperBound; - $this->highLowerBound = $highLowerBound; - $this->version = $version->getVersion(); - } - - /** - * @param Text_Template $template - * @param array $data - * @return string - */ - protected function renderItemTemplate(Text_Template $template, array $data) - { - $numSeparator = ' / '; - - if (isset($data['numClasses']) && $data['numClasses'] > 0) { - $classesLevel = $this->getColorLevel($data['testedClassesPercent']); - - $classesNumber = $data['numTestedClasses'] . $numSeparator . - $data['numClasses']; - - $classesBar = $this->getCoverageBar( - $data['testedClassesPercent'] - ); - } else { - $classesLevel = 'success'; - $classesNumber = '0' . $numSeparator . '0'; - $classesBar = $this->getCoverageBar(100); - } - - if ($data['numMethods'] > 0) { - $methodsLevel = $this->getColorLevel($data['testedMethodsPercent']); - - $methodsNumber = $data['numTestedMethods'] . $numSeparator . - $data['numMethods']; - - $methodsBar = $this->getCoverageBar( - $data['testedMethodsPercent'] - ); - } else { - $methodsLevel = 'success'; - $methodsNumber = '0' . $numSeparator . '0'; - $methodsBar = $this->getCoverageBar(100); - $data['testedMethodsPercentAsString'] = '100.00%'; - } - - if ($data['numExecutableLines'] > 0) { - $linesLevel = $this->getColorLevel($data['linesExecutedPercent']); - - $linesNumber = $data['numExecutedLines'] . $numSeparator . - $data['numExecutableLines']; - - $linesBar = $this->getCoverageBar( - $data['linesExecutedPercent'] - ); - } else { - $linesLevel = 'success'; - $linesNumber = '0' . $numSeparator . '0'; - $linesBar = $this->getCoverageBar(100); - $data['linesExecutedPercentAsString'] = '100.00%'; - } - - $template->setVar( - array( - 'icon' => isset($data['icon']) ? $data['icon'] : '', - 'crap' => isset($data['crap']) ? $data['crap'] : '', - 'name' => $data['name'], - 'lines_bar' => $linesBar, - 'lines_executed_percent' => $data['linesExecutedPercentAsString'], - 'lines_level' => $linesLevel, - 'lines_number' => $linesNumber, - 'methods_bar' => $methodsBar, - 'methods_tested_percent' => $data['testedMethodsPercentAsString'], - 'methods_level' => $methodsLevel, - 'methods_number' => $methodsNumber, - 'classes_bar' => $classesBar, - 'classes_tested_percent' => isset($data['testedClassesPercentAsString']) ? $data['testedClassesPercentAsString'] : '', - 'classes_level' => $classesLevel, - 'classes_number' => $classesNumber - ) - ); - - return $template->render(); - } - - /** - * @param Text_Template $template - * @param PHP_CodeCoverage_Report_Node $node - */ - protected function setCommonTemplateVariables(Text_Template $template, PHP_CodeCoverage_Report_Node $node) - { - $runtime = new Runtime; - - $template->setVar( - array( - 'id' => $node->getId(), - 'full_path' => $node->getPath(), - 'path_to_root' => $this->getPathToRoot($node), - 'breadcrumbs' => $this->getBreadcrumbs($node), - 'date' => $this->date, - 'version' => $this->version, - 'runtime_name' => $runtime->getName(), - 'runtime_version' => $runtime->getVersion(), - 'runtime_link' => $runtime->getVendorUrl(), - 'generator' => $this->generator, - 'low_upper_bound' => $this->lowUpperBound, - 'high_lower_bound' => $this->highLowerBound - ) - ); - } - - protected function getBreadcrumbs(PHP_CodeCoverage_Report_Node $node) - { - $breadcrumbs = ''; - $path = $node->getPathAsArray(); - $pathToRoot = array(); - $max = count($path); - - if ($node instanceof PHP_CodeCoverage_Report_Node_File) { - $max--; - } - - for ($i = 0; $i < $max; $i++) { - $pathToRoot[] = str_repeat('../', $i); - } - - foreach ($path as $step) { - if ($step !== $node) { - $breadcrumbs .= $this->getInactiveBreadcrumb( - $step, - array_pop($pathToRoot) - ); - } else { - $breadcrumbs .= $this->getActiveBreadcrumb($step); - } - } - - return $breadcrumbs; - } - - protected function getActiveBreadcrumb(PHP_CodeCoverage_Report_Node $node) - { - $buffer = sprintf( - '
  • %s
  • ' . "\n", - $node->getName() - ); - - if ($node instanceof PHP_CodeCoverage_Report_Node_Directory) { - $buffer .= '
  • (Dashboard)
  • ' . "\n"; - } - - return $buffer; - } - - protected function getInactiveBreadcrumb(PHP_CodeCoverage_Report_Node $node, $pathToRoot) - { - return sprintf( - '
  • %s
  • ' . "\n", - $pathToRoot, - $node->getName() - ); - } - - protected function getPathToRoot(PHP_CodeCoverage_Report_Node $node) - { - $id = $node->getId(); - $depth = substr_count($id, '/'); - - if ($id != 'index' && - $node instanceof PHP_CodeCoverage_Report_Node_Directory) { - $depth++; - } - - return str_repeat('../', $depth); - } - - protected function getCoverageBar($percent) - { - $level = $this->getColorLevel($percent); - - $template = new Text_Template( - $this->templatePath . 'coverage_bar.html', - '{{', - '}}' - ); - - $template->setVar(array('level' => $level, 'percent' => sprintf('%.2F', $percent))); - - return $template->render(); - } - - /** - * @param int $percent - * @return string - */ - protected function getColorLevel($percent) - { - if ($percent <= $this->lowUpperBound) { - return 'danger'; - } elseif ($percent > $this->lowUpperBound && - $percent < $this->highLowerBound) { - return 'warning'; - } else { - return 'success'; - } - } -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php deleted file mode 100644 index f648097..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php +++ /dev/null @@ -1,295 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Renders the dashboard for a PHP_CodeCoverage_Report_Node_Directory node. - * - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_HTML_Renderer_Dashboard extends PHP_CodeCoverage_Report_HTML_Renderer -{ - /** - * @param PHP_CodeCoverage_Report_Node_Directory $node - * @param string $file - */ - public function render(PHP_CodeCoverage_Report_Node_Directory $node, $file) - { - $classes = $node->getClassesAndTraits(); - $template = new Text_Template( - $this->templatePath . 'dashboard.html', - '{{', - '}}' - ); - - $this->setCommonTemplateVariables($template, $node); - - $baseLink = $node->getId() . '/'; - $complexity = $this->complexity($classes, $baseLink); - $coverageDistribution = $this->coverageDistribution($classes); - $insufficientCoverage = $this->insufficientCoverage($classes, $baseLink); - $projectRisks = $this->projectRisks($classes, $baseLink); - - $template->setVar( - array( - 'insufficient_coverage_classes' => $insufficientCoverage['class'], - 'insufficient_coverage_methods' => $insufficientCoverage['method'], - 'project_risks_classes' => $projectRisks['class'], - 'project_risks_methods' => $projectRisks['method'], - 'complexity_class' => $complexity['class'], - 'complexity_method' => $complexity['method'], - 'class_coverage_distribution' => $coverageDistribution['class'], - 'method_coverage_distribution' => $coverageDistribution['method'] - ) - ); - - $template->renderTo($file); - } - - /** - * Returns the data for the Class/Method Complexity charts. - * - * @param array $classes - * @param string $baseLink - * @return array - */ - protected function complexity(array $classes, $baseLink) - { - $result = array('class' => array(), 'method' => array()); - - foreach ($classes as $className => $class) { - foreach ($class['methods'] as $methodName => $method) { - if ($className != '*') { - $methodName = $className . '::' . $methodName; - } - - $result['method'][] = array( - $method['coverage'], - $method['ccn'], - sprintf( - '%s', - str_replace($baseLink, '', $method['link']), - $methodName - ) - ); - } - - $result['class'][] = array( - $class['coverage'], - $class['ccn'], - sprintf( - '%s', - str_replace($baseLink, '', $class['link']), - $className - ) - ); - } - - return array( - 'class' => json_encode($result['class']), - 'method' => json_encode($result['method']) - ); - } - - /** - * Returns the data for the Class / Method Coverage Distribution chart. - * - * @param array $classes - * @return array - */ - protected function coverageDistribution(array $classes) - { - $result = array( - 'class' => array( - '0%' => 0, - '0-10%' => 0, - '10-20%' => 0, - '20-30%' => 0, - '30-40%' => 0, - '40-50%' => 0, - '50-60%' => 0, - '60-70%' => 0, - '70-80%' => 0, - '80-90%' => 0, - '90-100%' => 0, - '100%' => 0 - ), - 'method' => array( - '0%' => 0, - '0-10%' => 0, - '10-20%' => 0, - '20-30%' => 0, - '30-40%' => 0, - '40-50%' => 0, - '50-60%' => 0, - '60-70%' => 0, - '70-80%' => 0, - '80-90%' => 0, - '90-100%' => 0, - '100%' => 0 - ) - ); - - foreach ($classes as $class) { - foreach ($class['methods'] as $methodName => $method) { - if ($method['coverage'] == 0) { - $result['method']['0%']++; - } elseif ($method['coverage'] == 100) { - $result['method']['100%']++; - } else { - $key = floor($method['coverage'] / 10) * 10; - $key = $key . '-' . ($key + 10) . '%'; - $result['method'][$key]++; - } - } - - if ($class['coverage'] == 0) { - $result['class']['0%']++; - } elseif ($class['coverage'] == 100) { - $result['class']['100%']++; - } else { - $key = floor($class['coverage'] / 10) * 10; - $key = $key . '-' . ($key + 10) . '%'; - $result['class'][$key]++; - } - } - - return array( - 'class' => json_encode(array_values($result['class'])), - 'method' => json_encode(array_values($result['method'])) - ); - } - - /** - * Returns the classes / methods with insufficient coverage. - * - * @param array $classes - * @param string $baseLink - * @return array - */ - protected function insufficientCoverage(array $classes, $baseLink) - { - $leastTestedClasses = array(); - $leastTestedMethods = array(); - $result = array('class' => '', 'method' => ''); - - foreach ($classes as $className => $class) { - foreach ($class['methods'] as $methodName => $method) { - if ($method['coverage'] < $this->highLowerBound) { - if ($className != '*') { - $key = $className . '::' . $methodName; - } else { - $key = $methodName; - } - - $leastTestedMethods[$key] = $method['coverage']; - } - } - - if ($class['coverage'] < $this->highLowerBound) { - $leastTestedClasses[$className] = $class['coverage']; - } - } - - asort($leastTestedClasses); - asort($leastTestedMethods); - - foreach ($leastTestedClasses as $className => $coverage) { - $result['class'] .= sprintf( - ' %s%d%%' . "\n", - str_replace($baseLink, '', $classes[$className]['link']), - $className, - $coverage - ); - } - - foreach ($leastTestedMethods as $methodName => $coverage) { - list($class, $method) = explode('::', $methodName); - - $result['method'] .= sprintf( - ' %s%d%%' . "\n", - str_replace($baseLink, '', $classes[$class]['methods'][$method]['link']), - $methodName, - $method, - $coverage - ); - } - - return $result; - } - - /** - * Returns the project risks according to the CRAP index. - * - * @param array $classes - * @param string $baseLink - * @return array - */ - protected function projectRisks(array $classes, $baseLink) - { - $classRisks = array(); - $methodRisks = array(); - $result = array('class' => '', 'method' => ''); - - foreach ($classes as $className => $class) { - foreach ($class['methods'] as $methodName => $method) { - if ($method['coverage'] < $this->highLowerBound && - $method['ccn'] > 1) { - if ($className != '*') { - $key = $className . '::' . $methodName; - } else { - $key = $methodName; - } - - $methodRisks[$key] = $method['crap']; - } - } - - if ($class['coverage'] < $this->highLowerBound && - $class['ccn'] > count($class['methods'])) { - $classRisks[$className] = $class['crap']; - } - } - - arsort($classRisks); - arsort($methodRisks); - - foreach ($classRisks as $className => $crap) { - $result['class'] .= sprintf( - ' %s%d' . "\n", - str_replace($baseLink, '', $classes[$className]['link']), - $className, - $crap - ); - } - - foreach ($methodRisks as $methodName => $crap) { - list($class, $method) = explode('::', $methodName); - - $result['method'] .= sprintf( - ' %s%d' . "\n", - str_replace($baseLink, '', $classes[$class]['methods'][$method]['link']), - $methodName, - $method, - $crap - ); - } - - return $result; - } - - protected function getActiveBreadcrumb(PHP_CodeCoverage_Report_Node $node) - { - return sprintf( - '
  • %s
  • ' . "\n" . - '
  • (Dashboard)
  • ' . "\n", - $node->getName() - ); - } -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php deleted file mode 100644 index 4415c52..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php +++ /dev/null @@ -1,97 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Renders a PHP_CodeCoverage_Report_Node_Directory node. - * - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_HTML_Renderer_Directory extends PHP_CodeCoverage_Report_HTML_Renderer -{ - /** - * @param PHP_CodeCoverage_Report_Node_Directory $node - * @param string $file - */ - public function render(PHP_CodeCoverage_Report_Node_Directory $node, $file) - { - $template = new Text_Template($this->templatePath . 'directory.html', '{{', '}}'); - - $this->setCommonTemplateVariables($template, $node); - - $items = $this->renderItem($node, true); - - foreach ($node->getDirectories() as $item) { - $items .= $this->renderItem($item); - } - - foreach ($node->getFiles() as $item) { - $items .= $this->renderItem($item); - } - - $template->setVar( - array( - 'id' => $node->getId(), - 'items' => $items - ) - ); - - $template->renderTo($file); - } - - /** - * @param PHP_CodeCoverage_Report_Node $item - * @param bool $total - * @return string - */ - protected function renderItem(PHP_CodeCoverage_Report_Node $item, $total = false) - { - $data = array( - 'numClasses' => $item->getNumClassesAndTraits(), - 'numTestedClasses' => $item->getNumTestedClassesAndTraits(), - 'numMethods' => $item->getNumMethods(), - 'numTestedMethods' => $item->getNumTestedMethods(), - 'linesExecutedPercent' => $item->getLineExecutedPercent(false), - 'linesExecutedPercentAsString' => $item->getLineExecutedPercent(), - 'numExecutedLines' => $item->getNumExecutedLines(), - 'numExecutableLines' => $item->getNumExecutableLines(), - 'testedMethodsPercent' => $item->getTestedMethodsPercent(false), - 'testedMethodsPercentAsString' => $item->getTestedMethodsPercent(), - 'testedClassesPercent' => $item->getTestedClassesAndTraitsPercent(false), - 'testedClassesPercentAsString' => $item->getTestedClassesAndTraitsPercent() - ); - - if ($total) { - $data['name'] = 'Total'; - } else { - if ($item instanceof PHP_CodeCoverage_Report_Node_Directory) { - $data['name'] = sprintf( - '%s', - $item->getName(), - $item->getName() - ); - - $data['icon'] = ' '; - } else { - $data['name'] = sprintf( - '%s', - $item->getName(), - $item->getName() - ); - - $data['icon'] = ' '; - } - } - - return $this->renderItemTemplate( - new Text_Template($this->templatePath . 'directory_item.html', '{{', '}}'), - $data - ); - } -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php deleted file mode 100644 index d52345d..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php +++ /dev/null @@ -1,556 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -// @codeCoverageIgnoreStart -if (!defined('T_TRAIT')) { - define('T_TRAIT', 1001); -} - -if (!defined('T_INSTEADOF')) { - define('T_INSTEADOF', 1002); -} - -if (!defined('T_CALLABLE')) { - define('T_CALLABLE', 1003); -} - -if (!defined('T_FINALLY')) { - define('T_FINALLY', 1004); -} - -if (!defined('T_YIELD')) { - define('T_YIELD', 1005); -} -// @codeCoverageIgnoreEnd - -/** - * Renders a PHP_CodeCoverage_Report_Node_File node. - * - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_HTML_Renderer_File extends PHP_CodeCoverage_Report_HTML_Renderer -{ - /** - * @var int - */ - private $htmlspecialcharsFlags; - - /** - * Constructor. - * - * @param string $templatePath - * @param string $generator - * @param string $date - * @param int $lowUpperBound - * @param int $highLowerBound - */ - public function __construct($templatePath, $generator, $date, $lowUpperBound, $highLowerBound) - { - parent::__construct( - $templatePath, - $generator, - $date, - $lowUpperBound, - $highLowerBound - ); - - $this->htmlspecialcharsFlags = ENT_COMPAT; - - if (PHP_VERSION_ID >= 50400 && defined('ENT_SUBSTITUTE')) { - $this->htmlspecialcharsFlags = $this->htmlspecialcharsFlags | ENT_HTML401 | ENT_SUBSTITUTE; - } - } - - /** - * @param PHP_CodeCoverage_Report_Node_File $node - * @param string $file - */ - public function render(PHP_CodeCoverage_Report_Node_File $node, $file) - { - $template = new Text_Template($this->templatePath . 'file.html', '{{', '}}'); - - $template->setVar( - array( - 'items' => $this->renderItems($node), - 'lines' => $this->renderSource($node) - ) - ); - - $this->setCommonTemplateVariables($template, $node); - - $template->renderTo($file); - } - - /** - * @param PHP_CodeCoverage_Report_Node_File $node - * @return string - */ - protected function renderItems(PHP_CodeCoverage_Report_Node_File $node) - { - $template = new Text_Template($this->templatePath . 'file_item.html', '{{', '}}'); - - $methodItemTemplate = new Text_Template( - $this->templatePath . 'method_item.html', - '{{', - '}}' - ); - - $items = $this->renderItemTemplate( - $template, - array( - 'name' => 'Total', - 'numClasses' => $node->getNumClassesAndTraits(), - 'numTestedClasses' => $node->getNumTestedClassesAndTraits(), - 'numMethods' => $node->getNumMethods(), - 'numTestedMethods' => $node->getNumTestedMethods(), - 'linesExecutedPercent' => $node->getLineExecutedPercent(false), - 'linesExecutedPercentAsString' => $node->getLineExecutedPercent(), - 'numExecutedLines' => $node->getNumExecutedLines(), - 'numExecutableLines' => $node->getNumExecutableLines(), - 'testedMethodsPercent' => $node->getTestedMethodsPercent(false), - 'testedMethodsPercentAsString' => $node->getTestedMethodsPercent(), - 'testedClassesPercent' => $node->getTestedClassesAndTraitsPercent(false), - 'testedClassesPercentAsString' => $node->getTestedClassesAndTraitsPercent(), - 'crap' => 'CRAP' - ) - ); - - $items .= $this->renderFunctionItems( - $node->getFunctions(), - $methodItemTemplate - ); - - $items .= $this->renderTraitOrClassItems( - $node->getTraits(), - $template, - $methodItemTemplate - ); - - $items .= $this->renderTraitOrClassItems( - $node->getClasses(), - $template, - $methodItemTemplate - ); - - return $items; - } - - /** - * @param array $items - * @param Text_Template $template - * @param Text_Template $methodItemTemplate - * @return string - */ - protected function renderTraitOrClassItems(array $items, Text_Template $template, Text_Template $methodItemTemplate) - { - if (empty($items)) { - return ''; - } - - $buffer = ''; - - foreach ($items as $name => $item) { - $numMethods = count($item['methods']); - $numTestedMethods = 0; - - foreach ($item['methods'] as $method) { - if ($method['executedLines'] == $method['executableLines']) { - $numTestedMethods++; - } - } - - $buffer .= $this->renderItemTemplate( - $template, - array( - 'name' => $name, - 'numClasses' => 1, - 'numTestedClasses' => $numTestedMethods == $numMethods ? 1 : 0, - 'numMethods' => $numMethods, - 'numTestedMethods' => $numTestedMethods, - 'linesExecutedPercent' => PHP_CodeCoverage_Util::percent( - $item['executedLines'], - $item['executableLines'], - false - ), - 'linesExecutedPercentAsString' => PHP_CodeCoverage_Util::percent( - $item['executedLines'], - $item['executableLines'], - true - ), - 'numExecutedLines' => $item['executedLines'], - 'numExecutableLines' => $item['executableLines'], - 'testedMethodsPercent' => PHP_CodeCoverage_Util::percent( - $numTestedMethods, - $numMethods, - false - ), - 'testedMethodsPercentAsString' => PHP_CodeCoverage_Util::percent( - $numTestedMethods, - $numMethods, - true - ), - 'testedClassesPercent' => PHP_CodeCoverage_Util::percent( - $numTestedMethods == $numMethods ? 1 : 0, - 1, - false - ), - 'testedClassesPercentAsString' => PHP_CodeCoverage_Util::percent( - $numTestedMethods == $numMethods ? 1 : 0, - 1, - true - ), - 'crap' => $item['crap'] - ) - ); - - foreach ($item['methods'] as $method) { - $buffer .= $this->renderFunctionOrMethodItem( - $methodItemTemplate, - $method, - ' ' - ); - } - } - - return $buffer; - } - - /** - * @param array $functions - * @param Text_Template $template - * @return string - */ - protected function renderFunctionItems(array $functions, Text_Template $template) - { - if (empty($functions)) { - return ''; - } - - $buffer = ''; - - foreach ($functions as $function) { - $buffer .= $this->renderFunctionOrMethodItem( - $template, - $function - ); - } - - return $buffer; - } - - /** - * @param Text_Template $template - * @return string - */ - protected function renderFunctionOrMethodItem(Text_Template $template, array $item, $indent = '') - { - $numTestedItems = $item['executedLines'] == $item['executableLines'] ? 1 : 0; - - return $this->renderItemTemplate( - $template, - array( - 'name' => sprintf( - '%s%s', - $indent, - $item['startLine'], - htmlspecialchars($item['signature']), - isset($item['functionName']) ? $item['functionName'] : $item['methodName'] - ), - 'numMethods' => 1, - 'numTestedMethods' => $numTestedItems, - 'linesExecutedPercent' => PHP_CodeCoverage_Util::percent( - $item['executedLines'], - $item['executableLines'], - false - ), - 'linesExecutedPercentAsString' => PHP_CodeCoverage_Util::percent( - $item['executedLines'], - $item['executableLines'], - true - ), - 'numExecutedLines' => $item['executedLines'], - 'numExecutableLines' => $item['executableLines'], - 'testedMethodsPercent' => PHP_CodeCoverage_Util::percent( - $numTestedItems, - 1, - false - ), - 'testedMethodsPercentAsString' => PHP_CodeCoverage_Util::percent( - $numTestedItems, - 1, - true - ), - 'crap' => $item['crap'] - ) - ); - } - - /** - * @param PHP_CodeCoverage_Report_Node_File $node - * @return string - */ - protected function renderSource(PHP_CodeCoverage_Report_Node_File $node) - { - $coverageData = $node->getCoverageData(); - $testData = $node->getTestData(); - $codeLines = $this->loadFile($node->getPath()); - $lines = ''; - $i = 1; - - foreach ($codeLines as $line) { - $trClass = ''; - $popoverContent = ''; - $popoverTitle = ''; - - if (array_key_exists($i, $coverageData)) { - $numTests = count($coverageData[$i]); - - if ($coverageData[$i] === null) { - $trClass = ' class="warning"'; - } elseif ($numTests == 0) { - $trClass = ' class="danger"'; - } else { - $lineCss = 'covered-by-large-tests'; - $popoverContent = '
      '; - - if ($numTests > 1) { - $popoverTitle = $numTests . ' tests cover line ' . $i; - } else { - $popoverTitle = '1 test covers line ' . $i; - } - - foreach ($coverageData[$i] as $test) { - if ($lineCss == 'covered-by-large-tests' && $testData[$test]['size'] == 'medium') { - $lineCss = 'covered-by-medium-tests'; - } elseif ($testData[$test]['size'] == 'small') { - $lineCss = 'covered-by-small-tests'; - } - - switch ($testData[$test]['status']) { - case 0: - switch ($testData[$test]['size']) { - case 'small': - $testCSS = ' class="covered-by-small-tests"'; - break; - - case 'medium': - $testCSS = ' class="covered-by-medium-tests"'; - break; - - default: - $testCSS = ' class="covered-by-large-tests"'; - break; - } - break; - - case 1: - case 2: - $testCSS = ' class="warning"'; - break; - - case 3: - $testCSS = ' class="danger"'; - break; - - case 4: - $testCSS = ' class="danger"'; - break; - - default: - $testCSS = ''; - } - - $popoverContent .= sprintf( - '%s', - $testCSS, - htmlspecialchars($test) - ); - } - - $popoverContent .= '
    '; - $trClass = ' class="' . $lineCss . ' popin"'; - } - } - - if (!empty($popoverTitle)) { - $popover = sprintf( - ' data-title="%s" data-content="%s" data-placement="bottom" data-html="true"', - $popoverTitle, - htmlspecialchars($popoverContent) - ); - } else { - $popover = ''; - } - - $lines .= sprintf( - ' %s' . "\n", - $trClass, - $popover, - $i, - $i, - $i, - $line - ); - - $i++; - } - - return $lines; - } - - /** - * @param string $file - * @return array - */ - protected function loadFile($file) - { - $buffer = file_get_contents($file); - $tokens = token_get_all($buffer); - $result = array(''); - $i = 0; - $stringFlag = false; - $fileEndsWithNewLine = substr($buffer, -1) == "\n"; - - unset($buffer); - - foreach ($tokens as $j => $token) { - if (is_string($token)) { - if ($token === '"' && $tokens[$j - 1] !== '\\') { - $result[$i] .= sprintf( - '%s', - htmlspecialchars($token) - ); - - $stringFlag = !$stringFlag; - } else { - $result[$i] .= sprintf( - '%s', - htmlspecialchars($token) - ); - } - - continue; - } - - list($token, $value) = $token; - - $value = str_replace( - array("\t", ' '), - array('    ', ' '), - htmlspecialchars($value, $this->htmlspecialcharsFlags) - ); - - if ($value === "\n") { - $result[++$i] = ''; - } else { - $lines = explode("\n", $value); - - foreach ($lines as $jj => $line) { - $line = trim($line); - - if ($line !== '') { - if ($stringFlag) { - $colour = 'string'; - } else { - switch ($token) { - case T_INLINE_HTML: - $colour = 'html'; - break; - - case T_COMMENT: - case T_DOC_COMMENT: - $colour = 'comment'; - break; - - case T_ABSTRACT: - case T_ARRAY: - case T_AS: - case T_BREAK: - case T_CALLABLE: - case T_CASE: - case T_CATCH: - case T_CLASS: - case T_CLONE: - case T_CONTINUE: - case T_DEFAULT: - case T_ECHO: - case T_ELSE: - case T_ELSEIF: - case T_EMPTY: - case T_ENDDECLARE: - case T_ENDFOR: - case T_ENDFOREACH: - case T_ENDIF: - case T_ENDSWITCH: - case T_ENDWHILE: - case T_EXIT: - case T_EXTENDS: - case T_FINAL: - case T_FINALLY: - case T_FOREACH: - case T_FUNCTION: - case T_GLOBAL: - case T_IF: - case T_IMPLEMENTS: - case T_INCLUDE: - case T_INCLUDE_ONCE: - case T_INSTANCEOF: - case T_INSTEADOF: - case T_INTERFACE: - case T_ISSET: - case T_LOGICAL_AND: - case T_LOGICAL_OR: - case T_LOGICAL_XOR: - case T_NAMESPACE: - case T_NEW: - case T_PRIVATE: - case T_PROTECTED: - case T_PUBLIC: - case T_REQUIRE: - case T_REQUIRE_ONCE: - case T_RETURN: - case T_STATIC: - case T_THROW: - case T_TRAIT: - case T_TRY: - case T_UNSET: - case T_USE: - case T_VAR: - case T_WHILE: - case T_YIELD: - $colour = 'keyword'; - break; - - default: - $colour = 'default'; - } - } - - $result[$i] .= sprintf( - '%s', - $colour, - $line - ); - } - - if (isset($lines[$jj + 1])) { - $result[++$i] = ''; - } - } - } - } - - if ($fileEndsWithNewLine) { - unset($result[count($result)-1]); - } - - return $result; - } -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/coverage_bar.html.dist b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/coverage_bar.html.dist deleted file mode 100644 index 5a09c35..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/coverage_bar.html.dist +++ /dev/null @@ -1,5 +0,0 @@ -
    -
    - {{percent}}% covered ({{level}}) -
    -
    diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/bootstrap.min.css b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/bootstrap.min.css deleted file mode 100644 index cd1c616..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/bootstrap.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * Bootstrap v3.3.4 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,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:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{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 td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;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}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.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-md-1,.col-md-10,.col-md-11,.col-md-12,.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-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.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-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{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=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;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:34px}.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],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px \9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.form-group-sm .form-control{height:30px;line-height:30px}select[multiple].form-group-sm .form-control,textarea.form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:5px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.form-group-lg .form-control{height:46px;line-height:46px}select[multiple].form-group-lg .form-control,textarea.form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:10px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;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:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.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}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{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 .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{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-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{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-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px)and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{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-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{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;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width: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 .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{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;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left: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:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;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}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.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-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.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{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-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{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;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:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-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 .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{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);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-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:#5cb85c}.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:#5bc0de}.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:#f0ad4e}.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:#d9534f}.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{overflow:hidden;zoom:1}.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-body,.media-left,.media-right{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{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-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:focus,a.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;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-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;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-left-radius:3px;border-top-right-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>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody: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:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.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 th:first-child,.panel>.table-responsive:first-child>.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 th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.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 th:last-child,.panel>.table-responsive:first-child>.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 th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.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 th:first-child,.panel>.table-responsive:last-child>.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 th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.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 th:last-child,.panel>.table-responsive:last-child>.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 th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.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 #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.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>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height: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:#f5f5f5;border:1px solid #e3e3e3;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:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.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;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.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:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.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{right:5px;bottom:0;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:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;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)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;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{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";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,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,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;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.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:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;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:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.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%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;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-next,.carousel-control .icon-prev{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{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left: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-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-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}td.visible-xs,th.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}td.visible-sm,th.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}td.visible-md,th.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}td.visible-lg,th.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}td.visible-print,th.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}} \ No newline at end of file diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/nv.d3.min.css b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/nv.d3.min.css deleted file mode 100644 index 7a6f7fe..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/nv.d3.min.css +++ /dev/null @@ -1 +0,0 @@ -.nvd3 .nv-axis{pointer-events:none;opacity:1}.nvd3 .nv-axis path{fill:none;stroke:#000;stroke-opacity:.75;shape-rendering:crispEdges}.nvd3 .nv-axis path.domain{stroke-opacity:.75}.nvd3 .nv-axis.nv-x path.domain{stroke-opacity:0}.nvd3 .nv-axis line{fill:none;stroke:#e5e5e5;shape-rendering:crispEdges}.nvd3 .nv-axis .zero line,.nvd3 .nv-axis line.zero{stroke-opacity:.75}.nvd3 .nv-axis .nv-axisMaxMin text{font-weight:700}.nvd3 .x .nv-axis .nv-axisMaxMin text,.nvd3 .x2 .nv-axis .nv-axisMaxMin text,.nvd3 .x3 .nv-axis .nv-axisMaxMin text{text-anchor:middle}.nvd3 .nv-axis.nv-disabled{opacity:0}.nvd3 .nv-bars rect{fill-opacity:.75;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-bars rect.hover{fill-opacity:1}.nvd3 .nv-bars .hover rect{fill:#add8e6}.nvd3 .nv-bars text{fill:rgba(0,0,0,0)}.nvd3 .nv-bars .hover text{fill:rgba(0,0,0,1)}.nvd3 .nv-multibar .nv-groups rect,.nvd3 .nv-multibarHorizontal .nv-groups rect,.nvd3 .nv-discretebar .nv-groups rect{stroke-opacity:0;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-multibar .nv-groups rect:hover,.nvd3 .nv-multibarHorizontal .nv-groups rect:hover,.nvd3 .nv-candlestickBar .nv-ticks rect:hover,.nvd3 .nv-discretebar .nv-groups rect:hover{fill-opacity:1}.nvd3 .nv-discretebar .nv-groups text,.nvd3 .nv-multibarHorizontal .nv-groups text{font-weight:700;fill:rgba(0,0,0,1);stroke:rgba(0,0,0,0)}.nvd3 .nv-boxplot circle{fill-opacity:.5}.nvd3 .nv-boxplot circle:hover{fill-opacity:1}.nvd3 .nv-boxplot rect:hover{fill-opacity:1}.nvd3 line.nv-boxplot-median{stroke:#000}.nv-boxplot-tick:hover{stroke-width:2.5px}.nvd3.nv-bullet{font:10px sans-serif}.nvd3.nv-bullet .nv-measure{fill-opacity:.8}.nvd3.nv-bullet .nv-measure:hover{fill-opacity:1}.nvd3.nv-bullet .nv-marker{stroke:#000;stroke-width:2px}.nvd3.nv-bullet .nv-markerTriangle{stroke:#000;fill:#fff;stroke-width:1.5px}.nvd3.nv-bullet .nv-tick line{stroke:#666;stroke-width:.5px}.nvd3.nv-bullet .nv-range.nv-s0{fill:#eee}.nvd3.nv-bullet .nv-range.nv-s1{fill:#ddd}.nvd3.nv-bullet .nv-range.nv-s2{fill:#ccc}.nvd3.nv-bullet .nv-title{font-size:14px;font-weight:700}.nvd3.nv-bullet .nv-subtitle{fill:#999}.nvd3.nv-bullet .nv-range{fill:#bababa;fill-opacity:.4}.nvd3.nv-bullet .nv-range:hover{fill-opacity:.7}.nvd3.nv-candlestickBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.positive rect{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.negative rect{stroke:#d62728;fill:#d62728}.with-transitions .nv-candlestickBar .nv-ticks .nv-tick{transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-candlestickBar .nv-ticks line{stroke:#333}.nvd3 .nv-legend .nv-disabled rect{}.nvd3 .nv-check-box .nv-box{fill-opacity:0;stroke-width:2}.nvd3 .nv-check-box .nv-check{fill-opacity:0;stroke-width:4}.nvd3 .nv-series.nv-disabled .nv-check-box .nv-check{fill-opacity:0;stroke-opacity:0}.nvd3 .nv-controlsWrap .nv-legend .nv-check-box .nv-check{opacity:0}.nvd3.nv-linePlusBar .nv-bar rect{fill-opacity:.75}.nvd3.nv-linePlusBar .nv-bar rect:hover{fill-opacity:1}.nvd3 .nv-groups path.nv-line{fill:none}.nvd3 .nv-groups path.nv-area{stroke:none}.nvd3.nv-line .nvd3.nv-scatter .nv-groups .nv-point{fill-opacity:0;stroke-opacity:0}.nvd3.nv-scatter.nv-single-point .nv-groups .nv-point{fill-opacity:.5!important;stroke-opacity:.5!important}.with-transitions .nvd3 .nv-groups .nv-point{transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-scatter .nv-groups .nv-point.hover,.nvd3 .nv-groups .nv-point.hover{stroke-width:7px;fill-opacity:.95!important;stroke-opacity:.95!important}.nvd3 .nv-point-paths path{stroke:#aaa;stroke-opacity:0;fill:#eee;fill-opacity:0}.nvd3 .nv-indexLine{cursor:ew-resize}svg.nvd3-svg{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-ms-user-select:none;-moz-user-select:none;user-select:none;display:block;width:100%;height:100%}.nvtooltip.with-3d-shadow,.with-3d-shadow .nvtooltip{-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nvd3 text{font:400 12px Arial}.nvd3 .title{font:700 14px Arial}.nvd3 .nv-background{fill:#fff;fill-opacity:0}.nvd3.nv-noData{font-size:18px;font-weight:700}.nv-brush .extent{fill-opacity:.125;shape-rendering:crispEdges}.nv-brush .resize path{fill:#eee;stroke:#666}.nvd3 .nv-legend .nv-series{cursor:pointer}.nvd3 .nv-legend .nv-disabled circle{fill-opacity:0}.nvd3 .nv-brush .extent{fill-opacity:0!important}.nvd3 .nv-brushBackground rect{stroke:#000;stroke-width:.4;fill:#fff;fill-opacity:.7}.nvd3.nv-ohlcBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.positive{stroke:#2ca02c}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.negative{stroke:#d62728}.nvd3 .background path{fill:none;stroke:#EEE;stroke-opacity:.4;shape-rendering:crispEdges}.nvd3 .foreground path{fill:none;stroke-opacity:.7}.nvd3 .nv-parallelCoordinates-brush .extent{fill:#fff;fill-opacity:.6;stroke:gray;shape-rendering:crispEdges}.nvd3 .nv-parallelCoordinates .hover{fill-opacity:1;stroke-width:3px}.nvd3 .missingValuesline line{fill:none;stroke:#000;stroke-width:1;stroke-opacity:1;stroke-dasharray:5,5}.nvd3.nv-pie path{stroke-opacity:0;transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-pie .nv-pie-title{font-size:24px;fill:rgba(19,196,249,.59)}.nvd3.nv-pie .nv-slice text{stroke:#000;stroke-width:0}.nvd3.nv-pie path{stroke:#fff;stroke-width:1px;stroke-opacity:1}.nvd3.nv-pie .hover path{fill-opacity:.7}.nvd3.nv-pie .nv-label{pointer-events:none}.nvd3.nv-pie .nv-label rect{fill-opacity:0;stroke-opacity:0}.nvd3 .nv-groups .nv-point.hover{stroke-width:20px;stroke-opacity:.5}.nvd3 .nv-scatter .nv-point.hover{fill-opacity:1}.nv-noninteractive{pointer-events:none}.nv-distx,.nv-disty{pointer-events:none}.nvd3.nv-sparkline path{fill:none}.nvd3.nv-sparklineplus g.nv-hoverValue{pointer-events:none}.nvd3.nv-sparklineplus .nv-hoverValue line{stroke:#333;stroke-width:1.5px}.nvd3.nv-sparklineplus,.nvd3.nv-sparklineplus g{pointer-events:all}.nvd3 .nv-hoverArea{fill-opacity:0;stroke-opacity:0}.nvd3.nv-sparklineplus .nv-xValue,.nvd3.nv-sparklineplus .nv-yValue{stroke-width:0;font-size:.9em;font-weight:400}.nvd3.nv-sparklineplus .nv-yValue{stroke:#f66}.nvd3.nv-sparklineplus .nv-maxValue{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-sparklineplus .nv-minValue{stroke:#d62728;fill:#d62728}.nvd3.nv-sparklineplus .nv-currentValue{font-weight:700;font-size:1.1em}.nvd3.nv-stackedarea path.nv-area{fill-opacity:.7;stroke-opacity:0;transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-stackedarea path.nv-area.hover{fill-opacity:.9}.nvd3.nv-stackedarea .nv-groups .nv-point{stroke-opacity:0;fill-opacity:0}.nvtooltip{position:absolute;background-color:rgba(255,255,255,1);color:rgba(0,0,0,1);padding:1px;border:1px solid rgba(0,0,0,.2);z-index:10000;display:block;font-family:Arial;font-size:13px;text-align:left;pointer-events:none;white-space:nowrap;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.nvtooltip{background:rgba(255,255,255,.8);border:1px solid rgba(0,0,0,.5);border-radius:4px}.nvtooltip.with-transitions,.with-transitions .nvtooltip{transition:opacity 50ms linear;-moz-transition:opacity 50ms linear;-webkit-transition:opacity 50ms linear;transition-delay:200ms;-moz-transition-delay:200ms;-webkit-transition-delay:200ms}.nvtooltip.x-nvtooltip,.nvtooltip.y-nvtooltip{padding:8px}.nvtooltip h3{margin:0;padding:4px 14px;line-height:18px;font-weight:400;background-color:rgba(247,247,247,.75);color:rgba(0,0,0,1);text-align:center;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.nvtooltip p{margin:0;padding:5px 14px;text-align:center}.nvtooltip span{display:inline-block;margin:2px 0}.nvtooltip table{margin:6px;border-spacing:0}.nvtooltip table td{padding:2px 9px 2px 0;vertical-align:middle}.nvtooltip table td.key{font-weight:400}.nvtooltip table td.value{text-align:right;font-weight:700}.nvtooltip table tr.highlight td{padding:1px 9px 1px 0;border-bottom-style:solid;border-bottom-width:1px;border-top-style:solid;border-top-width:1px}.nvtooltip table td.legend-color-guide div{width:8px;height:8px;vertical-align:middle}.nvtooltip table td.legend-color-guide div{width:12px;height:12px;border:1px solid #999}.nvtooltip .footer{padding:3px;text-align:center}.nvtooltip-pending-removal{pointer-events:none;display:none}.nvd3 .nv-interactiveGuideLine{pointer-events:none}.nvd3 line.nv-guideline{stroke:#ccc} \ No newline at end of file diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/style.css b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/style.css deleted file mode 100644 index 824fb31..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/css/style.css +++ /dev/null @@ -1,122 +0,0 @@ -body { - padding-top: 10px; -} - -.popover { - max-width: none; -} - -.glyphicon { - margin-right:.25em; -} - -.table-bordered>thead>tr>td { - border-bottom-width: 1px; -} - -.table tbody>tr>td, .table thead>tr>td { - padding-top: 3px; - padding-bottom: 3px; -} - -.table-condensed tbody>tr>td { - padding-top: 0; - padding-bottom: 0; -} - -.table .progress { - margin-bottom: inherit; -} - -.table-borderless th, .table-borderless td { - border: 0 !important; -} - -.table tbody tr.covered-by-large-tests, li.covered-by-large-tests, tr.success, td.success, li.success, span.success { - background-color: #dff0d8; -} - -.table tbody tr.covered-by-medium-tests, li.covered-by-medium-tests { - background-color: #c3e3b5; -} - -.table tbody tr.covered-by-small-tests, li.covered-by-small-tests { - background-color: #99cb84; -} - -.table tbody tr.danger, .table tbody td.danger, li.danger, span.danger { - background-color: #f2dede; -} - -.table tbody td.warning, li.warning, span.warning { - background-color: #fcf8e3; -} - -.table tbody td.info { - background-color: #d9edf7; -} - -td.big { - width: 117px; -} - -td.small { -} - -td.codeLine { - font-family: monospace; - white-space: pre; -} - -td span.comment { - color: #888a85; -} - -td span.default { - color: #2e3436; -} - -td span.html { - color: #888a85; -} - -td span.keyword { - color: #2e3436; - font-weight: bold; -} - -pre span.string { - color: #2e3436; -} - -span.success, span.warning, span.danger { - margin-right: 2px; - padding-left: 10px; - padding-right: 10px; - text-align: center; -} - -#classCoverageDistribution, #classComplexity { - height: 200px; - width: 475px; -} - -#toplink { - position: fixed; - left: 5px; - bottom: 5px; - outline: 0; -} - -svg text { - font-family: "Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif; - font-size: 11px; - color: #666; - fill: #666; -} - -.scrollbox { - height:245px; - overflow-x:hidden; - overflow-y:scroll; -} diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/dashboard.html.dist b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/dashboard.html.dist deleted file mode 100644 index ed18988..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/dashboard.html.dist +++ /dev/null @@ -1,284 +0,0 @@ - - - - - Dashboard for {{full_path}} - - - - - - - -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    Classes

    -
    -
    -
    -
    -

    Coverage Distribution

    -
    - -
    -
    -
    -

    Complexity

    -
    - -
    -
    -
    -
    -
    -

    Insufficient Coverage

    -
    - - - - - - - - -{{insufficient_coverage_classes}} - -
    ClassCoverage
    -
    -
    -
    -

    Project Risks

    -
    - - - - - - - - -{{project_risks_classes}} - -
    ClassCRAP
    -
    -
    -
    -
    -
    -

    Methods

    -
    -
    -
    -
    -

    Coverage Distribution

    -
    - -
    -
    -
    -

    Complexity

    -
    - -
    -
    -
    -
    -
    -

    Insufficient Coverage

    -
    - - - - - - - - -{{insufficient_coverage_methods}} - -
    MethodCoverage
    -
    -
    -
    -

    Project Risks

    -
    - - - - - - - - -{{project_risks_methods}} - -
    MethodCRAP
    -
    -
    -
    - -
    - - - - - - - - diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/directory.html.dist b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/directory.html.dist deleted file mode 100644 index efe743f..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/directory.html.dist +++ /dev/null @@ -1,61 +0,0 @@ - - - - - Code Coverage for {{full_path}} - - - - - - -
    -
    -
    -
    - -
    -
    -
    -
    -
    - - - - - - - - - - - - - - -{{items}} - -
     
    Code Coverage
     
    Lines
    Functions and Methods
    Classes and Traits
    - -
    - - - - - diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/directory_item.html.dist b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/directory_item.html.dist deleted file mode 100644 index 78dbb35..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/directory_item.html.dist +++ /dev/null @@ -1,13 +0,0 @@ - - {{icon}}{{name}} - {{lines_bar}} -
    {{lines_executed_percent}}
    -
    {{lines_number}}
    - {{methods_bar}} -
    {{methods_tested_percent}}
    -
    {{methods_number}}
    - {{classes_bar}} -
    {{classes_tested_percent}}
    -
    {{classes_number}}
    - - diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/file.html.dist b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/file.html.dist deleted file mode 100644 index 59a0684..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/file.html.dist +++ /dev/null @@ -1,90 +0,0 @@ - - - - - Code Coverage for {{full_path}} - - - - - - -
    -
    -
    -
    - -
    -
    -
    -
    -
    - - - - - - - - - - - - - - -{{items}} - -
     
    Code Coverage
     
    Classes and Traits
    Functions and Methods
    Lines
    - - -{{lines}} - -
    - -
    - - - - - - diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/file_item.html.dist b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/file_item.html.dist deleted file mode 100644 index 756fdd6..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/file_item.html.dist +++ /dev/null @@ -1,14 +0,0 @@ - - {{name}} - {{classes_bar}} -
    {{classes_tested_percent}}
    -
    {{classes_number}}
    - {{methods_bar}} -
    {{methods_tested_percent}}
    -
    {{methods_number}}
    - {{crap}} - {{lines_bar}} -
    {{lines_executed_percent}}
    -
    {{lines_number}}
    - - diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.eot b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.eot deleted file mode 100644 index b93a495..0000000 Binary files a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.eot and /dev/null differ diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.svg b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.svg deleted file mode 100644 index 94fb549..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.svg +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.ttf b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.ttf deleted file mode 100644 index 1413fc6..0000000 Binary files a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.ttf and /dev/null differ diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.woff b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.woff deleted file mode 100644 index 9e61285..0000000 Binary files a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.woff and /dev/null differ diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.woff2 b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.woff2 deleted file mode 100644 index 64539b5..0000000 Binary files a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/fonts/glyphicons-halflings-regular.woff2 and /dev/null differ diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/bootstrap.min.js b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/bootstrap.min.js deleted file mode 100644 index c8f82e5..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/bootstrap.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v3.3.4 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.4",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.4",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.4",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.4",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport),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!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-mp.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.4",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.4",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.4",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a(document.body).height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/d3.min.js b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/d3.min.js deleted file mode 100644 index 34d5513..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/d3.min.js +++ /dev/null @@ -1,5 +0,0 @@ -!function(){function n(n){return n&&(n.ownerDocument||n.document||n).documentElement}function t(n){return n&&(n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView)}function e(n,t){return t>n?-1:n>t?1:n>=t?0:0/0}function r(n){return null===n?0/0:+n}function u(n){return!isNaN(n)}function i(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)<0?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)>0?u=i:r=i+1}return r}}}function o(n){return n.length}function a(n){for(var t=1;n*t%1;)t*=10;return t}function c(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function l(){this._=Object.create(null)}function s(n){return(n+="")===pa||n[0]===va?va+n:n}function f(n){return(n+="")[0]===va?n.slice(1):n}function h(n){return s(n)in this._}function g(n){return(n=s(n))in this._&&delete this._[n]}function p(){var n=[];for(var t in this._)n.push(f(t));return n}function v(){var n=0;for(var t in this._)++n;return n}function d(){for(var n in this._)return!1;return!0}function m(){this._=Object.create(null)}function y(n){return n}function M(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function x(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=da.length;r>e;++e){var u=da[e]+t;if(u in n)return u}}function b(){}function _(){}function w(n){function t(){for(var t,r=e,u=-1,i=r.length;++ue;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function Z(n){return ya(n,Sa),n}function V(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t0&&(n=n.slice(0,a));var l=ka.get(n);return l&&(n=l,c=B),a?t?u:r:t?b:i}function $(n,t){return function(e){var r=ta.event;ta.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ta.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++Aa,u="click"+r,i=ta.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==Ea&&(Ea="onselectstart"in e?!1:x(e.style,"userSelect")),Ea){var o=n(e).style,a=o[Ea];o[Ea]="none"}return function(n){if(i.on(r,null),Ea&&(o[Ea]=a),n){var t=function(){i.on(u,null)};i.on(u,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var u=r.createSVGPoint();if(0>Na){var i=t(n);if(i.scrollX||i.scrollY){r=ta.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var o=r[0][0].getScreenCTM();Na=!(o.f||o.e),r.remove()}}return Na?(u.x=e.pageX,u.y=e.pageY):(u.x=e.clientX,u.y=e.clientY),u=u.matrixTransform(n.getScreenCTM().inverse()),[u.x,u.y]}var a=n.getBoundingClientRect();return[e.clientX-a.left-n.clientLeft,e.clientY-a.top-n.clientTop]}function G(){return ta.event.changedTouches[0].identifier}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nt(n){return n>1?0:-1>n?qa:Math.acos(n)}function tt(n){return n>1?Ra:-1>n?-Ra:Math.asin(n)}function et(n){return((n=Math.exp(n))-1/n)/2}function rt(n){return((n=Math.exp(n))+1/n)/2}function ut(n){return((n=Math.exp(2*n))-1)/(n+1)}function it(n){return(n=Math.sin(n/2))*n}function ot(){}function at(n,t,e){return this instanceof at?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof at?new at(n.h,n.s,n.l):bt(""+n,_t,at):new at(n,t,e)}function ct(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,new mt(u(n+120),u(n),u(n-120))}function lt(n,t,e){return this instanceof lt?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof lt?new lt(n.h,n.c,n.l):n instanceof ft?gt(n.l,n.a,n.b):gt((n=wt((n=ta.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new lt(n,t,e)}function st(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new ft(e,Math.cos(n*=Da)*t,Math.sin(n)*t)}function ft(n,t,e){return this instanceof ft?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof ft?new ft(n.l,n.a,n.b):n instanceof lt?st(n.h,n.c,n.l):wt((n=mt(n)).r,n.g,n.b):new ft(n,t,e)}function ht(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=pt(u)*Xa,r=pt(r)*$a,i=pt(i)*Ba,new mt(dt(3.2404542*u-1.5371385*r-.4985314*i),dt(-.969266*u+1.8760108*r+.041556*i),dt(.0556434*u-.2040259*r+1.0572252*i))}function gt(n,t,e){return n>0?new lt(Math.atan2(e,t)*Pa,Math.sqrt(t*t+e*e),n):new lt(0/0,0/0,n)}function pt(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function vt(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function dt(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mt(n,t,e){return this instanceof mt?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mt?new mt(n.r,n.g,n.b):bt(""+n,mt,ct):new mt(n,t,e)}function yt(n){return new mt(n>>16,n>>8&255,255&n)}function Mt(n){return yt(n)+""}function xt(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function bt(n,t,e){var r,u,i,o=0,a=0,c=0;if(r=/([a-z]+)\((.*)\)/i.exec(n))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(kt(u[0]),kt(u[1]),kt(u[2]))}return(i=Ga.get(n.toLowerCase()))?t(i.r,i.g,i.b):(null==n||"#"!==n.charAt(0)||isNaN(i=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&i)>>4,o=o>>4|o,a=240&i,a=a>>4|a,c=15&i,c=c<<4|c):7===n.length&&(o=(16711680&i)>>16,a=(65280&i)>>8,c=255&i)),t(o,a,c))}function _t(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),new at(r,u,c)}function wt(n,t,e){n=St(n),t=St(t),e=St(e);var r=vt((.4124564*n+.3575761*t+.1804375*e)/Xa),u=vt((.2126729*n+.7151522*t+.072175*e)/$a),i=vt((.0193339*n+.119192*t+.9503041*e)/Ba);return ft(116*u-16,500*(r-u),200*(u-i))}function St(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function kt(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function Et(n){return"function"==typeof n?n:function(){return n}}function At(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Nt(t,e,n,r)}}function Nt(n,t,e,r){function u(){var n,t=c.status;if(!t&&zt(c)||t>=200&&300>t||304===t){try{n=e.call(i,c)}catch(r){return void o.error.call(i,r)}o.load.call(i,n)}else o.error.call(i,c)}var i={},o=ta.dispatch("beforesend","progress","load","error"),a={},c=new XMLHttpRequest,l=null;return!this.XDomainRequest||"withCredentials"in c||!/^(http(s)?:)?\/\//.test(n)||(c=new XDomainRequest),"onload"in c?c.onload=c.onerror=u:c.onreadystatechange=function(){c.readyState>3&&u()},c.onprogress=function(n){var t=ta.event;ta.event=n;try{o.progress.call(i,c)}finally{ta.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(l=n,i):l},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(ra(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),c.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),c.setRequestHeader)for(var s in a)c.setRequestHeader(s,a[s]);return null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=l&&(c.responseType=l),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),o.beforesend.call(i,c),c.send(null==r?null:r),i},i.abort=function(){return c.abort(),i},ta.rebind(i,o,"on"),null==r?i:i.get(Ct(r))}function Ct(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function zt(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qt(){var n=Lt(),t=Tt()-n;t>24?(isFinite(t)&&(clearTimeout(tc),tc=setTimeout(qt,t)),nc=0):(nc=1,rc(qt))}function Lt(){var n=Date.now();for(ec=Ka;ec;)n>=ec.t&&(ec.f=ec.c(n-ec.t)),ec=ec.n;return n}function Tt(){for(var n,t=Ka,e=1/0;t;)t.f?t=n?n.n=t.n:Ka=t.n:(t.t8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Pt(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r&&e?function(n,t){for(var u=n.length,i=[],o=0,a=r[0],c=0;u>0&&a>0&&(c+a+1>t&&(a=Math.max(1,t-c)),i.push(n.substring(u-=a,u+a)),!((c+=a+1)>t));)a=r[o=(o+1)%r.length];return i.reverse().join(e)}:y;return function(n){var e=ic.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",c=e[4]||"",l=e[5],s=+e[6],f=e[7],h=e[8],g=e[9],p=1,v="",d="",m=!1,y=!0;switch(h&&(h=+h.substring(1)),(l||"0"===r&&"="===o)&&(l=r="0",o="="),g){case"n":f=!0,g="g";break;case"%":p=100,d="%",g="f";break;case"p":p=100,d="%",g="r";break;case"b":case"o":case"x":case"X":"#"===c&&(v="0"+g.toLowerCase());case"c":y=!1;case"d":m=!0,h=0;break;case"s":p=-1,g="r"}"$"===c&&(v=u[0],d=u[1]),"r"!=g||h||(g="g"),null!=h&&("g"==g?h=Math.max(1,Math.min(21,h)):("e"==g||"f"==g)&&(h=Math.max(0,Math.min(20,h)))),g=oc.get(g)||Ut;var M=l&&f;return function(n){var e=d;if(m&&n%1)return"";var u=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===a?"":a;if(0>p){var c=ta.formatPrefix(n,h);n=c.scale(n),e=c.symbol+d}else n*=p;n=g(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=y?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!l&&f&&(x=i(x,1/0));var S=v.length+x.length+b.length+(M?0:u.length),k=s>S?new Array(S=s-S+1).join(r):"";return M&&(x=i(k+x,k.length?s-b.length:1/0)),u+=v,n=x+b,("<"===o?u+n+k:">"===o?k+u+n:"^"===o?k.substring(0,S>>=1)+u+n+k.substring(S):u+(M?n:k+n))+e}}}function Ut(n){return n+""}function jt(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Ft(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new cc(e-1)),1),e}function i(n,e){return t(n=new cc(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{cc=jt;var r=new jt;return r._=n,o(r,t,e)}finally{cc=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var c=n.utc=Ht(n);return c.floor=c,c.round=Ht(r),c.ceil=Ht(u),c.offset=Ht(i),c.range=a,n}function Ht(n){return function(t,e){try{cc=jt;var r=new jt;return r._=t,n(r,e)._}finally{cc=Date}}}function Ot(n){function t(n){function t(t){for(var e,u,i,o=[],a=-1,c=0;++aa;){if(r>=l)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=C[o in sc?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){E.lastIndex=0;var r=E.exec(t.slice(e));return r?(n.m=A.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,N.c.toString(),t,r)}function c(n,t,r){return e(n,N.x.toString(),t,r)}function l(n,t,r){return e(n,N.X.toString(),t,r)}function s(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{cc=jt;var t=new cc;return t._=n,r(t)}finally{cc=Date}}var r=t(n);return e.parse=function(n){try{cc=jt;var t=r.parse(n);return t&&t._}finally{cc=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ae;var M=ta.map(),x=Yt(v),b=Zt(v),_=Yt(d),w=Zt(d),S=Yt(m),k=Zt(m),E=Yt(y),A=Zt(y);p.forEach(function(n,t){M.set(n.toLowerCase(),t)});var N={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return It(n.getDate(),t,2)},e:function(n,t){return It(n.getDate(),t,2)},H:function(n,t){return It(n.getHours(),t,2)},I:function(n,t){return It(n.getHours()%12||12,t,2)},j:function(n,t){return It(1+ac.dayOfYear(n),t,3)},L:function(n,t){return It(n.getMilliseconds(),t,3)},m:function(n,t){return It(n.getMonth()+1,t,2)},M:function(n,t){return It(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return It(n.getSeconds(),t,2)},U:function(n,t){return It(ac.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return It(ac.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return It(n.getFullYear()%100,t,2)},Y:function(n,t){return It(n.getFullYear()%1e4,t,4)},Z:ie,"%":function(){return"%"}},C={a:r,A:u,b:i,B:o,c:a,d:Qt,e:Qt,H:te,I:te,j:ne,L:ue,m:Kt,M:ee,p:s,S:re,U:Xt,w:Vt,W:$t,x:c,X:l,y:Wt,Y:Bt,Z:Jt,"%":oe};return t}function It(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Yt(n){return new RegExp("^(?:"+n.map(ta.requote).join("|")+")","i")}function Zt(n){for(var t=new l,e=-1,r=n.length;++e68?1900:2e3)}function Kt(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function Qt(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function ne(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function te(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function ee(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function re(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ue(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function ie(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=ga(t)/60|0,u=ga(t)%60;return e+It(r,"0",2)+It(u,"0",2)}function oe(n,t,e){hc.lastIndex=0;var r=hc.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ae(n){for(var t=n.length,e=-1;++e=0?1:-1,a=o*e,c=Math.cos(t),l=Math.sin(t),s=i*l,f=u*c+s*Math.cos(a),h=s*o*Math.sin(a);yc.add(Math.atan2(h,f)),r=n,u=c,i=l}var t,e,r,u,i;Mc.point=function(o,a){Mc.point=n,r=(t=o)*Da,u=Math.cos(a=(e=a)*Da/2+qa/4),i=Math.sin(a)},Mc.lineEnd=function(){n(t,e)}}function pe(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function ve(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function de(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function me(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function ye(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function Me(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function xe(n){return[Math.atan2(n[1],n[0]),tt(n[2])]}function be(n,t){return ga(n[0]-t[0])a;++a)u.point((e=n[a])[0],e[1]);return void u.lineEnd()}var c=new qe(e,n,null,!0),l=new qe(e,null,c,!1);c.o=l,i.push(c),o.push(l),c=new qe(r,n,null,!1),l=new qe(r,null,c,!0),c.o=l,i.push(c),o.push(l)}}),o.sort(t),ze(i),ze(o),i.length){for(var a=0,c=e,l=o.length;l>a;++a)o[a].e=c=!c;for(var s,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;s=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var a=0,l=s.length;l>a;++a)u.point((f=s[a])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){s=g.p.z;for(var a=s.length-1;a>=0;--a)u.point((f=s[a])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,s=g.z,p=!p}while(!g.v);u.lineEnd()}}}function ze(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r0){for(b||(i.polygonStart(),b=!0),i.lineStart();++o1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Te))}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:o,lineStart:c,lineEnd:l,polygonStart:function(){y.point=s,y.lineStart=f,y.lineEnd=h,g=[],p=[]},polygonEnd:function(){y.point=o,y.lineStart=c,y.lineEnd=l,g=ta.merge(g);var n=Fe(m,p);g.length?(b||(i.polygonStart(),b=!0),Ce(g,De,n,e,i)):n&&(b||(i.polygonStart(),b=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),b&&(i.polygonEnd(),b=!1),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},M=Re(),x=t(M),b=!1;return y}}function Te(n){return n.length>1}function Re(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:b,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function De(n,t){return((n=n.x)[0]<0?n[1]-Ra-Ca:Ra-n[1])-((t=t.x)[0]<0?t[1]-Ra-Ca:Ra-t[1])}function Pe(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?qa:-qa,c=ga(i-e);ga(c-qa)0?Ra:-Ra),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&c>=qa&&(ga(e-u)Ca?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function je(n,t,e,r){var u;if(null==n)u=e*Ra,r.point(-qa,u),r.point(0,u),r.point(qa,u),r.point(qa,0),r.point(qa,-u),r.point(0,-u),r.point(-qa,-u),r.point(-qa,0),r.point(-qa,u);else if(ga(n[0]-t[0])>Ca){var i=n[0]a;++a){var l=t[a],s=l.length;if(s)for(var f=l[0],h=f[0],g=f[1]/2+qa/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===s&&(d=0),n=l[d];var m=n[0],y=n[1]/2+qa/4,M=Math.sin(y),x=Math.cos(y),b=m-h,_=b>=0?1:-1,w=_*b,S=w>qa,k=p*M;if(yc.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),i+=S?b+_*La:b,S^h>=e^m>=e){var E=de(pe(f),pe(n));Me(E);var A=de(u,E);Me(A);var N=(S^b>=0?-1:1)*tt(A[2]);(r>N||r===N&&(E[0]||E[1]))&&(o+=S^b>=0?1:-1)}if(!d++)break;h=m,p=M,v=x,f=n}}return(-Ca>i||Ca>i&&0>yc)^1&o}function He(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,c,l,s;return{lineStart:function(){l=c=!1,s=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=o?v?0:u(f,h):v?u(f+(0>f?qa:-qa),h):0;if(!e&&(l=c=v)&&n.lineStart(),v!==c&&(g=r(e,p),(be(e,g)||be(p,g))&&(p[0]+=Ca,p[1]+=Ca,v=t(p[0],p[1]))),v!==c)s=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(a&&e&&o^v){var m;d&i||!(m=r(p,e,!0))||(s=0,o?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&be(e,p)||n.point(p[0],p[1]),e=p,c=v,i=d},lineEnd:function(){c&&n.lineEnd(),e=null},clean:function(){return s|(l&&c)<<1}}}function r(n,t,e){var r=pe(n),u=pe(t),o=[1,0,0],a=de(r,u),c=ve(a,a),l=a[0],s=c-l*l;if(!s)return!e&&n;var f=i*c/s,h=-i*l/s,g=de(o,a),p=ye(o,f),v=ye(a,h);me(p,v);var d=g,m=ve(p,d),y=ve(d,d),M=m*m-y*(ve(p,p)-1);if(!(0>M)){var x=Math.sqrt(M),b=ye(d,(-m-x)/y);if(me(b,p),b=xe(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],E=t[1];w>S&&(_=w,w=S,S=_);var A=S-w,N=ga(A-qa)A;if(!N&&k>E&&(_=k,k=E,E=_),C?N?k+E>0^b[1]<(ga(b[0]-w)qa^(w<=b[0]&&b[0]<=S)){var z=ye(d,(-m+x)/y);return me(z,p),[b,xe(z)]}}}function u(t,e){var r=o?n:qa-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),o=i>0,a=ga(i)>Ca,c=gr(n,6*Da);return Le(t,e,c,o?[0,-n]:[-qa,n-qa])}function Oe(n,t,e,r){return function(u){var i,o=u.a,a=u.b,c=o.x,l=o.y,s=a.x,f=a.y,h=0,g=1,p=s-c,v=f-l;if(i=n-c,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-c,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-l,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-l,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:c+h*p,y:l+h*v}),1>g&&(u.b={x:c+g*p,y:l+g*v}),u}}}}}}function Ie(n,t,e,r){function u(r,u){return ga(r[0]-n)0?0:3:ga(r[0]-e)0?2:1:ga(r[1]-t)0?1:0:u>0?3:2}function i(n,t){return o(n.x,t.x)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function c(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=d[u],c=a.length,l=a[0];c>o;++o)i=a[o],l[1]<=r?i[1]>r&&Q(l,i,n)>0&&++t:i[1]<=r&&Q(l,i,n)<0&&--t,l=i;return 0!==t}function l(i,a,c,l){var s=0,f=0;if(null==i||(s=u(i,c))!==(f=u(a,c))||o(i,a)<0^c>0){do l.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+c+4)%4)!==f)}else l.point(a[0],a[1])}function s(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){s(n,t)&&a.point(n,t)}function h(){C.point=p,d&&d.push(m=[]),S=!0,w=!1,b=_=0/0}function g(){v&&(p(y,M),x&&w&&A.rejoin(),v.push(A.buffer())),C.point=f,w&&a.lineEnd()}function p(n,t){n=Math.max(-Tc,Math.min(Tc,n)),t=Math.max(-Tc,Math.min(Tc,t));var e=s(n,t);if(d&&m.push([n,t]),S)y=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};N(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,m,y,M,x,b,_,w,S,k,E=a,A=Re(),N=Oe(n,t,e,r),C={point:f,lineStart:h,lineEnd:g,polygonStart:function(){a=A,v=[],d=[],k=!0},polygonEnd:function(){a=E,v=ta.merge(v);var t=c([n,r]),e=k&&t,u=v.length;(e||u)&&(a.polygonStart(),e&&(a.lineStart(),l(null,null,1,a),a.lineEnd()),u&&Ce(v,i,t,l,a),a.polygonEnd()),v=d=m=null}};return C}}function Ye(n){var t=0,e=qa/3,r=ir(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*qa/180,e=n[1]*qa/180):[t/qa*180,e/qa*180]},u}function Ze(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),o-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),o=Math.sqrt(i)/u;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/u,tt((i-(n*n+e*e)*u*u)/(2*u))]},e}function Ve(){function n(n,t){Dc+=u*n-r*t,r=n,u=t}var t,e,r,u;Hc.point=function(i,o){Hc.point=n,t=r=i,e=u=o},Hc.lineEnd=function(){n(t,e)}}function Xe(n,t){Pc>n&&(Pc=n),n>jc&&(jc=n),Uc>t&&(Uc=t),t>Fc&&(Fc=t)}function $e(){function n(n,t){o.push("M",n,",",t,i)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function u(){o.push("Z")}var i=Be(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=Be(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Be(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function We(n,t){_c+=n,wc+=t,++Sc}function Je(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);kc+=o*(t+n)/2,Ec+=o*(e+r)/2,Ac+=o,We(t=n,e=r)}var t,e;Ic.point=function(r,u){Ic.point=n,We(t=r,e=u)}}function Ge(){Ic.point=We}function Ke(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);kc+=o*(r+n)/2,Ec+=o*(u+t)/2,Ac+=o,o=u*n-r*t,Nc+=o*(r+n),Cc+=o*(u+t),zc+=3*o,We(r=n,u=t)}var t,e,r,u;Ic.point=function(i,o){Ic.point=n,We(t=r=i,e=u=o)},Ic.lineEnd=function(){n(t,e)}}function Qe(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,La)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:b};return a}function nr(n){function t(n){return(a?r:e)(n)}function e(t){return rr(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=0/0,S.point=i,t.lineStart()}function i(e,r){var i=pe([e,r]),o=n(e,r);u(M,x,y,b,_,w,M=o[0],x=o[1],y=e,b=i[0],_=i[1],w=i[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function c(){r(),S.point=l,S.lineEnd=s}function l(n,t){i(f=n,h=t),g=M,p=x,v=b,d=_,m=w,S.point=i}function s(){u(M,x,y,b,_,w,g,p,f,v,d,m,a,t),S.lineEnd=o,o()}var f,h,g,p,v,d,m,y,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=c -},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,a,c,l,s,f,h,g,p,v,d,m){var y=s-t,M=f-e,x=y*y+M*M;if(x>4*i&&d--){var b=a+g,_=c+p,w=l+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),E=ga(ga(w)-1)i||ga((y*z+M*q)/x-.5)>.3||o>a*g+c*p+l*v)&&(u(t,e,r,a,c,l,N,C,E,b/=S,_/=S,w,d,m),m.point(N,C),u(N,C,E,b,_,w,s,f,h,g,p,v,d,m))}}var i=.5,o=Math.cos(30*Da),a=16;return t.precision=function(n){return arguments.length?(a=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function tr(n){var t=nr(function(t,e){return n([t*Pa,e*Pa])});return function(n){return or(t(n))}}function er(n){this.stream=n}function rr(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function ur(n){return ir(function(){return n})()}function ir(n){function t(n){return n=a(n[0]*Da,n[1]*Da),[n[0]*h+c,l-n[1]*h]}function e(n){return n=a.invert((n[0]-c)/h,(l-n[1])/h),n&&[n[0]*Pa,n[1]*Pa]}function r(){a=Ae(o=lr(m,M,x),i);var n=i(v,d);return c=g-n[0]*h,l=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,o,a,c,l,s,f=nr(function(n,t){return n=i(n,t),[n[0]*h+c,l-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,M=0,x=0,b=Lc,_=y,w=null,S=null;return t.stream=function(n){return s&&(s.valid=!1),s=or(b(o,f(_(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(b=null==n?(w=n,Lc):He((w=+n)*Da),u()):w},t.clipExtent=function(n){return arguments.length?(S=n,_=n?Ie(n[0][0],n[0][1],n[1][0],n[1][1]):y,u()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Da,d=n[1]%360*Da,r()):[v*Pa,d*Pa]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Da,M=n[1]%360*Da,x=n.length>2?n[2]%360*Da:0,r()):[m*Pa,M*Pa,x*Pa]},ta.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function or(n){return rr(n,function(t,e){n.point(t*Da,e*Da)})}function ar(n,t){return[n,t]}function cr(n,t){return[n>qa?n-La:-qa>n?n+La:n,t]}function lr(n,t,e){return n?t||e?Ae(fr(n),hr(t,e)):fr(n):t||e?hr(t,e):cr}function sr(n){return function(t,e){return t+=n,[t>qa?t-La:-qa>t?t+La:t,e]}}function fr(n){var t=sr(n);return t.invert=sr(-n),t}function hr(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*r+a*u;return[Math.atan2(c*i-s*o,a*r-l*u),tt(s*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*i-c*o;return[Math.atan2(c*i+l*o,a*r+s*u),tt(s*r-a*u)]},e}function gr(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var c=o*t;null!=u?(u=pr(e,u),i=pr(e,i),(o>0?i>u:u>i)&&(u+=o*La)):(u=n+o*La,i=n-.5*c);for(var l,s=u;o>0?s>i:i>s;s-=c)a.point((l=xe([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],l[1])}}function pr(n,t){var e=pe(t);e[0]-=n,Me(e);var r=nt(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Ca)%(2*Math.PI)}function vr(n,t,e){var r=ta.range(n,t-Ca,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function dr(n,t,e){var r=ta.range(n,t-Ca,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function mr(n){return n.source}function yr(n){return n.target}function Mr(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),l=u*Math.sin(n),s=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(it(r-t)+u*o*it(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*s,u=e*l+t*f,o=e*i+t*a;return[Math.atan2(u,r)*Pa,Math.atan2(o,Math.sqrt(r*r+u*u))*Pa]}:function(){return[n*Pa,t*Pa]};return p.distance=h,p}function xr(){function n(n,u){var i=Math.sin(u*=Da),o=Math.cos(u),a=ga((n*=Da)-t),c=Math.cos(a);Yc+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;Zc.point=function(u,i){t=u*Da,e=Math.sin(i*=Da),r=Math.cos(i),Zc.point=n},Zc.lineEnd=function(){Zc.point=Zc.lineEnd=b}}function br(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function _r(n,t){function e(n,t){o>0?-Ra+Ca>t&&(t=-Ra+Ca):t>Ra-Ca&&(t=Ra-Ca);var e=o/Math.pow(u(t),i);return[e*Math.sin(i*n),o-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(qa/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),o=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=o-t,r=K(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(o/r,1/i))-Ra]},e):Sr}function wr(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return ga(u)u;u++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function zr(n,t){return n[0]-t[0]||n[1]-t[1]}function qr(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Lr(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],l=e[1],s=t[1]-c,f=r[1]-l,h=(a*(c-l)-f*(u-i))/(f*o-a*s);return[u+h*o,c+h*s]}function Tr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Rr(){tu(this),this.edge=this.site=this.circle=null}function Dr(n){var t=el.pop()||new Rr;return t.site=n,t}function Pr(n){Xr(n),Qc.remove(n),el.push(n),tu(n)}function Ur(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,o=n.N,a=[n];Pr(n);for(var c=i;c.circle&&ga(e-c.circle.x)s;++s)l=a[s],c=a[s-1],Kr(l.edge,c.site,l.site,u);c=a[0],l=a[f-1],l.edge=Jr(c.site,l.site,null,u),Vr(c),Vr(l)}function jr(n){for(var t,e,r,u,i=n.x,o=n.y,a=Qc._;a;)if(r=Fr(a,o)-i,r>Ca)a=a.L;else{if(u=i-Hr(a,o),!(u>Ca)){r>-Ca?(t=a.P,e=a):u>-Ca?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var c=Dr(n);if(Qc.insert(t,c),t||e){if(t===e)return Xr(t),e=Dr(t.site),Qc.insert(c,e),c.edge=e.edge=Jr(t.site,c.site),Vr(t),void Vr(e);if(!e)return void(c.edge=Jr(t.site,c.site));Xr(t),Xr(e);var l=t.site,s=l.x,f=l.y,h=n.x-s,g=n.y-f,p=e.site,v=p.x-s,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,M=v*v+d*d,x={x:(d*y-g*M)/m+s,y:(h*M-v*y)/m+f};Kr(e.edge,l,p,x),c.edge=Jr(l,n,null,x),e.edge=Jr(n,p,null,x),Vr(t),Vr(e)}}function Fr(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var o=n.P;if(!o)return-1/0;e=o.site;var a=e.x,c=e.y,l=c-t;if(!l)return a;var s=a-r,f=1/i-1/l,h=s/l;return f?(-h+Math.sqrt(h*h-2*f*(s*s/(-2*l)-c+l/2+u-i/2)))/f+r:(r+a)/2}function Hr(n,t){var e=n.N;if(e)return Fr(e,t);var r=n.site;return r.y===t?r.x:1/0}function Or(n){this.site=n,this.edges=[]}function Ir(n){for(var t,e,r,u,i,o,a,c,l,s,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=Kc,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(a=i.edges,c=a.length,o=0;c>o;)s=a[o].end(),r=s.x,u=s.y,l=a[++o%c].start(),t=l.x,e=l.y,(ga(r-t)>Ca||ga(u-e)>Ca)&&(a.splice(o,0,new Qr(Gr(i.site,s,ga(r-f)Ca?{x:f,y:ga(t-f)Ca?{x:ga(e-p)Ca?{x:h,y:ga(t-h)Ca?{x:ga(e-g)=-za)){var g=c*c+l*l,p=s*s+f*f,v=(f*g-l*p)/h,d=(c*p-s*g)/h,f=d+a,m=rl.pop()||new Zr;m.arc=n,m.site=u,m.x=v+o,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,M=tl._;M;)if(m.yd||d>=a)return;if(h>p){if(i){if(i.y>=l)return}else i={x:d,y:c};e={x:d,y:l}}else{if(i){if(i.yr||r>1)if(h>p){if(i){if(i.y>=l)return}else i={x:(c-u)/r,y:c};e={x:(l-u)/r,y:l}}else{if(i){if(i.yg){if(i){if(i.x>=a)return}else i={x:o,y:r*o+u};e={x:a,y:r*a+u}}else{if(i){if(i.xi||f>o||r>h||u>g)){if(p=n.point){var p,v=t-n.x,d=e-n.y,m=v*v+d*d;if(c>m){var y=Math.sqrt(c=m);r=t-y,u=e-y,i=t+y,o=e+y,a=p}}for(var M=n.nodes,x=.5*(s+h),b=.5*(f+g),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:l(n,s,f,x,b);break;case 1:l(n,x,f,h,b);break;case 2:l(n,s,b,x,g);break;case 3:l(n,x,b,h,g)}}}(n,r,u,i,o),a}function gu(n,t){n=ta.rgb(n),t=ta.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,o=t.g-r,a=t.b-u;return function(n){return"#"+xt(Math.round(e+i*n))+xt(Math.round(r+o*n))+xt(Math.round(u+a*n))}}function pu(n,t){var e,r={},u={};for(e in n)e in t?r[e]=mu(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function vu(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function du(n,t){var e,r,u,i=il.lastIndex=ol.lastIndex=0,o=-1,a=[],c=[];for(n+="",t+="";(e=il.exec(n))&&(r=ol.exec(t));)(u=r.index)>i&&(u=t.slice(i,u),a[o]?a[o]+=u:a[++o]=u),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,c.push({i:o,x:vu(e,r)})),i=ol.lastIndex;return ir;++r)a[(e=c[r]).i]=e.x(n);return a.join("")})}function mu(n,t){for(var e,r=ta.interpolators.length;--r>=0&&!(e=ta.interpolators[r](n,t)););return e}function yu(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(mu(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function Mu(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function xu(n){return function(t){return 1-n(1-t)}}function bu(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function _u(n){return n*n}function wu(n){return n*n*n}function Su(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function ku(n){return function(t){return Math.pow(t,n)}}function Eu(n){return 1-Math.cos(n*Ra)}function Au(n){return Math.pow(2,10*(n-1))}function Nu(n){return 1-Math.sqrt(1-n*n)}function Cu(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/La*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*La/t)}}function zu(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function qu(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Lu(n,t){n=ta.hcl(n),t=ta.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return st(e+i*n,r+o*n,u+a*n)+""}}function Tu(n,t){n=ta.hsl(n),t=ta.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return ct(e+i*n,r+o*n,u+a*n)+""}}function Ru(n,t){n=ta.lab(n),t=ta.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return ht(e+i*n,r+o*n,u+a*n)+""}}function Du(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Pu(n){var t=[n.a,n.b],e=[n.c,n.d],r=ju(t),u=Uu(t,e),i=ju(Fu(e,t,-u))||0;t[0]*e[1]180?s+=360:s-l>180&&(l+=360),u.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:vu(l,s)})):s&&r.push(r.pop()+"rotate("+s+")"),f!=h?u.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:vu(f,h)}):h&&r.push(r.pop()+"skewX("+h+")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),u.push({i:e-4,x:vu(g[0],p[0])},{i:e-2,x:vu(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+"scale("+p+")"),e=u.length,function(n){for(var t,i=-1;++i=0;)e.push(u[r])}function Qu(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(i=n.children)&&(u=i.length))for(var u,i,o=-1;++oe;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function si(n){return n.reduce(fi,0)}function fi(n,t){return n+t[1]}function hi(n,t){return gi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function gi(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function pi(n){return[ta.min(n),ta.max(n)]}function vi(n,t){return n.value-t.value}function di(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function mi(n,t){n._pack_next=t,t._pack_prev=n}function yi(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function Mi(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(l=e.length)){var e,r,u,i,o,a,c,l,s=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(xi),r=e[0],r.x=-r.r,r.y=0,t(r),l>1&&(u=e[1],u.x=u.r,u.y=0,t(u),l>2))for(i=e[2],wi(r,u,i),t(i),di(r,i),r._pack_prev=i,di(i,u),u=r._pack_next,o=3;l>o;o++){wi(r,u,i=e[o]);var p=0,v=1,d=1;for(a=u._pack_next;a!==u;a=a._pack_next,v++)if(yi(a,i)){p=1;break}if(1==p)for(c=r._pack_prev;c!==a._pack_prev&&!yi(c,i);c=c._pack_prev,d++);p?(d>v||v==d&&u.ro;o++)i=e[o],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(bi)}}function xi(n){n._pack_next=n._pack_prev=n}function bi(n){delete n._pack_next,delete n._pack_prev}function _i(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++i=0;)t=u[i],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Ci(n,t,e){return n.a.parent===t.parent?n.a:e}function zi(n){return 1+ta.max(n,function(n){return n.y})}function qi(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Li(n){var t=n.children;return t&&t.length?Li(t[0]):n}function Ti(n){var t,e=n.children;return e&&(t=e.length)?Ti(e[t-1]):n}function Ri(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Di(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function Pi(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Ui(n){return n.rangeExtent?n.rangeExtent():Pi(n.range())}function ji(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Fi(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Hi(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:ml}function Oi(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]2?Oi:ji,c=r?Iu:Ou;return o=u(n,t,c,e),a=u(t,n,c,mu),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Du)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return Xi(n,t)},i.tickFormat=function(t,e){return $i(n,t,e)},i.nice=function(t){return Zi(n,t),u()},i.copy=function(){return Ii(n,t,e,r)},u()}function Yi(n,t){return ta.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Zi(n,t){return Fi(n,Hi(Vi(n,t)[2]))}function Vi(n,t){null==t&&(t=10);var e=Pi(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function Xi(n,t){return ta.range.apply(ta,Vi(n,t))}function $i(n,t,e){var r=Vi(n,t);if(e){var u=ic.exec(e);if(u.shift(),"s"===u[8]){var i=ta.formatPrefix(Math.max(ga(r[0]),ga(r[1])));return u[7]||(u[7]="."+Bi(i.scale(r[2]))),u[8]="f",e=ta.format(u.join("")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]="."+Wi(u[8],r)),e=u.join("")}else e=",."+Bi(r[2])+"f";return ta.format(e)}function Bi(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function Wi(n,t){var e=Bi(t[2]);return n in yl?Math.abs(e-Bi(Math.max(ga(t[0]),ga(t[1]))))+ +("e"!==n):e-2*("%"===n)}function Ji(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Fi(r.map(u),e?Math:xl);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=Pi(r),o=[],a=n[0],c=n[1],l=Math.floor(u(a)),s=Math.ceil(u(c)),f=t%1?2:t;if(isFinite(s-l)){if(e){for(;s>l;l++)for(var h=1;f>h;h++)o.push(i(l)*h);o.push(i(l))}else for(o.push(i(l));l++0;h--)o.push(i(l)*h);for(l=0;o[l]c;s--);o=o.slice(l,s)}return o},o.tickFormat=function(n,t){if(!arguments.length)return Ml;arguments.length<2?t=Ml:"function"!=typeof t&&(t=ta.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(c(u(n)+r))<=a?t(n):""}},o.copy=function(){return Ji(n.copy(),t,e,r)},Yi(o,n)}function Gi(n,t,e){function r(t){return n(u(t))}var u=Ki(t),i=Ki(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return Xi(e,n)},r.tickFormat=function(n,t){return $i(e,n,t)},r.nice=function(n){return r.domain(Zi(e,n))},r.exponent=function(o){return arguments.length?(u=Ki(t=o),i=Ki(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return Gi(n.copy(),t,e)},Yi(r,n)}function Ki(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function Qi(n,t){function e(e){return i[((u.get(e)||("range"===t.t?u.set(e,n.push(e)):0/0))-1)%i.length]}function r(t,e){return ta.range(n.length).map(function(n){return t+e*n})}var u,i,o;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new l;for(var i,o=-1,a=r.length;++oe?[0/0,0/0]:[e>0?a[e-1]:n[0],et?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return to(n,t,e)},u()}function eo(n,t){function e(e){return e>=e?t[ta.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return eo(n,t)},e}function ro(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Xi(n,t)},t.tickFormat=function(t,e){return $i(n,t,e)},t.copy=function(){return ro(n)},t}function uo(){return 0}function io(n){return n.innerRadius}function oo(n){return n.outerRadius}function ao(n){return n.startAngle}function co(n){return n.endAngle}function lo(n){return n&&n.padAngle}function so(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function fo(n,t,e,r,u){var i=n[0]-t[0],o=n[1]-t[1],a=(u?r:-r)/Math.sqrt(i*i+o*o),c=a*o,l=-a*i,s=n[0]+c,f=n[1]+l,h=t[0]+c,g=t[1]+l,p=(s+h)/2,v=(f+g)/2,d=h-s,m=g-f,y=d*d+m*m,M=e-r,x=s*g-h*f,b=(0>m?-1:1)*Math.sqrt(M*M*y-x*x),_=(x*m-d*b)/y,w=(-x*d-m*b)/y,S=(x*m+d*b)/y,k=(-x*d+m*b)/y,E=_-p,A=w-v,N=S-p,C=k-v;return E*E+A*A>N*N+C*C&&(_=S,w=k),[[_-c,w-l],[_*e/M,w*e/M]]}function ho(n){function t(t){function o(){l.push("M",i(n(s),a))}for(var c,l=[],s=[],f=-1,h=t.length,g=Et(e),p=Et(r);++f1&&u.push("H",r[0]),u.join("")}function mo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1){a=t[1],i=n[c],c++,r+="C"+(u[0]+o[0])+","+(u[1]+o[1])+","+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1];for(var l=2;l9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function To(n){return n.length<3?go(n):n[0]+_o(n,Lo(n))}function Ro(n){for(var t,e,r,u=-1,i=n.length;++ur)return s();var u=i[i.active];u&&(--i.count,delete i[i.active],u.event&&u.event.interrupt.call(n,n.__data__,u.index)),i.active=r,o.event&&o.event.start.call(n,n.__data__,t),o.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&v.push(r)}),h=o.ease,f=o.duration,ta.timer(function(){return p.c=l(e||1)?Ne:l,1},0,a)}function l(e){if(i.active!==r)return 1;for(var u=e/f,a=h(u),c=v.length;c>0;)v[--c].call(n,a);return u>=1?(o.event&&o.event.end.call(n,n.__data__,t),s()):void 0}function s(){return--i.count?delete i[r]:delete n[e],1}var f,h,g=o.delay,p=ec,v=[];return p.t=g+a,u>=g?c(u-g):void(p.c=c)},0,a)}}function Bo(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function Wo(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function Jo(n){return n.toISOString()}function Go(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=ta.bisect(Vl,u);return i==Vl.length?[t.year,Vi(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/Vl[i-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=Ko(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=Ko(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Pi(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],Ko(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Go(n.copy(),t,e)},Yi(r,n)}function Ko(n){return new Date(n)}function Qo(n){return JSON.parse(n.responseText)}function na(n){var t=ua.createRange();return t.selectNode(ua.body),t.createContextualFragment(n.responseText)}var ta={version:"3.5.5"},ea=[].slice,ra=function(n){return ea.call(n)},ua=this.document;if(ua)try{ra(ua.documentElement.childNodes)[0].nodeType}catch(ia){ra=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),ua)try{ua.createElement("DIV").style.setProperty("opacity",0,"")}catch(oa){var aa=this.Element.prototype,ca=aa.setAttribute,la=aa.setAttributeNS,sa=this.CSSStyleDeclaration.prototype,fa=sa.setProperty;aa.setAttribute=function(n,t){ca.call(this,n,t+"")},aa.setAttributeNS=function(n,t,e){la.call(this,n,t,e+"")},sa.setProperty=function(n,t,e){fa.call(this,n,t+"",e)}}ta.ascending=e,ta.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},ta.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=r){e=r;break}for(;++ur&&(e=r)}else{for(;++u=r){e=r;break}for(;++ur&&(e=r)}return e},ta.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=r){e=r;break}for(;++ue&&(e=r)}else{for(;++u=r){e=r;break}for(;++ue&&(e=r)}return e},ta.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i=r){e=u=r;break}for(;++ir&&(e=r),r>u&&(u=r))}else{for(;++i=r){e=u=r;break}for(;++ir&&(e=r),r>u&&(u=r))}return[e,u]},ta.sum=function(n,t){var e,r=0,i=n.length,o=-1;if(1===arguments.length)for(;++o1?c/(s-1):void 0},ta.deviation=function(){var n=ta.variance.apply(this,arguments);return n?Math.sqrt(n):n};var ha=i(e);ta.bisectLeft=ha.left,ta.bisect=ta.bisectRight=ha.right,ta.bisector=function(n){return i(1===n.length?function(t,r){return e(n(t),r)}:n)},ta.shuffle=function(n,t,e){(i=arguments.length)<3&&(e=n.length,2>i&&(t=0));for(var r,u,i=e-t;i;)u=Math.random()*i--|0,r=n[i+t],n[i+t]=n[u+t],n[u+t]=r;return n},ta.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},ta.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},ta.zip=function(){if(!(r=arguments.length))return[];for(var n=-1,t=ta.min(arguments,o),e=new Array(t);++n=0;)for(r=n[u],t=r.length;--t>=0;)e[--o]=r[t];return e};var ga=Math.abs;ta.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error("infinite range");var r,u=[],i=a(ga(e)),o=-1;if(n*=i,t*=i,e*=i,0>e)for(;(r=n+e*++o)>t;)u.push(r/i);else for(;(r=n+e*++o)=i.length)return r?r.call(u,o):e?o.sort(e):o;for(var c,s,f,h,g=-1,p=o.length,v=i[a++],d=new l;++g=i.length)return n;var r=[],u=o[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],o=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(ta.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return o[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},ta.set=function(n){var t=new m;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},c(m,{has:h,add:function(n){return this._[s(n+="")]=!0,n},remove:g,values:p,size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,f(t))}}),ta.behavior={},ta.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},ta.event=null,ta.requote=function(n){return n.replace(ma,"\\$&")};var ma=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,ya={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},Ma=function(n,t){return t.querySelector(n)},xa=function(n,t){return t.querySelectorAll(n)},ba=function(n,t){var e=n.matches||n[x(n,"matchesSelector")];return(ba=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(Ma=function(n,t){return Sizzle(n,t)[0]||null},xa=Sizzle,ba=Sizzle.matchesSelector),ta.selection=function(){return ta.select(ua.documentElement)};var _a=ta.selection.prototype=[];_a.select=function(n){var t,e,r,u,i=[];n=N(n);for(var o=-1,a=this.length;++o=0&&(e=n.slice(0,t),n=n.slice(t+1)),wa.hasOwnProperty(e)?{space:wa[e],local:n}:n}},_a.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=ta.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},_a.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,u=-1;if(t=e.classList){for(;++uu){if("string"!=typeof n){2>u&&(e="");for(r in n)this.each(P(r,n[r],e));return this}if(2>u){var i=this.node();return t(i).getComputedStyle(i,null).getPropertyValue(n)}r=""}return this.each(P(n,e,r))},_a.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(U(t,n[t]));return this}return this.each(U(n,t))},_a.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},_a.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},_a.append=function(n){return n=j(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},_a.insert=function(n,t){return n=j(n),t=N(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},_a.remove=function(){return this.each(F)},_a.data=function(n,t){function e(n,e){var r,u,i,o=n.length,f=e.length,h=Math.min(o,f),g=new Array(f),p=new Array(f),v=new Array(o);if(t){var d,m=new l,y=new Array(o);for(r=-1;++rr;++r)p[r]=H(e[r]);for(;o>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,a.push(p),c.push(g),s.push(v)}var r,u,i=-1,o=this.length;if(!arguments.length){for(n=new Array(o=(r=this[0]).length);++ii;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return A(u)},_a.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},_a.sort=function(n){n=I.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},_a.size=function(){var n=0;return Y(this,function(){++n}),n};var Sa=[];ta.selection.enter=Z,ta.selection.enter.prototype=Sa,Sa.append=_a.append,Sa.empty=_a.empty,Sa.node=_a.node,Sa.call=_a.call,Sa.size=_a.size,Sa.select=function(n){for(var t,e,r,u,i,o=[],a=-1,c=this.length;++ar){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(X(n,t,e))};var ka=ta.map({mouseenter:"mouseover",mouseleave:"mouseout"});ua&&ka.forEach(function(n){"on"+n in ua&&ka.remove(n)});var Ea,Aa=0;ta.mouse=function(n){return J(n,k())};var Na=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;ta.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return J(n,r)},ta.behavior.drag=function(){function n(){this.on("mousedown.drag",i).on("touchstart.drag",o)}function e(n,t,e,i,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],p|=n|e,M=r,g({type:"drag",x:r[0]+l[0],y:r[1]+l[1],dx:n,dy:e}))}function c(){t(h,v)&&(m.on(i+d,null).on(o+d,null),y(p&&ta.event.target===f),g({type:"dragend"}))}var l,s=this,f=ta.event.target,h=s.parentNode,g=r.of(s,arguments),p=0,v=n(),d=".drag"+(null==v?"":"-"+v),m=ta.select(e(f)).on(i+d,a).on(o+d,c),y=W(f),M=t(h,v);u?(l=u.apply(s,arguments),l=[l.x-M[0],l.y-M[1]]):l=[0,0],g({type:"dragstart"})}}var r=E(n,"drag","dragstart","dragend"),u=null,i=e(b,ta.mouse,t,"mousemove","mouseup"),o=e(G,ta.touch,y,"touchmove","touchend");return n.origin=function(t){return arguments.length?(u=t,n):u},ta.rebind(n,r,"on")},ta.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?ra(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Ca=1e-6,za=Ca*Ca,qa=Math.PI,La=2*qa,Ta=La-Ca,Ra=qa/2,Da=qa/180,Pa=180/qa,Ua=Math.SQRT2,ja=2,Fa=4;ta.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=rt(v),o=i/(ja*h)*(e*ut(Ua*t+v)-et(v));return[r+o*l,u+o*s,i*e/rt(Ua*t+v)]}return[r+n*l,u+n*s,i*Math.exp(Ua*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],l=o-r,s=a-u,f=l*l+s*s,h=Math.sqrt(f),g=(c*c-i*i+Fa*f)/(2*i*ja*h),p=(c*c-i*i-Fa*f)/(2*c*ja*h),v=Math.log(Math.sqrt(g*g+1)-g),d=Math.log(Math.sqrt(p*p+1)-p),m=d-v,y=(m||Math.log(c/i))/Ua;return e.duration=1e3*y,e},ta.behavior.zoom=function(){function n(n){n.on(q,f).on(Oa+".zoom",g).on("dblclick.zoom",p).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function u(n){k.k=Math.max(N[0],Math.min(N[1],n))}function i(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function o(t,e,r,o){t.__chart__={x:k.x,y:k.y,k:k.k},u(Math.pow(2,o)),i(d=e,r),t=ta.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function a(){b&&b.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function c(n){z++||n({type:"zoomstart"})}function l(n){a(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function s(n){--z||n({type:"zoomend"}),d=null}function f(){function n(){f=1,i(ta.mouse(u),g),l(a)}function r(){h.on(L,null).on(T,null),p(f&&ta.event.target===o),s(a)}var u=this,o=ta.event.target,a=D.of(u,arguments),f=0,h=ta.select(t(u)).on(L,n).on(T,r),g=e(ta.mouse(u)),p=W(u);Dl.call(u),c(a)}function h(){function n(){var n=ta.touches(p);return g=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=e(n))}),n}function t(){var t=ta.event.target;ta.select(t).on(x,r).on(b,a),_.push(t);for(var e=ta.event.changedTouches,u=0,i=e.length;i>u;++u)d[e[u].identifier]=null;var c=n(),l=Date.now();if(1===c.length){if(500>l-M){var s=c[0];o(p,s,d[s.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=l}else if(c.length>1){var s=c[0],f=c[1],h=s[0]-f[0],g=s[1]-f[1];m=h*h+g*g}}function r(){var n,t,e,r,o=ta.touches(p);Dl.call(p);for(var a=0,c=o.length;c>a;++a,r=null)if(e=o[a],r=d[e.identifier]){if(t)break;n=e,t=r}if(r){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],u(f*g)}M=null,i(n,t),l(v)}function a(){if(ta.event.touches.length){for(var t=ta.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var u in d)return void n()}ta.selectAll(_).on(y,null),w.on(q,f).on(R,h),E(),s(v)}var g,p=this,v=D.of(p,arguments),d={},m=0,y=".zoom-"+ta.event.changedTouches[0].identifier,x="touchmove"+y,b="touchend"+y,_=[],w=ta.select(p),E=W(p);t(),c(v),w.on(q,null).on(R,t)}function g(){var n=D.of(this,arguments);y?clearTimeout(y):(v=e(d=m||ta.mouse(this)),Dl.call(this),c(n)),y=setTimeout(function(){y=null,s(n)},50),S(),u(Math.pow(2,.002*Ha())*k.k),i(d,v),l(n)}function p(){var n=ta.mouse(this),t=Math.log(k.k)/Math.LN2;o(this,n,e(n),ta.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var v,d,m,y,M,x,b,_,w,k={x:0,y:0,k:1},A=[960,500],N=Ia,C=250,z=0,q="mousedown.zoom",L="mousemove.zoom",T="mouseup.zoom",R="touchstart.zoom",D=E(n,"zoomstart","zoom","zoomend");return Oa||(Oa="onwheel"in ua?(Ha=function(){return-ta.event.deltaY*(ta.event.deltaMode?120:1)},"wheel"):"onmousewheel"in ua?(Ha=function(){return ta.event.wheelDelta},"mousewheel"):(Ha=function(){return-ta.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Tl?ta.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},c(n)}).tween("zoom:zoom",function(){var e=A[0],r=A[1],u=d?d[0]:e/2,i=d?d[1]:r/2,o=ta.interpolateZoom([(u-k.x)/k.k,(i-k.y)/k.k,e/k.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),a=e/r[2];this.__chart__=k={x:u-r[0]*a,y:i-r[1]*a,k:a},l(n)}}).each("interrupt.zoom",function(){s(n)}).each("end.zoom",function(){s(n)}):(this.__chart__=k,c(n),l(n),s(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},a(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:+t},a(),n):k.k},n.scaleExtent=function(t){return arguments.length?(N=null==t?Ia:[+t[0],+t[1]],n):N},n.center=function(t){return arguments.length?(m=t&&[+t[0],+t[1]],n):m},n.size=function(t){return arguments.length?(A=t&&[+t[0],+t[1]],n):A},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(b=t,x=t.copy(),k={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),k={x:0,y:0,k:1},n):w},ta.rebind(n,D,"on")};var Ha,Oa,Ia=[0,1/0];ta.color=ot,ot.prototype.toString=function(){return this.rgb()+""},ta.hsl=at;var Ya=at.prototype=new ot;Ya.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,this.l/n)},Ya.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,n*this.l)},Ya.rgb=function(){return ct(this.h,this.s,this.l)},ta.hcl=lt;var Za=lt.prototype=new ot;Za.brighter=function(n){return new lt(this.h,this.c,Math.min(100,this.l+Va*(arguments.length?n:1)))},Za.darker=function(n){return new lt(this.h,this.c,Math.max(0,this.l-Va*(arguments.length?n:1)))},Za.rgb=function(){return st(this.h,this.c,this.l).rgb()},ta.lab=ft;var Va=18,Xa=.95047,$a=1,Ba=1.08883,Wa=ft.prototype=new ot;Wa.brighter=function(n){return new ft(Math.min(100,this.l+Va*(arguments.length?n:1)),this.a,this.b)},Wa.darker=function(n){return new ft(Math.max(0,this.l-Va*(arguments.length?n:1)),this.a,this.b)},Wa.rgb=function(){return ht(this.l,this.a,this.b)},ta.rgb=mt;var Ja=mt.prototype=new ot;Ja.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),new mt(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new mt(u,u,u)},Ja.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new mt(n*this.r,n*this.g,n*this.b)},Ja.hsl=function(){return _t(this.r,this.g,this.b)},Ja.toString=function(){return"#"+xt(this.r)+xt(this.g)+xt(this.b)};var Ga=ta.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Ga.forEach(function(n,t){Ga.set(n,yt(t))}),ta.functor=Et,ta.xhr=At(y),ta.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=Nt(n,t,null==e?r:u(e),i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),c=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=l)return o;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++s;){var r=n.charCodeAt(s++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++a);else if(r!==c)continue;return n.slice(t,s-a)}return n.slice(t)}for(var r,u,i={},o={},a=[],l=n.length,s=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();t&&null==(h=t(h,f++))||a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new m,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(o).join(n)].concat(t.map(function(t){return u.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},ta.csv=ta.dsv(",","text/csv"),ta.tsv=ta.dsv(" ","text/tab-separated-values");var Ka,Qa,nc,tc,ec,rc=this[x(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};ta.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,f:!1,n:null};Qa?Qa.n=i:Ka=i,Qa=i,nc||(tc=clearTimeout(tc),nc=1,rc(qt))},ta.timer.flush=function(){Lt(),Tt()},ta.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var uc=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Dt);ta.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=ta.round(n,Rt(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),uc[8+e/3]};var ic=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,oc=ta.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=ta.round(n,Rt(n,t))).toFixed(Math.max(0,Math.min(20,Rt(n*(1+1e-15),t))))}}),ac=ta.time={},cc=Date;jt.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){lc.setUTCDate.apply(this._,arguments)},setDay:function(){lc.setUTCDay.apply(this._,arguments)},setFullYear:function(){lc.setUTCFullYear.apply(this._,arguments)},setHours:function(){lc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){lc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){lc.setUTCMinutes.apply(this._,arguments)},setMonth:function(){lc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){lc.setUTCSeconds.apply(this._,arguments)},setTime:function(){lc.setTime.apply(this._,arguments)}};var lc=Date.prototype;ac.year=Ft(function(n){return n=ac.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ac.years=ac.year.range,ac.years.utc=ac.year.utc.range,ac.day=Ft(function(n){var t=new cc(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ac.days=ac.day.range,ac.days.utc=ac.day.utc.range,ac.dayOfYear=function(n){var t=ac.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ac[n]=Ft(function(n){return(n=ac.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ac.year(n).getDay();return Math.floor((ac.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ac[n+"s"]=e.range,ac[n+"s"].utc=e.utc.range,ac[n+"OfYear"]=function(n){var e=ac.year(n).getDay();return Math.floor((ac.dayOfYear(n)+(e+t)%7)/7)}}),ac.week=ac.sunday,ac.weeks=ac.sunday.range,ac.weeks.utc=ac.sunday.utc.range,ac.weekOfYear=ac.sundayOfYear;var sc={"-":"",_:" ",0:"0"},fc=/^\s*\d+/,hc=/^%/;ta.locale=function(n){return{numberFormat:Pt(n),timeFormat:Ot(n)}};var gc=ta.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});ta.format=gc.numberFormat,ta.geo={},ce.prototype={s:0,t:0,add:function(n){le(n,this.t,pc),le(pc.s,this.s,this),this.s?this.t+=pc.t:this.s=pc.t -},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var pc=new ce;ta.geo.stream=function(n,t){n&&vc.hasOwnProperty(n.type)?vc[n.type](n,t):se(n,t)};var vc={Feature:function(n,t){se(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++rn?4*qa+n:n,Mc.lineStart=Mc.lineEnd=Mc.point=b}};ta.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=pe([t*Da,e*Da]);if(m){var u=de(m,r),i=[u[1],-u[0],0],o=de(i,u);Me(o),o=xe(o);var c=t-p,l=c>0?1:-1,v=o[0]*Pa*l,d=ga(c)>180;if(d^(v>l*p&&l*t>v)){var y=o[1]*Pa;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>l*p&&l*t>v)){var y=-o[1]*Pa;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){b.point=t}function r(){x[0]=s,x[1]=h,b.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=ga(r)>180?r+(r>0?360:-360):r}else v=n,d=e;Mc.point(n,e),t(n,e)}function i(){Mc.lineStart()}function o(){u(v,d),Mc.lineEnd(),ga(y)>Ca&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function l(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nyc?(s=-(h=180),f=-(g=90)):y>Ca?g=90:-Ca>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],ta.geo.stream(n,b);var t=M.length;if(t){M.sort(c);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],l(e[0],u)||l(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,s=e[0],h=u[1])}return M=x=null,1/0===s||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[s,f],[h,g]]}}(),ta.geo.centroid=function(n){xc=bc=_c=wc=Sc=kc=Ec=Ac=Nc=Cc=zc=0,ta.geo.stream(n,qc);var t=Nc,e=Cc,r=zc,u=t*t+e*e+r*r;return za>u&&(t=kc,e=Ec,r=Ac,Ca>bc&&(t=_c,e=wc,r=Sc),u=t*t+e*e+r*r,za>u)?[0/0,0/0]:[Math.atan2(e,t)*Pa,tt(r/Math.sqrt(u))*Pa]};var xc,bc,_c,wc,Sc,kc,Ec,Ac,Nc,Cc,zc,qc={sphere:b,point:_e,lineStart:Se,lineEnd:ke,polygonStart:function(){qc.lineStart=Ee},polygonEnd:function(){qc.lineStart=Se}},Lc=Le(Ne,Pe,je,[-qa,-qa/2]),Tc=1e9;ta.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=Ie(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(ta.geo.conicEqualArea=function(){return Ye(Ze)}).raw=Ze,ta.geo.albers=function(){return ta.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ta.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=ta.geo.albers(),o=ta.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=ta.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var l=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*l,f-.238*l],[s+.455*l,f+.238*l]]).stream(c).point,r=o.translate([s-.307*l,f+.201*l]).clipExtent([[s-.425*l+Ca,f+.12*l+Ca],[s-.214*l-Ca,f+.234*l-Ca]]).stream(c).point,u=a.translate([s-.205*l,f+.212*l]).clipExtent([[s-.214*l+Ca,f+.166*l+Ca],[s-.115*l-Ca,f+.234*l-Ca]]).stream(c).point,n},n.scale(1070)};var Rc,Dc,Pc,Uc,jc,Fc,Hc={point:b,lineStart:b,lineEnd:b,polygonStart:function(){Dc=0,Hc.lineStart=Ve},polygonEnd:function(){Hc.lineStart=Hc.lineEnd=Hc.point=b,Rc+=ga(Dc/2)}},Oc={point:Xe,lineStart:b,lineEnd:b,polygonStart:b,polygonEnd:b},Ic={point:We,lineStart:Je,lineEnd:Ge,polygonStart:function(){Ic.lineStart=Ke},polygonEnd:function(){Ic.point=We,Ic.lineStart=Je,Ic.lineEnd=Ge}};ta.geo.path=function(){function n(n){return n&&("function"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),ta.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return Rc=0,ta.geo.stream(n,u(Hc)),Rc},n.centroid=function(n){return _c=wc=Sc=kc=Ec=Ac=Nc=Cc=zc=0,ta.geo.stream(n,u(Ic)),zc?[Nc/zc,Cc/zc]:Ac?[kc/Ac,Ec/Ac]:Sc?[_c/Sc,wc/Sc]:[0/0,0/0]},n.bounds=function(n){return jc=Fc=-(Pc=Uc=1/0),ta.geo.stream(n,u(Oc)),[[Pc,Uc],[jc,Fc]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||tr(n):y,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new $e:new Qe(n),"function"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(ta.geo.albersUsa()).context(null)},ta.geo.transform=function(n){return{stream:function(t){var e=new er(t);for(var r in n)e[r]=n[r];return e}}},er.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},ta.geo.projection=ur,ta.geo.projectionMutator=ir,(ta.geo.equirectangular=function(){return ur(ar)}).raw=ar.invert=ar,ta.geo.rotation=function(n){function t(t){return t=n(t[0]*Da,t[1]*Da),t[0]*=Pa,t[1]*=Pa,t}return n=lr(n[0]%360*Da,n[1]*Da,n.length>2?n[2]*Da:0),t.invert=function(t){return t=n.invert(t[0]*Da,t[1]*Da),t[0]*=Pa,t[1]*=Pa,t},t},cr.invert=ar,ta.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=lr(-n[0]*Da,-n[1]*Da,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Pa,n[1]*=Pa}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=gr((t=+r)*Da,u*Da),n):t},n.precision=function(r){return arguments.length?(e=gr(t*Da,(u=+r)*Da),n):u},n.angle(90)},ta.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Da,u=n[1]*Da,i=t[1]*Da,o=Math.sin(r),a=Math.cos(r),c=Math.sin(u),l=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=l*s-c*f*a)*e),c*s+l*f*a)},ta.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return ta.range(Math.ceil(i/d)*d,u,d).map(h).concat(ta.range(Math.ceil(l/m)*m,c,m).map(g)).concat(ta.range(Math.ceil(r/p)*p,e,p).filter(function(n){return ga(n%d)>Ca}).map(s)).concat(ta.range(Math.ceil(a/v)*v,o,v).filter(function(n){return ga(n%m)>Ca}).map(f))}var e,r,u,i,o,a,c,l,s,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(c).slice(1),h(u).reverse().slice(1),g(l).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],l=+t[0][1],c=+t[1][1],i>u&&(t=i,i=u,u=t),l>c&&(t=l,l=c,c=t),n.precision(y)):[[i,l],[u,c]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,s=vr(a,o,90),f=dr(r,e,y),h=vr(l,c,90),g=dr(i,u,y),n):y},n.majorExtent([[-180,-90+Ca],[180,90-Ca]]).minorExtent([[-180,-80-Ca],[180,80+Ca]])},ta.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=mr,u=yr;return n.distance=function(){return ta.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},ta.geo.interpolate=function(n,t){return Mr(n[0]*Da,n[1]*Da,t[0]*Da,t[1]*Da)},ta.geo.length=function(n){return Yc=0,ta.geo.stream(n,Zc),Yc};var Yc,Zc={sphere:b,point:b,lineStart:xr,lineEnd:b,polygonStart:b,polygonEnd:b},Vc=br(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(ta.geo.azimuthalEqualArea=function(){return ur(Vc)}).raw=Vc;var Xc=br(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},y);(ta.geo.azimuthalEquidistant=function(){return ur(Xc)}).raw=Xc,(ta.geo.conicConformal=function(){return Ye(_r)}).raw=_r,(ta.geo.conicEquidistant=function(){return Ye(wr)}).raw=wr;var $c=br(function(n){return 1/n},Math.atan);(ta.geo.gnomonic=function(){return ur($c)}).raw=$c,Sr.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Ra]},(ta.geo.mercator=function(){return kr(Sr)}).raw=Sr;var Bc=br(function(){return 1},Math.asin);(ta.geo.orthographic=function(){return ur(Bc)}).raw=Bc;var Wc=br(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(ta.geo.stereographic=function(){return ur(Wc)}).raw=Wc,Er.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Ra]},(ta.geo.transverseMercator=function(){var n=kr(Er),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Er,ta.geom={},ta.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=Et(e),i=Et(r),o=n.length,a=[],c=[];for(t=0;o>t;t++)a.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(a.sort(zr),t=0;o>t;t++)c.push([a[t][0],-a[t][1]]);var l=Cr(a),s=Cr(c),f=s[0]===l[0],h=s[s.length-1]===l[l.length-1],g=[];for(t=l.length-1;t>=0;--t)g.push(n[a[l[t]][2]]);for(t=+f;t=r&&l.x<=i&&l.y>=u&&l.y<=o?[[r,o],[i,o],[i,u],[r,u]]:[];s.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Ca)*Ca,y:Math.round(o(n,t)/Ca)*Ca,i:t}})}var r=Ar,u=Nr,i=r,o=u,a=ul;return n?t(n):(t.links=function(n){return iu(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return iu(e(n)).cells.forEach(function(e,r){for(var u,i,o=e.site,a=e.edges.sort(Yr),c=-1,l=a.length,s=a[l-1].edge,f=s.l===o?s.r:s.l;++c=l,h=r>=s,g=h<<1|f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=su()),f?u=l:a=l,h?o=s:c=s,i(n,t,e,r,u,o,a,c)}var s,f,h,g,p,v,d,m,y,M=Et(a),x=Et(c);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)s=n[g],s.xm&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var b=+M(s=n[g],g),_=+x(s,g);v>b&&(v=b),d>_&&(d=_),b>m&&(m=b),_>y&&(y=_),f.push(b),h.push(_)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=su();if(k.add=function(n){i(k,n,+M(n,++g),+x(n,g),v,d,m,y)},k.visit=function(n){fu(n,k,v,d,m,y)},k.find=function(n){return hu(k,n[0],n[1],v,d,m,y)},g=-1,null==t){for(;++g=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=cl.get(e)||al,r=ll.get(r)||y,Mu(r(e.apply(null,ea.call(arguments,1))))},ta.interpolateHcl=Lu,ta.interpolateHsl=Tu,ta.interpolateLab=Ru,ta.interpolateRound=Du,ta.transform=function(n){var t=ua.createElementNS(ta.ns.prefix.svg,"g");return(ta.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Pu(e?e.matrix:sl)})(n)},Pu.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var sl={a:1,b:0,c:0,d:1,e:0,f:0};ta.interpolateTransform=Hu,ta.layout={},ta.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++ea*a/d){if(p>c){var l=t.charge/c;n.px-=i*l,n.py-=o*l}return!0}if(t.point&&c&&p>c){var l=t.pointCharge/c;n.px-=i*l,n.py-=o*l}}return!t.charge}}function t(n){n.px=ta.event.x,n.py=ta.event.y,a.resume()}var e,r,u,i,o,a={},c=ta.dispatch("start","tick","end"),l=[1,1],s=.9,f=fl,h=hl,g=-30,p=gl,v=.1,d=.64,m=[],M=[];return a.tick=function(){if((r*=.99)<.005)return c.end({type:"end",alpha:r=0}),!0;var t,e,a,f,h,p,d,y,x,b=m.length,_=M.length;for(e=0;_>e;++e)a=M[e],f=a.source,h=a.target,y=h.x-f.x,x=h.y-f.y,(p=y*y+x*x)&&(p=r*i[e]*((p=Math.sqrt(p))-u[e])/p,y*=p,x*=p,h.x-=y*(d=f.weight/(h.weight+f.weight)),h.y-=x*d,f.x+=y*(d=1-d),f.y+=x*d);if((d=r*v)&&(y=l[0]/2,x=l[1]/2,e=-1,d))for(;++e0?n:0:n>0&&(c.start({type:"start",alpha:r=n}),ta.timer(a.tick)),a):r},a.start=function(){function n(n,r){if(!e){for(e=new Array(c),a=0;c>a;++a)e[a]=[];for(a=0;s>a;++a){var u=M[a];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var i,o=e[t],a=-1,l=o.length;++at;++t)(r=m[t]).index=t,r.weight=0;for(t=0;s>t;++t)r=M[t],"number"==typeof r.source&&(r.source=m[r.source]),"number"==typeof r.target&&(r.target=m[r.target]),++r.source.weight,++r.target.weight;for(t=0;c>t;++t)r=m[t],isNaN(r.x)&&(r.x=n("x",p)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof f)for(t=0;s>t;++t)u[t]=+f.call(this,M[t],t);else for(t=0;s>t;++t)u[t]=f;if(i=[],"function"==typeof h)for(t=0;s>t;++t)i[t]=+h.call(this,M[t],t);else for(t=0;s>t;++t)i[t]=h;if(o=[],"function"==typeof g)for(t=0;c>t;++t)o[t]=+g.call(this,m[t],t);else for(t=0;c>t;++t)o[t]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=ta.behavior.drag().origin(y).on("dragstart.force",Xu).on("drag.force",t).on("dragend.force",$u)),arguments.length?void this.on("mouseover.force",Bu).on("mouseout.force",Wu).call(e):e},ta.rebind(a,c,"on")};var fl=20,hl=1,gl=1/0;ta.layout.hierarchy=function(){function n(u){var i,o=[u],a=[];for(u.depth=0;null!=(i=o.pop());)if(a.push(i),(l=e.call(n,i,i.depth))&&(c=l.length)){for(var c,l,s;--c>=0;)o.push(s=l[c]),s.parent=i,s.depth=i.depth+1;r&&(i.value=0),i.children=l}else r&&(i.value=+r.call(n,i,i.depth)||0),delete i.children;return Qu(u,function(n){var e,u;t&&(e=n.children)&&e.sort(t),r&&(u=n.parent)&&(u.value+=n.value)}),a}var t=ei,e=ni,r=ti;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(Ku(t,function(n){n.children&&(n.value=0)}),Qu(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},ta.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(o=i.length)){var o,a,c,l=-1;for(r=t.value?r/t.value:0;++lf?-1:1),p=(f-c*g)/ta.sum(l),v=ta.range(c),d=[];return null!=e&&v.sort(e===pl?function(n,t){return l[t]-l[n]}:function(n,t){return e(o[n],o[t])}),v.forEach(function(n){d[n]={data:o[n],value:a=l[n],startAngle:s,endAngle:s+=a*p+g,padAngle:h}}),d}var t=Number,e=pl,r=0,u=La,i=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n.padAngle=function(t){return arguments.length?(i=t,n):i},n};var pl={};ta.layout.stack=function(){function n(a,c){if(!(h=a.length))return a;var l=a.map(function(e,r){return t.call(n,e,r)}),s=l.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),o.call(n,t,e)]})}),f=e.call(n,s,c);l=ta.permute(l,f),s=ta.permute(s,f);var h,g,p,v,d=r.call(n,s,c),m=l[0].length;for(p=0;m>p;++p)for(u.call(n,l[0][p],v=d[p],s[0][p][1]),g=1;h>g;++g)u.call(n,l[g][p],v+=s[g-1][p][1],s[g][p][1]);return a}var t=y,e=ai,r=ci,u=oi,i=ui,o=ii;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:vl.get(t)||ai,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:dl.get(t)||ci,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var vl=ta.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(li),i=n.map(si),o=ta.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,c=0,l=[],s=[];for(t=0;r>t;++t)e=o[t],c>a?(a+=i[e],l.push(e)):(c+=i[e],s.push(e));return s.reverse().concat(l)},reverse:function(n){return ta.range(n.length).reverse()},"default":ai}),dl=ta.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,c=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)c[e]=(a-o[e])/2;return c},wiggle:function(n){var t,e,r,u,i,o,a,c,l,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=c=l=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];s>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=c-=u?i/u*a:0,l>c&&(l=c)}for(e=0;h>e;++e)g[e]-=l;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:ci});ta.layout.histogram=function(){function n(n,i){for(var o,a,c=[],l=n.map(e,this),s=r.call(this,l,i),f=u.call(this,s,l,i),i=-1,h=l.length,g=f.length-1,p=t?1:1/h;++i0)for(i=-1;++i=s[0]&&a<=s[1]&&(o=c[ta.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return c}var t=!0,e=Number,r=pi,u=hi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=Et(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return gi(n,t)}:Et(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},ta.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],l=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,Qu(a,function(n){n.r=+s(n.value)}),Qu(a,Mi),r){var f=r*(t?1:Math.max(2*a.r/c,2*a.r/l))/2;Qu(a,function(n){n.r+=f}),Qu(a,Mi),Qu(a,function(n){n.r-=f})}return _i(a,c/2,l/2,t?1:1/Math.max(2*a.r/c,2*a.r/l)),o}var t,e=ta.layout.hierarchy().sort(vi),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},Gu(n,e)},ta.layout.tree=function(){function n(n,u){var s=o.call(this,n,u),f=s[0],h=t(f);if(Qu(h,e),h.parent.m=-h.z,Ku(h,r),l)Ku(f,i);else{var g=f,p=f,v=f;Ku(f,function(n){n.xp.x&&(p=n),n.depth>v.depth&&(v=n)});var d=a(g,p)/2-g.x,m=c[0]/(p.x+a(p,g)/2+d),y=c[1]/(v.depth||1);Ku(f,function(n){n.x=(n.x+d)*m,n.y=n.depth*y})}return s}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var u,i=t.children,o=0,a=i.length;a>o;++o)r.push((i[o]=u={_:i[o],parent:t,children:(u=i[o].children)&&u.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=u);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Ni(n);var i=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-i):n.z=i}else r&&(n.z=r.z+a(n._,r._));n.parent.A=u(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function u(n,t,e){if(t){for(var r,u=n,i=n,o=t,c=u.parent.children[0],l=u.m,s=i.m,f=o.m,h=c.m;o=Ei(o),u=ki(u),o&&u;)c=ki(c),i=Ei(i),i.a=n,r=o.z+f-u.z-l+a(o._,u._),r>0&&(Ai(Ci(o,n,e),n,r),l+=r,s+=r),f+=o.m,l+=u.m,h+=c.m,s+=i.m;o&&!Ei(i)&&(i.t=o,i.m+=f-s),u&&!ki(c)&&(c.t=u,c.m+=l-h,e=n)}return e}function i(n){n.x*=c[0],n.y=n.depth*c[1]}var o=ta.layout.hierarchy().sort(null).value(null),a=Si,c=[1,1],l=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(l=null==(c=t)?i:null,n):l?null:c},n.nodeSize=function(t){return arguments.length?(l=null==(c=t)?null:i,n):l?c:null},Gu(n,o)},ta.layout.cluster=function(){function n(n,i){var o,a=t.call(this,n,i),c=a[0],l=0;Qu(c,function(n){var t=n.children;t&&t.length?(n.x=qi(t),n.y=zi(t)):(n.x=o?l+=e(n,o):0,n.y=0,o=n)});var s=Li(c),f=Ti(c),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return Qu(c,u?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),a}var t=ta.layout.hierarchy().sort(null).value(null),e=Si,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},Gu(n,t)},ta.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++ut?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,c,l=f(e),s=[],h=i.slice(),p=1/0,v="slice"===g?l.dx:"dice"===g?l.dy:"slice-dice"===g?1&e.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(n(h,l.dx*l.dy/e.value),s.area=0;(c=h.length)>0;)s.push(o=h[c-1]),s.area+=o.area,"squarify"!==g||(a=r(s,v))<=p?(h.pop(),p=a):(s.area-=s.pop().area,u(s,v,l,!1),v=Math.min(l.dx,l.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,v,l,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),c=[];for(n(a,o.dx*o.dy/t.value),c.area=0;i=a.pop();)c.push(i),c.area+=i.area,null!=i.z&&(u(c,i.z?o.dx:o.dy,o,!a.length),c.length=c.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++oe&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,l=e.y,s=t?c(n.area/t):0;if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++ie.dx)&&(s=e.dx);++ie&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=ta.random.normal.apply(ta,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=ta.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},ta.scale={};var ml={floor:y,ceil:y};ta.scale.linear=function(){return Ii([0,1],[0,1],mu,!1)};var yl={s:1,g:1,p:1,r:1,e:1};ta.scale.log=function(){return Ji(ta.scale.linear().domain([0,1]),10,!0,[1,10])};var Ml=ta.format(".0e"),xl={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};ta.scale.pow=function(){return Gi(ta.scale.linear(),1,[0,1])},ta.scale.sqrt=function(){return ta.scale.pow().exponent(.5)},ta.scale.ordinal=function(){return Qi([],{t:"range",a:[[]]})},ta.scale.category10=function(){return ta.scale.ordinal().range(bl)},ta.scale.category20=function(){return ta.scale.ordinal().range(_l)},ta.scale.category20b=function(){return ta.scale.ordinal().range(wl)},ta.scale.category20c=function(){return ta.scale.ordinal().range(Sl)};var bl=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(Mt),_l=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(Mt),wl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(Mt),Sl=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(Mt);ta.scale.quantile=function(){return no([],[])},ta.scale.quantize=function(){return to(0,1,[0,1])},ta.scale.threshold=function(){return eo([.5],[0,1])},ta.scale.identity=function(){return ro([0,1])},ta.svg={},ta.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),l=Math.max(0,+r.apply(this,arguments)),s=o.apply(this,arguments)-Ra,f=a.apply(this,arguments)-Ra,h=Math.abs(f-s),g=s>f?0:1;if(n>l&&(p=l,l=n,n=p),h>=Ta)return t(l,g)+(n?t(n,1-g):"")+"Z";var p,v,d,m,y,M,x,b,_,w,S,k,E=0,A=0,N=[];if((m=(+c.apply(this,arguments)||0)/2)&&(d=i===kl?Math.sqrt(n*n+l*l):+i.apply(this,arguments),g||(A*=-1),l&&(A=tt(d/l*Math.sin(m))),n&&(E=tt(d/n*Math.sin(m)))),l){y=l*Math.cos(s+A),M=l*Math.sin(s+A),x=l*Math.cos(f-A),b=l*Math.sin(f-A);var C=Math.abs(f-s-2*A)<=qa?0:1;if(A&&so(y,M,x,b)===g^C){var z=(s+f)/2;y=l*Math.cos(z),M=l*Math.sin(z),x=b=null}}else y=M=0;if(n){_=n*Math.cos(f-E),w=n*Math.sin(f-E),S=n*Math.cos(s+E),k=n*Math.sin(s+E);var q=Math.abs(s-f+2*E)<=qa?0:1;if(E&&so(_,w,S,k)===1-g^q){var L=(s+f)/2;_=n*Math.cos(L),w=n*Math.sin(L),S=k=null}}else _=w=0;if((p=Math.min(Math.abs(l-n)/2,+u.apply(this,arguments)))>.001){v=l>n^g?0:1;var T=null==S?[_,w]:null==x?[y,M]:Lr([y,M],[S,k],[x,b],[_,w]),R=y-T[0],D=M-T[1],P=x-T[0],U=b-T[1],j=1/Math.sin(Math.acos((R*P+D*U)/(Math.sqrt(R*R+D*D)*Math.sqrt(P*P+U*U)))/2),F=Math.sqrt(T[0]*T[0]+T[1]*T[1]);if(null!=x){var H=Math.min(p,(l-F)/(j+1)),O=fo(null==S?[_,w]:[S,k],[y,M],l,H,g),I=fo([x,b],[_,w],l,H,g);p===H?N.push("M",O[0],"A",H,",",H," 0 0,",v," ",O[1],"A",l,",",l," 0 ",1-g^so(O[1][0],O[1][1],I[1][0],I[1][1]),",",g," ",I[1],"A",H,",",H," 0 0,",v," ",I[0]):N.push("M",O[0],"A",H,",",H," 0 1,",v," ",I[0])}else N.push("M",y,",",M);if(null!=S){var Y=Math.min(p,(n-F)/(j-1)),Z=fo([y,M],[S,k],n,-Y,g),V=fo([_,w],null==x?[y,M]:[x,b],n,-Y,g);p===Y?N.push("L",V[0],"A",Y,",",Y," 0 0,",v," ",V[1],"A",n,",",n," 0 ",g^so(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-g," ",Z[1],"A",Y,",",Y," 0 0,",v," ",Z[0]):N.push("L",V[0],"A",Y,",",Y," 0 0,",v," ",Z[0])}else N.push("L",_,",",w)}else N.push("M",y,",",M),null!=x&&N.push("A",l,",",l," 0 ",C,",",g," ",x,",",b),N.push("L",_,",",w),null!=S&&N.push("A",n,",",n," 0 ",q,",",1-g," ",S,",",k);return N.push("Z"),N.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=io,r=oo,u=uo,i=kl,o=ao,a=co,c=lo;return n.innerRadius=function(t){return arguments.length?(e=Et(t),n):e},n.outerRadius=function(t){return arguments.length?(r=Et(t),n):r},n.cornerRadius=function(t){return arguments.length?(u=Et(t),n):u},n.padRadius=function(t){return arguments.length?(i=t==kl?kl:Et(t),n):i},n.startAngle=function(t){return arguments.length?(o=Et(t),n):o},n.endAngle=function(t){return arguments.length?(a=Et(t),n):a},n.padAngle=function(t){return arguments.length?(c=Et(t),n):c},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-Ra;return[Math.cos(t)*n,Math.sin(t)*n]},n};var kl="auto";ta.svg.line=function(){return ho(y)};var El=ta.map({linear:go,"linear-closed":po,step:vo,"step-before":mo,"step-after":yo,basis:So,"basis-open":ko,"basis-closed":Eo,bundle:Ao,cardinal:bo,"cardinal-open":Mo,"cardinal-closed":xo,monotone:To});El.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Al=[0,2/3,1/3,0],Nl=[0,1/3,2/3,0],Cl=[0,1/6,2/3,1/6];ta.svg.line.radial=function(){var n=ho(Ro);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},mo.reverse=yo,yo.reverse=mo,ta.svg.area=function(){return Do(y)},ta.svg.area.radial=function(){var n=Do(Ro);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},ta.svg.chord=function(){function n(n,a){var c=t(this,i,n,a),l=t(this,o,n,a);return"M"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,l)?u(c.r,c.p1,c.r,c.p0):u(c.r,c.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+u(l.r,l.p1,c.r,c.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)-Ra,s=l.call(n,u,r)-Ra;return{r:i,a0:o,a1:s,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>qa)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=mr,o=yr,a=Po,c=ao,l=co;return n.radius=function(t){return arguments.length?(a=Et(t),n):a},n.source=function(t){return arguments.length?(i=Et(t),n):i},n.target=function(t){return arguments.length?(o=Et(t),n):o},n.startAngle=function(t){return arguments.length?(c=Et(t),n):c},n.endAngle=function(t){return arguments.length?(l=Et(t),n):l},n},ta.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,c=[i,{x:i.x,y:a},{x:o.x,y:a},o];return c=c.map(r),"M"+c[0]+"C"+c[1]+" "+c[2]+" "+c[3]}var t=mr,e=yr,r=Uo;return n.source=function(e){return arguments.length?(t=Et(e),n):t},n.target=function(t){return arguments.length?(e=Et(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},ta.svg.diagonal.radial=function(){var n=ta.svg.diagonal(),t=Uo,e=n.projection;return n.projection=function(n){return arguments.length?e(jo(t=n)):t},n},ta.svg.symbol=function(){function n(n,r){return(zl.get(t.call(this,n,r))||Oo)(e.call(this,n,r))}var t=Ho,e=Fo;return n.type=function(e){return arguments.length?(t=Et(e),n):t},n.size=function(t){return arguments.length?(e=Et(t),n):e},n};var zl=ta.map({circle:Oo,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Ll)),e=t*Ll;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/ql),e=t*ql/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/ql),e=t*ql/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});ta.svg.symbolTypes=zl.keys();var ql=Math.sqrt(3),Ll=Math.tan(30*Da);_a.transition=function(n){for(var t,e,r=Tl||++Ul,u=Xo(n),i=[],o=Rl||{time:Date.now(),ease:Su,delay:0,duration:250},a=-1,c=this.length;++ai;i++){u.push(t=[]);for(var e=this[i],a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return Yo(u,this.namespace,this.id)},Pl.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):Y(this,null==t?function(t){t[r][e].tween.remove(n)}:function(u){u[r][e].tween.set(n,t)})},Pl.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?Hu:mu,a=ta.ns.qualify(n);return Zo(this,"attr."+n,t,a.local?i:u)},Pl.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=ta.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Pl.style=function(n,e,r){function u(){this.style.removeProperty(n)}function i(e){return null==e?u:(e+="",function(){var u,i=t(this).getComputedStyle(this,null).getPropertyValue(n);return i!==e&&(u=mu(i,e),function(t){this.style.setProperty(n,u(t),r)})})}var o=arguments.length;if(3>o){if("string"!=typeof n){2>o&&(e="");for(r in n)this.style(r,n[r],e);return this}r=""}return Zo(this,"style."+n,e,i)},Pl.styleTween=function(n,e,r){function u(u,i){var o=e.call(this,u,i,t(this).getComputedStyle(this,null).getPropertyValue(n));return o&&function(t){this.style.setProperty(n,o(t),r)}}return arguments.length<3&&(r=""),this.tween("style."+n,u)},Pl.text=function(n){return Zo(this,"text",n,Vo)},Pl.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Pl.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=ta.ease.apply(ta,arguments)),Y(this,function(r){r[e][t].ease=n}))},Pl.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:Y(this,"function"==typeof n?function(r,u,i){r[e][t].delay=+n.call(r,r.__data__,u,i)}:(n=+n,function(r){r[e][t].delay=n}))},Pl.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:Y(this,"function"==typeof n?function(r,u,i){r[e][t].duration=Math.max(1,n.call(r,r.__data__,u,i))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Pl.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var u=Rl,i=Tl;try{Tl=e,Y(this,function(t,u,i){Rl=t[r][e],n.call(t,t.__data__,u,i)})}finally{Rl=u,Tl=i}}else Y(this,function(u){var i=u[r][e];(i.event||(i.event=ta.dispatch("start","end","interrupt"))).on(n,t)});return this},Pl.transition=function(){for(var n,t,e,r,u=this.id,i=++Ul,o=this.namespace,a=[],c=0,l=this.length;l>c;c++){a.push(n=[]);for(var t=this[c],s=0,f=t.length;f>s;s++)(e=t[s])&&(r=e[o][u],$o(e,s,o,i,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Yo(a,o,i)},ta.svg.axis=function(){function n(n){n.each(function(){var n,l=ta.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==c?f.ticks?f.ticks.apply(f,a):f.domain():c,g=null==t?f.tickFormat?f.tickFormat.apply(f,a):y:t,p=l.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Ca),d=ta.transition(p.exit()).style("opacity",Ca).remove(),m=ta.transition(p.order()).style("opacity",1),M=Math.max(u,0)+o,x=Ui(f),b=l.selectAll(".domain").data([0]),_=(b.enter().append("path").attr("class","domain"),ta.transition(b));v.append("line"),v.append("text");var w,S,k,E,A=v.select("line"),N=m.select("line"),C=p.select("text").text(g),z=v.select("text"),q=m.select("text"),L="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=Bo,w="x",k="y",S="x2",E="y2",C.attr("dy",0>L?"0em":".71em").style("text-anchor","middle"),_.attr("d","M"+x[0]+","+L*i+"V0H"+x[1]+"V"+L*i)):(n=Wo,w="y",k="x",S="y2",E="x2",C.attr("dy",".32em").style("text-anchor",0>L?"end":"start"),_.attr("d","M"+L*i+","+x[0]+"H0V"+x[1]+"H"+L*i)),A.attr(E,L*u),z.attr(k,L*M),N.attr(S,0).attr(E,L*u),q.attr(w,0).attr(k,L*M),f.rangeBand){var T=f,R=T.rangeBand()/2;s=f=function(n){return T(n)+R}}else s.rangeBand?s=f:d.call(n,f,s);v.call(n,s,f),m.call(n,f,f)})}var t,e=ta.scale.linear(),r=jl,u=6,i=6,o=3,a=[10],c=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Fl?t+"":jl,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(c=t,n):c},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var jl="bottom",Fl={top:1,right:1,bottom:1,left:1};ta.svg.brush=function(){function n(t){t.each(function(){var t=ta.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",i).on("touchstart.brush",i),o=t.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=t.selectAll(".resize").data(v,y);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Hl[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var c,f=ta.transition(t),h=ta.transition(o);l&&(c=Ui(l),h.attr("x",c[0]).attr("width",c[1]-c[0]),r(f)),s&&(c=Ui(s),h.attr("y",c[0]).attr("height",c[1]-c[0]),u(f)),e(f)})}function e(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+f[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function r(n){n.select(".extent").attr("x",f[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",f[1]-f[0])}function u(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function i(){function i(){32==ta.event.keyCode&&(C||(M=null,q[0]-=f[1],q[1]-=h[1],C=2),S())}function v(){32==ta.event.keyCode&&2==C&&(q[0]+=f[1],q[1]+=h[1],C=0,S())}function d(){var n=ta.mouse(b),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(ta.event.altKey?(M||(M=[(f[0]+f[1])/2,(h[0]+h[1])/2]),q[0]=f[+(n[0]s?(u=r,r=s):u=s),v[0]!=r||v[1]!=u?(e?a=null:o=null,v[0]=r,v[1]=u,!0):void 0}function y(){d(),k.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),ta.select("body").style("cursor",null),L.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),z(),w({type:"brushend"})}var M,x,b=this,_=ta.select(ta.event.target),w=c.of(b,arguments),k=ta.select(b),E=_.datum(),A=!/^(n|s)$/.test(E)&&l,N=!/^(e|w)$/.test(E)&&s,C=_.classed("extent"),z=W(b),q=ta.mouse(b),L=ta.select(t(b)).on("keydown.brush",i).on("keyup.brush",v);if(ta.event.changedTouches?L.on("touchmove.brush",d).on("touchend.brush",y):L.on("mousemove.brush",d).on("mouseup.brush",y),k.interrupt().selectAll("*").interrupt(),C)q[0]=f[0]-q[0],q[1]=h[0]-q[1];else if(E){var T=+/w$/.test(E),R=+/^n/.test(E);x=[f[1-T]-q[0],h[1-R]-q[1]],q[0]=f[T],q[1]=h[R]}else ta.event.altKey&&(M=q.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),ta.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),d()}var o,a,c=E(n,"brushstart","brush","brushend"),l=null,s=null,f=[0,0],h=[0,0],g=!0,p=!0,v=Ol[0];return n.event=function(n){n.each(function(){var n=c.of(this,arguments),t={x:f,y:h,i:o,j:a},e=this.__chart__||t;this.__chart__=t,Tl?ta.select(this).transition().each("start.brush",function(){o=e.i,a=e.j,f=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=yu(f,t.x),r=yu(h,t.y);return o=a=null,function(u){f=t.x=e(u),h=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){o=t.i,a=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(l=t,v=Ol[!l<<1|!s],n):l},n.y=function(t){return arguments.length?(s=t,v=Ol[!l<<1|!s],n):s},n.clamp=function(t){return arguments.length?(l&&s?(g=!!t[0],p=!!t[1]):l?g=!!t:s&&(p=!!t),n):l&&s?[g,p]:l?g:s?p:null},n.extent=function(t){var e,r,u,i,c;return arguments.length?(l&&(e=t[0],r=t[1],s&&(e=e[0],r=r[0]),o=[e,r],l.invert&&(e=l(e),r=l(r)),e>r&&(c=e,e=r,r=c),(e!=f[0]||r!=f[1])&&(f=[e,r])),s&&(u=t[0],i=t[1],l&&(u=u[1],i=i[1]),a=[u,i],s.invert&&(u=s(u),i=s(i)),u>i&&(c=u,u=i,i=c),(u!=h[0]||i!=h[1])&&(h=[u,i])),n):(l&&(o?(e=o[0],r=o[1]):(e=f[0],r=f[1],l.invert&&(e=l.invert(e),r=l.invert(r)),e>r&&(c=e,e=r,r=c))),s&&(a?(u=a[0],i=a[1]):(u=h[0],i=h[1],s.invert&&(u=s.invert(u),i=s.invert(i)),u>i&&(c=u,u=i,i=c))),l&&s?[[e,u],[r,i]]:l?[e,r]:s&&[u,i])},n.clear=function(){return n.empty()||(f=[0,0],h=[0,0],o=a=null),n},n.empty=function(){return!!l&&f[0]==f[1]||!!s&&h[0]==h[1]},ta.rebind(n,c,"on")};var Hl={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Ol=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Il=ac.format=gc.timeFormat,Yl=Il.utc,Zl=Yl("%Y-%m-%dT%H:%M:%S.%LZ");Il.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?Jo:Zl,Jo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},Jo.toString=Zl.toString,ac.second=Ft(function(n){return new cc(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),ac.seconds=ac.second.range,ac.seconds.utc=ac.second.utc.range,ac.minute=Ft(function(n){return new cc(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),ac.minutes=ac.minute.range,ac.minutes.utc=ac.minute.utc.range,ac.hour=Ft(function(n){var t=n.getTimezoneOffset()/60;return new cc(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),ac.hours=ac.hour.range,ac.hours.utc=ac.hour.utc.range,ac.month=Ft(function(n){return n=ac.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),ac.months=ac.month.range,ac.months.utc=ac.month.utc.range;var Vl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Xl=[[ac.second,1],[ac.second,5],[ac.second,15],[ac.second,30],[ac.minute,1],[ac.minute,5],[ac.minute,15],[ac.minute,30],[ac.hour,1],[ac.hour,3],[ac.hour,6],[ac.hour,12],[ac.day,1],[ac.day,2],[ac.week,1],[ac.month,1],[ac.month,3],[ac.year,1]],$l=Il.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",Ne]]),Bl={range:function(n,t,e){return ta.range(Math.ceil(n/e)*e,+t,e).map(Ko)},floor:y,ceil:y};Xl.year=ac.year,ac.scale=function(){return Go(ta.scale.linear(),Xl,$l)};var Wl=Xl.map(function(n){return[n[0].utc,n[1]]}),Jl=Yl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",Ne]]);Wl.year=ac.year.utc,ac.scale.utc=function(){return Go(ta.scale.linear(),Wl,Jl)},ta.text=At(function(n){return n.responseText}),ta.json=function(n,t){return Nt(n,"application/json",Qo,t)},ta.html=function(n,t){return Nt(n,"text/html",na,t)},ta.xml=At(function(n){return n.responseXML}),"function"==typeof define&&define.amd?define(ta):"object"==typeof module&&module.exports&&(module.exports=ta),this.d3=ta}(); \ No newline at end of file diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/holder.min.js b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/holder.min.js deleted file mode 100644 index 6bfc844..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/holder.min.js +++ /dev/null @@ -1,12 +0,0 @@ -/*! - -Holder - client side image placeholders -Version 2.7.1+6hydf -© 2015 Ivan Malopinsky - http://imsky.co - -Site: http://holderjs.com -Issues: https://github.com/imsky/holder/issues -License: http://opensource.org/licenses/MIT - -*/ -!function(a){if(a.document){var b=a.document;b.querySelectorAll||(b.querySelectorAll=function(c){var d,e=b.createElement("style"),f=[];for(b.documentElement.firstChild.appendChild(e),b._qsa=[],e.styleSheet.cssText=c+"{x-qsa:expression(document._qsa && document._qsa.push(this))}",a.scrollBy(0,0),e.parentNode.removeChild(e);b._qsa.length;)d=b._qsa.shift(),d.style.removeAttribute("x-qsa"),f.push(d);return b._qsa=null,f}),b.querySelector||(b.querySelector=function(a){var c=b.querySelectorAll(a);return c.length?c[0]:null}),b.getElementsByClassName||(b.getElementsByClassName=function(a){return a=String(a).replace(/^|\s+/g,"."),b.querySelectorAll(a)}),Object.keys||(Object.keys=function(a){if(a!==Object(a))throw TypeError("Object.keys called on non-object");var b,c=[];for(b in a)Object.prototype.hasOwnProperty.call(a,b)&&c.push(b);return c}),function(a){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";a.atob=a.atob||function(a){a=String(a);var c,d=0,e=[],f=0,g=0;if(a=a.replace(/\s/g,""),a.length%4===0&&(a=a.replace(/=+$/,"")),a.length%4===1)throw Error("InvalidCharacterError");if(/[^+/0-9A-Za-z]/.test(a))throw Error("InvalidCharacterError");for(;d>16&255)),e.push(String.fromCharCode(f>>8&255)),e.push(String.fromCharCode(255&f)),g=0,f=0),d+=1;return 12===g?(f>>=4,e.push(String.fromCharCode(255&f))):18===g&&(f>>=2,e.push(String.fromCharCode(f>>8&255)),e.push(String.fromCharCode(255&f))),e.join("")},a.btoa=a.btoa||function(a){a=String(a);var c,d,e,f,g,h,i,j=0,k=[];if(/[^\x00-\xFF]/.test(a))throw Error("InvalidCharacterError");for(;j>2,g=(3&c)<<4|d>>4,h=(15&d)<<2|e>>6,i=63&e,j===a.length+2?(h=64,i=64):j===a.length+1&&(i=64),k.push(b.charAt(f),b.charAt(g),b.charAt(h),b.charAt(i));return k.join("")}}(a),Object.prototype.hasOwnProperty||(Object.prototype.hasOwnProperty=function(a){var b=this.__proto__||this.constructor.prototype;return a in this&&(!(a in b)||b[a]!==this[a])}),function(){if("performance"in a==!1&&(a.performance={}),Date.now=Date.now||function(){return(new Date).getTime()},"now"in a.performance==!1){var b=Date.now();performance.timing&&performance.timing.navigationStart&&(b=performance.timing.navigationStart),a.performance.now=function(){return Date.now()-b}}}(),a.requestAnimationFrame||(a.webkitRequestAnimationFrame?!function(a){a.requestAnimationFrame=function(b){return webkitRequestAnimationFrame(function(){b(a.performance.now())})},a.cancelAnimationFrame=webkitCancelAnimationFrame}(a):a.mozRequestAnimationFrame?!function(a){a.requestAnimationFrame=function(b){return mozRequestAnimationFrame(function(){b(a.performance.now())})},a.cancelAnimationFrame=mozCancelAnimationFrame}(a):!function(a){a.requestAnimationFrame=function(b){return a.setTimeout(b,1e3/60)},a.cancelAnimationFrame=a.clearTimeout}(a))}}(this),function(a,b){"object"==typeof exports&&"object"==typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):"object"==typeof exports?exports.Holder=b():a.Holder=b()}(this,function(){return function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={exports:{},id:d,loaded:!1};return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}var c={};return b.m=a,b.c=c,b.p="",b(0)}([function(a,b,c){(function(b){function d(a,b,c,d){var f=e(c.substr(c.lastIndexOf(a.domain)),a);f&&h({mode:null,el:d,flags:f,engineSettings:b})}function e(a,b){var c={theme:B(J.settings.themes.gray,null),stylesheets:b.stylesheets,instanceOptions:b};return a.match(/([\d]+p?)x([\d]+p?)(?:\?|$)/)?f(a,c):g(a,c)}function f(a,b){var c=a.split("?"),d=c[0].split("/");b.holderURL=a;var e=d[1],f=e.match(/([\d]+p?)x([\d]+p?)/);if(!f)return!1;if(b.fluid=-1!==e.indexOf("p"),b.dimensions={width:f[1].replace("p","%"),height:f[2].replace("p","%")},2===c.length){var g=A.parse(c[1]);if(g.bg&&(b.theme.background=(-1===g.bg.indexOf("#")?"#":"")+g.bg),g.fg&&(b.theme.foreground=(-1===g.fg.indexOf("#")?"#":"")+g.fg),g.theme&&b.instanceOptions.themes.hasOwnProperty(g.theme)&&(b.theme=B(b.instanceOptions.themes[g.theme],null)),g.text&&(b.text=g.text),g.textmode&&(b.textmode=g.textmode),g.size&&(b.size=g.size),g.font&&(b.font=g.font),g.align&&(b.align=g.align),b.nowrap=z.truthy(g.nowrap),b.auto=z.truthy(g.auto),z.truthy(g.random)){J.vars.cache.themeKeys=J.vars.cache.themeKeys||Object.keys(b.instanceOptions.themes);var h=J.vars.cache.themeKeys[0|Math.random()*J.vars.cache.themeKeys.length];b.theme=B(b.instanceOptions.themes[h],null)}}return b}function g(a,b){var c=!1,d=String.fromCharCode(11),e=a.replace(/([^\\])\//g,"$1"+d).split(d),f=/%[0-9a-f]{2}/gi,g=b.instanceOptions;b.holderURL=[];for(var h=e.length,i=0;h>i;i++){var j=e[i];if(j.match(f))try{j=decodeURIComponent(j)}catch(k){j=e[i]}var l=!1;if(J.flags.dimensions.match(j))c=!0,b.dimensions=J.flags.dimensions.output(j),l=!0;else if(J.flags.fluid.match(j))c=!0,b.dimensions=J.flags.fluid.output(j),b.fluid=!0,l=!0;else if(J.flags.textmode.match(j))b.textmode=J.flags.textmode.output(j),l=!0;else if(J.flags.colors.match(j)){var m=J.flags.colors.output(j);b.theme=B(b.theme,m),l=!0}else if(g.themes[j])g.themes.hasOwnProperty(j)&&(b.theme=B(g.themes[j],null)),l=!0;else if(J.flags.font.match(j))b.font=J.flags.font.output(j),l=!0;else if(J.flags.auto.match(j))b.auto=!0,l=!0;else if(J.flags.text.match(j))b.text=J.flags.text.output(j),l=!0;else if(J.flags.size.match(j))b.size=J.flags.size.output(j),l=!0;else if(J.flags.random.match(j)){null==J.vars.cache.themeKeys&&(J.vars.cache.themeKeys=Object.keys(g.themes));var n=J.vars.cache.themeKeys[0|Math.random()*J.vars.cache.themeKeys.length];b.theme=B(g.themes[n],null),l=!0}l&&b.holderURL.push(j)}return b.holderURL.unshift(g.domain),b.holderURL=b.holderURL.join("/"),c?b:!1}function h(a){var b=a.mode,c=a.el,d=a.flags,e=a.engineSettings,f=d.dimensions,g=d.theme,h=f.width+"x"+f.height;if(b=null==b?d.fluid?"fluid":"image":b,null!=d.text&&(g.text=d.text,"object"===c.nodeName.toLowerCase())){for(var j=g.text.split("\\n"),k=0;k1){var n,o=0,p=0,q=0;j=new e.Group("line"+q),("left"===a.align||"right"===a.align)&&(m=a.width*(1-2*(1-J.setup.lineWrapRatio)));for(var r=0;r=m||t===!0)&&(b(g,j,o,g.properties.leading),g.add(j),o=0,p+=g.properties.leading,q+=1,j=new e.Group("line"+q),j.y=p),t!==!0&&(i.moveTo(o,0),o+=h.spaceWidth+s.width,j.add(i))}if(b(g,j,o,g.properties.leading),g.add(j),"left"===a.align)g.moveTo(a.width-l,null,null);else if("right"===a.align){for(n in g.children)j=g.children[n],j.moveTo(a.width-j.width,null,null);g.moveTo(0-(a.width-l),null,null)}else{for(n in g.children)j=g.children[n],j.moveTo((g.width-j.width)/2,null,null);g.moveTo((a.width-g.width)/2,null,null)}g.moveTo(null,(a.height-g.height)/2,null),(a.height-g.height)/2<0&&g.moveTo(null,0,null)}else i=new e.Text(a.text),j=new e.Group("line0"),j.add(i),g.add(j),"left"===a.align?g.moveTo(a.width-l,null,null):"right"===a.align?g.moveTo(0-(a.width-l),null,null):g.moveTo((a.width-h.boundingBox.width)/2,null,null),g.moveTo(null,(a.height-h.boundingBox.height)/2,null);return d}function k(a,b,c){var d=parseInt(a,10),e=parseInt(b,10),f=Math.max(d,e),g=Math.min(d,e),h=.8*Math.min(g,f*J.defaults.scale);return Math.round(Math.max(c,h))}function l(a){var b;b=null==a||null==a.nodeType?J.vars.resizableImages:[a];for(var c=0,d=b.length;d>c;c++){var e=b[c];if(e.holderData){var f=e.holderData.flags,g=D(e);if(g){if(!e.holderData.resizeUpdate)continue;if(f.fluid&&f.auto){var h=e.holderData.fluidConfig;switch(h.mode){case"width":g.height=g.width/h.ratio;break;case"height":g.width=g.height*h.ratio}}var j={mode:"image",holderSettings:{dimensions:g,theme:f.theme,flags:f},el:e,engineSettings:e.holderData.engineSettings};"exact"==f.textmode&&(f.exactDimensions=g,j.holderSettings.dimensions=f.dimensions),i(j)}else p(e)}}}function m(a){if(a.holderData){var b=D(a);if(b){var c=a.holderData.flags,d={fluidHeight:"%"==c.dimensions.height.slice(-1),fluidWidth:"%"==c.dimensions.width.slice(-1),mode:null,initialDimensions:b};d.fluidWidth&&!d.fluidHeight?(d.mode="width",d.ratio=d.initialDimensions.width/parseFloat(c.dimensions.height)):!d.fluidWidth&&d.fluidHeight&&(d.mode="height",d.ratio=parseFloat(c.dimensions.width)/d.initialDimensions.height),a.holderData.fluidConfig=d}else p(a)}}function n(){for(var a,c=[],d=Object.keys(J.vars.invisibleImages),e=0,f=d.length;f>e;e++)a=J.vars.invisibleImages[d[e]],D(a)&&"img"==a.nodeName.toLowerCase()&&(c.push(a),delete J.vars.invisibleImages[d[e]]);c.length&&I.run({images:c}),b.requestAnimationFrame(n)}function o(){J.vars.visibilityCheckStarted||(b.requestAnimationFrame(n),J.vars.visibilityCheckStarted=!0)}function p(a){a.holderData.invisibleId||(J.vars.invisibleId+=1,J.vars.invisibleImages["i"+J.vars.invisibleId]=a,a.holderData.invisibleId=J.vars.invisibleId)}function q(a,b){return null==b?document.createElement(a):document.createElementNS(b,a)}function r(a,b){for(var c in b)a.setAttribute(c,b[c])}function s(a,b,c){var d,e;null==a?(a=q("svg",E),d=q("defs",E),e=q("style",E),r(e,{type:"text/css"}),d.appendChild(e),a.appendChild(d)):e=a.querySelector("style"),a.webkitMatchesSelector&&a.setAttribute("xmlns",E);for(var f=0;f=0;h--){var i=g.createProcessingInstruction("xml-stylesheet",'href="'+f[h]+'" rel="stylesheet"');g.insertBefore(i,g.firstChild)}g.removeChild(g.documentElement),e=d.serializeToString(g)}var j=d.serializeToString(a);return j=j.replace(/\&(\#[0-9]{2,}\;)/g,"&$1"),e+j}}function u(){return b.DOMParser?(new DOMParser).parseFromString("","application/xml"):void 0}function v(a){J.vars.debounceTimer||a.call(this),J.vars.debounceTimer&&b.clearTimeout(J.vars.debounceTimer),J.vars.debounceTimer=b.setTimeout(function(){J.vars.debounceTimer=null,a.call(this)},J.setup.debounce)}function w(){v(function(){l(null)})}var x=c(1),y=c(2),z=c(3),A=c(4),B=z.extend,C=z.getNodeArray,D=z.dimensionCheck,E="http://www.w3.org/2000/svg",F=8,G="2.7.1",H="\nCreated with Holder.js "+G+".\nLearn more at http://holderjs.com\n(c) 2012-2015 Ivan Malopinsky - http://imsky.co\n",I={version:G,addTheme:function(a,b){return null!=a&&null!=b&&(J.settings.themes[a]=b),delete J.vars.cache.themeKeys,this},addImage:function(a,b){var c=document.querySelectorAll(b);if(c.length)for(var d=0,e=c.length;e>d;d++){var f=q("img"),g={};g[J.vars.dataAttr]=a,r(f,g),c[d].appendChild(f)}return this},setResizeUpdate:function(a,b){a.holderData&&(a.holderData.resizeUpdate=!!b,a.holderData.resizeUpdate&&l(a))},run:function(a){a=a||{};var c={},f=B(J.settings,a);J.vars.preempted=!0,J.vars.dataAttr=f.dataAttr||J.vars.dataAttr,c.renderer=f.renderer?f.renderer:J.setup.renderer,-1===J.setup.renderers.join(",").indexOf(c.renderer)&&(c.renderer=J.setup.supportsSVG?"svg":J.setup.supportsCanvas?"canvas":"html");var g=C(f.images),i=C(f.bgnodes),j=C(f.stylenodes),k=C(f.objects);c.stylesheets=[],c.svgXMLStylesheet=!0,c.noFontFallback=f.noFontFallback?f.noFontFallback:!1;for(var l=0;l1){c.nodeValue="";for(var u=0;u=0?b:1)}function f(a){v?e(a):w.push(a)}null==document.readyState&&document.addEventListener&&(document.addEventListener("DOMContentLoaded",function y(){document.removeEventListener("DOMContentLoaded",y,!1),document.readyState="complete"},!1),document.readyState="loading");var g=a.document,h=g.documentElement,i="load",j=!1,k="on"+i,l="complete",m="readyState",n="attachEvent",o="detachEvent",p="addEventListener",q="DOMContentLoaded",r="onreadystatechange",s="removeEventListener",t=p in g,u=j,v=j,w=[];if(g[m]===l)e(b);else if(t)g[p](q,c,j),a[p](i,c,j);else{g[n](r,c),a[n](k,c);try{u=null==a.frameElement&&h}catch(x){}u&&u.doScroll&&!function z(){if(!v){try{u.doScroll("left")}catch(a){return e(z,50)}d(),b()}}()}return f.version="1.4.0",f.isReady=function(){return v},f}a.exports="undefined"!=typeof window&&b(window)},function(a,b,c){var d=c(5),e=function(a){function b(a,b){for(var c in b)a[c]=b[c];return a}var c=1,e=d.defclass({constructor:function(a){c++,this.parent=null,this.children={},this.id=c,this.name="n"+c,null!=a&&(this.name=a),this.x=0,this.y=0,this.z=0,this.width=0,this.height=0},resize:function(a,b){null!=a&&(this.width=a),null!=b&&(this.height=b)},moveTo:function(a,b,c){this.x=null!=a?a:this.x,this.y=null!=b?b:this.y,this.z=null!=c?c:this.z},add:function(a){var b=a.name;if(null!=this.children[b])throw"SceneGraph: child with that name already exists: "+b;this.children[b]=a,a.parent=this}}),f=d(e,function(b){this.constructor=function(){b.constructor.call(this,"root"),this.properties=a}}),g=d(e,function(a){function c(c,d){if(a.constructor.call(this,c),this.properties={fill:"#000"},null!=d)b(this.properties,d);else if(null!=c&&"string"!=typeof c)throw"SceneGraph: invalid node name"}this.Group=d.extend(this,{constructor:c,type:"group"}),this.Rect=d.extend(this,{constructor:c,type:"rect"}),this.Text=d.extend(this,{constructor:function(a){c.call(this),this.properties.text=a},type:"text"})}),h=new f;return this.Shape=g,this.root=h,this};a.exports=e},function(a,b){(function(a){b.extend=function(a,b){var c={};for(var d in a)a.hasOwnProperty(d)&&(c[d]=a[d]);if(null!=b)for(var e in b)b.hasOwnProperty(e)&&(c[e]=b[e]);return c},b.cssProps=function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c+":"+a[c]);return b.join(";")},b.encodeHtmlEntity=function(a){for(var b=[],c=0,d=a.length-1;d>=0;d--)c=a.charCodeAt(d),b.unshift(c>128?["&#",c,";"].join(""):a[d]);return b.join("")},b.getNodeArray=function(b){var c=null;return"string"==typeof b?c=document.querySelectorAll(b):a.NodeList&&b instanceof a.NodeList?c=b:a.Node&&b instanceof a.Node?c=[b]:a.HTMLCollection&&b instanceof a.HTMLCollection?c=b:b instanceof Array?c=b:null===b&&(c=[]),c},b.imageExists=function(a,b){var c=new Image;c.onerror=function(){b.call(this,!1)},c.onload=function(){b.call(this,!0)},c.src=a},b.decodeHtmlEntity=function(a){return a.replace(/&#(\d+);/g,function(a,b){return String.fromCharCode(b)})},b.dimensionCheck=function(a){var b={height:a.clientHeight,width:a.clientWidth};return b.height&&b.width?b:!1},b.truthy=function(a){return"string"==typeof a?"true"===a||"yes"===a||"1"===a||"on"===a||"✓"===a:!!a}}).call(b,function(){return this}())},function(a,b,c){var d=encodeURIComponent,e=decodeURIComponent,f=c(6),g=c(7),h=/(\w+)\[(\d+)\]/,i=/\w+\.\w+/;b.parse=function(a){if("string"!=typeof a)return{};if(a=f(a),""===a)return{};"?"===a.charAt(0)&&(a=a.slice(1));for(var b={},c=a.split("&"),d=0;d",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.2",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b)}(this,document); \ No newline at end of file diff --git a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/jquery.min.js b/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/jquery.min.js deleted file mode 100644 index 0f60b7b..0000000 --- a/application/modules/gitlist/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Template/js/jquery.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; - -return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
    a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/\s*$/g,ra={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:k.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?""!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("