diff --git a/core/authorize.php b/core/authorize.php
index fe374fa..1138c92 100644
--- a/core/authorize.php
+++ b/core/authorize.php
@@ -120,31 +120,15 @@ function authorize_access_allowed(Request $request) {
       '#messages' => $results['messages'],
     );
 
+    $links = array();
     if (is_array($results['tasks'])) {
-      $links = $results['tasks'];
+      $links += $results['tasks'];
     }
     else {
-      // Since this is being called outsite of the primary front controller,
-      // the base_url needs to be set explicitly to ensure that links are
-      // relative to the site root.
-      // @todo Simplify with https://www.drupal.org/node/2548095
-      $default_options = [
-        '#type' => 'link',
-        '#options' => [
-          'absolute' => TRUE,
-          'base_url' => $GLOBALS['base_url'],
-        ],
-      ];
-      $links = [
-        $default_options + [
-          '#url' => Url::fromRoute('system.admin'),
-          '#title' => t('Administration pages'),
-        ],
-        $default_options + [
-          '#url' => Url::fromRoute('<front>'),
-          '#title' => t('Front page'),
-        ],
-      ];
+      $links = array_merge($links, array(
+        \Drupal::l(t('Administration pages'), new Url('system.admin')),
+        \Drupal::l(t('Front page'), new Url('<front>')),
+      ));
     }
 
     $content['next_steps'] = array(
diff --git a/core/composer.json b/core/composer.json
index b1547df..26938e3 100644
--- a/core/composer.json
+++ b/core/composer.json
@@ -18,7 +18,7 @@
     "symfony/validator": "2.7.*",
     "symfony/process": "2.7.*",
     "symfony/yaml": "2.7.*",
-    "twig/twig": "1.20.*",
+    "twig/twig": "1.18.*",
     "doctrine/common": "~2.4.2",
     "doctrine/annotations": "1.2.*",
     "guzzlehttp/guzzle": "dev-master#1879fbe853b0c64d109e369c7aeff09849e62d1e",
diff --git a/core/composer.lock b/core/composer.lock
index c121990..676d0bf 100644
--- a/core/composer.lock
+++ b/core/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "hash": "6d065bd806544df5f446905bc3d6379f",
+    "hash": "3708d8fdb54957e5ce661cda1df88353",
     "packages": [
         {
             "name": "behat/mink",
@@ -796,7 +796,7 @@
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/e4046d42e6abc055c16d47bfbae573ae4c8646d1",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1879fbe853b0c64d109e369c7aeff09849e62d1e",
                 "reference": "1879fbe853b0c64d109e369c7aeff09849e62d1e",
                 "shasum": ""
             },
@@ -3111,16 +3111,16 @@
         },
         {
             "name": "twig/twig",
-            "version": "v1.20.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/twigphp/Twig.git",
-                "reference": "1ea4e5f81c6d005fe84d0b38e1c4f1955eb86844"
+                "reference": "9f70492f44398e276d1b81c1b43adfe6751c7b7f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/twigphp/Twig/zipball/1ea4e5f81c6d005fe84d0b38e1c4f1955eb86844",
-                "reference": "1ea4e5f81c6d005fe84d0b38e1c4f1955eb86844",
+                "url": "https://api.github.com/repos/twigphp/Twig/zipball/9f70492f44398e276d1b81c1b43adfe6751c7b7f",
+                "reference": "9f70492f44398e276d1b81c1b43adfe6751c7b7f",
                 "shasum": ""
             },
             "require": {
@@ -3129,7 +3129,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.20-dev"
+                    "dev-master": "1.18-dev"
                 }
             },
             "autoload": {
@@ -3164,7 +3164,7 @@
             "keywords": [
                 "templating"
             ],
-            "time": "2015-08-12 15:56:39"
+            "time": "2015-04-19 08:30:27"
         },
         {
             "name": "zendframework/zend-diactoros",
diff --git a/core/core.services.yml b/core/core.services.yml
index 9d40627..5ba0116 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -62,11 +62,6 @@ services:
     arguments: ['@request_stack']
     tags:
       - { name: cache.context }
-  cache_context.url.path:
-    class: Drupal\Core\Cache\Context\PathCacheContext
-    arguments: ['@request_stack']
-    tags:
-      - { name: cache.context }
   cache_context.url.query_args:
     class: Drupal\Core\Cache\Context\QueryArgsCacheContext
     arguments: ['@request_stack']
diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc
index 03572a6..a8b4057 100644
--- a/core/includes/bootstrap.inc
+++ b/core/includes/bootstrap.inc
@@ -279,6 +279,70 @@ function drupal_get_path($type, $name) {
 }
 
 /**
+ * Sets an HTTP response header for the current page.
+ *
+ * Note: When sending a Content-Type header, always include a 'charset' type,
+ * too. This is necessary to avoid security bugs (e.g. UTF-7 XSS).
+ *
+ * @param $name
+ *   The HTTP header name, or the special 'Status' header name.
+ * @param $value
+ *   The HTTP header value; if equal to FALSE, the specified header is unset.
+ *   If $name is 'Status', this is expected to be a status code followed by a
+ *   reason phrase, e.g. "404 Not Found".
+ * @param $append
+ *   Whether to append the value to an existing header or to replace it.
+ *
+ * @deprecated in Drupal 8.x-dev, will be removed before Drupal 8.0.
+ *   Use \Symfony\Component\HttpFoundation\Response->headers->set().
+ *   See https://www.drupal.org/node/2181523.
+ */
+function _drupal_add_http_header($name, $value, $append = FALSE) {
+  // The headers as name/value pairs.
+  $headers = &drupal_static('drupal_http_headers', array());
+
+  $name_lower = strtolower($name);
+
+  if ($value === FALSE) {
+    $headers[$name_lower] = FALSE;
+  }
+  elseif (isset($headers[$name_lower]) && $append) {
+    // Multiple headers with identical names may be combined using comma (RFC
+    // 2616, section 4.2).
+    $headers[$name_lower] .= ',' . $value;
+  }
+  else {
+    $headers[$name_lower] = $value;
+  }
+}
+
+/**
+ * Gets the HTTP response headers for the current page.
+ *
+ * @param $name
+ *   An HTTP header name. If omitted, all headers are returned as name/value
+ *   pairs. If an array value is FALSE, the header has been unset.
+ *
+ * @return
+ *   A string containing the header value, or FALSE if the header has been set,
+ *   or NULL if the header has not been set.
+ *
+ * @deprecated in Drupal 8.x-dev, will be removed before Drupal 8.0.
+ *   Use \Symfony\Component\HttpFoundation\Response->headers->get().
+ *   See https://www.drupal.org/node/2181523.
+ */
+function drupal_get_http_header($name = NULL) {
+  $headers = &drupal_static('drupal_http_headers', array());
+  if (isset($name)) {
+    $name = strtolower($name);
+    return isset($headers[$name]) ? $headers[$name] : NULL;
+  }
+  else {
+    return $headers;
+  }
+}
+
+/**
  * Translates a string to the current language or to a given language.
  *
  * The t() function serves two purposes. First, at run-time it translates
diff --git a/core/includes/common.inc b/core/includes/common.inc
index 006c58f..7d33f07 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -643,7 +643,7 @@ function drupal_process_attached(array $elements) {
           call_user_func_array('_drupal_add_html_head_link', $args);
           break;
         case 'http_header':
-          // @todo Remove validation in https://www.drupal.org/node/2477223
+          call_user_func_array('_drupal_add_http_header', $args);
           break;
         default:
           throw new \LogicException(sprintf('You are not allowed to use %s in #attached', $callback));
diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index 009bb33..2595dd0 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -1746,10 +1746,17 @@ function drupal_common_theme() {
     'maintenance_task_list' => array(
       'variables' => array('items' => NULL, 'active' => NULL,  'variant' => NULL),
     ),
+    'authorize_message' => array(
+      'variables' => array('message' => NULL, 'success' => TRUE),
+      'function' => 'theme_authorize_message',
+      'path' => 'core/includes',
+      'file' => 'theme.maintenance.inc',
+    ),
     'authorize_report' => array(
-      'variables' => ['messages' => [], 'attributes' => []],
-      'includes' => ['core/includes/theme.maintenance.inc'],
-      'template' => 'authorize-report',
+      'variables' => array('messages' => array()),
+      'function' => 'theme_authorize_report',
+      'path' => 'core/includes',
+      'file' => 'theme.maintenance.inc',
     ),
     // From pager.inc.
     'pager' => array(
diff --git a/core/includes/theme.maintenance.inc b/core/includes/theme.maintenance.inc
index b98d28a..d23addb 100644
--- a/core/includes/theme.maintenance.inc
+++ b/core/includes/theme.maintenance.inc
@@ -100,37 +100,60 @@ function _drupal_maintenance_theme() {
 }
 
 /**
- * Prepares variables for authorize.php operation report templates.
+ * Returns HTML for a results report of an operation run by authorize.php.
  *
- * This report displays the results of an operation run via authorize.php.
- *
- * Default template: authorize-report.html.twig.
- *
- * @param array $variables
+ * @param $variables
  *   An associative array containing:
  *   - messages: An array of result messages.
+ *
+ * @ingroup themeable
  */
-function template_preprocess_authorize_report(&$variables) {
-  $messages = [];
-  if (!empty($variables['messages'])) {
-    foreach ($variables['messages'] as $heading => $logs) {
-      $items = [];
+function theme_authorize_report($variables) {
+  $messages = $variables['messages'];
+  $output = '';
+  if (!empty($messages)) {
+    $output .= '<div class="authorize-results">';
+    foreach ($messages as $heading => $logs) {
+      $items = array();
       foreach ($logs as $number => $log_message) {
         if ($number === '#abort') {
           continue;
         }
-        $class = 'authorize-results__' . ($log_message['success'] ? 'success' : 'failure');
-        $items[] = [
-          '#wrapper_attributes' => ['class' => [$class]],
-          '#markup' => $log_message['message'],
-        ];
+        $authorize_message = array(
+          '#theme' => 'authorize_message',
+          '#message' => $log_message['message'],
+          '#success' => $log_message['success'],
+        );
+        $items[] = array(
+          '#markup' => drupal_render($authorize_message),
+          '#wrapper_attributes' => array('class' => $log_message['success'] ? 'authorize-results__success' : 'authorize-results__failure'),
+        );
       }
-      $messages[] = [
+      $item_list = array(
         '#theme' => 'item_list',
         '#items' => $items,
         '#title' => $heading,
-      ];
+      );
+      $output .= drupal_render($item_list);
     }
+    $output .= '</div>';
   }
-  $variables['messages'] = $messages;
+  return $output;
+}
+
+/**
+ * Returns HTML for a single log message from the authorize.php batch operation.
+ *
+ * @param $variables
+ *   An associative array containing:
+ *   - message: The log message.
+ *     It's the caller's responsibility to ensure this string contains no
+ *     dangerous HTML such as SCRIPT tags.
+ *   - success: A boolean indicating failure or success.
+ *
+ * @ingroup themeable
+ */
+function theme_authorize_message($variables) {
+  $item = array('#markup' => $variables['message']);
+  return drupal_render($item);
 }
diff --git a/core/lib/Drupal/Component/Utility/SafeStringInterface.php b/core/lib/Drupal/Component/Utility/SafeStringInterface.php
index 136dd37..3729027 100644
--- a/core/lib/Drupal/Component/Utility/SafeStringInterface.php
+++ b/core/lib/Drupal/Component/Utility/SafeStringInterface.php
@@ -10,25 +10,15 @@
 /**
  * Marks an object's __toString() method as returning safe markup.
  *
- * All objects that implement this interface should be marked @internal.
- *
  * This interface should only be used on objects that emit known safe strings
  * from their __toString() method. If there is any risk of the method returning
  * user-entered data that has not been filtered first, it must not be used.
  *
- * If the object is going to be used directly in Twig templates it should
- * implement \Countable so it can be used in if statements.
- *
  * @internal
  *   This interface is marked as internal because it should only be used by
- *   objects used during rendering. This interface should be used by modules if
- *   they interrupt the render pipeline and explicitly deal with SafeString
- *   objects created by the render system. Additionally, if a module reuses the
- *   regular render pipeline internally and passes processed data into it. For
- *   example, Views implements a custom render pipeline in order to render JSON
- *   and to fast render fields.
+ *   objects used during rendering. Currently, there is no use case for this
+ *   interface in contrib or custom code.
  *
- * @see \Drupal\Component\Utility\SafeStringTrait
  * @see \Drupal\Component\Utility\SafeMarkup::set()
  * @see \Drupal\Component\Utility\SafeMarkup::isSafe()
  * @see \Drupal\Core\Template\TwigExtension::escapeFilter()
diff --git a/core/lib/Drupal/Component/Utility/SafeStringTrait.php b/core/lib/Drupal/Component/Utility/SafeStringTrait.php
deleted file mode 100644
index a91e44b..0000000
--- a/core/lib/Drupal/Component/Utility/SafeStringTrait.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Component\Utility\SafeStringTrait.
- */
-
-namespace Drupal\Component\Utility;
-
-/**
- * Implements SafeStringInterface and Countable for rendered objects.
- *
- * @see \Drupal\Component\Utility\SafeStringInterface
- */
-trait SafeStringTrait {
-
-  /**
-   * The safe string.
-   *
-   * @var string
-   */
-  protected $string;
-
-  /**
-   * Creates a SafeString object if necessary.
-   *
-   * If $string is equal to a blank string then it is not necessary to create a
-   * SafeString object. If $string is an object that implements
-   * SafeStringInterface it is returned unchanged.
-   *
-   * @param mixed $string
-   *   The string to mark as safe. This value will be cast to a string.
-   *
-   * @return string|\Drupal\Component\Utility\SafeStringInterface
-   *   A safe string.
-   */
-  public static function create($string) {
-    if ($string instanceof SafeStringInterface) {
-      return $string;
-    }
-    $string = (string) $string;
-    if ($string === '') {
-      return '';
-    }
-    $safe_string = new static();
-    $safe_string->string = $string;
-    return $safe_string;
-  }
-
-  /**
-   * Returns the string version of the SafeString object.
-   *
-   * @return string
-   *   The safe string content.
-   */
-  public function __toString() {
-    return $this->string;
-  }
-
-  /**
-   * Returns the string length.
-   *
-   * @return int
-   *   The length of the string.
-   */
-  public function count() {
-    return Unicode::strlen($this->string);
-  }
-
-}
diff --git a/core/lib/Drupal/Core/Access/AccessResult.php b/core/lib/Drupal/Core/Access/AccessResult.php
index de15945..b364baf 100644
--- a/core/lib/Drupal/Core/Access/AccessResult.php
+++ b/core/lib/Drupal/Core/Access/AccessResult.php
@@ -8,8 +8,6 @@
 
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Cache\CacheableDependencyInterface;
-use Drupal\Core\Cache\RefinableCacheableDependencyInterface;
-use Drupal\Core\Cache\RefinableCacheableDependencyTrait;
 use Drupal\Core\Config\ConfigBase;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Session\AccountInterface;
@@ -27,10 +25,47 @@
  *
  * When using ::orIf() and ::andIf(), cacheability metadata will be merged
  * accordingly as well.
+ *
+ * @todo Use RefinableCacheableDependencyInterface and the corresponding trait in
+ *   https://www.drupal.org/node/2526326.
  */
-abstract class AccessResult implements AccessResultInterface, RefinableCacheableDependencyInterface {
+abstract class AccessResult implements AccessResultInterface, CacheableDependencyInterface {
+
+  /**
+   * The cache context IDs (to vary a cache item ID based on active contexts).
+   *
+   * @see \Drupal\Core\Cache\Context\CacheContextInterface
+   * @see \Drupal\Core\Cache\Context\CacheContextsManager::convertTokensToKeys()
+   *
+   * @var string[]
+   */
+  protected $contexts;
+
+  /**
+   * The cache tags.
+   *
+   * @var array
+   */
+  protected $tags;
+
+  /**
+   * The maximum caching time in seconds.
+   *
+   * @var int
+   */
+  protected $maxAge;
 
-  use RefinableCacheableDependencyTrait;
+  /**
+   * Constructs a new AccessResult object.
+   */
+  public function __construct() {
+    $this->resetCacheContexts()
+      ->resetCacheTags()
+      // Max-age must be non-zero for an access result to be cacheable.
+      // Typically, cache items are invalidated via associated cache tags, not
+      // via a maximum age.
+      ->setCacheMaxAge(Cache::PERMANENT);
+  }
 
   /**
    * Creates an AccessResultInterface object with isNeutral() === TRUE.
@@ -180,21 +215,35 @@ public function isNeutral() {
    * {@inheritdoc}
    */
   public function getCacheContexts() {
-    return $this->cacheContexts;
+    sort($this->contexts);
+    return $this->contexts;
   }
 
   /**
    * {@inheritdoc}
    */
   public function getCacheTags() {
-    return $this->cacheTags;
+    return $this->tags;
   }
 
   /**
    * {@inheritdoc}
    */
   public function getCacheMaxAge() {
-    return $this->cacheMaxAge;
+    return $this->maxAge;
+  }
+
+  /**
+   * Adds cache contexts associated with the access result.
+   *
+   * @param string[] $contexts
+   *   An array of cache context IDs, used to generate a cache ID.
+   *
+   * @return $this
+   */
+  public function addCacheContexts(array $contexts) {
+    $this->contexts = array_unique(array_merge($this->contexts, $contexts));
+    return $this;
   }
 
   /**
@@ -203,7 +252,20 @@ public function getCacheMaxAge() {
    * @return $this
    */
   public function resetCacheContexts() {
-    $this->cacheContexts = [];
+    $this->contexts = array();
+    return $this;
+  }
+
+  /**
+   * Adds cache tags associated with the access result.
+   *
+   * @param array $tags
+   *   An array of cache tags.
+   *
+   * @return $this
+   */
+  public function addCacheTags(array $tags) {
+    $this->tags = Cache::mergeTags($this->tags, $tags);
     return $this;
   }
 
@@ -213,7 +275,7 @@ public function resetCacheContexts() {
    * @return $this
    */
   public function resetCacheTags() {
-    $this->cacheTags = [];
+    $this->tags = array();
     return $this;
   }
 
@@ -226,7 +288,7 @@ public function resetCacheTags() {
    * @return $this
    */
   public function setCacheMaxAge($max_age) {
-    $this->cacheMaxAge = $max_age;
+    $this->maxAge = $max_age;
     return $this;
   }
 
@@ -281,6 +343,28 @@ public function cacheUntilConfigurationChanges(ConfigBase $configuration) {
   }
 
   /**
+   * Adds a dependency on an object: merges its cacheability metadata.
+   *
+   * @param \Drupal\Core\Cache\CacheableDependencyInterface|object $other_object
+   *   The dependency. If the object implements CacheableDependencyInterface,
+   *   then its cacheability metadata will be used. Otherwise, the passed in
+   *   object must be assumed to be uncacheable, so max-age 0 is set.
+   *
+   * @return $this
+   */
+  public function addCacheableDependency($other_object) {
+    if ($other_object instanceof CacheableDependencyInterface) {
+      $this->contexts = Cache::mergeContexts($this->contexts, $other_object->getCacheContexts());
+      $this->tags = Cache::mergeTags($this->tags, $other_object->getCacheTags());
+      $this->maxAge = Cache::mergeMaxAges($this->maxAge, $other_object->getCacheMaxAge());
+    }
+    else {
+      $this->maxAge = 0;
+    }
+    return $this;
+  }
+
+  /**
    * {@inheritdoc}
    */
   public function orIf(AccessResultInterface $other) {
@@ -368,19 +452,12 @@ public function andIf(AccessResultInterface $other) {
   /**
    * Inherits the cacheability of the other access result, if any.
    *
-   * inheritCacheability() differs from addCacheableDependency() in how it
-   * handles max-age, because it is designed to inherit the cacheability of the
-   * second operand in the andIf() and orIf() operations. There, the situation
-   * "allowed, max-age=0 OR allowed, max-age=1000" needs to yield max-age 1000
-   * as the end result.
-   *
    * @param \Drupal\Core\Access\AccessResultInterface $other
    *   The other access result, whose cacheability (if any) to inherit.
    *
    * @return $this
    */
   public function inheritCacheability(AccessResultInterface $other) {
-    $this->addCacheableDependency($other);
     if ($other instanceof CacheableDependencyInterface) {
       if ($this->getCacheMaxAge() !== 0 && $other->getCacheMaxAge() !== 0) {
         $this->setCacheMaxAge(Cache::mergeMaxAges($this->getCacheMaxAge(), $other->getCacheMaxAge()));
@@ -388,6 +465,14 @@ public function inheritCacheability(AccessResultInterface $other) {
       else {
         $this->setCacheMaxAge($other->getCacheMaxAge());
       }
+      $this->addCacheContexts($other->getCacheContexts());
+      $this->addCacheTags($other->getCacheTags());
+    }
+    // If any of the access results don't provide cacheability metadata, then
+    // we cannot cache the combined access result, for we may not make
+    // assumptions.
+    else {
+      $this->setCacheMaxAge(0);
     }
     return $this;
   }
diff --git a/core/lib/Drupal/Core/Breadcrumb/Breadcrumb.php b/core/lib/Drupal/Core/Breadcrumb/Breadcrumb.php
deleted file mode 100644
index 1418807..0000000
--- a/core/lib/Drupal/Core/Breadcrumb/Breadcrumb.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Core\Breadcrumb\Breadcrumb.
- */
-
-namespace Drupal\Core\Breadcrumb;
-
-use Drupal\Core\Cache\CacheableMetadata;
-use Drupal\Core\Link;
-
-/**
- * Used to return generated breadcrumbs with associated cacheability metadata.
- *
- * @todo implement RenderableInterface once https://www.drupal.org/node/2529560 lands.
- */
-class Breadcrumb extends CacheableMetadata {
-
-  /**
-   * An ordered list of links for the breadcrumb.
-   *
-   * @var \Drupal\Core\Link[]
-   */
-  protected $links = [];
-
-  /**
-   * Gets the breadcrumb links.
-   *
-   * @return \Drupal\Core\Link[]
-   */
-  public function getLinks() {
-    return $this->links;
-  }
-
-  /**
-   * Sets the breadcrumb links.
-   *
-   * @param \Drupal\Core\Link[] $links
-   *   The breadcrumb links.
-   *
-   * @return $this
-   *
-   * @throws \LogicException
-   *   Thrown when setting breadcrumb links after they've already been set.
-   */
-  public function setLinks(array $links) {
-    if (!empty($this->links)) {
-      throw new \LogicException('Once breadcrumb links are set, only additional breadcrumb links can be added.');
-    }
-
-    $this->links = $links;
-
-    return $this;
-  }
-
-  /**
-   * Appends a link to the end of the ordered list of breadcrumb links.
-   *
-   * @param \Drupal\Core\Link $link
-   *   The link appended to the breadcrumb.
-   *
-   * @return $this
-   */
-  public function addLink(Link $link) {
-    $this->links[] = $link;
-
-    return $this;
-  }
-
-}
diff --git a/core/lib/Drupal/Core/Breadcrumb/BreadcrumbBuilderInterface.php b/core/lib/Drupal/Core/Breadcrumb/BreadcrumbBuilderInterface.php
index e566f54..ebdfa55 100644
--- a/core/lib/Drupal/Core/Breadcrumb/BreadcrumbBuilderInterface.php
+++ b/core/lib/Drupal/Core/Breadcrumb/BreadcrumbBuilderInterface.php
@@ -32,8 +32,9 @@ public function applies(RouteMatchInterface $route_match);
    * @param \Drupal\Core\Routing\RouteMatchInterface $route_match
    *   The current route match.
    *
-   * @return \Drupal\Core\Breadcrumb\Breadcrumb
-   *   A breadcrumb.
+   * @return \Drupal\Core\Link[]
+   *   An array of links for the breadcrumb. Returning an empty array will
+   *   suppress all breadcrumbs.
    */
   public function build(RouteMatchInterface $route_match);
 
diff --git a/core/lib/Drupal/Core/Breadcrumb/BreadcrumbManager.php b/core/lib/Drupal/Core/Breadcrumb/BreadcrumbManager.php
index 3742363..0015bf3 100644
--- a/core/lib/Drupal/Core/Breadcrumb/BreadcrumbManager.php
+++ b/core/lib/Drupal/Core/Breadcrumb/BreadcrumbManager.php
@@ -75,7 +75,7 @@ public function applies(RouteMatchInterface $route_match) {
    * {@inheritdoc}
    */
   public function build(RouteMatchInterface $route_match) {
-    $breadcrumb = new Breadcrumb();
+    $breadcrumb = array();
     $context = array('builder' => NULL);
     // Call the build method of registered breadcrumb builders,
     // until one of them returns an array.
@@ -85,9 +85,11 @@ public function build(RouteMatchInterface $route_match) {
         continue;
       }
 
-      $breadcrumb = $builder->build($route_match);
+      $build = $builder->build($route_match);
 
-      if ($breadcrumb instanceof Breadcrumb) {
+      if (is_array($build)) {
+        // The builder returned an array of breadcrumb links.
+        $breadcrumb = $build;
         $context['builder'] = $builder;
         break;
       }
@@ -97,7 +99,7 @@ public function build(RouteMatchInterface $route_match) {
     }
     // Allow modules to alter the breadcrumb.
     $this->moduleHandler->alter('system_breadcrumb', $breadcrumb, $route_match, $context);
-
+    // Fall back to an empty breadcrumb.
     return $breadcrumb;
   }
 
diff --git a/core/lib/Drupal/Core/Cache/CacheableMetadata.php b/core/lib/Drupal/Core/Cache/CacheableMetadata.php
index 33429bf..33d5afb 100644
--- a/core/lib/Drupal/Core/Cache/CacheableMetadata.php
+++ b/core/lib/Drupal/Core/Cache/CacheableMetadata.php
@@ -11,16 +11,50 @@
  *
  * @ingroup cache
  *
+ * @todo Use RefinableCacheableDependencyInterface and the corresponding trait in
+ *   https://www.drupal.org/node/2526326.
  */
-class CacheableMetadata implements RefinableCacheableDependencyInterface {
+class CacheableMetadata implements CacheableDependencyInterface {
 
-  use RefinableCacheableDependencyTrait;
+  /**
+   * Cache contexts.
+   *
+   * @var string[]
+   */
+  protected $contexts = [];
+
+  /**
+   * Cache tags.
+   *
+   * @var string[]
+   */
+  protected $tags = [];
+
+  /**
+   * Cache max-age.
+   *
+   * @var int
+   */
+  protected $maxAge = Cache::PERMANENT;
 
   /**
    * {@inheritdoc}
    */
   public function getCacheTags() {
-    return $this->cacheTags;
+    return $this->tags;
+  }
+
+  /**
+   * Adds cache tags.
+   *
+   * @param string[] $cache_tags
+   *   The cache tags to be added.
+   *
+   * @return $this
+   */
+  public function addCacheTags(array $cache_tags) {
+    $this->tags = Cache::mergeTags($this->tags, $cache_tags);
+    return $this;
   }
 
   /**
@@ -32,7 +66,7 @@ public function getCacheTags() {
    * @return $this
    */
   public function setCacheTags(array $cache_tags) {
-    $this->cacheTags = $cache_tags;
+    $this->tags = $cache_tags;
     return $this;
   }
 
@@ -40,7 +74,20 @@ public function setCacheTags(array $cache_tags) {
    * {@inheritdoc}
    */
   public function getCacheContexts() {
-    return $this->cacheContexts;
+    return $this->contexts;
+  }
+
+  /**
+   * Adds cache contexts.
+   *
+   * @param string[] $cache_contexts
+   *   The cache contexts to be added.
+   *
+   * @return $this
+   */
+  public function addCacheContexts(array $cache_contexts) {
+    $this->contexts = Cache::mergeContexts($this->contexts, $cache_contexts);
+    return $this;
   }
 
   /**
@@ -52,7 +99,7 @@ public function getCacheContexts() {
    * @return $this
    */
   public function setCacheContexts(array $cache_contexts) {
-    $this->cacheContexts = $cache_contexts;
+    $this->contexts = $cache_contexts;
     return $this;
   }
 
@@ -60,7 +107,7 @@ public function setCacheContexts(array $cache_contexts) {
    * {@inheritdoc}
    */
   public function getCacheMaxAge() {
-    return $this->cacheMaxAge;
+    return $this->maxAge;
   }
 
   /**
@@ -81,7 +128,36 @@ public function setCacheMaxAge($max_age) {
       throw new \InvalidArgumentException('$max_age must be an integer');
     }
 
-    $this->cacheMaxAge = $max_age;
+    $this->maxAge = $max_age;
+    return $this;
+  }
+
+  /**
+   * Adds a dependency on an object: merges its cacheability metadata.
+   *
+   * @param \Drupal\Core\Cache\CacheableDependencyInterface|mixed $other_object
+   *   The dependency. If the object implements CacheableDependencyInterface,
+   *   then its cacheability metadata will be used. Otherwise, the passed in
+   *   object must be assumed to be uncacheable, so max-age 0 is set.
+   *
+   * @return $this
+   */
+  public function addCacheableDependency($other_object) {
+    if ($other_object instanceof CacheableDependencyInterface) {
+      $this->addCacheTags($other_object->getCacheTags());
+      $this->addCacheContexts($other_object->getCacheContexts());
+      if ($this->maxAge === Cache::PERMANENT) {
+        $this->maxAge = $other_object->getCacheMaxAge();
+      }
+      elseif (($max_age = $other_object->getCacheMaxAge()) && $max_age !== Cache::PERMANENT) {
+        $this->maxAge = Cache::mergeMaxAges($this->maxAge, $max_age);
+      }
+    }
+    else {
+      // Not a cacheable dependency, this can not be cached.
+      $this->maxAge = 0;
+    }
+
     return $this;
   }
 
@@ -99,34 +175,34 @@ public function merge(CacheableMetadata $other) {
 
     // This is called many times per request, so avoid merging unless absolutely
     // necessary.
-    if (empty($this->cacheContexts)) {
-      $result->cacheContexts = $other->cacheContexts;
+    if (empty($this->contexts)) {
+      $result->contexts = $other->contexts;
     }
-    elseif (empty($other->cacheContexts)) {
-      $result->cacheContexts = $this->cacheContexts;
+    elseif (empty($other->contexts)) {
+      $result->contexts = $this->contexts;
     }
     else {
-      $result->cacheContexts = Cache::mergeContexts($this->cacheContexts, $other->cacheContexts);
+      $result->contexts = Cache::mergeContexts($this->contexts, $other->contexts);
     }
 
-    if (empty($this->cacheTags)) {
-      $result->cacheTags = $other->cacheTags;
+    if (empty($this->tags)) {
+      $result->tags = $other->tags;
     }
-    elseif (empty($other->cacheTags)) {
-      $result->cacheTags = $this->cacheTags;
+    elseif (empty($other->tags)) {
+      $result->tags = $this->tags;
     }
     else {
-      $result->cacheTags = Cache::mergeTags($this->cacheTags, $other->cacheTags);
+      $result->tags = Cache::mergeTags($this->tags, $other->tags);
     }
 
-    if ($this->cacheMaxAge === Cache::PERMANENT) {
-      $result->cacheMaxAge = $other->cacheMaxAge;
+    if ($this->maxAge === Cache::PERMANENT) {
+      $result->maxAge = $other->maxAge;
     }
-    elseif ($other->cacheMaxAge === Cache::PERMANENT) {
-      $result->cacheMaxAge = $this->cacheMaxAge;
+    elseif ($other->maxAge === Cache::PERMANENT) {
+      $result->maxAge = $this->maxAge;
     }
     else {
-      $result->cacheMaxAge = Cache::mergeMaxAges($this->cacheMaxAge, $other->cacheMaxAge);
+      $result->maxAge = Cache::mergeMaxAges($this->maxAge, $other->maxAge);
     }
     return $result;
   }
@@ -138,9 +214,9 @@ public function merge(CacheableMetadata $other) {
    *   A render array.
    */
   public function applyTo(array &$build) {
-    $build['#cache']['contexts'] = $this->cacheContexts;
-    $build['#cache']['tags'] = $this->cacheTags;
-    $build['#cache']['max-age'] = $this->cacheMaxAge;
+    $build['#cache']['contexts'] = $this->contexts;
+    $build['#cache']['tags'] = $this->tags;
+    $build['#cache']['max-age'] = $this->maxAge;
   }
 
   /**
@@ -153,9 +229,9 @@ public function applyTo(array &$build) {
    */
   public static function createFromRenderArray(array $build) {
     $meta = new static();
-    $meta->cacheContexts = (isset($build['#cache']['contexts'])) ? $build['#cache']['contexts'] : [];
-    $meta->cacheTags = (isset($build['#cache']['tags'])) ? $build['#cache']['tags'] : [];
-    $meta->cacheMaxAge = (isset($build['#cache']['max-age'])) ? $build['#cache']['max-age'] : Cache::PERMANENT;
+    $meta->contexts = (isset($build['#cache']['contexts'])) ? $build['#cache']['contexts'] : [];
+    $meta->tags = (isset($build['#cache']['tags'])) ? $build['#cache']['tags'] : [];
+    $meta->maxAge = (isset($build['#cache']['max-age'])) ? $build['#cache']['max-age'] : Cache::PERMANENT;
     return $meta;
   }
 
@@ -173,16 +249,16 @@ public static function createFromRenderArray(array $build) {
   public static function createFromObject($object) {
     if ($object instanceof CacheableDependencyInterface) {
       $meta = new static();
-      $meta->cacheContexts = $object->getCacheContexts();
-      $meta->cacheTags = $object->getCacheTags();
-      $meta->cacheMaxAge = $object->getCacheMaxAge();
+      $meta->contexts = $object->getCacheContexts();
+      $meta->tags = $object->getCacheTags();
+      $meta->maxAge = $object->getCacheMaxAge();
       return $meta;
     }
 
     // Objects that don't implement CacheableDependencyInterface must be assumed
     // to be uncacheable, so set max-age 0.
     $meta = new static();
-    $meta->cacheMaxAge = 0;
+    $meta->maxAge = 0;
     return $meta;
   }
 
diff --git a/core/lib/Drupal/Core/Cache/Context/PathCacheContext.php b/core/lib/Drupal/Core/Cache/Context/PathCacheContext.php
deleted file mode 100644
index 64a221a..0000000
--- a/core/lib/Drupal/Core/Cache/Context/PathCacheContext.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Core\Cache\Context\PathCacheContext.
- */
-
-namespace Drupal\Core\Cache\Context;
-
-use Drupal\Core\Cache\CacheableMetadata;
-
-/**
- * Defines the PathCacheContext service, for "per URL path" caching.
- *
- * Cache context ID: 'url.path'.
- *
- * (This allows for caching relative URLs.)
- *
- * @see \Symfony\Component\HttpFoundation\Request::getBasePath()
- * @see \Symfony\Component\HttpFoundation\Request::getPathInfo()
- */
-class PathCacheContext extends RequestStackCacheContextBase implements CacheContextInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function getLabel() {
-    return t('Path');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getContext() {
-    $request = $this->requestStack->getCurrentRequest();
-    return $request->getBasePath() . $request->getPathInfo();
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getCacheableMetadata() {
-    return new CacheableMetadata();
-  }
-
-}
diff --git a/core/lib/Drupal/Core/Cache/DatabaseBackend.php b/core/lib/Drupal/Core/Cache/DatabaseBackend.php
index 06c5dc2..49e830b 100644
--- a/core/lib/Drupal/Core/Cache/DatabaseBackend.php
+++ b/core/lib/Drupal/Core/Cache/DatabaseBackend.php
@@ -147,26 +147,17 @@ protected function prepareItem($cache, $allow_invalid) {
   }
 
   /**
-   * {@inheritdoc}
+   * Implements Drupal\Core\Cache\CacheBackendInterface::set().
    */
   public function set($cid, $data, $expire = Cache::PERMANENT, array $tags = array()) {
-    $this->setMultiple([
-      $cid => [
-        'data' => $data,
-        'expire' => $expire,
-        'tags' => $tags,
-      ],
-    ]);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function setMultiple(array $items) {
+    Cache::validateTags($tags);
+    $tags = array_unique($tags);
+    // Sort the cache tags so that they are stored consistently in the database.
+    sort($tags);
     $try_again = FALSE;
     try {
       // The bin might not yet exist.
-      $this->doSetMultiple($items);
+      $this->doSet($cid, $data, $expire, $tags);
     }
     catch (\Exception $e) {
       // If there was an exception, try to create the bins.
@@ -178,19 +169,39 @@ public function setMultiple(array $items) {
     }
     // Now that the bin has been created, try again if necessary.
     if ($try_again) {
-      $this->doSetMultiple($items);
+      $this->doSet($cid, $data, $expire, $tags);
     }
   }
 
   /**
-   * Stores multiple items in the persistent cache.
-   *
-   * @param array $items
-   *   An array of cache items, keyed by cid.
-   *
-   * @see \Drupal\Core\Cache\CacheBackendInterface::setMultiple()
+   * Actually set the cache.
    */
-  protected function doSetMultiple(array $items) {
+  protected function doSet($cid, $data, $expire, $tags) {
+    $fields = array(
+      'created' => round(microtime(TRUE), 3),
+      'expire' => $expire,
+      'tags' => implode(' ', $tags),
+      'checksum' => $this->checksumProvider->getCurrentChecksum($tags),
+    );
+    if (!is_string($data)) {
+      $fields['data'] = serialize($data);
+      $fields['serialized'] = 1;
+    }
+    else {
+      $fields['data'] = $data;
+      $fields['serialized'] = 0;
+    }
+
+    $this->connection->merge($this->bin)
+      ->key('cid', $this->normalizeCid($cid))
+      ->fields($fields)
+      ->execute();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setMultiple(array $items) {
     $values = array();
 
     foreach ($items as $cid => $item) {
@@ -205,7 +216,7 @@ protected function doSetMultiple(array $items) {
       sort($item['tags']);
 
       $fields = array(
-        'cid' => $this->normalizeCid($cid),
+        'cid' => $cid,
         'expire' => $item['expire'],
         'created' => round(microtime(TRUE), 3),
         'tags' => implode(' ', $item['tags']),
@@ -223,20 +234,34 @@ protected function doSetMultiple(array $items) {
       $values[] = $fields;
     }
 
-    // Use an upsert query which is atomic and optimized for multiple-row
-    // merges.
-    $query = $this->connection
-      ->upsert($this->bin)
-      ->key('cid')
-      ->fields(array('cid', 'expire', 'created', 'tags', 'checksum', 'data', 'serialized'));
-    foreach ($values as $fields) {
-      // Only pass the values since the order of $fields matches the order of
-      // the insert fields. This is a performance optimization to avoid
-      // unnecessary loops within the method.
-      $query->values(array_values($fields));
-    }
+    // Use a transaction so that the database can write the changes in a single
+    // commit. The transaction is started after calculating the tag checksums
+    // since that can create a table and this causes an exception when using
+    // PostgreSQL.
+    $transaction = $this->connection->startTransaction();
 
-    $query->execute();
+    try {
+      // Delete all items first so we can do one insert. Rather than multiple
+      // merge queries.
+      $this->deleteMultiple(array_keys($items));
+
+      $query = $this->connection
+        ->insert($this->bin)
+        ->fields(array('cid', 'expire', 'created', 'tags', 'checksum', 'data', 'serialized'));
+      foreach ($values as $fields) {
+        // Only pass the values since the order of $fields matches the order of
+        // the insert fields. This is a performance optimization to avoid
+        // unnecessary loops within the method.
+        $query->values(array_values($fields));
+      }
+
+      $query->execute();
+    }
+    catch (\Exception $e) {
+      $transaction->rollback();
+      // @todo Log something here or just re throw?
+      throw $e;
+    }
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Cache/RefinableCacheableDependencyTrait.php b/core/lib/Drupal/Core/Cache/RefinableCacheableDependencyTrait.php
index b94d7f3..63b1d3d 100644
--- a/core/lib/Drupal/Core/Cache/RefinableCacheableDependencyTrait.php
+++ b/core/lib/Drupal/Core/Cache/RefinableCacheableDependencyTrait.php
@@ -44,7 +44,7 @@ public function addCacheableDependency($other_object) {
     }
     else {
       // Not a cacheable dependency, this can not be cached.
-      $this->cacheMaxAge = 0;
+      $this->maxAge = 0;
     }
     return $this;
   }
@@ -53,9 +53,7 @@ public function addCacheableDependency($other_object) {
    * {@inheritdoc}
    */
   public function addCacheContexts(array $cache_contexts) {
-    if ($cache_contexts) {
-      $this->cacheContexts = Cache::mergeContexts($this->cacheContexts, $cache_contexts);
-    }
+    $this->cacheContexts = Cache::mergeContexts($this->cacheContexts, $cache_contexts);
     return $this;
   }
 
@@ -63,9 +61,7 @@ public function addCacheContexts(array $cache_contexts) {
    * {@inheritdoc}
    */
   public function addCacheTags(array $cache_tags) {
-    if ($cache_tags) {
-      $this->cacheTags = Cache::mergeTags($this->cacheTags, $cache_tags);
-    }
+    $this->cacheTags = Cache::mergeTags($this->cacheTags, $cache_tags);
     return $this;
   }
 
diff --git a/core/lib/Drupal/Core/Database/Connection.php b/core/lib/Drupal/Core/Database/Connection.php
index 5c32665..61e53dd 100644
--- a/core/lib/Drupal/Core/Database/Connection.php
+++ b/core/lib/Drupal/Core/Database/Connection.php
@@ -1234,13 +1234,6 @@ public function version() {
   }
 
   /**
-   * Returns the version of the database client.
-   */
-  public function clientVersion() {
-    return $this->connection->getAttribute(\PDO::ATTR_CLIENT_VERSION);
-  }
-
-  /**
    * Determines if this driver supports transactions.
    *
    * @return bool
diff --git a/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php b/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php
index c48c275..4bc3c29 100644
--- a/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php
+++ b/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php
@@ -29,11 +29,6 @@ class Connection extends DatabaseConnection {
   const DATABASE_NOT_FOUND = 1049;
 
   /**
-   * Error code for "Can't initialize character set" error.
-   */
-  const UNSUPPORTED_CHARSET = 2019;
-
-  /**
    * Flag to indicate if the cleanup function in __destruct() should run.
    *
    * @var bool
@@ -87,13 +82,6 @@ public function query($query, array $args = array(), $options = array()) {
    * {@inheritdoc}
    */
   public static function open(array &$connection_options = array()) {
-    if (isset($connection_options['_dsn_utf8_fallback']) && $connection_options['_dsn_utf8_fallback'] === TRUE) {
-      // Only used during the installer version check, as a fallback from utf8mb4.
-      $charset = 'utf8';
-    }
-    else {
-      $charset = 'utf8mb4';
-    }
     // The DSN should use either a socket or a host/port.
     if (isset($connection_options['unix_socket'])) {
       $dsn = 'mysql:unix_socket=' . $connection_options['unix_socket'];
@@ -105,7 +93,7 @@ public static function open(array &$connection_options = array()) {
     // Character set is added to dsn to ensure PDO uses the proper character
     // set when escaping. This has security implications. See
     // https://www.drupal.org/node/1201452 for further discussion.
-    $dsn .= ';charset=' . $charset;
+    $dsn .= ';charset=utf8mb4';
     if (!empty($connection_options['database'])) {
       $dsn .= ';dbname=' . $connection_options['database'];
     }
@@ -136,10 +124,10 @@ public static function open(array &$connection_options = array()) {
     // certain one has been set; otherwise, MySQL defaults to
     // 'utf8mb4_general_ci' for utf8mb4.
     if (!empty($connection_options['collation'])) {
-      $pdo->exec('SET NAMES ' . $charset . ' COLLATE ' . $connection_options['collation']);
+      $pdo->exec('SET NAMES utf8mb4 COLLATE ' . $connection_options['collation']);
     }
     else {
-      $pdo->exec('SET NAMES ' . $charset);
+      $pdo->exec('SET NAMES utf8mb4');
     }
 
     // Set MySQL init_commands if not already defined.  Default Drupal's MySQL
diff --git a/core/lib/Drupal/Core/Database/Driver/mysql/Install/Tasks.php b/core/lib/Drupal/Core/Database/Driver/mysql/Install/Tasks.php
index 754989f..19fbe5f 100644
--- a/core/lib/Drupal/Core/Database/Driver/mysql/Install/Tasks.php
+++ b/core/lib/Drupal/Core/Database/Driver/mysql/Install/Tasks.php
@@ -16,17 +16,6 @@
  * Specifies installation tasks for MySQL and equivalent databases.
  */
 class Tasks extends InstallTasks {
-
-  /**
-   * Minimum required MySQLnd version.
-   */
-  const MYSQLND_MINIMUM_VERSION = '5.0.9';
-
-  /**
-   * Minimum required libmysqlclient version.
-   */
-  const LIBMYSQLCLIENT_MINIMUM_VERSION = '5.5.3';
-
   /**
    * The PDO driver name for MySQL and equivalent databases.
    *
@@ -39,6 +28,13 @@ class Tasks extends InstallTasks {
    */
   public function __construct() {
     $this->tasks[] = array(
+      'arguments' => array(
+        'SET NAMES utf8mb4',
+        'The %name database server supports utf8mb4 character encoding.',
+        'The %name database server must support utf8mb4 character encoding to work with Drupal. Make sure to use a database server that supports utf8mb4 character encoding, such as MySQL/MariaDB/Percona versions 5.5.3 and up.',
+      ),
+    );
+    $this->tasks[] = array(
       'arguments' => array(),
       'function' => 'ensureInnoDbAvailable',
     );
@@ -66,34 +62,7 @@ protected function connect() {
       // This doesn't actually test the connection.
       db_set_active();
       // Now actually do a check.
-      try {
-        Database::getConnection();
-      }
-      catch (\Exception $e) {
-        // Detect utf8mb4 incompability.
-        if ($e->getCode() == Connection::UNSUPPORTED_CHARSET) {
-          $this->fail(t('Your MySQL server and PHP MySQL driver must support utf8mb4 character encoding. Make sure to use a database system that supports this (such as MySQL/MariaDB/Percona 5.5.3 and up), and that the utf8mb4 character set is compiled in. See the <a href="@documentation" target="_blank">MySQL documentation</a> for more information.', array('@documentation' => 'https://dev.mysql.com/doc/refman/5.0/en/cannot-initialize-character-set.html')));
-          $info = Database::getConnectionInfo();
-          $info_copy = $info;
-          // Set a flag to fall back to utf8. Note: this flag should only be
-          // used here and is for internal use only.
-          $info_copy['default']['_dsn_utf8_fallback'] = TRUE;
-          // In order to change the Database::$databaseInfo array, we need to
-          // remove the active connection, then re-add it with the new info.
-          Database::removeConnection('default');
-          Database::addConnectionInfo('default', 'default', $info_copy['default']);
-          // Connect with the new database info, using the utf8 character set so
-          // that we can run the checkEngineVersion test.
-          Database::getConnection();
-          // Revert to the old settings.
-          Database::removeConnection('default');
-          Database::addConnectionInfo('default', 'default', $info['default']);
-        }
-        else {
-          // Rethrow the exception.
-          throw $e;
-        }
-      }
+      Database::getConnection();
       $this->pass('Drupal can CONNECT to the database ok.');
     }
     catch (\Exception $e) {
@@ -152,27 +121,4 @@ function ensureInnoDbAvailable() {
     }
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  protected function checkEngineVersion() {
-    parent::checkEngineVersion();
-
-    // Ensure that the MySQL driver supports utf8mb4 encoding.
-    $version = Database::getConnection()->clientVersion();
-    if (FALSE !== strpos($version, 'mysqlnd')) {
-      // The mysqlnd driver supports utf8mb4 starting at version 5.0.9.
-      $version = preg_replace('/^\D+([\d.]+).*/', '$1', $version);
-      if (version_compare($version, self::MYSQLND_MINIMUM_VERSION, '<')) {
-        $this->fail(t("The MySQLnd driver version %version is less than the minimum required version. Upgrade to MySQLnd version %mysqlnd_minimum_version or up, or alternatively switch mysql drivers to libmysqlclient version %libmysqlclient_minimum_version or up.", array('%version' => Database::getConnection()->version(), '%mysqlnd_minimum_version' => self::MYSQLND_MINIMUM_VERSION, '%libmysqlclient_minimum_version' => self::LIBMYSQLCLIENT_MINIMUM_VERSION)));
-      }
-    }
-    else {
-      // The libmysqlclient driver supports utf8mb4 starting at version 5.5.3.
-      if (version_compare($version, self::LIBMYSQLCLIENT_MINIMUM_VERSION, '<')) {
-        $this->fail(t("The libmysqlclient driver version %version is less than the minimum required version. Upgrade to libmysqlclient version %libmysqlclient_minimum_version or up, or alternatively switch mysql drivers to MySQLnd version %mysqlnd_minimum_version or up.", array('%version' => Database::getConnection()->version(), '%libmysqlclient_minimum_version' => self::LIBMYSQLCLIENT_MINIMUM_VERSION, '%mysqlnd_minimum_version' => self::MYSQLND_MINIMUM_VERSION)));
-      }
-    }
-  }
-
 }
diff --git a/core/lib/Drupal/Core/Database/Install/Tasks.php b/core/lib/Drupal/Core/Database/Install/Tasks.php
index fed2c5e..ae94242 100644
--- a/core/lib/Drupal/Core/Database/Install/Tasks.php
+++ b/core/lib/Drupal/Core/Database/Install/Tasks.php
@@ -192,9 +192,8 @@ protected function runTestQuery($query, $pass, $fail, $fatal = FALSE) {
    * Check the engine version.
    */
   protected function checkEngineVersion() {
-    // Ensure that the database server has the right version.
     if ($this->minimumVersion() && version_compare(Database::getConnection()->version(), $this->minimumVersion(), '<')) {
-      $this->fail(t("The database server version %version is less than the minimum required version %minimum_version.", array('%version' => Database::getConnection()->version(), '%minimum_version' => $this->minimumVersion())));
+      $this->fail(t("The database version %version is less than the minimum required version %minimum_version.", array('%version' => Database::getConnection()->version(), '%minimum_version' => $this->minimumVersion())));
     }
   }
 
diff --git a/core/lib/Drupal/Core/Entity/EntityDisplayBase.php b/core/lib/Drupal/Core/Entity/EntityDisplayBase.php
index 79b9292..3a59e01 100644
--- a/core/lib/Drupal/Core/Entity/EntityDisplayBase.php
+++ b/core/lib/Drupal/Core/Entity/EntityDisplayBase.php
@@ -256,9 +256,19 @@ public function calculateDependencies() {
     parent::calculateDependencies();
     $target_entity_type = $this->entityManager()->getDefinition($this->targetEntityType);
 
-    // Create dependency on the bundle.
-    $bundle_config_dependency = $target_entity_type->getBundleConfigDependency($this->bundle);
-    $this->addDependency($bundle_config_dependency['type'], $bundle_config_dependency['name']);
+    $bundle_entity_type_id = $target_entity_type->getBundleEntityType();
+    if ($bundle_entity_type_id != 'bundle') {
+      // If the target entity type uses entities to manage its bundles then
+      // depend on the bundle entity.
+      if (!$bundle_entity = $this->entityManager()->getStorage($bundle_entity_type_id)->load($this->bundle)) {
+        throw new \LogicException("Missing bundle entity, entity type $bundle_entity_type_id, entity id {$this->bundle}.");
+      }
+      $this->addDependency('config', $bundle_entity->getConfigDependencyName());
+    }
+    else {
+      // Depend on the provider of the entity type.
+      $this->addDependency('module', $target_entity_type->getProvider());
+    }
 
     // If field.module is enabled, add dependencies on 'field_config' entities
     // for both displayed and hidden fields. We intentionally leave out base
diff --git a/core/lib/Drupal/Core/Entity/EntityType.php b/core/lib/Drupal/Core/Entity/EntityType.php
index 3a32d4a..31c7923 100644
--- a/core/lib/Drupal/Core/Entity/EntityType.php
+++ b/core/lib/Drupal/Core/Entity/EntityType.php
@@ -119,7 +119,7 @@ class EntityType implements EntityTypeInterface {
    *
    * @var string
    */
-  protected $bundle_entity_type = NULL;
+  protected $bundle_entity_type = 'bundle';
 
   /**
    * The name of the entity type for which bundles are provided.
@@ -764,30 +764,4 @@ public function addConstraint($constraint_name, $options = NULL) {
     return $this;
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function getBundleConfigDependency($bundle) {
-    // If this entity type uses entities to manage its bundles then depend on
-    // the bundle entity.
-    if ($bundle_entity_type_id = $this->getBundleEntityType()) {
-      if (!$bundle_entity = \Drupal::entityManager()->getStorage($bundle_entity_type_id)->load($bundle)) {
-        throw new \LogicException(sprintf('Missing bundle entity, entity type %s, entity id %s.', $bundle_entity_type_id, $bundle));
-      }
-      $config_dependency = [
-        'type' => 'config',
-        'name' => $bundle_entity->getConfigDependencyName(),
-      ];
-    }
-    else {
-      // Depend on the provider of the entity type.
-      $config_dependency = [
-        'type' => 'module',
-        'name' => $this->getProvider(),
-      ];
-    }
-
-    return $config_dependency;
-  }
-
 }
diff --git a/core/lib/Drupal/Core/Entity/EntityTypeInterface.php b/core/lib/Drupal/Core/Entity/EntityTypeInterface.php
index 1a3805e..46c2058 100644
--- a/core/lib/Drupal/Core/Entity/EntityTypeInterface.php
+++ b/core/lib/Drupal/Core/Entity/EntityTypeInterface.php
@@ -732,17 +732,4 @@ public function setConstraints(array $constraints);
    */
   public function addConstraint($constraint_name, $options = NULL);
 
-  /**
-   * Gets the config dependency info for this entity, if any exists.
-   *
-   * @param string $bundle
-   *   The bundle name.
-   *
-   * @return array
-   *   An associative array containing the following keys:
-   *   - 'type': The config dependency type (e.g. 'module', 'config').
-   *   - 'name': The name of the config dependency.
-   */
-  public function getBundleConfigDependency($bundle);
-
 }
diff --git a/core/lib/Drupal/Core/Field/FieldConfigBase.php b/core/lib/Drupal/Core/Field/FieldConfigBase.php
index 3f13e1d..00fc567 100644
--- a/core/lib/Drupal/Core/Field/FieldConfigBase.php
+++ b/core/lib/Drupal/Core/Field/FieldConfigBase.php
@@ -248,10 +248,15 @@ public function calculateDependencies() {
     // @see \Drupal\Core\Field\FieldItemInterface::calculateDependencies()
     $this->addDependencies($definition['class']::calculateDependencies($this));
 
-    // Create dependency on the bundle.
-    $bundle_config_dependency = $this->entityManager()->getDefinition($this->entity_type)->getBundleConfigDependency($this->bundle);
-    $this->addDependency($bundle_config_dependency['type'], $bundle_config_dependency['name']);
-
+    // If the target entity type uses entities to manage its bundles then
+    // depend on the bundle entity.
+    $bundle_entity_type_id = $this->entityManager()->getDefinition($this->entity_type)->getBundleEntityType();
+    if ($bundle_entity_type_id != 'bundle') {
+      if (!$bundle_entity = $this->entityManager()->getStorage($bundle_entity_type_id)->load($this->bundle)) {
+        throw new \LogicException("Missing bundle entity, entity type {$bundle_entity_type_id}, entity id {$this->bundle}.");
+      }
+      $this->addDependency('config', $bundle_entity->getConfigDependencyName());
+    }
     return $this->dependencies;
   }
 
diff --git a/core/lib/Drupal/Core/Menu/LocalTaskInterface.php b/core/lib/Drupal/Core/Menu/LocalTaskInterface.php
index 5898710..4a2b351 100644
--- a/core/lib/Drupal/Core/Menu/LocalTaskInterface.php
+++ b/core/lib/Drupal/Core/Menu/LocalTaskInterface.php
@@ -11,12 +11,6 @@
 
 /**
  * Defines an interface for menu local tasks.
- *
- * Menu local tasks are are typically rendered as navigation tabs above the
- * content region, though other presentations are possible. It is convention
- * that the titles of these tasks should be short verbs if possible.
- *
- * @see \Drupal\Core\Menu\LocalTaskManagerInterface
  */
 interface LocalTaskInterface {
 
diff --git a/core/lib/Drupal/Core/Menu/menu.api.php b/core/lib/Drupal/Core/Menu/menu.api.php
index e68b795..a2e9bb0 100644
--- a/core/lib/Drupal/Core/Menu/menu.api.php
+++ b/core/lib/Drupal/Core/Menu/menu.api.php
@@ -562,8 +562,12 @@ function hook_contextual_links_plugins_alter(array &$contextual_links) {
 /**
  * Perform alterations to the breadcrumb built by the BreadcrumbManager.
  *
- * @param \Drupal\Core\Breadcrumb\Breadcrumb $breadcrumb
- *   A breadcrumb object returned by BreadcrumbBuilderInterface::build().
+ * @param array $breadcrumb
+ *   An array of breadcrumb link a tags, returned by the breadcrumb manager
+ *   build method, for example
+ *   @code
+ *     array('<a href="/">Home</a>');
+ *   @endcode
  * @param \Drupal\Core\Routing\RouteMatchInterface $route_match
  *   The current route match.
  * @param array $context
@@ -574,9 +578,9 @@ function hook_contextual_links_plugins_alter(array &$contextual_links) {
  *
  * @ingroup menu
  */
-function hook_system_breadcrumb_alter(\Drupal\Core\Breadcrumb\Breadcrumb &$breadcrumb, \Drupal\Core\Routing\RouteMatchInterface $route_match, array $context) {
+function hook_system_breadcrumb_alter(array &$breadcrumb, \Drupal\Core\Routing\RouteMatchInterface $route_match, array $context) {
   // Add an item to the end of the breadcrumb.
-  $breadcrumb->addLink(Drupal::l(t('Text'), 'example_route_name'));
+  $breadcrumb[] = Drupal::l(t('Text'), 'example_route_name');
 }
 
 /**
diff --git a/core/lib/Drupal/Core/Render/Element/HtmlTag.php b/core/lib/Drupal/Core/Render/Element/HtmlTag.php
index 195dc6e..44bf835 100644
--- a/core/lib/Drupal/Core/Render/Element/HtmlTag.php
+++ b/core/lib/Drupal/Core/Render/Element/HtmlTag.php
@@ -8,7 +8,6 @@
 namespace Drupal\Core\Render\Element;
 
 use Drupal\Component\Utility\SafeMarkup;
-use Drupal\Core\Render\SafeString;
 use Drupal\Component\Utility\Xss;
 use Drupal\Core\Template\Attribute;
 
@@ -47,8 +46,13 @@ public function getInfo() {
   /**
    * Pre-render callback: Renders a generic HTML tag with attributes into #markup.
    *
-   * Note: It is the caller's responsibility to sanitize #value_prefix and
-   * #value_suffix. They are not filtered by this function.
+   * Note: It is the caller's responsibility to sanitize any input parameters.
+   * This callback does not perform sanitization. Despite the result of this
+   * pre-render callback being a #markup element, it is not passed through
+   * \Drupal\Component\Utility\Xss::filterAdmin(). This is because it is marked
+   * safe here, which causes
+   * \Drupal\Core\Render\Renderer::xssFilterAdminIfUnsafe() to regard it as safe
+   * and bypass the call to \Drupal\Component\Utility\Xss::filterAdmin().
    *
    * @param array $element
    *   An associative array containing:
@@ -56,17 +60,16 @@ public function getInfo() {
    *     - meta: To provide meta information, such as a page refresh.
    *     - link: To refer to stylesheets and other contextual information.
    *     - script: To load JavaScript.
-   *     The value of #tag is escaped.
+   *     The value of #tag is not escaped or sanitized, so do not pass in user
+   *     input.
    *   - #attributes: (optional) An array of HTML attributes to apply to the
-   *     tag. The attributes are escaped, see \Drupal\Core\Template\Attribute.
+   *     tag.
    *   - #value: (optional) A string containing tag content, such as inline
-   *     CSS. The value of #value will be XSS admin filtered if it is not safe.
+   *     CSS.
    *   - #value_prefix: (optional) A string to prepend to #value, e.g. a CDATA
-   *     wrapper prefix. The value of #value_prefix cannot be filtered and is
-   *     assumed to be safe.
+   *     wrapper prefix.
    *   - #value_suffix: (optional) A string to append to #value, e.g. a CDATA
-   *     wrapper suffix. The value of #value_suffix cannot be filtered and is
-   *     assumed to be safe.
+   *     wrapper suffix.
    *   - #noscript: (optional) If TRUE, the markup (including any prefix or
    *     suffix) will be wrapped in a <noscript> element. (Note that passing
    *     any non-empty value here will add the <noscript> tag.)
@@ -76,30 +79,35 @@ public function getInfo() {
   public static function preRenderHtmlTag($element) {
     $attributes = isset($element['#attributes']) ? new Attribute($element['#attributes']) : '';
 
-    // An HTML tag should not contain any special characters. Escape them to
-    // ensure this cannot be abused.
-    $escaped_tag = htmlspecialchars($element['#tag'], ENT_QUOTES, 'UTF-8');
-    $markup = '<' . $escaped_tag . $attributes;
     // Construct a void element.
     if (in_array($element['#tag'], self::$voidElements)) {
-      $markup .= " />\n";
+      // This function is intended for internal use, so we assume that no unsafe
+      // values are passed in #tag. The attributes are already safe because
+      // Attribute output is already automatically sanitized.
+      // @todo Escape this properly instead? https://www.drupal.org/node/2296101
+      $markup = SafeMarkup::set('<' . $element['#tag'] . $attributes . " />\n");
     }
     // Construct all other elements.
     else {
-      $markup .= '>';
+      $markup = '<' . $element['#tag'] . $attributes . '>';
       if (isset($element['#value_prefix'])) {
         $markup .= $element['#value_prefix'];
       }
-      $markup .= SafeMarkup::isSafe($element['#value']) ? $element['#value'] : Xss::filterAdmin($element['#value']);
+      $markup .= $element['#value'];
       if (isset($element['#value_suffix'])) {
         $markup .= $element['#value_suffix'];
       }
-      $markup .= '</' . $escaped_tag . ">\n";
+      $markup .= '</' . $element['#tag'] . ">\n";
+      // @todo We cannot actually guarantee this markup is safe. Consider a fix
+      //   in: https://www.drupal.org/node/2296101
+      $markup = SafeMarkup::set($markup);
     }
     if (!empty($element['#noscript'])) {
-      $markup = "<noscript>$markup</noscript>";
+      $element['#markup'] = SafeMarkup::format('<noscript>@markup</noscript>', ['@markup' => $markup]);
+    }
+    else {
+      $element['#markup'] = $markup;
     }
-    $element['#markup'] = SafeString::create($markup);
     return $element;
   }
 
@@ -175,18 +183,17 @@ public static function preRenderConditionalComments($element) {
       $suffix = Xss::filterAdmin($suffix);
     }
 
-    // We ensured above that $expression is either a string we created or is
-    // admin XSS filtered, and that $prefix and $suffix are also admin XSS
-    // filtered if they are unsafe. Thus, all these strings are safe.
+    // Now calling SafeMarkup::set is safe, because we ensured the
+    // data coming in was at least admin escaped.
     if (!$browsers['!IE']) {
       // "downlevel-hidden".
-      $element['#prefix'] = SafeString::create("\n<!--[if $expression]>\n" . $prefix);
-      $element['#suffix'] = SafeString::create($suffix . "<![endif]-->\n");
+      $element['#prefix'] = SafeMarkup::set("\n<!--[if $expression]>\n" . $prefix);
+      $element['#suffix'] = SafeMarkup::set($suffix . "<![endif]-->\n");
     }
     else {
       // "downlevel-revealed".
-      $element['#prefix'] = SafeString::create("\n<!--[if $expression]><!-->\n" . $prefix);
-      $element['#suffix'] = SafeString::create($suffix . "<!--<![endif]-->\n");
+      $element['#prefix'] = SafeMarkup::set("\n<!--[if $expression]><!-->\n" . $prefix);
+      $element['#suffix'] = SafeMarkup::set($suffix . "<!--<![endif]-->\n");
     }
 
     return $element;
diff --git a/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php b/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php
index 0cd7417..26fef4e 100644
--- a/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php
+++ b/core/lib/Drupal/Core/Render/HtmlResponseAttachmentsProcessor.php
@@ -107,7 +107,8 @@ public function processAttachments(AttachmentsInterface $response) {
 
     $variables = $this->processAssetLibraries($attached, $placeholders);
 
-    // Handle all non-asset attachments. This populates drupal_get_html_head().
+    // Handle all non-asset attachments. This populates drupal_get_html_head()
+    // and drupal_get_http_header().
     $all_attached = ['#attached' => $attached];
     drupal_process_attached($all_attached);
 
@@ -119,10 +120,9 @@ public function processAttachments(AttachmentsInterface $response) {
     // Now replace the placeholders in the response content with the real data.
     $this->renderPlaceholders($response, $placeholders, $variables);
 
-    // Finally set the headers on the response if any bubbled.
-    if (!empty($attached['http_header'])) {
-      $this->setHeaders($response, $attached['http_header']);
-    }
+    // Finally set the headers on the response.
+    $headers = drupal_get_http_header();
+    $this->setHeaders($response, $headers);
 
     return $response;
   }
@@ -205,17 +205,13 @@ protected function renderPlaceholders(HtmlResponse $response, array $placeholder
    *   The headers to set.
    */
   protected function setHeaders(HtmlResponse $response, array $headers) {
-    foreach ($headers as $values) {
-      $name = $values[0];
-      $value = $values[1];
-      $replace = !empty($values[2]);
-
+    foreach ($headers as $name => $value) {
       // Drupal treats the HTTP response status code like a header, even though
       // it really is not.
-      if (strtolower($name) === 'status') {
+      if ($name === 'status') {
         $response->setStatusCode($value);
       }
-      $response->headers->set($name, $value, $replace);
+      $response->headers->set($name, $value, FALSE);
     }
   }
 
diff --git a/core/lib/Drupal/Core/Render/Renderer.php b/core/lib/Drupal/Core/Render/Renderer.php
index 2ef11d1..52a849c 100644
--- a/core/lib/Drupal/Core/Render/Renderer.php
+++ b/core/lib/Drupal/Core/Render/Renderer.php
@@ -518,7 +518,7 @@ protected function doRender(&$elements, $is_root_call = FALSE) {
     $prefix = isset($elements['#prefix']) ? $this->xssFilterAdminIfUnsafe($elements['#prefix']) : '';
     $suffix = isset($elements['#suffix']) ? $this->xssFilterAdminIfUnsafe($elements['#suffix']) : '';
 
-    $elements['#markup'] = SafeString::create($prefix . $elements['#children'] . $suffix);
+    $elements['#markup'] = $prefix . $elements['#children'] . $suffix;
 
     // We've rendered this element (and its subtree!), now update the context.
     $context->update($elements);
@@ -553,7 +553,7 @@ protected function doRender(&$elements, $is_root_call = FALSE) {
     $context->bubble();
 
     $elements['#printed'] = TRUE;
-    return $elements['#markup'];
+    return SafeString::create($elements['#markup']);
   }
 
   /**
@@ -707,7 +707,7 @@ protected function createPlaceholder(array $element) {
     $attributes = new Attribute();
     $attributes['callback'] = $placeholder_render_array['#lazy_builder'][0];
     $attributes['arguments'] = UrlHelper::buildQuery($placeholder_render_array['#lazy_builder'][1]);
-    $attributes['token'] = hash('crc32b', serialize($placeholder_render_array));
+    $attributes['token'] = hash('sha1', serialize($placeholder_render_array));
     $placeholder_markup = SafeMarkup::format('<drupal-render-placeholder@attributes></drupal-render-placeholder>', ['@attributes' => $attributes]);
 
     // Build the placeholder element to return.
diff --git a/core/lib/Drupal/Core/Render/SafeString.php b/core/lib/Drupal/Core/Render/SafeString.php
index 4d968ce..170331e 100644
--- a/core/lib/Drupal/Core/Render/SafeString.php
+++ b/core/lib/Drupal/Core/Render/SafeString.php
@@ -8,7 +8,7 @@
 namespace Drupal\Core\Render;
 
 use Drupal\Component\Utility\SafeStringInterface;
-use Drupal\Component\Utility\SafeStringTrait;
+use Drupal\Component\Utility\Unicode;
 
 /**
  * Defines an object that passes safe strings through the render system.
@@ -18,13 +18,67 @@
  * filtered first, it must not be used.
  *
  * @internal
- *   This object is marked as internal because it should only be used whilst
- *   rendering.
+ *   This object is marked as internal because it should only be used during
+ *   rendering. Currently, there is no use case for this object by contrib or
+ *   custom code.
  *
  * @see \Drupal\Core\Template\TwigExtension::escapeFilter
  * @see \Twig_Markup
  * @see \Drupal\Component\Utility\SafeMarkup
  */
-final class SafeString implements SafeStringInterface, \Countable {
-  use SafeStringTrait;
+class SafeString implements SafeStringInterface, \Countable {
+
+  /**
+   * The safe string.
+   *
+   * @var string
+   */
+  protected $string;
+
+  /**
+   * Creates a SafeString object if necessary.
+   *
+   * If $string is equal to a blank string then it is not necessary to create a
+   * SafeString object. If $string is an object that implements
+   * SafeStringInterface it is returned unchanged.
+   *
+   * @param mixed $string
+   *   The string to mark as safe. This value will be cast to a string.
+   *
+   * @return string|\Drupal\Component\Utility\SafeStringInterface
+   *   A safe string.
+   */
+  public static function create($string) {
+    if ($string instanceof SafeStringInterface) {
+      return $string;
+    }
+    $string = (string) $string;
+    if ($string === '') {
+      return '';
+    }
+    $safe_string = new static();
+    $safe_string->string = $string;
+    return $safe_string;
+  }
+
+  /**
+   * Returns the string version of the SafeString object.
+   *
+   * @return string
+   *   The safe string content.
+   */
+  public function __toString() {
+    return $this->string;
+  }
+
+  /**
+   * Returns the string length.
+   *
+   * @return int
+   *   The length of the string.
+   */
+  public function count() {
+    return Unicode::strlen($this->string);
+  }
+
 }
diff --git a/core/lib/Drupal/Core/Routing/RouteCompiler.php b/core/lib/Drupal/Core/Routing/RouteCompiler.php
index 639feff..1d223ff 100644
--- a/core/lib/Drupal/Core/Routing/RouteCompiler.php
+++ b/core/lib/Drupal/Core/Routing/RouteCompiler.php
@@ -43,9 +43,7 @@ public static function compile(Route $route) {
     $stripped_path = static::getPathWithoutDefaults($route);
     $fit = static::getFit($stripped_path);
     $pattern_outline = static::getPatternOutline($stripped_path);
-    // We count the number of parts including any optional trailing parts. This
-    // allows the RouteProvider to filter candidate routes more efficiently.
-    $num_parts = count(explode('/', trim($route->getPath(), '/')));
+    $num_parts = count(explode('/', trim($pattern_outline, '/')));
 
     return new CompiledRoute(
       $fit,
diff --git a/core/lib/Drupal/Core/Routing/RouteProvider.php b/core/lib/Drupal/Core/Routing/RouteProvider.php
index 58b8320..8e350ff 100644
--- a/core/lib/Drupal/Core/Routing/RouteProvider.php
+++ b/core/lib/Drupal/Core/Routing/RouteProvider.php
@@ -325,9 +325,11 @@ public function getRoutesByPattern($pattern) {
    *   Returns a route collection of matching routes.
    */
   protected function getRoutesByPath($path) {
-    // Split the path up on the slashes, ignoring multiple slashes in a row
-    // or leading or trailing slashes.
-    $parts = preg_split('@/+@', $path, NULL, PREG_SPLIT_NO_EMPTY);
+    // Filter out each empty value, though allow '0' and 0, which would be
+    // filtered out by empty().
+    $parts = array_values(array_filter(explode('/', $path), function($value) {
+      return $value !== NULL && $value !== '';
+    }));
 
     $collection = new RouteCollection();
 
@@ -336,37 +338,22 @@ protected function getRoutesByPath($path) {
       return $collection;
     }
 
-    // The >= check on number_parts allows us to match routes with optional
-    // trailing wildcard parts as long as the pattern matches, since we
-    // dump the route pattern without those optional parts.
-    $routes = $this->connection->query("SELECT name, route, fit FROM {" . $this->connection->escapeTable($this->tableName) . "} WHERE pattern_outline IN ( :patterns[] ) AND number_parts >= :count_parts", array(
-      ':patterns[]' => $ancestors, ':count_parts' => count($parts),
+    $routes = $this->connection->query("SELECT name, route FROM {" . $this->connection->escapeTable($this->tableName) . "} WHERE pattern_outline IN ( :patterns[] ) ORDER BY fit DESC, name ASC", array(
+      ':patterns[]' => $ancestors,
     ))
-      ->fetchAll(\PDO::FETCH_ASSOC);
+      ->fetchAllKeyed();
 
-    // We sort by fit and name in PHP to avoid a SQL filesort.
-    usort($routes, array($this, 'routeProviderRouteCompare'));
-
-    foreach ($routes as $row) {
-      $collection->add($row['name'], unserialize($row['route']));
+    foreach ($routes as $name => $route) {
+      $route = unserialize($route);
+      if (preg_match($route->compile()->getRegex(), $path, $matches)) {
+        $collection->add($name, $route);
+      }
     }
 
     return $collection;
   }
 
   /**
-   * Comparison function for usort on routes.
-   */
-  public function routeProviderRouteCompare(array $a, array $b) {
-    if ($a['fit'] == $b['fit']) {
-      return strcmp($a['name'], $b['name']);
-    }
-    // Reverse sort from highest to lowest fit. PHP should cast to int, but
-    // the explicit cast makes this sort more robust against unexpected input.
-    return (int) $a['fit'] < (int) $b['fit'] ? 1 : -1;
-  }
-
-  /**
    * {@inheritdoc}
    */
   public function getAllRoutes() {
diff --git a/core/lib/Drupal/Core/Theme/Registry.php b/core/lib/Drupal/Core/Theme/Registry.php
index d24802d..bb89707 100644
--- a/core/lib/Drupal/Core/Theme/Registry.php
+++ b/core/lib/Drupal/Core/Theme/Registry.php
@@ -442,13 +442,6 @@ protected function processExtension(array &$cache, $name, $type, $theme, $path)
           $result[$hook]['includes'] = $cache[$hook]['includes'];
         }
 
-        // Load the includes, as they may contain preprocess functions.
-        if (isset($info['includes'])) {
-          foreach ($info['includes'] as $include_file) {
-            include_once $this->root . '/' . $include_file;
-          }
-        }
-
         // If the theme implementation defines a file, then also use the path
         // that it defined. Otherwise use the default path. This allows
         // system.module to declare theme functions on behalf of core .include
diff --git a/core/lib/Drupal/Core/Theme/ThemeManager.php b/core/lib/Drupal/Core/Theme/ThemeManager.php
index f6c5714..31c10a7 100644
--- a/core/lib/Drupal/Core/Theme/ThemeManager.php
+++ b/core/lib/Drupal/Core/Theme/ThemeManager.php
@@ -7,13 +7,12 @@
 
 namespace Drupal\Core\Theme;
 
-use Drupal\Component\Utility\SafeStringInterface;
-use Drupal\Core\Render\SafeString;
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\Routing\StackedRouteMatchInterface;
 use Symfony\Component\HttpFoundation\RequestStack;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Template\Attribute;
+use Drupal\Component\Utility\SafeMarkup;
 
 /**
  * Provides the default implementation of a theme manager.
@@ -318,10 +317,7 @@ public function render($hook, array $variables) {
     $output = '';
     if (isset($info['function'])) {
       if (function_exists($info['function'])) {
-        // Theme functions do not render via the theme engine, so the output is
-        // not autoescaped. However, we can only presume that the theme function
-        // has been written correctly and that the markup is safe.
-        $output = SafeString::create($info['function']($variables));
+        $output = SafeMarkup::set($info['function']($variables));
       }
     }
     else {
@@ -391,7 +387,7 @@ public function render($hook, array $variables) {
       $output = $render_function($template_file, $variables);
     }
 
-    return ($output instanceof SafeStringInterface) ? $output : (string) $output;
+    return (string) $output;
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Theme/ThemeManagerInterface.php b/core/lib/Drupal/Core/Theme/ThemeManagerInterface.php
index b61ff84..ebbfcb5 100644
--- a/core/lib/Drupal/Core/Theme/ThemeManagerInterface.php
+++ b/core/lib/Drupal/Core/Theme/ThemeManagerInterface.php
@@ -26,8 +26,8 @@
    * @param array $variables
    *   An associative array of theme variables.
    *
-   * @return string|\Drupal\Component\Utility\SafeStringInterface
-   *   The rendered output, or a SafeString object.
+   * @return string
+   *   The rendered output.
    */
   public function render($hook, array $variables);
 
diff --git a/core/lib/Drupal/Core/TypedData/TypedDataManager.php b/core/lib/Drupal/Core/TypedData/TypedDataManager.php
index 20910f6..a609f56 100644
--- a/core/lib/Drupal/Core/TypedData/TypedDataManager.php
+++ b/core/lib/Drupal/Core/TypedData/TypedDataManager.php
@@ -92,8 +92,6 @@ public function __construct(\Traversable $namespaces, CacheBackendInterface $cac
    *
    * @return \Drupal\Core\TypedData\TypedDataInterface
    *   The instantiated typed data object.
-   *
-   * @see \Drupal\Core\TypedData\TypedDataManager::create()
    */
   public function createInstance($data_type, array $configuration = array()) {
     $data_definition = $configuration['data_definition'];
@@ -170,12 +168,10 @@ public function create(DataDefinitionInterface $definition, $value = NULL, $name
    * @endcode
    *
    * @param string $data_type
-   *   The data type plugin ID, for which a data definition object should be
-   *   created.
+   *   The data type, for which a data definition should be created.
    *
    * @return \Drupal\Core\TypedData\DataDefinitionInterface
-   *   A data definition object for the given data type. The class of this
-   *   object is provided by the definition_class in the plugin annotation.
+   *   A data definition for the given data type.
    *
    * @see \Drupal\Core\TypedData\TypedDataManager::createListDataDefinition()
    */
diff --git a/core/lib/Drupal/Core/Update/UpdateKernel.php b/core/lib/Drupal/Core/Update/UpdateKernel.php
deleted file mode 100755
index 6c5de73..0000000
--- a/core/lib/Drupal/Core/Update/UpdateKernel.php
+++ /dev/null
@@ -1,165 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Core\Update\UpdateKernel.
- */
-
-namespace Drupal\Core\Update;
-
-use Drupal\Core\DrupalKernel;
-use Drupal\Core\Session\AnonymousUserSession;
-use Drupal\Core\Site\Settings;
-use Symfony\Cmf\Component\Routing\RouteObjectInterface;
-use Symfony\Component\HttpFoundation\ParameterBag;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
-
-/**
- * Defines a kernel which is used primarily to run the update of Drupal.
- *
- * We use a dedicated kernel + front controller (update.php) in order to be able
- * to repair Drupal if it is in a broken state.
- *
- * @see update.php
- * @see \Drupal\system\Controller\DbUpdateController
- */
-class UpdateKernel extends DrupalKernel {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = TRUE) {
-    try {
-      static::bootEnvironment();
-
-      // First boot up basic things, like loading the include files.
-      $this->initializeSettings($request);
-      $this->boot();
-      $container = $this->getContainer();
-      /** @var \Symfony\Component\HttpFoundation\RequestStack $request_stack */
-      $request_stack = $container->get('request_stack');
-      $request_stack->push($request);
-      $this->preHandle($request);
-
-      // Handle the actual request. We need the session both for authentication
-      // as well as the DB update, like
-      // \Drupal\system\Controller\DbUpdateController::batchFinished.
-      $this->bootSession($request, $type);
-      $result = $this->handleRaw($request);
-      $this->shutdownSession($request);
-
-      return $result;
-    }
-    catch (\Exception $e) {
-      return $this->handleException($e, $request, $type);
-    }
-  }
-
-  /**
-   * Generates the actual result of update.php.
-   *
-   * The actual logic of the update is done in the db update controller.
-   *
-   * @param \Symfony\Component\HttpFoundation\Request $request
-   *   The incoming request.
-   *
-   * @return \Symfony\Component\HttpFoundation\Response
-   *   A response object.
-   *
-   * @see \Drupal\system\Controller\DbUpdateController
-   */
-  protected function handleRaw(Request $request) {
-    $container = $this->getContainer();
-
-    $this->handleAccess($request, $container);
-
-    /** @var \Drupal\Core\Controller\ControllerResolverInterface $controller_resolver */
-    $controller_resolver = $container->get('controller_resolver');
-
-    /** @var callable $db_update_controller */
-    $db_update_controller = $controller_resolver->getControllerFromDefinition('\Drupal\system\Controller\DbUpdateController::handle');
-
-    $this->setupRequestMatch($request);
-
-    $arguments = $controller_resolver->getArguments($request, $db_update_controller);
-    return call_user_func_array($db_update_controller, $arguments);
-  }
-
-  /**
-   * Boots up the session.
-   *
-   * bootSession() + shutdownSession() basically simulates what
-   * \Drupal\Core\StackMiddleware\Session does.
-   *
-   * @param \Symfony\Component\HttpFoundation\Request $request
-   *   The incoming request.
-   */
-  protected function bootSession(Request $request) {
-    $container = $this->getContainer();
-    /** @var \Symfony\Component\HttpFoundation\Session\SessionInterface $session */
-    $session = $container->get('session');
-    $session->start();
-    $request->setSession($session);
-  }
-
-  /**
-   * Ensures that the session is saved.
-   *
-   * @param \Symfony\Component\HttpFoundation\Request $request
-   *   The incoming request.
-   */
-  protected function shutdownSession(Request $request) {
-    if ($request->hasSession()) {
-      $request->getSession()->save();
-    }
-  }
-
-  /**
-   * Set up the request with fake routing data for update.php.
-   *
-   * This fake routing data is needed in order to make batch API work properly.
-   *
-   * @param \Symfony\Component\HttpFoundation\Request $request
-   *   The incoming request.
-   */
-  protected function setupRequestMatch(Request $request) {
-    $path = $request->getPathInfo();
-    $args = explode('/', ltrim($path, '/'));
-
-    $request->attributes->set(RouteObjectInterface::ROUTE_NAME, 'system.db_update');
-    $request->attributes->set(RouteObjectInterface::ROUTE_OBJECT, $this->getContainer()->get('router.route_provider')->getRouteByName('system.db_update'));
-    $op = $args[0] ?: 'info';
-    $request->attributes->set('op', $op);
-    $request->attributes->set('_raw_variables', new ParameterBag(['op' => $op]));
-  }
-
-  /**
-   * Checks if the current user has rights to access updates page.
-   *
-   * If the current user does not have the rights, an exception is thrown.
-   *
-   * @param \Symfony\Component\HttpFoundation\Request $request
-   *   The incoming request.
-   *
-   * @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException
-   *   Thrown when update.php should not be accessible.
-   */
-  protected function handleAccess(Request $request) {
-    /** @var \Drupal\Core\Authentication\AuthenticationManager $authentication_manager */
-    $authentication_manager = $this->getContainer()->get('authentication');
-    $account = $authentication_manager->authenticate($request) ?: new AnonymousUserSession();
-
-    /** @var \Drupal\Core\Session\AccountProxyInterface $current_user */
-    $current_user = $this->getContainer()->get('current_user');
-    $current_user->setAccount($account);
-
-    /** @var \Drupal\system\Access\DbUpdateAccessCheck $db_update_access */
-    $db_update_access = $this->getContainer()->get('access_check.db_update');
-
-    if (!Settings::get('update_free_access', FALSE) && !$db_update_access->access($account)->isAllowed()) {
-      throw new AccessDeniedHttpException('In order to run update.php you need to either be logged in as admin or have set $update_free_access in your settings.php.');
-    }
-  }
-
-}
diff --git a/core/lib/Drupal/Core/Updater/Module.php b/core/lib/Drupal/Core/Updater/Module.php
index ee94517..c495272 100644
--- a/core/lib/Drupal/Core/Updater/Module.php
+++ b/core/lib/Drupal/Core/Updater/Module.php
@@ -108,31 +108,11 @@ public function getSchemaUpdates() {
    * Overrides Drupal\Core\Updater\Updater::postInstallTasks().
    */
   public function postInstallTasks() {
-    // Since this is being called outsite of the primary front controller,
-    // the base_url needs to be set explicitly to ensure that links are
-    // relative to the site root.
-    // @todo Simplify with https://www.drupal.org/node/2548095
-    $default_options = [
-      '#type' => 'link',
-      '#options' => [
-        'absolute' => TRUE,
-        'base_url' => $GLOBALS['base_url'],
-      ],
-    ];
-    return [
-      $default_options + [
-        '#url' => Url::fromRoute('update.module_install'),
-        '#title' => t('Install another module'),
-      ],
-      $default_options + [
-        '#url' => Url::fromRoute('system.modules_list'),
-        '#title' => t('Enable newly added modules'),
-      ],
-      $default_options + [
-        '#url' => Url::fromRoute('system.admin'),
-        '#title' => t('Administration pages'),
-      ],
-    ];
+    return array(
+      \Drupal::l(t('Install another module'), new Url('update.module_install')),
+      \Drupal::l(t('Enable newly added modules'), new Url('system.modules_list')),
+      \Drupal::l(t('Administration pages'), new Url('system.admin')),
+    );
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Updater/Theme.php b/core/lib/Drupal/Core/Updater/Theme.php
index 13b67ef..519f110 100644
--- a/core/lib/Drupal/Core/Updater/Theme.php
+++ b/core/lib/Drupal/Core/Updater/Theme.php
@@ -91,26 +91,9 @@ public function postInstall() {
    * Overrides Drupal\Core\Updater\Updater::postInstallTasks().
    */
   public function postInstallTasks() {
-    // Since this is being called outsite of the primary front controller,
-    // the base_url needs to be set explicitly to ensure that links are
-    // relative to the site root.
-    // @todo Simplify with https://www.drupal.org/node/2548095
-    $default_options = [
-      '#type' => 'link',
-      '#options' => [
-        'absolute' => TRUE,
-        'base_url' => $GLOBALS['base_url'],
-      ],
-    ];
-    return [
-      $default_options + [
-        '#url' => Url::fromRoute('system.themes_page'),
-        '#title' => t('Install newly added themes'),
-      ],
-      $default_options + [
-        '#url' => Url::fromRoute('system.admin'),
-        '#title' => t('Administration pages'),
-      ],
-    ];
+    return array(
+      \Drupal::l(t('Install newly added themes'), new Url('system.themes_page')),
+      \Drupal::l(t('Administration pages'), new Url('system.admin')),
+    );
   }
 }
diff --git a/core/modules/book/book.services.yml b/core/modules/book/book.services.yml
index 06affbb..0a022a7 100644
--- a/core/modules/book/book.services.yml
+++ b/core/modules/book/book.services.yml
@@ -26,8 +26,6 @@ services:
   cache_context.route.book_navigation:
     class: Drupal\book\Cache\BookNavigationCacheContext
     arguments: ['@request_stack']
-    calls:
-      - [setContainer, ['@service_container']]
     tags:
       - { name: cache.context}
 
diff --git a/core/modules/book/src/BookBreadcrumbBuilder.php b/core/modules/book/src/BookBreadcrumbBuilder.php
index b1ece44..be0e63a 100644
--- a/core/modules/book/src/BookBreadcrumbBuilder.php
+++ b/core/modules/book/src/BookBreadcrumbBuilder.php
@@ -8,7 +8,6 @@
 namespace Drupal\book;
 
 use Drupal\Core\Access\AccessManagerInterface;
-use Drupal\Core\Breadcrumb\Breadcrumb;
 use Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Link;
@@ -73,8 +72,6 @@ public function applies(RouteMatchInterface $route_match) {
    */
   public function build(RouteMatchInterface $route_match) {
     $book_nids = array();
-    $breadcrumb = new Breadcrumb();
-
     $links = array(Link::createFromRoute($this->t('Home'), '<front>'));
     $book = $route_match->getParameter('node')->book;
     $depth = 1;
@@ -95,9 +92,7 @@ public function build(RouteMatchInterface $route_match) {
         $depth++;
       }
     }
-    $breadcrumb->setLinks($links);
-    $breadcrumb->setCacheContexts(['route.book_navigation']);
-    return $breadcrumb;
+    return $links;
   }
 
 }
diff --git a/core/modules/book/src/Tests/BookTest.php b/core/modules/book/src/Tests/BookTest.php
index b0235c4..bfd3ae3 100644
--- a/core/modules/book/src/Tests/BookTest.php
+++ b/core/modules/book/src/Tests/BookTest.php
@@ -24,7 +24,7 @@ class BookTest extends WebTestBase {
    *
    * @var array
    */
-  public static $modules = array('book', 'block', 'node_access_test', 'book_test');
+  public static $modules = array('book', 'block', 'node_access_test');
 
   /**
    * A book node.
@@ -110,45 +110,6 @@ function createBook() {
   }
 
   /**
-   * Tests the book navigation cache context.
-   *
-   * @see \Drupal\book\Cache\BookNavigationCacheContext
-   */
-  public function testBookNavigationCacheContext() {
-    // Create a page node.
-    $this->drupalCreateContentType(['type' => 'page']);
-    $page = $this->drupalCreateNode();
-
-    // Create a book, consisting of book nodes.
-    $book_nodes = $this->createBook();
-
-    // Enable the debug output.
-    \Drupal::state()->set('book_test.debug_book_navigation_cache_context', TRUE);
-
-    $this->drupalLogin($this->bookAuthor);
-
-    // On non-node route.
-    $this->drupalGet('');
-    $this->assertRaw('[route.book_navigation]=book.none');
-
-    // On non-book node route.
-    $this->drupalGet($page->urlInfo());
-    $this->assertRaw('[route.book_navigation]=book.none');
-
-    // On book node route.
-    $this->drupalGet($book_nodes[0]->urlInfo());
-    $this->assertRaw('[route.book_navigation]=0|2|3');
-    $this->drupalGet($book_nodes[1]->urlInfo());
-    $this->assertRaw('[route.book_navigation]=0|2|3|4');
-    $this->drupalGet($book_nodes[2]->urlInfo());
-    $this->assertRaw('[route.book_navigation]=0|2|3|5');
-    $this->drupalGet($book_nodes[3]->urlInfo());
-    $this->assertRaw('[route.book_navigation]=0|2|6');
-    $this->drupalGet($book_nodes[4]->urlInfo());
-    $this->assertRaw('[route.book_navigation]=0|2|7');
-  }
-
-  /**
    * Tests saving the book outline on an empty book.
    */
   function testEmptyBook() {
@@ -342,7 +303,7 @@ function createBookNode($book_nid, $parent = NULL) {
     static $number = 0; // Used to ensure that when sorted nodes stay in same order.
 
     $edit = array();
-    $edit['title[0][value]'] = str_pad($number, 2, '0', STR_PAD_LEFT) . ' - SimpleTest test node ' . $this->randomMachineName(10);
+    $edit['title[0][value]'] = $number . ' - SimpleTest test node ' . $this->randomMachineName(10);
     $edit['body[0][value]'] = 'SimpleTest test body ' . $this->randomMachineName(32) . ' ' . $this->randomMachineName(32);
     $edit['book[bid]'] = $book_nid;
 
diff --git a/core/modules/book/tests/modules/book_test.info.yml b/core/modules/book/tests/modules/book_test.info.yml
deleted file mode 100644
index 3300147..0000000
--- a/core/modules/book/tests/modules/book_test.info.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-name: 'Book module tests'
-type: module
-description: 'Support module for book module testing.'
-package: Testing
-version: VERSION
-core: 8.x
diff --git a/core/modules/book/tests/modules/book_test.module b/core/modules/book/tests/modules/book_test.module
deleted file mode 100644
index 2f868a4..0000000
--- a/core/modules/book/tests/modules/book_test.module
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/**
- * @file
- * Test module for testing the book module.
- *
- * This module's functionality depends on the following state variables:
- * - book_test.debug_book_navigation_cache_context: Used in NodeQueryAlterTest to enable the
- *   node_access_all grant realm.
- *
- * @see \Drupal\book\Tests\BookTest::testBookNavigationCacheContext()
- */
-
-/**
- * Implements hook_page_attachments().
- */
-function book_test_page_attachments(array &$page) {
-  if (\Drupal::state()->get('book_test.debug_book_navigation_cache_context', FALSE)) {
-    drupal_set_message(\Drupal::service('cache_contexts_manager')->convertTokensToKeys(['route.book_navigation'])->getKeys()[0]);
-  }
-}
diff --git a/core/modules/ckeditor/src/Tests/CKEditorTest.php b/core/modules/ckeditor/src/Tests/CKEditorTest.php
index a07789f..cbefd0d 100644
--- a/core/modules/ckeditor/src/Tests/CKEditorTest.php
+++ b/core/modules/ckeditor/src/Tests/CKEditorTest.php
@@ -54,7 +54,7 @@ protected function setUp() {
         'filter_html' => array(
           'status' => 1,
           'settings' => array(
-            'allowed_html' => '<h2> <h3> <h4> <h5> <h6> <p> <br> <strong> <a>',
+            'allowed_html' => '<h4> <h5> <h6> <p> <br> <strong> <a>',
           )
         ),
       ),
@@ -113,7 +113,7 @@ function testGetJSSettings() {
     $editor->save();
     $expected_config['toolbar'][0]['items'][] = 'Strike';
     $expected_config['toolbar'][0]['items'][] = 'Format';
-    $expected_config['format_tags'] = 'p;h2;h3;h4;h5;h6';
+    $expected_config['format_tags'] = 'p;h4;h5;h6';
     $expected_config['extraPlugins'] .= ',llama_contextual,llama_contextual_and_button';
     $expected_config['drupalExternalPlugins']['llama_contextual'] = file_create_url('core/modules/ckeditor/tests/modules/js/llama_contextual.js');
     $expected_config['drupalExternalPlugins']['llama_contextual_and_button'] = file_create_url('core/modules/ckeditor/tests/modules/js/llama_contextual_and_button.js');
@@ -129,7 +129,7 @@ function testGetJSSettings() {
 
     $expected_config['allowedContent']['pre'] = array('attributes' => TRUE, 'styles' => FALSE, 'classes' => TRUE);
     $expected_config['allowedContent']['h3'] = array('attributes' => TRUE, 'styles' => FALSE, 'classes' => TRUE);
-    $expected_config['format_tags'] = 'p;h2;h3;h4;h5;h6;pre';
+    $expected_config['format_tags'] = 'p;h3;h4;h5;h6;pre';
     $this->assertIdentical($expected_config, $this->ckeditor->getJSSettings($editor), 'Generated JS settings are correct for customized configuration.');
 
     // Disable the filter_html filter: allow *all *tags.
@@ -289,7 +289,7 @@ function testInternalGetConfig() {
     $settings = $editor->getSettings();
     $settings['toolbar']['rows'][0][0]['items'][] = 'Format';
     $editor->setSettings($settings);
-    $expected['format_tags'] = 'p;h2;h3;h4;h5;h6';
+    $expected['format_tags'] = 'p;h4;h5;h6';
     $this->assertEqual($expected, $internal_plugin->getConfig($editor), '"Internal" plugin configuration built correctly for customized toolbar.');
   }
 
@@ -430,8 +430,6 @@ protected function getDefaultInternalConfig() {
 
   protected function getDefaultAllowedContentConfig() {
     return array(
-      'h2' => array('attributes' => TRUE, 'styles' => FALSE, 'classes' => TRUE),
-      'h3' => array('attributes' => TRUE, 'styles' => FALSE, 'classes' => TRUE),
       'h4' => array('attributes' => TRUE, 'styles' => FALSE, 'classes' => TRUE),
       'h5' => array('attributes' => TRUE, 'styles' => FALSE, 'classes' => TRUE),
       'h6' => array('attributes' => TRUE, 'styles' => FALSE, 'classes' => TRUE),
diff --git a/core/modules/comment/src/CommentAccessControlHandler.php b/core/modules/comment/src/CommentAccessControlHandler.php
index 984fda1..405b1d2 100644
--- a/core/modules/comment/src/CommentAccessControlHandler.php
+++ b/core/modules/comment/src/CommentAccessControlHandler.php
@@ -80,26 +80,15 @@ protected function checkFieldAccess($operation, FieldDefinitionInterface $field_
       // No user can change read-only fields.
       $read_only_fields = array(
         'hostname',
-        'changed',
+        'uuid',
         'cid',
         'thread',
-      );
-      // These fields can be edited during comment creation.
-      $create_only_fields = [
         'comment_type',
-        'uuid',
+        'pid',
         'entity_id',
         'entity_type',
         'field_name',
-        'pid',
-      ];
-      if ($items && ($entity = $items->getEntity()) && $entity->isNew() && in_array($field_definition->getName(), $create_only_fields, TRUE)) {
-        // We are creating a new comment, user can edit create only fields.
-        return AccessResult::allowedIfHasPermission($account, 'post comments')->addCacheableDependency($entity);
-      }
-      // We are editing an existing comment - create only fields are now read
-      // only.
-      $read_only_fields = array_merge($read_only_fields, $create_only_fields);
+      );
       if (in_array($field_definition->getName(), $read_only_fields, TRUE)) {
         return AccessResult::forbidden();
       }
diff --git a/core/modules/comment/src/CommentBreadcrumbBuilder.php b/core/modules/comment/src/CommentBreadcrumbBuilder.php
index 873b569..8bc2f25 100644
--- a/core/modules/comment/src/CommentBreadcrumbBuilder.php
+++ b/core/modules/comment/src/CommentBreadcrumbBuilder.php
@@ -8,7 +8,6 @@
 namespace Drupal\comment;
 
 use Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface;
-use Drupal\Core\Breadcrumb\Breadcrumb;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Link;
 use Drupal\Core\Routing\RouteMatchInterface;
@@ -48,20 +47,16 @@ public function applies(RouteMatchInterface $route_match) {
    * {@inheritdoc}
    */
   public function build(RouteMatchInterface $route_match) {
-    $breadcrumb = new Breadcrumb();
-    $breadcrumb->setCacheContexts(['route']);
-    $breadcrumb->addLink(Link::createFromRoute($this->t('Home'), '<front>'));
+    $breadcrumb = [Link::createFromRoute($this->t('Home'), '<front>')];
 
     $entity = $route_match->getParameter('entity');
-    $breadcrumb->addLink(new Link($entity->label(), $entity->urlInfo()));
-    $breadcrumb->addCacheableDependency($entity);
+    $breadcrumb[] = new Link($entity->label(), $entity->urlInfo());
 
     if (($pid = $route_match->getParameter('pid')) && ($comment = $this->storage->load($pid))) {
       /** @var \Drupal\comment\CommentInterface $comment */
-      $breadcrumb->addCacheableDependency($comment);
       // Display link to parent comment.
       // @todo Clean-up permalink in https://www.drupal.org/node/2198041
-      $breadcrumb->addLink(new Link($comment->getSubject(), $comment->urlInfo()));
+      $breadcrumb[] = new Link($comment->getSubject(), $comment->urlInfo());
     }
 
     return $breadcrumb;
diff --git a/core/modules/comment/src/Plugin/views/field/NodeNewComments.php b/core/modules/comment/src/Plugin/views/field/NodeNewComments.php
index 55d1613..4ed2ba8 100644
--- a/core/modules/comment/src/Plugin/views/field/NodeNewComments.php
+++ b/core/modules/comment/src/Plugin/views/field/NodeNewComments.php
@@ -141,7 +141,7 @@ public function preRender(&$values) {
         ':timestamp2' => HISTORY_READ_LIMIT,
       ));
       foreach ($result as $node) {
-        foreach ($ids[$node->nid] as $id) {
+        foreach ($ids[$node->id()] as $id) {
           $values[$id]->{$this->field_alias} = $node->num_comments;
         }
       }
diff --git a/core/modules/comment/src/Tests/CommentFieldAccessTest.php b/core/modules/comment/src/Tests/CommentFieldAccessTest.php
index ba1c0d3..bd08dfe 100644
--- a/core/modules/comment/src/Tests/CommentFieldAccessTest.php
+++ b/core/modules/comment/src/Tests/CommentFieldAccessTest.php
@@ -53,23 +53,15 @@ class CommentFieldAccessTest extends EntityUnitTestBase {
   protected $readOnlyFields = array(
     'changed',
     'hostname',
+    'uuid',
     'cid',
     'thread',
-  );
-
-  /**
-   * These fields can be edited on create only.
-   *
-   * @var array
-   */
-  protected $createOnlyFields = [
-    'uuid',
-    'pid',
     'comment_type',
+    'pid',
     'entity_id',
     'entity_type',
     'field_name',
-  ];
+  );
 
   /**
    * These fields can only be edited by the admin or anonymous users if allowed.
@@ -260,28 +252,6 @@ public function testAccessToAdministrativeFields() {
       }
     }
 
-    // Check create-only fields.
-    foreach ($this->createOnlyFields as $field) {
-      // Check view operation.
-      foreach ($permutations as $set) {
-        $may_view = $set['comment']->{$field}->access('view', $set['user']);
-        $may_update = $set['comment']->{$field}->access('edit', $set['user']);
-        $this->assertEqual($may_view, $field != 'hostname' && ($set['user']->hasPermission('administer comments') ||
-            ($set['comment']->isPublished() && $set['user']->hasPermission('access comments'))), SafeMarkup::format('User @user !state view field !field on comment @comment', [
-          '@user' => $set['user']->getUsername(),
-          '!state' => $may_view ? 'can' : 'cannot',
-          '@comment' => $set['comment']->getSubject(),
-          '!field' => $field,
-        ]));
-        $this->assertEqual($may_update, $set['user']->hasPermission('post comments') && $set['comment']->isNew(), SafeMarkup::format('User @user !state update field !field on comment @comment', [
-          '@user' => $set['user']->getUsername(),
-          '!state' => $may_update ? 'can' : 'cannot',
-          '@comment' => $set['comment']->getSubject(),
-          '!field' => $field,
-        ]));
-      }
-    }
-
     // Check contact fields.
     foreach ($this->contactFields as $field) {
       // Check view operation.
diff --git a/core/modules/comment/src/Tests/Views/CommentFieldNameTest.php b/core/modules/comment/src/Tests/Views/CommentFieldNameTest.php
index 42182c9..2fcf468 100644
--- a/core/modules/comment/src/Tests/Views/CommentFieldNameTest.php
+++ b/core/modules/comment/src/Tests/Views/CommentFieldNameTest.php
@@ -91,11 +91,11 @@ public function testCommentFieldName() {
     $output = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['field_name']->advancedRender($view->result[0]);
     });
-    $this->assertEqual($this->comment->getFieldName(), $output);
+    $this->assertIdentical($this->comment->getFieldName(), $output);
     $output = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['field_name']->advancedRender($view->result[1]);
     });
-    $this->assertEqual($this->customComment->getFieldName(), $output);
+    $this->assertIdentical($this->customComment->getFieldName(), $output);
   }
 
 }
diff --git a/core/modules/comment/src/Tests/Views/NodeCommentsTest.php b/core/modules/comment/src/Tests/Views/NodeCommentsTest.php
deleted file mode 100644
index c83ffae..0000000
--- a/core/modules/comment/src/Tests/Views/NodeCommentsTest.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\comment\Tests\Views\NodeCommentsTest.
- */
-
-namespace Drupal\comment\Tests\Views;
-
-/**
- * Tests comments on nodes.
- *
- * @group comment
- */
-class NodeCommentsTest extends CommentTestBase {
-
-  /**
-   * Modules to install.
-   *
-   * @var array
-   */
-  public static $modules = ['history'];
-
-  /**
-   * Views used by this test.
-   *
-   * @var array
-   */
-  public static $testViews = ['test_new_comments'];
-
-  /**
-   * Test the new comments field plugin.
-   */
-  public function testNewComments() {
-    $this->drupalGet('test-new-comments');
-    $this->assertResponse(200);
-    $new_comments = $this->cssSelect(".views-field-new-comments a:contains('1')");
-    $this->assertEqual(count($new_comments), 1, 'Found the number of new comments for a certain node.');
-  }
-
-}
diff --git a/core/modules/comment/tests/modules/comment_test_views/test_views/views.view.test_new_comments.yml b/core/modules/comment/tests/modules/comment_test_views/test_views/views.view.test_new_comments.yml
deleted file mode 100644
index e329976..0000000
--- a/core/modules/comment/tests/modules/comment_test_views/test_views/views.view.test_new_comments.yml
+++ /dev/null
@@ -1,163 +0,0 @@
-langcode: en
-status: true
-dependencies:
-  module:
-    - comment
-    - node
-    - user
-id: '2505879'
-label: '2505879'
-module: views
-description: ''
-tag: ''
-base_table: node_field_data
-base_field: nid
-core: 8.x
-display:
-  default:
-    display_plugin: default
-    id: default
-    display_title: Master
-    position: 0
-    display_options:
-      access:
-        type: perm
-        options:
-          perm: 'access content'
-      cache:
-        type: tag
-        options: {  }
-      query:
-        type: views_query
-        options:
-          disable_sql_rewrite: false
-          distinct: false
-          replica: false
-          query_comment: ''
-          query_tags: {  }
-      pager:
-        type: full
-      style:
-        type: table
-      row:
-        type: fields
-      fields:
-        title:
-          id: title
-          table: node_field_data
-          field: title
-          entity_type: node
-          entity_field: title
-          alter:
-            alter_text: false
-            make_link: false
-            absolute: false
-            trim: false
-            word_boundary: false
-            ellipsis: false
-            strip_tags: false
-            html: false
-          hide_empty: false
-          empty_zero: false
-          settings:
-            link_to_entity: true
-          plugin_id: field
-          relationship: none
-          group_type: group
-          admin_label: ''
-          label: Title
-          exclude: false
-          element_type: ''
-          element_class: ''
-          element_label_type: ''
-          element_label_class: ''
-          element_label_colon: true
-          element_wrapper_type: ''
-          element_wrapper_class: ''
-          element_default_classes: true
-          empty: ''
-          hide_alter_empty: true
-          click_sort_column: value
-          type: string
-          group_column: value
-          group_columns: {  }
-          group_rows: true
-          delta_limit: 0
-          delta_offset: 0
-          delta_reversed: false
-          delta_first_last: false
-          multi_type: separator
-          separator: ', '
-          field_api_classes: false
-        new_comments:
-          id: new_comments
-          table: node
-          field: new_comments
-          relationship: none
-          group_type: group
-          admin_label: ''
-          label: 'New comments'
-          exclude: false
-          alter:
-            alter_text: false
-            text: ''
-            make_link: false
-            path: ''
-            absolute: false
-            external: false
-            replace_spaces: false
-            path_case: none
-            trim_whitespace: false
-            alt: ''
-            rel: ''
-            link_class: ''
-            prefix: ''
-            suffix: ''
-            target: ''
-            nl2br: false
-            max_length: 0
-            word_boundary: true
-            ellipsis: true
-            more_link: false
-            more_link_text: ''
-            more_link_path: ''
-            strip_tags: false
-            trim: false
-            preserve_tags: ''
-            html: false
-          element_type: ''
-          element_class: ''
-          element_label_type: ''
-          element_label_class: ''
-          element_label_colon: true
-          element_wrapper_type: ''
-          element_wrapper_class: ''
-          element_default_classes: true
-          empty: ''
-          hide_empty: false
-          empty_zero: false
-          hide_alter_empty: true
-          set_precision: false
-          precision: 0
-          decimal: .
-          prefix: ''
-          suffix: ''
-          link_to_comment: true
-          entity_type: node
-          plugin_id: node_new_comments
-      filters: { }
-      sorts: { }
-      title: ''
-      header: {  }
-      footer: {  }
-      empty: {  }
-      relationships: {  }
-      arguments: {  }
-      display_extenders: {  }
-  page_1:
-    display_plugin: page
-    id: page_1
-    display_title: Page
-    position: 1
-    display_options:
-      path: 'test-new-comments'
diff --git a/core/modules/config_translation/src/ConfigFieldMapper.php b/core/modules/config_translation/src/ConfigFieldMapper.php
index 75a69f1..a593fff 100644
--- a/core/modules/config_translation/src/ConfigFieldMapper.php
+++ b/core/modules/config_translation/src/ConfigFieldMapper.php
@@ -32,8 +32,7 @@ class ConfigFieldMapper extends ConfigEntityMapper {
   public function getBaseRouteParameters() {
     $parameters = parent::getBaseRouteParameters();
     $base_entity_info = $this->entityManager->getDefinition($this->pluginDefinition['base_entity_type']);
-    $bundle_parameter_key = $base_entity_info->getBundleEntityType() ?: 'bundle';
-    $parameters[$bundle_parameter_key] = $this->entity->getTargetBundle();
+    $parameters[$base_entity_info->getBundleEntityType()] = $this->entity->getTargetBundle();
     return $parameters;
   }
 
diff --git a/core/modules/config_translation/src/Tests/ConfigTranslationUiTest.php b/core/modules/config_translation/src/Tests/ConfigTranslationUiTest.php
index f220d1a..a05f7e7 100644
--- a/core/modules/config_translation/src/Tests/ConfigTranslationUiTest.php
+++ b/core/modules/config_translation/src/Tests/ConfigTranslationUiTest.php
@@ -485,7 +485,7 @@ public function testDateFormatTranslation() {
 
       // Formatting the date 8 / 27 / 1985 @ 13:37 EST with pattern D should
       // display "Tue".
-      $formatted_date = format_date(494015820, $id, NULL, 'America/New_York', 'fr');
+      $formatted_date = format_date(494015820, $id, NULL, NULL, 'fr');
       $this->assertEqual($formatted_date, 'Tue', 'Got the right formatted date using the date format translation pattern.');
     }
   }
diff --git a/core/modules/content_translation/tests/src/Unit/Access/ContentTranslationManageAccessCheckTest.php b/core/modules/content_translation/tests/src/Unit/Access/ContentTranslationManageAccessCheckTest.php
index 0818be2..6c95f7e 100644
--- a/core/modules/content_translation/tests/src/Unit/Access/ContentTranslationManageAccessCheckTest.php
+++ b/core/modules/content_translation/tests/src/Unit/Access/ContentTranslationManageAccessCheckTest.php
@@ -10,7 +10,6 @@
 use Drupal\content_translation\Access\ContentTranslationManageAccessCheck;
 use Drupal\Core\Access\AccessResult;
 use Drupal\Core\DependencyInjection\ContainerBuilder;
-use Drupal\Core\Cache\Cache;
 use Drupal\Core\Language\Language;
 use Drupal\Tests\UnitTestCase;
 use Symfony\Component\Routing\Route;
@@ -98,12 +97,6 @@ public function testCreateAccess() {
       ->with()
       ->will($this->returnValue(array()));
     $entity->expects($this->once())
-      ->method('getCacheContexts')
-      ->willReturn([]);
-    $entity->expects($this->once())
-      ->method('getCacheMaxAge')
-      ->willReturn(Cache::PERMANENT);
-    $entity->expects($this->once())
       ->method('getCacheTags')
       ->will($this->returnValue(array('node:1337')));
     $entity->expects($this->once())
diff --git a/core/modules/dblog/src/Tests/Views/ViewsIntegrationTest.php b/core/modules/dblog/src/Tests/Views/ViewsIntegrationTest.php
index 1a636c1..063ce25 100644
--- a/core/modules/dblog/src/Tests/Views/ViewsIntegrationTest.php
+++ b/core/modules/dblog/src/Tests/Views/ViewsIntegrationTest.php
@@ -73,12 +73,11 @@ public function testIntegration() {
     $entries[] = array(
       'message' => '@token1 !token2',
       // Setup a link with a tag which is filtered by
-      // \Drupal\Component\Utility\Xss::filterAdmin() in order to make sure
-      // that strings which are not marked as safe get filtered.
+      // \Drupal\Component\Utility\Xss::filterAdmin().
       'variables' => array(
         '@token1' => $this->randomMachineName(),
         '!token2' => $this->randomMachineName(),
-        'link' => '<a href="' . \Drupal::url('<front>') . '"><object>Link</object></a>',
+        'link' => \Drupal::l(SafeMarkup::set('<object>Link</object>'), new Url('<front>')),
       ),
     );
     $logger_factory = $this->container->get('logger.factory');
@@ -96,14 +95,7 @@ public function testIntegration() {
 
     foreach ($entries as $index => $entry) {
       $this->assertEqual($view->style_plugin->getField($index, 'message'), SafeMarkup::format($entry['message'], $entry['variables']));
-      $link_field = $view->style_plugin->getField($index, 'link');
-      // The 3rd entry contains some unsafe markup that needs to get filtered.
-      if ($index == 2) {
-        // Make sure that unsafe link differs from the rendered link, so we know
-        // that some filtering actually happened.
-        $this->assertNotEqual($link_field, $entry['variables']['link']);
-      }
-      $this->assertEqual($link_field, Xss::filterAdmin($entry['variables']['link']));
+      $this->assertEqual($view->style_plugin->getField($index, 'link'), Xss::filterAdmin($entry['variables']['link']));
     }
 
     // Disable replacing variables and check that the tokens aren't replaced.
diff --git a/core/modules/editor/src/Tests/EditorSecurityTest.php b/core/modules/editor/src/Tests/EditorSecurityTest.php
index a50b6ab..2710145 100644
--- a/core/modules/editor/src/Tests/EditorSecurityTest.php
+++ b/core/modules/editor/src/Tests/EditorSecurityTest.php
@@ -96,7 +96,7 @@ protected function setUp() {
         'filter_html' => array(
           'status' => 1,
           'settings' => array(
-            'allowed_html' => '<h2> <h3> <h4> <h5> <h6> <p> <br> <strong> <a>',
+            'allowed_html' => '<h4> <h5> <h6> <p> <br> <strong> <a>',
           )
         ),
       ),
@@ -111,7 +111,7 @@ protected function setUp() {
         'filter_html' => array(
           'status' => 1,
           'settings' => array(
-            'allowed_html' => '<h2> <h3> <h4> <h5> <h6> <p> <br> <strong> <a>',
+            'allowed_html' => '<h4> <h5> <h6> <p> <br> <strong> <a>',
           )
         ),
       ),
@@ -131,7 +131,7 @@ protected function setUp() {
         'filter_html' => array(
           'status' => 1,
           'settings' => array(
-            'allowed_html' => '<h2> <h3> <h4> <h5> <h6> <p> <br> <strong> <a> <embed>',
+            'allowed_html' => '<h4> <h5> <h6> <p> <br> <strong> <a> <embed>',
           )
         ),
       ),
diff --git a/core/modules/field/src/Entity/FieldConfig.php b/core/modules/field/src/Entity/FieldConfig.php
index 29c2819..6054d02 100644
--- a/core/modules/field/src/Entity/FieldConfig.php
+++ b/core/modules/field/src/Entity/FieldConfig.php
@@ -270,8 +270,7 @@ protected function linkTemplates() {
   protected function urlRouteParameters($rel) {
     $parameters = parent::urlRouteParameters($rel);
     $entity_type = \Drupal::entityManager()->getDefinition($this->entity_type);
-    $bundle_parameter_key = $entity_type->getBundleEntityType() ?: 'bundle';
-    $parameters[$bundle_parameter_key] = $this->bundle;
+    $parameters[$entity_type->getBundleEntityType()] = $this->bundle;
     return $parameters;
   }
 
diff --git a/core/modules/field/src/Tests/TestItemWithDependenciesTest.php b/core/modules/field/src/Tests/TestItemWithDependenciesTest.php
index a3be92b..b3398ad 100644
--- a/core/modules/field/src/Tests/TestItemWithDependenciesTest.php
+++ b/core/modules/field/src/Tests/TestItemWithDependenciesTest.php
@@ -50,7 +50,7 @@ public function testTestItemWithDepenencies() {
     $this->assertEqual([
       'content' => ['node:article:uuid'],
       'config' => ['field.storage.entity_test.field_test'],
-      'module' => ['entity_test', 'field_test', 'test_module']
+      'module' => ['field_test', 'test_module']
     ], $field->getDependencies());
   }
 
diff --git a/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php b/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php
index 72cfd76..f249c6c 100644
--- a/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php
+++ b/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\Tests\field\Unit;
 
-use Drupal\Core\Entity\EntityType;
 use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\DependencyInjection\ContainerBuilder;
@@ -116,10 +115,26 @@ protected function setUp() {
    */
   public function testCalculateDependencies() {
     // Mock the interfaces necessary to create a dependency on a bundle entity.
+    $bundle_entity = $this->getMock('Drupal\Core\Config\Entity\ConfigEntityInterface');
+    $bundle_entity->expects($this->any())
+      ->method('getConfigDependencyName')
+      ->will($this->returnValue('test.test_entity_type.id'));
+
+    $storage = $this->getMock('\Drupal\Core\Config\Entity\ConfigEntityStorageInterface');
+    $storage->expects($this->any())
+      ->method('load')
+      ->with('test_bundle')
+      ->will($this->returnValue($bundle_entity));
+
+    $this->entityManager->expects($this->any())
+      ->method('getStorage')
+      ->with('bundle_entity_type')
+      ->will($this->returnValue($storage));
+
     $target_entity_type = $this->getMock('\Drupal\Core\Entity\EntityTypeInterface');
     $target_entity_type->expects($this->any())
-      ->method('getBundleConfigDependency')
-      ->will($this->returnValue(array('type' => 'config', 'name' => 'test.test_entity_type.id')));
+      ->method('getBundleEntityType')
+      ->will($this->returnValue('bundle_entity_type'));
 
     $this->entityManager->expects($this->at(0))
       ->method('getDefinition')
@@ -177,10 +192,10 @@ public function testCalculateDependenciesIncorrectBundle() {
       ->with('bundle_entity_type')
       ->will($this->returnValue($storage));
 
-    $target_entity_type = new EntityType(array(
-      'id' => 'test_entity_type',
-      'bundle_entity_type' => 'bundle_entity_type',
-    ));
+    $target_entity_type = $this->getMock('\Drupal\Core\Entity\EntityTypeInterface');
+    $target_entity_type->expects($this->any())
+      ->method('getBundleEntityType')
+      ->will($this->returnValue('bundle_entity_type'));
 
     $this->entityManager->expects($this->at(0))
       ->method('getDefinition')
diff --git a/core/modules/field_ui/src/FieldConfigListBuilder.php b/core/modules/field_ui/src/FieldConfigListBuilder.php
index d3feac1..ed8d9f4 100644
--- a/core/modules/field_ui/src/FieldConfigListBuilder.php
+++ b/core/modules/field_ui/src/FieldConfigListBuilder.php
@@ -124,9 +124,11 @@ public function buildHeader() {
   public function buildRow(EntityInterface $field_config) {
     /** @var \Drupal\field\FieldConfigInterface $field_config */
     $field_storage = $field_config->getFieldStorageDefinition();
+    $target_bundle_entity_type_id = $this->entityManager->getDefinition($this->targetEntityTypeId)->getBundleEntityType();
     $route_parameters = array(
+      $target_bundle_entity_type_id => $this->targetBundle,
       'field_config' => $field_config->id(),
-    ) + FieldUI::getRouteBundleParameter($this->entityManager->getDefinition($this->targetEntityTypeId), $this->targetBundle);
+    );
 
     $row = array(
       'id' => Html::getClass($field_config->getName()),
diff --git a/core/modules/field_ui/src/FieldUI.php b/core/modules/field_ui/src/FieldUI.php
index c4efcb3..42107d3 100644
--- a/core/modules/field_ui/src/FieldUI.php
+++ b/core/modules/field_ui/src/FieldUI.php
@@ -81,8 +81,7 @@ public static function getNextDestination(array $destinations) {
    *   An array that can be used a route parameter.
    */
   public static function getRouteBundleParameter(EntityTypeInterface $entity_type, $bundle) {
-    $bundle_parameter_key = $entity_type->getBundleEntityType() ?: 'bundle';
-    return array($bundle_parameter_key => $bundle);
+    return array($entity_type->getBundleEntityType() => $bundle);
   }
 
 }
diff --git a/core/modules/field_ui/src/Routing/RouteSubscriber.php b/core/modules/field_ui/src/Routing/RouteSubscriber.php
index f31ff2b..5bb645b 100644
--- a/core/modules/field_ui/src/Routing/RouteSubscriber.php
+++ b/core/modules/field_ui/src/Routing/RouteSubscriber.php
@@ -48,13 +48,14 @@ protected function alterRoutes(RouteCollection $collection) {
         $path = $entity_route->getPath();
 
         $options = array();
-        if ($bundle_entity_type = $entity_type->getBundleEntityType()) {
+        if (($bundle_entity_type = $entity_type->getBundleEntityType()) && $bundle_entity_type !== 'bundle') {
           $options['parameters'][$bundle_entity_type] = array(
             'type' => 'entity:' . $bundle_entity_type,
           );
+
+          // Special parameter used to easily recognize all Field UI routes.
+          $options['_field_ui'] = TRUE;
         }
-        // Special parameter used to easily recognize all Field UI routes.
-        $options['_field_ui'] = TRUE;
 
         $defaults = array(
           'entity_type_id' => $entity_type_id,
diff --git a/core/modules/filter/migration_templates/d7_filter_format.yml b/core/modules/filter/migration_templates/d7_filter_format.yml
deleted file mode 100755
index 474b0d4..0000000
--- a/core/modules/filter/migration_templates/d7_filter_format.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-id: d7_filter_format
-label: Drupal 7 filter format configuration
-migration_tags:
-  - Drupal 7
-source:
-  plugin: d7_filter_format
-process:
-  format:
-    -
-      plugin: machine_name
-      source: name
-    -
-      plugin: dedupe_entity
-      entity_type: filter_format
-      field: format
-      length: 32
-  name: name
-  cache: cache
-  filters: filters
-destination:
-  plugin: entity:filter_format
diff --git a/core/modules/filter/src/Element/ProcessedText.php b/core/modules/filter/src/Element/ProcessedText.php
index 750a6fc..2f92b22 100644
--- a/core/modules/filter/src/Element/ProcessedText.php
+++ b/core/modules/filter/src/Element/ProcessedText.php
@@ -8,13 +8,13 @@
 namespace Drupal\filter\Element;
 
 use Drupal\Component\Utility\NestedArray;
+use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Render\BubbleableMetadata;
 use Drupal\Core\Render\Element\RenderElement;
 use Drupal\Core\Render\Renderer;
 use Drupal\filter\Entity\FilterFormat;
 use Drupal\filter\Plugin\FilterInterface;
-use Drupal\filter\Render\FilteredString;
 
 /**
  * Provides a processed text render element.
@@ -124,7 +124,7 @@ public static function preRenderText($element) {
     // safe, but it has been passed through the filter system and checked with
     // a text format, so it must be printed as is. (See the note about security
     // in the method documentation above.)
-    $element['#markup'] = FilteredString::create($text);
+    $element['#markup'] = SafeMarkup::set($text);
 
     // Set the updated bubbleable rendering metadata and the text format's
     // cache tag.
diff --git a/core/modules/filter/src/Plugin/Filter/FilterCaption.php b/core/modules/filter/src/Plugin/Filter/FilterCaption.php
index 14f3873..ed241d8 100644
--- a/core/modules/filter/src/Plugin/Filter/FilterCaption.php
+++ b/core/modules/filter/src/Plugin/Filter/FilterCaption.php
@@ -13,7 +13,6 @@
 use Drupal\Component\Utility\Xss;
 use Drupal\filter\FilterProcessResult;
 use Drupal\filter\Plugin\FilterBase;
-use Drupal\filter\Render\FilteredString;
 
 /**
  * Provides a filter to caption elements.
@@ -60,10 +59,7 @@ public function process($text, $langcode) {
         $node->removeAttribute('class');
         $filter_caption = array(
           '#theme' => 'filter_caption',
-          // We pass the unsanitized string because this is a text format
-          // filter, and after filtering, we always assume the output is safe.
-          // @see \Drupal\filter\Element\ProcessedText::preRenderText()
-          '#node' => FilteredString::create($node->C14N()),
+          '#node' => SafeMarkup::set($node->C14N()),
           '#tag' => $node->tagName,
           '#caption' => $caption,
           '#classes' => $classes,
diff --git a/core/modules/filter/src/Plugin/Filter/FilterHtml.php b/core/modules/filter/src/Plugin/Filter/FilterHtml.php
index 67b572e..dd39623 100644
--- a/core/modules/filter/src/Plugin/Filter/FilterHtml.php
+++ b/core/modules/filter/src/Plugin/Filter/FilterHtml.php
@@ -20,7 +20,7 @@
  *   title = @Translation("Limit allowed HTML tags"),
  *   type = Drupal\filter\Plugin\FilterInterface::TYPE_HTML_RESTRICTOR,
  *   settings = {
- *     "allowed_html" = "<a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <h2> <h3> <h4> <h5> <h6>",
+ *     "allowed_html" = "<a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <h4> <h5> <h6>",
  *     "filter_html_help" = TRUE,
  *     "filter_html_nofollow" = FALSE
  *   },
diff --git a/core/modules/filter/src/Plugin/migrate/source/d6/FilterFormat.php b/core/modules/filter/src/Plugin/migrate/source/d6/FilterFormat.php
index b84444c..6d99e05 100644
--- a/core/modules/filter/src/Plugin/migrate/source/d6/FilterFormat.php
+++ b/core/modules/filter/src/Plugin/migrate/source/d6/FilterFormat.php
@@ -11,7 +11,7 @@
 use Drupal\migrate\Row;
 
 /**
- * Drupal 6 filter source from database.
+ * Drupal 6 role source from database.
  *
  * @MigrateSource(
  *   id = "d6_filter_format"
@@ -23,7 +23,10 @@ class FilterFormat extends DrupalSqlBase {
    * {@inheritdoc}
    */
   public function query() {
-    return $this->select('filter_formats', 'f')->fields('f');
+    $query = $this->select('filter_formats', 'f')
+      ->fields('f', array('format', 'name', 'roles', 'cache'))
+      ->orderBy('format');
+    return $query;
   }
 
   /**
@@ -32,10 +35,9 @@ public function query() {
   public function fields() {
     return array(
       'format' => $this->t('Format ID.'),
-      'name' => $this->t('The name of the format.'),
-      'cache' => $this->t('Whether the format is cacheable.'),
-      'roles' => $this->t('The role IDs which can use the format.'),
-      'filters' => $this->t('The filters configured for the format.'),
+      'name' => $this->t('The name of the filter format.'),
+      'roles' => $this->t('The user roles that can use the format.'),
+      'cache' => $this->t('Flag to indicate whether format is cacheable. (1 = cacheable, 0 = not cacheable).'),
     );
   }
 
@@ -48,7 +50,8 @@ public function prepareRow(Row $row) {
     $row->setSourceProperty('roles', array_values(array_filter(explode(',', $roles))));
     $format = $row->getSourceProperty('format');
     // Find filters for this row.
-    $results = $this->select('filters', 'f')
+    $results = $this->database
+      ->select('filters', 'f', array('fetch' => \PDO::FETCH_ASSOC))
       ->fields('f', array('module', 'delta', 'weight'))
       ->condition('format', $format)
       ->execute();
diff --git a/core/modules/filter/src/Plugin/migrate/source/d7/FilterFormat.php b/core/modules/filter/src/Plugin/migrate/source/d7/FilterFormat.php
deleted file mode 100755
index 06f4c6d..0000000
--- a/core/modules/filter/src/Plugin/migrate/source/d7/FilterFormat.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\filter\Plugin\migrate\source\d7\FilterFormat.
- */
-
-namespace Drupal\filter\Plugin\migrate\source\d7;
-
-use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
-use Drupal\migrate\Row;
-
-/**
- * Drupal 7 filter source from database.
- *
- * @MigrateSource(
- *   id = "d7_filter_format"
- * )
- */
-class FilterFormat extends DrupalSqlBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function query() {
-    return $this->select('filter_format', 'f')->fields('f');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function fields() {
-    return array(
-      'format' => $this->t('Format ID.'),
-      'name' => $this->t('The name of the format.'),
-      'cache' => $this->t('Whether the format is cacheable.'),
-      'status' => $this->t('The status of the format'),
-      'weight' => $this->t('The weight of the format'),
-      'filters' => $this->t('The filters configured for the format.'),
-    );
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function prepareRow(Row $row) {
-    // Find filters for this format.
-    $filters = $this->select('filter', 'f')
-      ->fields('f')
-      ->condition('format', $row->getSourceProperty('format'))
-      ->condition('status', 1)
-      ->execute()
-      ->fetchAllAssoc('name');
-
-    foreach ($filters as $id => $filter) {
-      $filters[$id]['settings'] = unserialize($filter['settings']);
-    }
-    $row->setSourceProperty('filters', $filters);
-
-    return parent::prepareRow($row);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getIds() {
-    $ids['format']['type'] = 'string';
-    return $ids;
-  }
-
-}
diff --git a/core/modules/filter/src/Render/FilteredString.php b/core/modules/filter/src/Render/FilteredString.php
deleted file mode 100644
index 2c694e6..0000000
--- a/core/modules/filter/src/Render/FilteredString.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\filter\Render\FilteredString.
- */
-
-namespace Drupal\filter\Render;
-
-use Drupal\Component\Utility\SafeStringInterface;
-use Drupal\Component\Utility\SafeStringTrait;
-
-/**
- * Defines an object that passes safe strings through the Filter system.
- *
- * This object should only be constructed with a known safe string. If there is
- * any risk that the string contains user-entered data that has not been
- * filtered first, it must not be used.
- *
- * @internal
- *   This object is marked as internal because it should only be used in the
- *   Filter module on strings that have already been been filtered and sanitized
- *   in \Drupal\filter\Plugin\FilterInterface.
- *
- * @see \Drupal\Core\Render\SafeString
- */
-final class FilteredString implements SafeStringInterface, \Countable {
-  use SafeStringTrait;
-}
diff --git a/core/modules/filter/src/Tests/Migrate/d7/MigrateFilterFormatTest.php b/core/modules/filter/src/Tests/Migrate/d7/MigrateFilterFormatTest.php
deleted file mode 100644
index ffb3ea5..0000000
--- a/core/modules/filter/src/Tests/Migrate/d7/MigrateFilterFormatTest.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\filter\Tests\Migrate\d7\MigrateFilterFormatTest.
- */
-
-namespace Drupal\filter\Tests\Migrate\d7;
-
-use Drupal\filter\Entity\FilterFormat;
-use Drupal\filter\FilterFormatInterface;
-use Drupal\migrate_drupal\Tests\d7\MigrateDrupal7TestBase;
-
-/**
- * Upgrade variables to filter.formats.*.yml.
- *
- * @group filter
- */
-class MigrateFilterFormatTest extends MigrateDrupal7TestBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  static $modules = array('filter');
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->loadDumps(['Filter.php', 'FilterFormat.php', 'Variable.php']);
-    $this->executeMigration('d7_filter_format');
-  }
-
-  /**
-   * Asserts various aspects of a filter format entity.
-   *
-   * @param string $id
-   *   The format ID.
-   * @param string $label
-   *   The expected label of the format.
-   * @param array $enabled_filters
-   *   The expected filters in the format, keyed by ID.
-   */
-  protected function assertEntity($id, $label, array $enabled_filters) {
-    /** @var \Drupal\filter\FilterFormatInterface $entity */
-    $entity = FilterFormat::load($id);
-    $this->assertTrue($entity instanceof FilterFormatInterface);
-    $this->assertIdentical($label, $entity->label());
-    // get('filters') will return enabled filters only, not all of them.
-    $this->assertIdentical($enabled_filters, array_keys($entity->get('filters')));
-  }
-
-  /**
-   * Tests the Drupal 7 filter format to Drupal 8 migration.
-   */
-  public function testFilterFormat() {
-    $this->assertEntity('custom_text_format', 'Custom Text format', ['filter_autop', 'filter_html']);
-    $this->assertEntity('filtered_html', 'Filtered HTML', ['filter_autop', 'filter_html', 'filter_htmlcorrector', 'filter_url']);
-    $this->assertEntity('full_html', 'Full HTML', ['filter_autop', 'filter_htmlcorrector', 'filter_url']);
-    $this->assertEntity('plain_text', 'Plain text', ['filter_autop', 'filter_html_escape', 'filter_url']);
-
-    // Ensure that filter-specific settings were migrated.
-    /** @var \Drupal\filter\FilterFormatInterface $format */
-    $format = FilterFormat::load('filtered_html');
-    $config = $format->filters('filter_html')->getConfiguration();
-    $this->assertIdentical('<div> <span> <ul> <li>', $config['settings']['allowed_html']);
-    $config = $format->filters('filter_url')->getConfiguration();
-    $this->assertIdentical(128, $config['settings']['filter_url_length']);
-  }
-
-}
diff --git a/core/modules/filter/tests/src/Unit/Plugin/migrate/source/d6/FilterFormatTest.php b/core/modules/filter/tests/src/Unit/Plugin/migrate/source/d6/FilterFormatTest.php
index 9d27e4e..ebdb776 100644
--- a/core/modules/filter/tests/src/Unit/Plugin/migrate/source/d6/FilterFormatTest.php
+++ b/core/modules/filter/tests/src/Unit/Plugin/migrate/source/d6/FilterFormatTest.php
@@ -10,14 +10,17 @@
 use Drupal\Tests\migrate\Unit\MigrateSqlSourceTestCase;
 
 /**
- * Tests d6_filter_format source plugin.
+ * Tests D6 filter_formats table source plugin.
  *
  * @group filter
  */
 class FilterFormatTest extends MigrateSqlSourceTestCase {
 
+  // The plugin system is not working during unit testing so the source plugin
+  // class needs to be manually specified.
   const PLUGIN_CLASS = 'Drupal\filter\Plugin\migrate\source\d6\FilterFormat';
 
+  // The fake Migration configuration entity.
   protected $migrationConfiguration = array(
     'id' => 'test',
     'highWaterProperty' => array('field' => 'test'),
diff --git a/core/modules/filter/tests/src/Unit/Plugin/migrate/source/d7/FilterFormatTest.php b/core/modules/filter/tests/src/Unit/Plugin/migrate/source/d7/FilterFormatTest.php
deleted file mode 100644
index 06d8d6b..0000000
--- a/core/modules/filter/tests/src/Unit/Plugin/migrate/source/d7/FilterFormatTest.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Tests\filter\Unit\Plugin\migrate\source\d7\FilterFormatTest.
- */
-
-namespace Drupal\Tests\filter\Unit\Plugin\migrate\source\d7;
-
-use Drupal\Tests\migrate\Unit\MigrateSqlSourceTestCase;
-
-/**
- * Tests d7_filter_format source plugin.
- *
- * @group filter
- */
-class FilterFormatTest extends MigrateSqlSourceTestCase {
-
-  const PLUGIN_CLASS = 'Drupal\filter\Plugin\migrate\source\d7\FilterFormat';
-
-  protected $migrationConfiguration = array(
-    'id' => 'test',
-    'source' => array(
-      'plugin' => 'd6_filter_formats',
-    ),
-  );
-
-  protected $expectedResults = array(
-    array(
-      'format' => 'custom_text_format',
-      'name' => 'Custom Text format',
-      'cache' => 1,
-      'status' => 1,
-      'weight' => 0,
-      'filters' => array(
-        'filter_autop' => array(
-          'module' => 'filter',
-          'name' => 'filter_autop',
-          'weight' => 0,
-          'status' => 1,
-          'settings' => array(),
-        ),
-        'filter_html' => array(
-          'module' => 'filter',
-          'name' => 'filter_html',
-          'weight' => 1,
-          'status' => 1,
-          'settings' => array(),
-        ),
-      ),
-    ),
-    array(
-      'format' => 'full_html',
-      'name' => 'Full HTML',
-      'cache' => 1,
-      'status' => 1,
-      'weight' => 1,
-      'filters' => array(
-        'filter_url' => array(
-          'module' => 'filter',
-          'name' => 'filter_url',
-          'weight' => 0,
-          'status' => 1,
-          'settings' => array(),
-        ),
-      ),
-    ),
-  );
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    foreach ($this->expectedResults as $row) {
-      foreach ($row['filters'] as $filter) {
-        $filter['format'] = $row['format'];
-        $filter['settings'] = serialize($filter['settings']);
-        $this->databaseContents['filter'][] = $filter;
-      }
-      unset($row['filters']);
-      $this->databaseContents['filter_format'][] = $row;
-    }
-    parent::setUp();
-  }
-
-}
diff --git a/core/modules/forum/src/Breadcrumb/ForumBreadcrumbBuilderBase.php b/core/modules/forum/src/Breadcrumb/ForumBreadcrumbBuilderBase.php
index f5fa2a8..f595ee8 100644
--- a/core/modules/forum/src/Breadcrumb/ForumBreadcrumbBuilderBase.php
+++ b/core/modules/forum/src/Breadcrumb/ForumBreadcrumbBuilderBase.php
@@ -8,7 +8,6 @@
 namespace Drupal\forum\Breadcrumb;
 
 use Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface;
-use Drupal\Core\Breadcrumb\Breadcrumb;
 use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Link;
@@ -66,18 +65,14 @@ public function __construct(EntityManagerInterface $entity_manager, ConfigFactor
    * {@inheritdoc}
    */
   public function build(RouteMatchInterface $route_match) {
-    $breadcrumb = new Breadcrumb();
-    $breadcrumb->setCacheContexts(['route']);
-
-    $links[] = Link::createFromRoute($this->t('Home'), '<front>');
+    $breadcrumb[] = Link::createFromRoute($this->t('Home'), '<front>');
 
     $vocabulary = $this->entityManager
       ->getStorage('taxonomy_vocabulary')
       ->load($this->config->get('vocabulary'));
-    $breadcrumb->addCacheableDependency($vocabulary);
-    $links[] = Link::createFromRoute($vocabulary->label(), 'forum.index');
+    $breadcrumb[] = Link::createFromRoute($vocabulary->label(), 'forum.index');
 
-    return $breadcrumb->setLinks($links);
+    return $breadcrumb;
   }
 
 }
diff --git a/core/modules/forum/src/Breadcrumb/ForumListingBreadcrumbBuilder.php b/core/modules/forum/src/Breadcrumb/ForumListingBreadcrumbBuilder.php
index 494af46..9d63772 100644
--- a/core/modules/forum/src/Breadcrumb/ForumListingBreadcrumbBuilder.php
+++ b/core/modules/forum/src/Breadcrumb/ForumListingBreadcrumbBuilder.php
@@ -27,26 +27,19 @@ public function applies(RouteMatchInterface $route_match) {
    */
   public function build(RouteMatchInterface $route_match) {
     $breadcrumb = parent::build($route_match);
-    $breadcrumb->addCacheContexts(['route']);
 
     // Add all parent forums to breadcrumbs.
-    /** @var \Drupal\Taxonomy\TermInterface $term */
-    $term = $route_match->getParameter('taxonomy_term');
-    $term_id = $term->id();
-    $breadcrumb->addCacheableDependency($term);
-
+    $term_id = $route_match->getParameter('taxonomy_term')->id();
     $parents = $this->forumManager->getParents($term_id);
     if ($parents) {
       foreach (array_reverse($parents) as $parent) {
         if ($parent->id() != $term_id) {
-          $breadcrumb->addCacheableDependency($parent);
-          $breadcrumb->addLink(Link::createFromRoute($parent->label(), 'forum.page', [
+          $breadcrumb[] = Link::createFromRoute($parent->label(), 'forum.page', array(
             'taxonomy_term' => $parent->id(),
-          ]));
+          ));
         }
       }
     }
-
     return $breadcrumb;
   }
 
diff --git a/core/modules/forum/src/Breadcrumb/ForumNodeBreadcrumbBuilder.php b/core/modules/forum/src/Breadcrumb/ForumNodeBreadcrumbBuilder.php
index 5d6e592..090f0ea 100644
--- a/core/modules/forum/src/Breadcrumb/ForumNodeBreadcrumbBuilder.php
+++ b/core/modules/forum/src/Breadcrumb/ForumNodeBreadcrumbBuilder.php
@@ -29,21 +29,18 @@ public function applies(RouteMatchInterface $route_match) {
    */
   public function build(RouteMatchInterface $route_match) {
     $breadcrumb = parent::build($route_match);
-    $breadcrumb->addCacheContexts(['route']);
 
     $parents = $this->forumManager->getParents($route_match->getParameter('node')->forum_tid);
     if ($parents) {
       $parents = array_reverse($parents);
       foreach ($parents as $parent) {
-        $breadcrumb->addCacheableDependency($parent);
-        $breadcrumb->addLink(Link::createFromRoute($parent->label(), 'forum.page',
+        $breadcrumb[] = Link::createFromRoute($parent->label(), 'forum.page',
           array(
             'taxonomy_term' => $parent->id(),
           )
-        ));
+        );
       }
     }
-
     return $breadcrumb;
   }
 
diff --git a/core/modules/forum/tests/src/Unit/Breadcrumb/ForumBreadcrumbBuilderBaseTest.php b/core/modules/forum/tests/src/Unit/Breadcrumb/ForumBreadcrumbBuilderBaseTest.php
index f690e03..da7ff11 100644
--- a/core/modules/forum/tests/src/Unit/Breadcrumb/ForumBreadcrumbBuilderBaseTest.php
+++ b/core/modules/forum/tests/src/Unit/Breadcrumb/ForumBreadcrumbBuilderBaseTest.php
@@ -7,10 +7,8 @@
 
 namespace Drupal\Tests\forum\Unit\Breadcrumb;
 
-use Drupal\Core\Cache\Cache;
 use Drupal\Core\Link;
 use Drupal\Tests\UnitTestCase;
-use Symfony\Component\DependencyInjection\Container;
 
 /**
  * @coversDefaultClass \Drupal\forum\Breadcrumb\ForumBreadcrumbBuilderBase
@@ -19,22 +17,6 @@
 class ForumBreadcrumbBuilderBaseTest extends UnitTestCase {
 
   /**
-   * {@inheritdoc}
-   */
-  public function setUp() {
-    parent::setUp();
-
-    $cache_contexts_manager = $this->getMockBuilder('Drupal\Core\Cache\Context\CacheContextsManager')
-      ->disableOriginalConstructor()
-      ->getMock();
-    $cache_contexts_manager->expects($this->any())
-      ->method('validate_tokens');
-    $container = new Container();
-    $container->set('cache_contexts_manager', $cache_contexts_manager);
-    \Drupal::setContainer($container);
-  }
-
-  /**
    * Tests ForumBreadcrumbBuilderBase::__construct().
    *
    * @covers ::__construct
@@ -92,18 +74,16 @@ public function testBuild() {
       ->disableOriginalConstructor()
       ->getMock();
 
-    $prophecy = $this->prophesize('Drupal\taxonomy\VocabularyInterface');
-    $prophecy->label()->willReturn('Fora_is_the_plural_of_forum');
-    $prophecy->id()->willReturn(5);
-    $prophecy->getCacheTags()->willReturn(['taxonomy_vocabulary:5']);
-    $prophecy->getCacheContexts()->willReturn([]);
-    $prophecy->getCacheMaxAge()->willReturn(Cache::PERMANENT);
+    $vocab_item = $this->getMock('Drupal\taxonomy\VocabularyInterface');
+    $vocab_item->expects($this->any())
+      ->method('label')
+      ->will($this->returnValue('Fora_is_the_plural_of_forum'));
 
     $vocab_storage = $this->getMock('Drupal\Core\Entity\EntityStorageInterface');
     $vocab_storage->expects($this->any())
       ->method('load')
       ->will($this->returnValueMap(array(
-        array('forums', $prophecy->reveal()),
+        array('forums', $vocab_item),
       )));
 
     $entity_manager = $this->getMockBuilder('Drupal\Core\Entity\EntityManagerInterface')
@@ -148,11 +128,7 @@ public function testBuild() {
     );
 
     // And finally, the test.
-    $breadcrumb = $breadcrumb_builder->build($route_match);
-    $this->assertEquals($expected, $breadcrumb->getLinks());
-    $this->assertEquals(['route'], $breadcrumb->getCacheContexts());
-    $this->assertEquals(['taxonomy_vocabulary:5'], $breadcrumb->getCacheTags());
-    $this->assertEquals(Cache::PERMANENT, $breadcrumb->getCacheMaxAge());
+    $this->assertEquals($expected, $breadcrumb_builder->build($route_match));
   }
 
 }
diff --git a/core/modules/forum/tests/src/Unit/Breadcrumb/ForumListingBreadcrumbBuilderTest.php b/core/modules/forum/tests/src/Unit/Breadcrumb/ForumListingBreadcrumbBuilderTest.php
index 0d201ed..95c670f 100644
--- a/core/modules/forum/tests/src/Unit/Breadcrumb/ForumListingBreadcrumbBuilderTest.php
+++ b/core/modules/forum/tests/src/Unit/Breadcrumb/ForumListingBreadcrumbBuilderTest.php
@@ -7,11 +7,9 @@
 
 namespace Drupal\Tests\forum\Unit\Breadcrumb;
 
-use Drupal\Core\Cache\Cache;
 use Drupal\Core\Link;
 use Drupal\Tests\UnitTestCase;
 use Symfony\Cmf\Component\Routing\RouteObjectInterface;
-use Symfony\Component\DependencyInjection\Container;
 
 /**
  * @coversDefaultClass \Drupal\forum\Breadcrumb\ForumListingBreadcrumbBuilder
@@ -20,22 +18,6 @@
 class ForumListingBreadcrumbBuilderTest extends UnitTestCase {
 
   /**
-   * {@inheritdoc}
-   */
-  public function setUp() {
-    parent::setUp();
-
-    $cache_contexts_manager = $this->getMockBuilder('Drupal\Core\Cache\Context\CacheContextsManager')
-      ->disableOriginalConstructor()
-      ->getMock();
-    $cache_contexts_manager->expects($this->any())
-      ->method('validate_tokens');
-    $container = new Container();
-    $container->set('cache_contexts_manager', $cache_contexts_manager);
-    \Drupal::setContainer($container);
-  }
-
-  /**
    * Tests ForumListingBreadcrumbBuilder::applies().
    *
    * @param bool $expected
@@ -123,21 +105,25 @@ public function providerTestApplies() {
    */
   public function testBuild() {
     // Build all our dependencies, backwards.
-    $prophecy = $this->prophesize('Drupal\taxonomy\Entity\Term');
-    $prophecy->label()->willReturn('Something');
-    $prophecy->id()->willReturn(1);
-    $prophecy->getCacheTags()->willReturn(['taxonomy_term:1']);
-    $prophecy->getCacheContexts()->willReturn([]);
-    $prophecy->getCacheMaxAge()->willReturn(Cache::PERMANENT);
-    $term1 = $prophecy->reveal();
-
-    $prophecy = $this->prophesize('Drupal\taxonomy\Entity\Term');
-    $prophecy->label()->willReturn('Something else');
-    $prophecy->id()->willReturn(2);
-    $prophecy->getCacheTags()->willReturn(['taxonomy_term:2']);
-    $prophecy->getCacheContexts()->willReturn([]);
-    $prophecy->getCacheMaxAge()->willReturn(Cache::PERMANENT);
-    $term2 = $prophecy->reveal();
+    $term1 = $this->getMockBuilder('Drupal\taxonomy\Entity\Term')
+      ->disableOriginalConstructor()
+      ->getMock();
+    $term1->expects($this->any())
+      ->method('label')
+      ->will($this->returnValue('Something'));
+    $term1->expects($this->any())
+      ->method('id')
+      ->will($this->returnValue(1));
+
+    $term2 = $this->getMockBuilder('Drupal\taxonomy\Entity\Term')
+      ->disableOriginalConstructor()
+      ->getMock();
+    $term2->expects($this->any())
+      ->method('label')
+      ->will($this->returnValue('Something else'));
+    $term2->expects($this->any())
+      ->method('id')
+      ->will($this->returnValue(2));
 
     $forum_manager = $this->getMock('Drupal\forum\ForumManagerInterface');
     $forum_manager->expects($this->at(0))
@@ -148,17 +134,15 @@ public function testBuild() {
       ->will($this->returnValue(array($term1, $term2)));
 
     // The root forum.
-    $prophecy = $this->prophesize('Drupal\taxonomy\VocabularyInterface');
-    $prophecy->label()->willReturn('Fora_is_the_plural_of_forum');
-    $prophecy->id()->willReturn(5);
-    $prophecy->getCacheTags()->willReturn(['taxonomy_vocabulary:5']);
-    $prophecy->getCacheContexts()->willReturn([]);
-    $prophecy->getCacheMaxAge()->willReturn(Cache::PERMANENT);
+    $vocab_item = $this->getMock('Drupal\taxonomy\VocabularyInterface');
+    $vocab_item->expects($this->any())
+      ->method('label')
+      ->will($this->returnValue('Fora_is_the_plural_of_forum'));
     $vocab_storage = $this->getMock('Drupal\Core\Entity\EntityStorageInterface');
     $vocab_storage->expects($this->any())
       ->method('load')
       ->will($this->returnValueMap(array(
-        array('forums', $prophecy->reveal()),
+        array('forums', $vocab_item),
       )));
 
     $entity_manager = $this->getMockBuilder('Drupal\Core\Entity\EntityManagerInterface')
@@ -192,13 +176,13 @@ public function testBuild() {
     $breadcrumb_builder->setStringTranslation($translation_manager);
 
     // The forum listing we need a breadcrumb back from.
-    $prophecy = $this->prophesize('Drupal\taxonomy\Entity\Term');
-    $prophecy->label()->willReturn('You_should_not_see_this');
-    $prophecy->id()->willReturn(23);
-    $prophecy->getCacheTags()->willReturn(['taxonomy_term:23']);
-    $prophecy->getCacheContexts()->willReturn([]);
-    $prophecy->getCacheMaxAge()->willReturn(Cache::PERMANENT);
-    $forum_listing = $prophecy->reveal();
+    $forum_listing = $this->getMockBuilder('Drupal\taxonomy\Entity\Term')
+      ->disableOriginalConstructor()
+      ->getMock();
+    $forum_listing->tid = 23;
+    $forum_listing->expects($this->any())
+      ->method('label')
+      ->will($this->returnValue('You_should_not_see_this'));
 
     // Our data set.
     $route_match = $this->getMock('Drupal\Core\Routing\RouteMatchInterface');
@@ -213,11 +197,7 @@ public function testBuild() {
       Link::createFromRoute('Fora_is_the_plural_of_forum', 'forum.index'),
       Link::createFromRoute('Something', 'forum.page', array('taxonomy_term' => 1)),
     );
-    $breadcrumb = $breadcrumb_builder->build($route_match);
-    $this->assertEquals($expected1, $breadcrumb->getLinks());
-    $this->assertEquals(['route'], $breadcrumb->getCacheContexts());
-    $this->assertEquals(['taxonomy_term:1', 'taxonomy_term:23', 'taxonomy_vocabulary:5'], $breadcrumb->getCacheTags());
-    $this->assertEquals(Cache::PERMANENT, $breadcrumb->getCacheMaxAge());
+    $this->assertEquals($expected1, $breadcrumb_builder->build($route_match));
 
     // Second test.
     $expected2 = array(
@@ -226,12 +206,7 @@ public function testBuild() {
       Link::createFromRoute('Something else', 'forum.page', array('taxonomy_term' => 2)),
       Link::createFromRoute('Something', 'forum.page', array('taxonomy_term' => 1)),
     );
-    $breadcrumb = $breadcrumb_builder->build($route_match);
-    $this->assertEquals($expected2, $breadcrumb->getLinks());
-    $this->assertEquals(['route'], $breadcrumb->getCacheContexts());
-    $this->assertEquals(['taxonomy_term:1', 'taxonomy_term:2', 'taxonomy_term:23', 'taxonomy_vocabulary:5'], $breadcrumb->getCacheTags());
-    $this->assertEquals(Cache::PERMANENT, $breadcrumb->getCacheMaxAge());
-
+    $this->assertEquals($expected2, $breadcrumb_builder->build($route_match));
   }
 
 }
diff --git a/core/modules/forum/tests/src/Unit/Breadcrumb/ForumNodeBreadcrumbBuilderTest.php b/core/modules/forum/tests/src/Unit/Breadcrumb/ForumNodeBreadcrumbBuilderTest.php
index 76851fd..ec5dec0 100644
--- a/core/modules/forum/tests/src/Unit/Breadcrumb/ForumNodeBreadcrumbBuilderTest.php
+++ b/core/modules/forum/tests/src/Unit/Breadcrumb/ForumNodeBreadcrumbBuilderTest.php
@@ -7,10 +7,9 @@
 
 namespace Drupal\Tests\forum\Unit\Breadcrumb;
 
-use Drupal\Core\Cache\Cache;
 use Drupal\Core\Link;
 use Drupal\Tests\UnitTestCase;
-use Symfony\Component\DependencyInjection\Container;
+use Symfony\Cmf\Component\Routing\RouteObjectInterface;
 
 /**
  * @coversDefaultClass \Drupal\forum\Breadcrumb\ForumNodeBreadcrumbBuilder
@@ -19,22 +18,6 @@
 class ForumNodeBreadcrumbBuilderTest extends UnitTestCase {
 
   /**
-   * {@inheritdoc}
-   */
-  public function setUp() {
-    parent::setUp();
-
-    $cache_contexts_manager = $this->getMockBuilder('Drupal\Core\Cache\Context\CacheContextsManager')
-      ->disableOriginalConstructor()
-      ->getMock();
-    $cache_contexts_manager->expects($this->any())
-      ->method('validate_tokens');
-    $container = new Container();
-    $container->set('cache_contexts_manager', $cache_contexts_manager);
-    \Drupal::setContainer($container);
-  }
-
-  /**
    * Tests ForumNodeBreadcrumbBuilder::applies().
    *
    * @param bool $expected
@@ -129,21 +112,25 @@ public function providerTestApplies() {
    */
   public function testBuild() {
     // Build all our dependencies, backwards.
-    $prophecy = $this->prophesize('Drupal\taxonomy\Entity\Term');
-    $prophecy->label()->willReturn('Something');
-    $prophecy->id()->willReturn(1);
-    $prophecy->getCacheTags()->willReturn(['taxonomy_term:1']);
-    $prophecy->getCacheContexts()->willReturn([]);
-    $prophecy->getCacheMaxAge()->willReturn(Cache::PERMANENT);
-    $term1 = $prophecy->reveal();
-
-    $prophecy = $this->prophesize('Drupal\taxonomy\Entity\Term');
-    $prophecy->label()->willReturn('Something else');
-    $prophecy->id()->willReturn(2);
-    $prophecy->getCacheTags()->willReturn(['taxonomy_term:2']);
-    $prophecy->getCacheContexts()->willReturn([]);
-    $prophecy->getCacheMaxAge()->willReturn(Cache::PERMANENT);
-    $term2 = $prophecy->reveal();
+    $term1 = $this->getMockBuilder('Drupal\Core\Entity\EntityInterface')
+      ->disableOriginalConstructor()
+      ->getMock();
+    $term1->expects($this->any())
+      ->method('label')
+      ->will($this->returnValue('Something'));
+    $term1->expects($this->any())
+      ->method('id')
+      ->will($this->returnValue(1));
+
+    $term2 = $this->getMockBuilder('Drupal\Core\Entity\EntityInterface')
+      ->disableOriginalConstructor()
+      ->getMock();
+    $term2->expects($this->any())
+      ->method('label')
+      ->will($this->returnValue('Something else'));
+    $term2->expects($this->any())
+      ->method('id')
+      ->will($this->returnValue(2));
 
     $forum_manager = $this->getMockBuilder('Drupal\forum\ForumManagerInterface')
       ->disableOriginalConstructor()
@@ -155,17 +142,15 @@ public function testBuild() {
       ->method('getParents')
       ->will($this->returnValue(array($term1, $term2)));
 
-    $prophecy = $this->prophesize('Drupal\taxonomy\VocabularyInterface');
-    $prophecy->label()->willReturn('Forums');
-    $prophecy->id()->willReturn(5);
-    $prophecy->getCacheTags()->willReturn(['taxonomy_vocabulary:5']);
-    $prophecy->getCacheContexts()->willReturn([]);
-    $prophecy->getCacheMaxAge()->willReturn(Cache::PERMANENT);
+    $vocab_item = $this->getMock('Drupal\taxonomy\VocabularyInterface');
+    $vocab_item->expects($this->any())
+      ->method('label')
+      ->will($this->returnValue('Forums'));
     $vocab_storage = $this->getMock('Drupal\Core\Entity\EntityStorageInterface');
     $vocab_storage->expects($this->any())
       ->method('load')
       ->will($this->returnValueMap(array(
-        array('forums', $prophecy->reveal()),
+        array('forums', $vocab_item),
       )));
 
     $entity_manager = $this->getMockBuilder('Drupal\Core\Entity\EntityManagerInterface')
@@ -218,11 +203,7 @@ public function testBuild() {
       Link::createFromRoute('Forums', 'forum.index'),
       Link::createFromRoute('Something', 'forum.page', array('taxonomy_term' => 1)),
     );
-    $breadcrumb = $breadcrumb_builder->build($route_match);
-    $this->assertEquals($expected1, $breadcrumb->getLinks());
-    $this->assertEquals(['route'], $breadcrumb->getCacheContexts());
-    $this->assertEquals(['taxonomy_term:1', 'taxonomy_vocabulary:5'], $breadcrumb->getCacheTags());
-    $this->assertEquals(Cache::PERMANENT, $breadcrumb->getCacheMaxAge());
+    $this->assertEquals($expected1, $breadcrumb_builder->build($route_match));
 
     // Second test.
     $expected2 = array(
@@ -231,11 +212,7 @@ public function testBuild() {
       Link::createFromRoute('Something else', 'forum.page', array('taxonomy_term' => 2)),
       Link::createFromRoute('Something', 'forum.page', array('taxonomy_term' => 1)),
     );
-    $breadcrumb = $breadcrumb_builder->build($route_match);
-    $this->assertEquals($expected2, $breadcrumb->getLinks());
-    $this->assertEquals(['route'], $breadcrumb->getCacheContexts());
-    $this->assertEquals(['taxonomy_term:1', 'taxonomy_term:2', 'taxonomy_vocabulary:5'], $breadcrumb->getCacheTags());
-    $this->assertEquals(Cache::PERMANENT, $breadcrumb->getCacheMaxAge());
+    $this->assertEquals($expected2, $breadcrumb_builder->build($route_match));
   }
 
 }
diff --git a/core/modules/language/src/Entity/ContentLanguageSettings.php b/core/modules/language/src/Entity/ContentLanguageSettings.php
index 7504998..da69686 100644
--- a/core/modules/language/src/Entity/ContentLanguageSettings.php
+++ b/core/modules/language/src/Entity/ContentLanguageSettings.php
@@ -194,12 +194,15 @@ public static function loadByEntityTypeBundle($entity_type_id, $bundle) {
    */
   public function calculateDependencies() {
     parent::calculateDependencies();
-
-    // Create dependency on the bundle.
-    $entity_type = \Drupal::entityManager()->getDefinition($this->target_entity_type_id);
-    $bundle_config_dependency = $entity_type->getBundleConfigDependency($this->target_bundle);
-    $this->addDependency($bundle_config_dependency['type'], $bundle_config_dependency['name']);
-
+    $bundle_entity_type_id = $this->entityManager()->getDefinition($this->target_entity_type_id)->getBundleEntityType();
+    if ($bundle_entity_type_id != 'bundle') {
+      // If the target entity type uses entities to manage its bundles then
+      // depend on the bundle entity.
+      if (!$bundle_entity = $this->entityManager()->getStorage($bundle_entity_type_id)->load($this->target_bundle)) {
+        throw new \LogicException("Missing bundle entity, entity type $bundle_entity_type_id, entity id {$this->target_bundle}.");
+      }
+      $this->addDependency('config', $bundle_entity->getConfigDependencyName());
+    }
     return $this->dependencies;
   }
 
diff --git a/core/modules/language/tests/src/Unit/ContentLanguageSettingsUnitTest.php b/core/modules/language/tests/src/Unit/ContentLanguageSettingsUnitTest.php
index 04ab81b..920edea 100644
--- a/core/modules/language/tests/src/Unit/ContentLanguageSettingsUnitTest.php
+++ b/core/modules/language/tests/src/Unit/ContentLanguageSettingsUnitTest.php
@@ -88,10 +88,26 @@ protected function setUp() {
    */
   public function testCalculateDependencies() {
     // Mock the interfaces necessary to create a dependency on a bundle entity.
+    $bundle_entity = $this->getMock('Drupal\Core\Config\Entity\ConfigEntityInterface');
+    $bundle_entity->expects($this->any())
+      ->method('getConfigDependencyName')
+      ->will($this->returnValue('test.test_entity_type.id'));
+
+    $storage = $this->getMock('\Drupal\Core\Config\Entity\ConfigEntityStorageInterface');
+    $storage->expects($this->any())
+      ->method('load')
+      ->with('test_bundle')
+      ->will($this->returnValue($bundle_entity));
+
+    $this->entityManager->expects($this->any())
+      ->method('getStorage')
+      ->with('bundle_entity_type')
+      ->will($this->returnValue($storage));
+
     $target_entity_type = $this->getMock('\Drupal\Core\Entity\EntityTypeInterface');
     $target_entity_type->expects($this->any())
-      ->method('getBundleConfigDependency')
-      ->will($this->returnValue(array('type' => 'config', 'name' => 'test.test_entity_type.id')));
+      ->method('getBundleEntityType')
+      ->will($this->returnValue('bundle_entity_type'));
 
     $this->entityManager->expects($this->any())
       ->method('getDefinition')
diff --git a/core/modules/locale/src/Tests/LocaleConfigTranslationTest.php b/core/modules/locale/src/Tests/LocaleConfigTranslationTest.php
index 588e779..39fcccd 100644
--- a/core/modules/locale/src/Tests/LocaleConfigTranslationTest.php
+++ b/core/modules/locale/src/Tests/LocaleConfigTranslationTest.php
@@ -117,7 +117,7 @@ public function testConfigTranslation() {
 
     // Formatting the date 8 / 27 / 1985 @ 13:37 EST with pattern D should
     // display "Tue".
-    $formatted_date = format_date(494015820, $type = 'medium', NULL, 'America/New_York', $this->langcode);
+    $formatted_date = format_date(494015820, $type = 'medium', NULL, NULL, $this->langcode);
     $this->assertEqual($formatted_date, 'Tue', 'Got the right formatted date using the date format translation pattern.');
 
     // Assert strings from image module config are not available.
diff --git a/core/modules/menu_ui/menu_ui.module b/core/modules/menu_ui/menu_ui.module
index 9baf1e7..f26dade 100644
--- a/core/modules/menu_ui/menu_ui.module
+++ b/core/modules/menu_ui/menu_ui.module
@@ -8,7 +8,6 @@
  * used for navigation.
  */
 
-use Drupal\Core\Breadcrumb\Breadcrumb;
 use Drupal\Core\Cache\CacheableMetadata;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Block\BlockPluginInterface;
@@ -487,14 +486,14 @@ function menu_ui_preprocess_block(&$variables) {
 /**
  * Implements hook_system_breadcrumb_alter().
  */
-function menu_ui_system_breadcrumb_alter(Breadcrumb &$breadcrumb, RouteMatchInterface $route_match, array $context) {
+function menu_ui_system_breadcrumb_alter(array &$breadcrumb, RouteMatchInterface $route_match, array $context) {
   // Custom breadcrumb behavior for editing menu links, we append a link to
   // the menu in which the link is found.
   if (($route_match->getRouteName() == 'menu_ui.link_edit') && $menu_link = $route_match->getParameter('menu_link_plugin')) {
     if (($menu_link instanceof MenuLinkInterface)) {
       // Add a link to the menu admin screen.
       $menu = Menu::load($menu_link->getMenuName());
-      $breadcrumb->addLink(Link::createFromRoute($menu->label(), 'entity.menu.edit_form', ['menu' => $menu->id()]));
+      $breadcrumb[] = Link::createFromRoute($menu->label(), 'entity.menu.edit_form', array('menu' => $menu->id()));
     }
   }
 }
diff --git a/core/modules/migrate_drupal/src/Tests/Table/d7/Filter.php b/core/modules/migrate_drupal/src/Tests/Table/d7/Filter.php
index e6de77e..29fa2ba 100644
--- a/core/modules/migrate_drupal/src/Tests/Table/d7/Filter.php
+++ b/core/modules/migrate_drupal/src/Tests/Table/d7/Filter.php
@@ -119,7 +119,7 @@ public function load() {
       'name' => 'filter_html',
       'weight' => '1',
       'status' => '1',
-      'settings' => 'a:3:{s:12:"allowed_html";s:22:"<div> <span> <ul> <li>";s:16:"filter_html_help";i:1;s:20:"filter_html_nofollow";i:0;}',
+      'settings' => 'a:3:{s:12:"allowed_html";s:74:"<a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>";s:16:"filter_html_help";i:1;s:20:"filter_html_nofollow";i:0;}',
     ))->values(array(
       'format' => 'filtered_html',
       'module' => 'filter',
@@ -140,7 +140,7 @@ public function load() {
       'name' => 'filter_url',
       'weight' => '0',
       'status' => '1',
-      'settings' => 'a:1:{s:17:"filter_url_length";s:3:"128";}',
+      'settings' => 'a:1:{s:17:"filter_url_length";i:72;}',
     ))->values(array(
       'format' => 'full_html',
       'module' => 'filter',
@@ -215,4 +215,4 @@ public function load() {
   }
 
 }
-#d47ad1c59579daa0db744321977c5e4b
+#26810a92f8dcd637a67b91e218441083
diff --git a/core/modules/migrate_drupal/src/Tests/Table/d7/Variable.php b/core/modules/migrate_drupal/src/Tests/Table/d7/Variable.php
index 64e34d1..cef570e 100644
--- a/core/modules/migrate_drupal/src/Tests/Table/d7/Variable.php
+++ b/core/modules/migrate_drupal/src/Tests/Table/d7/Variable.php
@@ -287,18 +287,12 @@ public function load() {
       'name' => 'search_active_modules',
       'value' => 'a:2:{s:4:"node";s:4:"node";s:4:"user";s:4:"user";}',
     ))->values(array(
-      'name' => 'search_and_or_limit',
-      'value' => 'i:7;',
-    ))->values(array(
       'name' => 'search_cron_limit',
       'value' => 's:3:"100";',
     ))->values(array(
       'name' => 'search_default_module',
       'value' => 's:4:"node";',
     ))->values(array(
-      'name' => 'search_tag_weights',
-      'value' => 'a:12:{s:2:"h1";i:25;s:2:"h2";i:18;s:2:"h3";i:15;s:2:"h4";i:12;s:2:"h5";i:9;s:2:"h6";i:6;s:1:"u";i:3;s:1:"b";i:3;s:1:"i";i:3;s:6:"strong";i:3;s:2:"em";i:3;s:1:"a";i:10;}',
-    ))->values(array(
       'name' => 'simpletest_clear_results',
       'value' => 'b:1;',
     ))->values(array(
@@ -476,4 +470,4 @@ public function load() {
   }
 
 }
-#a571d354b6652603b017f9647ce0975e
+#e0f7be890a222531c707941d0fedf479
diff --git a/core/modules/node/config/optional/views.view.content_recent.yml b/core/modules/node/config/optional/views.view.content_recent.yml
index 56a425c..bae3463 100644
--- a/core/modules/node/config/optional/views.view.content_recent.yml
+++ b/core/modules/node/config/optional/views.view.content_recent.yml
@@ -60,6 +60,15 @@ display:
           class: ''
       row:
         type: fields
+        options:
+          default_field_elements: true
+          inline:
+            title: title
+            name: name
+            edit_node: edit_node
+            delete_node: delete_node
+          separator: ' '
+          hide_empty: false
       fields:
         title:
           id: title
@@ -97,10 +106,64 @@ display:
           settings:
             link_to_entity: true
           plugin_id: field
-        changed:
-          id: changed
-          table: node_field_data
-          field: changed
+          entity_type: node
+          entity_field: title
+        name:
+          id: name
+          table: users_field_data
+          field: name
+          relationship: uid
+          group_type: group
+          admin_label: ''
+          label: 'by '
+          exclude: false
+          alter:
+            alter_text: false
+            text: ''
+            make_link: false
+            path: ''
+            absolute: false
+            external: false
+            replace_spaces: false
+            path_case: none
+            trim_whitespace: false
+            alt: ''
+            rel: ''
+            link_class: ''
+            prefix: ''
+            suffix: ''
+            target: ''
+            nl2br: false
+            max_length: 0
+            word_boundary: true
+            ellipsis: true
+            more_link: false
+            more_link_text: ''
+            more_link_path: ''
+            strip_tags: false
+            trim: false
+            preserve_tags: ''
+            html: false
+          element_type: ''
+          element_class: byline
+          element_label_type: ''
+          element_label_class: ''
+          element_label_colon: false
+          element_wrapper_type: ''
+          element_wrapper_class: author
+          element_default_classes: true
+          empty: ''
+          hide_empty: false
+          empty_zero: false
+          hide_alter_empty: true
+          entity_type: user
+          entity_field: name
+          plugin_id: field
+          plugin_id: entity_link_edit
+        delete_node:
+          id: delete_node
+          table: node
+          field: delete_node
           relationship: none
           group_type: group
           admin_label: ''
@@ -145,22 +208,9 @@ display:
           hide_empty: false
           empty_zero: false
           hide_alter_empty: true
-          click_sort_column: value
-          type: timestamp_ago
-          settings: {  }
-          group_column: value
-          group_columns: {  }
-          group_rows: true
-          delta_limit: 0
-          delta_offset: 0
-          delta_reversed: false
-          delta_first_last: false
-          multi_type: separator
-          separator: ', '
-          field_api_classes: false
+          text: Delete
           entity_type: node
-          entity_field: changed
-          plugin_id: field
+          plugin_id: entity_link_delete
       filters:
         status_extra:
           id: status_extra
@@ -284,19 +334,11 @@ display:
           plugin_id: standard
       arguments: {  }
       display_extenders: {  }
-      use_more: false
-      use_more_always: false
+      use_more: true
+      use_more_always: true
       use_more_text: More
-      link_url: ''
-      link_display: '0'
-    cache_metadata:
-      contexts:
-        - 'languages:language_content'
-        - 'languages:language_interface'
-        - user
-        - 'user.node_grants:view'
-        - user.permissions
-      cacheable: false
+      link_url: admin/content
+      link_display: custom_url
   block_1:
     display_plugin: block
     id: block_1
@@ -304,11 +346,3 @@ display:
     position: 1
     display_options:
       display_extenders: {  }
-    cache_metadata:
-      contexts:
-        - 'languages:language_content'
-        - 'languages:language_interface'
-        - user
-        - 'user.node_grants:view'
-        - user.permissions
-      cacheable: false
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index 7c371d6..062686a 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -725,6 +725,21 @@ function node_user_predelete($account) {
 }
 
 /**
+ * Title callback: Displays the node's title.
+ *
+ * @param \Drupal\node\NodeInterface $node
+ *   The node entity.
+ *
+ * @return
+ *   An unsanitized string that is the title of the node.
+ *
+ * @see node_menu()
+ */
+function node_page_title(NodeInterface $node) {
+  return $node->label();
+}
+
+/**
  * Finds the most recently changed nodes that are available to the current user.
  *
  * @param $number
diff --git a/core/modules/node/src/Tests/NodeBlockFunctionalTest.php b/core/modules/node/src/Tests/NodeBlockFunctionalTest.php
index 06b83cd..0bcfbc1 100644
--- a/core/modules/node/src/Tests/NodeBlockFunctionalTest.php
+++ b/core/modules/node/src/Tests/NodeBlockFunctionalTest.php
@@ -100,11 +100,17 @@ public function testRecentNodeBlock() {
     $this->assertText($node3->label(), 'Node found in block.');
 
     // Check to make sure nodes are in the right order.
-    $this->assertTrue($this->xpath('//div[@id="block-test-block"]//div[@class="item-list"]/ul/li[1]/div/span/a[text() = "' . $node3->label() . '"]'), 'Nodes were ordered correctly in block.');
+    $this->assertTrue($this->xpath('//div[@id="block-test-block"]//div[@class="item-list"]/ul/li[1]/span[1]/span/a[text() = "' . $node3->label() . '"]'), 'Nodes were ordered correctly in block.');
 
     $this->drupalLogout();
     $this->drupalLogin($this->adminUser);
 
+    // Verify that the More link is shown and leads to the admin content page.
+    $this->drupalGet('');
+    $this->clickLink('More');
+    $this->assertResponse('200');
+    $this->assertUrl('admin/content');
+
     // Set the number of recent nodes to show to 10.
     $block->getPlugin()->setConfigurationValue('items_per_page', 10);
     $block->save();
diff --git a/core/modules/quickedit/tests/src/Unit/Access/EditEntityFieldAccessCheckTest.php b/core/modules/quickedit/tests/src/Unit/Access/EditEntityFieldAccessCheckTest.php
index 26a1c86..6f352ae 100644
--- a/core/modules/quickedit/tests/src/Unit/Access/EditEntityFieldAccessCheckTest.php
+++ b/core/modules/quickedit/tests/src/Unit/Access/EditEntityFieldAccessCheckTest.php
@@ -8,10 +8,10 @@
 namespace Drupal\Tests\quickedit\Unit\Access;
 
 use Drupal\Core\Access\AccessResult;
-use Drupal\Core\Cache\Context\CacheContextsManager;
-use Drupal\Core\DependencyInjection\Container;
 use Drupal\quickedit\Access\EditEntityFieldAccessCheck;
 use Drupal\Tests\UnitTestCase;
+use Drupal\field\FieldStorageConfigInterface;
+use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Language\LanguageInterface;
 
 /**
@@ -33,11 +33,6 @@ class EditEntityFieldAccessCheckTest extends UnitTestCase {
    */
   protected function setUp() {
     $this->editAccessCheck = new EditEntityFieldAccessCheck();
-
-    $cache_contexts_manager = $this->prophesize(CacheContextsManager::class)->reveal();
-    $container = new Container();
-    $container->set('cache_contexts_manager', $cache_contexts_manager);
-    \Drupal::setContainer($container);
   }
 
   /**
@@ -46,11 +41,34 @@ protected function setUp() {
    * @see \Drupal\Tests\edit\Unit\quickedit\Access\EditEntityFieldAccessCheckTest::testAccess()
    */
   public function providerTestAccess() {
+    $editable_entity = $this->createMockEntity();
+    $editable_entity->expects($this->any())
+      ->method('access')
+      ->will($this->returnValue(AccessResult::allowed()->cachePerPermissions()));
+
+    $non_editable_entity = $this->createMockEntity();
+    $non_editable_entity->expects($this->any())
+      ->method('access')
+      ->will($this->returnValue(AccessResult::neutral()->cachePerPermissions()));
+
+    $field_storage_with_access = $this->getMockBuilder('Drupal\field\Entity\FieldStorageConfig')
+      ->disableOriginalConstructor()
+      ->getMock();
+    $field_storage_with_access->expects($this->any())
+      ->method('access')
+      ->will($this->returnValue(AccessResult::allowed()));
+    $field_storage_without_access = $this->getMockBuilder('Drupal\field\Entity\FieldStorageConfig')
+      ->disableOriginalConstructor()
+      ->getMock();
+    $field_storage_without_access->expects($this->any())
+      ->method('access')
+      ->will($this->returnValue(AccessResult::neutral()));
+
     $data = array();
-    $data[] = array(TRUE, TRUE, AccessResult::allowed());
-    $data[] = array(FALSE, TRUE, AccessResult::neutral());
-    $data[] = array(TRUE, FALSE, AccessResult::neutral());
-    $data[] = array(FALSE, FALSE, AccessResult::neutral());
+    $data[] = array($editable_entity, $field_storage_with_access, AccessResult::allowed()->cachePerPermissions());
+    $data[] = array($non_editable_entity, $field_storage_with_access, AccessResult::neutral()->cachePerPermissions());
+    $data[] = array($editable_entity, $field_storage_without_access, AccessResult::neutral()->cachePerPermissions());
+    $data[] = array($non_editable_entity, $field_storage_without_access, AccessResult::neutral()->cachePerPermissions());
 
     return $data;
   }
@@ -58,28 +76,16 @@ public function providerTestAccess() {
   /**
    * Tests the method for checking access to routes.
    *
-   * @param bool $entity_is_editable
-   *   Whether the subject entity is editable.
-   * @param bool $field_storage_is_accessible
-   *   Whether the user has access to the field storage entity.
-   * @param \Drupal\Core\Access\AccessResult $expected_result
+   * @param \Drupal\Core\Entity\EntityInterface $entity
+   *   A mocked entity.
+   * @param \Drupal\field\FieldStorageConfigInterface $field_storage
+   *   A mocked field storage.
+   * @param bool|null $expected_result
    *   The expected result of the access call.
    *
    * @dataProvider providerTestAccess
    */
-  public function testAccess($entity_is_editable, $field_storage_is_accessible, AccessResult $expected_result) {
-    $entity = $this->createMockEntity();
-    $entity->expects($this->any())
-      ->method('access')
-      ->willReturn(AccessResult::allowedIf($entity_is_editable)->cachePerPermissions());
-
-    $field_storage = $this->getMock('Drupal\field\FieldStorageConfigInterface');
-    $field_storage->expects($this->any())
-      ->method('access')
-      ->willReturn(AccessResult::allowedIf($field_storage_is_accessible));
-
-    $expected_result->cachePerPermissions();
-
+  public function testAccess(EntityInterface $entity, FieldStorageConfigInterface $field_storage = NULL, $expected_result) {
     $field_name = 'valid';
     $entity_with_field = clone $entity;
     $entity_with_field->expects($this->any())
diff --git a/core/modules/rdf/src/CommonDataConverter.php b/core/modules/rdf/src/CommonDataConverter.php
index ef63439..af95d37 100644
--- a/core/modules/rdf/src/CommonDataConverter.php
+++ b/core/modules/rdf/src/CommonDataConverter.php
@@ -34,7 +34,7 @@ public static function rawValue($data) {
    *   Returns the ISO 8601 timestamp.
    */
   public static function dateIso8601Value($data) {
-    return \Drupal::service('date.formatter')->format($data['value'], 'custom', 'c', 'UTC');
+    return date_iso8601($data['value']);
   }
 
 }
diff --git a/core/modules/rdf/src/Entity/RdfMapping.php b/core/modules/rdf/src/Entity/RdfMapping.php
index c260f14..0a32009 100644
--- a/core/modules/rdf/src/Entity/RdfMapping.php
+++ b/core/modules/rdf/src/Entity/RdfMapping.php
@@ -141,13 +141,15 @@ public function id() {
    */
   public function calculateDependencies() {
     parent::calculateDependencies();
-
-    // Create dependency on the bundle.
     $entity_type = \Drupal::entityManager()->getDefinition($this->targetEntityType);
     $this->addDependency('module', $entity_type->getProvider());
-    $bundle_config_dependency = $entity_type->getBundleConfigDependency($this->bundle);
-    $this->addDependency($bundle_config_dependency['type'], $bundle_config_dependency['name']);
-
+    $bundle_entity_type_id = $entity_type->getBundleEntityType();
+    if ($bundle_entity_type_id != 'bundle') {
+      // If the target entity type uses entities to manage its bundles then
+      // depend on the bundle entity.
+      $bundle_entity = \Drupal::entityManager()->getStorage($bundle_entity_type_id)->load($this->bundle);
+      $this->addDependency('config', $bundle_entity->getConfigDependencyName());
+    }
     return $this->dependencies;
   }
 
diff --git a/core/modules/rdf/src/Tests/CommentAttributesTest.php b/core/modules/rdf/src/Tests/CommentAttributesTest.php
index f7ad33a..e678de2 100644
--- a/core/modules/rdf/src/Tests/CommentAttributesTest.php
+++ b/core/modules/rdf/src/Tests/CommentAttributesTest.php
@@ -264,14 +264,14 @@ function _testBasicCommentRdfaMarkup($graph, CommentInterface $comment, $account
     // Comment date.
     $expected_value = array(
       'type' => 'literal',
-      'value' => format_date($comment->getCreatedTime(), 'custom', 'c', 'UTC'),
+      'value' => date('c', $comment->getCreatedTime()),
       'datatype' => 'http://www.w3.org/2001/XMLSchema#dateTime',
     );
     $this->assertTrue($graph->hasProperty($comment_uri, 'http://purl.org/dc/terms/date', $expected_value), 'Comment date found in RDF output (dc:date).');
     // Comment date.
     $expected_value = array(
       'type' => 'literal',
-      'value' => format_date($comment->getCreatedTime(), 'custom', 'c', 'UTC'),
+      'value' => date('c', $comment->getCreatedTime()),
       'datatype' => 'http://www.w3.org/2001/XMLSchema#dateTime',
     );
     $this->assertTrue($graph->hasProperty($comment_uri, 'http://purl.org/dc/terms/created', $expected_value), 'Comment date found in RDF output (dc:created).');
diff --git a/core/modules/rdf/src/Tests/StandardProfileTest.php b/core/modules/rdf/src/Tests/StandardProfileTest.php
index 5036c62..784bd80 100644
--- a/core/modules/rdf/src/Tests/StandardProfileTest.php
+++ b/core/modules/rdf/src/Tests/StandardProfileTest.php
@@ -356,7 +356,7 @@ protected function assertRdfaCommonNodeProperties($graph, NodeInterface $node, $
     // Created date.
     $expected_value = array(
       'type' => 'literal',
-      'value' => format_date($node->get('created')->value, 'custom', 'c', 'UTC'),
+      'value' => date_iso8601($node->get('created')->value),
       'lang' => 'en',
     );
     $this->assertTrue($graph->hasProperty($uri, 'http://schema.org/dateCreated', $expected_value), "$message_prefix created date was found (schema:dateCreated) in teaser.");
@@ -445,7 +445,7 @@ protected function assertRdfaNodeCommentProperties($graph) {
     // Comment created date.
     $expected_value = array(
       'type' => 'literal',
-      'value' => format_date($this->articleComment->get('created')->value, 'custom', 'c', 'UTC'),
+      'value' => date_iso8601($this->articleComment->get('created')->value),
       'lang' => 'en',
     );
     $this->assertTrue($graph->hasProperty($this->articleCommentUri, 'http://schema.org/dateCreated', $expected_value), 'Article comment created date was found (schema:dateCreated).');
diff --git a/core/modules/rdf/tests/src/Unit/RdfMappingConfigEntityUnitTest.php b/core/modules/rdf/tests/src/Unit/RdfMappingConfigEntityUnitTest.php
index 4901d9c..52f1616 100644
--- a/core/modules/rdf/tests/src/Unit/RdfMappingConfigEntityUnitTest.php
+++ b/core/modules/rdf/tests/src/Unit/RdfMappingConfigEntityUnitTest.php
@@ -80,7 +80,7 @@ public function testCalculateDependencies() {
     $values = array('targetEntityType' => $target_entity_type_id);
     $target_entity_type->expects($this->any())
       ->method('getBundleEntityType')
-      ->will($this->returnValue(NULL));
+      ->will($this->returnValue('bundle'));
 
     $this->entityManager->expects($this->at(0))
       ->method('getDefinition')
@@ -109,9 +109,16 @@ public function testCalculateDependenciesWithEntityBundle() {
     $bundle_id = $this->randomMachineName(10);
     $values = array('targetEntityType' => $target_entity_type_id , 'bundle' => $bundle_id);
 
+    $bundle_entity_type_id = $this->randomMachineName(17);
+    $bundle_entity = $this->getMock('\Drupal\Core\Config\Entity\ConfigEntityInterface');
+    $bundle_entity
+      ->expects($this->once())
+      ->method('getConfigDependencyName')
+      ->will($this->returnValue('test_module.type.' . $bundle_id));
+
     $target_entity_type->expects($this->any())
-      ->method('getBundleConfigDependency')
-      ->will($this->returnValue(array('type' => 'config', 'name' => 'test_module.type.' . $bundle_id)));
+                     ->method('getBundleEntityType')
+                     ->will($this->returnValue($bundle_entity_type_id));
 
     $this->entityManager->expects($this->at(0))
                         ->method('getDefinition')
@@ -122,6 +129,17 @@ public function testCalculateDependenciesWithEntityBundle() {
                         ->with($this->entityTypeId)
                         ->will($this->returnValue($this->entityType));
 
+    $storage = $this->getMock('Drupal\Core\Entity\EntityStorageInterface');
+    $storage->expects($this->once())
+      ->method('load')
+      ->with($bundle_id)
+      ->will($this->returnValue($bundle_entity));
+
+    $this->entityManager->expects($this->once())
+                        ->method('getStorage')
+                        ->with($bundle_entity_type_id)
+                        ->will($this->returnValue($storage));
+
     $entity = new RdfMapping($values, $this->entityTypeId);
     $dependencies = $entity->calculateDependencies();
     $this->assertContains('test_module.type.' . $bundle_id, $dependencies['config']);
diff --git a/core/modules/rest/src/Tests/CreateTest.php b/core/modules/rest/src/Tests/CreateTest.php
index 77f70be..31fbd88 100644
--- a/core/modules/rest/src/Tests/CreateTest.php
+++ b/core/modules/rest/src/Tests/CreateTest.php
@@ -7,13 +7,11 @@
 
 namespace Drupal\rest\Tests;
 
-use Drupal\comment\Tests\CommentTestTrait;
 use Drupal\Component\Serialization\Json;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\entity_test\Entity\EntityTest;
 use Drupal\node\Entity\Node;
 use Drupal\user\Entity\User;
-use Drupal\comment\Entity\Comment;
 
 /**
  * Tests the creation of resources.
@@ -22,13 +20,12 @@
  */
 class CreateTest extends RESTTestBase {
 
-  use CommentTestTrait;
   /**
    * Modules to install.
    *
    * @var array
    */
-  public static $modules = array('hal', 'rest', 'entity_test', 'comment');
+  public static $modules = array('hal', 'rest', 'entity_test');
 
   /**
    * The 'serializer' service.
@@ -39,7 +36,6 @@ class CreateTest extends RESTTestBase {
 
   protected function setUp() {
     parent::setUp();
-    $this->addDefaultCommentField('node', 'resttest');
     // Get the 'serializer' service.
     $this->serializer = $this->container->get('serializer');
   }
@@ -229,52 +225,6 @@ public function testCreateNode() {
   }
 
   /**
-   * Test comment creation.
-   */
-  protected function testCreateComment() {
-    $node = Node::create([
-      'type' => 'resttest',
-      'title' => 'some node',
-    ]);
-    $node->save();
-    $entity_type = 'comment';
-    // Enable the REST service for 'comment' entity type.
-    $this->enableService('entity:' . $entity_type, 'POST');
-    // Create two accounts that have the required permissions to create
-    // resources, The second one has administrative permissions.
-    $accounts = $this->createAccountPerEntity($entity_type);
-    $account = end($accounts);
-
-    $this->drupalLogin($account);
-    $entity_values = $this->entityValues($entity_type);
-    $entity_values['entity_id'] = $node->id();
-
-    $entity = Comment::create($entity_values);
-
-    // Changed field can never be added.
-    unset($entity->changed);
-
-    $serialized = $this->serializer->serialize($entity, $this->defaultFormat, ['account' => $account]);
-
-    // Create the entity over the REST API.
-    $this->assertCreateEntityOverRestApi($entity_type, $serialized);
-
-    // Get the new entity ID from the location header and try to read it from
-    // the database.
-    $this->assertReadEntityIdFromHeaderAndDb($entity_type, $entity, $entity_values);
-
-    // Try to send invalid data that cannot be correctly deserialized.
-    $this->assertCreateEntityInvalidData($entity_type);
-
-    // Try to send no data at all, which does not make sense on POST requests.
-    $this->assertCreateEntityNoData($entity_type);
-
-    // Try to send invalid data to trigger the entity validation constraints.
-    // Send a UUID that is too long.
-    $this->assertCreateEntityInvalidSerialized($entity, $entity_type);
-  }
-
-  /**
    * Tests several valid and invalid create requests for 'user' entity type.
    */
   public function testCreateUser() {
@@ -343,7 +293,6 @@ public function createAccountPerEntity($entity_type) {
     // Add administrative permissions for nodes and users.
     $permissions[] = 'administer nodes';
     $permissions[] = 'administer users';
-    $permissions[] = 'administer comments';
     // Create an administrative user.
     $accounts[] = $this->drupalCreateUser($permissions);
 
diff --git a/core/modules/rest/src/Tests/RESTTestBase.php b/core/modules/rest/src/Tests/RESTTestBase.php
index 8fac798..46003af 100644
--- a/core/modules/rest/src/Tests/RESTTestBase.php
+++ b/core/modules/rest/src/Tests/RESTTestBase.php
@@ -213,17 +213,6 @@ protected function entityValues($entity_type) {
         );
       case 'user':
         return array('name' => $this->randomMachineName());
-
-      case 'comment':
-        return [
-          'subject' => $this->randomMachineName(),
-          'entity_type' => 'node',
-          'comment_type' => 'comment',
-          'comment_body' => $this->randomString(),
-          'entity_id' => 'invalid',
-          'field_name' => 'comment',
-        ];
-
       default:
         return array();
     }
@@ -324,22 +313,6 @@ protected function entityPermissions($entity_type, $operation) {
             return array('delete any resttest content');
         }
 
-      case 'comment':
-        switch ($operation) {
-          case 'view':
-            return ['access comments'];
-
-          case 'create':
-            return ['post comments', 'skip comment approval'];
-
-          case 'update':
-            return ['edit own comments'];
-
-          case 'delete':
-            return ['administer comments'];
-        }
-        break;
-
       case 'user':
         switch ($operation) {
           case 'view':
diff --git a/core/modules/search/migration_templates/d7_search_settings.yml b/core/modules/search/migration_templates/d7_search_settings.yml
deleted file mode 100644
index 1da226c..0000000
--- a/core/modules/search/migration_templates/d7_search_settings.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-id: d7_search_settings
-label: Drupal 7 search configuration
-migration_tags:
-  - Drupal 7
-source:
-  plugin: variable
-  constants:
-    status: true
-  variables:
-    - minimum_word_size
-    - overlap_cjk
-    - search_cron_limit
-    - search_tag_weights
-    - search_and_or_limit
-process:
-  'index/minimum_word_size': minimum_word_size
-  'index/overlap_cjk': overlap_cjk
-  'index/cron_limit': search_cron_limit
-  'index/tag_weights': search_tag_weights
-  and_or_limit: search_and_or_limit
-  logging: 'constants/status'
-destination:
-  plugin: config
-  config_name: search.settings
diff --git a/core/modules/search/src/Tests/Migrate/d6/MigrateSearchSettingsTest.php b/core/modules/search/src/Tests/Migrate/d6/MigrateSearchConfigsTest.php
similarity index 88%
rename from core/modules/search/src/Tests/Migrate/d6/MigrateSearchSettingsTest.php
rename to core/modules/search/src/Tests/Migrate/d6/MigrateSearchConfigsTest.php
index 6b08fe5..4cb4298 100644
--- a/core/modules/search/src/Tests/Migrate/d6/MigrateSearchSettingsTest.php
+++ b/core/modules/search/src/Tests/Migrate/d6/MigrateSearchConfigsTest.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\search\Tests\Migrate\d6\MigrateSearchSettingsTest.
+ * Contains \Drupal\search\Tests\d6\Migrate\SearchConfigsTest.
  */
 
 namespace Drupal\search\Tests\Migrate\d6;
@@ -15,7 +15,7 @@
  *
  * @group search
  */
-class MigrateSearchSettingsTest extends MigrateDrupal6TestBase {
+class MigrateSearchConfigsTest extends MigrateDrupal6TestBase {
 
   use SchemaCheckTestTrait;
 
diff --git a/core/modules/search/src/Tests/Migrate/d7/MigrateSearchSettingsTest.php b/core/modules/search/src/Tests/Migrate/d7/MigrateSearchSettingsTest.php
deleted file mode 100644
index dc31d15..0000000
--- a/core/modules/search/src/Tests/Migrate/d7/MigrateSearchSettingsTest.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\search\Tests\Migrate\d7\MigrateSearchSettingsTest.
- */
-
-namespace Drupal\search\Tests\Migrate\d7;
-
-use Drupal\migrate_drupal\Tests\d7\MigrateDrupal7TestBase;
-
-/**
- * Tests migration of Search variables to configuration.
- *
- * @group search
- */
-class MigrateSearchSettingsTest extends MigrateDrupal7TestBase {
-
-  public static $modules = ['search'];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->loadDumps(['Variable.php']);
-    $this->executeMigration('d7_search_settings');
-  }
-
-  /**
-   * Tests the migration of Search's variables to configuration.
-   */
-  public function testSearchSettings() {
-    $config = $this->config('search.settings');
-    $this->assertIdentical(4, $config->get('index.minimum_word_size'));
-    $this->assertTrue($config->get('index.overlap_cjk'));
-    $this->assertIdentical(100, $config->get('index.cron_limit'));
-    $this->assertIdentical(7, $config->get('and_or_limit'));
-    $this->assertIdentical(25, $config->get('index.tag_weights.h1'));
-    $this->assertIdentical(18, $config->get('index.tag_weights.h2'));
-    $this->assertIdentical(15, $config->get('index.tag_weights.h3'));
-    $this->assertIdentical(12, $config->get('index.tag_weights.h4'));
-    $this->assertIdentical(9, $config->get('index.tag_weights.h5'));
-    $this->assertIdentical(6, $config->get('index.tag_weights.h6'));
-    $this->assertIdentical(3, $config->get('index.tag_weights.u'));
-    $this->assertIdentical(3, $config->get('index.tag_weights.b'));
-    $this->assertIdentical(3, $config->get('index.tag_weights.i'));
-    $this->assertIdentical(3, $config->get('index.tag_weights.strong'));
-    $this->assertIdentical(3, $config->get('index.tag_weights.em'));
-    $this->assertIdentical(10, $config->get('index.tag_weights.a'));
-    $this->assertTrue($config->get('logging'));
-  }
-
-}
diff --git a/core/modules/serialization/serialization.services.yml b/core/modules/serialization/serialization.services.yml
index 318a90c..4c9397a 100644
--- a/core/modules/serialization/serialization.services.yml
+++ b/core/modules/serialization/serialization.services.yml
@@ -30,10 +30,6 @@ services:
       arguments: ['Drupal\Core\Field\Plugin\Field\FieldType\PasswordItem']
       tags:
         - { name: normalizer, priority: 20 }
-  serializer.normalizer.safe_string:
-      class: Drupal\serialization\Normalizer\SafeStringNormalizer
-      tags:
-        - { name: normalizer }
   serializer.normalizer.typed_data:
     class: Drupal\serialization\Normalizer\TypedDataNormalizer
     tags:
diff --git a/core/modules/serialization/src/Normalizer/SafeStringNormalizer.php b/core/modules/serialization/src/Normalizer/SafeStringNormalizer.php
deleted file mode 100644
index 16b7fcd..0000000
--- a/core/modules/serialization/src/Normalizer/SafeStringNormalizer.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\serialization\Normalizer\SafeStringNormalizer.
- */
-
-namespace Drupal\serialization\Normalizer;
-
-/**
- * Normalizes SafeStringInterface objects into a string.
- */
-class SafeStringNormalizer extends NormalizerBase {
-
-  /**
-   * The interface or class that this Normalizer supports.
-   *
-   * @var array
-   */
-  protected $supportedInterfaceOrClass = array('Drupal\Component\Utility\SafeStringInterface');
-
-  /**
-   * {@inheritdoc}
-   */
-  public function normalize($object, $format = NULL, array $context = array()) {
-    return (string) $object;
-  }
-
-}
diff --git a/core/modules/simpletest/src/AssertContentTrait.php b/core/modules/simpletest/src/AssertContentTrait.php
index 402d471..b0efbe5 100644
--- a/core/modules/simpletest/src/AssertContentTrait.php
+++ b/core/modules/simpletest/src/AssertContentTrait.php
@@ -286,7 +286,7 @@ protected function getAllOptions(\SimpleXMLElement $element) {
    *   Link position counting from zero.
    * @param string $message
    *   (optional) A message to display with the assertion. Do not translate
-   *   messages: use strtr() to embed variables in the message text, not
+   *   messages: use format_string() to embed variables in the message text, not
    *   t(). If left blank, a default message will be displayed.
    * @param string $group
    *   (optional) The group this message is in, which is displayed in a column
@@ -299,7 +299,7 @@ protected function getAllOptions(\SimpleXMLElement $element) {
    */
   protected function assertLink($label, $index = 0, $message = '', $group = 'Other') {
     $links = $this->xpath('//a[normalize-space(text())=:label]', array(':label' => $label));
-    $message = ($message ? $message : strtr('Link with label %label found.', array('%label' => $label)));
+    $message = ($message ? $message : SafeMarkup::format('Link with label %label found.', array('%label' => $label)));
     return $this->assert(isset($links[$index]), $message, $group);
   }
 
@@ -378,30 +378,6 @@ protected function assertNoLinkByHref($href, $message = '', $group = 'Other') {
   }
 
   /**
-   * Passes if a link containing a given href is not found in the main region.
-   *
-   * @param string $href
-   *   The full or partial value of the 'href' attribute of the anchor tag.
-   * @param string $message
-   *   (optional) A message to display with the assertion. Do not translate
-   *   messages: use format_string() to embed variables in the message text, not
-   *   t(). If left blank, a default message will be displayed.
-   * @param string $group
-   *   (optional) The group this message is in, which is displayed in a column
-   *   in test output. Use 'Debug' to indicate this is debugging output. Do not
-   *   translate this string. Defaults to 'Other'; most tests do not override
-   *   this default.
-   *
-   * @return bool
-   *   TRUE if the assertion succeeded, FALSE otherwise.
-   */
-  protected function assertNoLinkByHrefInMainRegion($href, $message = '', $group = 'Other') {
-    $links = $this->xpath('//main//a[contains(@href, :href)]', array(':href' => $href));
-    $message = ($message ? $message : SafeMarkup::format('No link containing href %href found.', array('%href' => $href)));
-    return $this->assert(empty($links), $message, $group);
-  }
-
-  /**
    * Passes if the raw text IS found on the loaded page, fail otherwise.
    *
    * Raw text refers to the raw HTML that the page generated.
@@ -839,10 +815,7 @@ protected function assertThemeOutput($callback, array $variables = array(), $exp
     /** @var \Drupal\Core\Render\RendererInterface $renderer */
     $renderer = \Drupal::service('renderer');
 
-    // The string cast is necessary because theme functions return
-    // SafeStringInterface objects. This means we can assert that $expected
-    // matches the theme output without having to worry about 0 == ''.
-    $output = (string) $renderer->executeInRenderContext(new RenderContext(), function() use ($callback, $variables) {
+    $output = $renderer->executeInRenderContext(new RenderContext(), function() use ($callback, $variables) {
       return \Drupal::theme()->render($callback, $variables);
     });
     $this->verbose(
diff --git a/core/modules/simpletest/src/WebTestBase.php b/core/modules/simpletest/src/WebTestBase.php
index b4ebe73..30aa69e 100644
--- a/core/modules/simpletest/src/WebTestBase.php
+++ b/core/modules/simpletest/src/WebTestBase.php
@@ -831,15 +831,6 @@ protected function initConfig(ContainerInterface $container) {
       ->set('css.preprocess', FALSE)
       ->set('js.preprocess', FALSE)
       ->save();
-
-    // Set an explicit time zone to not rely on the system one, which may vary
-    // from setup to setup. The Australia/Sydney time zone is chosen so all
-    // tests are run using an edge case scenario (UTC+10 and DST). This choice
-    // is made to prevent time zone related regressions and reduce the
-    // fragility of the testing system in general.
-    $config->getEditable('system.date')
-      ->set('timezone.default', 'Australia/Sydney')
-      ->save();
   }
 
   /**
diff --git a/core/modules/system/src/Controller/DbUpdateController.php b/core/modules/system/src/Controller/DbUpdateController.php
index aa46654..c2e195e 100644
--- a/core/modules/system/src/Controller/DbUpdateController.php
+++ b/core/modules/system/src/Controller/DbUpdateController.php
@@ -160,13 +160,13 @@ public function handle($op, Request $request) {
     $severity = drupal_requirements_severity($requirements);
     if ($severity == REQUIREMENT_ERROR || ($severity == REQUIREMENT_WARNING && empty($_SESSION['update_ignore_warnings']))) {
       $regions['sidebar_first'] = $this->updateTasksList('requirements');
-      $output = $this->requirements($severity, $requirements, $request);
+      $output = $this->requirements($severity, $requirements);
     }
     else {
       switch ($op) {
         case 'selection':
           $regions['sidebar_first'] = $this->updateTasksList('selection');
-          $output = $this->selection($request);
+          $output = $this->selection();
           break;
 
         case 'run':
@@ -176,12 +176,12 @@ public function handle($op, Request $request) {
 
         case 'info':
           $regions['sidebar_first'] = $this->updateTasksList('info');
-          $output = $this->info($request);
+          $output = $this->info();
           break;
 
         case 'results':
           $regions['sidebar_first'] = $this->updateTasksList('results');
-          $output = $this->results($request);
+          $output = $this->results();
           break;
 
         // Regular batch ops : defer to batch processing API.
@@ -204,13 +204,10 @@ public function handle($op, Request $request) {
   /**
    * Returns the info database update page.
    *
-   * @param \Symfony\Component\HttpFoundation\Request $request
-   *   The current request.
-   *
    * @return array
    *   A render array.
    */
-  protected function info(Request $request) {
+  protected function info() {
     // Change query-strings on css/js files to enforce reload for all users.
     _drupal_flush_css_js();
     // Flush the cache of all data for the update status module.
@@ -236,11 +233,12 @@ protected function info(Request $request) {
       '#markup' => '<p>' . $this->t('When you have performed the steps above, you may proceed.') . '</p>',
     );
 
+    $url = new Url('system.db_update', array('op' => 'selection'));
     $build['link'] = array(
       '#type' => 'link',
       '#title' => $this->t('Continue'),
       '#attributes' => array('class' => array('button', 'button--primary')),
-      '#url' => Url::fromUri($request->getUriForPath('/selection')),
+      '#url' => $url,
     );
     return $build;
   }
@@ -248,13 +246,10 @@ protected function info(Request $request) {
   /**
    * Renders a list of available database updates.
    *
-   * @param \Symfony\Component\HttpFoundation\Request $request
-   *   The current request.
-   *
    * @return array
    *   A render array.
    */
-  protected function selection(Request $request) {
+  protected function selection() {
     // Make sure there is no stale theme registry.
     $this->cache->deleteAll();
 
@@ -347,7 +342,7 @@ protected function selection(Request $request) {
       unset($build);
       $build['links'] = array(
         '#theme' => 'links',
-        '#links' => $this->helpfulLinks($request),
+        '#links' => $this->helpfulLinks(),
       );
 
       // No updates to run, so caches won't get flushed later.  Clear them now.
@@ -369,9 +364,7 @@ protected function selection(Request $request) {
       else {
         $build['start']['#title'] = $this->formatPlural($count, '1 pending update', '@count pending updates');
       }
-      // @todo Simplify with https://www.drupal.org/node/2548095
-      $base_url = str_replace('/update.php', '', $request->getBaseUrl());
-      $url = (new Url('system.db_update', array('op' => 'run')))->setOption('base_url', $base_url);
+      $url = new Url('system.db_update', array('op' => 'run'));
       $build['link'] = array(
         '#type' => 'link',
         '#title' => $this->t('Apply pending updates'),
@@ -387,21 +380,15 @@ protected function selection(Request $request) {
   /**
    * Displays results of the update script with any accompanying errors.
    *
-   * @param \Symfony\Component\HttpFoundation\Request $request
-   *   The current request.
-   *
    * @return array
    *   A render array.
    */
-  protected function results(Request $request) {
-    // @todo Simplify with https://www.drupal.org/node/2548095
-    $base_url = str_replace('/update.php', '', $request->getBaseUrl());
-
+  protected function results() {
     // Report end result.
     $dblog_exists = $this->moduleHandler->moduleExists('dblog');
     if ($dblog_exists && $this->account->hasPermission('access site reports')) {
       $log_message = $this->t('All errors have been <a href="@url">logged</a>.', array(
-        '@url' => Url::fromRoute('dblog.overview')->setOption('base_url', $base_url)->toString(TRUE)->getGeneratedUrl(),
+        '@url' => Url::fromRoute('dblog.overview')->toString(TRUE)->getGeneratedUrl(),
       ));
     }
     else {
@@ -409,7 +396,7 @@ protected function results(Request $request) {
     }
 
     if (!empty($_SESSION['update_success'])) {
-      $message = '<p>' . $this->t('Updates were attempted. If you see no failures below, you may proceed happily back to your <a href="@url">site</a>. Otherwise, you may need to update your database manually.', array('@url' => Url::fromRoute('<front>')->setOption('base_url', $base_url)->toString(TRUE)->getGeneratedUrl())) . ' ' . $log_message . '</p>';
+      $message = '<p>' . $this->t('Updates were attempted. If you see no failures below, you may proceed happily back to your <a href="@url">site</a>. Otherwise, you may need to update your database manually.', array('@url' => Url::fromRoute('<front>')->toString(TRUE)->getGeneratedUrl())) . ' ' . $log_message . '</p>';
     }
     else {
       $last = reset($_SESSION['updates_remaining']);
@@ -433,7 +420,7 @@ protected function results(Request $request) {
     );
     $build['links'] = array(
       '#theme' => 'links',
-      '#links' => $this->helpfulLinks($request),
+      '#links' => $this->helpfulLinks(),
     );
 
     // Output a list of info messages.
@@ -505,15 +492,12 @@ protected function results(Request $request) {
   /**
    * Renders a list of requirement errors or warnings.
    *
-   * @param \Symfony\Component\HttpFoundation\Request $request
-   *   The current request.
-   *
    * @return array
    *   A render array.
    */
-  public function requirements($severity, array $requirements, Request $request) {
+  public function requirements($severity, array $requirements) {
     $options = $severity == REQUIREMENT_WARNING ? array('continue' => 1) : array();
-    $try_again_url = Url::fromUri($request->getUriForPath(''))->setOptions(['query' => $options])->toString(TRUE)->getGeneratedUrl();
+    $try_again_url = Url::fromRoute('system.db_update', $options)->toString(TRUE)->getGeneratedUrl();
 
     $build['status_report'] = array(
       '#theme' => 'status_report',
@@ -619,7 +603,7 @@ protected function triggerBatch(Request $request) {
     );
     batch_set($batch);
 
-    return batch_process(Url::fromUri($request->getUriForPath('/results')), Url::fromUri($request->getUriForPath('/start')));
+    return batch_process('update.php/results', Url::fromRoute('system.db_update', array('op' => 'start')));
   }
 
   /**
@@ -656,23 +640,18 @@ public static function batchFinished($success, $results, $operations) {
   /**
    * Provides links to the homepage and administration pages.
    *
-   * @param \Symfony\Component\HttpFoundation\Request $request
-   *   The current request.
-   *
    * @return array
    *   An array of links.
    */
-  protected function helpfulLinks(Request $request) {
-    // @todo Simplify with https://www.drupal.org/node/2548095
-    $base_url = str_replace('/update.php', '', $request->getBaseUrl());
+  protected function helpfulLinks() {
     $links['front'] = array(
       'title' => $this->t('Front page'),
-      'url' => Url::fromRoute('<front>')->setOption('base_url', $base_url),
+      'url' => Url::fromRoute('<front>'),
     );
     if ($this->account->hasPermission('access administration pages')) {
       $links['admin-pages'] = array(
         'title' => $this->t('Administration pages'),
-        'url' => Url::fromRoute('system.admin')->setOption('base_url', $base_url),
+        'url' => Url::fromRoute('system.admin'),
       );
     }
     return $links;
diff --git a/core/modules/system/src/PathBasedBreadcrumbBuilder.php b/core/modules/system/src/PathBasedBreadcrumbBuilder.php
index 4acbee2..c6e51af 100644
--- a/core/modules/system/src/PathBasedBreadcrumbBuilder.php
+++ b/core/modules/system/src/PathBasedBreadcrumbBuilder.php
@@ -9,7 +9,6 @@
 
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Access\AccessManagerInterface;
-use Drupal\Core\Breadcrumb\Breadcrumb;
 use Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface;
 use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\Core\Controller\TitleResolverInterface;
@@ -126,7 +125,6 @@ public function applies(RouteMatchInterface $route_match) {
    * {@inheritdoc}
    */
   public function build(RouteMatchInterface $route_match) {
-    $breadcrumb = new Breadcrumb();
     $links = array();
 
     // General path-based breadcrumbs. Use the actual request path, prior to
@@ -141,21 +139,17 @@ public function build(RouteMatchInterface $route_match) {
     // /user is just a redirect, so skip it.
     // @todo Find a better way to deal with /user.
     $exclude['/user'] = TRUE;
-    // Because this breadcrumb builder is entirely path-based, vary by the
-    // 'url.path' cache context.
-    $breadcrumb->setCacheContexts(['url.path']);
     while (count($path_elements) > 1) {
       array_pop($path_elements);
       // Copy the path elements for up-casting.
       $route_request = $this->getRequestForPath('/' . implode('/', $path_elements), $exclude);
       if ($route_request) {
         $route_match = RouteMatch::createFromRequest($route_request);
-        $access = $this->accessManager->check($route_match, $this->currentUser, NULL, TRUE);
-        // The set of breadcrumb links depends on the access result, so merge
-        // the access result's cacheability metadata.
-        $breadcrumb = $breadcrumb->addCacheableDependency($access);
-        if ($access->isAllowed()) {
+        $access = $this->accessManager->check($route_match, $this->currentUser);
+        if ($access) {
           $title = $this->titleResolver->getTitle($route_request, $route_match->getRouteObject());
+        }
+        if ($access) {
           if (!isset($title)) {
             // Fallback to using the raw path component as the title if the
             // route is missing a _title or _title_callback attribute.
@@ -171,8 +165,7 @@ public function build(RouteMatchInterface $route_match) {
       // Add the Home link, except for the front page.
       $links[] = Link::createFromRoute($this->t('Home'), '<front>');
     }
-
-    return $breadcrumb->setLinks(array_reverse($links));
+    return array_reverse($links);
   }
 
   /**
diff --git a/core/modules/system/src/Plugin/Block/SystemBreadcrumbBlock.php b/core/modules/system/src/Plugin/Block/SystemBreadcrumbBlock.php
index 40da616..c7629f0 100644
--- a/core/modules/system/src/Plugin/Block/SystemBreadcrumbBlock.php
+++ b/core/modules/system/src/Plugin/Block/SystemBreadcrumbBlock.php
@@ -77,13 +77,20 @@ public function build() {
     $breadcrumb = $this->breadcrumbManager->build($this->routeMatch);
     if (!empty($breadcrumb)) {
       // $breadcrumb is expected to be an array of rendered breadcrumb links.
-      $build = [
+      return array(
         '#theme' => 'breadcrumb',
-        '#links' => $breadcrumb->getLinks(),
-      ];
-      $breadcrumb->applyTo($build);
-      return $build;
+        '#links' => $breadcrumb,
+      );
     }
   }
 
+  /**
+   * {@inheritdoc}
+   *
+   * @todo Make cacheable in https://www.drupal.org/node/2483183
+   */
+  public function getCacheMaxAge() {
+    return 0;
+  }
+
 }
diff --git a/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php b/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php
index 8f10556..5c3aacf 100644
--- a/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php
+++ b/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php
@@ -509,12 +509,13 @@ public function testReferencedEntity() {
     }
 
 
-    if ($bundle_entity_type_id = $this->entity->getEntityType()->getBundleEntityType()) {
+    $bundle_entity_type = $this->entity->getEntityType()->getBundleEntityType();
+    if ($bundle_entity_type !== 'bundle') {
       // Verify that after modifying the corresponding bundle entity, there is a
       // cache miss for both the referencing entity, and the listing of
       // referencing entities, but not for any other routes.
       $this->pass("Test modification of referenced entity's bundle entity.", 'Debug');
-      $bundle_entity = entity_load($bundle_entity_type_id, $this->entity->bundle());
+      $bundle_entity = entity_load($bundle_entity_type, $this->entity->bundle());
       $bundle_entity->save();
       $this->verifyPageCache($referencing_entity_url, 'MISS');
       $this->verifyPageCache($listing_url, 'MISS');
diff --git a/core/modules/system/src/Tests/Entity/EntityWithUriCacheTagsTestBase.php b/core/modules/system/src/Tests/Entity/EntityWithUriCacheTagsTestBase.php
index fb76cf4..d5aa9dc 100644
--- a/core/modules/system/src/Tests/Entity/EntityWithUriCacheTagsTestBase.php
+++ b/core/modules/system/src/Tests/Entity/EntityWithUriCacheTagsTestBase.php
@@ -81,11 +81,12 @@ public function testEntityUri() {
     $this->verifyPageCache($entity_url, 'HIT');
 
 
-    if ($bundle_entity_type_id = $this->entity->getEntityType()->getBundleEntityType()) {
+    $bundle_entity_type = $this->entity->getEntityType()->getBundleEntityType();
+    if ($bundle_entity_type !== 'bundle') {
       // Verify that after modifying the corresponding bundle entity, there is a
       // cache miss.
       $this->pass("Test modification of entity's bundle entity.", 'Debug');
-      $bundle_entity = entity_load($bundle_entity_type_id, $this->entity->bundle());
+      $bundle_entity = entity_load($bundle_entity_type, $this->entity->bundle());
       $bundle_entity->save();
       $this->verifyPageCache($entity_url, 'MISS');
 
diff --git a/core/modules/system/src/Tests/HttpKernel/HeadersResponseCodeRenderTest.php b/core/modules/system/src/Tests/HttpKernel/HeadersResponseCodeRenderTest.php
deleted file mode 100644
index 7a81a0d..0000000
--- a/core/modules/system/src/Tests/HttpKernel/HeadersResponseCodeRenderTest.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\system\Tests\HttpKernel\HeadersResponseCodeRenderTest.
- */
-
-namespace Drupal\system\Tests\HttpKernel;
-
-use Drupal\simpletest\WebTestBase;
-
-/**
- * Tests rendering headers and response codes.
- *
- * @group Routing
- */
-class HeadersResponseCodeRenderTest extends WebTestBase {
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = array('httpkernel_test');
-
-  /**
-   * Tests the rendering of an array-based header and response code.
-   */
-  public function testHeaderResponseCode() {
-    $this->drupalGet('/httpkernel-test/teapot');
-    $this->assertResponse(418);
-    $this->assertHeader('X-Test-Teapot', 'Teapot Mode Active');
-    $this->assertHeader('X-Test-Teapot-Replace', 'Teapot replaced');
-    $this->assertHeader('X-Test-Teapot-No-Replace', 'This value is not replaced,This one is added');
-  }
-
-}
diff --git a/core/modules/system/src/Tests/Routing/RouteProviderTest.php b/core/modules/system/src/Tests/Routing/RouteProviderTest.php
index c1d24ff..e8411d6 100644
--- a/core/modules/system/src/Tests/Routing/RouteProviderTest.php
+++ b/core/modules/system/src/Tests/Routing/RouteProviderTest.php
@@ -324,46 +324,7 @@ function testOutlinePathMatchDefaultsCollision2() {
       $this->assertEqual(array('narf', 'poink'), array_keys($routes_array), 'Ensure the fitness was taken into account.');
       $this->assertNotNull($routes->get('narf'), 'The first matching route was found.');
       $this->assertNotNull($routes->get('poink'), 'The second matching route was found.');
-      $this->assertNull($routes->get('eep'), 'Non-matching route was not found.');
-    }
-    catch (ResourceNotFoundException $e) {
-      $this->fail('No matching route found with default argument value.');
-    }
-  }
-
-  /**
-   * Confirms that we can find multiple routes that match the request equally.
-   */
-  function testOutlinePathMatchDefaultsCollision3() {
-    $connection = Database::getConnection();
-    $provider = new RouteProvider($connection, $this->state, $this->currentPath, $this->cache, $this->pathProcessor, $this->cacheTagsInvalidator, 'test_routes');
-
-    $this->fixtures->createTables($connection);
-
-    $collection = new RouteCollection();
-    $collection->add('poink', new Route('/some/{value}/path'));
-    // Add a second route matching the same path pattern.
-    $collection->add('poink2', new Route('/some/{object}/path'));
-    $collection->add('narf', new Route('/some/here/path'));
-    $collection->add('eep', new Route('/something/completely/different'));
-
-    $dumper = new MatcherDumper($connection, $this->state, 'test_routes');
-    $dumper->addRoutes($collection);
-    $dumper->dump();
-
-    $path = '/some/over-there/path';
-
-    $request = Request::create($path, 'GET');
-
-    try {
-      $routes = $provider->getRouteCollectionForRequest($request);
-      $routes_array = $routes->all();
-
-      $this->assertEqual(count($routes), 2, 'The correct number of routes was found.');
-      $this->assertEqual(array('poink', 'poink2'), array_keys($routes_array), 'Ensure the fitness and name were taken into account in the sort.');
-      $this->assertNotNull($routes->get('poink'), 'The first matching route was found.');
-      $this->assertNotNull($routes->get('poink2'), 'The second matching route was found.');
-      $this->assertNull($routes->get('eep'), 'Non-matching route was not found.');
+      $this->assertNull($routes->get('eep'), 'Noin-matching route was not found.');
     }
     catch (ResourceNotFoundException $e) {
       $this->fail('No matching route found with default argument value.');
diff --git a/core/modules/system/src/Tests/Routing/RouterTest.php b/core/modules/system/src/Tests/Routing/RouterTest.php
index 9f6e8c8..207049f 100644
--- a/core/modules/system/src/Tests/Routing/RouterTest.php
+++ b/core/modules/system/src/Tests/Routing/RouterTest.php
@@ -197,15 +197,6 @@ public function testRouterMatching() {
     $this->drupalGet('router_test/test14/2');
     $this->assertResponse(200);
     $this->assertText('Route not matched.');
-
-    // Check that very long paths don't cause an error.
-    $path = 'router_test/test1';
-    $suffix = '/d/r/u/p/a/l';
-    for ($i = 0; $i < 10; $i++) {
-      $path .= $suffix;
-      $this->drupalGet($path);
-      $this->assertResponse(404);
-    }
   }
 
   /**
diff --git a/core/modules/system/src/Tests/Theme/ThemeTest.php b/core/modules/system/src/Tests/Theme/ThemeTest.php
index a0095b8..c2c0e0b 100644
--- a/core/modules/system/src/Tests/Theme/ThemeTest.php
+++ b/core/modules/system/src/Tests/Theme/ThemeTest.php
@@ -13,7 +13,6 @@
 use Symfony\Cmf\Component\Routing\RouteObjectInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
-use Drupal\Component\Utility\SafeStringInterface;
 
 /**
  * Tests low-level theme functions.
@@ -60,19 +59,12 @@ function testAttributeMerging() {
    * Test that _theme() returns expected data types.
    */
   function testThemeDataTypes() {
-    // theme_test_false is an implemented theme hook so \Drupal::theme() service
-    // should return a string or an object that implements SafeStringInterface,
-    // even though the theme function itself can return anything.
-    $foos = array('null' => NULL, 'false' => FALSE, 'integer' => 1, 'string' => 'foo', 'empty_string' => '');
+    // theme_test_false is an implemented theme hook so \Drupal::theme() service should
+    // return a string, even though the theme function itself can return anything.
+    $foos = array('null' => NULL, 'false' => FALSE, 'integer' => 1, 'string' => 'foo');
     foreach ($foos as $type => $example) {
       $output = \Drupal::theme()->render('theme_test_foo', array('foo' => $example));
-      $this->assertTrue($output instanceof SafeStringInterface || is_string($output), format_string('\Drupal::theme() returns an object that implements SafeStringInterface or a string for data type !type.', array('!type' => $type)));
-      if ($output instanceof SafeStringInterface) {
-        $this->assertIdentical((string) $example, $output->__toString());
-      }
-      elseif (is_string($output)) {
-        $this->assertIdentical($output, '', 'A string will be return when the theme returns an empty string.');
-      }
+      $this->assertTrue(is_string($output), format_string('\Drupal::theme() returns a string for data type !type.', array('!type' => $type)));
     }
 
     // suggestionnotimplemented is not an implemented theme hook so \Drupal::theme() service
diff --git a/core/modules/system/src/Tests/Update/RouterIndexOptimizationTest.php b/core/modules/system/src/Tests/Update/RouterIndexOptimizationTest.php
deleted file mode 100644
index b206011..0000000
--- a/core/modules/system/src/Tests/Update/RouterIndexOptimizationTest.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-/**
- * @file
- * Contains \Drupal\system\Tests\Update\RouterIndexOptimizationTest.
- */
-
-namespace Drupal\system\Tests\Update;
-
-/**
- * Tests system_update_8002().
- *
- * @group Update
- */
-class RouterIndexOptimizationTest extends UpdatePathTestBase {
-  /**
-   * {@inheritdoc}
-   */
-  public function setUp() {
-    $this->databaseDumpFiles = [
-      __DIR__ . '/../../../tests/fixtures/update/drupal-8.bare.standard.php.gz',
-    ];
-    parent::setUp();
-  }
-
-  /**
-   * Ensures that the system_update_8002() runs as expected.
-   */
-  public function testUpdate() {
-    $this->runUpdates();
-    $database = $this->container->get('database');
-    // Removed index.
-    $this->assertFalse($database->schema()->indexExists(
-      'router', 'pattern_outline_fit'
-    ));
-    // Added index.
-    $this->assertTrue($database->schema()->indexExists(
-      'router', 'pattern_outline_parts'
-    ));
-  }
-
-}
diff --git a/core/modules/system/src/Tests/Update/UpdatePathTestBase.php b/core/modules/system/src/Tests/Update/UpdatePathTestBase.php
index 8aca979..05a34c6 100644
--- a/core/modules/system/src/Tests/Update/UpdatePathTestBase.php
+++ b/core/modules/system/src/Tests/Update/UpdatePathTestBase.php
@@ -8,7 +8,6 @@
 namespace Drupal\system\Tests\Update;
 
 use Drupal\Component\Utility\Crypt;
-use Drupal\config\Tests\SchemaCheckTestTrait;
 use Drupal\Core\Database\Database;
 use Drupal\Core\Url;
 use Drupal\simpletest\WebTestBase;
@@ -36,8 +35,6 @@
  */
 abstract class UpdatePathTestBase extends WebTestBase {
 
-  use SchemaCheckTestTrait;
-
   /**
    * Modules to enable after the database is loaded.
    */
@@ -104,15 +101,6 @@
   protected $updateUrl;
 
   /**
-   * Disable strict config schema checking.
-   *
-   * The schema is verified at the end of running the update.
-   *
-   * @var bool
-   */
-  protected $strictConfigSchema = FALSE;
-
-  /**
    * Constructs an UpdatePathTestCase object.
    *
    * @param $test_id
@@ -229,26 +217,12 @@ protected function runUpdates() {
 
     // Run the update hooks.
     $this->clickLink(t('Apply pending updates'));
-
-    // The config schema can be incorrect while the update functions are being
-    // executed. But once the update has been completed, it needs to be valid
-    // again. Assert the schema of all configuration objects now.
-    $names = $this->container->get('config.storage')->listAll();
-    /** @var \Drupal\Core\Config\TypedConfigManagerInterface $typed_config */
-    $typed_config = $this->container->get('config.typed');
-    foreach ($names as $name) {
-      $config = $this->config($name);
-      $this->assertConfigSchema($typed_config, $name, $config->get());
-    }
   }
 
   /**
    * {@inheritdoc}
    */
   protected function rebuildAll() {
-    // We know the rebuild causes notices, so don't exit on failure.
-    $die_on_fail = $this->dieOnFail;
-    $this->dieOnFail = FALSE;
     parent::rebuildAll();
 
     // Remove the notices we get due to the menu link rebuild prior to running
@@ -260,7 +234,6 @@ protected function rebuildAll() {
         $this->results['#exception']--;
       }
     }
-    $this->dieOnFail = $die_on_fail;
   }
 
 }
diff --git a/core/modules/system/src/Tests/Update/UpdatePathWithBrokenRoutingTest.php b/core/modules/system/src/Tests/Update/UpdatePathWithBrokenRoutingTest.php
deleted file mode 100644
index 551feab..0000000
--- a/core/modules/system/src/Tests/Update/UpdatePathWithBrokenRoutingTest.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\system\Tests\Update\UpdatePathWithBrokenRoutingTest.
- */
-
-namespace Drupal\system\Tests\Update;
-
-/**
- * Tests the update path with a broken router.
- *
- * @group Update
- */
-class UpdatePathWithBrokenRoutingTest extends UpdatePathTestBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    $this->databaseDumpFiles = [
-      __DIR__ . '/../../../tests/fixtures/update/drupal-8.bare.standard.php.gz',
-      __DIR__ . '/../../../tests/fixtures/update/drupal-8.broken_routing.php',
-    ];
-    parent::setUp();
-  }
-
-  /**
-   * Tests running update.php with some form of broken routing.
-   */
-  public function testWithBrokenRouting() {
-    // Make sure we can get to the front page.
-    $this->drupalGet('<front>');
-    $this->assertResponse(200);
-
-    // Simulate a broken router, and make sure the front page is
-    // inaccessible.
-    \Drupal::state()->set('update_script_test_broken_inbound', TRUE);
-    \Drupal::service('cache_tags.invalidator')->invalidateTags(['route_match', 'rendered']);
-    $this->drupalGet('<front>');
-    $this->assertResponse(500);
-
-    // The exceptions are expected. Do not interpret them as a test failure.
-    // Not using File API; a potential error must trigger a PHP warning.
-    unlink(\Drupal::root() . '/' . $this->siteDirectory . '/error.log');
-    foreach ($this->assertions as $key => $assertion) {
-      if (strpos($assertion['message'], 'core/modules/system/tests/modules/update_script_test/src/PathProcessor/BrokenInboundPathProcessor.php') !== FALSE) {
-        unset($this->assertions[$key]);
-        $this->deleteAssert($assertion['message_id']);
-      }
-    }
-
-    $this->runUpdates();
-
-    // Remove the simulation of the broken router, and make sure we can get to
-    // the front page again.
-    \Drupal::state()->set('update_script_test_broken_inbound', FALSE);
-    $this->drupalGet('<front>');
-    $this->assertResponse(200);
-  }
-
-}
diff --git a/core/modules/system/src/Tests/Update/UpdateScriptTest.php b/core/modules/system/src/Tests/Update/UpdateScriptTest.php
index cba80ca..7aed861 100644
--- a/core/modules/system/src/Tests/Update/UpdateScriptTest.php
+++ b/core/modules/system/src/Tests/Update/UpdateScriptTest.php
@@ -153,7 +153,7 @@ function testNoUpdateFunctionality() {
     $this->clickLink(t('Continue'));
     $this->assertText(t('No pending updates.'));
     $this->assertNoLink('Administration pages');
-    $this->assertNoLinkByHrefInMainRegion('update.php', 0);
+    $this->assertNoLinkByHref('update.php', 0);
     $this->clickLink('Front page');
     $this->assertResponse(200);
 
@@ -164,7 +164,7 @@ function testNoUpdateFunctionality() {
     $this->clickLink(t('Continue'));
     $this->assertText(t('No pending updates.'));
     $this->assertLink('Administration pages');
-    $this->assertNoLinkByHrefInMainRegion('update.php', 1);
+    $this->assertNoLinkByHref('update.php', 1);
     $this->clickLink('Administration pages');
     $this->assertResponse(200);
   }
@@ -198,7 +198,7 @@ function testSuccessfulUpdateFunctionality() {
     $this->assertText('Updates were attempted.');
     $this->assertLink('logged');
     $this->assertLink('Administration pages');
-    $this->assertNoLinkByHrefInMainRegion('update.php', 1);
+    $this->assertNoLinkByHref('update.php', 1);
     $this->clickLink('Administration pages');
     $this->assertResponse(200);
   }
@@ -253,7 +253,7 @@ protected function updateScriptTest($maintenance_mode) {
 
     // Verify that there are no links to different parts of the workflow.
     $this->assertNoLink('Administration pages');
-    $this->assertNoLinkByHrefInMainRegion('update.php', 0);
+    $this->assertNoLinkByHref('update.php', 0);
     $this->assertNoLink('logged');
 
     // Verify the front page can be visited following the upgrade.
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index f38af8a..042c8f2 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -1001,7 +1001,7 @@ function system_schema() {
       ),
     ),
     'indexes' => array(
-      'pattern_outline_parts' => array('pattern_outline', 'number_parts'),
+      'pattern_outline_fit' => array('pattern_outline', 'fit'),
     ),
     'primary key' => array('name'),
   );
@@ -1203,41 +1203,3 @@ function system_update_8001(&$sandbox = NULL) {
   }
 }
 
-/**
- * Removes the system.filter configuration.
- */
-function system_update_8002() {
-  \Drupal::configFactory()->getEditable('system.filter')->delete();
-  return t('The system.filter configuration has been moved to a container parameter, see default.services.yml for more information.');
-}
-
-/**
- * Change the index on the {router} table.
- */
-function system_update_8003() {
-  $database = \Drupal::database();
-  $database->schema()->dropIndex('router', 'pattern_outline_fit');
-  $database->schema()->addIndex(
-    'router',
-    'pattern_outline_parts',
-    ['pattern_outline', 'number_parts'],
-    [
-      'fields' => [
-        'pattern_outline' => [
-          'description' => 'The pattern',
-          'type' => 'varchar',
-          'length' => 255,
-          'not null' => TRUE,
-          'default' => '',
-        ],
-        'number_parts' => [
-          'description' => 'Number of parts in this router path.',
-          'type' => 'int',
-          'not null' => TRUE,
-          'default' => 0,
-          'size' => 'small',
-        ],
-      ],
-    ]
-  );
-}
diff --git a/core/modules/system/system.libraries.yml b/core/modules/system/system.libraries.yml
index 0efb156..209c174 100644
--- a/core/modules/system/system.libraries.yml
+++ b/core/modules/system/system.libraries.yml
@@ -45,7 +45,7 @@ base:
       css/components/tablesort.theme.css: { every_page: true, weight: -10 }
       css/components/tabs.theme.css: { every_page: true, weight: -10 }
       css/components/textarea.theme.css: { every_page: true, weight: -10 }
-      css/components/tree-child.module.css: { every_page: true, weight: -10 }
+      css/components/tree-child.theme.css: { every_page: true, weight: -10 }
 
 admin:
   version: VERSION
diff --git a/core/modules/system/system.routing.yml b/core/modules/system/system.routing.yml
index 2da5126..a656ab3 100644
--- a/core/modules/system/system.routing.yml
+++ b/core/modules/system/system.routing.yml
@@ -448,14 +448,16 @@ system.batch_page.json:
   options:
     _admin_route: TRUE
 
-# Note: This route just exists for generating URLs, the dedicated
-# frontcontroller is used if the URL is accessed.
 system.db_update:
   path: '/update.php/{op}'
   defaults:
+    _title: 'Drupal database update'
+    _controller: '\Drupal\system\Controller\DbUpdateController::handle'
     op: 'info'
+  options:
+    _maintenance_access: TRUE
   requirements:
-    _access: 'TRUE'
+    _access_system_update: 'TRUE'
 
 system.admin_content:
   path: '/admin/content'
diff --git a/core/modules/system/templates/authorize-report.html.twig b/core/modules/system/templates/authorize-report.html.twig
deleted file mode 100644
index 9144586..0000000
--- a/core/modules/system/templates/authorize-report.html.twig
+++ /dev/null
@@ -1,23 +0,0 @@
-{#
-/**
- * @file
- * Default theme implementation for authorize.php operation report templates.
- *
- * This report displays the results of an operation run via authorize.php.
- *
- * Available variables:
- * - messages: A list of result messages.
- * - attributes: HTML attributes for the element.
- *
- * @see template_preprocess_authorize_report()
- *
- * @ingroup themeable
- */
-#}
-{% if messages %}
-  <div{{ attributes.addClass('authorize-results') }}>
-    {% for message_group in messages %}
-      {{ message_group }}
-    {% endfor %}
-  </div>
-{% endif %}
diff --git a/core/modules/system/templates/html.html.twig b/core/modules/system/templates/html.html.twig
index 4985973..50fa76f 100644
--- a/core/modules/system/templates/html.html.twig
+++ b/core/modules/system/templates/html.html.twig
@@ -19,10 +19,9 @@
  * - page: The rendered page markup.
  * - page_bottom: Closing rendered markup. This variable should be printed after
  *   'page'.
- * - styles: HTML necessary to import all necessary CSS files in <head>.
- * - scripts: HTML necessary to load JavaScript files and settings in <head>.
- * - scripts_bottom: HTML necessary to load JavaScript files before closing
- *   <body> tag.
+ * - styles: Style tags necessary to import all necessary CSS files in the head.
+ * - scripts: Script tags necessary to load the JavaScript files and settings
+ *   in the head.
  * - db_offline: A flag indicating if the database is offline.
  *
  * @see template_preprocess_html()
diff --git a/core/modules/system/tests/fixtures/update/drupal-8.bare.standard.php.gz b/core/modules/system/tests/fixtures/update/drupal-8.bare.standard.php.gz
index 9808e99..9ccbb09 100644
--- a/core/modules/system/tests/fixtures/update/drupal-8.bare.standard.php.gz
+++ b/core/modules/system/tests/fixtures/update/drupal-8.bare.standard.php.gz
@@ -1,4 +1,4 @@
-]U drupal-8.bare.standard.php F O	_B(~)y<-vclk15H *HHImE[C7'	 A$X*ɌY@"/<y\?bǷ|3Xk4uQ.276+47K둑XmUY|߾-j:2ޠڸK\5,3ַ65JP,$uZ5*ZB7c߭[3tyX2q->aɼL_gi\Z<0z* }b]Vr^,/I?yqFj߮7h5uO2ek4{U8^}^ym
+~U drupal-8.bare.standard.php F O	_B(~)y<-vclk15H *HHImE[C7'	 A$X*ɌY@"/<y\?bǷ|3Xk4uQ.276+47K둑XmUY|߾-j:2ޠڸK\5,3ַ65JP,$uZ5*ZB7c߭[3tyX2q->aɼL_gi\Z<0z* }b]Vr^,/I?yqFj߮7h5uO2ek4{U8^}^ym
 i5_c-Ϣ&#_̋YfwCіe&-W"Rb`})PU_5FU*շeN7A2CXv}WFoeKXe9OP%ڈZuoiiYY9OJ)%6ċ~&|YeM@@~f~[(O?I:䑁
 }/qRdgnOH<^kc髗?|S,j7e],q3O+:׀KTPŘf}>O:BH`:X	!5ۧ߿Ѝ70OV~՝
 i1ܴ,~t0=gPecq1Vuz&k/Cd_NV7>j8ۉ:&%\̘imͲuY<c' 7Fn1eԷEmf<_TeuOgF?e6?!7G^d8G %sby70Kh4>M3}Ñp7]{lALё$PfF-b>QUD;ikhQDPG0!V_N@UNW	ĻwgD-Jyy@1yKY|dӛSQ<FLObݓM w>)&x;'Ό`mp݃^\9?%uixIgDt?k%Zq8k%޳VBs!@Ƅz]Ҡ|`sò Zm;ޚvUT˵]޲aH܎fAdt,VN ˎ^NOܡ]ZVwL$4	inz;=/$(}E8}l|0%^1qKa:g~r'g~r'֓379s379s܄#PPxRiW4grf)grf)Y
@@ -42,59 +42,54 @@ x<K
 vC&k:i4CӶc	芪^2td`hֿ
 MFk^|7_UPa"7%$#%/i0SjKɾYAS )h̷VxrK\ePC,b.?AG:٬%ٴK@zh鍣7^ʊ3yՊ4~~z^nW4V%-[g;6	9,9+$}1*v^)Z)}.57\>kʼ_K`RdB$*3MX@Ge$EsYj]8*ip"_UM6K{q @ٯ;
 	hy[NUE;BCP'0LJݮftx~@+wNK/p]smWLuFQ@!Je(]!mgF7xy ʽv'òk%͠xAdiYdzyJ0LO-ƃ"RnV,' %MA:sz5slӡe9i>J@&2&J(,}~A%fUޘ93rC|kTO,Ys]ӵ1KD}YK t](z6K%<8 0k 1c=Kno'/0q(Qa3n9rHMYg/Ǝ	;5 huqp'wA섔bVk+u,AlBN23 'Ih~M3~)k D=p0\,X_/6KSHUoy"2l! {RCCV)L&"`"pߋ-z'!Gwg
-pח淛"rտi[&--)~Ki8-oo^}_B/ߦMG̖hB6 ]?~,BQF" g/7</},x^oٛ}=1k҂˗d7µp=xjcI(l35.x"nɰ́F3GQj@@L	mU=Ⓡ.\nB Afep'TV\15cO$ykHrlO	ⅡeF8y(&"˩O`~$͛AJT0#~򟦥55kmrz1,W?'j'js;-RLpdJΉL"Nx:P4,ClvI.@aFpA]Ҭj672A99y#,zZǲH.%[Q
-jzmYcTj-ɱ1yJJ%9֬];	*r)RjUIVDhTdd81#fDegpˠi:iجU~V.s>=x%\-
-i.9}6;1#=0fjJO} 	S]H~a.p~!?& TfepD!'/	FBZZ7eEAe4F`>.v3lM2U4Z妺QZ3IVFk;fS*=M@K8@N8)r8r5]g0lS\Eь/Vw͸5{
-4 [`	=y)&ɜMڗ0Msucǲ"\+5K  %m
-aɏIUC-	$-?ю-M.QpMmY/l,qHK-5.h^~Ϳ5
-.C*"Q5rzfD:|DR ]/)ZR7/W70jҋkp k@sřƎ ^WE"i_i`>I(B;V?Lzt]7 vC)tTyȟY{DwIb rSثt^.	؟n}Ϫref囥A;]	/k"ԃ`+aL|l1r"0")Kp/l0ڼoݖ%9o7 D4[(em /6`r7F	~+=265."{Hl.+uoiW:܁`1\I'+l°TyD'Ö@6:/s@t'(&!{]	aBDFb1bYOj#AdfnJCՌqD5M
-/%"5DW?D}	Z~|آwyûxRst<yg%hBOZ{X{ `&Wp] _]2p u LT[w |wۅ2R~8j=+C}j5]ۿZot*}|/	&oBנa]qnK&0?`-}{:K8NAj),yLuYX"HU>bΟdetBPpI&RLѨ6e~'É&\ga|A~v;v'{A&xpt8Mm!֮@} Oʗm_/"w7 UѨJ&HtMVI;PMRsMfpyTL>3goeU\07NҴ~R7iuh.`ǝ) PE6;HǣKQ^ a/Tn5\@QFҵ`	a=\B --,h; }fR8kp.®MU{ju Ausפ"6Y4I+zf/:[*ٍ9
-rky)߮
-®۝7FxS4L)ɔ2ڕi*5F#ye_)jY`o$\3+ZR4I9^A9e 6}'&-Cz.@~eBOFH^qu㚘7pϠ oc4[K@9(HC)$ F3&LJhՅf8pT:;ZRX΀:xLaDé]>ND5
-%?@l&.MbLgA
-+X_x^q Ͱq$8ן.;Fbږ섪$?OmS/%69C&-/PdSc^JN` 傦HɉcIp&~s4~Q^aSN1=pyZA(Cb%21%={T ؆g3Yc cHXY#N۟@1g҈U/_UJs2]O%cmȃ4<L9]%́tګXx{[gƧ|$6Y/9tq=WwP|yG*6  uc׳"3cz[1v,E.'iׄ}wVFpL-\
-WM-ry(7#r+
-Ǧe.@h  ɦVDb`Kc0z,PFn4ȝӨY^yԣOPVfv{r^WϘ'6+,h	+z[eH{=*N!9-kFMabA"t-9>>n{S$QMTK
-v(zACɍWJ0 "n
-<w{}<;E<ce7_pP;C*e%<Xbo%eQYU[(H*lX("Ŀғչ:Ij@u@C͢^cOxN^ߖlW46t|1m@@(,!/[6&u-$Ejp6Bsv03/4Eq~f[)TlK~-_7f*ElhE.JCJӌֆlMqS\2l%0;5yd1I%k,+I-v@7讞E~'!Iփ$¥jA{w3B9~J:Y:W_ovQ
-x眶nmǭ#x"~zeA6O8(DEɣ<MP)K]=b~|.PU@}-;o^>:yA2|2!1Sj{3O,z&$^р+6ӯ/8&?R~Y<{*ߞ,0+ɧ?߿bȯk).r+/OYx/W>=+_u1.Eǻ|ynflmA.IS/J2l;h$$+)et-g+O&`\HI@ o/9FurX0Kj Ǽ˥HKFd^E&^I,>bTnKRPġLSM~.|
-yxϸ,EVȃ]xEE&ϛ0tዄ?L) b:4@yG	ϊ@'2]+*Luǒ,ѿjZ" 7Q%%&11.q>+E{JtlC#.|J|,QP 9~̘ˌ՜"˦B$[}"'gjdLe3I%wBcijIih/T4U+3(?@4(VI7BeX^l5Z	cb+m	Fkt;ubp}z+eSq;V-S`OfjNywJtYSvFcW^ޜ&.̎<ʗ)>se$͋g3fCf1ߓ"Ȓ{c̋͔MM.Wq-%"zS%D(ҬQ,Ǆm,(jIM{лwC%#jvQ5gWCpGjB7ʾ<#MqެϓȻE!M]lex(yg)Y	T(3NIo pC8
-U=f*wG,nF$"[[N`-rh9MEC5x7t}*KLM!ev,K|l!aMf7-5
-'@:_us_1 rޒ.>>/OvK\4{ƨ=bMևʆRq0PB|p)ANȀj6T]%-@v*UhF+Z<dț7Z)\-P!5AlCʖ.zXh F/ZwJ
-v=RHa׳OE.we~Mpytp.E:o}U4uWq6S7vD
-cz
-bzMuJ,Xs&YDh՘x.gS0[/Bަ}'loĸksCB	d[JKƨD&na^0'jZ"H=wߺbTn	xM.B40cmk5݀(SXNݪD_]ซ$UNj9;K't`aߣ{fS8jA$NC-zfTAɍW~>\Li"8<mkg pSt[W4 ճM.}И"߲zXfm̨肥I~Cvf fb2PtVW@Q2dl%2 l<pűp`mA,Ov/C}#`dd]^&tx4Wy^fd
-)*m7:Z,\Uu*į6 S(j%螼SFηRi+dLZyP~4F])8Nip"HL˚#p"Y*SNKZ4J<mѝ޶EUvurʖT.QU^(]-
-kv8P(S+NhuN oN'Ӛo9+U'.s&5AyKւ{cUٍƨW:\ŬYj܅ *7䘢ɣ.Azv5yQoM{&wNn`9wJ%nȑ$]b$uM m;=5bUL EU<u~AڠQrW 4VLm҃3za	]|L%Uwh{.-y1J~SA;M8"/mPbojE;J4mٖ_4_8UavO'ptR2)gLx2ЩWF2<_&M@	29sUE+*Hnm0JIvdG_U"U\
-ZJXէ6-"/pXjs#Or>U>S%7q&a}q&;jIi|;?cǎ2c})u'OFuӹeLϞs>{>>ӃO@"3:ToZm5՜9^ӥ|myD~[ꙡP1[]c9b,ߵFEc 47t
-ɻٻ[|鹽P|C4;Rdf{b{w~aRSAO>sHѩۚ>Si:w
-FWo	Α{pIz)2v>y/`HU>
-sF0Ը[[@paXaDL6njfmƤ.jߞ\vBW0/i~T(,MKC+'Vms,y3oqP]hѓnoGê1mL4_1^Ջo8h7HtJ{_S/ulPâ>|#)z19.7&cJY_S!]PF:v]ưS¥'J	emҵi"Uy f
-bיO"f 0wv3e96=M0q|g$%%wįXaOLFI _
-žٺ"91	ҏ&`ś0`פ톫t}I:)fДpwM8\*>R14nٝ2jOՙbR@`m z6WMSXbu<_~.pzAPђIV-ZtAQB#ʧpluR¬rpIP!O@91RbsOyN F1s{D Ga\UT]S>\9xmpg3ŝtSJF4S(Hc*${rVNE}wYd (s+B8H0\M,Ho2	9o{:lӖҨyyG35wp)x0KX7|aByt)5Lմjo5aVw)ۦU	=/%[8:I-vigNܝ܊{fNe]m~؍"a<7%tY}_Ԅ>7|$gyaʧ)͏b-d"+JL\3ЌB"{q8-I
-Imщbzּ٧ҋIyzZ/{L9P<	}X{6L+ LEM/Q#Jo>|DzCuqūHCa%DisXq/θ!_0T?mbP/fCٺ`ؖ"6BFrlco}DU٬'1ki-VupC||Pͤnj-ťO˧-WUQB:Z
-RM6;yx `ixpguZ/>N $J4p?ˢ=dX|P~/=^ۖĿ-msWP T?FoYOtH6>}^֑9q8|<ijՖ)#vQBwSǌTw@nf}+?:c.1q>:nqШam.4T'{̳u&-ݖ9ג6~Yֻ|܏,V%溛zJä$\ϱgt"a4i:miֆtW|E?IX!2Gzʩ_Ou%kgXdѮ=9W&s9~2Cfk rhf8!zNKJՂ+Md9	uzwD='M)XZJ;>	*'Pa0Ol?JG{j,GhYYB%}QɮQ38QcKij=t
-[vcCqmNHG##0 GL4Iit{hQ̴FǴ#gN	LEhDO8St0ݔ0v2^51`R{'ַXUf:FMIu?ϧijw~ll箌zSeX1A
-qo*DEWxeOYVǂ}yMN@}kh11?դIX-ŃA]^EqD.^k2 M>	ߤM#/ϣ84Q煮Gc:Yl剝}\)V롅{?$7!8o!#rM=УD@w?E@w`fΘ<{S-OC\}KWQ2(7Nҩ0|t߉F7[|D[Xh!L-"xUGXPwtr;Ƹ3iNu*sT{{T݉EEm4f4^ѰӠEPq@xУCiSޫ8gS"
-n"rNZ|v{cM{`ӁVɱS@+揈k-Q9GѰ;eϑd4Tz@i/fic4j3;3;a.js3PJBe'zNV3!7S>һP!!tQ~)n܀??O̺n"͘f;[|ȩ~;{w8w~m$&i'0'3fCZn*wF80K/>uH*͐c-F1bypʵh6jh隖 kL>	)'.	Nmީ8-n3rz7BWy|~sS'к	^y
-]C4OD?ݫH_Vŷ}÷{ïc8d>DLKkIc;eNJ~%i&IFg٤:~+w]{YZD>__3c}dV*G۽׎s{)4:{廳G}4Ps+ Ak4jgѡu4|5wM,;xgwBQȰGCP`8B)MpUJL\S=iI?FNQ8^Gf%bp(YkVUw/72lnvpݦ[p~EZxv/-pVl%>iT}v"^8KLah}v:|RӜg-՚ѫ5_CvVyz/cB4ޗ9ܞXGOHwϑ<=H״wvMDi|%c;jrF,d\ѴGE/.B|zd4C)(s>4qg>[oyZ:5$luW&٠Pzŧ#6ࣝ99D,I뼫d.WGK%ߙ߃d|G.I޼$C7oɋ%fiYo\O۸ʶMQ"%Q́́?)^\[mSj=w1N236yy牘Rr\CrlˆqZqnj-MP
-Bꔾ1}Mt8ۼ,1 K4޽;3?=#K3&%UQĴWDtoN?~[&E  b֤ݥ)cMf"%qo]:+<*	aO_[uSVүn;gc2yPO=;x:t=&x@	:3?ee? m4"״~cOZv@w>1 si8)fu&,I1eR]nK,b<O<m`86mj
- v%z$gIsU{4xt9\z7V[o;YSɵ$
-ʪV'8TaIб	jZ
-#TꍛilMҐFa5y{:$続hFQXnSVu"gKI<6:%\JvifxT$+ǠlH[
-`o׳fd=gz 3U'EϿ6M9[meED}.	!voWm^g;N-sRԆl cvޏ3[p3:3ymO\It+MB}R̷XgVufUgV{w>o/56gtNgp!o]5Svn*4]Sk:=4QITXbxm߄acn9n(WtRH6K5
-KrN4wb8 eV?bɅp xZQ[	,Jk_NFMT|/2Ż/UƼBH#6qxI/#%eNy#d
-6#}p,*1merws+"Ck/D0
-ˤT$$ͬSMRaDۊ%ݨ#XSF<:6$u{Y`bВΡB$..zOzhfKDSwbN(;ph'vh	CWn;\U75BPO}\U&/W 2F֘$O81׷L/r!;7];L<89*OUcչVc
-uqBTuߪZG]{t1se}UU.5ΌuioAǤFeCu3.?7^NW$'Ď/'ܭreLvD\,Q'{j#xi&^_rjjݧxCogc{xu;pNYJsZ+fָ[Z`AL=yKUޖgqv}Kqzu0&+=_<-!64&+8pCSI$<]w>*gz5aex3GCՁNv.z>ڨ){wڠ-}t;]QzuGPM4$}4kki4n4oTڽ=9p=w[-.**Qv*VhGX3i.x0nj{er韾u#(;4ckP078:v1q9 vXErChm5\\=pȌs,ŶXVwd
-gU-^4ఌjd??usq`+u%F	x`$cjpCkAwʀ7Zo^<F
-<fn[@l⺵8OJyh@2D>AU<Db!~7wx{Esl"D35]'CF}20MYS`Qmb^~@W]V>D
-Qo]׮ÒC=67TXl>3VcI! LP|; b O,P|x2䶓F|)xoärg6Mҫ˅svmx?])e[zTzd=w|iޛkq9zz T6%h5݇.Gզ@˺FHX>rrlF^^fZqdvǁ.Chqٙ </MjB?)0?;nH9^*Ws3X$Fml8w
-c԰͸=pn0b77V=L[٢7ޢC;%ɴ:/]'.$-L!B =og#֒hw  _cαbX&VlobMG?U{+l ;TߘE5<Jzfygwfy,c|=˓"ǭ4Y:Zd:3<F?<>+j,vzzo!ߝ8z8l8q>&ܛsFy-im^,| 	sEY+az#PIЪr4	#k042GL珺
-3ݰ0ӨfфޑVi"`>O͌RiQ+7[g[ԅm3NgkeYFEw{~ݸ|ui^5A	:޻ z{K"Tڴ_ue|\'guS$N'EG9z_)Z*6Sp͒/|3nO_ģ34$xlz%ĒVߩQ oAha|qkPo;;+A)^%{8_Orq:G^א4?-VVkI8"	֓p}zg].;}u޾ΛSS/K`6E\Sەe`$ɮyN*M~Foe 4O&(
-S7Lr,3J<>
-~IPFp7\`TgA{);>7X38eݺmiIսUC!\[ci/AE-?{㸑~
-9K{x3؍e.m]ܮeԻ'HR5ȼFD~'
+pח淛"rտi[&--)~Ki8-oo^}_B/ߦMG̖hB6 ]?~,BQF" g/7</},x^oٛ}=1k҂˗d7µp=xjcI(l35.x"nɰ́F3GQj@@L	mU=Ⓡ.\nB Afep'TV\15cO$ykHrlO	ⅡeF8y(&"˩O`~$͛AJT0#~򟦥55kmrz1,W?'j'jafZb0+9uhX68?)Cs:"rr-[+dYy5l.oe4E%rrGAY,ԴeYo_/EVe]KM+c,ٲ"R[acJnY|NwU\QԒhɨob6z͈
+yy81;8m-Y\|lzJZԳ\r
+flwBG:#k!)A9)|ɣ]`B|V+;v%7q!M@ᠭɁBVO^Ʌ"oʊ̃l1(p|Rމ\<zgԚdȋN+YΏSMuI67Eg)ԍv̧T`{ܖpqRgӥp䖳kn:n`:٦닢_qk&_s]ſKiAzZ	JM(8;)'")/a<mǺeuE	r.VjA x}3K ۰2`Ы|ZЉ!HZ~+[ܡ(2(^&	-Yސ&_=[j]Pӽk\0^@SzUD$;j~MP\?2tp&t A^O$Sop_
+"1HonH'ZarӤ
+z4&X- 3-AhD6'^Ӝ-f|pQNvB~nUÍARj4`?V 1r1@F"W\?U7KqW^D1(WL%Æ+xg1ٴcpqE`X!k5_E7^rɟ?}a(y<-Krߖo l+-ti|CP@&^&em>oV6{dlj\D2]?V
+t([S[H3fNV8	`uaN-ltB_4瀨O0PMB.\S!ŠbŲ$IFD2e#0o	9t=O5@k&^_JDj~5PEEwx@JIY/Ѱ wI)0 \J>
+^dda<F=['e-ZÉ$ݶq77 	jVć
+jN5XѷxT&0!]LNAg\$L0aNZMtp|Sd7XZmϫCYE@}?Ui
+!8b#<Lf)6QmNMlvRO# ?L6p	7ޛpB]͓eざ /۠^ En,@7QLܽ'P㛬V5˒vp+.'M*7X5Y|nf <`^"inV5u8]=SVA2lzGwGSa^ܒj1Hkz@ZZyYv@XdSͤ*p R]fZ];z"'
+tAhIEDmi>7W^)uYfU0!:r:FR]]&;##9o 	hV+"Sd)e+4TPkrGlRŧ՚H7
+:Hf&Vi02s8EsDAtl$E0	NLZY\,%NE˄Ke5)
+D51o@A/ 
+`qi|rQF'RH gL:tѪ(qh\u*^艧w /pBZ)u`ÈSb}A!Dk:K~2o+L\ܛŘ΂.V
+R~\aHp?]v0<N=*-	UI$:Wǟ_Jms&LZ^v^ɦǼ|@9MǒlM0@4!ti/**b!86f1{BOQFP2>#Jd;bJ:{)F 	g@ǢHIF.
+%?gvcΤs^˿<e$$J&Zݑix 	&"sJ Ui_WQ~ʍOHbm~6v^sD{ԉTl@!AƮgEfd!B'7#ȶcfY\OѮxʙZ@E51L)[lnQnF:EVMS\0Ab[AMU]- g)`L-=L}Y$-4Zi;)AGcLã/
+
+T1Gl*W:YRW@R;zTDBrZ, aQi)F'-6Z@)r"7O-||nURڣɣ6Ӄ=A=-;`P%洇x!e5aADܢ4yxvxikknHw<T:˒Kyʱ`Kʢ~PT؈WmQD҉=ȥ's5u~vM<xP]E#(7F-ٮ
+Ylj/bpLKWQYC^";l&bMND[H;m~af<\(ij:	lyS.`,= ZfnpEyWC)({pU7Ј\>Wpdnre@J`.wj
+%@b^K8%X[$vo]=OBIK2-fj!r3%+l3d	3'u5=t.ߘ^!⧧9mǟŏ[G<?n]D'm pPOG͟y7??R#ǗM-/{7/zͳ\.2/Z|Ew߼|/un_7d.W_/dBb.fݟ~YLHVl_7/^pM~>ťxU׿=Y`-VOŪ_R\`V/^?	?t_ b)|{cW[8c\z/7=)wW#T6 ڂ,\r^dv9EEWRJ[@VJMl󹐒&gA~^rэ$&1-a0> n5yKI8ɼ"1MX}h+ŨܒW Cf-S,e]0qYyLԃ7a~RADthΟNeVU%YQSKE oJJLխcbz]2엿Չ|2TyنG]X
+v' <s1W9EMHDOT\p'fHZ/u/Jv3Ւ~)Ӧ^ԩ}i@V@fP~V8-HDiLn82<mٔ\k"GV A3B~3kwy'*3|!?2lVA'3˦vZx5`EB!Ԕ?F貦0-4	N&Ž9M4{]Sy*/S}..j?Hg,$tqc'm!D%MƘ)>]$<9[JJ-ҳExw3^JBKPIY	ے%YPL2%Vw*GjF`|nH}y( G(~NY'3vwcC,P*-κ3R,Qf & 	qѫz֋("gU珮%Y(݌HEֽF[3r5jbjo~RECTdYH؂C9Fö2nVj&}Ot>#lc@%]|?}_`';*9iQ{C5l9>ݕe`fRUa!ZTmЩ<K<Z.ETD9*!ьVNy
+7)n6uS*ZLIBjh 0>T-\/@^8{ZgMRg5+\6JBk
+R]-\t4Xh73꬯mo&<R$[ݕXQC"Yѐ+1]j}`m=_lMN߈qq;@+ɶQLd`"OԴ$vE$szVu}Ŵ-;]idaj,KHQy'Uu-$;Z[qIn"rvwtO"
+¬=|G"q  pIZ Sq؃3ܩ؃"|;8>ҎEqnyI/-;1M,{Az'-0/>iީ8ADgz].1/De9HPbQ_K#*"e`imxDM*d@H؁e8Jd"Axch+֙),0,<֙Y8,ϟ_LQGgkvkɮzMi0=7YjRUڴo;u<V.59 4T_m@2yP.ԤK=yoVH2chōRp+9\-u5(59G.NQE!T,fS;@ix*ۢ;m#zn7l-2]2P8['pPf:Wќ@#O5?D/+r<WJNB]pLjƊM=Q+tYո)@FU,fon1E?G]2k0У>/޶՛lMxr$Jܐ"I*Hܛ@vzjŪ.@&x8`jW% [q!A-*@h^ȑdgJrcͫ15(>z][Fbx<
+UwttGqE^H`F310w\i۲-'9i8&㿂qF.2Nܭ,dDSΘNdlG?S}f T5dxFMƁerÅ,bWVS``?ݿ#FBEֱJ)|Om[.:IwE^pdF"=*S||اJ,hoLN
+
+5LBw𓦅w~e2NROçs/;eV9=||0g}VkEfuZ5{)"RIk]9sKOp6-}?=33C=3b0\|rĞX(k
+ƼAh;n9	wKWws{Ko҇li=v<?ɾ=f\>%,¤֧'g|<'琢SQ;5}tN#bC4![ԫS}e0c}x{^	|Ѝ`;qBG
+3vlPմڌI=m]=u%|%ܯa%-^P*fY=brV5N.בYf&;Vtg':'nߎUc3j̙:f+Ti;c'?uq6nr}x锸%^ؠE}rGdaS*wcr\nhMǔؿB
+ˍtLd'baç&K%N:Bۤkd%E@f=zei38E$͜A
+a,عf&rlz(a,(#;8IK(K_eCNፒ@t@[}uErcvM7aIW
+uBSz) p1uU:e}3.c	iU;e՞6f3Ť a+m&yyy]bwăR %Oۭzo[6<>k	"ЅGO"
+oYI
+M㓠|CȁrcK$:<< b?4ω@<׹2^r}Fs[9g7£;i覔hQǦUI䢭,#̳3}APjV.xqqva%<Y:drt*:-qQ:c>Ogjҥ=4	6y-S6-afnT]ù}xRkTijZmC2SMz^J0)Tqu,Z4Ϝ;⡹̜hx.ExnJn"	|o@ǟY\I>m?*OeS'%ŮZDVfdE>R;q[ܣyOOt^6r&=7vy|lҙ"W 7_"G+}m1gB=u·IUW?'4O?χJ4_qBa*Ġ^̸ul-Ell3z5!UYOb Zl'^dI=ZK"#ˇOZ:8&Ou`<mvAT;δ<5^8|ٝAAAHNmWFi4~E{Ȱn_z
+&-[殠z/y)(߲0 ld#}(#'s@;qx2Ӑ=4d;N-џSF܉)49ۏX95VFCt"6[q] _7=c}!t0R8AUѡQAU˥\n3i\c%N gj#M2/[~׋-s4%m\5wY⵭!KG=u7=>>(IQIc2DhҬu
+
+ZҬz(+rBdp%SQaoK3;FGkd]i{rbL4rd@pC%
+*t1ՉAWz]n!s8k)Ň߉zORRܕw7}fTOalBQsLE)YЮНMnKT]fp
+ǖ6k0f{4''f/8oC~c>Ɔ=9@F
+Gba@&=	hv/80%j0Тݙi9iG(dϜ"6>38*q `)ape݇6jc#ND`o73q|Uʹu`ȓ"5Of]vȹ˨7:08cJvqB)T+"G*$򚜬&$gmscb8j'IZ9F|]D9wdݕWX|IeF^GqhM]3,t;lGSjk+C~H<r+nCqC[G""{G;w;oGC_~ڋ̜1]7 yV:'*Z>͉J *1d6Qn:S?a46j57n0%z?xBԙ66ZD;vqg54AҊ)>O{<T綩-hiBGi}۽aA!P66G[MmݽWOqD=D䜴9;ǚзЧí4c|Wл[3;s>awʞ#?
+ixŁlM)^g(,migvogvo- 708\pg.n_cOVg:Cn8,ir}wB^Cp,8BۍSݸ3?<韾uD;1v:Su~Ow:pIDM<N61a]Of\QU$p`^m}^U!Ǥ[2v	cDkhm>5-8מ5|xSxO].x3םۼSi/p.["+܈g:5nJ"~NuXX% 	:h*~W4odo_ǈq
+}q=<3cvL3JM$82/LwIu>V<^%r]'|fZT6vu{O;Roit=wgͥBW0iRW+1@,hN?c)$΢C5\i¡6jXw a[קp?!R4ḃCVEލ{Ғn>Tq$/:KN#̡sQl׬ޟ+R5{U^ndn-Mp	^Z,i3J|>$[%\E*Apf ^K'uzǥ9Z5UWk:$Dy	xIy,_J^Ki/s=*:ő#yvM{i,!2\J&v <Xjm"Wi_:1i]hRP|h<C|>4t`)kI 뼯LҳA<OGl~G;s3<s
+X0?yW+2\f㻏Z5*ƗJ<33;3*:\ړyI,+nX^/KӲvqima/#TEZK*9(XS4fXzb;#dgl3<33<31O:8[XeW))}1cBpKp2^iywXP5c
+Ah{wg~zGS^giQMJL1$1Ήi+ޖ<$VM  \ŬI
+K?R.7WEKrPՕaruWxlOU	Þ߷ʧ('@_'+wd8:zvp=u";zM`ug~Jjk@VhDi2`G3H}bnA4_0qRnMYීcʤR0܊<Yyx0Zpl,Ԭ> R;K4IϒiGjsxM1V`oj@_vkIU{cғOpl/ÒcAFЩ7k69!"ĉ3kt1^߽ם#3uHT3m5і'f9.FEΖXy|WKmh#uJճJ j HVAن獑gԧ4+(z4fjO6ԋ"+ͻmrʊ\B#dq;<i{vڳAi=}	Lͥ[)礨/@ƶKgƷguf^ڞZW9TQf) o1Ϭ̪άcaU;}ޖ_jl!̝CN+C޺k6wgݪUi⻦֎u{h!e
+Bȁ3	rPT>Fmj[❾i*p6 s!3>hQaA4*XP|["^ew_yGlF78^yGJʜG%4mFXT3IichEzWdw3BE
+_(a,Ik3T/IcIY.=KQ9TGiyXugm+Ij>%Cх>)o)H\.s]*{&l]v\Ŝ8PwbOH*U2vPokUvU,LT_" e1Iqb:o^&BvnvxybEqrTsℨ.Uߵ*ٻtc*\kXbI&->kʆf\_n(I^Nz_N)[ʘYNbF9L;ԺO8b.z۹vԯ᚝BVͬq3{+zz󖪼-^	NaL6Wz2yZBl^i{MnWp͗,HyZ(}U5A! jʆ:g,:;r'D{5]"|QS>QSA[wSݏv
+(Ni Ii׎ h(h>2{u{rz\穷ܵ[_w]]\7TUT(:~	`)}?hgl]ta[.䤋??}3FPw!i31anptPc(}σs@0ڦ#j@盹zđXmκZi?a~q'*VV7;Jl'%f˛-x$H*|%ᒇ0+	+kGoH߼x6xIͺ3uk?`q4.d|у9x|=żCn20vmxaDgjNf55e`&;K?ż5|؉8]g%{ln;
+r]_|f?88B uv ĐA5>X5dm'*qu}v!RZIGmvW1'.]UwRL.98b{b=Mݽ7׶s7, ,V=mJЮik]Mcuh?|،148,0/].3x_ԄR^a~vܖs&Tpf2H<pƈ:aq{ᶫWaoo譢-zEoEo$w67KBgדiu^l-Uy	NΕ]fIZzB2@z8(πFӭ%N@@~S9ǊcαbL*7ŷ:_zck2맛-WHAv1Lkx>,>X.z'Ews[%߃itRuJ)d$tfgxfx}V9X&8<X45vCmaG;q:pYq(qBi}L7ZڼXkE-"y3M]WhYFۡUuDiFd5[`hd PufaaQ7t	3ݽ#gID|DKQ멟T}Y].5@;ҾkVn϶שfR΄j_8#qNj.tBwl	8G/D­i׵ǿ6,Nz2I~M;@I^gO/=O>*%[=s'^S^T^mZ-%OeCy_fPMݞGg4iIuK%)Sh僼.໡jw0wW&`S+,Jq8!ߍuн(!'i~[\זpD'$κ\|w}7i=:.^S_8@mֹ+uHV#],TțzޖrAh9MPo:Xfx}"+5	6/n8u;%2R=v|nfp(лunӒ«{/yC4hx^&=3t[.ouq#Yڅs03V56gnn{]VI5]˨w?yO2IRUXkEy22K
 b\oA&[k_#Wvz)Vj`{ʢ3ƿO԰͜yFe^Y%e5zۭ[a]C/5x{s..`˹Db(Jmǵ	w"=0BMf屌o%zqL,|8q	:7EgabGpVv?{#^@^xG#/;֨.mu̔.<5~̡k]UWSݫ*9:1F4]:%ӥUkϤY&@+P6D`6g0qgFMydDL/!%8^}C r>z,aa{./g40u+T7ef>[1d7]Z;*A2u`i}iw3x2@r9|Uڅ4l9;,ǞnQyƼVM!MP{T@?$h"ٺi|/[^Y75Lloxiy<v	[="o!0zՈ$yIzSrJ1Is1!<kQ럍Tg.GHy+:L|(>XX>j?$5'Kј/'F|1Ԝ0H?޵4]KYj)<)iy,֫iO֮hS̳[/.gD͛~i4nn66W8>Egm^Fu3qB6^7A'j WrZqd^jruGy˚vzQ|PBuR0W*+%SQ5̖4g0d -n^_Ո]؋6b537|etgR-X=9BjGE}Ww5|W_ݷrx[K8;)	ӌQn;6r@\J^7O<*ѐծKC`ol1; ڞ\yjj_=V&g	?|=1o#f^s}KfYsyU~ aݓն]mնfX'RFն5=N]S鴅\D"kЫlC9$5v/7v텞G֍΄A*ϫe?K+xHM\cU	7+ϱ]3X8H7kլ]3k<N5ܰ.o41Zj[fv#E1s~*zy6	u[@7)u;I"࿐čMP	L}>U;dw>&Cb]or6,-_gb!on/Gӹunу̺r}QԚ)lVI>Qu4K&"#CH]('L=ϛ"yeRXW&L0Z6u2(N#saxiM^7_u%LEg0=C>h땠"avJvFh5ydC0YBc\k3]ITgS~W{`̇4/,xvOjUum<_ZծPpyoLkѰ{<C<U2-b"tZ訅r:8ͯUm\ٲ.lXSԴjf8mIrKv~6*ŏř*_m?kzlKRtu:WEݗkJd֙]G-?nM2SƠ>5O*ktJW)9LƅV&}<.~g=ē|]5SFyO(#,]|&$RO߰O9cՕ_\Gة{LnV'oÜ=*h837Tl.?FJx4lcWmK>|klGhlŇ 88('f1LmNUɼ<j0Z|)mW0&UmeyjIa	yV'FU- -w@{xk	__.+R5W#{d#V,^Hj-5I` țQ\L=U:p慗ZeꖙPPMB'a>D8g:QȬ7łX	)PM(n̈́աM*Q5Ï ܛI:A5YUؤ`%d$Aަ
 ;	EBq04@tm(vZwEIm06\F\bİSk!3|)I뤾PAtl/M1 R]Zu~r!wB2BR5,XNLىDxN$,N8ivDN躔Hٲ;OLkU~TF繱CC;Iŗj[	/["2e.mZFYaMc|	C(eXRZ-Ω-D-LdVċ,)r7zS;'|A5G٘u]UHa\xb$l k1O	;sTV>(Q݄P~c}^9BgbR6ILoIigd'?vD"ۄDT목|kD~%JV0c'J^6ϩɭiK;!b#iݔ->%TH^(^3M3ٔ~ex([8.Lc)/z9mxPvB.dUå"-'qF!	QHv)jZٚͨ-ND%uDZၕ0o9˞[-;ᐢ| jM}j~uM~)A.PEaJQy?T?fКZ6_pܚkgԥ$&Bq u͔]=ɣ#,~=zʫ`F)4O|}3"h!>l?H}$G6nhԓ!.hL)[9ID.4"!aD$,'U8$iÓ/j꥜63mZeUΥ8RD3eN*wfUF%Cf(Q~OxbtD3xK:\3'*K?.D:	F(:Ki4<axS׺%?~+|[P(Y22e\#>c*h6;EUVY9*g5-츊l?.\[R?"9*XԟXo1K8ƽ_د$d8II(&zZ[&!Էnv:sX`;[ݹ:{_uYg۬8+-E{5RL}* 4&MY=$Zꬾ:ꫳꬾ:9_؈Oc0V8c1 H!ۧ-s'^ߚ<-V$Zq2=NR![)VNv?x/&_pMN!w!g癕OJ\TK_{nJSӋ'Tz7GcJ|Ŭö{]bäNtLQt0N KwEa?6#e~=;I##E!^٧f'ĴΏ̏kjH>]LBd_go}Q{XvdDaN3&x]b`W,0a׿}?-Xsn'=_}=+_3&"E!y\ԟSA	=O䤉\m'.ȯ?/04"Ӳ,j/xTنu~:i
 ̥N>~է*7:G]qxXou|ڬu?ׯN;r8gb)z'؀Η0Sʮ R<1;|4Bn9MVs`g34_q@[sX(
@@ -187,215 +182,228 @@ _
 "礡~s*xiXU2U$DbK0ѰC;LVIX忕Ł }CQӣu(ĺL!ecP/D\kj:CqaqxٽԩЈ kӡP]|:B;G5<A_),q#=w06	?iEP#UW8Z/|k^8RT(6c>aGӢ)BPj~wcY}/*t*TW!H`'5G#8RխzeAxn0N}S~Zk0K	ib`9X[kpgqĲ^-:}`U#2a_5PLnZB%Piҿ@v;5Q:	W.8D;Qt|Sǈb*V*W _ {t;ȋyA#JߥC]#h&ԉ03WGyذcY5I;uldr2P^2oTPw}Q"M~Iq0e=Dg>}[+_@oưޯk&?ES^@d5 1ROy)J
 b"B٢l></Dj#	0ud#kѼ>ɨt6/+Cz\&*r'<jy-W=Y p+I~3T|ds6~@
  OE.SGQde;ؚzeMܭ9[vfj:Gn.ftŔ'ImlQHMň|9S}3X&CY7L3ym6WJO2-:8nBQUw7" 7⫅ڶ&Ǻ]4 QU[PƿL ~df8BDF y%Y:zXBX::߷RkQެf.XfM")jǣf`BT:ך-f+E%bcKNɝes
-p­s:_(ܥbB^a|[<'gSEH>i[s-3F\NN#8qɼ)ׄ$,yE"KRYX+}zMmVȕ4#Ѐ&tpBOϏ$t*ͿuA"gԗ	:Q[*W[a?c=O׏x,xQonb28AZPrT^[g'.zrf۔iThfuޛvm$k
-;R{,m-mp$*XL%=o@Ě kU=≌FJEk>c\jETzJժir=}=xƦdO9D҇!&G@C#cJ':XԩCybXCd0Ӕԁi;jSmRlַD_DIw)C@#u^8x3+>0H7 [CO߉'J;gQb!{@?6OX8p{1&)nS()`a^g7˰7:ޔ\k~AM9qh΄>;LSjv^;ObcpL<L$Nn:eb@I[UV+qr2-<H B|fx0ڄx#3NF&\D;	>Gue<rg]=tCW]ǂ.+A4#h Xtfg9F*n'r?i2+6|O	/lqenLmv@#WJ&*b013'gmN<fwݾ^l3*Ob(/$hM0d{wEAʌ+u\0G,D~M*7a^us7]<
-2hz/N6!@$*Z`]7TuQ9ӊH@\֙QvZC%Gؖndlt2t]J;<r85GطPF-d̲6"	9Jz&wkY'V&T!wOGy$Q>bVՔq1GokJiKW+n?r70G 	MYR/^n$[z_<4p$mw8_)j6.fSvd/!_~8d(F^uJlO5*jъپŪ&qoMhװWuEQ0?͜j[ATBJ̥GCu'U{V`חOX̱@4OUy$g({'4;.;gX %LT\$K&+\ى&Rl),{Rxf I6\2,y`R}Io1+nτ85[w3++TyV^ ySn'2E^e OQSf)EaWu<:ú+h.p}K)l]F^IV4]X6e[M05>/t7TJk*'I{Ԫrpm"Y!Cʚ'ŚVhEec`!SLVub%hL&?`2S&6TGwrC/l'Sԋ7X/΂Tw Ƒ!ybi+<
-Ou0-2Uq[p+"Lʏor(N_92%qmxqB9{r<A5΍';3xGJsOxZ*yj$SSp6.*Or';nQtzȼQY<#R.~(]	$Doh+5ďN5{<#59sa7WJoG=Ա/
-jJ<2$W5#v3]JM]]KeiRGZmA9;KeS83r	Fj*-t5?]ʉU{&Ra"	Mz~znJO̧G~]DU(ʋuʬ]Uʥ.ɝJTSQ; ifT3ojCs4Ȝ~{VUz EBK=zws>e8f)rꪊ,Ä֟pK(Oh5l^f2yZaw>umztZYLpwjYC|gW}aJ;%8e?su2T8NNFۜ]A\5y+mm5+$S~Ll.LP.ȡ>_x7bEUP::nb _M벑rA7&-i2/$QL;RvYm>*i~?q90>/}:c1il^AhcU	/:5eG]X2IOCvV=ZIy9|Ez׳&=p}Z>F9\|>-E驜Q.pDr=P@UT=Pu T}Nuit\DZ/s- ~p1+_Svn֌3%^%^)!#9hsZ?p{ZKD@C?̧8*|@G7[Dg?Y
-Z<QH$+*uB.!GEzQGb9q5pP$R2vtZ8HVltɒV8+dOF޽}'Q$.='"w<PM1Zc>ai"L$	Qer'9z/j 7;1-Qrzɘі~Ǜ*o+Fl=;PCr¤IqAwK"XFS,jN8MDLk(2IQ@R(N,:2Kl5Liu&ʰ`QDvCY7$8Nm)|df=_{|'2O)B'xGar!sL.v+꾎~C:N=ћt]f<]^
-Ro:z>PDT>Nt˽X8*RH_qZp[q2e"D&d$<axHJ- qr,$Uu	mت\ruR&hdtDhs1V9	qU=d/Hd/Hd/Hd/H/H+ޓ0fǫn{
-sEes=|ޜޛ{szoNeNף\$!qZsΛkʸeCK+գI&=hH5Ir}ґb#X'#>e`̏s	+rC``䱒`7]A,@S1JcHYnna+.	HKG}ѡtU2/ca^O'<m^Kh$ɒ;sI3*KSneݔ7!cJ'S6zZeffԅ *;1
-ׂ<Z(Dk!\c)TSU}mZU׋-[t\03o*?eQ}p32`zQCrNE&O7 ұ%];~9")Fx=N {7ݷ
-إzZ:TGvZfE=_'r~oݗ߽,d)lԢў98D	YfYx֪33qgYNs^z@켘ZJ~4jIN'Xg.vj
-#KSyFc?UTusUGLO*_1n#$r&:?^hk>aެ{X[]E%ߞ8Y2ytϕP4am?.V\l-U4+.wRn0`)lE^T,ʐˮI0ZjYNC2u| tJV$O"Wm.w:l EPVTs6LT<[HYw2yPTYbz:tR%0<*㩇jꈊTFgq|+.*RHH8sU*kRL};&~.ߩJ]B4G:>l5/SȽR,Cӭ'</v"5c몑X$E{Ӂ6 }x!Nf 5ٍ~9GA鄁W-O0fT\O;-lC 4FFqȻԕܩoLO#`&@I9<:qi?2wDwjkrzJmnܠU%՝2_RGõ"O$'},)Ū30)ݤlꢧ|Rpmg w;ߛ*XRD;hZ3wQs,}9)jK)rheH}Ah}?q
->qzjaEgHsߣ!/J8Q+k/,,dob4H@p:XyQ@IL`hd'ܘ/I]o:YO.K|AYk>aX 扲b]}>أI7e}ʲ#,9e\rUҲqf~(kY󧘶Iw]L6-Xrk EL%+=g;Ngr4SDɡl|z_eMԿk}yYuoSۥpAj"0#
-mV+D"sET8$4JB?=oqE=S!m 4ܰo5k8wφL|6MFn/f3wx2?AmO[o}?W?j{w|_|9!qG=w担e-;mo8y?Lsw|c.ϻ?~|㾛|[OݟFv5o?xe-2uYhmw<{s67ж4c>C{>3ug<[m8Gp-'Ϯ+_^~70r`n>܆|.gkb;Artk9fwƞpk#w#61Vwqp͏w/}9{V̳mmnSst6]Mwn@3̙iMб4{nμ9Tڟ;//l嫿o0t߼y>}9t/fC|6s=ka/4v64<|12mY?9H}7_yul</y߭7bнXhu܅hطfplgh1693YH⍱~>m8?!;>8?}=/iB.!8ۻa6w( 7H\1Ӱi7lcN+Er)'{aIm!owuwf@C	ǢQݷ݃`^"/Y	GnB3礐$8$?GS%(qz&)
-=~DX|v'O=.Cl{tF3WCW m#J>Lg݆Nژ *?ϙuu~#56VlBfmcu=GԙHI
-
-	59o6˙KK]^XIG/9-oV8 ߅tW[pVDePȦC&nxf7.FvmH6D7E7LGlS?#WnNUh]6t7.7#kLdqo]OgLWio!]ORUEᲆf03fjvUkF'~[F>(CdC56=Q -6%	ŮM̙\82.r0+BT'&+|,I1QYLo}>^nss|C2މO."jh:B>v#檋ei ]/nh+ywJ=X-Bh1TI)^L?aĶxXpXw:%89f^tDcAD^\_iaqŗhow>&x[_m8uˈcAxq|^ct1P@aMM9@"KDDNI.w9l!IV#W	MmvXl03;T@} 0Y.L!IS"`2rl"ޥxd)įm,1s\ňy9*8TJfi$=3,s/2P	eLtdkI/|0Ǵ8F<"{n5x~lNI0Y9,(M	7X"cҙJya^0Z ʓyO4h$znv.@R$п"f'#@ƌQj#Oa#'!k>.	E~DZތz Dy{vhBxhIMMƤ0!6EDv-b"籓3߳9sʘ0yLoN!f!Y$5X\c!fvG#uLad%XȞp	\LO͚P-/%	"zY'D6FFbԚ@--0֒%duD#qA2fޮl("g&Bs-YolC/h/t7_~c7wYo_xT"m*SX[)Mt9a3ߛ{̙m.FYÙ?piy1Cg<͙9#_*15A)[|᷇C^kou63k4пpx1GcS9v-[83Ԝvu_3gיY隤3_|;fwjxn|ovvO˧Bgc>u14{aZ̜;pnbfձbsn9в$_Vۯ/.mm_G7ƯM3cG9h-lzhh=sc÷ݑ3}9#toP+7/黟^M]tw<|;w|!QCwXײiQ,ȓv4؏`\??%-o]
-ܕ8z-Ǖsﺓ=eڤNw`kD%b
-Roe#u`'g,H+-7-]zAɎxm7C;k|4ht2%=ohOӍ7G֕^H}FOmrP^аI_ɩ<me)<ʎ)wg_;M eHZ5Eqp/-͈"7L3ۑ~쬊t"SEPAz}eBSu+ϣ_/wbPY5873
-5/_Ҽ. ބ_ȍWGfpabh~AISx(?"%p@7Z!\-2%=>Ǉ_ҫpe+^-HnoS)}qRmW:[̧-v@wgr<f'1Y$gz)6X
-}N={f=9¯c+c"io^Eo Glqӈ2<>]( =p +؏Dp%yEeKfτn~ta=wG@9g/>DNap¯xY #t;H96Q_Fif/Qo4KV;[ODswga7^2\D;3 \',}~;I2N443_ ozC _F_9s\w믟~ϧ?i?y_c?g?އo?hoIy~Hѩ@/0DKhn'_~@6^ſ]#~Oʽ7J\`~{>bXqlYEDz~dEO?Axq4\?Q]@4#gTd+n8GiqYQQQA!F	wOl-ׯ~8p=w%mzs
-5lWwpVn߆nn޿ͤNCƃ79w7߮o"P4|;T_O=>5~Z(\qT x<9[nzxuzXt(b+7\C,?:BQ%@Ex6_GFu)@QY|CU;%G_'	'0:f~loV)"<b:1o3q8G73MOp9&RPLwny5FFz{nJG9X0&Fo,aAi1^g).t]߲-O\Wkjl}8:܅]Gx(Iby>Ұ*kv,sMcURFcuSa5{o!qB$&(6%0)!qJXǏKn"S d?@J+-ĬWqvGK'Vj`G m'Jr|OD╻	й	ak|}2Xmfht,݇a5r{@ç;E7B"=9]nf)n(#cЃeRI!̜.G @'(f2	+Ɲ>Ÿg%-E,f5)5.p!ǛϾbϢ6Q:_ځ+5}8{:v2}/z'k5zIfH^IJcİrI	5&Zagqt0o:~(q?Hח+1WOV3tMꃥ@V[zyuJ0@VJRB	N֞cĵtt}mg.,L!acB>-+V⛞\gIoHe7="椶B,\+4ˠr\	L1pHQi;usiɀ/ż]OjZﱎ_m\hFplT"ķqͿŕ#4/(Vw,n2ri"\!Ymv7~wׇ fHx7cXpfO16b>ְdADTmXZK`0cn,U\<w2y _%"Ⱥ{n(ŋ&$+fd7'C""PMk:{n@+DyWs-MxHxC`^hFJq:'e/@o/-:^K%|o/rx!<%'SKH n4Ze·}l"Yހ.zzo@eo@Lgb@i)%G]zD`К;{8,	*G"HjI	ј[]z%c@.\1WDwVq_H6PT n0S,Р^º0}5	aA	 3MZ~
-thdTpX]a|[n*
-1n;\r+XvDn6plimi&tܜv[#i:hbznH|(Z6hHvy[miL<kJzXvC"vyvQyZniQVv[mFiC-`UE--KM)(?皶oO?{76X~;fAC=v\x^b8벘yHI7?2zCҏ5}3#v#^Y?)iVy|9}q+l:ҭq.ϥdf̱a#'Oy[D\c8:^1\y<3%+[3L?%iP&rkr<u>4et{b'y; MO]U# ,g
-f6uPcZҀf7qcsj;k'i^M閕jKpCE销uV.vA;Dr)i_SI6/5}~Hs؅=[o뽏mIp7A&A\.#0&}m]펪Y*TLBؗ2KTa?\IF}D {6E,Օ'-L}ҩAE஦ iV}a5eTpRԃ=;O9mueA|%ԙtD^ڈSZCb
-U2{]af"4:^ۦ; Own8K	Ǜp29J[k],3nq2O[iv>nN[s¹ҢW"y1
-7>֊DCjFwS]8 *	fpIE)Pt=IiZ'4O'ZϒhꀑTfA .>)%(-֡ۋ1AbHr.Mɷ8EA]17uz8NC~%#%y@XN/~luGR0\S\Wf1:i&i69b?'%5|O&aɄcH(*(>ɬHidiexՅb'w.$C1D[Kϫ`NLˉ#yO<HW!xIL72碨'[erJi'%'tP7_Q.?HSG؆B*_+wo"KI6O
-s	Gcb1jjx^'[QH>]Q $Пx??WORƣ )$)DcZ"L-mIkۭ>.4*>vå\DaGCJ?vuVQЏK0<]"6܀մDA$@Q9nɑB,kp8ř>AYQ(v}=W hd?
-t{O< iҐXgK]£)R%Uet2Gߧ,!dF^wKjp nE_.y*wh'cGr]< Gi4w>be=/Ix)SLyD߬hMҤr:|qل>"`~7Ħx`;	Q"^V\G\9r"O}0ˑcy!2YmKt/6H6I.M`]NqҰ"A!!Y-O_2P[,ҮjD/(yBlz80"c")Ax9,U}jx8,Oqoǻ4~D[)f*tɨz[ۗvP7s~Du
-}ӕ`?lpEh(y4іn2nl7R qX,?@;9@v8(:f=&blq)b@jiYb-7kDghS_/ѝcY#BtQ'7I0kDk}eALsyLZKV؛dE%JkoJ_ƨWn)\f dsnr/.Rz@z2ylo$vNQ34UAx@GHWI|W­Kb)#g(;p&mKK!C8"OxyDsw!7߹pI>WhAwMv.P
-p%eճpm]`IDgOa=+CM߲O{)W'nNh-]+j&ڶzccl*A{tXKp(r XƩj*ovID+
-qm]#M
-/Ii?+$RL.7RL-*kǓaҢl~|puȆś8ʂ=l/XSuUGVEymUB$1N)*b5ͭ~HNfbxko߽>ym}	;wm$Pk[v-w4{o0u);W:/"0z	ɒHmxn7ms}G'V3%Z(aϘ%-	,Ym[U?XB|Hr$|=;koP%j4f^(,	b(2uqw]""׊7L׿Zxg%f](9f/8 D=Y6ρ~dpbcY(5rU48©Hw"=@YPQk&ql&x9dwK~xhse"о_g"DɑViR?b <Ds{zcP%EŞ듣Txp3.6>89'g!嫱ho^m8	JPYk@$3#:M =OHFʫb|$ky 8RXGwXOXB} hݝwMl䓿J_oV; 3!G=HyuL.TZۢԊrJ'74!$9	9ۥhGN94$uJʓ`Y(˿UKH<sg*jJgbS46dRg6*zw~mFO
-WI2.ԍH;nŭJ+lʾP+Քv_]ztآD.IuB"z,ƆxVޝ%R^`?58UdXvq&R~ 0c&1ǻ4w-9bU m\NvYpwB˨֩-@ըBU){zw.=rlv<jV<-##)'`IaU	.#`Dǧ$\:8R1Hr񭐬2VX}KHڡE&S~G=&"[3.%S{D&LX-z"OdD?U}:l-C_j)Ajh دݭI-dTH6a%iK&MAcӊjR^qZKF|y0-6 vqP]<a/j](a afNb;;,݃j-DK5]hQo7;%Y`YEB29#?sФ1$Mв8h[MJlSJA0pTAHZ?0o*ْ8ّe$(E67SdʯRuScHfo{Y[H@"ÃC)>FNcΛ9!=RK{[`z9̩-9XE>jzz?&JA8rXnysڻ!q-ަBG>ׯׯ1J9ֵKjgG楤v1S1x0b|(E0UHm]('wNRD'mc5/LÙDO["`:ЙY:3w~vDY_f v3%#dMy)Z̔7[nnKoZ5joC|5 R<3 ִ ᖗ&5I?{-6JQUq7Ł6VM|X{Izހb])&+BhCڽ	u`?؅&^CS_khs\艫4qMxq{POpaaf\zB[K?0r@M]gEʻPWvU!ꌲKa`MXd(	n!}n!1.M0US~Н!	Ug>ha:i_*|>KB&@H~vB$vhp Z$$5) Iό ĜϧR `Y;Xgw[iS Ӆ;\)vBgWwz@,z!m;0ƍplQIlʾc][BB_W!Gh%oUࣉ#pEDhhKEPi;LR<A3ڻ#gL|$Y˫-cma>8":NTt:!l]J;kf$n`(\~mZ6=ǀZSɐfT/lf;({4qʑ/Rmvk8vš	RLGA?4Ś
-VO1oJ|ʂbz+!zf%<aqx2Z~KMڭo0]%@83e
-:5%=&(w7uyIá`XŸPꭉ}DrwG-.yX|\ؘ8,uvN	  2x
-odir|{'ʗ0YgUv:m2d;;e6ER\~<ӞDX%d$S Yt~T!ܬx_0>\`RDԏj*<0۫ۘ$+9٪:3f1%XCbG7j1:
-%oL2e,g=o8<%nW[YcuGe(gs=\ù(ye)1 jiiIb"%vn4>XɣŚѯ űhz 클҆s)k7iLƯv@ZI]̝pt{ˇvrŚقŻݹ=IP9X<ҹC{ݣԺWʈ$/%p:w$SŮ
-<d1 ~772W"ƹE}~c"?	T<ħl;OS@|9Դ߱+GwѯLqK)Sc䴡od@ 斍Z"hfj%
-*a 9-EjN\x^G
-r&.1 ky׺}.'0&[)7%S#cp7eW߄6,3^N%ȕYXfLI݇*D$~9'~zgw\K<ퟕReY!F
-T315C*sj}}A䨒AS)&\P">X᮶]գcLK9'=s2GP$~#.Z>I,
-ȀTE/2+F;=o֏_f_g=s9
-}9+У+iz ۃl#Ηvz(uH	h?t`j"B	Dadݘ-7Q6)?pA1໲#*|&]&	hR$@s[O-u+f}Yu*;uXp3$Rg
-.`w3į@O-- |QJHu&jm	kb٤Wv86߄ɋe
-yɋgjY?L^lV}8		ַllZt9Ϯp>igWqc	zy	W?b[)FEϮvīIaFÕ]MWno\}e}@C-Q%^h1Lmb</Xy2TrJ$/%<WO-Qg;PK+w dGzQ]ӕ)NQ0 /LzF'<ӣ:\}<G{T+'4hQ/G<\\Fv/OH2hLF&NV-ny9:|> դ:;{{"yH;y
-4g)%`<hI~"-Ľ?X*NuA0)ʧz}AZa0X_LQw%^8Uf;vEfv]؄4+s6B<dX,lB":Va)caعWϢHDΜ-4gynBD[oHyԻΙǛ?qEcWW2uْf/hTI).FO/c$Qg#LöcBZA='_=/~,~F&mF2iH߭0dTx2-AVVꘃ9d-ϐ).+i2Z{6y6xo=	3c=`6=|ZN׏zo}_s{s{pL`qtJqZHnPSrj?Rr*S*,J3Rǹl/ Y gU8_mJ".Z
-qktB3]ff!HĢ Y#4麗z[:kĜmı젍iC[Aq
-"0t~g|(`9(G6fr,c}d*'3v5A]2¤eTY4s!XFBZ%*sA$$gS,66)I"7PHu#5Hvs(o\~kT>,)cR_'_mPy#?7|y^#-_C'Dzv=Y	(ݽ=L~7'
-R)/{0b,c\NB c-/XsυDIs89?o|ex{X_ا{CzKL[깜W/y:*0ӥre{ڮg-%yOxLZ^7GYi9V?'crU0p}S	;P1 #BN/=>L=	f8|o C:d `n1El]6?{G{ț@gK}Z>+v$ JᚲKo$k} 66
-pg0?ͪ{4UQK0p,cNA!;dS^eg8,5*YUgt[<Iv f,^C   0eF(˅"9hQÃcxtUN;#[Gf;Yv.f%0Ej	TD1 	@_^K!::ƷV
-mӬ-8w&y@~D&#vQ5k}udr4:Co)IP5Bn0G5+	;uŅ)d7eqޭU/:!>dИ]J|/Zd/%wϱ{]Ma/ ).I>Qؖ<TǺlIyKu3U:eO~;'M$GIw}m`O]ɷ>+(PI"fR2-܄sq)#ӌLqM-jpMB:"qYnI'ҵ2(R!7-uR֣k
-(>̷w}b1KL>3e0B.rrjzs91{ˉAZx严	}'gt
-$;̻P]_c.NdP^nO0䢾;Hh3{ԓW#UO&gƁBSjz)`a&J]=*7AG&'\#vP!Up0,7cqc#Fl"j*ˇa[؀}54tK[9&͜!pjNXx/ȠN!lvt#.	GW'w`PUՉ 1yq bpOA~KpmrHV$eue<
-[lVKy?[ Hp1{Z0ǣ^Z
-SA/#5+]慆p2dt
->햘9NpxΚi6L"#.E0?O<;(cߝf!皁p4Zz|Ćof`@rBQR)Cfp 2 i4N,roTf;W&|Xop7nsf_|#ʶM4]L[3 d4-
-&"XpIq ?ΔN
-#Y%Vm 1eh6CM٬#vށ=Sd؟r+Kمdǣ&pvJ%*8\`UR]~wzGx<ǈ nNҗ5f.AdK\0ڰ΢֙{`?c`w<oD{ 2=-kBg.2M#}gBN60G6hr	;;nbK
-#8HOSx$qd2./~mޯWvryCz!VukCӚUٻPҫJ/I*1}=`UM>mvD7j>{V.-܂a7 b":@[UBʟDq ?ð3 :(LvoG"=xM q1bGĨ=EoBt'5-VL*AX4h?B)|17{MBD SC i&|ut=.=v\)O3[/V%%6Ōt)xj,Q#]
-I5jyTLWѳ
->`fl؃GO~_mYY>. H_LJ~.~| gxe|PrS@}JPbUqBvzG5FNhqsVs?&+z`&FyԆ`5\F&7sXȀ"?̿SV1*lF@doñJGO cym!zט'J>#
-m$ubNsk(=*2LBZ
-VխfГ3L}Q,g@t#b-Ci.<L[kh?X)B
-`v4U郁}_@}EHɔ0~b#%^س=
-|1+})9 &rbr!7tO%`7XROrԸSYeZ'HU#@݈(տ.w.6GR3ha5O<BX)ٱ'.iRzQ
-P`eDux^AIPXE!LZ
-2dQh"$F29wPrbu6a:sC*NgªQ+o| ],U'J7Ʌ-iwzm4_L=6eJu93^:XSG=c&d&L4Ǆ2	Y	%Մ$A2a9m f|!6pvDd䡅?p6!0%٫M~EOC fF=|jD7&O<}"2'L0	eգY|}s')>a]\R9)&	DPOR}<>}a41	yD'O8|~$zLb^?ơS@}vs?a<r%Yߟd'	?yԆSr]iΓN&k1	0AÄ`DPv#)&	X1b"DI0&1&4UĮ0GIA|r
-!k"eoeLV)b؁ʜ_{-b;q={ߗ>s4`bPYגw폣i)s'sK'eNrs'e=R䉐VCad2(ϬxJfg"zFB'mn3g9zݳQ`	fe:p8XJ10϶t)ϦtF%P'Ǚ/p<3J5? + S 28Q=%vЯYkU?^PQ~}T1hY vK.t$6gv'q,7
-{X)q᧨dB}Ln$v'}Jv}uw@xe;؏^kۻѶkfm{96nO&s/ƽLOK^nR[ӹHP!|Hv]ˀ/m.MiWٓL>+F1~w;7Bs7BD'}1-T	aE? $A_މy\>iBb@:fAߛ	0pZ\䥻o<+V?`&)YKkk{1xׄU:H#Xڙɗ
-BoȎvnMØC
-.67?*WrU/e<Ї RE-r"	VЂYbKv^+&d&Qą`tq)cCv[5XR)N6u-Y?b\$tMJV9<qr L5	SO?L|K`!ݗQds't#G'}h{E)D_UviR`*_<	!ι<X8	c@SBk!kAx&F҇ _`E=XaC
-XR$>OfFsfD"(,ĭ7Ѭz-N6 ASI#5 aQcI |ǆ͔c.4wf/O\>Bj_*c!+Ԏx4!I9=4昪:HCLG:S-׳MJg$_ܬ59A>
-MTD~<Ek^A<0v3qKz>JD%Ti3f B <P@LK\W,Yoi)Y	9`pc4#"%)?ڛZ؄RXbr/Ju{pvH" Wݒ5R%?HgHGgbnQJ| }cWugugwT+Iszk@\ɢV\C+D- jhz7`fs(SM F`*x7@ 4f!uŒ5id|^K@*{Jn
-bJXR),A"|4	+_z$"PQ7q'l'(2kH`!>eW? fZ`6Ös#̉;[Q~FGbC^fptX1c<R/m3x`Q1<H0OC N2 |;`Sp%]n ~%_?wqƩ`&<M饘ZGhy~\WX ~y*W$c>?z]l\Y
-<cS1DR ˀ8T,#1DҟӉ,2NlN'tƒc:X: O
-|!xz\悱Νrv	Y*ǛTxwX]럒F6xi$U{#͟-ܡK%Ɨ
-?N0tsf?nh/~Gz=;wp1<Oe*/LZQiaݎ҂r4pEׅ7IrTh!60\,X
-Qia#LH	0ڦgBٌ+OmJ]l # 8rQMICl T{5w-t/ ;tk.	 pYQ,=ǥ\C=%Ζv թiCQj*we>ÝRX~/	lF&J{9(,\ڱ5uӓ8^RqO,6UﱕF;U]߄ik-]z1=&訕/ZBa<?kq'ۏ0{fxnKDχUӫζVkZ@ee!`s7B8=Z(8MѠ3,BxHVh2}ARVGrVoW{K|yS5!llY~:%G˴4?xՅQPbǐAS:B*|tJ yғэcn&mq0*٨/96,Xv<TS3^m)TKQ'Q``%`pZj|O>rn$DNg_r`5$.?`oPt&zDj7	vX"g񬚁G=\=xݚX4@G*[vU$r
-T}K"&xh %iӼa nlWOddURA0Ob^.؆U`ulHIR6+8;ʇRopק\:2Qy>xG*zA*rd[df1Ԧc8ۮc?N-a|GSv Sy4J8l&AJv
-Od[	3]|Iʨ6h_ϙzP0H("!eنS1XbUd˨tĔGR\4S-+WZU9(eFNI/'u@hrVN#1̼tJrohrXLVT.4ARupNC`M%nQ47nZq![M	nz	B<Os@Lb%3Bz)U!I=Ҷ
-^<_)0^VQEFnuTu{L8q5P[W<8ܷ9t+8$pIg=qT:D]Qwu{ɪKZSMz}a]ݞqr0	*i`LCn/g8*t{IFT8(Atԣh5}mLW
-E00/	]h}Nbu.u嗺D25g^fN?aRW&y:[^{=[^!6CFt5ݠAe>XP |C@D6N4ܡ	R|(yܵ7h<'a*:\z+^o#Y\R4N	ɍR}ȼch?7sY]a*:^b-uXfR1q1dFA\ZKݦQmA8WsU
-n{%)6m ,afxf*:oc>y	<Qaf.ԙsJ#Z-:ǹ8>Ez@31vC	["mfT'hkfA@z4R	֭)ͪr~Ћ@
-SzULS/K7U75,iR%	O7
-&P
--iRXO։
-K*Xm<(j*NV&ۂow# 7o/5̤dd= z~q	[C$CAiw%!DuE&ޑ~z`Su:X<uh%0Kq>9l%Y)'9%"JnUl3	&[$ɳjY1$)"tj*,ZbS/6bӅMcӋ52}jQt؋]DE
-'S\2+Y/ޒ g-5nj-Pr} i`~L[4]KMW&Wxd^YvjťpI]('V/XSu(#Y*VN=%B;Ꝕ]\Mkcv#R,3zmP܌*<_R/I/t28s着j-PW'<n$'ijIZ3. 3^pе.u;'7Am=OJl;zةI);s(	PBr<[<C/ZU7SH?%SŪ(؊T
+p­s:_(ܥbB^a|[<'gSEH>i[s-3F\NN#8qɼ)ׄ$,yE"KRYX+}zMmVȕ4#Ѐ&tpBOϏ$t*ͿuA"gԗ	:Q[*W[a?c=O׏x,xQonb28AZPrT^[g'.zrf۔iThfu67rHք<5w*b%!YnK[HU K*{\5.ת* {A#F{"Q51cq.^g_=jM4񞾞m`cep2St	DFXψOM Wt#[1%Nn!ƼZoK1co!ciJwQr@|q@4o)6)6	u"zDOB"jỔ!:/YRWj$śb!ƧDS(=s~'v,=tqA)sow	eڛ`oJ.5?զYYgBa5C;/۝'G
+1xJӀs
+&a&'r7Rƿ21I$-HH*NkIظ^~9KS@@d$]G{L!R@A}YSmB'ZPTx
+gLT|:
+go2{|zꡫcA]QJ B4|@vTv,:3#MO4Uj>6Ed2x7]6;ve +%[1L쓳f6R']UYcy;n_/6cfjC4	&ԂJ;" Neƕ:.T#"?
+&̛0κWuֹۿ.q]4=ӗdFQ'D]l vcrspj-.\(siE$AG.WXL(g#lK72t:i:.]NYc#[~(z2fY_YG%L=eb5լn+}J'<wvz_oj8#5޴m+ƕ
+^~}XM#YW&,?7-R/[8@;z5BY)WYWaX{gPd2zoVEA]%6x@5hr}LW}lbUY7&S4kث	(Ќf- *!N%ߣnHЂT+',NVX H<^V=yFpɳ,&MMOu.%.҉G)6=w<3ElRisPEZ[<J0Kk`$YʷS7]gBǙȕ*<+/)
+J"Zge/2f)+:u^aݕg4>Hp%wRF#A$zPG,Qs&[aR5UY̓=jjUY{sɐ΍!eMbMT+d"K21x)&:f4&El{l)zlR*ڣvv9㈃㡗t)Z,gF l yp֐<Ń4q	'WW˖_-w&7y9Hd鯂QyӒzj	=9VƓtչ'df
+Gf<5R)8jb9z(:MD]Nd,NN{Ps.h7YځtGN|s90n#О|_5~JMnq&%p״`)ؿ#f֜%2Pש|S#S	ߟ.IPƪ=aXuvvxg?={v{#WU"*U:XQe֮ȏ
+vRUSUj%z*{yRH43Cy7\5Kkdd9Ymdd\=*=\!%邉wDd9ae ǏUh9B^uUEaBExt]%ate/I<[H-o;\:RfP:m	LIe&k{A8;Ǭ!ȫ>sя0eӃ2eu
+fTI
+''m. 򇃶6	a?s&6&(C^PshuhdhQ/IJѢ*@Q(jymylbyAuMV4E`Ek۬6{ܟKYmE>ñI46 ATW41F઄B2#.fݤס|bF֤sC>p=Y>-ObiyN.N"T(xDr8yn"zꁪ: >\'纂qyn.	{??8JۘҕpTzfkFN/N/ᔐpy|IƑq9
+-=j	%]g"dwSC\>|d-3͟,J\]v$:!@s\ܣH"=(ңH1tx(Fy|U;:s|-]zBqL$+U6CdɎpeZ2Z'?e#^ž(;O aAzBAr¦Ti04vB&wvܨ2
+QDS=awqBwr5aЛі(9a{ydxhKyFMjh#硉p9a$Ƹ H;%I, #{m)5'&"Esbs$I񍨁IC)E'LPYy
+yeXq(f۬qx'PWd]y]pמ/M=>ٓ'х!B#wm9Kܐ9	f;u_G]eMu|.v)7`=edsY"dgrQ'MIZ^rV,xY)	$8p[e-82~"Xp@0C<$s8LI^9Tu:҂6Xl	J:L_ZrIq˪{A${A${A${A$aA$I	H|M{	C	U
+ҽ{Eչ"XTⲹYNGV\KoN972QHJM8NUynBTIbeܲ!ѤGMz4y$hrQwLw$9>H1GYS^CI20^HrgGǹl9!vGk0XIZayZ[?.AuU[[mbJx~J{ѱo$,7ҰH_rf%>XP*0/Qͧ6/%4dɉq9$癊}%ˎ)7nʛ1)go=dH`Btpi|GkAEy-u㵐U)e6BU:l.̙7Uku(>E؉n'"W[U\rX.in#<~'drjSkjZR=-^k[-lnURjDxVˋqhb^6jh{hdg,RQ<rkՙzuӳ,'}`/=w v^L-iQC_d5Ō$3k;]5%֩<DrEܱ*qٹ#Ycs'OQe7T9RF5YoVӽ[UH-ooϏFy`^Y<g:_dJ(y+HݏT}eckq;LQG/*qA]CqeHeC$-,!:>H:V%_d'+D6ZR6I(	9g*H;QY@Y},=:[JĒdge
+cC5luDEIJ*8p^k$ru$da9VDV5)arKT.!#LfЎ)^Sjmkrc	;ZuH[,Wp@bz}YCq>d{MJHb
+ښFts?죃tHtRcl*[N[B6o}Yv^i#YJnJ{T7gLNjb$h;;L59[=l6TXqnЪN`T'vx⁓>tbՙ\e̓^nRnuS>)rO_M]oUp)k}S-nř9m5~%9	D߲p|> 4>	ԸoOF[a}8d⏰3D9pE}%5mW27N1O[l Nl,	<A h&ՌXQ42sn̗PɤttЧ`?젬\l0U,^yDY>XnѤ2q|c
+>eّS霏2wz9t*i83g,SL[;yFy.&nw,JPVJewL&ǕSDZQ|@39{)"TKv˂Px6s`>ۯ&Pߵξ͎,gCNΈ:v۩S8Nh6Pl_ȹ"*{rYej%AB]׸]owآt)挐nEhnX7\5gCoyecgnk#c\3͙;|<	Gl̟ܠ__ꭷ׿^~xvw>/_Ð#Ϟ;tǲlܝٶ7\^Zf9;G1ݏ?qMm߭|_O#oh~w}2a,4Զ;Ͻ9ph[1=xn3-Ɔ6#}8sϓg//~9]M0f~fn>3b1t}]_~9i:a5ǜi3};c\85F;tfmx8X[|?޾}+GMَ679k;kf̴tk&mX=7g}*o_|o<ۇ_vb~tm{ih>^[oPkGh~,˟~sY߼r_:6ŗ?~?]p,]Ǻkcgf|s4w{[3}83ss՜,yxXߍo6~m}ї?!h0QGǊZ	 $iشC1b'az"9̇qC$6萷޺nكA\B!cрAwOA0/pJB,#x!sRf)PH8`r	~aF?g",>'v`!rቂO:!+\C@fX&OFnC'mLOhwڟFƊCQѺ:?UwOu6!t3]o1 #
+VL~f|$[~7%.?Ȥ#ڗߜַh+uk+h8t+2XD(Bdӡll7<l3NvM#
+6$
+l"Mv͢ONw#6)A7U`݀*.@to:]pFݑ5&
+G7'	zE3gN.'@*բpY`al͙a	5FlR5_?-#KqqG!Ls̞֨BVb[tR	.]CN@ɂsu9ScL!,7}r>QaVAv9G>OtܡtTG'z~o5O!	BBsŲ4|	bp`˼;j%Lx\Z *[$/0bx[w8;wْm`_3aeinz/pI:"ݱ {O"		R߈ܸ^K;v~-h6e 8>~j{G(Ű	 ~^%Z""@^QD$zܻш$R+&XHJ,6Wi*Ar,GR&z$`nw0a9m6O؀PoRS<aT6IIƘ9.AbļL\R`rW*\i3	4SOLh2&POy25c|DH#@sA=7y<N?6c'$zoa|F\㦄,wڱ}mLcn0؆a/-ۼ_s'wHFm7;n`	k]Q)b_ LZc(x'z0~5VE"tl-qo=WT <d;4v
+SD<$&b}cRuxcdil"";1
+9eLg<C'rѐzqFq{H,E1I#:k,|FdϏLOZp.&ʧfMǖG=Ƭ"MH##qDjCk|2v:P"Y쉸 Q3oW
+63}gj!9zᬷe_!|p4zݗc}/^~pt߬/~	XoH6)ߊ&W:K0=s̆6#S̟L@g8Ǵ<Ϙ3̜cwF-D?}k_{ÿ~[qoO:i5k[lw飱-jpl,tMҙ/}3;o{vwo7}7~_|[3x\BFcg0-{fg87lc13xX9shY|/qpi6w_wWצЙ{4ip44Bi{cܱșۆw͑j7h(˕O.~ҝV?ߐΨ;,k޴(BIONt;~Wu^lVğYI.Q|HJ~MTʹwI}2mRK'B;kX1H7ٲ:3}K$JԆ큖 dGN<zZ5Q	VxJ4:Q7اo#QJ/j>#ħ69(/hƤ؏TLv2ex;3/t& A2[DTM[$~-"XF8EfD l^gaOיH`?jvVL:"U( =ž2!/h;F{zBPU/iDM o/?`+#3ӈqGww1s_z4h )<R 8 ^-V߁/?BN}~$7@Bԅ
+Z)ʔ>I8)+Xڭgj;O;393vJ}H`ғ,3T	,~AI>J?3̞|dkt1~AI|7T/Ϣoiy|s_#EiD].y8_T WGFn	k"ȍɿҼ"N 
+2%gjBX_fwמ#dY݆3nl"0kb<\,y~ {:z~i/_47ƿw+ɝ٭'X"9X;3氃C/?v.uIc^b?ҝN@'O  7L/_՜Z^~Oy_ӟ<|/1^|ֳ_wk?7Ĥ׿<U~T 	oqϗn"bzA%4/?  ߮Бnh?p'ޛvIaw?b18,"[`qdIt\"d?"ҧ~O <8bm. wꑳ[q2vEɣFɨ#pC@A'xc?{׃Wփ{|Հob\6;Cyuog77߿ffwK!@oty;~o׌l`MMŎç]
+-Q8* [j<r-ZE7S=vCoy<:aGFtvZ핿.r򂡏Dao}("<}?p:ُNwt QyӨ,>!jZ*wJ3uHn?Ip	z7+17Gc8O؀&X)}?Rn7<Di#W=7e%ޣ,74B3@ޮoٖ'x+X~_Q6>B.@Dϣ^LRA$<iX5e;UJJH@TD˦)J:)ǰ=w8s	h]
+{]TnXn@rtt{{H
+菸}kG%D%T7|t)^r ̊Bkb֫C8#⥓A+5@0K#y6`%9'"]
+܄5>>634KO	W9= ӝ"}ɛWKE!MP_mMl.73w7`v1K~JA2)}ǿA$D[fN#Z oz{3wNbܳ"x3Sܿ[Rϐg_gQ(/z>aʌOuM=z\;~[BzVwΓ$M$IAbbX
+
+:\7?E}$r˕'&R E-v=^Ӽ:%u Qa+%i)MA'kO1XZq>~ɶ31!߆CMO3$7Wxxn\\KtsR[!Jnep\9B~GIo8~Ix4A9dd@Ub^çX@5X⯶w.4E#8n6K*[8TuEJ@bH+B`L7@^r4{kj6~?Ca$<қ	1_M8x`qHeckXdW "b`r,EYDX%
+17*.];F<ǯjjFldݽ7~AETLPW
+zrɛœ!v|Yq(&]\{v5L7 <+9~a&P`U$cX/zUa`4@by#s8r@̗qz{io/iR|Rkr)%$|cq>6zzo@	L7t7ހ~
+31	4|LCo邒#.="0h~a=ÆFzĈ#@I$5hЭ.pVt1 yRtBq8/awH$Bq(TDB`s)hPda]VLܰܠb鏄Y^h-?XF׀f:Io42@Lp8p	-7i~mRh	"^z8M4ش
+zn]PI:nN441=m$Q^ipr4N<6ݴB&N͵M%Xn,NġvngnrEШ<-
+r+emV˭@	Զ@#ȡ&JGsM[x7Z=n,?@3{N` !MLJډf;.B/]uYLTJM
+<Л~YLǚ>?a{Oq4+<ž`ݸFypEV8R2J]3Gذ͑'Bj-"S1KveM/<ӕ-4DxF5[9:2=Z1<&o.f֪  M
+I33	Ⱥ(1bNi@ƛ19ݎ5rWtJ%u"tJJdOQ"vE~)$Ah@>X?Z9IﭷǶz$ s_V쾃.|vGլo
+\*&	OK@eKOdiBĥbZ*_	.$~h>k"`edu R|uʓx>bT͢YpWS4[uB>Bnm*8)6\:H\~ _NZL:i@bm)d1ˆ*PT
+k^h=D.0LOB3[A/miۧ;7Mov.iv8n-4efF٭iv9nbiQXCq<xLϘnzFkEm5wAl).ǿ38$i"ZT(H:$D4b'-gs4uv*]bjtCwԖEj1$9Kft{:=ǿ
+d!?ɒG⑒<TL~Mx,F'?:#})n.Z)R.+THO4OOcȚd~>I'd±s
+$pdVTDҴkmb~Tr|!"-%U~'wSđ<'
+ΫqɐK<}v`sQbtTOx2i9Li%:?S]Pbg(ASB\އ#YOKTBlC!y|/迕7$P蹄?
+1r1ZјtR5D<($^.T(hO<臿+M')Q	1FWjSGFk
+j."氣s:+ҏ(%.n@@jZ  kGH!`5
+KL	JoGAPv(lUшE;A>Xߞ+up4ٌ
+f'4riH%J.nk*2Lz#}LSYKQL2t#%
+58By/<;Pvq.XaD#4ā;a{ـBH$_s)[oV4&iR9lB`0bS<{M{Sք{w(a@/+}~trt.h'A>ȱ%:?$zd$d&Mjs.8iX Ȑׯlw-@iqR5<!Oׇ6z
+[D 1 `]of5Y˧7g
+x]f^?-r]dTL-t;
+V9?S:^ﾋBIsNWQ"4PJrhK776Sfq	Y,?g;Kf`16Ÿ1M|w 	PI5Ѵ,1[hTN_R53ɯ[α,LxxXm!V$ƿ5"͵>wD
+ A9[<&CP+Mޢ}µDhc+db^q\
+Kgw`n)sw= ccOBf=<{;O* <ppj SN d#^R_˫p+I֥Px{˔38ն%b!B<Z<	"䐊u$+֠R;Iws(c8ITDVY.Z[ʏ"}N3cY!ԦHo󧽔W7MɉMV K4Ж5Im[16]AE]9W qT5^ۤ̎qҶґ&xD
+˗TKG$j4Εʎapdv)r&rLXGuT&TIw0iQUGg6?mw:bdCM^e6 ֺMl`Ъz!C[1]?w$'3{<tQ<>i6h{|h;=7
+Eߝ+YUBUyOydI^aK$6ww[6߹t|ꙒV-S\SHgLov{FԪI,!>
+$9
+Ȟ7sw53/`1
+xW:帻ͮK͍kEGN-񳏒wh.LvvJZ֬B
+?`x28l,*|Tta$ܻCVQ 	U}|PlcPwit<%]?<492Dh߯3uQG4ey tR"x=U1(a|آZSNb\QD*<83XK76M%5ZXmq ؙ&'Hc#Ux>J |Zo?);|K\,!`k`>{4λ&JWZ7+v	̞b<:&j*mQjE9%䓛sϜhR]4#RMAG:%I0߬*%$3wX3B23Ǐ؃]~?X'Fګ$YF`HF7zNuVDe_TjJ.:dlQr"q	:C=\RcCb_mIΒRu/0RS2,SwGw)?挊WP1at[p]iPÖ*i.vm;,Z\!e^TvjTv*I==׌;X@\9Uu;Vy+n$q۰Љh}TWo.Mu S{B$VHVx+%r$Np")pYe-JSp="WV&|QC='KIbA"ß>up}POH_c!
+׎XDGziBr႔V54gh ]`m*$d4I iE5)O%b#Oz<xy\
+DO]Wj f8P(.mU5.0u0zB'ܝA5i%b}ÚnN.	(K,q,"i9I^h I
+hYD&%M 8Ŀ N$@q
+l\DH2QN"d)2B:|X_aL퉩K$ŽRH߬-H$a~?!Se	Mi|?Xؽ-JMxmzjۖЉH,["@N5c==şف% I`9CY,{s9ݐ{YoS׿}%YZW%#tRR)mh>`rZK._܉IГ;')"֓S1b\]LDxh"skk'٭eb?0̿sIMR,?;",/3hޙ2Ѽt-f	ƛ-7%7PMcy7X!R)kZpDkT@΁
+l>]lq_ojo@cӮ!4IcO͡N_j:dBXC!q_}յI^k]eU&8=Y'`00u~i3].Ui-M`N%k؅or9.ۏ"]uFYJ˥0R,2V`Y[
+oQo*)?uyAPNTф*R0Hlh/>%$G?JRIKtjs;h!YA;4`^8Et^VpgF bSR |x;-ߴZOaxgu~Vʏaj3MRJӫPe C쁶whAF[8($WI6e߱.-csPb!+#շ*ʑL""4Cd"C(崝	K&)Ơ]Jmva3qW&d,6ۉ0BqvlX['*:VsO.%\^53Nmnx.6cDK-QYc@dLN_i3*߇v6SԝG=eH6Hb۵q`[ˠwC?H?DbM~ӿIt7x%>eL1Qz=^38A<-և%o~ze&RvV7uܮْ|F V߅²k<_F[Q$P0Fi,b]v(f>c"X<>.lL:;MMBAL|<7}4	9>E\OK*;6C޲M"W).?i_"TK懩Y,DvT:v?zCnV/vk.0)IyF"`Uǌ]M5VmLelU\hXKS!#KY{QŷU&U|ۈG2z߳7Շƒl+-zѬ:2ֳl\U|GZY $1UuP7s~xUbwbqsWr
+tX4=@iù	pqp54&
+W;SY$.ru8MZi=C;rjobl$K,a!=Q~{j+ofeDؗ`}bWLWZΘwx?^T		[+g">?IuF1Ƅ	*cud6yQۇ') Zkjؕ;׊W]r72 rksF-[S]DhZwn0"V
+'
+ItmT9 5k]|>di)Cґ1
+8+oBOJ/J,,vb3&p?"Xy?МWb?BI;]zS%J)nt2ʅRU#TjRa!95A侾 rTɠ)BWƔKBct
+(`|pW.xS1&	ד9JL(yT	-$Wed@*|o梿q{YytsU#7G/Y쯿ѳ9>gQ4w=zATU;?:{U:0E	[0{n̖Yca[]8{]YLx֑}u	v>.{QI])Sil~BCIЌh{,GJNh}XWWH`Ksg30qOW'Eb (%$:5ȶ5lҫ@Q߿;oBMM2?V3C{vaج&/6f>[ӿz66gϜggW?Wϴᳫ1ۄ{+z]^}N#gW;$0~GϮ+طo>H޲ȾM/Q?4Ӊ61<*9QHf}	k}'閨3zG#
+}J'_`ͨ{TUDG
+=BQdj>itڣIrH`OׁZhxlc^#..FtxK'οi4R'U߼
+Go>t{jRҽ=k<[<Y3DKQӔ0@ 4ĤO?`rޟy,A'p:	РK?H`Δ}fSR> 0b/tZT_oB*"a.blaR	zF},b6b!rBz0][˫gbLg"gDЉm7!on7<zISL͟8ע1+K+úlI3ėL1(ea1{!/?zl?ip\6#W	KC||ttVA2*R< D+F+	guhge4=AF<N7񞄙Kl0Q>-'OǿF=7>gɹ8&8g:8Z-~`$K7)9q)9
+)OQ%C)\6 \*6%kkf5K:bK.3D$rtbQ ,wSh=ŭQP5b˶mXpvi䴡- 8mls:?h
+AnKy0Y#A39L>EG2]A; .݇rpSaR2,9EeL,L^!~-{9hXOfՔL$H(ёj$gsF.5[*1s/䓯U
+6_L<v/!"=;{ʏ[޿aENB)SY1}^.^!1ɁBk"${q	97NEI~2y܈=D/SG½!g%-y\ΫSFHHlRcnBOm泖n'PFRmX-T٣	Vy,Qޏ+~Г1xݪObߩ]hyYApxGbzNU>I7z jСM]`07"y.N=ң=jMJɾVH ; ^
+vpMa茥7H۵>XVB3f{I%8DL'{3q,ԪJT-c$;`N~!k{I^	 2#[B~RGA1<pMUPS-ǣz,;"R{xOE~/T˥\[+i֖xx;<?sg:29	d!7S(OL7NS#嚕ns2L8e|֪͗uTB~j2hޮi%-2k=Ǯ&c$(lYwi^c]Nܼغ*l?&]`$Gܻ>6GP'Үۈ(VͤrYRjsn¹iz8V5~[M˦xQ!`8^7BVZFN:)`ZQ5^SK[xӻ>1%&]@	׏xA{2!o995kĠs-	T	\r҄3:Su](f1	}'rUp/u@'sOrQ_JtWE4ڙ\=+ڑUw5=U\u`PTG~\uf#NixI.s|(w*8zț	#F5t0sl@>~lx?-ysxYfNu	85D'gwd
+6j]G;Ƒi#_q}ܫRjc;0joz(Dv81I8Hcy{`B%N6ro9$_
+ZX:2-q6+qs	w߀DNH䊽vp@O
+QSlIuyTɩ
+FX|.BCn8UPse2:KbvKL'8H<g4ˀQ&rB"'ŝK1	ZND}s@v}b~Ot-]>bO73 9RM3H 4\*qr]Q+br>7?a79P|iReI&^.p2KPJbYLH,8 gJB'
+{+6y2h4!䦋lVN@ԩAn2O˕%^2QQtK8;uMk.Jn*Ds.iiux=ǣ\<UcT7'CP 
+݂W.`cmXgQLS=1;|7"=rRv5!N	3&T>3P'#4R9RSC
+7ÿK)8W2Ln?6ˍ+R]au=U_W⺵iͪ]lU%藤ݘ|KTb&UA@6
+NxC5=XnA0U 1jE-*
+	_O8a vd&@7DFU׀&ubܷ!ZKY:+K|R
+R ,EcAUegh&m}!"!4Cxw::;.ObFMh<J@.՚bfF<*Pl&֫`
+eMWd3J֣'vJ?گ6~߬~߬jh{} /	%?Z]?>3<s2>(9)>%(18!;T=xңFUQbF4Ƹ99r	`Gh=DMh
+<jC0cyݚGa.G9,hd@au)@Bc6V# Y7X'˱ڼqwk̓J%`TML6`ou:15sVy&R!тE-IL֍
+Vun{>(3t\ [@@!|4Elne5yD~HDx0P;C*/
+"de?zGXYZy>Nňq91ΐU٧,)Ӏ'Z]Kuj)Ƭ2fcws|SpVEGnS_Me{;Q`Q#)L4ǰ'Ofklc,lIjXbC4)(m(0E2k</wyMCAKܤJH("tJ&Z-(fWx{UEv#Ĝ;b(w91b0!'3a(J7>.4pyQ;rs{6_CвOSe:GGD,U`B܉1p`\cB,ԄjBgzqډ\06~>aov]8a;s"gN8_U&qW{٢'ߡV3c>5aU'	>D&ODÙ܄2	,q>a}9Ddo0.Na.~M|"')>IIsp>ɰIOsIO<~"c'OD>?~d=&1\k)>9˟0?,LO2
+	럈qjC)a4o'5dȠaBa"(iTLD`1b"$ƋR$fTO\#$O~ >9b57鲅| {]@yeN/RvJ=y}=Kp9 U0X1\,kI;Q4gfGNSҥ2wJM2gF)LJI~LDȿOڍ0KH2gP<%3ͳ=#6_{7XW=Yt(K0e328I,g[gS:#X](ɓ׏8WePau` q)HlaK^E	ׇ5c*̟^cS/(\>P4, %cMsi:GrV3;ʓQKZl=STip!ǅSj7FU>%;X>v\ ;<^Gmh5}vR'9TX^r/7C
+`$U>
+$vke6\Jd&󴫈I&QohۻFY!["ϓ^G]o?/e	R.hlv41 wbMe8-_.]70=jk*FU
+,KC[V\7dG|`tt a̡Pw]tQ盟~Y+*[ƗO\}RB X"Nn+mhA,1_;	/DJISd2(B0j:8U1lbrAjRM,PԍH'SRެE.{svkco)P&>%pA~ǐFi~zicGj2㹓w#哊>_"۔R`ׇЯ*z)Hu@@IaR\@P,ȱl )~NnCw5 <JC/B\!,)ZZE3k9ez^W"pLKhVӃ)$auٚH01$LG>cCfʱGpM}i3ˁ.Y{
+p@/dwMjG<cǜsNsLUD	!{&#)ʖr&m3/nV _ohU&KXV?5/ UFTH8	%IUw	%"J*Zb3 !(C V{y+GcЬ0n1ijyNM-lg),1E\=y8I
+B;V$ Em{nɚe)ܒCC3b#ųPg>{EzzǺ;ؤ9εyZKVZdQ+z Wop5e4|=wכu0wqiL)&x #ZUs  :bɚ42>/W%^K=%_71{F%Qq	 PWڕ/=|dT樛F5O$0?ϫtUm3-0naK9ёRXcDVf-ès?pD}ѣ!/
+C|3
+ytyA]1jdt 
+6<$U!f 'Thc>ww{Cp)k.h;K`ɸWJH
+?WæRhsC#BGC<z?.
++f| gcw+ht|j,l1Jة"e	cqH*{lnRsb[OLDNLQ`RubbNLejXy6:c1[R,'<ɍJvXsXk9NL;~^kWҬ?	MzZ;C.OI#4ܪK}Q'WAHDI#;R2D\HFSQ&D]MnXiX9xX8[uU$9*blVq.
+,񨴎0㉑et&LQm3lF6_YVO]~.6uFè@椡mX6*]ҝz:T5BsۋC߬(l{gKb4塎T(V]ekWN),TUPUޗ6A[=JJt.X銚:yI/	L8e쏀uRkcGJ*Oo´5Ԗ.=؆KAtʗu-0޵Gp=3<%aCxުUyDg[n50ιJ~W^XDtZئh˙K]l!<$T4DS)+[Md+ͷ֫%t<E]6,?J_#eph<((Pc )WHw>:%<17s6}8Sfv	ly՗D,K;Z`dP˩h
+ڨu0008-5d
+>T97F"|tp'/j0˚qrTVI:Y=";,xVZ<GnMIb,L#}-xWxy]B>ɥm<XJAi07'x2t VIO'1Hpy	l*:e
+`$$qӆ})SndlY78Qb|`.QXrN qcng|92h歁ez2jӌ1mW0r	>yˣAcpA)UnC%?u[%w{'	XPeTT4i=(ne$p{dGĐlé,*Zes~W:b#)O.rt+ʜvA]C#$: q9+Xgf^:{%I7J49tD+u*s l`p̀B8!vRT7(d7¸7[`9`^&ȿ\nowwՐNsi[n//n
+t{z^Sۋn|^Ǻrh	n|(qEt{+
+^f큍LE@؇e3JIݞ*QDKzFqʺd%gĩ&>큰ҮnOUt{9I40D3$gE#Kg	:QGъ6QT+kRXCwRX]ӗ.4}>BXK]y':RK]p"̳E/3'֟U0q+yǼuoy-=Ğ-VX|!w:ʚnԠ2tJ(>C׏k "q\ei'ZPy@)>D`@0@Av.jKUz,.e)EC|FUud14aܬϋ|.0Yz[JW/Q|f:L,3|C82 .F\znSɨ6 
+ѹ*bS0W`<3GiY
+|n03WLj9ZMv-Cז]r\"b= S	ߙ|jv}hkq!`I-6D*C`݃5k |`=V fU9?EH ^ө *v&ۥʀC*Or|ʚT4[^ vy(ؖ4EZlL'NlDB%6?[pYjM'inm7
+ʛKWfRD2v {aG ˭Vдv~DH?t:,	8xv\]	M%*6ieddYݬuA]S:5|ZzzĦ{EDk>r(Pi:ŮJ")V.͕K,`NoI3n7(yVHڴBA0?Oj++G<2@/,;sWm5RB8.GˎHzQu:v͑,	+[LN..&5N1~)w NiynFrNz餗NA:p9]wUUDm\?FOP@8xf_Aϓ䠶'}%=$yv(!R9q-ZuzѪO))N]bUwlO*TPY0o ʙ-
+ ,Q )+z[z,Ŗ!q*4rPb9F(WZZ#FSSZDss'Qak	bṫ~5r>NMc
+Kt*B^Jꥤ#=A:yD3SĲM9htR)1qt)DjqQ^uS
+imrFFsFz>euM/jF/j1r$#:fU15gDyJ̓)%^ H.wxٻ6
+O:"!!~3wg{xAl>ˤK^T?3˃p+;W}aR<]Ǔ"FXb&)`WbQ
+O$x%X
+5G$a=|[Sj=}UhT**re?TA}T_BhT*7HCfʺ(̂y9eS/&bR/&4kB^m >&A@`kQ#:ؚ0Lym0rdiZ.tWtQ~7ۥX0t%ew.2Ǡy̤
+ιkC!+z҇,ZMq"cHqiWX-dERBSj;hTZh)"5F~PR5뻽9u= A6cz.}We![Alh\*JUs4J@ V[Wųqz^^NͺE{x7&ѡ	ARBhF-b.TrpYQ&AzyۃAUb.w*(ʆG
+i40) u|n{`V<{	`7ˉdԊ©D/Z{U1I3ɞuJSbt%tr1EfpvZ-Qt[fa2aH%+QR=&"&|@@!NNgv*Lfl=uP;)]ZqTdkS?lN[cYp̊+ΤI^>lP6c:naqڢOOlgTpwMjol>o	nGF>Gxi{esYդY"ؒǵ~ފS6VBfW[@")lD|^އݣQ(GݪT%̓)da/{{j7sʮ?p;ڌ5G_
+8&P(nDu[\i5(='n@XuqyH%?u})G&^	PaT$TUSo~Y+W'5DHj^ja;SFTQ#rDpnLbq%E^/A71jBJ	LeL0C0t9xTP㛺3Tb	IXr$]]	_B(-5.+n1-UlH9TO`9^>h^2ZLZVI'L0W;tX.i;$rœI:|XueJSH;wp(IOMeFH83z
+u:Ve\(*ɍtAQ}bJ,V!9z9N\2AZUS[qlcU@O$OY&
+H%gTv*T2U2D%Sbxgi!:h3sӨS^:n^^t4U<RM4'I*)U^B۽&)TՔ 놺xTj!#jzaFza܄q*R)RM%1Q+oRRQMTT{Yy#Vެi4Cek(kRTիjC0BQZh\g1dO-XF6{q$&NE^ g*6(Lnuӣ%<OR3Gy΂trcٵH,E8HψZW0nf/3լD/@	Ԗ=]UoRSpȪEG0H2yʒLљR  k%I2ximILut(<89FUږ,ʳ~$%
+數^(ԟ44lv|۝jgoFbbnu399shj.j%.\[Ǖ}*zj 4@cm0LFq:^饟^9_gl(0+Ԗ4dZG$Úa.;尦Ji8ӖKhN!ZCr童pJ2GRQmǴ@=.{	k.:J~Ty1\8m4aC
+ ř&řwFwIMjP+7w6B9ԩ1.qrڰ8zs3K\-'ujW<7U(AY: IW'=94&1AfJ;Cx@>%X
+xIk]{ *Ok5{Gv^&PKokEfz@ +D<#L2iXϺB|k)Wh1Je )7˥?Qci!~<](|0s0@U3`i)NLID%< L@&
+̲=H}sU{7sٻـӜPQohS
+3#9Dwc⊓ȁzI^>lϡ6c:n[sgT:s!Dfo7oCl}3Bܢrc_hx.VԲSYВǵ~ފ?4:=pj+hC 4'D/Z@s{(RvޣJnUe*<bqԬm*OadnR]5?5i!SDcxnMֈ@nk;CۄpܩԔyC&V=ܰ IN"
+y!ph[E<(o~.H$j2lÙdfLQZ`utNv7NG]j#'gu܌*E0R<lW# BYyEC,&nac0r8S2/8eX^a)e:w˙;v\P6
+U6
+T1ٳg94u94Ks4m@)xIs^d<TJ6kv#\.],AT6=+ L,ov#]e7]DJtelr*.ui,BqZlkMʺL[YdAĝox@kvcҟW;җVig$}ޭ>GMqQ;w-Wh+xTZ?|왙6LݬTXs}|KofԣsiHŢBDThYI3 %c)%4KFǚI%.Jiܤewrk0fwJ@W5d %4c6
+GUcgn@v:azecNkIB=)@H@.Pu]=HS\Vs@c0j0I4@+acUv,s6U~<%E7jӰHn*kKO޻:&3R .*MfVZ5٠+dVw̰z)֗h;gPTNOSv&J%bȟEqzYMH\zBQrMKEewՑmgdPDRiCüKlh{6.#zaNS*iL;0ȌiJd7$ƴj$ߡ1-)1Uה2ɄHF5}8}aZŨF)ZcZَ V3~vuʦF[zRY+[,ЙFi3$V7aF"DED4e5i:Nt!&4JixNO3.ƟܹE<H@)'Un<Mulάd"t<Lh뀪!AFE@8ֶ(tX/
+IBD%Qb]&uMvڊ&--1@Jz>-+\qVK($V'8v[
+Bիp9 zg:aެV"Q<žܝq@N*_2MHXc䮥p^:6k։]qY.`-@&/zUυ	Nqc\ӧhpZ4ĒH`J5arHUlZ|_:P]*zY0YZv vUCRXYCQH2U|3q榸ķJŷ^|;C|-yRa=a,:cX=	 KIVBS8XBaP
+g(CRUaDGwUof<q4͌v"W-ٹ"{Y:3t*/bt4;Klb[J%HMe`o+0gE\FiYۑ4>;	A 
+$ܱ-4.%r#1P>׶'mS+?*,Z/!$1N-l.
+4uYcбjgUOm1>ˁYhr6hk/eLEY	ʖ9T:啶(yցϳN/5KFIM<]cTۖs
+P:2ug*~s%UV|Mqfz$]btG :	G5p)phq9Mϧxt@?.C?3"}2 iJY߿|~ -%cOLw-R`2R7h]dGo!HN' 99wRFIBgFU78
+A7麊?jHsP1=Fã==X=m
+oU}h:	(Q?@ylN?'_ʞ`H0HQlPmC0uUOE9?kvcQ{,9rId9j
+mz5C_<.Zh^wȓ1rgJӝf{>M'9HjTP7mͦ􋵎+)L[H<#N4K!c֪*$9D]>GR
+0u'T,KYL1YL)#&?67sYbt|A^m!jm~ʮH/[GVBiHA(1ҐɶPzH +%%npK<	:++PWVj+3biSc)ʒȤ,Qw\[acecY9ڎ
+mU	 h|4GifnGW:)<`_FMGI4L+H/H";^WWۦu+6yH/1zTI\DIN_{<*eUR]-^F2ܘIJ_DddS]'6k	]i׋, .~\	8'Lf.zw)!:QFD^,\M;owhD 
+J
+,FO}B_/znǉp࢒m`~KG#`֊Jfk2BKhȠ{~0~[62l"_W$WTiL*RIM(
+<sxx].	@}8&KHI8Z(%\F|u"(!aڽZm̤L~&!?o&GB~ZGqp<uinYs
+oFN[0u{/կyusknQܢO-j6[>HJNA#S
+ᖾLNOBX$]rÅ]O5QJWހYmh_<-SZ[גQ{^#'RSn6cdcqX+aW>aL(FB]tr+%#9Anxl䱱	׷vB lFjC~OAh#5ɑ֞qu	M#L?Vs朳M.e놧?)gXNr<Hkg	0c~ ޑ^kEBj
+FP*)TA,SqLF-̘کNmN"B	`ӵzXxKZGٛ6p|#T'3f3ό5k&v
+'5^[&J̈́Ӝe--Ayk @Aykff`xWyIO+I"0?*?~DtǱd
+G?Ǎ825wh{r!߬}*ǖx\cKZĞ.U+)wk̶$M1u!{ǉ٠GuGdyIuЉ`DUJmltٱ_-`|/Ii9QN'm{ɝ1<!-p5]Bc<.zft3Nr^藹grn&6ƿ0;9uv76f%)Mj\bl?N\8E;W @#&Y
+E\&hbj^Ki,;!xKtKo)%M=s$;dEyjʈRY
+!]m1ajTn0zIZJ/`\"bQjqMw0bG0nv!?	1^S,l^ਏ΋eޞ`R>:'\3HP\#(HӞ<@ IPEH*#[fHsƣ*%6?ǩNwxLZx VC>oïRSqaI!_v^>-n-4s~xm8C}:;¯F&6\v߻}dq4?˪am*ʨ%8J*d?l}OJ~l|_WWS)0ut~Id&]CxaQhP`_jWpp.Jr&5z7&OxEoT:on'Cca&HZ=phΪ7sVHC'O`Cg-KN+~*)'1d7^&DCLftx6Z~p!r2N|Рn}1cCv֗FpXFx&XDїo"̞fT8;;ɨSwaL ;=	A]g×ZEc($وpd/Df⨯RJ8j@q@ޭӈ#.1$pjX`a?*rGj8R76Q0b;8g4w./qq)O21z1NNT2iOC#BFD(R<UC]]4knvzc8愞0e^s*V!Wog@|E+u7QD:C\'#pw("@"^ܬ5Mhk|z.l娋TLg)grۚv; g0Q3S=_ƦN2j'+46`p0εdntS4(1Eq{O@?۽m* {78i}H(%R)1aPK!.:VS_+0pQZbiN*ל.ap1Oױ[Σ\EfxuIK^]'sZ3-IoJgAj78@5%{ߘQxy#rL-wV#^őƅ{rɕv8ՆjI&/Pq̩UwfJ?nZwqEĚPCL~\J7>gMaìA8@s7FUGoAqbAp\HTPNkMF<|Aג6_:hObس?ҋ7ҍh-wsJ1V~
+t\5uUo6ZXufϲ 6P-aڄjQ/?Bz:DS>wFh;-p5fRڒY;cxP{绫ݻm>,q6D=Os˯=&.Sz03/Ks̵?Vis\fY,|D:G{T_&Ѧrڱ)nt^e+N|k;#Jnl|pӆQs+d65$[/^tfVuʱxdy(Κ3$AӫJzUȎ_O[`QP=4iP=UO՜韫0UI/Ш}4OA}aBoN硓y@΋'!aZg8bIc-2[j㜈Gm-CմTkKX
+ڭv;mrDе;<ҵ=q&LL
+[u絡T>HS5 >t)Hjg4Y+MY!(jJ;#qޯrbX:qr-;klQIOHYoۻY>m\!P8) :
+G*;)I.6kb^kjLX-%ؚwR5}FX*k>wM8D(j?Fx>s:'e)6f{;^YUQRܑ!<9ghaZy|8{2F ӎ^E ycmE`n:#MOjY:IzBStеE8([ږ;k;Wd1wtX|n_ri4U+9lvqs\/v_ZK,ZFUH.ɴgA@(qEFE{ F5]nw9Wq .aI<߼W<\ָ4z8ٗ-ޒ0-TlHNxԾ" HW&r11ʥX:mF&h;kFKNp9JeWPg۳-7/1j*aTAUi_WTrY+-Fn_V,ouϣ植>1>`gϘ$\9'"y3vECA#⠇rpH0@G	F)xX
+)y,Y{ZHkt)r7{{vG
+d1jJʱuw y߫i8E/ 	^$N]TaM`yI4kԪ5jng++KI:e(7iKsd%^JrO%=;ckT[4ި<իYVV&؎545َ}8тĦRCHlQ"e6,KIH  8on"POZِ[UM`jk8t I6p$;#Gk<hLs=?hyRàBa#P"
+=[=knaVg`co{^AɨgmNZv 3?~ moGы6G,_Ȕ`Ƌ96a6Z]B<yʥp!MЯ:k$f
+֠16.˅	4SSӵ!C2/3՜y/IHB&՗^+%E#I9q.KRuh'7/e*=A&uF3׹2Q6tPsmF.IevRF2ޛCAp-@74P"Q  @ 'r\MV.&ZLct!5jmh/u"<Mo'>qamYKhy3^NNq"5!KLXRS(:9P4xkbhGn8q1);okUo(#H]BѨ'.8iM^xPP%Qt2RtbBn\T68xTa,qv1nLeQ]0?Xo^qw
+w1N۾o^+Ot
+OjOz8(3S&ۮ	e<
+.>5!iЍι&pyFL\訃af,>^g{|YIz:Jv;c?VݨyxG
+ȣoq[/(y#hsKHjF5bthi0%yS6^yg+?O˷xia`_i9τ%\ -_n@{%oAshX6q9^R:bHgotZ$\{`:XmB%]*)?.3&tTT+*a|2H%{Z $'z¨1ELh2E,2E;Va1~w\Qi	HQo
+?o} U́	=Ɠ"D'ŉ0F</؏¾&`\a'Ĩ:'t0h#95p#6apbÙ{m)/Aj7~s"-t0:$aND9,n%ц4*%}2GFҮvUP8).XeTXWh?o75E/e\)هy`{7S zu{*b5ٖ*"΢Rn`]ƜuNKR<>bA{cƤqzo@wuTr^*cakn+7xH%qq\ͫoV)@EI#[+<'[yC+ WXV8nXosSMEi
+(lG+Һ1iûjKC<Ib:Inr!.l >E`hVnE:vdL&"{T<Fp١{2- S>-bЗSӥLAUzSy۬l<Ԏ sc18q4d6#/WD6`),܎{Ll	(#.ՄLaF=3\mn!$)MFͯpTjp>E
+Du4ђpKǰ!ijJ7I/Z{|j.et{u`1wnYL-V#lQjm+݊u"Do2~smڵm186Nf!,<=sR+JܥU]ǎ7|a~0E_IW^\;Mx1G@>z)GlLpܴF6%R/iǸTAPs»K 0MUb}0\6LQZyKKYf&VTuӤsY9#kIXK#M|dL!1nP?iN{Cpo S8<prK/ȃ5\Be)qv?u@&^SO'0ot8@d/ODL{6Tn;EP$!9\"!!N1NHʅ;W=mȭVӚ^LfpT*=@co}Q}sf?\(P&tXVEG߽+jk%z0kI9 }2.TS21@G8R=B'zupPڳ؂#ȗ_rӂ,7;jgHU_q\N	Ioe?:?XDlI*UrὁH>.0Lkl8"^F=po.r0?C~?
 
-`P3[j@X =SV bK/bY-%5B~U*hMJP54BT}sdPеFhO?r.5sWk&}p3:R,TrKIG=
-KIQ{tH-6Zg
-A	es+_Sbru9JSf97̍JPgIF}^E^8QQcIFtͪ*cj
-!H0'OSS橵K:S@&\Zw?l֛BK$u,a_EBBTfKwf}࿯I5*1~H_gޗM[&U7W$vN+ƯD{G5}9.x/z'wiE;.zLR"kV4ŢПHJZj H{H'ѧ,{䭫ZѨTTʀ\!LTnAuM!8Prj^LŤ^L:s1i<
-dPmJ}hM:Ṿ(G`u,-5aJ(`2 ̵\"<foKarE5VJ"˨\dAIםsJxq3BV\WY$_ Dǐ0%Ӯ:[Ȋ&03cv<)r!R Ej(SkZ-aw{as.])zA1mX]WcCQ*иpU8h :⯊gYu)nLC%Jl[Ġ] K4>Lb	_,&(13N\TPi$aSbbx*nMɨ-S	^ bfg=
-g3󑏳&d
-dK2aҟc4X?[ɷ̬e@ KTW+ã,{L:EL2TZB '@=HU{7sٻـ{g뜡wRޏ70*֦$=CؐƸWIw*}2tmǭt:E$ΨBf	 #,}܎=|(6Y9-7ʆ lI?IWD%k)l»L=+t!̮Bف6Dp@Szh[ѻGSGoHQ1z{5ѻUK'˙'K!OS+^xD5n&7]v,8"2kdqM,Q݈|[붸|q7kPzN#݀:TʗJ~SяzM 47,èH>Χ8V.OjPԼv6;PGB%J2n_ncAՄ8i7zazar Vl7ug$Md5HH|PZ,kv\.]W"5bJ/[ܫ ?r 	r˽|Ѽd5TN`v0D᝱J]vH%'m?u{`+2v9geP:e"	ʌ^#hqf*EqsuD˸Q^;T
-ds6XC>QmO/s2G/s1e2:4*ǪI@[L
-J][U2ykdRyQիd`_!JX%BufQ?t꽼KhɷHEyҥ:riORGU^CGS`{MR)u5CWG3H/ȹ	#%7~U)SʛJbʣVޤʛbV9F&tYh%SʒP֤2W`VLиXKcɞZlH@GMދ>S'gATmP6G?1K&GyfHkkYp0&a._f'Y^ FE-{ޤhUˋTad%5%Z;35	 AzJdڒjPy:eqr-Yg/q3<-HKKS4U'PoQ?iiT;;\e<grrr:]n1J<\,я+Ti
-'/Ǵ;8`q5gDuDK?s؆Qz!`Vvǩ-iɴ I.5ɑr]vjaMp8- ם2B WKNe*ێiB1*{:$S]6].6ucHpڂi<_> $Ӌ3*L3dG*35+,VormBA*sSc]⊃;Q@k==2Xaqfl[O$WxnQ u můdgs=Nz>riLb@|Q*aw|8K3 hW=.U&j6	L6>x&֊*Vȉ&xZGzd|2u(@*Sbt2 SoK)6ӴC`yPl?a2aH%gQR=&"&Jrfy
-4=:Me{ؑR0)nw{9kRz?ЊRfRG:x=r1,8f'*}2Cmǭt:ΨtsQ
-B^oZ[QfEc%$ƾ\$8eӥVl%k)h»1L=+tu:R{:V(;Іh*5O~^އݣQ(G#ݪTyJ3<ͩYTR>e=D/ij~jBx؉:ɁvՇ	S1/{)1Mz\ikia	@ړnoDm=9PBdVQ;
-%-x>9zQDș]&Hd؆34Ȱ͘".%T鐝|n0F6n3O27U`ۥ2xخ"G B+9
-%rrY,}M` 1pd2JI_R?p|0\ÂS,Pt.3wxáll+cgnQMsLirziziۀNSړZfy
-lF\6˻~Y|l{,%W B9BYPGnXUe4T\LYZ-_֚u$bD;=:i(%u?饯v/H[}#
-51^vR[FV7:S,-33mYߩر@?-;I.TGSE{օT'в
-fd7p5AJRdKiO)F-5sK\ !ZI*`*"dL+j J$il02xp>؁t`/;	N#8QɁ#C+.	B5 {RI]8%ƻ:z:`E`G15h%V
-Ǫ>XBMos;!4mncȇxJ"8*%QoNDYga%5T֖hw)!uLfA\5Uj2AW&ɬ;6aRj/v~$?&LܕJ"?U%xB䚖#!2QQe@(҆y*mh]
-SG4T/L0UҘvaʑӔRnLKIF5ig!0ICcZR$cT)eT	ʍjpVF?QMq3RֵDǴAlg ($M:
-VY3gHnZ3DRڋhZi(*AVku4BLh(N+=&𜞺g\t?s	::dyDcRNya&Wo/xrYD+ؔCYFEx< єUCvJ1(Cq1mQ(^EFɉBqKŚ2M<\#W&.2GZ5LZ2[b&}[V}	'WPzkH,'j2NOjq8WpIr- t8{fY!D<y}IQ;;,Ǜ$ݝ2UٿdLǨc]Ktlq\ZL,>_NOhE7d۹O	&qഴi%%fj .(r*@u6J!T@a Ha
-'b+d*fMq݉oǹ֋ov6[7[IX{l9Xu˅2z@8.PΧq@
-iQ̇*dot4īxiE.T[sE:.uf6U^LivQ=e-.Ķ6J,^9˲Vla1Ύ!^ =oӲh#;i|v:@HQc[6(i].+J'Fb|mS3NڦV~ T.X.9^BVIcj)Z"]Hi)\ƠcՂ37 uRQ=>g>vc|޽l֖_>2 ポv-kst+mQ(;`Bgz#_0j pr@y: T-td6?*ϺUvK"Wr1H0xo7
-@tTB5tkRਧqr0 {O9~*A?]~f&D,d@nM]Q}Ӕ<7 8ZJǞ2,	j7ZdKoE<".ޒD+BN@LF%sIYs8ˁ*?>n7qDUou~$%YÏ9kcG{X,G{%}7{@zP?hVߪHu< PliW56~$Ov=/9Y3a3УGɭ("Ƈ"`ꪞds*xǢ"8jX$r*rXgJ#k30;y?]P>&_'b{e-;x=H } =OQsnn5+n%3o4+MakY?WSe	dVyFLhĻCa}~?UUH&sVz}d`OTY4b"|;a7PS[GKM~l*;)n2p/}!D!W.#Cg5]"?^ƷҐx;P
-<cХ!m[G~ V7KJ%	xuW2sW2(h:WfOӦRd%%I*Y1-&6\;	\e61!s̵۪@\ h0t!Sx%)9
-5):!*!hUSWE=^>EvM+!g7qIEB88FO*(8<v_=T%JHf3)QUsc2oNuب%w">^/K@4qi$P/31ݍD5={\s5)b,KJ{C(0*)u>5e
-[}d[='qJ.ԃ9v:8,Q[+"(Y.9q"E,mX;P[ʰ|^_QѦ2He&%Z3K48.*ix&J#w$%1L,TN,.#%hsU։Tijy,3j0	i[Qe-vN)9-neｈopV6*NZ|5[uE-Vs>>ݢnNPW	$odpT"i>*E:L)[:'23;I<	sJh`}HlvԂGv}j<DPFa*^y>faUn~~5LMZhMo5^KFyHMڌbb:TF4\v ])	0owL	vә%tt౱v<&\.6
-=eoC$GZ{r$42XNnsΪ6պyHfPc9<#8qU'8j zGzY	f`&R|(OAbpPNٷN2QP3cj:9%La-mRjieo8:_@^
-Rh	FS?3j&؝+֔_{el}+5
-LsZ5(\5(!s+2WW_!&)V?lo$Y\yǒ)H 5*7tfܡ%|b<[qi-i{WTf1ے07ԵYLC':BdV!VVs:&A'cKWY+95Ef~pf"x&Fq:A&w ۇ|t	`?5^i8By_>ITzȹD~*"3(|[xؘ{4q,R8=sD_,Y,nd+Ȣ7G@qE_}y-d-	.៾D4ΑpR䱪y+#Je*t]tń]7P蕚'=h)$pls"FQ7͒6AAe4zXQ-$x}N L y񻃣>:/y{ƂIns|"Mt@qHz 5<HN{G $IU@Mi#rlY!~\:3ykG<hX!cVKOʳIP.&b4v"~:yE8,ohp^LYI?8We,saGF;~Ue.,Rᷩ*fPT(P!~?*C}]}&^MTB+WT'uyHv!jE=oC}Ϊg\ʧz*əܘT{<ݾ~URľWH29N`s#¢DhV+M"8fܰUZ[!m<5ն,9,W&ВEx	1;/slkʘ;ѫ@S3WvŌmY_cs`E_w	2{iOLR00&NInv0}' u}bH6M_bk>wޗ`g#Jѓ9k/
-J+ qE{p
-{bcO#fwĐeH`&5\+q9m`H C`NؼGATs⬞q܍Ǻ\=3ƥ8^<!蕛{8]8
-P#Xx=-z-ΎP
-{>Jy2V	wqwx!zoÔ{aZX\! ԑGeHqcQ%梈 ݷҊZxp4:͒).S105mk DL|-f8=諝\x<֛ۀ8גMѠ{<glX}E#iLKƄA-yTXO}EEoh=n!^;FO\sԆ9ySă>_n9riՉW'-yuǟ̙Skʹ$U?
-W[*hՔx$cBGeF1~$1 Y|{^Gu2r$WT:Ы%@1W1)1kArbkBu3]r*#^\5AޟVZ`r6v. U]fǉbys!P}C9N7d]K|?֊i`K/K7ѷA+[!)}~3RpVUvhcՙ=r4HBiEXt5XMޱkטH	jKFFguaowArLqVFv>	?-|GLv/\̼,gJ3xb1~sZqEeSqQ}qDʉjǚҍOxr
-8j(NdMD53tj̭א4lxSЅ;/Y]ב+Wvw2y8k8ODYˏN*rUv#;~=GoFAg`AW=qWs6<jW&(B^l<ц	;NvQ$J;/ekt{G{7S9&P|R{?|ow	s"ٷI\NTR-a)hvAJ|HJ01%v*l'׆RA{s#1zOPp>"i d41g-><),ڏ a{ˉa5mX쬱E&=k -dՖofkq-+CM,.(D&ج{Y.>f3kcH4cku
-J4a5>֦SYϫ'dښf|ꗥ`^xxYgU?.GJmP.rG"P @䜡_DIhM!znr<N;z$捵=zI܎4=qfH$	2OAgNghni[4DJK#\ܥay˥a,V䜲q}j-h}V5#d'N[GoogF._,K3v^9%|^r5F*X{rd_LzKԷPA²"9S _I`S*h;hƔ*bi;͟U_-!:?C;8*]bCm϶p(kĨQqLW}9^/S)Berȷ	}?_X]>6BH=c>0s\K@\N7Xxd! >I&a}C*"fd5i;"W=ɧLV~)Ũ)Y+wH\$@\z8uQ[5/'ѬWS;=,%eoߤ-ΑfpT\{)ap>Tk2vGQmH{WFdU_WZeZ'`;Dg;MS؆zvFJ#Eٰ,%!༹=@)?iUSgCnUy/6m4Ӂآ&fp4Z52P65H
-@i:J J+ 4njNtEV[qqyq2&:jqڥl~<_E/TѲ|I?&#S
-/jX؄Xkwn
-Cj0	+84C\4^Oh*\jhZ&B@pjf,&`C@RcLI>NM&(Tsn$#a
-ST_z<{$>E,#Ji	VUܪ40K\(G1Aa!LZsK$ᖱb^JȐWP{oUfjj4B=@DEnK  =R8s"`qY7Ytp`k)3҅@p֨=ЋkHAdR:4mAxząe.>d^xr:y6;ԄN*/Ap0
-`IeNL]d@୉qږy"<]7[9K6Vl{G z u	G5wzAAѪkDHJщ	1@7$JnqsqS.lQOƜ1WDwq`;w{sN@)LD>;m=xi<]+<=1l8On&LS*ܻ|ԸA7:1!(3q]R>lZ0¿{}*f&1ڏK+XJjvf3e)">C}XCGoz>TL
-"/!A0_^<=E/+cؒTEch3)?O?O٠z)<	.⥽~6TpLJ?
-rI Tb~g_HS=[axI!YhprLc,?<c	Nv)?Xd8̔QQ^STY$r"!Û7j.	3Q$1ZrưqVGU$H"sGQc(T16N~$@O0M'_NF]cr873LJ`?V~l`Tnrb{|vhFjjX^5l`,?xd{.L{1؄I1gﵥpQ
-MΉxZtz"#<8S永FZĪėaVCsaK?T@ᤸ\:+^W`yRa^,q)ng՞7OA!7쭪f[lKtK8Ju)s֥
-:5/ɯJuYjwſեSYӋˉ{TQj1L`ބ}W"	X̢ƱsW61Z %l@la[Z \a[XaǾM}6)Dj*.@HƤ5,T&EJ'#M+7KV1YrGmSqؑ1 [Q>e>J$4w p|6LA_6SLM3U}9~LmPsP;̍a NܓqlkBx\)
-dզp;1w&L$W2y$IxW pQt45©Rݫ!*vGK-Æ):2Dd$u2B?׿jq6ץcnT޹=f1E,XFAg12t+&׉,JYjr$cyj׶I2|[^?䷫w[woO<8yl_(KKxKg(sT!vw;_Ňz{,q'~6$-\lBzq<k49=R(1s~<[K9pVJGq㮇^SMLCe3	.łH,6QW1pq3Giy$;-:.d1ЃoZbSi~Me猬%a.7-R!Z3?742P5ҳC2N[:9nJC7LXYʕ/ p	sԕAV{M1> ]	 K>1I_P1ZAxpi:U$pn;"+ǫ>pJ\uXs!ZMkv{1ibS aFCja/=ş@r@crLL44X~dm<P%Az ːRNn()H+
-$A,hϖb~F _f|YQ#Lkfx^/;
-Tó!!UI|q9a&'ex o`%6_ؖV˅"NK.c3VN8xN7c+(̎3&gS~${Ȅ_q[#މsUY3uv4l̄>u|(ſober$`!#ⶴY2N#~|kťZ8CMJ~ꆪc:  oW(mZ*Z~g?KM'cUom;RCKMKMl*ghmk(eJYcͥpٽ4?t[h7^Aso0\>tl͌l^(y8 NEpK
-_Vw怊0n"
-#pSPY >^;e^7ǿEF0l4r4{zI@")nc| WU]"&98oK;$C-Zc
-G_,XP~2Ug:뗨_oovM0g?n W 0=_s@5 [ʵ`MG䁲Bi~M:G+\K JG-##8W8勇Q-GT#';&]>G'7$ lZ X24ٶX+zW6뙤vq{ޙL@rp#Jw#H ^5/KY]hP*X;UA2X	Aɒ/Ё<åhZ{9eަwXΕ
-N3uٗ,9BΠ2뜈^;Ȩ8dT#%4cgScf135GYHUhU7|ф7W<9'\ߡ>	ZRI"nhYQ$ `Lԋv߽hʕ HZ
-Q88!!֣WT CEF<3IqnR ;2@,$G$d&4rsHtmH 	|ݠ"a\7PMFsvyM''RRCZ|$'"9w{ȀIyh}LM.-O@+m޸3Ծ?19NZz+X_^V/Υ׿ڙ^_gb(Ɨ**AEϣ1яx~Xoy8{F_JWirYcm=K.~@t
-Ҵ/k6@]"G:/Z+=eQ^|nF'ҮuLlu<2t8u|:/.NΤϸx<_>X##.ޏtHTvtSyLy<  rHx9kI(FU|*pt"s'KZHn8`P^U!SAn<nC|һ&	%-iیDnBl5X8ZۻZE K?Q|*h՞u_.?@驺1|m^IS-^M衠P@nOuOF\/V_lǇvѼ$Ih*2id){sCY:y617}] sHL2KHl,x R.PX0x. 9V&ƀbVuPz&\rQ41\L=ݼ+Ҧy]Eʩ!~9e6tAvb,8NvB
-*	zj4J0hWҦ]Vu"0R47JOv,IsD3q?$_&x~cj=TЬFcv\4zp:*_/rYAO7ԳU[&X #[`M\㊘ELgX"YlWa+)1)8ڒjXRX/V@˼Ah2<r|p B~
-f7ipqoˏ"NSx꩷FO\SK?Aa.عFRGTo7GrSTZK(ɖ8%뵊WyěQ>N@<H/5&%r<VQJ+A$e4B3".GF| `Fb%)UAqwNr1t!?X5NbiˤsOsd?[|	 .鸘,;<?*6P|8χ_qyLu?FRT6$&d IG3s7bL03IjIfO~`h(ԍ
-ir}hH؊9qQRjB'{MC8ta2l!<H yhQC<)MֻxPWxP?Ɠ_hfL	"tqA}ƕ,Ѷ`~%ب	`y.#zX0"h_Li	z!RmP]D)ph;{kker|20|uݻ#}\-e\#?ɏ߰cKmin# 5<?;ܰQO8y4G/iXv?C$vv$t61+m-]uFM?H[ӒԔS?|9r-),pz%/&֐(7ܒL1TK9Oj#WJkYm(KAn3:1Ɖ|F61օPLhIGo;L+mӆh'>##i ڥ&DL{.DD)@$E.PuZ;f|o:b).x?- \T"3(2Ej
-!>m̤[-:'`	~ t<6#H bv t|Q!	ß	c!:4c>AaYPUj)ML=XXiXx?}#4*iikx=`1#.$[}\ g$j~#b_V*P+Ϛ5ǰ[m
-NXY\W#9_,Lƽa/ye^}TDX;>e]},xG| sEF+tz-qu$2/t&h]UݚJǝBlwYnd:yƚԗqrc@ / w($̃ƬɁu3V6H\ 9nAH{I8>Jm"P\cʤx|
--HPcϸ;7>c9;ZRŬ6%Wԅt1e .X0Kze0ҋS&X ʹAepxFJuA,Lw%LYxLTGh
-QpfFx4/u@ʈFi|='}HbUA;y8QiQ33&vH?l9eo+Nȱ˞p;%mlķwo
-/jmHs8#Ww	nB'TC%%tȨ?jT|dƩ&<'x0@5^q.VsI%_DPpE?dU"(yOEb@)@ὣ<'+bf`_|\Y&&yPűvxP-<ƅ63]7["'cpD7T%RB3)8\#QB&'> d"c"\#a8kH+3, u4=اڋԝܭo
-.<P4(LT#bw^&)g]RbFD4{؝P_GE4D!<&gv`sJt~޿/@3Ma]"]B5fv`H M(@AIk_{MX`t67zIE%]E bq8ވňq<s#pX1+;PbPF&VjXM~&Aj"n&eVH'4˶epSp%/;#Pr@-an!K#=dho4n7Qd	څ l$^urWpz	Xw^y:`%):{f.6	Gy5!	;& kscUKst104|b^!-Fl3P^uQQ1tdc>]/Q}aEi]fddT#Ŧ,O=iLڗHaR.*]U;>+rBR hңHHKZ+EPE:hw:Lv^ŏgf<>,3>
-f;ԑmn <ZNFUVazKHczpo"% ?-ΠS!H*s]^{AW'LBlGRǎWvDɄy#ⷽ{MwsC*&XG(#h{4X{&+PL fK@ݚmҹ|k~e:XJ.sثA~}X-3 47nĭa8Bz3'--*H  ȶ<N4Q=ZGH`|Gj|&;	Pߧ/RoJ}~6zRHIe	PM_
-sܘpG) ~I#O@?~G^oRC~[Gp6=^a!CX{&"n HI.z0=fKHlߘK6:_Շ$aԴGVJLHӀn 'jua4XL+Ifl~<52S~$DhO!C*5u\2L ֶ6~ZhȀE`C{+W76FMjq^VPDYj(AQ
-3ឍP_Cs,[aS ]"~Oa'ⶐz ]IDSbQs=B}kRï4	UM4s	EeLՊM_iw4KUYa
-/*\ZR]2Psy$;#Qd̅WbI)39ͅ>}2M
-˩
-p]'GT|D\<9f!/
-r%ʄ3;߭XZԉKgF[r+9Vg8v:8iE`p҉hҍDLt"j` r+{6y \ v>#6sy~$` 	;׊4DpDIh
-^a FU Ei5y @5	9?~䇯"2g!2GYB.Lh?ڧwb(LoiEIL>E<0n|J ĮRX]H](F$`"Щ+m@nX;}׋UDp&`I8s	XoZ颸W:[~SKHq)WKLmyt	xb$|n!nOZv_NnwAg鍄^ϢY*2CSfDnEX}elOWߖ-nܩ.g8t]D2/ܩLщ	ƃ?4D}U-n>Jr;5D9Rmg.«YrZazD,B	mCc:KQN%g#Qs~ZT0N8w^֔Y:H53Qfw~"}i"חd=1=f\ĔjeOeܼf¶1CY3pIvj?4VL%$ ܷLH¡"4Q2~XַI^"ݤXµ'rp&1 pwt13.G׃)Ck0(KMJu@' V$gp˗5o+&9
-2z0e\q7hL |?
-"Exk()Q<CqS;ޛO<|X0=`:驭 OvxCK{+ЕzCûP9z J/vq9OPOowAj66ژï߰n̮iYE.A Y2IֈY/h^ !q	RW:ή~<_ٖU:u|a2E(zi-li<[kfa)W|nB+7.#o	D@1u/@9As2AgU/~L䁔Ǎ@ݼW±Uio.4'1sb3aHA:O~E9v{Gw{˳NDrU8kj+OYAurĀ(8"d3׭T&jGp{^sifLٝBCf5Ue<.
-%icB>!Kf^V{E[0!YԔŰj\: Ǎħ+rPP³zْ{+N p#8iO!~M&Ss6F(fpϟ$zQV==ɀfT>/N\Ac$"+Gw9e&L,ټX(r]8B WjEzm%LOkMPrp]_BGKD)J3ם!6ɛ~8<?sfGfqDwTɤKB1!1}$:Ȩ?GYŝ9SߙDs%q/LGrrK8"b|
-@3K];KTtХ.]zrK@.lq. #ҥfHzCwHvtĺi]Ya?v¶l¶!e9m ^9[kt,HXkg_q+hb  2Nא79$un E_qx٤{j	d̂F脡:1Ps=Qݻ'[8ɟ7&.3~R/}Npl@ː˨DCo;fDB-8ʵ4~۝=_
-1lLjF-	[M_Yǎ9$1mpRY <P<mmr M)0vΖ^H+K9gwSÄ@-|]nܶ۩V_@Y[Up_ X9A]y!	p?ý:XnpܝDuSx 0`n̒r`?ug@s~MI>_	oaEt̕)x!!j`$w~IG8 	DY5/.4bjNВXՠ(](7=}.;`Yp63n 
-eGyD䢆HqY=G'fI8` e%t%iz	ɘY~>Uf [Ƕ
-ņycC>CbvNĻ+uP\+cBz@qsO_͠e@b&5f8;+4L~XF\qX<\F'lxM.0LmpvUI	p27G0kNs3rvwGF"MQՂC vLli;	p>[oɡ5J[Ũ<1b=Q*P:613`50as9o_	H$/T~ݾ?_EyE}.Rn$^(Ŋ^<ÿ$v蜓E'cbHБK$)}KEcU#"чj1>ޡפӒi!$%QMk)`g:wߣŸg`xl!c[w=p7g"w8a=Bp.D,I+V(IO8yv(;Q
-4^FB~&Tʹ&T<?b-^ sϨ?bPjF`P"QX4`L2%V9!pi`ɭJ9nϏ\tH9"L\>A>ŸaHC6|d v`>[YYϏ]\4UyXx&^?]p-,`TmuQޣF/ҽv[),^^\6zymqKr^.ty~f+Ի˘b\}\!գ1xOSIhTGn:a!$FBJ.]o)D8#<Cd˘T9Et@&.{äqI	Ǹ쬗^e/߸63V^G06J0`w0x8!LCAJ=!`p#JV	y(pc;U1ǣ;:	h_1ЋNi?+M"uZc%6Dږ,x5Td2/D9duZjdX$uW.5jv}SɕcsXٌUnˏW͔afE6Ed;z:~+&轨KӜ]fmJ^
-9:ªvjH*65Gz-KȊC\갺χ~5jDQV	duR5r|=At9Bnμ5!sI)o[ͤ&B>_鋳/Afn3pGlUZQ.\҉!Y-17B;o9pODK<ט*S2UfT7Qï)*͠G`Q7.vf>ЖheRc`]mmDfFLuM9=1z%$3$ uprEi2xYӘ]H[/u 5+BцJnoï|:~+Cs\35.IB]~+7&gOOg<@­}͘!/lJR8&Kެw(x	S-;r\%.l}|ÿ˹CS)'auiJDP
-fvLqA+%_]ʙ¡87SqF?zx8AYoKC7f3N|ح>.R}N5ґ\ImƼ[9)X]Ө^hԯ{)D0w}::tË2	xW֌ݙ:3u*%x.2(C~ ĖԶ&9$n8]˫{ݮ?VXMj^h30&^QD1ؿІaFC"ejQn# ܞpT~[vAn M+^oz0m.?4mi]?^jN/0=qW&٨M=w-^1n-3
- M*{mpp}m,vh,s`~-65VEoyNqNꈷhhDUlُ{Gy+@]j˖WsOLYW5$R1+>3bz4B˦&%)->S	ZnQ9Ethyb-N{ >	u	tʭMSVOӲ۳#*< Qk'K!ˊqaYZ^
-S*￝A!thm-Ð{q|nʹrz{H\y5W9W5[3[ff@q\rZtUPnU-3,Q42G{݀v
-,\ oUqC96BLu2qY^0TsJI,\GaJNN9`ss7KtShܤu]N݌v~t
-Ѫ$1{w	v+F}`xIKڕz)~wj6[Bz#Ť$7dfF;"JY!q?6S"5{wh8qWe_6ﶼXQyPկج':#4#v:CYzxN.w5WƗO2c?ЛX$t6%0K|9x5Ёq?p߲hZ	C0av]ݳ&krw~W7fkB)>cui.b 3ʐƁrŚ~4{+14]N֥&zѽaq gزEUW_r6Z|7M&>ЊWǛj檞3hh$#xraF; w@v9rQpZjx`n3Aq3sT,5Nt$hrn x3X#m!k{G	KN
-(bzlUK1&h#i$fͷWLl7@g$Vp+m8̏D$#i)OAq5jmXjGraAnrv0۫-eLiXD<f[W`xa#AI;xOc)~W
-\9\Ļ@Ww	%Pd^1!<2`8h?9:'`m#hkh@; vkNAK)7	q{	?j"lz4@VFN8N8koeZ9_'d!꤫@G!JY%^C&&IP;iakdFD^uj
-i)
-Q=ľBj{"σTVP
-m)Bi~@)4)B\ب8~jn5;wsh8@@Cu13d>R W:Q$37^lVs/~dulHpC2x"%|;f	`gd_17M%tdkV.} n#n=) iïmky(m0Rռ?㋜E|ġ7u~|]~GDq(iVwNgj&W|z.kso݆$"TcХpo%C^Є:86`Cq*uúfGj+Kx#XYVnw[YX%V|Vnu1YahNneU~@sǏ(PYE'<c~:C}oR_8|uqs?wHvDXŗa_|ɽq%8zbD4dP>!}ӞC=wF~q1^OM-Gs	K-֭4
-aVLc0(JFZT:[EK>7\ġ(
-1kkDDuݕݮoI5+0,
-_#Z/6wۥ|M#8XE67A;xu%0,I0}vS#.ƢcIa{ϱeڎ4e;jTs
-}eLrr(@5p&@300^Xt]g2ՑydԧTmTDzgvGۓbnw ;ȷ|X+#}Ƥp*6Я`squR+dvpDNlM|^,\=ukFb	c2o+ͅ:WiIi#h5A;U*kE˷xFc'wIp~cbvfVG1d Tu2)y"-e9m@u?9,?.O|//x[=o+ml
- nm}t	B5`ԉЍ:> 8s܏un2V<cԷWUӪU(vM>u<Yɏ4n[	qWoCZ<5JK4^iE'=5UrI48TW1?OUzɷa@\┋pQ^0 2Ax}eZN
-Z=T6zY/|S0JϿGdGZ0)g6%C[?
-K~(
-9I 7t\N[c8	;s+NRyr(ʄ*O.$H
-  :/~z{j&5!(+%xx/6]K))MFAu	Vh9nsDů<=r8%);UwGc%l`]YEUKz:ԜNBB_I
-3| `ڐTUMv_=FY2 oP9|kty~fG`z @5wG0ًsa/uK)d3F*?TxÎNKQ%X/ׂ'\>!_6ӍƺH=cnڽ#K9ʁ/;A0JPmčFujbYvƿn"%EXozX?-ZXЇ<[Sk@|_ݠC7B=P˅]MƱ.t f\tѕnϯ-sэ\JTbAxGWMXR8\6'3y*'-8D_j|.JzgqF{\tH3z4z\-5h35ԎGbBwV͘jnJ\'xSyO(v!pW ;a-?Ɓ65'-o(kbxpqZ-K?/Ыq'{vպ?#XЗqic%9mF\p/;z~
-'HoG}dB9n	ex{3n@$tV`)"NWg"&!݁'	NeC@Ο^3Oo?O7"r8$4?쎷.JW q*r Fl!2'w_/|Dk<4x\|Z0d?_XZ9i(}LQYZo?T;oqG|*vDC`jTg|E
-?XőShmKh	c#V7Aoh|< Ϙ`:kR.B
-Z*!h2"jC[@[=vE	%]j㰨1eH_܃{ÙSFlC׍هQI =>qd&">YU[ 3~}%ИGe_Gy{ud>$}¡_
-KŁ!/ܱ
-Yj8#*N$DI74Nz.17^ոLJ]]/n_W_x$ S9b].NJtJ<J6B[.Ca3~fS^R1`K	o2oq!Lk/c$v_=#qnHʛ \	Dз
-H/iguv2G=4*TC\XQ+_D{߂sDI{~r¤]3Z1.8pH"1Q8sf2>,UD&ILi!Tp';3%:At-)8S2$j#?z
-٥dzL&&ً"s$=<a+ER9|Kh^!Lf0Kr9Fqn>b7oWKRd E_ofw6&_E3=4y4tR/#~f
-ZIt;#*Qa:yzO$1&0zzbˣ.qsbsϏw)յ<bMu$h5pjfkٽ:JCL|4bQ$|&kCqj!)ce!j԰]),w:,ohw"`e-[,~:9;<l	%PА/=<,T\	ݴ"-a8	Y\ќe3ܽz:Xǉ. `cpxPe	X"%Ԟیm?0\jïoï,FbgB`$n-?s:a?{~|[K"t ϟDIǅnP)cz$R"BۛP{5$,!PcKiqS(lo2!C D4BcQLaorNptMHX%h*.73ޖBjbi4hq#4G..4%4
-E":V*$[Z^\'T:I4 LR^J,_-S*aҦU n%Ia`X#M
-ԤmADi%H`c؉p1v. Iek7	>@GqjCnx`W	(bl
-lUl(Zn"@&_KIG[$$Y{1
-vX`7D2U #d/bnfDW4w2DmzFLH-M(P?Ү0'L93+q:2(ڛ(H!9v>zזBp>ӐҬuxg&j]DRTx7 ,<Za!I(?L0D9USLQ̓lQZGc#y(xAcM<;l($  	͔Ь$4Gch!]JEd:0Id#vƩMŤeI	V#&eH&ԑФrqNwڈNbi$:{':eM@$߂8ĩ N]8EQ&S)Nĩ3Spqj2;{Ce%U=T-;yX)2^LA*z|R,ɋN #wqs\fVheq[	'W/FguXBQyXd&LrJS2)gt0FvKx[ S2bii,	wv͉ե$VOBva:\R
-2D!)C} Cdd&qv+C-`0_/e+4hj5⁶X[17o誑:T7ebjSᖈ!w{aHޚMd棏@߲~By+w3]i2@qjV!1BN#ZWU&~I3Lc?)YE81'R6Nh}4QZQoبgl4#cN+]1GsHR(a5v_
-?l8Z p=^RЭ*hzT:S]Boխ%t(c&X;x"7<:~]v;zǖY(7  ogb%1XL$f>ogDdUrd-ӤoA_rqXοA@/D?WoWPV%y=6<9'տYź@>U7&_wv̕v/0(;q$ew+N#vfuWd6sTRح/pX+[n:v1l9.l9۳Etz}_ZUY21&`AfKj<A5rx;nCt/l0ץZƊc)'jƑ~X9|3wUY6kw7cZs̑27Ylw+ڐ,R8o,-E+-jYص|#t1-uukU:eu3wӕz{cg֠VHjLSXL|Cx}K}v4\5lsll'q}uy[h#õ,,f $ې3IeDxlY4_k_aC~#aHIyŦ tRZ#wyP ]0y:[De:EI|泫l4ZGh6Ҹ6R/h[%tz{%7thP*nF"3P%qc;nu.N"kDOz&\gXm>  ۭyQ ~)'N:*mn87aҊ5CЩhT?e_ՏIeޖx|@a,]K	V=C(OXf
-A^ţ7mj{X./ǯ/LJ^\T\Ѣ@Z~?l-.KtkHL.`{4RS>jMOQtj9Т:VKQ8
-Ԕ'*d+`fwDVط&Kd6	V4[UcW%U*q1u`;Wr}m-$!'5
-f55eݭ,_FX6<'^[Nf
-2Y%ǡ+SL$V6P7gp>;Eߋs%2?rIR8;1Kv;?|ݗ^PAKa5J=u{	-Buqܭjadx8wgИN9GTB0R'Ʉ6WY#ٚUd!՗elj6k3#Np
-O^:n|gVivE:8G#0]!w'\Clm	sg/KA=YSyAbq c xɽ0gmvNY/0TZ2Lq2 8Ov;|"WmUhҿ+ctVF`?R4t!-F;kݸag3wh	=Z-Yюlz}m=vIxJ
-:rp1ѭ'|x(zh{fv%bnWna^ivջQ\&Ŏۋ"M8Io¨4^ΦiʲU:nf8fILGENYuo|Wإ<mzE'^Q}g@8ss6ῡKNhM0\ε]87eԛ >w|iv:ZnKCb|(ػx./V뎺<.鿷n>Vû =Ohyޭ=jƨ\}sP
-̙Dp9x&BOR꿪>1|
-xJ7{`Si3AJ̶klH߇	W98iaRJ!p6.Cq:`x9)xHu*+7BrT0G]&i͒X:!9(Ĭr\i晔Mw?aofF~pw_~:ؼy˫~ӿ_~!^?w>ÿ}7_gqţ4}Q{x`	{]nbugUkO-'xW`] GjqE^֗{9$TU϶3mw{8BV/$?]epAn
-2AcIGMI[<e 
\ No newline at end of file
+̸əŔ_zxD8I^q+2׼Gzw_<FU<rL3b]}omXYIu@툸-h`|#ӈ_#4peq8>55V*;Pr񾟺ƘN7ە1J@ֺ!hCGӟ#CryaX[sNÁRS`0mRS[ZaJYu?R֘Gs)%dlv/z7υ5ڍ.L$Wa2[3#۳b5n;%éogsxRW՝9sq7LiEV/y5Nix</od`G:%MhM/ƞƥs?y6uʃ i$iU:e<~)DpN'(ɇf!K/<'Lՙ<~"%ꗇ|<]sv8}>LPM%?rmc.XylÅlFڃv
+ג#Rbb,<+G-G{-GmtH/##?|q/&65Hi+V.D7
+(z&ixܞw&4$\ÈF& |MRt=JxNxVBPp%t >8p)sN]#s%]%K3(f:'2*N$+Hɲ5MXuLQRprx4ՁC:j	Ww>OATȠZV	S1"`wo"Zr%}=C'#cHxȠhᐡ{0r2kLA\T.NL.IY	\*]#D(_7|~E)TӼ\j^	ĉ颖 "(|7a=2 tR7ZS+-wK
+-!t7/GOj.tqNߊyldxV(Wø<Ësivfי~c&ʇxPхF(otLdr#<{ΞїkUZ=\ DXt,%44-&KbڼiM'PȯN˩{ʇf{`=7aY.iq{9/߆[k]=5[ϧL`<)$h9NFi뢋y3i3=oW#]8:]T%SG, )% E ^nڼt5Jlzz&/e&`39*}="h!%X5TEjhc8{&pH%nP}>ې|p3w}IBmIKiZ6>x6[vq5nppa) @Okv=40pgz~Fk/Dwzmd8_j8}R {TcKta#z((t PSݓ#<5[a]4/I!Z
+@t%C/kxt΀w^M"ac(ǄbusHqֺ;?6޿vN	1XU 2^u?n	a<#M"EO7oiDo4brj}aȧdNGٰ;oЪ,6ӿݵE_^D09;L6U@iUt@nA̣͍fSs]("C2#G$Le(׬I1ߘl4j-8*Ƌ\V(lIb8<Ȉde׸"fADY a4gClU`|zʭ=uLAs
+k T0fk&2o0̂ >HMv[g#柈S)%/zꭑO,nPphj *72vz8E-՛vq둥J#m)zCf(,cI@lm\~8iTJIjЌ#Q40 bXs=*0t
+GEPܝ즜nݿy_.V୨X2ܠ܆|*lOpx906 C:.Ϗ)!NW\ S)϶GT: 	f	 @̜~u|MإFLfefo1</'2$"
+uc3xwZ\9bC\ڡ	^mS00Τ'A!)0pO;@<ohAn7hJA.=Uv=$*@BŰH oC\q%Km<D_	6A#tX޼kH3?LH+SnZ DBmstwfTx>6js+x/8\~)v^ZZټ: Fj5LD:_#:.%HFx/W!x?|Ys1ȏs7RB70hxFh!@(ON67wN'DOIMGJۢmKWz;sִ-y:5T_C~KJ4fI!K5,$S!3:fm+uiΓȕZd۾7,R[2~ǌNq" eFG:MkL9u"(=<tQSJ۴e6ډH'>HZ%v D!	ӞhE(PE&I0|c֎Y )NgX^q`L)lE|ڣ_bO23iĭr{vN	}<X@x#M*=:؀2_E`gGDO}`6qTZ }Jw0V2G/OgH>M-JlZn!c;Z0c-X̧<<V|=W'ʳ9m1x#<;6p7VH(qo?n?mpK-kW/NOny<~Yv6kc:=+DH`3\уih49;^wKu7}]-ɀ"̋&6ZWyURq'e=o֫&٭h l:s&emdf%k0*&` %)|ĝ '-	1+vrCݼ3#W3@[qR/4Rï2>ޭ6߆BR#3nŎ퍏XΎ֯|1+aM3=`|u!?]L"69̒^#3T	H3mfY-&Rc]?Kh4S]69hV;e} !ǫB>&=jK%Pa2Q@Z9_tω|;؄%+r}b'B@m^%/NԼ;n&Fyj3={NǊrl>'?|{|-[Kǰ{::Z1>][	9rI	12fxp|A)U=q0:;593b&yEzGAMW=C\\A&\O"(٠zJ>sAX0k"~@c
+@x(X3_@IDITqTϨqoIت%UЌA+h絉&HRHr2M7i"u"9(w%ƛx-T&M={ݽ&l8`ʙqp aQ"͞"vg5ԗQj9QO	Y9c܄ЌDSXD}׹HGME3ؼ<AmA9JPvyWD,*!q^RQIz3y?lQ/HX!7y1~o6܈"VN X-*==;D5VlPg=BRi	D"\ܱ}KحDHO/4[32 @vYvaW\U3`vº]qWX`(ΞMBvqMHB	h9Hǅ`\t|}EL>,&_حWjQ!(Ta]Tol]@zOKTİEGQjbfׄ@5Db8?U |)KqSOCe3R{X
+gW}ʣsТ3 Zt("G;8"mĒJ~hTA,h+ZbWaE`udbfDf@f$"VSႆQդ|ޒ(Ҙހ-ܛj	+ O˄3AT`s
+F9-k\W(^G	<)%TcGj#Q2am^#?
+	i3JuGZ(/֫ŞɃ%k
+gq7TE*ْC,qstnp8._qq٠h漋*B ¥_VKqkތ	CK4kD8
+= 9 - MT⬖2Q2ǑNf%)|˷T{盼gMFR&nT~ӗ|769j
+'+fԐ} &CeWX`Ȯ&>RҁL#<R27zWa0G`$5Aһ -+|4 @Zxu]&)b-`caI#=SȐJMn2 :@%ߦ%ڨ.2`QDlGbʽՍlӹFZܾQB JPT.Lg#ԗP??_ؔ.|_`zX/n	-^ ?@{Fiji$Q.&TkG8{,yPa's/>6j<++Mo)F\BQ{z<Sbw;k:3Wk4Rx~+A
+~}<TB8H>si{RpGxgdA"csy&D`ôr*4p\B>"o!0:xY빂\	!2!Lw|$u~-\J*?ƀUY5NGt".t#1(Z0>+@Cy;^M@/W-\|,9=CNƵ"-~x4g.csFtWXgQ@QnM!"D %qM ej녈Y Q#]2S[fd&hAөOk&7߿> k&Vbh
+QD):=XytJЭ31|gbU0cz/<\	X\jV|h(`_x7ҳ9lzC;zq84Su[+d!w/dc^=GX4:/[Ӏ<h×`%]@Yz#׳hДk/nwG_c<Sշe9wKd$}m pL@:w~;%gtF8}~nd!Q_paeK\G,N,yTۙ˻t&-wkÃVs5PBXeR..AabG.HԜ$uzU'LNƝ5e3mLԴY/1H_%٤xO3q꫙1eZ0C173fh2uP\baRb],(ulg?*{%	 #an2ph"@g֨myw7 p-\eL.= iLQDzAR{g5	u9	Yd%%B}If7A<yl9Ẁ'/;?ϩ»H^|GJPNohO,k9!<@VLczjkrv1쓺J,tDnhs?%z>@]z\.{,xF~ЧZ{͇Eb6k74t56kVka> oL5₵{ws<te(H&w\qŦ+b$WeN_jxp *r^ki/³5eƚ'mX;fyyʍˈ[&dGPrqМLuYU˂oy q#1s,~7Նpld~Uk{I~=L1;0Rœ_@~ahAm*ѝlџ\$cJh'aP-1 89D Y-u+	i㑢^hǇ\+Scvg#С;YAUrqX큐Bҩfb$LH5`Dn1;k><W?q#)28^e2'c9 9NӦrH_	\饍?l9z)^UOD2* 1ϋGwI?J"&E]aN	S3D6/?J.zၫUZѪ^[@	yZ.Th\<\?(jGCR+#E
+utzGGMſϜYqa=6Y߭/l2)!`PjH̾n_8I 2r92Qsqwx~ow(p.\bsGӑ&ΡH2߬so@n.]jtGK@&an{Htҥސ.ҥ]"nwڃ9oWG30vV؏-5EkD~y}o[oo?{BNr.!%:W\l$9 *lz95dBp?@.IHW(^6)Zfo":a8m \&|n}.d'0NtI˴?`L#ᄟ_#{.2dt2([NeY:P|r-vtO3u?Bf-`KcyvBFqmpAֱ#wsNA+'	vwp yGTVn36 On[.vf@q
+vҹ
+=R&ٸ 40!P8`8_W vjiU PqeW1,VNPW^H/zpdu|@3w'n8s+? $uO5uuϗf[aXb8s}r
+^H9Id_$H|¼mw͋츫 .z;$k56JpWE"Ǎ;ED_F8Xl͌8baQi D4"+qv\VIY.b`(g]I~B2f`r> r 򱭥Ba 8b:ؐP
+@JsS@FW~3F8 Dc~E1Ύ9:"4x,Ѣ1W ~8^ g-b(~b|s=l\gÚc"@ppݑeH=xT y.@`NܟfrhapR:+x1*O̬Ek(}.MEjdu!WB %85EK >'_/OFQiF_$I*WJz=9	:rQh~ط86t$Id`} x@ZxL>w5鴤tZ3IjTڇzE
+?XN2E]~86{h1Y <r]wXnn/6!gR~=U<JsS NnCP	r	.Ϗ,ta;3O)cc?gU΃~u{| srE#s~dβ#(8b(rH1Exk>h$ûEe~b)v1F$ҀP5,!VuAVcdF:C?MUE3çW|O\ ˸?#eF](`7{(Kt/G#Cx7}>/lD^^[R+窗]Y
+n2&{y<WAWCHhST@:r%硎tXѸ緋fq49i*oJ@4т(Έ(Ї 2!rv}py2=^0i\vR1.;q7*.;͌'`Ra5A< ?~ȿ(PRj;ȳUrA8
+D-ط;ꎻg>mέNE0hG&5SOJH15,aĘg%@!QY2?>2b g]万>?Ud@]Tr4V6cUrc&g,"b3%A؟Y@îw>g8ߊ"z/j/4gf)Fj׽Y@[׀`N%ҦJM͑v^,׺:!uM-)9k|F "i}0bhB#Y`$_EO1]pAП3/`M69BȜd:~nRa3FGP5l$kKY[qG V#%tbyHf7fFCd?R&?k35ʔLY0{mpAiJz3(nFf$+ፋ]bb-ZTŘ@Ww[5ai4<qݢ|SNbOzgy^."C$.@h\sp;hw_Fi4m`2pKjHʠraï.>_x):
+\g=W_`8n~Wd )~"C~=9rƙ-)O мpk/*E_`3fHx8;Nrz7+!
+>"7^BCNg9׺m4[_*r.6=w6}TIet]a<DFJ|rph=T5hP?n?mŒ%iv@TSA8t$:WR[01VN
+jm4:^J6Q'L]q)"C-4}ޢĕ5chwDL6J	łʐᄽ -tý IrIm4N`WG~;lVW%Zuɇ׾v-{"/7aѐHA}@ڭ}T-o g2&]lt=ni
+ۻ;qO>d5q[Znס%n@	C6j='inWLۭmˌ;i^a\a[2]=?v~``EpQ ul|7C޽98j=:-ڵ>-!'bU[ޑm Pڲ\t *S֕~<|,T̊E`Aв骉3e",`
+FTCVb3ADNA%گh^lSA4Ox]rE蔕
+)@&RȲC\tX/CVT.ogPH#Z@m0}&(,pqp7 e rR9W^UU9̖0Ymź:PWkU|d,)h[wK;LQp7]K1W1[qA\PΟP3S]#l@L\%Uq'QDn:$CX<{>8lR&677i]S7_D6®d*I |%]eQ#=y:FR¯v^ʯD͖H1i80Ҁplpl:~2k|%nܕzzͻ-4A#G<VTTqtFxk36+P^K}]ak?%F&&V#(Ek	_)^t`d*`4ܲ~췬'V8Lݳwj%c ՍPإi]ƌ2dbq\GJdc-Muɹ(0rr^to}iXܱ"lQk``痜+y<_MI仏+fڿ3&!H~3\Q7~=9s;+`wN\\oLig~\j}2K0	Zr9./jH[`BvazRLIo?1r7HIYc!q ۍf+PǸ1p&m7\m#C7HZSP\j_@Dۃ~F]7|~v({6S)/Vx'OsClبc؈tFX
+/_B<W` .%?]:s	GWhgO#91'$ڏ9BC*	XuZ<eR nGM*.nA^jCAZ<䮀b-2kѩΦZ[VF	&e:QHRvw~II*jҁ,"TNfZX<<heğ-Q%Wc(*/FZBTO2м_ l>aBA
+®PP
+MJP:W6F24l$C~ݜ+!8}'P]@U<qx}NMW4s~_7Y)5>ܐ/H+y<_ΠYtmX׬itM >mI7ٚUK[wJt9?j4;'AZ^~=;J;,`T5O "g1qCa]_%_~p  zÁ2w&ә^/<zuH0Ut)ܛCszz4a<N,l&M+4>B?XPA&DݰZw#V]VVɻE8ne~]pnL|Zft`_JEA~dcXzu=~]+mu?Vre{qro\$ع?,5Y9Դ~!#OeHߴPţ]~(~.17vtxe\E$q{~z1|K<)\mtDRu+MF(|X9,L@3:ž+?9դV$tQRƹqh
+ B;/dzw%:lz9yR
+ï֋v&FmlւuQd*^a]	KL_l {ላXqslc lxENZ9✹DB_68A1a*=	&Ќml=̅:?]W('ęwu$r)=U17:Q݄=]8N:Hw@q1)>#kA3z\J)[ _ ?hCnÚDX9؀}/
+xs!B( sZ@Rl5ZzMkw_lNՅZ-2=Ql<23	]l~!ا.q|YՑcxŽ n~LyJ޼E˼xo[oo?k]5p8:<KSA 4 VOp[DBy?[B 1;]ndwCu"t N:aq̻mUմ*)gս-Ƃ]{ O`<-<jVyxn@/ay{\fې-r8bkF`WZI{jMկDx61,UEimqs.׵81>;'\cLHjP^bVSFϬ7D2_T:=ør90?6o@;7CcaʙM	x|__~?89GD܊TzJ0302!=B<?.ȩ΋  !(ޭIM G2
+Jy	uRidJӯQP]B.={ۜs4;|0 ~~3p\/NIJbnIjy;XgWVQ){5PWLe1 6(f5B@UjSGnQրD7T]YH`yG<P%eQ>p"ܷ4yiR
+/ٌQ ްsT	˵{	)WO)'&stc-c':nn/)R؆3qvH"~roKa"d!a(;(TqQ)::`ڠE)[òHe9D:O>mwK,O`=8-ǖT@څ'g=q7`raFql'Y)%]tek\t/`<l<X(US_v~ ׃MLGf&B^m|NA#?:|ײ^Yў3?]3dWoM?./_oǣНU3?3W0^1>-DJ~੥] NbXOqMrIʚssa8D<GVj\2I]on@@&ϠȲ>,%w pXiccNۮ8-C9\j?j54QP{ۻoB7q3^hPk*"kUy|rHwɡzoaYP5'̓wۏ=g*#	ˇ>bv
+[bDlݗ'QM0L*&YV,y;xN(
+o?1D_S:l}DĨdT֬.vwG<rÛG=
+cXմ_Vmql:uv9Zy==Z{BjE,sȩF(|dۢ39f>!@#3&9ڟjੋyB"o5֥JpG(ViaQ/EBIâZ8,j̅"B.h{#jpQ}h'1*ju#laTCF&GhdVȌBn	4f-:&4<QW"A^r{!O#	GߠphRq`)vȄ|:6w߁{uZc Hl|
+%I|{=QKzͣW5n$'өqCa~K@ן".%	ȔxXWC˩R".ҺЖgPLY{s,Tj@ R[[\A:ڋ{Xco]*W}pA{"{B=}z븀unlQ2(4ą
+V&zj=W,޷`<j=0A̬tK-jl>#'HLf-NĜA6K)zI0)CRp&CZ$wg  NLr]zK<N(/#ȏGv@>#	G(GŜ5I;OnJdT_RwWh7z@oŭ\~NQ۹X0f99yۼ͡|sLMG KEΈJdi$$ut CN^x:=8 ?2I	^`~삀"K#mi✪k]s
+Aqu-XS%ec1	Z#'nZvo5S*2_Ġj1X#h~""	Z%7ElPerHXŨC5li
+"˛+ڝe">Yf8翺N([(p`	T$4K;=h+Wr{7rbNsg4uy/wf"!Eqbd X`(jX1ީrDvrY5Hq|96c47%W+ke1n4Xo2u9[ctFiN,$֒H);w&!`}RqTJ|<,Pgf+j	yyXvD$)?p@=+&pX-r۲ӥ2\2]"y(+
+|=ƌ%hǸ7dZp'>˯(M`	ͤBjѳxsξaU8I,NRAH)S2R6˔Ji[%@E}&)g<$wsBG75)vD <>da	6G%v"CCiC.\@&p1x@Mi(?@Qhڐ#`B'JX3?gU<%V$&E0×R$ 	<>I`&}2F$,;9XL"'0?YX$]zB0+e6R"tD&JA' a	#1|2rNJć'l x&&4Ru<ޥ` 4d4k:ZF0|W7Qa~ "VXF?i$vN!c,d.['k HJG%x`5w{w2N'ç(([.
+$ HB3$4k+	-ZCWbR(L#콝$qj.!GĤ &=F1ivYbRgՈIoib%I 4u$4\\@Aᄢ6إD;@t;NFm$:DGÉNtY/?I Nq*S&NQ	eSq <@PYɳpծw)|9UN&/v7VL#ST4D}"*~]g8WbUc5Z>3q#CV˩Ѯgh1PovI(?'L%r'@񔽌'&$x;x˃qyo]a|csbu)ս*!jDпm2]d~d""r3Iaj"K
+i!:ګZx%{C4քVjMsٷ-?rA%A=^d$o$f #PP?Lvy tPt\Z,(>qȷ x<m̪п|UyIA9m, C
+ 7lV%;vL'BMd=_6MV6$MȘG)c`)Re*JCMo׬[ )NV:\am7 t7p@q?vP~uk!ݟA%X<N1v H#Ϡ_mޱeJ ۙhXIL[Y?"x\7Yu|4)|Pbw~\kPa:3Pղo<:@FI~lq&p~oVa m0G~uɗz.s>]je2u+8+%NI]'`JSv'Y:2ܿ/=vC\5)[·ݩw[a<2[alo+{.d~íA&L /s撩o6wPv;ߎЯo7xuvlʉڃqV;ߌߝ|v؃{sM+݊'6d&TsNjx}9kK
+lỨZ@tVy?v-_h|(BLkK}ZէNnY]9t(GpX5Ӕ3V>^RG5DM6fmwh":[I\ux6Hk=p-KY!2 6dxskV%|~XHX1=RR^)@co6]V]E@W5L~dfQ_j1Q>&47ڡĖCɧq>^e*]1(omȣL=kI@\[Ӂڥ'zaS{I'5Y8Vvnl6txɤ=ӳJ|-NyXmbAtj6U=aWcR=_-)PFlBUP,JSc!V4r9`{WBwp.₿6~iG6׿zxhyz(4$#=B˳=b딏Z*f{lo~pݣZ;Ns9B65
+Yo8J9|#4ɧ(.u~r.GVUUIJ\LX>U\C_kiwI#mGMM~ow+"=#:}LnIq(7ɡ?x3OfQ\tsm*}TRxXrRO]>^B{o˵b]wbZ;/9mY54u5UI2%UVHf Y'aH%e?[ڬhS9BӬeν[@,,0,8ߙU]q}=8LׅnH%	:5[DKRP`l,v^%tXHDr!YmFSV>g㦖SL5@*&]Uhat߇'Oු!tHn7nXEř)nBϟVKV#x߹gf@]R1ށ\?\Lt	)C8ڞ][[x~#*6]fx|n%W$IbHg,N0,w6i/,zwN۫Y4ήY-fSwF~}ի~<v)O^2djF|(\Mzo`Z,<s|M'&._ҐX+?,.g=6պ*Kq 5@9Zk;;w+=iOoڬ1*4yg8:a!s&FGPoO߸|ҍXTLRmtBU`/eZs;>P^aD @y
+͆P\}/U}'?l~e}Idd2|ȭrJ(,~)1%:|y&jϟ|b}٧᧟?ܼ?nݗ/6/oo^_~3c_v{~:o~~t4>d(j_T/}^;`]YSKǉ"XѺZܩ#xeekGtm/C?	r|ճL.@신u;{OuqW\좛L8nRQS"8e 
\ No newline at end of file
diff --git a/core/modules/system/tests/fixtures/update/drupal-8.broken_routing.php b/core/modules/system/tests/fixtures/update/drupal-8.broken_routing.php
deleted file mode 100644
index 3c5e9af..0000000
--- a/core/modules/system/tests/fixtures/update/drupal-8.broken_routing.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-use Drupal\Core\Database\Database;
-
-
-$connection = Database::getConnection();
-
-$config = unserialize($connection->query("SELECT data FROM {config} where name = :name", [':name' => 'core.extension'])->fetchField());
-$config['module']['update_script_test'] = 0;
-$connection->update('config')
-  ->fields(['data' => serialize($config)])
-  ->condition('name', 'core.extension')
-  ->execute();
-
-$connection->insert('key_value')
-  ->fields(['collection' => 'system.schema', 'name' => 'update_script_test', 'value' => serialize(8000)])
-  ->execute();
-
diff --git a/core/modules/system/tests/modules/httpkernel_test/httpkernel_test.routing.yml b/core/modules/system/tests/modules/httpkernel_test/httpkernel_test.routing.yml
index 8f5762a..7de4338 100644
--- a/core/modules/system/tests/modules/httpkernel_test/httpkernel_test.routing.yml
+++ b/core/modules/system/tests/modules/httpkernel_test/httpkernel_test.routing.yml
@@ -4,9 +4,3 @@ httpkernel_test.empty:
     _controller: '\Drupal\httpkernel_test\Controller\TestController::get'
   requirements:
     _access: 'TRUE'
-httpkernel_test.teapot:
-  path: '/httpkernel-test/teapot'
-  defaults:
-    _controller: '\Drupal\httpkernel_test\Controller\TestController::teapot'
-  requirements:
-    _access: 'TRUE'
diff --git a/core/modules/system/tests/modules/httpkernel_test/src/Controller/TestController.php b/core/modules/system/tests/modules/httpkernel_test/src/Controller/TestController.php
index 5730080..1699594 100644
--- a/core/modules/system/tests/modules/httpkernel_test/src/Controller/TestController.php
+++ b/core/modules/system/tests/modules/httpkernel_test/src/Controller/TestController.php
@@ -21,21 +21,4 @@ public function get() {
     return new Response();
   }
 
-  /**
-   * Test special header and status code rendering.
-   *
-   * @return array
-   *   A render array using features of the 'http_header' directive.
-   */
-  public function teapot() {
-    $render = [];
-    $render['#attached']['http_header'][] = ['X-Test-Teapot-Replace', 'This value gets replaced'];
-    $render['#attached']['http_header'][] = ['X-Test-Teapot-Replace', 'Teapot replaced', TRUE];
-    $render['#attached']['http_header'][] = ['X-Test-Teapot-No-Replace', 'This value is not replaced'];
-    $render['#attached']['http_header'][] = ['X-Test-Teapot-No-Replace', 'This one is added', FALSE];
-    $render['#attached']['http_header'][] = ['X-Test-Teapot', 'Teapot Mode Active'];
-    $render['#attached']['http_header'][] = ['Status', "418 I'm a teapot."];
-    return $render;
-  }
-
 }
diff --git a/core/modules/system/tests/modules/update_script_test/src/PathProcessor/BrokenInboundPathProcessor.php b/core/modules/system/tests/modules/update_script_test/src/PathProcessor/BrokenInboundPathProcessor.php
deleted file mode 100644
index 24f15d0..0000000
--- a/core/modules/system/tests/modules/update_script_test/src/PathProcessor/BrokenInboundPathProcessor.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\update_script_test\PathProcessor\BrokenInboundPathProcessor.
- */
-
-namespace Drupal\update_script_test\PathProcessor;
-
-use Drupal\Core\PathProcessor\InboundPathProcessorInterface;
-use Drupal\Core\State\StateInterface;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * Example path processor which breaks on inbound.
- */
-class BrokenInboundPathProcessor implements InboundPathProcessorInterface {
-
-  /**
-   * The state.
-   *
-   * @var \Drupal\Core\State\StateInterface
-   */
-  protected $state;
-
-  /**
-   * Constructs a new BrokenInboundPathProcessor instance.
-   *
-   * @param \Drupal\Core\State\StateInterface $state
-   *   The state.
-   */
-  public function __construct(StateInterface $state) {
-    $this->state = $state;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function processInbound($path, Request $request) {
-    if ($this->state->get('update_script_test_broken_inbound', FALSE)) {
-      throw new \RuntimeException();
-    }
-    else {
-      return $path;
-    }
-  }
-
-}
diff --git a/core/modules/system/tests/modules/update_script_test/update_script_test.services.yml b/core/modules/system/tests/modules/update_script_test/update_script_test.services.yml
deleted file mode 100644
index 82446ed..0000000
--- a/core/modules/system/tests/modules/update_script_test/update_script_test.services.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-services:
-  update_script_test.broken_path_processor:
-    class: Drupal\update_script_test\PathProcessor\BrokenInboundPathProcessor
-    arguments: ['@state']
-    tags:
-      - { name: path_processor_inbound, priority: 1000 }
-
diff --git a/core/modules/system/tests/src/Unit/Breadcrumbs/PathBasedBreadcrumbBuilderTest.php b/core/modules/system/tests/src/Unit/Breadcrumbs/PathBasedBreadcrumbBuilderTest.php
index bf106f6..0a00029 100644
--- a/core/modules/system/tests/src/Unit/Breadcrumbs/PathBasedBreadcrumbBuilderTest.php
+++ b/core/modules/system/tests/src/Unit/Breadcrumbs/PathBasedBreadcrumbBuilderTest.php
@@ -7,10 +7,8 @@
 
 namespace Drupal\Tests\system\Unit\Breadcrumbs;
 
-use Drupal\Core\Access\AccessResult;
-use Drupal\Core\Cache\Cache;
 use Drupal\Core\Link;
-use Drupal\Core\Access\AccessResultAllowed;
+use Drupal\Core\Access\AccessResult;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\Core\StringTranslation\TranslationInterface;
 use Drupal\Core\Url;
@@ -18,7 +16,6 @@
 use Drupal\system\PathBasedBreadcrumbBuilder;
 use Drupal\Tests\UnitTestCase;
 use Symfony\Cmf\Component\Routing\RouteObjectInterface;
-use Symfony\Component\DependencyInjection\Container;
 use Symfony\Component\HttpFoundation\ParameterBag;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\RequestContext;
@@ -120,15 +117,6 @@ protected function setUp() {
     );
 
     $this->builder->setStringTranslation($this->getStringTranslationStub());
-
-    $cache_contexts_manager = $this->getMockBuilder('Drupal\Core\Cache\Context\CacheContextsManager')
-      ->disableOriginalConstructor()
-      ->getMock();
-    $cache_contexts_manager->expects($this->any())
-      ->method('validate_tokens');
-    $container = new Container();
-    $container->set('cache_contexts_manager', $cache_contexts_manager);
-    \Drupal::setContainer($container);
   }
 
   /**
@@ -141,11 +129,8 @@ public function testBuildOnFrontpage() {
       ->method('getPathInfo')
       ->will($this->returnValue('/'));
 
-    $breadcrumb = $this->builder->build($this->getMock('Drupal\Core\Routing\RouteMatchInterface'));
-    $this->assertEquals([], $breadcrumb->getLinks());
-    $this->assertEquals(['url.path'], $breadcrumb->getCacheContexts());
-    $this->assertEquals([], $breadcrumb->getCacheTags());
-    $this->assertEquals(Cache::PERMANENT, $breadcrumb->getCacheMaxAge());
+    $links = $this->builder->build($this->getMock('Drupal\Core\Routing\RouteMatchInterface'));
+    $this->assertEquals(array(), $links);
   }
 
   /**
@@ -158,11 +143,8 @@ public function testBuildWithOnePathElement() {
       ->method('getPathInfo')
       ->will($this->returnValue('/example'));
 
-    $breadcrumb = $this->builder->build($this->getMock('Drupal\Core\Routing\RouteMatchInterface'));
-    $this->assertEquals([0 => new Link('Home', new Url('<front>'))], $breadcrumb->getLinks());
-    $this->assertEquals(['url.path'], $breadcrumb->getCacheContexts());
-    $this->assertEquals([], $breadcrumb->getCacheTags());
-    $this->assertEquals(Cache::PERMANENT, $breadcrumb->getCacheMaxAge());
+    $links = $this->builder->build($this->getMock('Drupal\Core\Routing\RouteMatchInterface'));
+    $this->assertEquals(array(0 => new Link('Home', new Url('<front>'))), $links);
   }
 
   /**
@@ -193,11 +175,8 @@ public function testBuildWithTwoPathElements() {
 
     $this->setupAccessManagerToAllow();
 
-    $breadcrumb = $this->builder->build($this->getMock('Drupal\Core\Routing\RouteMatchInterface'));
-    $this->assertEquals([0 => new Link('Home', new Url('<front>')), 1 => new Link('Example', new Url('example'))], $breadcrumb->getLinks());
-    $this->assertEquals(['url.path', 'user.permissions'], $breadcrumb->getCacheContexts());
-    $this->assertEquals([], $breadcrumb->getCacheTags());
-    $this->assertEquals(Cache::PERMANENT, $breadcrumb->getCacheMaxAge());
+    $links = $this->builder->build($this->getMock('Drupal\Core\Routing\RouteMatchInterface'));
+    $this->assertEquals(array(0 => new Link('Home', new Url('<front>')), 1 => new Link('Example', new Url('example'))), $links);
   }
 
   /**
@@ -234,21 +213,14 @@ public function testBuildWithThreePathElements() {
         }
       }));
 
-    $this->accessManager->expects($this->any())
-      ->method('check')
-      ->willReturnOnConsecutiveCalls(
-        AccessResult::allowed()->cachePerPermissions(),
-        AccessResult::allowed()->addCacheContexts(['bar'])->addCacheTags(['example'])
-      );
-    $breadcrumb = $this->builder->build($this->getMock('Drupal\Core\Routing\RouteMatchInterface'));
-    $this->assertEquals([
+    $this->setupAccessManagerToAllow();
+
+    $links = $this->builder->build($this->getMock('Drupal\Core\Routing\RouteMatchInterface'));
+    $this->assertEquals(array(
       new Link('Home', new Url('<front>')),
       new Link('Example', new Url('example')),
       new Link('Bar', new Url('example_bar')),
-    ], $breadcrumb->getLinks());
-    $this->assertEquals(['bar', 'url.path', 'user.permissions'], $breadcrumb->getCacheContexts());
-    $this->assertEquals(['example'], $breadcrumb->getCacheTags());
-    $this->assertEquals(Cache::PERMANENT, $breadcrumb->getCacheMaxAge());
+    ), $links);
   }
 
   /**
@@ -269,13 +241,10 @@ public function testBuildWithException($exception_class, $exception_argument) {
       ->method('matchRequest')
       ->will($this->throwException(new $exception_class($exception_argument)));
 
-    $breadcrumb = $this->builder->build($this->getMock('Drupal\Core\Routing\RouteMatchInterface'));
+    $links = $this->builder->build($this->getMock('Drupal\Core\Routing\RouteMatchInterface'));
 
     // No path matched, though at least the frontpage is displayed.
-    $this->assertEquals([0 => new Link('Home', new Url('<front>'))], $breadcrumb->getLinks());
-    $this->assertEquals(['url.path'], $breadcrumb->getCacheContexts());
-    $this->assertEquals([], $breadcrumb->getCacheTags());
-    $this->assertEquals(Cache::PERMANENT, $breadcrumb->getCacheMaxAge());
+    $this->assertEquals(array(0 => new Link('Home', new Url('<front>'))), $links);
   }
 
   /**
@@ -313,13 +282,10 @@ public function testBuildWithNonProcessedPath() {
       ->method('matchRequest')
       ->will($this->returnValue(array()));
 
-    $breadcrumb = $this->builder->build($this->getMock('Drupal\Core\Routing\RouteMatchInterface'));
+    $links = $this->builder->build($this->getMock('Drupal\Core\Routing\RouteMatchInterface'));
 
     // No path matched, though at least the frontpage is displayed.
-    $this->assertEquals([0 => new Link('Home', new Url('<front>'))], $breadcrumb->getLinks());
-    $this->assertEquals(['url.path'], $breadcrumb->getCacheContexts());
-    $this->assertEquals([], $breadcrumb->getCacheTags());
-    $this->assertEquals(Cache::PERMANENT, $breadcrumb->getCacheMaxAge());
+    $this->assertEquals(array(0 => new Link('Home', new Url('<front>'))), $links);
   }
 
   /**
@@ -363,11 +329,8 @@ public function testBuildWithUserPath() {
       ->with($this->anything(), $route_1)
       ->will($this->returnValue('Admin'));
 
-    $breadcrumb = $this->builder->build($this->getMock('Drupal\Core\Routing\RouteMatchInterface'));
-    $this->assertEquals([0 => new Link('Home', new Url('<front>')), 1 => new Link('Admin', new Url('user_page'))], $breadcrumb->getLinks());
-    $this->assertEquals(['url.path', 'user.permissions'], $breadcrumb->getCacheContexts());
-    $this->assertEquals([], $breadcrumb->getCacheTags());
-    $this->assertEquals(Cache::PERMANENT, $breadcrumb->getCacheMaxAge());
+    $links = $this->builder->build($this->getMock('Drupal\Core\Routing\RouteMatchInterface'));
+    $this->assertEquals(array(0 => new Link('Home', new Url('<front>')), 1 => new Link('Admin', new Url('user_page'))), $links);
   }
 
   /**
@@ -376,7 +339,7 @@ public function testBuildWithUserPath() {
   public function setupAccessManagerToAllow() {
     $this->accessManager->expects($this->any())
       ->method('check')
-      ->willReturn((new AccessResultAllowed())->cachePerPermissions());
+      ->willReturn(TRUE);
   }
 
   protected function setupStubPathProcessor() {
diff --git a/core/modules/system/tests/src/Unit/Menu/MenuLinkTreeTest.php b/core/modules/system/tests/src/Unit/Menu/MenuLinkTreeTest.php
index da545b2..5e7f2a2 100644
--- a/core/modules/system/tests/src/Unit/Menu/MenuLinkTreeTest.php
+++ b/core/modules/system/tests/src/Unit/Menu/MenuLinkTreeTest.php
@@ -100,10 +100,7 @@ protected function setUp() {
    *
    * @dataProvider providerTestBuildCacheability
    */
-  public function testBuildCacheability($description, $tree, $expected_build, $access, array $access_cache_contexts = []) {
-    if ($access !== NULL) {
-      $access->addCacheContexts($access_cache_contexts);
-    }
+  public function testBuildCacheability($description, $tree, $expected_build) {
     $build = $this->menuLinkTree->build($tree);
     sort($expected_build['#cache']['contexts']);
     $this->assertEquals($expected_build, $build, $description);
@@ -178,12 +175,13 @@ public function providerTestBuildCacheability() {
       'description' => 'Empty tree.',
       'tree' => [],
       'expected_build' => $base_expected_build_empty,
-      'access' => NULL,
-      'access_cache_contexts' => [],
     ];
 
     for ($i = 0; $i < count($access_scenarios); $i++) {
       list($access, $access_cache_contexts) = $access_scenarios[$i];
+      if ($access !== NULL) {
+        $access->addCacheContexts($access_cache_contexts);
+      }
 
       for ($j = 0; $j < count($links_scenarios); $j++) {
         $links = $links_scenarios[$j];
@@ -205,8 +203,6 @@ public function providerTestBuildCacheability() {
           'description' => "Single-item tree; access=$i; link=$j.",
           'tree' => $tree,
           'expected_build' => $expected_build,
-          'access' => $access,
-          'access_cache_contexts' => $access_cache_contexts,
         ];
 
         // Single-level tree.
@@ -225,8 +221,6 @@ public function providerTestBuildCacheability() {
           'description' => "Single-level tree; access=$i; link=$j.",
           'tree' => $tree,
           'expected_build' => $expected_build,
-          'access' => $access,
-          'access_cache_contexts' => $access_cache_contexts,
         ];
 
         // Multi-level tree.
@@ -257,8 +251,6 @@ public function providerTestBuildCacheability() {
           'description' => "Multi-level tree; access=$i; link=$j.",
           'tree' => $tree,
           'expected_build' => $expected_build,
-          'access' => $access,
-          'access_cache_contexts' => $access_cache_contexts,
         ];
       }
     }
diff --git a/core/modules/taxonomy/src/TermBreadcrumbBuilder.php b/core/modules/taxonomy/src/TermBreadcrumbBuilder.php
index c2387c4..c2e47a1 100644
--- a/core/modules/taxonomy/src/TermBreadcrumbBuilder.php
+++ b/core/modules/taxonomy/src/TermBreadcrumbBuilder.php
@@ -8,7 +8,6 @@
 namespace Drupal\taxonomy;
 
 use Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface;
-use Drupal\Core\Breadcrumb\Breadcrumb;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Link;
 use Drupal\Core\Routing\RouteMatchInterface;
@@ -30,7 +29,7 @@ class TermBreadcrumbBuilder implements BreadcrumbBuilderInterface {
   /**
    * The taxonomy storage.
    *
-   * @var \Drupal\Taxonomy\TermStorageInterface
+   * @var \Drupal\Core\Entity\EntityStorageInterface
    */
   protected $termStorage;
 
@@ -57,28 +56,18 @@ public function applies(RouteMatchInterface $route_match) {
    * {@inheritdoc}
    */
   public function build(RouteMatchInterface $route_match) {
-    $breadcrumb = new Breadcrumb();
-    $breadcrumb->addLink(Link::createFromRoute($this->t('Home'), '<front>'));
     $term = $route_match->getParameter('taxonomy_term');
-    // Breadcrumb needs to have terms cacheable metadata as a cacheable
-    // dependency even though it is not shown in the breadcrumb because e.g. its
-    // parent might have changed.
-    $breadcrumb->addCacheableDependency($term);
     // @todo This overrides any other possible breadcrumb and is a pure
     //   hard-coded presumption. Make this behavior configurable per
     //   vocabulary or term.
-    $parents = $this->termStorage->loadAllParents($term->id());
-    // Remove current term being accessed.
-    array_shift($parents);
-    foreach (array_reverse($parents) as $term) {
+    $breadcrumb = array();
+    while ($parents = $this->termStorage->loadParents($term->id())) {
+      $term = array_shift($parents);
       $term = $this->entityManager->getTranslationFromContext($term);
-      $breadcrumb->addCacheableDependency($term);
-      $breadcrumb->addLink(Link::createFromRoute($term->getName(), 'entity.taxonomy_term.canonical', array('taxonomy_term' => $term->id())));
+      $breadcrumb[] = Link::createFromRoute($term->getName(), 'entity.taxonomy_term.canonical', array('taxonomy_term' => $term->id()));
     }
-
-    // This breadcrumb builder is based on a route parameter, and hence it
-    // depends on the 'route' cache context.
-    $breadcrumb->setCacheContexts(['route']);
+    $breadcrumb[] = Link::createFromRoute($this->t('Home'), '<front>');
+    $breadcrumb = array_reverse($breadcrumb);
 
     return $breadcrumb;
   }
diff --git a/core/modules/update/src/Tests/UpdateUploadTest.php b/core/modules/update/src/Tests/UpdateUploadTest.php
index baf46e9..c568fa5 100644
--- a/core/modules/update/src/Tests/UpdateUploadTest.php
+++ b/core/modules/update/src/Tests/UpdateUploadTest.php
@@ -75,18 +75,6 @@ public function testUploadModule() {
     // module now exists in the expected place in the filesystem.
     $this->assertRaw(t('Installed %project_name successfully', array('%project_name' => 'update_test_new_module')));
     $this->assertTrue(file_exists($installedInfoFilePath), 'The new module exists in the filesystem after it is installed with the Update Manager.');
-    // Ensure the links are relative to the site root and not
-    // core/authorize.php.
-    $this->assertLink(t('Install another module'));
-    $this->assertLinkByHref(Url::fromRoute('update.module_install')->toString());
-    $this->assertLink(t('Enable newly added modules'));
-    $this->assertLinkByHref(Url::fromRoute('system.modules_list')->toString());
-    $this->assertLink(t('Administration pages'));
-    $this->assertLinkByHref(Url::fromRoute('system.admin')->toString());
-    // Ensure we can reach the "Install another module" link.
-    $this->clickLink(t('Install another module'));
-    $this->assertResponse(200);
-    $this->assertUrl('admin/modules/install');
   }
 
   /**
diff --git a/core/modules/update/update.authorize.inc b/core/modules/update/update.authorize.inc
index 832243a..cead4f0 100644
--- a/core/modules/update/update.authorize.inc
+++ b/core/modules/update/update.authorize.inc
@@ -11,7 +11,6 @@
  */
 
 use Drupal\Core\Updater\UpdaterException;
-use Drupal\Core\Url;
 
 /**
  * Updates existing projects when invoked by authorize.php.
@@ -240,19 +239,7 @@ function update_authorize_update_batch_finished($success, $results) {
   // Since we're doing an update of existing code, always add a task for
   // running update.php.
   $results['tasks'][] = t('Your modules have been downloaded and updated.');
-  $results['tasks'][] = [
-    '#type' => 'link',
-    '#url' => Url::fromRoute('system.db_update'),
-    '#title' => t('Run database updates'),
-    // Since this is being called outsite of the primary front controller,
-    // the base_url needs to be set explicitly to ensure that links are
-    // relative to the site root.
-    // @todo Simplify with https://www.drupal.org/node/2548095
-    '#options' => [
-      'absolute' => TRUE,
-      'base_url' => $GLOBALS['base_url'],
-    ],
-  ];
+  $results['tasks'][] = t('<a href="@update">Run database updates</a>', array('@update' => \Drupal::url('system.db_update')));
 
   // Unset the variable since it is no longer needed.
   unset($_SESSION['maintenance_mode']);
diff --git a/core/modules/update/update.install b/core/modules/update/update.install
index 060f092..328288b 100644
--- a/core/modules/update/update.install
+++ b/core/modules/update/update.install
@@ -107,17 +107,8 @@ function _update_requirement_check($project, $type) {
   $status = $project['status'];
   if ($status != UPDATE_CURRENT) {
     $requirement['reason'] = $status;
+    $requirement['description'] = _update_message_text($type, $status, TRUE);
     $requirement['severity'] = REQUIREMENT_ERROR;
-    // Append the available updates link to the message from
-    // _update_message_text(), and format the two translated strings together in
-    // a single paragraph.
-    $requirement['description'][] = ['#markup' => _update_message_text($type, $status)];
-    if (update_manager_access()) {
-      $requirement['description'][] = ['#prefix' => ' ', '#markup' => t('See the <a href="@available_updates">available updates</a> page for more information and to install your missing updates.', ['@available_updates' => \Drupal::url('update.report_update')])];
-    }
-    else {
-      $requirement['description'][] = ['#prefix' => ' ', '#markup' => t('See the <a href="@available_updates">available updates</a> page for more information.', ['@available_updates' => \Drupal::url('update.status')])];
-    }
   }
   switch ($status) {
     case UPDATE_NOT_SECURE:
diff --git a/core/modules/update/update.module b/core/modules/update/update.module
index daf0676..4aed1ef 100644
--- a/core/modules/update/update.module
+++ b/core/modules/update/update.module
@@ -11,6 +11,7 @@
  * ability to install contributed modules and themes via an user interface.
  */
 
+use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Core\Url;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
@@ -436,7 +437,7 @@ function update_mail($key, &$message, $params) {
   $language = \Drupal::languageManager()->getLanguage($langcode);
   $message['subject'] .= t('New release(s) available for !site_name', array('!site_name' => \Drupal::config('system.site')->get('name')), array('langcode' => $langcode));
   foreach ($params as $msg_type => $msg_reason) {
-    $message['body'][] = _update_message_text($msg_type, $msg_reason, $langcode);
+    $message['body'][] = _update_message_text($msg_type, $msg_reason, FALSE, $langcode);
   }
   $message['body'][] = t('See the available updates page for more information:', array(), array('langcode' => $langcode)) . "\n" . \Drupal::url('update.status', [], ['absolute' => TRUE, 'language' => $language]);
   if (update_manager_access()) {
@@ -463,13 +464,16 @@ function update_mail($key, &$message, $params) {
  *   or 'contrib'.
  * @param $msg_reason
  *   Integer constant specifying why message is generated.
+ * @param $report_link
+ *   (optional) Boolean that controls if a link to the updates report should be
+ *   added. Defaults to FALSE.
  * @param $langcode
  *   (optional) A language code to use. Defaults to NULL.
  *
  * @return
  *   The properly translated error message for the given key.
  */
-function _update_message_text($msg_type, $msg_reason, $langcode = NULL) {
+function _update_message_text($msg_type, $msg_reason, $report_link = FALSE, $langcode = NULL) {
   $text = '';
   switch ($msg_reason) {
     case UPDATE_NOT_SECURE:
@@ -520,8 +524,23 @@ function _update_message_text($msg_type, $msg_reason, $langcode = NULL) {
       }
       break;
   }
+  if (!empty($langcode)) {
+    $language = \Drupal::languageManager()->getLanguage($langcode);
+  }
+  else {
+    $language = NULL;
+  }
+  if ($report_link) {
+    if (update_manager_access()) {
+      $text .= ' ' . t('See the <a href="@available_updates">available updates</a> page for more information and to install your missing updates.', array('@available_updates' => \Drupal::url('update.report_update', [], ['language' => $language])), array('langcode' => $langcode));
+    }
+    else {
+      $text .= ' ' . t('See the <a href="@available_updates">available updates</a> page for more information.', array('@available_updates' => \Drupal::url('update.status', [], ['language' => $language])), array('langcode' => $langcode));
+    }
+  }
 
-  return $text;
+  // All strings are t() and empty space concatenated so return SafeMarkup.
+  return SafeMarkup::set($text);
 }
 
 /**
diff --git a/core/modules/user/migration_templates/d6_profile_values.yml b/core/modules/user/migration_templates/d6_profile_values.yml
index 9cd4a6b..d2b81a5 100644
--- a/core/modules/user/migration_templates/d6_profile_values.yml
+++ b/core/modules/user/migration_templates/d6_profile_values.yml
@@ -2,8 +2,6 @@ id: d6_profile_values
 label: Drupal 6 profile values
 migration_tags:
   - Drupal 6
-builder:
-  plugin: d6_profile_values
 source:
   plugin: d6_profile_field_values
 load:
diff --git a/core/modules/user/src/EntityOwnerInterface.php b/core/modules/user/src/EntityOwnerInterface.php
index ec9aa43..38a4e91 100644
--- a/core/modules/user/src/EntityOwnerInterface.php
+++ b/core/modules/user/src/EntityOwnerInterface.php
@@ -38,9 +38,8 @@ public function setOwner(UserInterface $account);
   /**
    * Returns the entity owner's user ID.
    *
-   * @return int|null
-   *   The owner user ID, or NULL in case the user ID field has not been set on
-   *   the entity.
+   * @return int
+   *   The owner user ID.
    */
   public function getOwnerId();
 
diff --git a/core/modules/user/src/Plugin/migrate/builder/d6/ProfileValues.php b/core/modules/user/src/Plugin/migrate/builder/d6/ProfileValues.php
deleted file mode 100644
index af0b39c..0000000
--- a/core/modules/user/src/Plugin/migrate/builder/d6/ProfileValues.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\user\Plugin\migrate\builder\d6\ProfileValues.
- */
-
-namespace Drupal\user\Plugin\migrate\builder\d6;
-
-use Drupal\migrate\Entity\Migration;
-use Drupal\migrate\Plugin\migrate\builder\BuilderBase;
-
-/**
- * @PluginID("d6_profile_values")
- */
-class ProfileValues extends BuilderBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function buildMigrations(array $template) {
-    $migration = Migration::create($template);
-
-    foreach ($this->getSourcePlugin('d6_profile_field') as $field) {
-      $migration->setProcessOfProperty($field->getSourceProperty('name'), $field->getSourceProperty('name'));
-    }
-
-    return [$migration];
-  }
-
-}
diff --git a/core/modules/user/src/Tests/Migrate/ProfileValuesBuilderTest.php b/core/modules/user/src/Tests/Migrate/ProfileValuesBuilderTest.php
deleted file mode 100644
index a7f152d..0000000
--- a/core/modules/user/src/Tests/Migrate/ProfileValuesBuilderTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\user\Tests\Migrate\ProfileValuesBuilderTest.
- */
-
-namespace Drupal\user\Tests\Migrate;
-
-use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
-
-/**
- * @group user
- */
-class ProfileValuesBuilderTest extends MigrateDrupal6TestBase {
-
-  public static $modules = ['migrate', 'migrate_drupal', 'user'];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->loadDumps(['ProfileFields.php', 'ProfileValues.php']);
-  }
-
-  /**
-   * Tests that profile fields are merged into the d6_profile_values migration's
-   * process pipeline by the d6_profile_values builder.
-   */
-  public function testBuilder() {
-    $template = \Drupal::service('migrate.template_storage')
-      ->getTemplateByName('d6_profile_values');
-    /** @var \Drupal\migrate\Entity\MigrationInterface[] $migrations */
-    $migrations = \Drupal::service('plugin.manager.migrate.builder')
-      ->createInstance('d6_profile_values')
-      ->buildMigrations($template);
-
-    $this->assertIdentical('d6_profile_values', $migrations[0]->id());
-    $process = $migrations[0]->getProcess();
-    $this->assertIdentical('profile_color', $process['profile_color'][0]['source']);
-  }
-
-}
diff --git a/core/modules/user/src/Tests/Views/HandlerFieldUserNameTest.php b/core/modules/user/src/Tests/Views/HandlerFieldUserNameTest.php
index 42f9b429..5db1e3e 100644
--- a/core/modules/user/src/Tests/Views/HandlerFieldUserNameTest.php
+++ b/core/modules/user/src/Tests/Views/HandlerFieldUserNameTest.php
@@ -63,7 +63,7 @@ public function testUserName() {
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertEqual($render, $username, 'If the user is not linked the username should be printed out for a normal user.');
+    $this->assertIdentical($render, $username, 'If the user is not linked the username should be printed out for a normal user.');
 
   }
 
diff --git a/core/modules/user/tests/src/Unit/PermissionAccessCheckTest.php b/core/modules/user/tests/src/Unit/PermissionAccessCheckTest.php
index 29b6247..f61aba8 100644
--- a/core/modules/user/tests/src/Unit/PermissionAccessCheckTest.php
+++ b/core/modules/user/tests/src/Unit/PermissionAccessCheckTest.php
@@ -11,8 +11,6 @@
 use Drupal\Tests\UnitTestCase;
 use Drupal\user\Access\PermissionAccessCheck;
 use Symfony\Component\Routing\Route;
-use Drupal\Core\Cache\Context\CacheContextsManager;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
 
 /**
  * @coversDefaultClass \Drupal\user\Access\PermissionAccessCheck
@@ -29,23 +27,11 @@ class PermissionAccessCheckTest extends UnitTestCase {
   public $accessCheck;
 
   /**
-   * The dependency injection container.
-   *
-   * @var \Symfony\Component\DependencyInjection\ContainerBuilder
-   */
-  protected $container;
-
-  /**
    * {@inheritdoc}
    */
   protected function setUp() {
     parent::setUp();
 
-    $this->container = new ContainerBuilder();
-    $cache_contexts_manager = $this->prophesize(CacheContextsManager::class)->reveal();
-    $this->container->set('cache_contexts_manager', $cache_contexts_manager);
-    \Drupal::setContainer($this->container);
-
     $this->accessCheck = new PermissionAccessCheck();
   }
 
@@ -55,13 +41,15 @@ protected function setUp() {
    * @return array
    */
   public function providerTestAccess() {
+    $allowed = AccessResult::allowedIf(TRUE)->addCacheContexts(['user.permissions']);
+    $neutral = AccessResult::allowedIf(FALSE)->addCacheContexts(['user.permissions']);
     return [
-      [[], FALSE],
-      [['_permission' => 'allowed'], TRUE, ['user.permissions']],
-      [['_permission' => 'denied'], FALSE, ['user.permissions']],
-      [['_permission' => 'allowed+denied'], TRUE, ['user.permissions']],
-      [['_permission' => 'allowed+denied+other'], TRUE, ['user.permissions']],
-      [['_permission' => 'allowed,denied'], FALSE, ['user.permissions']],
+      [[], AccessResult::allowedIf(FALSE)],
+      [['_permission' => 'allowed'], $allowed],
+      [['_permission' => 'denied'], $neutral],
+      [['_permission' => 'allowed+denied'], $allowed],
+      [['_permission' => 'allowed+denied+other'], $allowed],
+      [['_permission' => 'allowed,denied'], $neutral],
     ];
   }
 
@@ -71,8 +59,7 @@ public function providerTestAccess() {
    * @dataProvider providerTestAccess
    * @covers ::access
    */
-  public function testAccess($requirements, $access, array $contexts = []) {
-    $access_result = AccessResult::allowedIf($access)->addCacheContexts($contexts);
+  public function testAccess($requirements, $access) {
     $user = $this->getMock('Drupal\Core\Session\AccountInterface');
     $user->expects($this->any())
       ->method('hasPermission')
@@ -84,7 +71,7 @@ public function testAccess($requirements, $access, array $contexts = []) {
       ));
     $route = new Route('', [], $requirements);
 
-    $this->assertEquals($access_result, $this->accessCheck->access($route, $user));
+    $this->assertEquals($access, $this->accessCheck->access($route, $user));
   }
 
 }
diff --git a/core/modules/user/tests/src/Unit/UserAccessControlHandlerTest.php b/core/modules/user/tests/src/Unit/UserAccessControlHandlerTest.php
index 05d7223..34f7590 100644
--- a/core/modules/user/tests/src/Unit/UserAccessControlHandlerTest.php
+++ b/core/modules/user/tests/src/Unit/UserAccessControlHandlerTest.php
@@ -9,8 +9,6 @@
 
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Core\Access\AccessResult;
-use Drupal\Core\Cache\Context\CacheContextsManager;
-use Drupal\Core\DependencyInjection\Container;
 use Drupal\Tests\UnitTestCase;
 use Drupal\user\UserAccessControlHandler;
 
@@ -64,12 +62,6 @@ class UserAccessControlHandlerTest extends UnitTestCase {
    */
   public function setUp() {
     parent::setUp();
-
-    $cache_contexts_manager = $this->prophesize(CacheContextsManager::class)->reveal();
-    $container = new Container();
-    $container->set('cache_contexts_manager', $cache_contexts_manager);
-    \Drupal::setContainer($container);
-
     $this->viewer = $this->getMock('\Drupal\Core\Session\AccountInterface');
     $this->viewer
       ->expects($this->any())
diff --git a/core/modules/views/src/Element/View.php b/core/modules/views/src/Element/View.php
index 38ca26d..676f6d0 100644
--- a/core/modules/views/src/Element/View.php
+++ b/core/modules/views/src/Element/View.php
@@ -58,7 +58,7 @@ public static function preRenderViewElement($element) {
 
     if ($view && $view->access($element['#display_id'])) {
       if (!empty($element['#embed'])) {
-        $element['view_build'] = $view->preview($element['#display_id'], $element['#arguments']);
+        $element += $view->preview($element['#display_id'], $element['#arguments']);
       }
       else {
         // Add contextual links to the view. We need to attach them to the dummy
diff --git a/core/modules/views/src/Plugin/views/field/FieldHandlerInterface.php b/core/modules/views/src/Plugin/views/field/FieldHandlerInterface.php
index 975c10d..6cd22ac 100644
--- a/core/modules/views/src/Plugin/views/field/FieldHandlerInterface.php
+++ b/core/modules/views/src/Plugin/views/field/FieldHandlerInterface.php
@@ -167,10 +167,8 @@ public function preRender(&$values);
    * @param \Drupal\views\ResultRow $values
    *   The values retrieved from a single row of a view's query result.
    *
-   * @return string|\Drupal\Component\Utility\SafeStringInterface
-   *   The rendered output. If the output is safe it will be wrapped in an
-   *   object that implements SafeStringInterface. If it is empty or unsafe it
-   *   will be a string.
+   * @return string
+   *   The rendered output.
    *
    */
   public function render(ResultRow $values);
@@ -204,10 +202,8 @@ public function postRender(ResultRow $row, $output);
    * @param \Drupal\views\ResultRow $values
    *   The values retrieved from a single row of a view's query result.
    *
-   * @return string|\Drupal\Component\Utility\SafeStringInterface
-   *   The advanced rendered output. If the output is safe it will be wrapped in
-   *   an object that implements SafeStringInterface. If it is empty or unsafe
-   *   it will be a string.
+   * @return string
+   *   The advanced rendered output.
    *
    */
   public function advancedRender(ResultRow $values);
@@ -240,14 +236,30 @@ public function isValueEmpty($value, $empty_zero, $no_skip_empty = TRUE);
    *     - ellipsis: Show an ellipsis (…) at the end of the trimmed string.
    *     - html: Make sure that the html is correct.
    *
-   * @return string|\Drupal\Component\Utility\SafeStringInterface
-   *   The rendered output. If the output is safe it will be wrapped in an
-   *   object that implements SafeStringInterface. If it is empty or unsafe it
-   *   will be a string.
+   * @return string
+   *   The rendered string.
    */
   public function renderText($alter);
 
   /**
+   * Trims the field down to the specified length.
+   *
+   * @param array $alter
+   *   The alter array of options to use.
+   *     - max_length: Maximum length of the string, the rest gets truncated.
+   *     - word_boundary: Trim only on a word boundary.
+   *     - ellipsis: Show an ellipsis (…) at the end of the trimmed string.
+   *     - html: Make sure that the html is correct.
+   *
+   * @param string $value
+   *   The string which should be trimmed.
+   *
+   * @return string
+   *   The rendered trimmed string.
+   */
+  public function renderTrimText($alter, $value);
+
+  /**
    * Gets the 'render' tokens to use for advanced rendering.
    *
    * This runs through all of the fields and arguments that
@@ -268,10 +280,8 @@ public function getRenderTokens($item);
    * @param \Drupal\views\ResultRow $values
    *   Holds single row of a view's result set.
    *
-   * @return string|\Drupal\Component\Utility\SafeStringInterface
-   *   Returns rendered output of the given theme implementation. If the output
-   *   is safe it will be wrapped in an object that implements
-   *   SafeStringInterface. If it is empty or unsafe it will be a string.
+   * @return string|false
+   *   Returns rendered output of the given theme implementation.
    */
   function theme(ResultRow $values);
 
diff --git a/core/modules/views/src/Plugin/views/field/FieldPluginBase.php b/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
index 996ef31..ee16994 100644
--- a/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
+++ b/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
@@ -10,17 +10,16 @@
 use Drupal\Component\Utility\Html;
 use Drupal\Component\Utility\NestedArray;
 use Drupal\Component\Utility\SafeMarkup;
-use Drupal\Component\Utility\SafeStringInterface;
 use Drupal\Component\Utility\Unicode;
 use Drupal\Component\Utility\UrlHelper;
 use Drupal\Component\Utility\Xss;
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Render\Renderer;
+use Drupal\Core\Render\SafeString;
 use Drupal\Core\Url as CoreUrl;
 use Drupal\views\Plugin\views\HandlerBase;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
-use Drupal\views\Render\ViewsRenderPipelineSafeString;
 use Drupal\views\ResultRow;
 use Drupal\views\ViewExecutable;
 
@@ -1139,7 +1138,7 @@ public function advancedRender(ResultRow $values) {
     else {
       $value = $this->render($values);
       if (is_array($value)) {
-        $value = $this->getRenderer()->render($value);
+        $value = (string) $this->getRenderer()->render($value);
       }
       $this->last_render = $value;
       $this->original_value = $value;
@@ -1170,16 +1169,14 @@ public function advancedRender(ResultRow $values) {
       }
 
       if (is_array($value)) {
-        $value = $this->getRenderer()->render($value);
+        $value = (string) $this->getRenderer()->render($value);
       }
       // This happens here so that renderAsLink can get the unaltered value of
       // this field as a token rather than the altered value.
       $this->last_render = $value;
     }
 
-    // String cast is necessary to test emptiness of SafeStringInterface
-    // objects.
-    if (empty((string) $this->last_render)) {
+    if (empty($this->last_render)) {
       if ($this->isValueEmpty($this->last_render, $this->options['empty_zero'], FALSE)) {
         $alter = $this->options['alter'];
         $alter['alter_text'] = 1;
@@ -1188,6 +1185,9 @@ public function advancedRender(ResultRow $values) {
         $this->last_render = $this->renderText($alter);
       }
     }
+    // @todo Fix this in https://www.drupal.org/node/2280961.
+    $this->last_render = SafeMarkup::set($this->last_render);
+
 
     return $this->last_render;
   }
@@ -1196,10 +1196,6 @@ public function advancedRender(ResultRow $values) {
    * {@inheritdoc}
    */
   public function isValueEmpty($value, $empty_zero, $no_skip_empty = TRUE) {
-    // Convert SafeStringInterface to a string for checking.
-    if ($value instanceof SafeStringInterface) {
-      $value = (string) $value;
-    }
     if (!isset($value)) {
       $empty = TRUE;
     }
@@ -1217,14 +1213,7 @@ public function isValueEmpty($value, $empty_zero, $no_skip_empty = TRUE) {
    * {@inheritdoc}
    */
   public function renderText($alter) {
-    // We need to preserve the safeness of the value regardless of the
-    // alterations made by this method. Any alterations or replacements made
-    // within this method need to ensure that at the minimum the result is
-    // XSS admin filtered. See self::renderAltered() as an example that does.
-    $value_is_safe = SafeMarkup::isSafe($this->last_render);
-    // Cast to a string so that empty checks and string functions work as
-    // expected.
-    $value = (string) $this->last_render;
+    $value = $this->last_render;
 
     if (!empty($alter['alter_text']) && $alter['text'] !== '') {
       $tokens = $this->getRenderTokens($alter);
@@ -1250,9 +1239,6 @@ public function renderText($alter) {
     if ($alter['phase'] == static::RENDER_TEXT_PHASE_EMPTY && $no_rewrite_for_empty) {
       // If we got here then $alter contains the value of "No results text"
       // and so there is nothing left to do.
-      if ($value_is_safe) {
-        $value = ViewsRenderPipelineSafeString::create($value);
-      }
       return $value;
     }
 
@@ -1289,12 +1275,6 @@ public function renderText($alter) {
     if (!empty($alter['nl2br'])) {
       $value = nl2br($value);
     }
-
-    // Preserve whether or not the string is safe. Since $suffix comes from
-    // \Drupal::l(), it is safe to append.
-    if ($value_is_safe) {
-      $value = ViewsRenderPipelineSafeString::create($value . $suffix);
-    }
     $this->last_render_text = $value;
 
     if (!empty($alter['make_link']) && (!empty($alter['path']) || !empty($alter['url']))) {
@@ -1304,42 +1284,20 @@ public function renderText($alter) {
       $value = $this->renderAsLink($alter, $value, $tokens);
     }
 
-    // Preserve whether or not the string is safe. Since $suffix comes from
-    // \Drupal::l(), it is safe to append.
-    if ($value_is_safe) {
-      return ViewsRenderPipelineSafeString::create($value . $suffix);
-    }
-    else {
-      // If the string is not already marked safe, it is still OK to return it
-      // because it will be sanitized by Twig.
-      return $value . $suffix;
-    }
+    return $value . $suffix;
   }
 
   /**
    * Render this field as user-defined altered text.
    */
   protected function renderAltered($alter, $tokens) {
-    return $this->viewsTokenReplace($alter['text'], $tokens);
+    return SafeString::create($this->viewsTokenReplace($alter['text'], $tokens));
   }
 
   /**
-   * Trims the field down to the specified length.
-   *
-   * @param array $alter
-   *   The alter array of options to use.
-   *     - max_length: Maximum length of the string, the rest gets truncated.
-   *     - word_boundary: Trim only on a word boundary.
-   *     - ellipsis: Show an ellipsis (…) at the end of the trimmed string.
-   *     - html: Make sure that the html is correct.
-   *
-   * @param string $value
-   *   The string which should be trimmed.
-   *
-   * @return string
-   *   The rendered trimmed string.
+   * {@inheritdoc}
    */
-  protected function renderTrimText($alter, $value) {
+  public function renderTrimText($alter, $value) {
     if (!empty($alter['strip_tags'])) {
       // NOTE: It's possible that some external fields might override the
       // element type.
diff --git a/core/modules/views/src/Plugin/views/style/StylePluginBase.php b/core/modules/views/src/Plugin/views/style/StylePluginBase.php
index ccfd1ba..3bb472f 100644
--- a/core/modules/views/src/Plugin/views/style/StylePluginBase.php
+++ b/core/modules/views/src/Plugin/views/style/StylePluginBase.php
@@ -11,10 +11,10 @@
 use Drupal\Component\Utility\Xss;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Render\Element;
+use Drupal\Core\Render\SafeString;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\Plugin\views\PluginBase;
 use Drupal\views\Plugin\views\wizard\WizardInterface;
-use Drupal\views\Render\ViewsRenderPipelineSafeString;
 use Drupal\views\ViewExecutable;
 
 /**
@@ -708,7 +708,7 @@ protected function renderFields(array $result) {
             foreach ($this->rendered_fields[$index] as &$rendered_field) {
               // Placeholders and rendered fields have been processed by the
               // render system and are therefore safe.
-              $rendered_field = ViewsRenderPipelineSafeString::create(str_replace($placeholders, $values, $rendered_field));
+              $rendered_field = SafeString::create(str_replace($placeholders, $values, $rendered_field));
             }
           }
         }
@@ -745,7 +745,7 @@ public function elementPreRenderRow(array $data) {
    * @param string $field
    *   The ID of the field.
    *
-   * @return \Drupal\Component\Utility\SafeStringInterface|null
+   * @return \Drupal\Core\Render\SafeString|null
    *   The output of the field, or NULL if it was empty.
    */
   public function getField($index, $field) {
diff --git a/core/modules/views/src/Render/ViewsRenderPipelineSafeString.php b/core/modules/views/src/Render/ViewsRenderPipelineSafeString.php
deleted file mode 100644
index f0cbd4b..0000000
--- a/core/modules/views/src/Render/ViewsRenderPipelineSafeString.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\views\Render\ViewsRenderPipelineSafeString.
- */
-
-namespace Drupal\views\Render;
-
-use Drupal\Component\Utility\SafeStringInterface;
-use Drupal\Component\Utility\SafeStringTrait;
-
-/**
- * Defines an object that passes safe strings through the Views render system.
- *
- * This object should only be constructed with a known safe string. If there is
- * any risk that the string contains user-entered data that has not been
- * filtered first, it must not be used.
- *
- * @internal
- *   This object is marked as internal because it should only be used in the
- *   Views render pipeline.
- *
- * @see \Drupal\Core\Render\SafeString
- */
-final class ViewsRenderPipelineSafeString implements SafeStringInterface, \Countable {
-  use SafeStringTrait;
-}
diff --git a/core/modules/views/src/Tests/Handler/FieldFileSizeTest.php b/core/modules/views/src/Tests/Handler/FieldFileSizeTest.php
index 70edf22..c2c9af5 100644
--- a/core/modules/views/src/Tests/Handler/FieldFileSizeTest.php
+++ b/core/modules/views/src/Tests/Handler/FieldFileSizeTest.php
@@ -64,9 +64,9 @@ public function testFieldFileSize() {
     // Test with the bytes option.
     $view->field['age']->options['file_size_display'] = 'bytes';
     $this->assertEqual($view->field['age']->advancedRender($view->result[0]), '');
-    $this->assertEqual($view->field['age']->advancedRender($view->result[1]), '10');
-    $this->assertEqual($view->field['age']->advancedRender($view->result[2]), '1000');
-    $this->assertEqual($view->field['age']->advancedRender($view->result[3]), '10000');
+    $this->assertEqual($view->field['age']->advancedRender($view->result[1]), 10);
+    $this->assertEqual($view->field['age']->advancedRender($view->result[2]), 1000);
+    $this->assertEqual($view->field['age']->advancedRender($view->result[3]), 10000);
   }
 
 }
diff --git a/core/modules/views/src/Tests/Handler/FieldUnitTest.php b/core/modules/views/src/Tests/Handler/FieldUnitTest.php
index 7ad9cdc..85fabe3 100644
--- a/core/modules/views/src/Tests/Handler/FieldUnitTest.php
+++ b/core/modules/views/src/Tests/Handler/FieldUnitTest.php
@@ -324,8 +324,7 @@ function testEmpty() {
   /**
    * Tests the hide if empty functionality.
    *
-   * This tests alters the result to get easier and less coupled results. It is
-   * important that assertIdentical() is used in this test since in PHP 0 == ''.
+   * This tests alters the result to get easier and less coupled results.
    */
   function _testHideIfEmpty() {
     /** @var \Drupal\Core\Render\RendererInterface $renderer */
@@ -350,7 +349,7 @@ function _testHideIfEmpty() {
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, $random_name, 'By default, a string should not be treated as empty.');
+    $this->assertIdentical($render, $random_name, 'By default, a string should not be treated as empty.');
 
     // Test an empty string.
     $view->result[0]->{$column_map_reversed['name']} = "";
@@ -364,14 +363,14 @@ function _testHideIfEmpty() {
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, '0', 'By default, 0 should not be treated as empty.');
+    $this->assertIdentical($render, '0', 'By default, 0 should not be treated as empty.');
 
     // Test zero as a string.
     $view->result[0]->{$column_map_reversed['name']} = "0";
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, "0", 'By default, "0" should not be treated as empty.');
+    $this->assertIdentical($render, "0", 'By default, "0" should not be treated as empty.');
 
     // Test when results are not rewritten and non-zero empty values are hidden.
     $view->field['name']->options['hide_alter_empty'] = TRUE;
@@ -383,7 +382,7 @@ function _testHideIfEmpty() {
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, $random_name, 'If hide_empty is checked, a string should not be treated as empty.');
+    $this->assertIdentical($render, $random_name, 'If hide_empty is checked, a string should not be treated as empty.');
 
     // Test an empty string.
     $view->result[0]->{$column_map_reversed['name']} = "";
@@ -397,14 +396,14 @@ function _testHideIfEmpty() {
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, '0', 'If hide_empty is checked, but not empty_zero, 0 should not be treated as empty.');
+    $this->assertIdentical($render, '0', 'If hide_empty is checked, but not empty_zero, 0 should not be treated as empty.');
 
     // Test zero as a string.
     $view->result[0]->{$column_map_reversed['name']} = "0";
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, "0", 'If hide_empty is checked, but not empty_zero, "0" should not be treated as empty.');
+    $this->assertIdentical($render, "0", 'If hide_empty is checked, but not empty_zero, "0" should not be treated as empty.');
 
     // Test when results are not rewritten and all empty values are hidden.
     $view->field['name']->options['hide_alter_empty'] = TRUE;
@@ -438,28 +437,28 @@ function _testHideIfEmpty() {
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, $random_name, 'If the rewritten string is not empty, it should not be treated as empty.');
+    $this->assertIdentical($render, $random_name, 'If the rewritten string is not empty, it should not be treated as empty.');
 
     // Test an empty string.
     $view->result[0]->{$column_map_reversed['name']} = "";
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, $random_name, 'If the rewritten string is not empty, "" should not be treated as empty.');
+    $this->assertIdentical($render, $random_name, 'If the rewritten string is not empty, "" should not be treated as empty.');
 
     // Test zero as an integer.
     $view->result[0]->{$column_map_reversed['name']} = 0;
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, $random_name, 'If the rewritten string is not empty, 0 should not be treated as empty.');
+    $this->assertIdentical($render, $random_name, 'If the rewritten string is not empty, 0 should not be treated as empty.');
 
     // Test zero as a string.
     $view->result[0]->{$column_map_reversed['name']} = "0";
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, $random_name, 'If the rewritten string is not empty, "0" should not be treated as empty.');
+    $this->assertIdentical($render, $random_name, 'If the rewritten string is not empty, "0" should not be treated as empty.');
 
     // Test when results are rewritten to an empty string and non-zero empty results are hidden.
     $view->field['name']->options['hide_alter_empty'] = TRUE;
@@ -473,7 +472,7 @@ function _testHideIfEmpty() {
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, $random_name, 'If the rewritten string is empty, it should not be treated as empty.');
+    $this->assertIdentical($render, $random_name, 'If the rewritten string is empty, it should not be treated as empty.');
 
     // Test an empty string.
     $view->result[0]->{$column_map_reversed['name']} = "";
@@ -487,14 +486,14 @@ function _testHideIfEmpty() {
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, '0', 'If the rewritten string is empty, 0 should not be treated as empty.');
+    $this->assertIdentical($render, '0', 'If the rewritten string is empty, 0 should not be treated as empty.');
 
     // Test zero as a string.
     $view->result[0]->{$column_map_reversed['name']} = "0";
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, "0", 'If the rewritten string is empty, "0" should not be treated as empty.');
+    $this->assertIdentical($render, "0", 'If the rewritten string is empty, "0" should not be treated as empty.');
 
     // Test when results are rewritten to zero as a string and non-zero empty
     // results are hidden.
@@ -509,28 +508,28 @@ function _testHideIfEmpty() {
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, "0", 'If the rewritten string is zero and empty_zero is not checked, the string rewritten as 0 should not be treated as empty.');
+    $this->assertIdentical($render, "0", 'If the rewritten string is zero and empty_zero is not checked, the string rewritten as 0 should not be treated as empty.');
 
     // Test an empty string.
     $view->result[0]->{$column_map_reversed['name']} = "";
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, "0", 'If the rewritten string is zero and empty_zero is not checked, "" rewritten as 0 should not be treated as empty.');
+    $this->assertIdentical($render, "0", 'If the rewritten string is zero and empty_zero is not checked, "" rewritten as 0 should not be treated as empty.');
 
     // Test zero as an integer.
     $view->result[0]->{$column_map_reversed['name']} = 0;
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, "0", 'If the rewritten string is zero and empty_zero is not checked, 0 should not be treated as empty.');
+    $this->assertIdentical($render, "0", 'If the rewritten string is zero and empty_zero is not checked, 0 should not be treated as empty.');
 
     // Test zero as a string.
     $view->result[0]->{$column_map_reversed['name']} = "0";
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, "0", 'If the rewritten string is zero and empty_zero is not checked, "0" should not be treated as empty.');
+    $this->assertIdentical($render, "0", 'If the rewritten string is zero and empty_zero is not checked, "0" should not be treated as empty.');
 
     // Test when results are rewritten to a valid string and non-zero empty
     // results are hidden.
@@ -545,7 +544,7 @@ function _testHideIfEmpty() {
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, $random_value, 'If the original and rewritten strings are valid, it should not be treated as empty.');
+    $this->assertIdentical($render, $random_value, 'If the original and rewritten strings are valid, it should not be treated as empty.');
 
     // Test an empty string.
     $view->result[0]->{$column_map_reversed['name']} = "";
@@ -559,14 +558,14 @@ function _testHideIfEmpty() {
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, $random_value, 'If the original and rewritten strings are valid, 0 should not be treated as empty.');
+    $this->assertIdentical($render, $random_value, 'If the original and rewritten strings are valid, 0 should not be treated as empty.');
 
     // Test zero as a string.
     $view->result[0]->{$column_map_reversed['name']} = "0";
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, $random_value, 'If the original and rewritten strings are valid, "0" should not be treated as empty.');
+    $this->assertIdentical($render, $random_value, 'If the original and rewritten strings are valid, "0" should not be treated as empty.');
 
     // Test when results are rewritten to zero as a string and all empty
     // original values and results are hidden.
@@ -581,7 +580,7 @@ function _testHideIfEmpty() {
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, "", 'If the rewritten string is zero, it should be treated as empty.');
+    $this->assertIdentical($render, "", 'If the rewritten string is zero, it should be treated as empty.');
 
     // Test an empty string.
     $view->result[0]->{$column_map_reversed['name']} = "";
@@ -624,20 +623,20 @@ function _testEmptyText() {
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, $empty_text, 'If a field is empty, the empty text should be used for the output.');
+    $this->assertIdentical($render, $empty_text, 'If a field is empty, the empty text should be used for the output.');
 
     $view->result[0]->{$column_map_reversed['name']} = "0";
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, "0", 'If a field is 0 and empty_zero is not checked, the empty text should not be used for the output.');
+    $this->assertIdentical($render, "0", 'If a field is 0 and empty_zero is not checked, the empty text should not be used for the output.');
 
     $view->result[0]->{$column_map_reversed['name']} = "0";
     $view->field['name']->options['empty_zero'] = TRUE;
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, $empty_text, 'If a field is 0 and empty_zero is checked, the empty text should be used for the output.');
+    $this->assertIdentical($render, $empty_text, 'If a field is 0 and empty_zero is checked, the empty text should be used for the output.');
 
     $view->result[0]->{$column_map_reversed['name']} = "";
     $view->field['name']->options['alter']['alter_text'] = TRUE;
@@ -646,13 +645,13 @@ function _testEmptyText() {
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, $alter_text, 'If a field is empty, some rewrite text exists, but hide_alter_empty is not checked, render the rewrite text.');
+    $this->assertIdentical($render, $alter_text, 'If a field is empty, some rewrite text exists, but hide_alter_empty is not checked, render the rewrite text.');
 
     $view->field['name']->options['hide_alter_empty'] = TRUE;
     $render = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) {
       return $view->field['name']->advancedRender($view->result[0]);
     });
-    $this->assertIdentical((string) $render, $empty_text, 'If a field is empty, some rewrite text exists, and hide_alter_empty is checked, use the empty text.');
+    $this->assertIdentical($render, $empty_text, 'If a field is empty, some rewrite text exists, and hide_alter_empty is checked, use the empty text.');
   }
 
   /**
diff --git a/core/modules/views/src/Tests/ViewElementTest.php b/core/modules/views/src/Tests/ViewElementTest.php
index e55a21c..d54211b 100644
--- a/core/modules/views/src/Tests/ViewElementTest.php
+++ b/core/modules/views/src/Tests/ViewElementTest.php
@@ -127,7 +127,7 @@ public function testViewElementEmbed() {
 
     // Set the content as our rendered array.
     $render = $this->render;
-    $render['view']['#embed'] = TRUE;
+    $render['#embed'] = TRUE;
     $this->setRawContent($renderer->renderRoot($render));
 
     $xpath = $this->xpath('//div[@class="views-element-container"]');
@@ -173,7 +173,7 @@ public function testViewElementEmbed() {
 
     // Test the render array again.
     $render = $this->render;
-    $render['view']['#embed'] = TRUE;
+    $render['#embed'] = TRUE;
     $this->setRawContent($renderer->renderRoot($render));
     // There should be 1 row in the results, 'John' arg 25.
     $xpath = $this->xpath('//div[@class="view-content"]/div');
@@ -183,15 +183,6 @@ public function testViewElementEmbed() {
     $this->drupalGet('views_test_data_element_embed_form');
     $xpath = $this->xpath('//div[@class="view-content"]/div');
     $this->assertEqual(count($xpath), 1);
-
-    // Tests the render array with an exposed filter.
-    $render = $this->render;
-    $render['view']['#display_id'] = 'embed_2';
-    $render['view']['#embed'] = TRUE;
-    $this->setRawContent($renderer->renderRoot($render));
-
-    // Ensure that the exposed form is rendered.
-    $this->assertEqual(1, count($this->xpath('//form[@class="views-exposed-form"]')));
   }
 
 }
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_view_embed.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_view_embed.yml
index 98ea92d..48e2c7b 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_view_embed.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_view_embed.yml
@@ -59,40 +59,3 @@ display:
     display_title: Embedded
     id: embed_1
     position: 1
-  embed_2:
-    display_options:
-      defaults:
-        filters: false
-        exposed_form: false
-      exposed_form:
-        type: basic
-        options:
-          submit_button: Filter
-          reset_button: true
-          reset_button_label: Reset
-          exposed_sorts_label: 'Sort by'
-          expose_sort_order: true
-          sort_asc_label: Asc
-          sort_desc_label: Desc
-      filters:
-        id:
-          field: id
-          id: id
-          relationship: none
-          table: views_test_data
-          plugin_id: numeric
-          exposed: true
-          expose:
-            operator_id: ''
-            label: Id
-            description: ''
-            identifier: id
-            required: false
-            remember: false
-            multiple: false
-            remember_roles:
-              authenticated: authenticated
-    display_plugin: embed
-    display_title: Embedded
-    id: embed_2
-    position: 2
diff --git a/core/profiles/standard/config/install/editor.editor.basic_html.yml b/core/profiles/standard/config/install/editor.editor.basic_html.yml
index 797dfba..54ad5b1 100644
--- a/core/profiles/standard/config/install/editor.editor.basic_html.yml
+++ b/core/profiles/standard/config/install/editor.editor.basic_html.yml
@@ -25,10 +25,6 @@ settings:
             - Blockquote
             - DrupalImage
         -
-          name: 'Block Formatting'
-          items:
-            - Format
-        -
           name: Tools
           items:
             - Source
diff --git a/core/profiles/standard/config/install/filter.format.basic_html.yml b/core/profiles/standard/config/install/filter.format.basic_html.yml
index 21a4656..4d187b7 100644
--- a/core/profiles/standard/config/install/filter.format.basic_html.yml
+++ b/core/profiles/standard/config/install/filter.format.basic_html.yml
@@ -11,7 +11,7 @@ filters:
     status: true
     weight: -10
     settings:
-      allowed_html: '<a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <h2> <h3> <h4> <h5> <h6> <p> <br> <span> <img>'
+      allowed_html: '<a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <h4> <h5> <h6> <p> <br> <span> <img>'
       filter_html_help: false
       filter_html_nofollow: false
   filter_align:
diff --git a/core/profiles/standard/config/install/filter.format.restricted_html.yml b/core/profiles/standard/config/install/filter.format.restricted_html.yml
index 0e40378..95a20e5 100644
--- a/core/profiles/standard/config/install/filter.format.restricted_html.yml
+++ b/core/profiles/standard/config/install/filter.format.restricted_html.yml
@@ -11,7 +11,7 @@ filters:
     status: true
     weight: -10
     settings:
-      allowed_html: '<a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <h2> <h3> <h4> <h5> <h6>'
+      allowed_html: '<a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <h4> <h5> <h6>'
       filter_html_help: true
       filter_html_nofollow: false
   filter_autop:
diff --git a/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php b/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php
index 3a03535..128f2d4 100644
--- a/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php
@@ -11,7 +11,6 @@
 use Drupal\Core\Access\AccessResult;
 use Drupal\Core\Access\AccessManagerInterface;
 use Drupal\Core\Access\CheckProvider;
-use Drupal\Core\Cache\Context\CacheContextsManager;
 use Drupal\Core\Routing\RouteMatch;
 use Drupal\Core\Access\AccessManager;
 use Drupal\Core\Access\DefaultAccessCheck;
@@ -95,9 +94,6 @@ protected function setUp() {
     parent::setUp();
 
     $this->container = new ContainerBuilder();
-    $cache_contexts_manager = $this->prophesize(CacheContextsManager::class)->reveal();
-    $this->container->set('cache_contexts_manager', $cache_contexts_manager);
-    \Drupal::setContainer($this->container);
 
     $this->routeCollection = new RouteCollection();
     $this->routeCollection->add('test_route_1', new Route('/test-route-1'));
diff --git a/core/tests/Drupal/Tests/Core/Access/AccessResultTest.php b/core/tests/Drupal/Tests/Core/Access/AccessResultTest.php
index ae5dadc..881b096 100644
--- a/core/tests/Drupal/Tests/Core/Access/AccessResultTest.php
+++ b/core/tests/Drupal/Tests/Core/Access/AccessResultTest.php
@@ -52,6 +52,7 @@ protected function assertDefaultCacheability(AccessResult $access) {
   /**
    * Tests the construction of an AccessResult object.
    *
+   * @covers ::__construct
    * @covers ::neutral
    */
   public function testConstruction() {
@@ -851,15 +852,8 @@ public function testOrIfCacheabilityMerging() {
    * @covers ::allowedIfHasPermissions
    *
    * @dataProvider providerTestAllowedIfHasPermissions
-   *
-   * @param string[] $permissions
-   *   The permissions to check for.
-   * @param string $conjunction
-   *   The conjunction to use when checking for permission. 'AND' or 'OR'.
-   * @param \Drupal\Core\Access\AccessResult $expected_access
-   *   The expected access check result.
    */
-  public function testAllowedIfHasPermissions($permissions, $conjunction, AccessResult $expected_access) {
+  public function testAllowedIfHasPermissions($permissions, $conjunction, $expected_access) {
     $account = $this->getMock('\Drupal\Core\Session\AccountInterface');
     $account->expects($this->any())
       ->method('hasPermission')
@@ -868,10 +862,6 @@ public function testAllowedIfHasPermissions($permissions, $conjunction, AccessRe
         ['denied', FALSE],
       ]);
 
-    if ($permissions) {
-      $expected_access->cachePerPermissions();
-    }
-
     $access_result = AccessResult::allowedIfHasPermissions($account, $permissions, $conjunction);
     $this->assertEquals($expected_access, $access_result);
   }
@@ -885,14 +875,14 @@ public function providerTestAllowedIfHasPermissions() {
     return [
       [[], 'AND', AccessResult::allowedIf(FALSE)],
       [[], 'OR', AccessResult::allowedIf(FALSE)],
-      [['allowed'], 'OR', AccessResult::allowedIf(TRUE)],
-      [['allowed'], 'AND', AccessResult::allowedIf(TRUE)],
-      [['denied'], 'OR', AccessResult::allowedIf(FALSE)],
-      [['denied'], 'AND', AccessResult::allowedIf(FALSE)],
-      [['allowed', 'denied'], 'OR', AccessResult::allowedIf(TRUE)],
-      [['denied', 'allowed'], 'OR', AccessResult::allowedIf(TRUE)],
-      [['allowed', 'denied', 'other'], 'OR', AccessResult::allowedIf(TRUE)],
-      [['allowed', 'denied'], 'AND', AccessResult::allowedIf(FALSE)],
+      [['allowed'], 'OR', AccessResult::allowedIf(TRUE)->addCacheContexts(['user.permissions'])],
+      [['allowed'], 'AND', AccessResult::allowedIf(TRUE)->addCacheContexts(['user.permissions'])],
+      [['denied'], 'OR', AccessResult::allowedIf(FALSE)->addCacheContexts(['user.permissions'])],
+      [['denied'], 'AND', AccessResult::allowedIf(FALSE)->addCacheContexts(['user.permissions'])],
+      [['allowed', 'denied'], 'OR', AccessResult::allowedIf(TRUE)->addCacheContexts(['user.permissions'])],
+      [['denied', 'allowed'], 'OR', AccessResult::allowedIf(TRUE)->addCacheContexts(['user.permissions'])],
+      [['allowed', 'denied', 'other'], 'OR', AccessResult::allowedIf(TRUE)->addCacheContexts(['user.permissions'])],
+      [['allowed', 'denied'], 'AND', AccessResult::allowedIf(FALSE)->addCacheContexts(['user.permissions'])],
     ];
   }
 
diff --git a/core/tests/Drupal/Tests/Core/Breadcrumb/BreadcrumbManagerTest.php b/core/tests/Drupal/Tests/Core/Breadcrumb/BreadcrumbManagerTest.php
index b91460b..a2cbbf0 100644
--- a/core/tests/Drupal/Tests/Core/Breadcrumb/BreadcrumbManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Breadcrumb/BreadcrumbManagerTest.php
@@ -7,9 +7,7 @@
 
 namespace Drupal\Tests\Core\Breadcrumb;
 
-use Drupal\Core\Breadcrumb\Breadcrumb;
 use Drupal\Core\Breadcrumb\BreadcrumbManager;
-use Drupal\Core\Cache\Cache;
 use Drupal\Tests\UnitTestCase;
 
 /**
@@ -19,13 +17,6 @@
 class BreadcrumbManagerTest extends UnitTestCase {
 
   /**
-   * The breadcrumb object.
-   *
-   * @var \Drupal\Core\Breadcrumb\Breadcrumb
-   */
-  protected $breadcrumb;
-
-  /**
    * The tested breadcrumb manager.
    *
    * @var \Drupal\Core\Breadcrumb\BreadcrumbManager
@@ -45,23 +36,14 @@ class BreadcrumbManagerTest extends UnitTestCase {
   protected function setUp() {
     $this->moduleHandler = $this->getMock('Drupal\Core\Extension\ModuleHandlerInterface');
     $this->breadcrumbManager = new BreadcrumbManager($this->moduleHandler);
-    $this->breadcrumb = new Breadcrumb();
   }
 
   /**
    * Tests the breadcrumb manager without any set breadcrumb.
    */
   public function testBuildWithoutBuilder() {
-    $route_match = $this->getMock('Drupal\Core\Routing\RouteMatchInterface');
-    $this->moduleHandler->expects($this->once())
-      ->method('alter')
-      ->with('system_breadcrumb', $this->breadcrumb, $route_match, ['builder' => NULL]);
-
-    $breadcrumb = $this->breadcrumbManager->build($this->getMock('Drupal\Core\Routing\RouteMatchInterface'));
-    $this->assertEquals([], $breadcrumb->getLinks());
-    $this->assertEquals([], $breadcrumb->getCacheContexts());
-    $this->assertEquals([], $breadcrumb->getCacheTags());
-    $this->assertEquals(Cache::PERMANENT, $breadcrumb->getCacheMaxAge());
+    $result = $this->breadcrumbManager->build($this->getMock('Drupal\Core\Routing\RouteMatchInterface'));
+    $this->assertEquals(array(), $result);
   }
 
   /**
@@ -69,9 +51,7 @@ public function testBuildWithoutBuilder() {
    */
   public function testBuildWithSingleBuilder() {
     $builder = $this->getMock('Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface');
-    $links = array('<a href="/example">Test</a>');
-    $this->breadcrumb->setLinks($links);
-    $this->breadcrumb->setCacheContexts(['foo'])->setCacheTags(['bar']);
+    $breadcrumb = array('<a href="/example">Test</a>');
 
     $builder->expects($this->once())
       ->method('applies')
@@ -79,20 +59,17 @@ public function testBuildWithSingleBuilder() {
 
     $builder->expects($this->once())
       ->method('build')
-      ->willReturn($this->breadcrumb);
+      ->will($this->returnValue($breadcrumb));
 
     $route_match = $this->getMock('Drupal\Core\Routing\RouteMatchInterface');
     $this->moduleHandler->expects($this->once())
       ->method('alter')
-      ->with('system_breadcrumb', $this->breadcrumb, $route_match, array('builder' => $builder));
+      ->with('system_breadcrumb', $breadcrumb, $route_match, array('builder' => $builder));
 
     $this->breadcrumbManager->addBuilder($builder, 0);
 
-    $breadcrumb = $this->breadcrumbManager->build($route_match);
-    $this->assertEquals($links, $breadcrumb->getLinks());
-    $this->assertEquals(['foo'], $breadcrumb->getCacheContexts());
-    $this->assertEquals(['bar'], $breadcrumb->getCacheTags());
-    $this->assertEquals(Cache::PERMANENT, $breadcrumb->getCacheMaxAge());
+    $result = $this->breadcrumbManager->build($route_match);
+    $this->assertEquals($breadcrumb, $result);
   }
 
   /**
@@ -106,30 +83,25 @@ public function testBuildWithMultipleApplyingBuilders() {
       ->method('build');
 
     $builder2 = $this->getMock('Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface');
-    $links2 = array('<a href="/example2">Test2</a>');
-    $this->breadcrumb->setLinks($links2);
-    $this->breadcrumb->setCacheContexts(['baz'])->setCacheTags(['qux']);
+    $breadcrumb2 = array('<a href="/example2">Test2</a>');
     $builder2->expects($this->once())
       ->method('applies')
       ->will($this->returnValue(TRUE));
     $builder2->expects($this->once())
       ->method('build')
-      ->willReturn($this->breadcrumb);
+      ->will($this->returnValue($breadcrumb2));
 
     $route_match = $this->getMock('Drupal\Core\Routing\RouteMatchInterface');
 
     $this->moduleHandler->expects($this->once())
       ->method('alter')
-      ->with('system_breadcrumb', $this->breadcrumb, $route_match, array('builder' => $builder2));
+      ->with('system_breadcrumb', $breadcrumb2, $route_match, array('builder' => $builder2));
 
     $this->breadcrumbManager->addBuilder($builder1, 0);
     $this->breadcrumbManager->addBuilder($builder2, 10);
 
-    $breadcrumb = $this->breadcrumbManager->build($route_match);
-    $this->assertEquals($links2, $breadcrumb->getLinks());
-    $this->assertEquals(['baz'], $breadcrumb->getCacheContexts());
-    $this->assertEquals(['qux'], $breadcrumb->getCacheTags());
-    $this->assertEquals(Cache::PERMANENT, $breadcrumb->getCacheMaxAge());
+    $result = $this->breadcrumbManager->build($route_match);
+    $this->assertEquals($breadcrumb2, $result);
   }
 
   /**
@@ -144,30 +116,25 @@ public function testBuildWithOneNotApplyingBuilders() {
       ->method('build');
 
     $builder2 = $this->getMock('Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface');
-    $links2 = ['<a href="/example2">Test2</a>'];
-    $this->breadcrumb->setLinks($links2);
-    $this->breadcrumb->setCacheContexts(['baz'])->setCacheTags(['qux']);
+    $breadcrumb2 = array('<a href="/example2">Test2</a>');
     $builder2->expects($this->once())
       ->method('applies')
       ->will($this->returnValue(TRUE));
     $builder2->expects($this->once())
       ->method('build')
-      ->willReturn($this->breadcrumb);
+      ->will($this->returnValue($breadcrumb2));
 
     $route_match = $this->getMock('Drupal\Core\Routing\RouteMatchInterface');
 
     $this->moduleHandler->expects($this->once())
       ->method('alter')
-      ->with('system_breadcrumb', $this->breadcrumb, $route_match, array('builder' => $builder2));
+      ->with('system_breadcrumb', $breadcrumb2, $route_match, array('builder' => $builder2));
 
     $this->breadcrumbManager->addBuilder($builder1, 10);
     $this->breadcrumbManager->addBuilder($builder2, 0);
 
-    $breadcrumb = $this->breadcrumbManager->build($route_match);
-    $this->assertEquals($links2, $breadcrumb->getLinks());
-    $this->assertEquals(['baz'], $breadcrumb->getCacheContexts());
-    $this->assertEquals(['qux'], $breadcrumb->getCacheTags());
-    $this->assertEquals(Cache::PERMANENT, $breadcrumb->getCacheMaxAge());
+    $result = $this->breadcrumbManager->build($route_match);
+    $this->assertEquals($breadcrumb2, $result);
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Core/Breadcrumb/BreadcrumbTest.php b/core/tests/Drupal/Tests/Core/Breadcrumb/BreadcrumbTest.php
deleted file mode 100644
index 2399d0d..0000000
--- a/core/tests/Drupal/Tests/Core/Breadcrumb/BreadcrumbTest.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Tests\Core\Breadcrumb\BreadcrumbTest.
- */
-
-namespace Drupal\Tests\Core\Breadcrumb;
-
-use Drupal\Core\Breadcrumb\Breadcrumb;
-use Drupal\Core\Link;
-use Drupal\Core\Url;
-use Drupal\Tests\UnitTestCase;
-
-/**
- * @coversDefaultClass \Drupal\Core\Breadcrumb\Breadcrumb
- * @group Breadcrumb
- */
-class BreadcrumbTest extends UnitTestCase {
-
-  /**
-   * @covers ::setLinks
-   * @expectedException \LogicException
-   * @expectedExceptionMessage Once breadcrumb links are set, only additional breadcrumb links can be added.
-   */
-  public function testSetLinks() {
-    $breadcrumb = new Breadcrumb();
-    $breadcrumb->setLinks([new Link('Home', Url::fromRoute('<front>'))]);
-    $breadcrumb->setLinks([new Link('None', Url::fromRoute('<none>'))]);
-  }
-
-}
diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityAccessCheckTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityAccessCheckTest.php
index 0865933..bc2e5cc 100644
--- a/core/tests/Drupal/Tests/Core/Entity/EntityAccessCheckTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/EntityAccessCheckTest.php
@@ -7,8 +7,6 @@
 
 namespace Drupal\Tests\Core\Entity;
 
-use Drupal\Core\Cache\Context\CacheContextsManager;
-use Drupal\Core\DependencyInjection\Container;
 use Symfony\Component\HttpFoundation\ParameterBag;
 use Symfony\Component\Routing\Route;
 use Drupal\Core\Access\AccessResult;
@@ -27,11 +25,6 @@ class EntityAccessCheckTest extends UnitTestCase {
    * Tests the method for checking access to routes.
    */
   public function testAccess() {
-    $cache_contexts_manager = $this->prophesize(CacheContextsManager::class)->reveal();
-    $container = new Container();
-    $container->set('cache_contexts_manager', $cache_contexts_manager);
-    \Drupal::setContainer($container);
-
     $route = new Route('/foo', array(), array('_entity_access' => 'node.update'));
     $upcasted_arguments = new ParameterBag();
     $route_match = $this->getMock('Drupal\Core\Routing\RouteMatchInterface');
diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityCreateAccessCheckTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityCreateAccessCheckTest.php
index b0b4c8c..5d0a966 100644
--- a/core/tests/Drupal/Tests/Core/Entity/EntityCreateAccessCheckTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/EntityCreateAccessCheckTest.php
@@ -8,8 +8,6 @@
 namespace Drupal\Tests\Core\Entity;
 
 use Drupal\Core\Access\AccessResult;
-use Drupal\Core\Cache\Context\CacheContextsManager;
-use Drupal\Core\DependencyInjection\Container;
 use Drupal\Core\Entity\EntityCreateAccessCheck;
 use Drupal\Tests\UnitTestCase;
 use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
@@ -34,11 +32,6 @@ class EntityCreateAccessCheckTest extends UnitTestCase {
    */
   protected function setUp() {
     parent::setUp();
-
-    $cache_contexts_manager = $this->prophesize(CacheContextsManager::class)->reveal();
-    $container = new Container();
-    $container->set('cache_contexts_manager', $cache_contexts_manager);
-    \Drupal::setContainer($container);
   }
 
   /**
@@ -47,8 +40,9 @@ protected function setUp() {
    * @return array
    */
   public function providerTestAccess() {
-    $no_access = FALSE;
-    $access = TRUE;
+    $no_access = AccessResult::neutral()->cachePerPermissions();
+    $access = AccessResult::allowed()->cachePerPermissions();
+    $no_access_due_to_errors = AccessResult::neutral();
 
     return array(
       array('', 'entity_test', $no_access, $no_access),
@@ -57,10 +51,10 @@ public function providerTestAccess() {
       array('test_entity', 'entity_test:test_entity', $no_access, $no_access),
       array('test_entity', 'entity_test:{bundle_argument}', $access, $access),
       array('test_entity', 'entity_test:{bundle_argument}', $no_access, $no_access),
-      array('', 'entity_test:{bundle_argument}', $no_access, $no_access, FALSE),
+      array('', 'entity_test:{bundle_argument}', $no_access, $no_access_due_to_errors),
       // When the bundle is not provided, access should be denied even if the
       // access control handler would allow access.
-      array('', 'entity_test:{bundle_argument}', $access, $no_access, FALSE),
+      array('', 'entity_test:{bundle_argument}', $access, $no_access_due_to_errors),
     );
   }
 
@@ -69,15 +63,7 @@ public function providerTestAccess() {
    *
    * @dataProvider providerTestAccess
    */
-  public function testAccess($entity_bundle, $requirement, $access, $expected, $expect_permission_context = TRUE) {
-
-    // Set up the access result objects for allowing or denying access.
-    $access_result = $access ? AccessResult::allowed()->cachePerPermissions() : AccessResult::neutral()->cachePerPermissions();
-    $expected_access_result = $expected ? AccessResult::allowed() : AccessResult::neutral();
-    if ($expect_permission_context) {
-      $expected_access_result->cachePerPermissions();
-    }
-
+  public function testAccess($entity_bundle, $requirement, $access, $expected) {
     $entity_manager = $this->getMock('Drupal\Core\Entity\EntityManagerInterface');
 
     // Don't expect a call to the access control handler when we have a bundle
@@ -87,7 +73,7 @@ public function testAccess($entity_bundle, $requirement, $access, $expected, $ex
       $access_control_handler->expects($this->once())
         ->method('createAccess')
         ->with($entity_bundle)
-        ->will($this->returnValue($access_result));
+        ->will($this->returnValue($access));
 
       $entity_manager->expects($this->any())
         ->method('getAccessControlHandler')
@@ -115,7 +101,7 @@ public function testAccess($entity_bundle, $requirement, $access, $expected, $ex
       ->will($this->returnValue($raw_variables));
 
     $account = $this->getMock('Drupal\Core\Session\AccountInterface');
-    $this->assertEquals($expected_access_result, $applies_check->access($route, $route_match, $account));
+    $this->assertEquals($expected, $applies_check->access($route, $route_match, $account));
   }
 
 }
diff --git a/core/tests/Drupal/Tests/Core/Form/FormBuilderTest.php b/core/tests/Drupal/Tests/Core/Form/FormBuilderTest.php
index 11f66ef..09445ce 100644
--- a/core/tests/Drupal/Tests/Core/Form/FormBuilderTest.php
+++ b/core/tests/Drupal/Tests/Core/Form/FormBuilderTest.php
@@ -19,8 +19,6 @@
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\RequestStack;
-use Drupal\Core\Cache\Context\CacheContextsManager;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
 
 /**
  * @coversDefaultClass \Drupal\Core\Form\FormBuilder
@@ -29,25 +27,6 @@
 class FormBuilderTest extends FormTestBase {
 
   /**
-   * The dependency injection container.
-   *
-   * @var \Symfony\Component\DependencyInjection\ContainerBuilder
-   */
-  protected $container;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-
-    $this->container = new ContainerBuilder();
-    $cache_contexts_manager = $this->prophesize(CacheContextsManager::class)->reveal();
-    $this->container->set('cache_contexts_manager', $cache_contexts_manager);
-    \Drupal::setContainer($this->container);
-  }
-
-  /**
    * Tests the getFormId() method with a string based form ID.
    *
    * @expectedException \InvalidArgumentException
@@ -592,7 +571,7 @@ public function providerTestChildAccessInheritance() {
     $data['access-false-root'] = [$clone, $expected_access];
 
     $clone = $element;
-    $access_result = AccessResult::forbidden();
+    $access_result = AccessResult::forbidden()->addCacheContexts(['user']);
     $clone['#access'] = $access_result;
 
     $expected_access = [];
@@ -624,9 +603,11 @@ public function providerTestChildAccessInheritance() {
 
     // Allow access on the most outer level but forbid otherwise.
     $clone = $element;
-    $access_result_allowed = AccessResult::allowed();
+    $access_result_allowed = AccessResult::allowed()
+      ->addCacheContexts(['user']);
     $clone['#access'] = $access_result_allowed;
-    $access_result_forbidden = AccessResult::forbidden();
+    $access_result_forbidden = AccessResult::forbidden()
+      ->addCacheContexts(['user']);
     $clone['child0']['#access'] = $access_result_forbidden;
 
     $expected_access = [];
diff --git a/core/tests/Drupal/Tests/Core/Menu/DefaultMenuLinkTreeManipulatorsTest.php b/core/tests/Drupal/Tests/Core/Menu/DefaultMenuLinkTreeManipulatorsTest.php
index 17702e7..c20a99b 100644
--- a/core/tests/Drupal/Tests/Core/Menu/DefaultMenuLinkTreeManipulatorsTest.php
+++ b/core/tests/Drupal/Tests/Core/Menu/DefaultMenuLinkTreeManipulatorsTest.php
@@ -8,8 +8,6 @@
 namespace Drupal\Tests\Core\Menu;
 
 use Drupal\Core\Access\AccessResult;
-use Drupal\Core\Cache\Context\CacheContextsManager;
-use Drupal\Core\DependencyInjection\Container;
 use Drupal\Core\Menu\DefaultMenuLinkTreeManipulators;
 use Drupal\Core\Menu\MenuLinkTreeElement;
 use Drupal\Tests\UnitTestCase;
@@ -78,11 +76,6 @@ protected function setUp() {
       ->getMock();
 
     $this->defaultMenuTreeManipulators = new DefaultMenuLinkTreeManipulators($this->accessManager, $this->currentUser, $this->queryFactory);
-
-    $cache_contexts_manager = $this->prophesize(CacheContextsManager::class)->reveal();
-    $container = new Container();
-    $container->set('cache_contexts_manager', $cache_contexts_manager);
-    \Drupal::setContainer($container);
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Core/Render/Element/HtmlTagTest.php b/core/tests/Drupal/Tests/Core/Render/Element/HtmlTagTest.php
index 6baddb1..2135344 100644
--- a/core/tests/Drupal/Tests/Core/Render/Element/HtmlTagTest.php
+++ b/core/tests/Drupal/Tests/Core/Render/Element/HtmlTagTest.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\Tests\Core\Render\Element;
 
-use Drupal\Core\Render\SafeString;
+use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Tests\UnitTestCase;
 use Drupal\Core\Render\Element\HtmlTag;
 
@@ -35,7 +35,7 @@ public function testGetInfo() {
   public function testPreRenderHtmlTag($element, $expected) {
     $result = HtmlTag::preRenderHtmlTag($element);
     $this->assertArrayHasKey('#markup', $result);
-    $this->assertEquals($expected, $result['#markup']);
+    $this->assertSame($expected, $result['#markup']);
   }
 
   /**
@@ -78,36 +78,6 @@ public function providerPreRenderHtmlTag() {
     $element['#noscript'] = TRUE;
     $tags[] = array($element, '<noscript><div class="test" id="id">value</div>' . "\n" . '</noscript>');
 
-    // Ensure that #tag is sanitised.
-    $element = array(
-      '#tag' => 'p><script>alert()</script><p',
-      '#value' => 'value',
-    );
-    $tags[] = array($element, "<p&gt;&lt;script&gt;alert()&lt;/script&gt;&lt;p>value</p&gt;&lt;script&gt;alert()&lt;/script&gt;&lt;p>\n");
-
-    // Ensure that #value is not filtered if it is marked as safe.
-    $element = array(
-      '#tag' => 'p',
-      '#value' => SafeString::create('<script>value</script>'),
-    );
-    $tags[] = array($element, "<p><script>value</script></p>\n");
-
-    // Ensure that #value is filtered if it is not safe.
-    $element = array(
-      '#tag' => 'p',
-      '#value' => '<script>value</script>',
-    );
-    $tags[] = array($element, "<p>value</p>\n");
-
-    // Ensure that #value_prefix and #value_suffix are not filtered.
-    $element = array(
-      '#tag' => 'p',
-      '#value' => 'value',
-      '#value_prefix' => '<script>value</script>',
-      '#value_suffix' => '<script>value</script>',
-    );
-    $tags[] = array($element, "<p><script>value</script>value<script>value</script></p>\n");
-
     return $tags;
   }
 
@@ -117,10 +87,10 @@ public function providerPreRenderHtmlTag() {
    */
   public function testPreRenderConditionalComments($element, $expected, $set_safe = FALSE) {
     if ($set_safe) {
-      $element['#prefix'] = SafeString::create($element['#prefix']);
-      $element['#suffix'] = SafeString::create($element['#suffix']);
+      SafeMarkup::set($element['#prefix']);
+      SafeMarkup::set($element['#suffix']);
     }
-    $this->assertEquals($expected, HtmlTag::preRenderConditionalComments($element));
+    $this->assertSame($expected, HtmlTag::preRenderConditionalComments($element));
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php b/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php
index 43d3fe3..4653000 100644
--- a/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php
+++ b/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php
@@ -68,7 +68,7 @@ public function providerPlaceholders() {
       if (is_array($cache_keys)) {
         $token_render_array['#cache']['keys'] = $cache_keys;
       }
-      $token = hash('crc32b', serialize($token_render_array));
+      $token = hash('sha1', serialize($token_render_array));
       return SafeMarkup::format('<drupal-render-placeholder callback="@callback" arguments="@arguments" token="@token"></drupal-render-placeholder>', [
         '@callback' => 'Drupal\Tests\Core\Render\PlaceholdersTest::callback',
         '@arguments' => '0=' . $args[0],
@@ -440,7 +440,7 @@ public function testCacheableParent($test_element, $args, array $expected_placeh
 
     $this->setUpRequest('GET');
 
-    $token = hash('crc32b', serialize($expected_placeholder_render_array));
+    $token = hash('sha1', serialize($expected_placeholder_render_array));
     $expected_placeholder_markup = '<drupal-render-placeholder callback="Drupal\Tests\Core\Render\PlaceholdersTest::callback" arguments="0=' . $args[0] . '" token="' . $token . '"></drupal-render-placeholder>';
     $this->assertSame($expected_placeholder_markup, Html::normalize($expected_placeholder_markup), 'Placeholder unaltered by Html::normalize() which is used by FilterHtmlCorrector.');
 
diff --git a/core/tests/Drupal/Tests/Core/Render/RendererTest.php b/core/tests/Drupal/Tests/Core/Render/RendererTest.php
index d48346c..c6845f5 100644
--- a/core/tests/Drupal/Tests/Core/Render/RendererTest.php
+++ b/core/tests/Drupal/Tests/Core/Render/RendererTest.php
@@ -36,18 +36,6 @@ class RendererTest extends RendererTestBase {
   ];
 
   /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    // Reset the static list of SafeStrings to prevent bleeding between tests.
-    $reflected_class = new \ReflectionClass('\Drupal\Component\Utility\SafeMarkup');
-    $reflected_property = $reflected_class->getProperty('safeStrings');
-    $reflected_property->setAccessible(true);
-    $reflected_property->setValue([]);
-  }
-
-  /**
    * @covers ::render
    * @covers ::doRender
    *
@@ -59,15 +47,7 @@ public function testRenderBasic($build, $expected, callable $setup_code = NULL)
       $setup_code();
     }
 
-    if (isset($build['#markup'])) {
-      $this->assertFalse(SafeMarkup::isSafe($build['#markup']), 'The #markup value is not marked safe before rendering.');
-    }
-    $render_output = $this->renderer->renderRoot($build);
-    $this->assertSame($expected, (string) $render_output);
-    if ($render_output !== '') {
-      $this->assertTrue(SafeMarkup::isSafe($render_output), 'Output of render is marked safe.');
-      $this->assertTrue(SafeMarkup::isSafe($build['#markup']), 'The #markup value is marked safe after rendering.');
-    }
+    $this->assertSame($expected, (string) $this->renderer->renderRoot($build));
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Core/Route/RoleAccessCheckTest.php b/core/tests/Drupal/Tests/Core/Route/RoleAccessCheckTest.php
index 9d0d148..d818e47 100644
--- a/core/tests/Drupal/Tests/Core/Route/RoleAccessCheckTest.php
+++ b/core/tests/Drupal/Tests/Core/Route/RoleAccessCheckTest.php
@@ -8,8 +8,6 @@
 namespace Drupal\Tests\Core\Route;
 
 use Drupal\Core\Access\AccessResult;
-use Drupal\Core\Cache\Context\CacheContextsManager;
-use Drupal\Core\DependencyInjection\Container;
 use Drupal\Core\Session\UserSession;
 use Drupal\Tests\UnitTestCase;
 use Drupal\user\Access\RoleAccessCheck;
@@ -145,11 +143,6 @@ public function roleAccessProvider() {
    * @dataProvider roleAccessProvider
    */
   public function testRoleAccess($path, $grant_accounts, $deny_accounts) {
-    $cache_contexts_manager = $this->prophesize(CacheContextsManager::class)->reveal();
-    $container = new Container();
-    $container->set('cache_contexts_manager', $cache_contexts_manager);
-    \Drupal::setContainer($container);
-
     $role_access_check = new RoleAccessCheck();
     $collection = $this->getTestRouteCollection();
 
diff --git a/core/themes/classy/templates/layout/html.html.twig b/core/themes/classy/templates/layout/html.html.twig
index 3911766..34c8c56 100644
--- a/core/themes/classy/templates/layout/html.html.twig
+++ b/core/themes/classy/templates/layout/html.html.twig
@@ -19,10 +19,9 @@
  * - page: The rendered page markup.
  * - page_bottom: Closing rendered markup. This variable should be printed after
  *   'page'.
- * - styles: HTML necessary to import all necessary CSS files in <head>.
- * - scripts: HTML necessary to load JavaScript files and settings in <head>.
- * - scripts_bottom: HTML necessary to load JavaScript files before closing
- *   <body> tag.
+ * - styles: Style tags necessary to import all necessary CSS files in the head.
+ * - scripts: Script tags necessary to load the JavaScript files and settings
+ *   in the head.
  * - db_offline: A flag indicating if the database is offline.
  *
  * @see template_preprocess_html()
diff --git a/core/themes/engines/twig/twig.engine b/core/themes/engines/twig/twig.engine
index de085ff..af5ebe7 100644
--- a/core/themes/engines/twig/twig.engine
+++ b/core/themes/engines/twig/twig.engine
@@ -6,7 +6,6 @@
  */
 
 use Drupal\Component\Utility\SafeMarkup;
-use Drupal\Core\Render\SafeString;
 use Drupal\Core\Extension\Extension;
 
 /**
@@ -45,7 +44,7 @@ function twig_init(Extension $theme) {
  * @param array $variables
  *   A keyed array of variables that will appear in the output.
  *
- * @return string|\Drupal\Component\Utility\SafeStringInterface
+ * @return string
  *   The output generated by the template, plus any debug information.
  */
 function twig_render_template($template_file, array $variables) {
@@ -75,7 +74,7 @@ function twig_render_template($template_file, array $variables) {
   }
   if ($twig_service->isDebug()) {
     $output['debug_prefix'] .= "\n\n<!-- THEME DEBUG -->";
-    $output['debug_prefix'] .= "\n<!-- THEME HOOK: '" . htmlspecialchars($variables['theme_hook_original'], ENT_QUOTES, 'UTF-8') . "' -->";
+    $output['debug_prefix'] .= "\n<!-- THEME HOOK: '" . SafeMarkup::checkPlain($variables['theme_hook_original']) . "' -->";
     // If there are theme suggestions, reverse the array so more specific
     // suggestions are shown first.
     if (!empty($variables['theme_hook_suggestions'])) {
@@ -109,13 +108,12 @@ function twig_render_template($template_file, array $variables) {
         $prefix = ($template == $current_template) ? 'x' : '*';
         $suggestion = $prefix . ' ' . $template;
       }
-      $output['debug_info'] .= "\n<!-- FILE NAME SUGGESTIONS:\n   " . htmlspecialchars(implode("\n   ", $suggestions), ENT_QUOTES, 'UTF-8') . "\n-->";
+      $output['debug_info'] .= "\n<!-- FILE NAME SUGGESTIONS:\n   " . SafeMarkup::checkPlain(implode("\n   ", $suggestions)) . "\n-->";
     }
-    $output['debug_info']   .= "\n<!-- BEGIN OUTPUT from '" . htmlspecialchars($template_file, ENT_QUOTES, 'UTF-8') . "' -->\n";
-    $output['debug_suffix'] .= "\n<!-- END OUTPUT from '" . htmlspecialchars($template_file, ENT_QUOTES, 'UTF-8') . "' -->\n\n";
+    $output['debug_info']   .= "\n<!-- BEGIN OUTPUT from '" . SafeMarkup::checkPlain($template_file) . "' -->\n";
+    $output['debug_suffix'] .= "\n<!-- END OUTPUT from '" . SafeMarkup::checkPlain($template_file) . "' -->\n\n";
   }
-  // This output has already been rendered and is therefore considered safe.
-  return SafeString::create(implode('', $output));
+  return SafeMarkup::set(implode('', $output));
 }
 
 /**
diff --git a/core/vendor/composer/ClassLoader.php b/core/vendor/composer/ClassLoader.php
index 5e1469e..4e05d3b 100644
--- a/core/vendor/composer/ClassLoader.php
+++ b/core/vendor/composer/ClassLoader.php
@@ -351,7 +351,7 @@ private function findFileWithExtension($class, $ext)
             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))) {
+                        if (is_file($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
                             return $file;
                         }
                     }
@@ -361,7 +361,7 @@ private function findFileWithExtension($class, $ext)
 
         // PSR-4 fallback dirs
         foreach ($this->fallbackDirsPsr4 as $dir) {
-            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
+            if (is_file($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
                 return $file;
             }
         }
@@ -380,7 +380,7 @@ private function findFileWithExtension($class, $ext)
             foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
                 if (0 === strpos($class, $prefix)) {
                     foreach ($dirs as $dir) {
-                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+                        if (is_file($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
                             return $file;
                         }
                     }
@@ -390,7 +390,7 @@ private function findFileWithExtension($class, $ext)
 
         // PSR-0 fallback dirs
         foreach ($this->fallbackDirsPsr0 as $dir) {
-            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+            if (is_file($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
                 return $file;
             }
         }
diff --git a/core/vendor/composer/installed.json b/core/vendor/composer/installed.json
index 018da3e..e063543 100644
--- a/core/vendor/composer/installed.json
+++ b/core/vendor/composer/installed.json
@@ -1108,6 +1108,65 @@
         ]
     },
     {
+        "name": "twig/twig",
+        "version": "v1.18.1",
+        "version_normalized": "1.18.1.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/twigphp/Twig.git",
+            "reference": "9f70492f44398e276d1b81c1b43adfe6751c7b7f"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/twigphp/Twig/zipball/9f70492f44398e276d1b81c1b43adfe6751c7b7f",
+            "reference": "9f70492f44398e276d1b81c1b43adfe6751c7b7f",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.2.7"
+        },
+        "time": "2015-04-19 08:30:27",
+        "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.18-dev"
+            }
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "psr-0": {
+                "Twig_": "lib/"
+            }
+        },
+        "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": "sebastian/version",
         "version": "1.0.5",
         "version_normalized": "1.0.5.0",
@@ -3206,7 +3265,7 @@
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/guzzle/guzzle/zipball/e4046d42e6abc055c16d47bfbae573ae4c8646d1",
+            "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1879fbe853b0c64d109e369c7aeff09849e62d1e",
             "reference": "1879fbe853b0c64d109e369c7aeff09849e62d1e",
             "shasum": ""
         },
@@ -3418,64 +3477,5 @@
             "validation",
             "validator"
         ]
-    },
-    {
-        "name": "twig/twig",
-        "version": "v1.20.0",
-        "version_normalized": "1.20.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/twigphp/Twig.git",
-            "reference": "1ea4e5f81c6d005fe84d0b38e1c4f1955eb86844"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/twigphp/Twig/zipball/1ea4e5f81c6d005fe84d0b38e1c4f1955eb86844",
-            "reference": "1ea4e5f81c6d005fe84d0b38e1c4f1955eb86844",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.2.7"
-        },
-        "time": "2015-08-12 15:56:39",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.20-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Twig_": "lib/"
-            }
-        },
-        "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"
-        ]
     }
 ]
diff --git a/core/vendor/twig/twig/.travis.yml b/core/vendor/twig/twig/.travis.yml
index 223a3be..a6274ff 100644
--- a/core/vendor/twig/twig/.travis.yml
+++ b/core/vendor/twig/twig/.travis.yml
@@ -8,9 +8,11 @@ php:
   - 5.6
   - hhvm
   - nightly
+  - hhvm-nightly
 
 allow_failures:
     - php: nightly
+    - php: hhvm-nightly
 
 env:
   - TWIG_EXT=no
@@ -24,5 +26,7 @@ matrix:
   exclude:
     - php: hhvm
       env: TWIG_EXT=yes
+    - php: hhvm-nightly
+      env: TWIG_EXT=yes
     - php: nightly
       env: TWIG_EXT=yes
diff --git a/core/vendor/twig/twig/CHANGELOG b/core/vendor/twig/twig/CHANGELOG
index d4d951b..edd6757 100644
--- a/core/vendor/twig/twig/CHANGELOG
+++ b/core/vendor/twig/twig/CHANGELOG
@@ -1,27 +1,3 @@
-* 1.20.0 (2015-08-12)
-
- * forbid access to the Twig environment from templates and internal parts of Twig_Template
- * fixed limited RCEs when in sandbox mode
- * deprecated Twig_Template::getEnvironment()
- * deprecated the _self variable for usage outside of the from and import tags
- * added Twig_BaseNodeVisitor to ease the compatibility of node visitors 
-   between 1.x and 2.x
-
-* 1.19.0 (2015-07-31)
-
- * fixed wrong error message when including an undefined template in a child template
- * added support for variadic filters, functions, and tests
- * added support for extra positional arguments in macros
- * added ignore_missing flag to the source function
- * fixed batch filter with zero items
- * deprecated Twig_Environment::clearTemplateCache()
- * fixed sandbox disabling when using the include function
-
-* 1.18.2 (2015-06-06)
-
- * fixed template/line guessing in exceptions for nested templates
- * optimized the number of inodes and the size of realpath cache when using the cache
-
 * 1.18.1 (2015-04-19)
 
  * fixed memory leaks in the C extension
diff --git a/core/vendor/twig/twig/composer.json b/core/vendor/twig/twig/composer.json
index 14f59c3..20d8ca7 100644
--- a/core/vendor/twig/twig/composer.json
+++ b/core/vendor/twig/twig/composer.json
@@ -36,7 +36,7 @@
     },
     "extra": {
         "branch-alias": {
-            "dev-master": "1.20-dev"
+            "dev-master": "1.18-dev"
         }
     }
 }
diff --git a/core/vendor/twig/twig/doc/advanced.rst b/core/vendor/twig/twig/doc/advanced.rst
index 6953f55..0e3be90 100644
--- a/core/vendor/twig/twig/doc/advanced.rst
+++ b/core/vendor/twig/twig/doc/advanced.rst
@@ -224,23 +224,6 @@ through your filter::
 
     $filter = new Twig_SimpleFilter('somefilter', 'somefilter', array('pre_escape' => 'html', 'is_safe' => array('html')));
 
-Variadic Filters
-~~~~~~~~~~~~~~~~
-
-.. versionadded:: 1.19
-    Support for variadic filters was added in Twig 1.19.
-
-When a filter should accept an arbitrary number of arguments, set the
-``is_variadic`` option to ``true``; Twig will pass the extra arguments as the
-last argument to the filter call as an array::
-
-    $filter = new Twig_SimpleFilter('thumbnail', function ($file, array $options = array()) {
-        // ...
-    }, array('is_variadic' => true));
-
-Be warned that named arguments passed to a variadic filter cannot be checked
-for validity as they will automatically end up in the option array.
-
 Dynamic Filters
 ~~~~~~~~~~~~~~~
 
@@ -348,10 +331,6 @@ The ``node`` sub-node will contain an expression of ``my_value``. Node-based
 tests also have access to the ``arguments`` node. This node will contain the
 various other arguments that have been provided to your test.
 
-If you want to pass a variable number of positional or named arguments to the
-test, set the ``is_variadic`` option to ``true``. Tests also support dynamic
-name feature as filters and functions.
-
 Tags
 ----
 
diff --git a/core/vendor/twig/twig/doc/api.rst b/core/vendor/twig/twig/doc/api.rst
index f367db0..cdeaffd 100644
--- a/core/vendor/twig/twig/doc/api.rst
+++ b/core/vendor/twig/twig/doc/api.rst
@@ -72,43 +72,29 @@ options as the constructor second argument::
 
 The following options are available:
 
-* ``debug`` *boolean*
-
-  When set to ``true``, the generated templates have a
+* ``debug``: When set to ``true``, the generated templates have a
   ``__toString()`` method that you can use to display the generated nodes
   (default to ``false``).
 
-* ``charset`` *string (default to ``utf-8``)*
-
-  The charset used by the templates.
-
-* ``base_template_class`` *string (default to ``Twig_Template``)*
-
-  The base template class to use for generated
-  templates.
+* ``charset``: The charset used by the templates (default to ``utf-8``).
 
-* ``cache`` *string|false*
+* ``base_template_class``: The base template class to use for generated
+  templates (default to ``Twig_Template``).
 
-  An absolute path where to store the compiled templates, or
+* ``cache``: An absolute path where to store the compiled templates, or
   ``false`` to disable caching (which is the default).
 
-* ``auto_reload`` *boolean*
-
-  When developing with Twig, it's useful to recompile the
+* ``auto_reload``: When developing with Twig, it's useful to recompile the
   template whenever the source code changes. If you don't provide a value for
   the ``auto_reload`` option, it will be determined automatically based on the
   ``debug`` value.
 
-* ``strict_variables`` *boolean*
-
-  If set to ``false``, Twig will silently ignore invalid
+* ``strict_variables``: If set to ``false``, Twig will silently ignore invalid
   variables (variables and or attributes/methods that do not exist) and
   replace them with a ``null`` value. When set to ``true``, Twig throws an
   exception instead (default to ``false``).
 
-* ``autoescape`` *string|boolean*
-
-  If set to ``true``, HTML auto-escaping will be enabled by
+* ``autoescape``: If set to ``true``, HTML auto-escaping will be enabled by
   default for all templates (default to ``true``).
 
   As of Twig 1.8, you can set the escaping strategy to use (``html``, ``js``,
@@ -124,9 +110,7 @@ The following options are available:
   strategy does not incur any overhead at runtime as auto-escaping is done at
   compilation time.)
 
-* ``optimizations`` *integer*
-
-  A flag that indicates which optimizations to apply
+* ``optimizations``: A flag that indicates which optimizations to apply
   (default to ``-1`` -- all optimizations are enabled; set it to ``0`` to
   disable).
 
diff --git a/core/vendor/twig/twig/doc/deprecated.rst b/core/vendor/twig/twig/doc/deprecated.rst
index 9afc241..bde62ba 100644
--- a/core/vendor/twig/twig/doc/deprecated.rst
+++ b/core/vendor/twig/twig/doc/deprecated.rst
@@ -107,30 +107,9 @@ Loaders
 * As of Twig 1.x, ``Twig_Loader_String`` is deprecated and will be removed in
   2.0.
 
-Node Visitors
--------------
-
-* Because of the removal of ``Twig_NodeInterface`` in 2.0, you need to extend
-  ``Twig_BaseNodeVistor`` instead of implementing ``Twig_NodeVisitorInterface``
-  directly to make your node visitors compatible with both Twig 1.x and 2.x.
-
 Globals
 -------
 
 * As of Twig 2.x, the ability to register a global variable after the runtime
   or the extensions have been initialized is not possible anymore (but
   changing the value of an already registered global is possible).
-
-* As of Twig 1.x, the ``_self`` global variable is deprecated except for usage
-  in the ``from`` and the ``import`` tags. In Twig 2.0, ``_self`` is not
-  exposed anymore but still usable in the ``from`` and the ``import`` tags.
-
-Miscellaneous
--------------
-
-* As of Twig 1.x, ``Twig_Environment::clearTemplateCache()`` is deprecated and
-  will be removed in 2.0.
-
-* As of Twig 1.x, ``Twig_Template::getEnvironment()`` and
-  ``Twig_TemplateInterface::getEnvironment()`` are deprecated and will be
-  removed in 2.0.
diff --git a/core/vendor/twig/twig/doc/filters/batch.rst b/core/vendor/twig/twig/doc/filters/batch.rst
index f8b6fa9..da47eb6 100644
--- a/core/vendor/twig/twig/doc/filters/batch.rst
+++ b/core/vendor/twig/twig/doc/filters/batch.rst
@@ -43,9 +43,3 @@ The above example will be rendered as:
             <td>No item</td>
         </tr>
     </table>
-
-Arguments
----------
-
-* ``size``: The size of the batch; fractional numbers will be rounded up
-* ``fill``: Used to fill in missing items
diff --git a/core/vendor/twig/twig/doc/functions/source.rst b/core/vendor/twig/twig/doc/functions/source.rst
index 3c921b1..8ff39c2 100644
--- a/core/vendor/twig/twig/doc/functions/source.rst
+++ b/core/vendor/twig/twig/doc/functions/source.rst
@@ -4,9 +4,6 @@
 .. versionadded:: 1.15
     The ``source`` function was added in Twig 1.15.
 
-.. versionadded:: 1.18.3
-    The ``ignore_missing`` flag was added in Twig 1.18.3.
-
 The ``source`` function returns the content of a template without rendering it:
 
 .. code-block:: jinja
@@ -14,13 +11,6 @@ The ``source`` function returns the content of a template without rendering it:
     {{ source('template.html') }}
     {{ source(some_var) }}
 
-When you set the ``ignore_missing`` flag, Twig will return an empty string if
-the template does not exist:
-
-.. code-block:: jinja
-
-    {{ source('template.html', ignore_missing = true) }}
-
 The function uses the same template loaders as the ones used to include
 templates. So, if you are using the filesystem loader, the templates are looked
 for in the paths defined by it.
@@ -29,4 +19,3 @@ Arguments
 ---------
 
 * ``name``: The name of the template to read
-* ``ignore_missing``: Whether to ignore missing templates or not
diff --git a/core/vendor/twig/twig/doc/internals.rst b/core/vendor/twig/twig/doc/internals.rst
index ef1174d..a68796b 100644
--- a/core/vendor/twig/twig/doc/internals.rst
+++ b/core/vendor/twig/twig/doc/internals.rst
@@ -124,7 +124,7 @@ using)::
         {
             // line 1
             echo "Hello ";
-            echo twig_escape_filter($this->env, isset($context["name"]) ? $context["name"] : null), "html", null, true);
+            echo twig_escape_filter($this->env, $this->getContext($context, "name"), "html", null, true);
         }
 
         // some more code
diff --git a/core/vendor/twig/twig/doc/intro.rst b/core/vendor/twig/twig/doc/intro.rst
index 9b38c97..773c476 100644
--- a/core/vendor/twig/twig/doc/intro.rst
+++ b/core/vendor/twig/twig/doc/intro.rst
@@ -21,14 +21,10 @@ The key-features are...
 * *Flexible*: Twig is powered by a flexible lexer and parser. This allows the
   developer to define its own custom tags and filters, and create its own DSL.
 
-Twig is used by many Open-Source projects like Symfony, Drupal8, eZPublish,
-phpBB, Piwik, OroCRM, and many frameworks have support for it as well like
-Slim, Yii, Laravel, Codeigniter, and Kohana, just to name a few.
-
 Prerequisites
 -------------
 
-Twig needs at least **PHP 5.2.7** to run.
+Twig needs at least **PHP 5.2.4** to run.
 
 Installation
 ------------
diff --git a/core/vendor/twig/twig/doc/tags/if.rst b/core/vendor/twig/twig/doc/tags/if.rst
index 12edf98..b10dcb4 100644
--- a/core/vendor/twig/twig/doc/tags/if.rst
+++ b/core/vendor/twig/twig/doc/tags/if.rst
@@ -37,16 +37,8 @@ You can also use ``not`` to check for values that evaluate to ``false``:
         <p>You are not subscribed to our mailing list.</p>
     {% endif %}
 
-For multiple conditions, ``and`` and ``or`` can be used:
-
-.. code-block:: jinja
-
-    {% if temperature > 18 and temperature < 27 %}
-        <p>It's a nice day for a walk in the park.</p>
-    {% endif %}
-
-For multiple branches ``elseif`` and ``else`` can be used like in PHP. You can
-use more complex ``expressions`` there too:
+For multiple branches ``elseif`` and ``else`` can be used like in PHP. You can use
+more complex ``expressions`` there too:
 
 .. code-block:: jinja
 
diff --git a/core/vendor/twig/twig/doc/tags/macro.rst b/core/vendor/twig/twig/doc/tags/macro.rst
index 60a1567..11c115a 100644
--- a/core/vendor/twig/twig/doc/tags/macro.rst
+++ b/core/vendor/twig/twig/doc/tags/macro.rst
@@ -20,9 +20,6 @@ Macros differs from native PHP functions in a few ways:
 
 * Arguments of a macro are always optional.
 
-* If extra positional arguments are passed to a macro, they end up in the
-  special ``varargs`` variable as a list of values.
-
 But as with PHP functions, macros don't have access to the current template
 variables.
 
diff --git a/core/vendor/twig/twig/doc/tags/spaceless.rst b/core/vendor/twig/twig/doc/tags/spaceless.rst
index b39cb27..12e77b2 100644
--- a/core/vendor/twig/twig/doc/tags/spaceless.rst
+++ b/core/vendor/twig/twig/doc/tags/spaceless.rst
@@ -33,5 +33,5 @@ quirks under some circumstances.
 .. tip::
 
     For more information on whitespace control, read the
-    :ref:`dedicated section <templates-whitespace-control>` of the documentation and learn how
+    :doc:`dedicated<../templates>` section of the documentation and learn how
     you can also use the whitespace control modifier on your tags.
diff --git a/core/vendor/twig/twig/doc/tags/use.rst b/core/vendor/twig/twig/doc/tags/use.rst
index 071b197..a2f3af0 100644
--- a/core/vendor/twig/twig/doc/tags/use.rst
+++ b/core/vendor/twig/twig/doc/tags/use.rst
@@ -74,7 +74,7 @@ is ignored. To avoid name conflicts, you can rename imported blocks:
 
     {% extends "base.html" %}
 
-    {% use "blocks.html" with sidebar as base_sidebar, title as base_title %}
+    {% use "blocks.html" with sidebar as base_sidebar %}
 
     {% block sidebar %}{% endblock %}
     {% block title %}{% endblock %}
diff --git a/core/vendor/twig/twig/doc/templates.rst b/core/vendor/twig/twig/doc/templates.rst
index ebdea9e..7ff7862 100644
--- a/core/vendor/twig/twig/doc/templates.rst
+++ b/core/vendor/twig/twig/doc/templates.rst
@@ -93,7 +93,7 @@ access the variable attribute:
     don't put the braces around them.
 
 If a variable or attribute does not exist, you will receive a ``null`` value
-when the ``strict_variables`` option is set to ``false``; alternatively, if ``strict_variables``
+when the ``strict_variables`` option is set to ``false``; alternatively, if ``strict_variables`` 
 is set, Twig will throw an error (see :ref:`environment options<environment_options>`).
 
 .. sidebar:: Implementation
@@ -124,7 +124,7 @@ Global Variables
 
 The following variables are always available in templates:
 
-* ``_self``: references the current template (deprecated since Twig 1.20);
+* ``_self``: references the current template;
 * ``_context``: references the current context;
 * ``_charset``: references the current charset.
 
@@ -541,9 +541,6 @@ macro call:
         <input type="{{ type }}" name="{{ name }}" value="{{ value|e }}" size="{{ size }}" />
     {% endmacro %}
 
-If extra positional arguments are passed to a macro call, they end up in the
-special ``varargs`` variable as a list of values.
-
 .. _twig-expressions:
 
 Expressions
@@ -672,10 +669,6 @@ You can combine multiple expressions with the following operators:
 
     Twig also support bitwise operators (``b-and``, ``b-xor``, and ``b-or``).
 
-.. note::
-
-    Operators are case sensitive.
-
 Comparisons
 ~~~~~~~~~~~
 
@@ -808,8 +801,6 @@ inserted into the string:
     {{ "foo #{bar} baz" }}
     {{ "foo #{1 + 2} baz" }}
 
-.. _templates-whitespace-control:
-
 Whitespace Control
 ------------------
 
diff --git a/core/vendor/twig/twig/ext/twig/php_twig.h b/core/vendor/twig/twig/ext/twig/php_twig.h
index 11d7be5..9bf6d11 100644
--- a/core/vendor/twig/twig/ext/twig/php_twig.h
+++ b/core/vendor/twig/twig/ext/twig/php_twig.h
@@ -15,7 +15,7 @@
 #ifndef PHP_TWIG_H
 #define PHP_TWIG_H
 
-#define PHP_TWIG_VERSION "1.20.0"
+#define PHP_TWIG_VERSION "1.18.1"
 
 #include "php.h"
 
diff --git a/core/vendor/twig/twig/ext/twig/twig.c b/core/vendor/twig/twig/ext/twig/twig.c
index 92d1add..ae5b147 100644
--- a/core/vendor/twig/twig/ext/twig/twig.c
+++ b/core/vendor/twig/twig/ext/twig/twig.c
@@ -55,7 +55,7 @@ ZEND_BEGIN_ARG_INFO_EX(twig_template_get_attribute_args, ZEND_SEND_BY_VAL, ZEND_
 ZEND_END_ARG_INFO()
 
 #ifndef PHP_FE_END
-#define PHP_FE_END { NULL, NULL, NULL}
+#define PHP_FE_END { NULL, NULL, NULL, 0, 0 }
 #endif
 
 static const zend_function_entry twig_functions[] = {
@@ -609,7 +609,6 @@ static char *TWIG_GET_CLASS_NAME(zval *object TSRMLS_DC)
 
 static int twig_add_method_to_class(void *pDest APPLY_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key)
 {
-	zend_class_entry *ce;
 	zval *retval;
 	char *item;
 	size_t item_len;
@@ -620,23 +619,12 @@ static int twig_add_method_to_class(void *pDest APPLY_TSRMLS_DC, int num_args, v
 		return 0;
 	}
 
-	ce = *va_arg(args, zend_class_entry**);
 	retval = va_arg(args, zval*);
 
 	item_len = strlen(mptr->common.function_name);
 	item = estrndup(mptr->common.function_name, item_len);
 	php_strtolower(item, item_len);
 
-	if (strcmp("getenvironment", item) == 0) {
-		zend_class_entry **twig_template_ce;
-		if (zend_lookup_class("Twig_Template", strlen("Twig_Template"), &twig_template_ce TSRMLS_CC) == FAILURE) {
-			return 0;
-		}
-		if (instanceof_function(ce, *twig_template_ce TSRMLS_CC)) {
-			return 0;
-		}
-	}
-
 	add_assoc_stringl_ex(retval, item, item_len+1, item, item_len, 0);
 
 	return 0;
@@ -682,7 +670,7 @@ static void twig_add_class_to_cache(zval *cache, zval *object, char *class_name
 	array_init(class_methods);
 	array_init(class_properties);
 	// add all methods to self::cache[$class]['methods']
-	zend_hash_apply_with_arguments(&class_ce->function_table APPLY_TSRMLS_CC, twig_add_method_to_class, 2, &class_ce, class_methods);
+	zend_hash_apply_with_arguments(&class_ce->function_table APPLY_TSRMLS_CC, twig_add_method_to_class, 1, class_methods);
 	zend_hash_apply_with_arguments(&class_ce->properties_info APPLY_TSRMLS_CC, twig_add_property_to_class, 2, &class_ce, class_properties);
 
 	add_assoc_zval(class_info, "methods", class_methods);
@@ -791,18 +779,12 @@ PHP_FUNCTION(twig_template_get_attributes)
 				$message = sprintf('Impossible to access a key "%s" on an object of class "%s" that does not implement ArrayAccess interface', $item, get_class($object));
 			} elseif (is_array($object)) {
 				if (empty($object)) {
-					$message = sprintf('Key "%s" does not exist as the array is empty', $arrayItem);
+				    $message = sprintf('Key "%s" does not exist as the array is empty', $arrayItem);
 				} else {
-					$message = sprintf('Key "%s" for array with keys "%s" does not exist', $arrayItem, implode(', ', array_keys($object)));
+				    $message = sprintf('Key "%s" for array with keys "%s" does not exist', $arrayItem, implode(', ', array_keys($object)));
 				}
 			} elseif (Twig_Template::ARRAY_CALL === $type) {
-				if (null === $object) {
-					$message = sprintf('Impossible to access a key ("%s") on a null variable', $item);
-				} else {
-					$message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
-				}
-			} elseif (null === $object) {
-				$message = sprintf('Impossible to access an attribute ("%s") on a null variable', $item);
+				$message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
 			} else {
 				$message = sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
 			}
@@ -825,21 +807,12 @@ PHP_FUNCTION(twig_template_get_attributes)
 			} else {
 				char *type_name = zend_zval_type_name(object);
 				Z_ADDREF_P(object);
-				if (Z_TYPE_P(object) == IS_NULL) {
-					convert_to_string(object);
-					TWIG_RUNTIME_ERROR(template TSRMLS_CC,
-						(strcmp("array", type) == 0)
-							? "Impossible to access a key (\"%s\") on a %s variable"
-							: "Impossible to access an attribute (\"%s\") on a %s variable",
-						item, type_name);
-				} else {
-					convert_to_string(object);
-					TWIG_RUNTIME_ERROR(template TSRMLS_CC,
-						(strcmp("array", type) == 0)
-							? "Impossible to access a key (\"%s\") on a %s variable (\"%s\")"
-							: "Impossible to access an attribute (\"%s\") on a %s variable (\"%s\")",
-						item, type_name, Z_STRVAL_P(object));
-				}
+				convert_to_string(object);
+				TWIG_RUNTIME_ERROR(template TSRMLS_CC,
+					(strcmp("array", type) == 0)
+						? "Impossible to access a key (\"%s\") on a %s variable (\"%s\")"
+						: "Impossible to access an attribute (\"%s\") on a %s variable (\"%s\")",
+					item, type_name, Z_STRVAL_P(object));
 				zval_ptr_dtor(&object);
 			}
 			efree(item);
@@ -863,14 +836,7 @@ PHP_FUNCTION(twig_template_get_attributes)
 		if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
 			return null;
 		}
-
-		if (null === $object) {
-			$message = sprintf('Impossible to invoke a method ("%s") on a null variable', $item);
-		} else {
-			$message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
-		}
-
-		throw new Twig_Error_Runtime($message, -1, $this->getTemplateName());
+		throw new Twig_Error_Runtime(sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s")', $item, gettype($object), $object), -1, $this->getTemplateName());
 	}
 */
 		if (ignoreStrictCheck || !TWIG_CALL_BOOLEAN(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "isStrictVariables" TSRMLS_CC)) {
@@ -880,15 +846,9 @@ PHP_FUNCTION(twig_template_get_attributes)
 
 		type_name = zend_zval_type_name(object);
 		Z_ADDREF_P(object);
-		if (Z_TYPE_P(object) == IS_NULL) {
-			convert_to_string_ex(&object);
+		convert_to_string_ex(&object);
 
-			TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Impossible to invoke a method (\"%s\") on a %s variable", item, type_name);
-		} else {
-			convert_to_string_ex(&object);
-
-			TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Impossible to invoke a method (\"%s\") on a %s variable (\"%s\")", item, type_name, Z_STRVAL_P(object));
-		}
+		TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Impossible to invoke a method (\"%s\") on a %s variable (\"%s\")", item, type_name, Z_STRVAL_P(object));
 
 		zval_ptr_dtor(&object);
 		efree(item);
@@ -910,7 +870,7 @@ PHP_FUNCTION(twig_template_get_attributes)
 
 /*
 	// object property
-	if (Twig_Template::METHOD_CALL !== $type && !$object instanceof Twig_Template) {
+	if (Twig_Template::METHOD_CALL !== $type) {
 		if (isset($object->$item) || array_key_exists((string) $item, $object)) {
 			if ($isDefinedTest) {
 				return true;
@@ -924,7 +884,7 @@ PHP_FUNCTION(twig_template_get_attributes)
 		}
 	}
 */
-	if (strcmp("method", type) != 0 && !TWIG_INSTANCE_OF_USERLAND(object, "Twig_Template" TSRMLS_CC)) {
+	if (strcmp("method", type) != 0) {
 		zval *tmp_properties, *tmp_item;
 
 		tmp_properties = TWIG_GET_ARRAY_ELEMENT(tmp_class, "properties", strlen("properties") TSRMLS_CC);
@@ -951,23 +911,7 @@ PHP_FUNCTION(twig_template_get_attributes)
 /*
 	// object method
 	if (!isset(self::$cache[$class]['methods'])) {
-		if ($object instanceof self) {
-			$ref = new ReflectionClass($class);
-			$methods = array();
-
-			foreach ($ref->getMethods(ReflectionMethod::IS_PUBLIC) as $refMethod) {
-				$methodName = strtolower($refMethod->name);
-
-				// Accessing the environment from templates is forbidden to prevent untrusted changes to the environment
-				if ('getenvironment' !== $methodName) {
-					$methods[$methodName] = true;
-				}
-			}
-
-			self::$cache[$class]['methods'] = $methods;
-        } else {
-			self::$cache[$class]['methods'] = array_change_key_case(array_flip(get_class_methods($object)));
-        }
+		self::$cache[$class]['methods'] = array_change_key_case(array_flip(get_class_methods($object)));
 	}
 
 	$call = false;
diff --git a/core/vendor/twig/twig/lib/Twig/BaseNodeVisitor.php b/core/vendor/twig/twig/lib/Twig/BaseNodeVisitor.php
deleted file mode 100644
index bb865d6..0000000
--- a/core/vendor/twig/twig/lib/Twig/BaseNodeVisitor.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/**
- * Twig_BaseNodeVisitor can be used to make node visitors compatible with Twig 1.x and 2.x.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-abstract class Twig_BaseNodeVisitor implements Twig_NodeVisitorInterface
-{
-    /**
-     * {@inheritdoc}
-     */
-    final public function enterNode(Twig_NodeInterface $node, Twig_Environment $env)
-    {
-        if (!$node instanceof Twig_Node) {
-            throw new LogicException('Twig_BaseNodeVisitor only supports Twig_Node instances.');
-        }
-
-        return $this->doEnterNode($node, $env);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    final public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env)
-    {
-        if (!$node instanceof Twig_Node) {
-            throw new LogicException('Twig_BaseNodeVisitor only supports Twig_Node instances.');
-        }
-
-        return $this->doLeaveNode($node, $env);
-    }
-
-    /**
-     * Called before child nodes are visited.
-     *
-     * @param Twig_Node         $node The node to visit
-     * @param Twig_Environment  $env  The Twig environment instance
-     *
-     * @return Twig_Node The modified node
-     */
-    abstract protected function doEnterNode(Twig_Node $node, Twig_Environment $env);
-
-    /**
-     * Called after child nodes are visited.
-     *
-     * @param Twig_Node        $node The node to visit
-     * @param Twig_Environment $env  The Twig environment instance
-     *
-     * @return Twig_Node|false The modified node or false if the node must be removed
-     */
-    abstract protected function doLeaveNode(Twig_Node $node, Twig_Environment $env);
-}
diff --git a/core/vendor/twig/twig/lib/Twig/Environment.php b/core/vendor/twig/twig/lib/Twig/Environment.php
index 3ac9124..9acc31a 100644
--- a/core/vendor/twig/twig/lib/Twig/Environment.php
+++ b/core/vendor/twig/twig/lib/Twig/Environment.php
@@ -16,7 +16,7 @@
  */
 class Twig_Environment
 {
-    const VERSION = '1.20.0';
+    const VERSION = '1.18.1';
 
     protected $charset;
     protected $loader;
@@ -89,21 +89,21 @@ public function __construct(Twig_LoaderInterface $loader = null, $options = arra
         }
 
         $options = array_merge(array(
-            'debug' => false,
-            'charset' => 'UTF-8',
+            'debug'               => false,
+            'charset'             => 'UTF-8',
             'base_template_class' => 'Twig_Template',
-            'strict_variables' => false,
-            'autoescape' => 'html',
-            'cache' => false,
-            'auto_reload' => null,
-            'optimizations' => -1,
+            'strict_variables'    => false,
+            'autoescape'          => 'html',
+            'cache'               => false,
+            'auto_reload'         => null,
+            'optimizations'       => -1,
         ), $options);
 
-        $this->debug = (bool) $options['debug'];
-        $this->charset = strtoupper($options['charset']);
-        $this->baseTemplateClass = $options['base_template_class'];
-        $this->autoReload = null === $options['auto_reload'] ? $this->debug : (bool) $options['auto_reload'];
-        $this->strictVariables = (bool) $options['strict_variables'];
+        $this->debug              = (bool) $options['debug'];
+        $this->charset            = strtoupper($options['charset']);
+        $this->baseTemplateClass  = $options['base_template_class'];
+        $this->autoReload         = null === $options['auto_reload'] ? $this->debug : (bool) $options['auto_reload'];
+        $this->strictVariables    = (bool) $options['strict_variables'];
         $this->runtimeInitialized = false;
         $this->setCache($options['cache']);
         $this->functionCallbacks = array();
@@ -250,7 +250,7 @@ public function getCacheFilename($name)
 
         $class = substr($this->getTemplateClass($name), strlen($this->templateClassPrefix));
 
-        return $this->getCache().'/'.$class[0].'/'.$class[1].'/'.$class.'.php';
+        return $this->getCache().'/'.substr($class, 0, 2).'/'.substr($class, 2, 2).'/'.substr($class, 4).'.php';
     }
 
     /**
@@ -351,7 +351,8 @@ public function loadTemplate($name, $index = null)
      *
      * This method should not be used as a generic way to load templates.
      *
-     * @param string $template The template name
+     * @param string $name  The template name
+     * @param int    $index The index if it is an embedded template
      *
      * @return Twig_Template A template instance representing the given template name
      *
@@ -443,8 +444,6 @@ public function resolveTemplate($names)
 
     /**
      * Clears the internal template cache.
-     *
-     * @deprecated since 1.18.3 (to be removed in 2.0)
      */
     public function clearTemplateCache()
     {
@@ -484,7 +483,7 @@ public function getLexer()
     /**
      * Sets the Lexer instance.
      *
-     * @param Twig_LexerInterface $lexer A Twig_LexerInterface instance
+     * @param Twig_LexerInterface A Twig_LexerInterface instance
      */
     public function setLexer(Twig_LexerInterface $lexer)
     {
@@ -523,7 +522,7 @@ public function getParser()
     /**
      * Sets the Parser instance.
      *
-     * @param Twig_ParserInterface $parser A Twig_ParserInterface instance
+     * @param Twig_ParserInterface A Twig_ParserInterface instance
      */
     public function setParser(Twig_ParserInterface $parser)
     {
@@ -1272,11 +1271,11 @@ protected function writeCacheFile($file, $content)
             if (false === @mkdir($dir, 0777, true)) {
                 clearstatcache(false, $dir);
                 if (!is_dir($dir)) {
-                    throw new RuntimeException(sprintf('Unable to create the cache directory (%s).', $dir));
+                    throw new RuntimeException(sprintf("Unable to create the cache directory (%s).", $dir));
                 }
             }
         } elseif (!is_writable($dir)) {
-            throw new RuntimeException(sprintf('Unable to write in the cache directory (%s).', $dir));
+            throw new RuntimeException(sprintf("Unable to write in the cache directory (%s).", $dir));
         }
 
         $tmpFile = tempnam($dir, basename($file));
diff --git a/core/vendor/twig/twig/lib/Twig/ExpressionParser.php b/core/vendor/twig/twig/lib/Twig/ExpressionParser.php
index 135958a..fa9fa35 100644
--- a/core/vendor/twig/twig/lib/Twig/ExpressionParser.php
+++ b/core/vendor/twig/twig/lib/Twig/ExpressionParser.php
@@ -315,7 +315,7 @@ public function getFunctionNode($name, $line)
     {
         switch ($name) {
             case 'parent':
-                $this->parseArguments();
+                $args = $this->parseArguments();
                 if (!count($this->parser->getBlockStack())) {
                     throw new Twig_Error_Syntax('Calling "parent" outside a block is forbidden', $line, $this->parser->getFilename());
                 }
@@ -387,13 +387,7 @@ public function parseSubscriptExpression($node)
                     throw new Twig_Error_Syntax(sprintf('Dynamic macro names are not supported (called on "%s")', $node->getAttribute('name')), $token->getLine(), $this->parser->getFilename());
                 }
 
-                $name = $arg->getAttribute('value');
-
-                if ($this->parser->isReservedMacroName($name)) {
-                    throw new Twig_Error_Syntax(sprintf('"%s" cannot be called as macro as it is a reserved keyword', $name), $token->getLine(), $this->parser->getFilename());
-                }
-
-                $node = new Twig_Node_Expression_MethodCall($node, 'get'.$name, $arguments, $lineno);
+                $node = new Twig_Node_Expression_MethodCall($node, 'get'.$arg->getAttribute('value'), $arguments, $lineno);
                 $node->setAttribute('safe', true);
 
                 return $node;
@@ -474,10 +468,6 @@ public function parseFilterExpressionRaw($node, $tag = null)
      *
      * @param bool $namedArguments Whether to allow named arguments or not
      * @param bool $definition     Whether we are parsing arguments for a function definition
-     *
-     * @return Twig_Node
-     *
-     * @throws Twig_Error_Syntax
      */
     public function parseArguments($namedArguments = false, $definition = false)
     {
diff --git a/core/vendor/twig/twig/lib/Twig/Extension/Core.php b/core/vendor/twig/twig/lib/Twig/Extension/Core.php
index dd69a05..346006d 100644
--- a/core/vendor/twig/twig/lib/Twig/Extension/Core.php
+++ b/core/vendor/twig/twig/lib/Twig/Extension/Core.php
@@ -255,37 +255,37 @@ public function getOperators()
         return array(
             array(
                 'not' => array('precedence' => 50, 'class' => 'Twig_Node_Expression_Unary_Not'),
-                '-' => array('precedence' => 500, 'class' => 'Twig_Node_Expression_Unary_Neg'),
-                '+' => array('precedence' => 500, 'class' => 'Twig_Node_Expression_Unary_Pos'),
+                '-'   => array('precedence' => 500, 'class' => 'Twig_Node_Expression_Unary_Neg'),
+                '+'   => array('precedence' => 500, 'class' => 'Twig_Node_Expression_Unary_Pos'),
             ),
             array(
-                'or' => array('precedence' => 10, 'class' => 'Twig_Node_Expression_Binary_Or', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'and' => array('precedence' => 15, 'class' => 'Twig_Node_Expression_Binary_And', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'b-or' => array('precedence' => 16, 'class' => 'Twig_Node_Expression_Binary_BitwiseOr', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'b-xor' => array('precedence' => 17, 'class' => 'Twig_Node_Expression_Binary_BitwiseXor', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'b-and' => array('precedence' => 18, 'class' => 'Twig_Node_Expression_Binary_BitwiseAnd', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '==' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Equal', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '!=' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_NotEqual', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '<' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Less', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '>' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Greater', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '>=' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_GreaterEqual', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '<=' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_LessEqual', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'not in' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_NotIn', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'in' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_In', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'matches' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Matches', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                'or'          => array('precedence' => 10, 'class' => 'Twig_Node_Expression_Binary_Or', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                'and'         => array('precedence' => 15, 'class' => 'Twig_Node_Expression_Binary_And', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                'b-or'        => array('precedence' => 16, 'class' => 'Twig_Node_Expression_Binary_BitwiseOr', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                'b-xor'       => array('precedence' => 17, 'class' => 'Twig_Node_Expression_Binary_BitwiseXor', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                'b-and'       => array('precedence' => 18, 'class' => 'Twig_Node_Expression_Binary_BitwiseAnd', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                '=='          => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Equal', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                '!='          => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_NotEqual', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                '<'           => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Less', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                '>'           => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Greater', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                '>='          => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_GreaterEqual', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                '<='          => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_LessEqual', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                'not in'      => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_NotIn', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                'in'          => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_In', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                'matches'     => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Matches', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
                 'starts with' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_StartsWith', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'ends with' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_EndsWith', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '..' => array('precedence' => 25, 'class' => 'Twig_Node_Expression_Binary_Range', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '+' => array('precedence' => 30, 'class' => 'Twig_Node_Expression_Binary_Add', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '-' => array('precedence' => 30, 'class' => 'Twig_Node_Expression_Binary_Sub', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '~' => array('precedence' => 40, 'class' => 'Twig_Node_Expression_Binary_Concat', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '*' => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_Mul', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '/' => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_Div', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '//' => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_FloorDiv', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '%' => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_Mod', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'is' => array('precedence' => 100, 'callable' => array($this, 'parseTestExpression'), 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                'is not' => array('precedence' => 100, 'callable' => array($this, 'parseNotTestExpression'), 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
-                '**' => array('precedence' => 200, 'class' => 'Twig_Node_Expression_Binary_Power', 'associativity' => Twig_ExpressionParser::OPERATOR_RIGHT),
+                'ends with'   => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_EndsWith', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                '..'          => array('precedence' => 25, 'class' => 'Twig_Node_Expression_Binary_Range', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                '+'           => array('precedence' => 30, 'class' => 'Twig_Node_Expression_Binary_Add', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                '-'           => array('precedence' => 30, 'class' => 'Twig_Node_Expression_Binary_Sub', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                '~'           => array('precedence' => 40, 'class' => 'Twig_Node_Expression_Binary_Concat', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                '*'           => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_Mul', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                '/'           => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_Div', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                '//'          => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_FloorDiv', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                '%'           => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_Mod', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                'is'          => array('precedence' => 100, 'callable' => array($this, 'parseTestExpression'), 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                'is not'      => array('precedence' => 100, 'callable' => array($this, 'parseNotTestExpression'), 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
+                '**'          => array('precedence' => 200, 'class' => 'Twig_Node_Expression_Binary_Power', 'associativity' => Twig_ExpressionParser::OPERATOR_RIGHT),
             ),
         );
     }
@@ -382,7 +382,7 @@ function twig_cycle($values, $position)
  * Returns a random value depending on the supplied parameter type:
  * - a random item from a Traversable or array
  * - a random character from a string
- * - a random integer between 0 and the integer parameter.
+ * - a random integer between 0 and the integer parameter
  *
  * @param Twig_Environment                 $env    A Twig_Environment instance
  * @param Traversable|array|int|string     $values The values to pick a random item from
@@ -466,7 +466,7 @@ function twig_date_format_filter(Twig_Environment $env, $date, $format = null, $
 }
 
 /**
- * Returns a new date object modified.
+ * Returns a new date object modified
  *
  * <pre>
  *   {{ post.published_at|date_modify("-1day")|date("m/d/Y") }}
@@ -921,9 +921,7 @@ function twig_reverse_filter(Twig_Environment $env, $item, $preserveKeys = false
 /**
  * Sorts an array.
  *
- * @param array $array
- *
- * @return array
+ * @param array $array An array
  */
 function twig_sort_filter($array)
 {
@@ -954,8 +952,6 @@ function twig_in_filter($value, $compare)
  * @param string           $strategy   The escaping strategy
  * @param string           $charset    The charset
  * @param bool             $autoescape Whether the function is called by the auto-escaping feature (true) or by the developer (false)
- *
- * @return string
  */
 function twig_escape_filter(Twig_Environment $env, $string, $strategy = 'html', $charset = null, $autoescape = false)
 {
@@ -1190,7 +1186,7 @@ function _twig_escape_html_attr_callback($matches)
     $chr = $matches[0];
     $ord = ord($chr);
 
-    /*
+    /**
      * The following replaces characters undefined in HTML with the
      * hex entity for the Unicode replacement character.
      */
@@ -1198,7 +1194,7 @@ function _twig_escape_html_attr_callback($matches)
         return '&#xFFFD;';
     }
 
-    /*
+    /**
      * Check if the current character to escape has a name entity we should
      * replace it with while grabbing the hex value of the character.
      */
@@ -1214,7 +1210,7 @@ function _twig_escape_html_attr_callback($matches)
         return sprintf('&%s;', $entityMap[$int]);
     }
 
-    /*
+    /**
      * Per OWASP recommendations, we'll use hex entities for any other
      * characters where a named entity does not exist.
      */
@@ -1402,13 +1398,11 @@ function twig_test_iterable($value)
 /**
  * Renders a template.
  *
- * @param Twig_Environment $env
- * @param array            $context
- * @param string|array     $template      The template to render or an array of templates to try consecutively
- * @param array            $variables     The variables to pass to the template
- * @param bool             $withContext
- * @param bool             $ignoreMissing Whether to ignore missing templates or not
- * @param bool             $sandboxed     Whether to sandbox the template or not
+ * @param string|array $template       The template to render or an array of templates to try consecutively
+ * @param array        $variables      The variables to pass to the template
+ * @param bool         $with_context   Whether to pass the current context variables or not
+ * @param bool         $ignore_missing Whether to ignore missing templates or not
+ * @param bool         $sandboxed      Whether to sandbox the template or not
  *
  * @return string The rendered template
  */
@@ -1427,15 +1421,10 @@ function twig_include(Twig_Environment $env, $context, $template, $variables = a
         }
     }
 
-    $result = null;
     try {
-        $result = $env->resolveTemplate($template)->render($variables);
+        return $env->resolveTemplate($template)->render($variables);
     } catch (Twig_Error_Loader $e) {
         if (!$ignoreMissing) {
-            if ($isSandboxed && !$alreadySandboxed) {
-                $sandbox->disableSandbox();
-            }
-
             throw $e;
         }
     }
@@ -1443,27 +1432,18 @@ function twig_include(Twig_Environment $env, $context, $template, $variables = a
     if ($isSandboxed && !$alreadySandboxed) {
         $sandbox->disableSandbox();
     }
-
-    return $result;
 }
 
 /**
  * Returns a template content without rendering it.
  *
- * @param string $name          The template name
- * @param bool   $ignoreMissing Whether to ignore missing templates or not
+ * @param string $name The template name
  *
  * @return string The template source
  */
-function twig_source(Twig_Environment $env, $name, $ignoreMissing = false)
+function twig_source(Twig_Environment $env, $name)
 {
-    try {
-        return $env->getLoader()->getSource($name);
-    } catch (Twig_Error_Loader $e) {
-        if (!$ignoreMissing) {
-            throw $e;
-        }
-    }
+    return $env->getLoader()->getSource($name);
 }
 
 /**
@@ -1502,7 +1482,7 @@ function twig_array_batch($items, $size, $fill = null)
 
     $result = array_chunk($items, $size, true);
 
-    if (null !== $fill && !empty($result)) {
+    if (null !== $fill) {
         $last = count($result) - 1;
         if ($fillCount = $size - count($result[$last])) {
             $result[$last] = array_merge(
diff --git a/core/vendor/twig/twig/lib/Twig/Extension/Debug.php b/core/vendor/twig/twig/lib/Twig/Extension/Debug.php
index 86d07c2..e3a85bf 100644
--- a/core/vendor/twig/twig/lib/Twig/Extension/Debug.php
+++ b/core/vendor/twig/twig/lib/Twig/Extension/Debug.php
@@ -62,7 +62,7 @@ function twig_var_dump(Twig_Environment $env, $context)
 
         var_dump($vars);
     } else {
-        for ($i = 2; $i < $count; ++$i) {
+        for ($i = 2; $i < $count; $i++) {
             var_dump(func_get_arg($i));
         }
     }
diff --git a/core/vendor/twig/twig/lib/Twig/Extension/Escaper.php b/core/vendor/twig/twig/lib/Twig/Extension/Escaper.php
index cf2020e..0edf563 100644
--- a/core/vendor/twig/twig/lib/Twig/Extension/Escaper.php
+++ b/core/vendor/twig/twig/lib/Twig/Extension/Escaper.php
@@ -104,8 +104,6 @@ public function getName()
  * Marks a variable as being safe.
  *
  * @param string $string A PHP variable
- *
- * @return string
  */
 function twig_raw_filter($string)
 {
diff --git a/core/vendor/twig/twig/lib/Twig/Extension/Sandbox.php b/core/vendor/twig/twig/lib/Twig/Extension/Sandbox.php
index 3593e9e..c58259c 100644
--- a/core/vendor/twig/twig/lib/Twig/Extension/Sandbox.php
+++ b/core/vendor/twig/twig/lib/Twig/Extension/Sandbox.php
@@ -16,7 +16,7 @@ class Twig_Extension_Sandbox extends Twig_Extension
 
     public function __construct(Twig_Sandbox_SecurityPolicyInterface $policy, $sandboxed = false)
     {
-        $this->policy = $policy;
+        $this->policy            = $policy;
         $this->sandboxedGlobally = $sandboxed;
     }
 
diff --git a/core/vendor/twig/twig/lib/Twig/Filter.php b/core/vendor/twig/twig/lib/Twig/Filter.php
index a6e923d..5cfbb66 100644
--- a/core/vendor/twig/twig/lib/Twig/Filter.php
+++ b/core/vendor/twig/twig/lib/Twig/Filter.php
@@ -15,7 +15,6 @@
  * Use Twig_SimpleFilter instead.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 abstract class Twig_Filter implements Twig_FilterInterface, Twig_FilterCallableInterface
@@ -27,10 +26,10 @@ public function __construct(array $options = array())
     {
         $this->options = array_merge(array(
             'needs_environment' => false,
-            'needs_context' => false,
-            'pre_escape' => null,
-            'preserves_safety' => null,
-            'callable' => null,
+            'needs_context'     => false,
+            'pre_escape'        => null,
+            'preserves_safety'  => null,
+            'callable'          => null,
         ), $options);
     }
 
diff --git a/core/vendor/twig/twig/lib/Twig/Filter/Function.php b/core/vendor/twig/twig/lib/Twig/Filter/Function.php
index 45c14c7..ad374a5 100644
--- a/core/vendor/twig/twig/lib/Twig/Filter/Function.php
+++ b/core/vendor/twig/twig/lib/Twig/Filter/Function.php
@@ -15,7 +15,6 @@
  * Use Twig_SimpleFilter instead.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 class Twig_Filter_Function extends Twig_Filter
diff --git a/core/vendor/twig/twig/lib/Twig/Filter/Method.php b/core/vendor/twig/twig/lib/Twig/Filter/Method.php
index f32435f..63c8c3b 100644
--- a/core/vendor/twig/twig/lib/Twig/Filter/Method.php
+++ b/core/vendor/twig/twig/lib/Twig/Filter/Method.php
@@ -15,7 +15,6 @@
  * Use Twig_SimpleFilter instead.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 class Twig_Filter_Method extends Twig_Filter
diff --git a/core/vendor/twig/twig/lib/Twig/Filter/Node.php b/core/vendor/twig/twig/lib/Twig/Filter/Node.php
index efbcc29..8744c5e 100644
--- a/core/vendor/twig/twig/lib/Twig/Filter/Node.php
+++ b/core/vendor/twig/twig/lib/Twig/Filter/Node.php
@@ -15,7 +15,6 @@
  * Use Twig_SimpleFilter instead.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 class Twig_Filter_Node extends Twig_Filter
diff --git a/core/vendor/twig/twig/lib/Twig/FilterCallableInterface.php b/core/vendor/twig/twig/lib/Twig/FilterCallableInterface.php
index 5679861..145534d 100644
--- a/core/vendor/twig/twig/lib/Twig/FilterCallableInterface.php
+++ b/core/vendor/twig/twig/lib/Twig/FilterCallableInterface.php
@@ -15,7 +15,6 @@
  * Use Twig_SimpleFilter instead.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 interface Twig_FilterCallableInterface
diff --git a/core/vendor/twig/twig/lib/Twig/FilterInterface.php b/core/vendor/twig/twig/lib/Twig/FilterInterface.php
index 6b0be0e..5319ecc 100644
--- a/core/vendor/twig/twig/lib/Twig/FilterInterface.php
+++ b/core/vendor/twig/twig/lib/Twig/FilterInterface.php
@@ -15,7 +15,6 @@
  * Use Twig_SimpleFilter instead.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 interface Twig_FilterInterface
diff --git a/core/vendor/twig/twig/lib/Twig/Function.php b/core/vendor/twig/twig/lib/Twig/Function.php
index 0f6ac97..b5ffb2b 100644
--- a/core/vendor/twig/twig/lib/Twig/Function.php
+++ b/core/vendor/twig/twig/lib/Twig/Function.php
@@ -15,7 +15,6 @@
  * Use Twig_SimpleFunction instead.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 abstract class Twig_Function implements Twig_FunctionInterface, Twig_FunctionCallableInterface
@@ -27,8 +26,8 @@ public function __construct(array $options = array())
     {
         $this->options = array_merge(array(
             'needs_environment' => false,
-            'needs_context' => false,
-            'callable' => null,
+            'needs_context'     => false,
+            'callable'          => null,
         ), $options);
     }
 
diff --git a/core/vendor/twig/twig/lib/Twig/Function/Function.php b/core/vendor/twig/twig/lib/Twig/Function/Function.php
index e7f3845..d1e1b96 100644
--- a/core/vendor/twig/twig/lib/Twig/Function/Function.php
+++ b/core/vendor/twig/twig/lib/Twig/Function/Function.php
@@ -16,7 +16,6 @@
  * Use Twig_SimpleFunction instead.
  *
  * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 class Twig_Function_Function extends Twig_Function
diff --git a/core/vendor/twig/twig/lib/Twig/Function/Method.php b/core/vendor/twig/twig/lib/Twig/Function/Method.php
index 17a7bd8..67039a9 100644
--- a/core/vendor/twig/twig/lib/Twig/Function/Method.php
+++ b/core/vendor/twig/twig/lib/Twig/Function/Method.php
@@ -16,7 +16,6 @@
  * Use Twig_SimpleFunction instead.
  *
  * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 class Twig_Function_Method extends Twig_Function
diff --git a/core/vendor/twig/twig/lib/Twig/Function/Node.php b/core/vendor/twig/twig/lib/Twig/Function/Node.php
index 550a379..06a0d0d 100644
--- a/core/vendor/twig/twig/lib/Twig/Function/Node.php
+++ b/core/vendor/twig/twig/lib/Twig/Function/Node.php
@@ -15,7 +15,6 @@
  * Use Twig_SimpleFunction instead.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 class Twig_Function_Node extends Twig_Function
diff --git a/core/vendor/twig/twig/lib/Twig/FunctionCallableInterface.php b/core/vendor/twig/twig/lib/Twig/FunctionCallableInterface.php
index 87d795e..0aab4f5 100644
--- a/core/vendor/twig/twig/lib/Twig/FunctionCallableInterface.php
+++ b/core/vendor/twig/twig/lib/Twig/FunctionCallableInterface.php
@@ -15,7 +15,6 @@
  * Use Twig_SimpleFunction instead.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 interface Twig_FunctionCallableInterface
diff --git a/core/vendor/twig/twig/lib/Twig/FunctionInterface.php b/core/vendor/twig/twig/lib/Twig/FunctionInterface.php
index f449234..67f4f89 100644
--- a/core/vendor/twig/twig/lib/Twig/FunctionInterface.php
+++ b/core/vendor/twig/twig/lib/Twig/FunctionInterface.php
@@ -16,7 +16,6 @@
  * Use Twig_SimpleFunction instead.
  *
  * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 interface Twig_FunctionInterface
diff --git a/core/vendor/twig/twig/lib/Twig/Lexer.php b/core/vendor/twig/twig/lib/Twig/Lexer.php
index d03a1bf..19380b5 100644
--- a/core/vendor/twig/twig/lib/Twig/Lexer.php
+++ b/core/vendor/twig/twig/lib/Twig/Lexer.php
@@ -33,42 +33,42 @@ class Twig_Lexer implements Twig_LexerInterface
     protected $positions;
     protected $currentVarBlockLine;
 
-    const STATE_DATA = 0;
-    const STATE_BLOCK = 1;
-    const STATE_VAR = 2;
-    const STATE_STRING = 3;
-    const STATE_INTERPOLATION = 4;
-
-    const REGEX_NAME = '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A';
-    const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?/A';
-    const REGEX_STRING = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As';
+    const STATE_DATA            = 0;
+    const STATE_BLOCK           = 1;
+    const STATE_VAR             = 2;
+    const STATE_STRING          = 3;
+    const STATE_INTERPOLATION   = 4;
+
+    const REGEX_NAME            = '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A';
+    const REGEX_NUMBER          = '/[0-9]+(?:\.[0-9]+)?/A';
+    const REGEX_STRING          = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As';
     const REGEX_DQ_STRING_DELIM = '/"/A';
-    const REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As';
-    const PUNCTUATION = '()[]{}?:.,|';
+    const REGEX_DQ_STRING_PART  = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As';
+    const PUNCTUATION           = '()[]{}?:.,|';
 
     public function __construct(Twig_Environment $env, array $options = array())
     {
         $this->env = $env;
 
         $this->options = array_merge(array(
-            'tag_comment' => array('{#', '#}'),
-            'tag_block' => array('{%', '%}'),
-            'tag_variable' => array('{{', '}}'),
+            'tag_comment'     => array('{#', '#}'),
+            'tag_block'       => array('{%', '%}'),
+            'tag_variable'    => array('{{', '}}'),
             'whitespace_trim' => '-',
-            'interpolation' => array('#{', '}'),
+            'interpolation'   => array('#{', '}'),
         ), $options);
 
         $this->regexes = array(
-            'lex_var' => '/\s*'.preg_quote($this->options['whitespace_trim'].$this->options['tag_variable'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_variable'][1], '/').'/A',
-            'lex_block' => '/\s*(?:'.preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_block'][1], '/').')\n?/A',
-            'lex_raw_data' => '/('.preg_quote($this->options['tag_block'][0].$this->options['whitespace_trim'], '/').'|'.preg_quote($this->options['tag_block'][0], '/').')\s*(?:end%s)\s*(?:'.preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_block'][1], '/').')/s',
-            'operator' => $this->getOperatorRegex(),
-            'lex_comment' => '/(?:'.preg_quote($this->options['whitespace_trim'], '/').preg_quote($this->options['tag_comment'][1], '/').'\s*|'.preg_quote($this->options['tag_comment'][1], '/').')\n?/s',
-            'lex_block_raw' => '/\s*(raw|verbatim)\s*(?:'.preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_block'][1], '/').')/As',
-            'lex_block_line' => '/\s*line\s+(\d+)\s*'.preg_quote($this->options['tag_block'][1], '/').'/As',
-            'lex_tokens_start' => '/('.preg_quote($this->options['tag_variable'][0], '/').'|'.preg_quote($this->options['tag_block'][0], '/').'|'.preg_quote($this->options['tag_comment'][0], '/').')('.preg_quote($this->options['whitespace_trim'], '/').')?/s',
+            'lex_var'             => '/\s*'.preg_quote($this->options['whitespace_trim'].$this->options['tag_variable'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_variable'][1], '/').'/A',
+            'lex_block'           => '/\s*(?:'.preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_block'][1], '/').')\n?/A',
+            'lex_raw_data'        => '/('.preg_quote($this->options['tag_block'][0].$this->options['whitespace_trim'], '/').'|'.preg_quote($this->options['tag_block'][0], '/').')\s*(?:end%s)\s*(?:'.preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_block'][1], '/').')/s',
+            'operator'            => $this->getOperatorRegex(),
+            'lex_comment'         => '/(?:'.preg_quote($this->options['whitespace_trim'], '/').preg_quote($this->options['tag_comment'][1], '/').'\s*|'.preg_quote($this->options['tag_comment'][1], '/').')\n?/s',
+            'lex_block_raw'       => '/\s*(raw|verbatim)\s*(?:'.preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_block'][1], '/').')/As',
+            'lex_block_line'      => '/\s*line\s+(\d+)\s*'.preg_quote($this->options['tag_block'][1], '/').'/As',
+            'lex_tokens_start'    => '/('.preg_quote($this->options['tag_variable'][0], '/').'|'.preg_quote($this->options['tag_block'][0], '/').'|'.preg_quote($this->options['tag_comment'][0], '/').')('.preg_quote($this->options['whitespace_trim'], '/').')?/s',
             'interpolation_start' => '/'.preg_quote($this->options['interpolation'][0], '/').'\s*/A',
-            'interpolation_end' => '/\s*'.preg_quote($this->options['interpolation'][1], '/').'/A',
+            'interpolation_end'   => '/\s*'.preg_quote($this->options['interpolation'][1], '/').'/A',
         );
     }
 
diff --git a/core/vendor/twig/twig/lib/Twig/LoaderInterface.php b/core/vendor/twig/twig/lib/Twig/LoaderInterface.php
index 544ea4e..b87058e 100644
--- a/core/vendor/twig/twig/lib/Twig/LoaderInterface.php
+++ b/core/vendor/twig/twig/lib/Twig/LoaderInterface.php
@@ -41,9 +41,8 @@ public function getCacheKey($name);
     /**
      * Returns true if the template is still fresh.
      *
-     * @param string $name The template name
-     * @param int    $time Timestamp of the last modification time of the
-     *                     cached template
+     * @param string    $name The template name
+     * @param timestamp $time The last modification time of the cached template
      *
      * @return bool true if the template is fresh, false otherwise
      *
diff --git a/core/vendor/twig/twig/lib/Twig/Node.php b/core/vendor/twig/twig/lib/Twig/Node.php
index 1c78e7b..515d81b 100644
--- a/core/vendor/twig/twig/lib/Twig/Node.php
+++ b/core/vendor/twig/twig/lib/Twig/Node.php
@@ -122,7 +122,7 @@ public function getNodeTag()
     /**
      * Returns true if the attribute is defined.
      *
-     * @param string $name The attribute name
+     * @param  string  The attribute name
      *
      * @return bool true if the attribute is defined, false otherwise
      */
@@ -132,11 +132,11 @@ public function hasAttribute($name)
     }
 
     /**
-     * Gets an attribute value by name.
+     * Gets an attribute.
      *
-     * @param string $name
+     * @param  string The attribute name
      *
-     * @return mixed
+     * @return mixed The attribute value
      */
     public function getAttribute($name)
     {
@@ -148,10 +148,10 @@ public function getAttribute($name)
     }
 
     /**
-     * Sets an attribute by name to a value.
+     * Sets an attribute.
      *
-     * @param string $name
-     * @param mixed  $value
+     * @param string The attribute name
+     * @param mixed  The attribute value
      */
     public function setAttribute($name, $value)
     {
@@ -159,9 +159,9 @@ public function setAttribute($name, $value)
     }
 
     /**
-     * Removes an attribute by name.
+     * Removes an attribute.
      *
-     * @param string $name
+     * @param string The attribute name
      */
     public function removeAttribute($name)
     {
@@ -169,11 +169,11 @@ public function removeAttribute($name)
     }
 
     /**
-     * Returns true if the node with the given name exists.
+     * Returns true if the node with the given identifier exists.
      *
-     * @param string $name
+     * @param  string  The node name
      *
-     * @return bool
+     * @return bool true if the node with the given name exists, false otherwise
      */
     public function hasNode($name)
     {
@@ -183,9 +183,9 @@ public function hasNode($name)
     /**
      * Gets a node by name.
      *
-     * @param string $name
+     * @param  string The node name
      *
-     * @return Twig_Node
+     * @return Twig_Node A Twig_Node instance
      */
     public function getNode($name)
     {
@@ -199,8 +199,8 @@ public function getNode($name)
     /**
      * Sets a node.
      *
-     * @param string    $name
-     * @param Twig_Node $node
+     * @param string    The node name
+     * @param Twig_Node A Twig_Node instance
      */
     public function setNode($name, $node = null)
     {
@@ -210,7 +210,7 @@ public function setNode($name, $node = null)
     /**
      * Removes a node by name.
      *
-     * @param string $name
+     * @param string The node name
      */
     public function removeNode($name)
     {
diff --git a/core/vendor/twig/twig/lib/Twig/Node/CheckSecurity.php b/core/vendor/twig/twig/lib/Twig/Node/CheckSecurity.php
index b4a436a..3040b76 100644
--- a/core/vendor/twig/twig/lib/Twig/Node/CheckSecurity.php
+++ b/core/vendor/twig/twig/lib/Twig/Node/CheckSecurity.php
@@ -41,9 +41,9 @@ public function compile(Twig_Compiler $compiler)
         }
 
         $compiler
-            ->write('$tags = ')->repr(array_filter($tags))->raw(";\n")
-            ->write('$filters = ')->repr(array_filter($filters))->raw(";\n")
-            ->write('$functions = ')->repr(array_filter($functions))->raw(";\n\n")
+            ->write("\$tags = ")->repr(array_filter($tags))->raw(";\n")
+            ->write("\$filters = ")->repr(array_filter($filters))->raw(";\n")
+            ->write("\$functions = ")->repr(array_filter($functions))->raw(";\n\n")
             ->write("try {\n")
             ->indent()
             ->write("\$this->env->getExtension('sandbox')->checkSecurity(\n")
diff --git a/core/vendor/twig/twig/lib/Twig/Node/Embed.php b/core/vendor/twig/twig/lib/Twig/Node/Embed.php
index a213040..c54d2cc 100644
--- a/core/vendor/twig/twig/lib/Twig/Node/Embed.php
+++ b/core/vendor/twig/twig/lib/Twig/Node/Embed.php
@@ -28,7 +28,7 @@ public function __construct($filename, $index, Twig_Node_Expression $variables =
     protected function addGetTemplate(Twig_Compiler $compiler)
     {
         $compiler
-            ->write('$this->loadTemplate(')
+            ->write("\$this->loadTemplate(")
             ->string($this->getAttribute('filename'))
             ->raw(', ')
             ->repr($compiler->getFilename())
@@ -36,7 +36,7 @@ protected function addGetTemplate(Twig_Compiler $compiler)
             ->repr($this->getLine())
             ->raw(', ')
             ->string($this->getAttribute('index'))
-            ->raw(')')
+            ->raw(")")
         ;
     }
 }
diff --git a/core/vendor/twig/twig/lib/Twig/Node/Expression/BlockReference.php b/core/vendor/twig/twig/lib/Twig/Node/Expression/BlockReference.php
index c25aadd..4ddb2cf 100644
--- a/core/vendor/twig/twig/lib/Twig/Node/Expression/BlockReference.php
+++ b/core/vendor/twig/twig/lib/Twig/Node/Expression/BlockReference.php
@@ -36,15 +36,15 @@ public function compile(Twig_Compiler $compiler)
         if ($this->getAttribute('output')) {
             $compiler
                 ->addDebugInfo($this)
-                ->write('$this->displayBlock(')
+                ->write("\$this->displayBlock(")
                 ->subcompile($this->getNode('name'))
                 ->raw(", \$context, \$blocks);\n")
             ;
         } else {
             $compiler
-                ->raw('$this->renderBlock(')
+                ->raw("\$this->renderBlock(")
                 ->subcompile($this->getNode('name'))
-                ->raw(', $context, $blocks)')
+                ->raw(", \$context, \$blocks)")
             ;
         }
     }
diff --git a/core/vendor/twig/twig/lib/Twig/Node/Expression/Call.php b/core/vendor/twig/twig/lib/Twig/Node/Expression/Call.php
index 51e2cac..998160b 100644
--- a/core/vendor/twig/twig/lib/Twig/Node/Expression/Call.php
+++ b/core/vendor/twig/twig/lib/Twig/Node/Expression/Call.php
@@ -106,19 +106,12 @@ protected function getArguments($callable, $arguments)
             $parameters[$name] = $node;
         }
 
-        $isVariadic = $this->hasAttribute('is_variadic') && $this->getAttribute('is_variadic');
-        if (!$named && !$isVariadic) {
+        if (!$named) {
             return $parameters;
         }
 
         if (!$callable) {
-            if ($named) {
-                $message = sprintf('Named arguments are not supported for %s "%s".', $callType, $callName);
-            } else {
-                $message = sprintf('Arbitrary positional arguments are not supported for %s "%s".', $callType, $callName);
-            }
-
-            throw new LogicException($message);
+            throw new LogicException(sprintf('Named arguments are not supported for %s "%s".', $callType, $callName));
         }
 
         // manage named arguments
@@ -148,19 +141,6 @@ protected function getArguments($callable, $arguments)
                 array_shift($definition);
             }
         }
-        if ($isVariadic) {
-            $argument = end($definition);
-            if ($argument && $argument->isArray() && $argument->isDefaultValueAvailable() && array() === $argument->getDefaultValue()) {
-                array_pop($definition);
-            } else {
-                $callableName = $r->name;
-                if ($r->getDeclaringClass()) {
-                    $callableName = $r->getDeclaringClass()->name.'::'.$callableName;
-                }
-
-                throw new LogicException(sprintf('The last parameter of "%s" for %s "%s" must be an array with default value, eg. "array $arg = array()".', $callableName, $callType, $callName));
-            }
-        }
 
         $arguments = array();
         $names = array();
@@ -205,23 +185,6 @@ protected function getArguments($callable, $arguments)
             }
         }
 
-        if ($isVariadic) {
-            $arbitraryArguments = new Twig_Node_Expression_Array(array(), -1);
-            foreach ($parameters as $key => $value) {
-                if (is_int($key)) {
-                    $arbitraryArguments->addElement($value);
-                } else {
-                    $arbitraryArguments->addElement($value, new Twig_Node_Expression_Constant($key, -1));
-                }
-                unset($parameters[$key]);
-            }
-
-            if ($arbitraryArguments->count()) {
-                $arguments = array_merge($arguments, $optionalArguments);
-                $arguments[] = $arbitraryArguments;
-            }
-        }
-
         if (!empty($parameters)) {
             $unknownParameter = null;
             foreach ($parameters as $parameter) {
diff --git a/core/vendor/twig/twig/lib/Twig/Node/Expression/Filter.php b/core/vendor/twig/twig/lib/Twig/Node/Expression/Filter.php
index a906232..207b062 100644
--- a/core/vendor/twig/twig/lib/Twig/Node/Expression/Filter.php
+++ b/core/vendor/twig/twig/lib/Twig/Node/Expression/Filter.php
@@ -30,9 +30,6 @@ public function compile(Twig_Compiler $compiler)
         if ($filter instanceof Twig_FilterCallableInterface || $filter instanceof Twig_SimpleFilter) {
             $this->setAttribute('callable', $filter->getCallable());
         }
-        if ($filter instanceof Twig_SimpleFilter) {
-            $this->setAttribute('is_variadic', $filter->isVariadic());
-        }
 
         $this->compileCallable($compiler);
     }
diff --git a/core/vendor/twig/twig/lib/Twig/Node/Expression/Function.php b/core/vendor/twig/twig/lib/Twig/Node/Expression/Function.php
index 7326ede..3e1f6b5 100644
--- a/core/vendor/twig/twig/lib/Twig/Node/Expression/Function.php
+++ b/core/vendor/twig/twig/lib/Twig/Node/Expression/Function.php
@@ -29,9 +29,6 @@ public function compile(Twig_Compiler $compiler)
         if ($function instanceof Twig_FunctionCallableInterface || $function instanceof Twig_SimpleFunction) {
             $this->setAttribute('callable', $function->getCallable());
         }
-        if ($function instanceof Twig_SimpleFunction) {
-            $this->setAttribute('is_variadic', $function->isVariadic());
-        }
 
         $this->compileCallable($compiler);
     }
diff --git a/core/vendor/twig/twig/lib/Twig/Node/Expression/Name.php b/core/vendor/twig/twig/lib/Twig/Node/Expression/Name.php
index a6e0ff4..0bfcdbc 100644
--- a/core/vendor/twig/twig/lib/Twig/Node/Expression/Name.php
+++ b/core/vendor/twig/twig/lib/Twig/Node/Expression/Name.php
@@ -12,7 +12,7 @@
 class Twig_Node_Expression_Name extends Twig_Node_Expression
 {
     protected $specialVars = array(
-        '_self' => '$this',
+        '_self'    => '$this',
         '_context' => '$context',
         '_charset' => '$this->env->getCharset()',
     );
diff --git a/core/vendor/twig/twig/lib/Twig/Node/Expression/Parent.php b/core/vendor/twig/twig/lib/Twig/Node/Expression/Parent.php
index bd5024b..a22ce03 100644
--- a/core/vendor/twig/twig/lib/Twig/Node/Expression/Parent.php
+++ b/core/vendor/twig/twig/lib/Twig/Node/Expression/Parent.php
@@ -32,15 +32,15 @@ public function compile(Twig_Compiler $compiler)
         if ($this->getAttribute('output')) {
             $compiler
                 ->addDebugInfo($this)
-                ->write('$this->displayParentBlock(')
+                ->write("\$this->displayParentBlock(")
                 ->string($this->getAttribute('name'))
                 ->raw(", \$context, \$blocks);\n")
             ;
         } else {
             $compiler
-                ->raw('$this->renderParentBlock(')
+                ->raw("\$this->renderParentBlock(")
                 ->string($this->getAttribute('name'))
-                ->raw(', $context, $blocks)')
+                ->raw(", \$context, \$blocks)")
             ;
         }
     }
diff --git a/core/vendor/twig/twig/lib/Twig/Node/Expression/Test.php b/core/vendor/twig/twig/lib/Twig/Node/Expression/Test.php
index c0358c8..639f501 100644
--- a/core/vendor/twig/twig/lib/Twig/Node/Expression/Test.php
+++ b/core/vendor/twig/twig/lib/Twig/Node/Expression/Test.php
@@ -26,9 +26,6 @@ public function compile(Twig_Compiler $compiler)
         if ($test instanceof Twig_TestCallableInterface || $test instanceof Twig_SimpleTest) {
             $this->setAttribute('callable', $test->getCallable());
         }
-        if ($test instanceof Twig_SimpleTest) {
-            $this->setAttribute('is_variadic', $test->isVariadic());
-        }
 
         $this->compileCallable($compiler);
     }
diff --git a/core/vendor/twig/twig/lib/Twig/Node/For.php b/core/vendor/twig/twig/lib/Twig/Node/For.php
index 36e9de8..c54a23c 100644
--- a/core/vendor/twig/twig/lib/Twig/Node/For.php
+++ b/core/vendor/twig/twig/lib/Twig/Node/For.php
@@ -82,7 +82,7 @@ public function compile(Twig_Compiler $compiler)
         $compiler
             ->write("foreach (\$context['_seq'] as ")
             ->subcompile($this->getNode('key_target'))
-            ->raw(' => ')
+            ->raw(" => ")
             ->subcompile($this->getNode('value_target'))
             ->raw(") {\n")
             ->indent()
diff --git a/core/vendor/twig/twig/lib/Twig/Node/If.php b/core/vendor/twig/twig/lib/Twig/Node/If.php
index 1b6104d..980274e 100644
--- a/core/vendor/twig/twig/lib/Twig/Node/If.php
+++ b/core/vendor/twig/twig/lib/Twig/Node/If.php
@@ -34,7 +34,7 @@ public function compile(Twig_Compiler $compiler)
             if ($i > 0) {
                 $compiler
                     ->outdent()
-                    ->write('} elseif (')
+                    ->write("} elseif (")
                 ;
             } else {
                 $compiler
diff --git a/core/vendor/twig/twig/lib/Twig/Node/Import.php b/core/vendor/twig/twig/lib/Twig/Node/Import.php
index 515ff2a..5e4aa11 100644
--- a/core/vendor/twig/twig/lib/Twig/Node/Import.php
+++ b/core/vendor/twig/twig/lib/Twig/Node/Import.php
@@ -36,7 +36,7 @@ public function compile(Twig_Compiler $compiler)
         ;
 
         if ($this->getNode('expr') instanceof Twig_Node_Expression_Name && '_self' === $this->getNode('expr')->getAttribute('name')) {
-            $compiler->raw('$this');
+            $compiler->raw("\$this");
         } else {
             $compiler
                 ->raw('$this->loadTemplate(')
@@ -45,7 +45,7 @@ public function compile(Twig_Compiler $compiler)
                 ->repr($compiler->getFilename())
                 ->raw(', ')
                 ->repr($this->getLine())
-                ->raw(')')
+                ->raw(")")
             ;
         }
 
diff --git a/core/vendor/twig/twig/lib/Twig/Node/Include.php b/core/vendor/twig/twig/lib/Twig/Node/Include.php
index fecaa82..46b0685 100644
--- a/core/vendor/twig/twig/lib/Twig/Node/Include.php
+++ b/core/vendor/twig/twig/lib/Twig/Node/Include.php
@@ -61,13 +61,13 @@ public function compile(Twig_Compiler $compiler)
     protected function addGetTemplate(Twig_Compiler $compiler)
     {
         $compiler
-             ->write('$this->loadTemplate(')
+             ->write("\$this->loadTemplate(")
              ->subcompile($this->getNode('expr'))
              ->raw(', ')
              ->repr($compiler->getFilename())
              ->raw(', ')
              ->repr($this->getLine())
-             ->raw(')')
+             ->raw(")")
          ;
     }
 
diff --git a/core/vendor/twig/twig/lib/Twig/Node/Macro.php b/core/vendor/twig/twig/lib/Twig/Node/Macro.php
index 03cf4dd..ab7e8d2 100644
--- a/core/vendor/twig/twig/lib/Twig/Node/Macro.php
+++ b/core/vendor/twig/twig/lib/Twig/Node/Macro.php
@@ -16,16 +16,8 @@
  */
 class Twig_Node_Macro extends Twig_Node
 {
-    const VARARGS_NAME = 'varargs';
-
     public function __construct($name, Twig_NodeInterface $body, Twig_NodeInterface $arguments, $lineno, $tag = null)
     {
-        foreach ($arguments as $argumentName => $argument) {
-            if (self::VARARGS_NAME === $argumentName) {
-                throw new Twig_Error_Syntax(sprintf('The argument "%s" in macro "%s" cannot be defined because the variable "%s" is reserved for arbitrary arguments', self::VARARGS_NAME, $name, self::VARARGS_NAME), $argument->getLine());
-            }
-        }
-
         parent::__construct(array('body' => $body, 'arguments' => $arguments), array('name' => $name), $lineno, $tag);
     }
 
@@ -38,7 +30,7 @@ public function compile(Twig_Compiler $compiler)
     {
         $compiler
             ->addDebugInfo($this)
-            ->write(sprintf('public function get%s(', $this->getAttribute('name')))
+            ->write(sprintf("public function get%s(", $this->getAttribute('name')))
         ;
 
         $count = count($this->getNode('arguments'));
@@ -54,55 +46,36 @@ public function compile(Twig_Compiler $compiler)
             }
         }
 
-        if (PHP_VERSION_ID >= 50600) {
-            if ($count) {
-                $compiler->raw(', ');
-            }
-
-            $compiler->raw('...$__varargs__');
-        }
-
         $compiler
             ->raw(")\n")
             ->write("{\n")
             ->indent()
         ;
 
-        $compiler
-            ->write("\$context = \$this->env->mergeGlobals(array(\n")
-            ->indent()
-        ;
-
-        foreach ($this->getNode('arguments') as $name => $default) {
+        if (!count($this->getNode('arguments'))) {
+            $compiler->write("\$context = \$this->env->getGlobals();\n\n");
+        } else {
             $compiler
-                ->addIndentation()
-                ->string($name)
-                ->raw(' => $__'.$name.'__')
-                ->raw(",\n")
+                ->write("\$context = \$this->env->mergeGlobals(array(\n")
+                ->indent()
             ;
-        }
 
-        $compiler
-            ->addIndentation()
-            ->string(self::VARARGS_NAME)
-            ->raw(' => ')
-        ;
+            foreach ($this->getNode('arguments') as $name => $default) {
+                $compiler
+                    ->write('')
+                    ->string($name)
+                    ->raw(' => $__'.$name.'__')
+                    ->raw(",\n")
+                ;
+            }
 
-        if (PHP_VERSION_ID >= 50600) {
-            $compiler->raw("\$__varargs__,\n");
-        } else {
             $compiler
-                ->raw('func_num_args() > ')
-                ->repr($count)
-                ->raw(' ? array_slice(func_get_args(), ')
-                ->repr($count)
-                ->raw(") : array(),\n")
+                ->outdent()
+                ->write("));\n\n")
             ;
         }
 
         $compiler
-            ->outdent()
-            ->write("));\n\n")
             ->write("\$blocks = array();\n\n")
             ->write("ob_start();\n")
             ->write("try {\n")
diff --git a/core/vendor/twig/twig/lib/Twig/Node/Module.php b/core/vendor/twig/twig/lib/Twig/Node/Module.php
index 327b5e6..7802263 100644
--- a/core/vendor/twig/twig/lib/Twig/Node/Module.php
+++ b/core/vendor/twig/twig/lib/Twig/Node/Module.php
@@ -107,20 +107,20 @@ protected function compileGetParent(Twig_Compiler $compiler)
             ->write("protected function doGetParent(array \$context)\n", "{\n")
             ->indent()
             ->addDebugInfo($parent)
-            ->write('return ')
+            ->write("return ")
         ;
 
         if ($parent instanceof Twig_Node_Expression_Constant) {
             $compiler->subcompile($parent);
         } else {
             $compiler
-                ->raw('$this->loadTemplate(')
+                ->raw("\$this->loadTemplate(")
                 ->subcompile($parent)
                 ->raw(', ')
                 ->repr($compiler->getFilename())
                 ->raw(', ')
                 ->repr($this->getNode('parent')->getLine())
-                ->raw(')')
+                ->raw(")")
             ;
         }
 
@@ -136,7 +136,7 @@ protected function compileClassHeader(Twig_Compiler $compiler)
         $compiler
             ->write("\n\n")
             // if the filename contains */, add a blank to avoid a PHP parse error
-            ->write('/* '.str_replace('*/', '* /', $this->getAttribute('filename'))." */\n")
+            ->write("/* ".str_replace('*/', '* /', $this->getAttribute('filename'))." */\n")
             ->write('class '.$compiler->getEnvironment()->getTemplateClass($this->getAttribute('filename'), $this->getAttribute('index')))
             ->raw(sprintf(" extends %s\n", $compiler->getEnvironment()->getBaseTemplateClass()))
             ->write("{\n")
@@ -159,7 +159,7 @@ protected function compileConstructor(Twig_Compiler $compiler)
         } elseif ($parent instanceof Twig_Node_Expression_Constant) {
             $compiler
                 ->addDebugInfo($parent)
-                ->write('$this->parent = $this->loadTemplate(')
+                ->write("\$this->parent = \$this->loadTemplate(")
                 ->subcompile($parent)
                 ->raw(', ')
                 ->repr($compiler->getFilename())
@@ -189,23 +189,23 @@ protected function compileConstructor(Twig_Compiler $compiler)
 
                 foreach ($trait->getNode('targets') as $key => $value) {
                     $compiler
-                        ->write(sprintf('if (!isset($_trait_%s_blocks[', $i))
+                        ->write(sprintf("if (!isset(\$_trait_%s_blocks[", $i))
                         ->string($key)
                         ->raw("])) {\n")
                         ->indent()
                         ->write("throw new Twig_Error_Runtime(sprintf('Block ")
                         ->string($key)
-                        ->raw(' is not defined in trait ')
+                        ->raw(" is not defined in trait ")
                         ->subcompile($trait->getNode('template'))
                         ->raw(".'));\n")
                         ->outdent()
                         ->write("}\n\n")
 
-                        ->write(sprintf('$_trait_%s_blocks[', $i))
+                        ->write(sprintf("\$_trait_%s_blocks[", $i))
                         ->subcompile($value)
-                        ->raw(sprintf('] = $_trait_%s_blocks[', $i))
+                        ->raw(sprintf("] = \$_trait_%s_blocks[", $i))
                         ->string($key)
-                        ->raw(sprintf(']; unset($_trait_%s_blocks[', $i))
+                        ->raw(sprintf("]; unset(\$_trait_%s_blocks[", $i))
                         ->string($key)
                         ->raw("]);\n\n")
                     ;
@@ -218,9 +218,9 @@ protected function compileConstructor(Twig_Compiler $compiler)
                     ->indent()
                 ;
 
-                for ($i = 0; $i < $countTraits; ++$i) {
+                for ($i = 0; $i < $countTraits; $i++) {
                     $compiler
-                        ->write(sprintf('$_trait_%s_blocks'.($i == $countTraits - 1 ? '' : ',')."\n", $i))
+                        ->write(sprintf("\$_trait_%s_blocks".($i == $countTraits - 1 ? '' : ',')."\n", $i))
                     ;
                 }
 
@@ -285,9 +285,9 @@ protected function compileDisplay(Twig_Compiler $compiler)
         if (null !== $parent = $this->getNode('parent')) {
             $compiler->addDebugInfo($parent);
             if ($parent instanceof Twig_Node_Expression_Constant) {
-                $compiler->write('$this->parent');
+                $compiler->write("\$this->parent");
             } else {
-                $compiler->write('$this->getParent($context)');
+                $compiler->write("\$this->getParent(\$context)");
             }
             $compiler->raw("->display(\$context, array_merge(\$this->blocks, \$blocks));\n");
         }
@@ -393,7 +393,7 @@ protected function compileLoadTemplate(Twig_Compiler $compiler, $node, $var)
     {
         if ($node instanceof Twig_Node_Expression_Constant) {
             $compiler
-                ->write(sprintf('%s = $this->loadTemplate(', $var))
+                ->write(sprintf("%s = \$this->loadTemplate(", $var))
                 ->subcompile($node)
                 ->raw(', ')
                 ->repr($compiler->getFilename())
@@ -403,13 +403,13 @@ protected function compileLoadTemplate(Twig_Compiler $compiler, $node, $var)
             ;
         } else {
             $compiler
-                ->write(sprintf('%s = ', $var))
+                ->write(sprintf("%s = ", $var))
                 ->subcompile($node)
                 ->raw(";\n")
-                ->write(sprintf('if (!%s', $var))
+                ->write(sprintf("if (!%s", $var))
                 ->raw(" instanceof Twig_Template) {\n")
                 ->indent()
-                ->write(sprintf('%s = $this->loadTemplate(%s')
+                ->write(sprintf("%s = \$this->loadTemplate(%s")
                 ->raw(', ')
                 ->repr($compiler->getFilename())
                 ->raw(', ')
diff --git a/core/vendor/twig/twig/lib/Twig/Node/SandboxedPrint.php b/core/vendor/twig/twig/lib/Twig/Node/SandboxedPrint.php
index 823e7ac..91872cc 100644
--- a/core/vendor/twig/twig/lib/Twig/Node/SandboxedPrint.php
+++ b/core/vendor/twig/twig/lib/Twig/Node/SandboxedPrint.php
@@ -47,8 +47,6 @@ public function compile(Twig_Compiler $compiler)
      * This is mostly needed when another visitor adds filters (like the escaper one).
      *
      * @param Twig_Node $node A Node
-     *
-     * @return Twig_Node
      */
     protected function removeNodeFilter($node)
     {
diff --git a/core/vendor/twig/twig/lib/Twig/NodeTraverser.php b/core/vendor/twig/twig/lib/Twig/NodeTraverser.php
index 6024e65..8178a55 100644
--- a/core/vendor/twig/twig/lib/Twig/NodeTraverser.php
+++ b/core/vendor/twig/twig/lib/Twig/NodeTraverser.php
@@ -54,8 +54,6 @@ public function addVisitor(Twig_NodeVisitorInterface $visitor)
      * Traverses a node and calls the registered visitors.
      *
      * @param Twig_NodeInterface $node A Twig_NodeInterface instance
-     *
-     * @return Twig_NodeInterface
      */
     public function traverse(Twig_NodeInterface $node)
     {
diff --git a/core/vendor/twig/twig/lib/Twig/NodeVisitor/Escaper.php b/core/vendor/twig/twig/lib/Twig/NodeVisitor/Escaper.php
index 5c94977..cc4b3d7 100644
--- a/core/vendor/twig/twig/lib/Twig/NodeVisitor/Escaper.php
+++ b/core/vendor/twig/twig/lib/Twig/NodeVisitor/Escaper.php
@@ -14,7 +14,7 @@
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
-class Twig_NodeVisitor_Escaper extends Twig_BaseNodeVisitor
+class Twig_NodeVisitor_Escaper implements Twig_NodeVisitorInterface
 {
     protected $statusStack = array();
     protected $blocks = array();
@@ -29,9 +29,14 @@ public function __construct()
     }
 
     /**
-     * {@inheritdoc}
+     * Called before child nodes are visited.
+     *
+     * @param Twig_NodeInterface $node The node to visit
+     * @param Twig_Environment   $env  The Twig environment instance
+     *
+     * @return Twig_NodeInterface The modified node
      */
-    protected function doEnterNode(Twig_Node $node, Twig_Environment $env)
+    public function enterNode(Twig_NodeInterface $node, Twig_Environment $env)
     {
         if ($node instanceof Twig_Node_Module) {
             if ($env->hasExtension('escaper') && $defaultStrategy = $env->getExtension('escaper')->getDefaultStrategy($node->getAttribute('filename'))) {
@@ -50,9 +55,14 @@ protected function doEnterNode(Twig_Node $node, Twig_Environment $env)
     }
 
     /**
-     * {@inheritdoc}
+     * Called after child nodes are visited.
+     *
+     * @param Twig_NodeInterface $node The node to visit
+     * @param Twig_Environment   $env  The Twig environment instance
+     *
+     * @return Twig_NodeInterface The modified node
      */
-    protected function doLeaveNode(Twig_Node $node, Twig_Environment $env)
+    public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env)
     {
         if ($node instanceof Twig_Node_Module) {
             $this->defaultStrategy = false;
diff --git a/core/vendor/twig/twig/lib/Twig/NodeVisitor/Optimizer.php b/core/vendor/twig/twig/lib/Twig/NodeVisitor/Optimizer.php
index 872b7fe..b9f9a5b 100644
--- a/core/vendor/twig/twig/lib/Twig/NodeVisitor/Optimizer.php
+++ b/core/vendor/twig/twig/lib/Twig/NodeVisitor/Optimizer.php
@@ -19,13 +19,13 @@
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
-class Twig_NodeVisitor_Optimizer extends Twig_BaseNodeVisitor
+class Twig_NodeVisitor_Optimizer implements Twig_NodeVisitorInterface
 {
-    const OPTIMIZE_ALL = -1;
-    const OPTIMIZE_NONE = 0;
-    const OPTIMIZE_FOR = 2;
-    const OPTIMIZE_RAW_FILTER = 4;
-    const OPTIMIZE_VAR_ACCESS = 8;
+    const OPTIMIZE_ALL         = -1;
+    const OPTIMIZE_NONE        = 0;
+    const OPTIMIZE_FOR         = 2;
+    const OPTIMIZE_RAW_FILTER  = 4;
+    const OPTIMIZE_VAR_ACCESS  = 8;
 
     protected $loops = array();
     protected $loopsTargets = array();
@@ -50,7 +50,7 @@ public function __construct($optimizers = -1)
     /**
      * {@inheritdoc}
      */
-    protected function doEnterNode(Twig_Node $node, Twig_Environment $env)
+    public function enterNode(Twig_NodeInterface $node, Twig_Environment $env)
     {
         if (self::OPTIMIZE_FOR === (self::OPTIMIZE_FOR & $this->optimizers)) {
             $this->enterOptimizeFor($node, $env);
@@ -76,7 +76,7 @@ protected function doEnterNode(Twig_Node $node, Twig_Environment $env)
     /**
      * {@inheritdoc}
      */
-    protected function doLeaveNode(Twig_Node $node, Twig_Environment $env)
+    public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env)
     {
         $expression = $node instanceof Twig_Node_Expression;
 
@@ -129,8 +129,6 @@ protected function optimizeVariables(Twig_NodeInterface $node, Twig_Environment
      *
      * @param Twig_NodeInterface $node A Node
      * @param Twig_Environment   $env  The current Twig environment
-     *
-     * @return Twig_NodeInterface
      */
     protected function optimizePrintNode(Twig_NodeInterface $node, Twig_Environment $env)
     {
@@ -155,8 +153,6 @@ protected function optimizePrintNode(Twig_NodeInterface $node, Twig_Environment
      *
      * @param Twig_NodeInterface $node A Node
      * @param Twig_Environment   $env  The current Twig environment
-     *
-     * @return Twig_NodeInterface
      */
     protected function optimizeRawFilter(Twig_NodeInterface $node, Twig_Environment $env)
     {
diff --git a/core/vendor/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php b/core/vendor/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php
index 439f5bf..a5d06de 100644
--- a/core/vendor/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php
+++ b/core/vendor/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php
@@ -1,15 +1,6 @@
 <?php
 
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-class Twig_NodeVisitor_SafeAnalysis extends Twig_BaseNodeVisitor
+class Twig_NodeVisitor_SafeAnalysis implements Twig_NodeVisitorInterface
 {
     protected $data = array();
     protected $safeVars = array();
@@ -57,18 +48,12 @@ protected function setSafe(Twig_NodeInterface $node, array $safe)
         );
     }
 
-    /**
-     * {@inheritdoc}
-     */
-    protected function doEnterNode(Twig_Node $node, Twig_Environment $env)
+    public function enterNode(Twig_NodeInterface $node, Twig_Environment $env)
     {
         return $node;
     }
 
-    /**
-     * {@inheritdoc}
-     */
-    protected function doLeaveNode(Twig_Node $node, Twig_Environment $env)
+    public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env)
     {
         if ($node instanceof Twig_Node_Expression_Constant) {
             // constants are marked safe for all
diff --git a/core/vendor/twig/twig/lib/Twig/NodeVisitor/Sandbox.php b/core/vendor/twig/twig/lib/Twig/NodeVisitor/Sandbox.php
index 7f1b913..5467f81 100644
--- a/core/vendor/twig/twig/lib/Twig/NodeVisitor/Sandbox.php
+++ b/core/vendor/twig/twig/lib/Twig/NodeVisitor/Sandbox.php
@@ -14,7 +14,7 @@
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
-class Twig_NodeVisitor_Sandbox extends Twig_BaseNodeVisitor
+class Twig_NodeVisitor_Sandbox implements Twig_NodeVisitorInterface
 {
     protected $inAModule = false;
     protected $tags;
@@ -22,9 +22,14 @@ class Twig_NodeVisitor_Sandbox extends Twig_BaseNodeVisitor
     protected $functions;
 
     /**
-     * {@inheritdoc}
+     * Called before child nodes are visited.
+     *
+     * @param Twig_NodeInterface $node The node to visit
+     * @param Twig_Environment   $env  The Twig environment instance
+     *
+     * @return Twig_NodeInterface The modified node
      */
-    protected function doEnterNode(Twig_Node $node, Twig_Environment $env)
+    public function enterNode(Twig_NodeInterface $node, Twig_Environment $env)
     {
         if ($node instanceof Twig_Node_Module) {
             $this->inAModule = true;
@@ -59,9 +64,14 @@ protected function doEnterNode(Twig_Node $node, Twig_Environment $env)
     }
 
     /**
-     * {@inheritdoc}
+     * Called after child nodes are visited.
+     *
+     * @param Twig_NodeInterface $node The node to visit
+     * @param Twig_Environment   $env  The Twig environment instance
+     *
+     * @return Twig_NodeInterface The modified node
      */
-    protected function doLeaveNode(Twig_Node $node, Twig_Environment $env)
+    public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env)
     {
         if ($node instanceof Twig_Node_Module) {
             $this->inAModule = false;
diff --git a/core/vendor/twig/twig/lib/Twig/Parser.php b/core/vendor/twig/twig/lib/Twig/Parser.php
index dd9c1fc..549ce2b 100644
--- a/core/vendor/twig/twig/lib/Twig/Parser.php
+++ b/core/vendor/twig/twig/lib/Twig/Parser.php
@@ -254,28 +254,19 @@ public function hasMacro($name)
 
     public function setMacro($name, Twig_Node_Macro $node)
     {
-        if ($this->isReservedMacroName($name)) {
-            throw new Twig_Error_Syntax(sprintf('"%s" cannot be used as a macro name as it is a reserved keyword', $name), $node->getLine(), $this->getFilename());
-        }
-
-        $this->macros[$name] = $node;
-    }
-
-    public function isReservedMacroName($name)
-    {
         if (null === $this->reservedMacroNames) {
             $this->reservedMacroNames = array();
             $r = new ReflectionClass($this->env->getBaseTemplateClass());
             foreach ($r->getMethods() as $method) {
-                $methodName = strtolower($method->getName());
-
-                if ('get' === substr($methodName, 0, 3) && isset($methodName[3])) {
-                    $this->reservedMacroNames[] = substr($methodName, 3);
-                }
+                $this->reservedMacroNames[] = $method->getName();
             }
         }
 
-        return in_array(strtolower($name), $this->reservedMacroNames);
+        if (in_array($name, $this->reservedMacroNames)) {
+            throw new Twig_Error_Syntax(sprintf('"%s" cannot be used as a macro name as it is a reserved keyword', $name), $node->getLine(), $this->getFilename());
+        }
+
+        $this->macros[$name] = $node;
     }
 
     public function addTrait($trait)
diff --git a/core/vendor/twig/twig/lib/Twig/Profiler/Dumper/Html.php b/core/vendor/twig/twig/lib/Twig/Profiler/Dumper/Html.php
index f066da7..c898520 100644
--- a/core/vendor/twig/twig/lib/Twig/Profiler/Dumper/Html.php
+++ b/core/vendor/twig/twig/lib/Twig/Profiler/Dumper/Html.php
@@ -14,7 +14,7 @@
  */
 class Twig_Profiler_Dumper_Html extends Twig_Profiler_Dumper_Text
 {
-    private static $colors = array(
+    static private $colors = array(
         'block' => '#dfd',
         'macro' => '#ddf',
         'template' => '#ffd',
diff --git a/core/vendor/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php b/core/vendor/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php
index 2f97214..11c1114 100644
--- a/core/vendor/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php
+++ b/core/vendor/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php
@@ -27,12 +27,12 @@ public function __construct($extensionName, $type, $name, $varName)
     public function compile(Twig_Compiler $compiler)
     {
         $compiler
-            ->write(sprintf('$%s = $this->env->getExtension(', $this->getAttribute('var_name')))
+            ->write(sprintf("\$%s = \$this->env->getExtension(", $this->getAttribute('var_name')))
             ->repr($this->getAttribute('extension_name'))
             ->raw(");\n")
-            ->write(sprintf('$%s->enter($%s = new Twig_Profiler_Profile($this->getTemplateName(), ', $this->getAttribute('var_name'), $this->getAttribute('var_name').'_prof'))
+            ->write(sprintf("\$%s->enter(\$%s = new Twig_Profiler_Profile(\$this->getTemplateName(), ", $this->getAttribute('var_name'), $this->getAttribute('var_name').'_prof'))
             ->repr($this->getAttribute('type'))
-            ->raw(', ')
+            ->raw(", ")
             ->repr($this->getAttribute('name'))
             ->raw("));\n\n")
         ;
diff --git a/core/vendor/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php b/core/vendor/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php
index 4b0baa8..58beb0a 100644
--- a/core/vendor/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php
+++ b/core/vendor/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php
@@ -12,7 +12,7 @@
 /**
  * @author Fabien Potencier <fabien@symfony.com>
  */
-class Twig_Profiler_NodeVisitor_Profiler extends Twig_BaseNodeVisitor
+class Twig_Profiler_NodeVisitor_Profiler implements Twig_NodeVisitorInterface
 {
     private $extensionName;
 
@@ -24,7 +24,7 @@ public function __construct($extensionName)
     /**
      * {@inheritdoc}
      */
-    protected function doEnterNode(Twig_Node $node, Twig_Environment $env)
+    public function enterNode(Twig_NodeInterface $node, Twig_Environment $env)
     {
         return $node;
     }
@@ -32,7 +32,7 @@ protected function doEnterNode(Twig_Node $node, Twig_Environment $env)
     /**
      * {@inheritdoc}
      */
-    protected function doLeaveNode(Twig_Node $node, Twig_Environment $env)
+    public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env)
     {
         if ($node instanceof Twig_Node_Module) {
             $varName = $this->getVarName();
diff --git a/core/vendor/twig/twig/lib/Twig/Profiler/Profile.php b/core/vendor/twig/twig/lib/Twig/Profiler/Profile.php
index ec9e254..fe48a4d 100644
--- a/core/vendor/twig/twig/lib/Twig/Profiler/Profile.php
+++ b/core/vendor/twig/twig/lib/Twig/Profiler/Profile.php
@@ -26,7 +26,7 @@ class Twig_Profiler_Profile implements IteratorAggregate, Serializable
     private $ends = array();
     private $profiles = array();
 
-    public function __construct($template = 'main', $type = self::ROOT, $name = 'main')
+    public function __construct($template = 'main', $type = Twig_Profiler_Profile::ROOT, $name = 'main')
     {
         $this->template = $template;
         $this->type = $type;
diff --git a/core/vendor/twig/twig/lib/Twig/SimpleFilter.php b/core/vendor/twig/twig/lib/Twig/SimpleFilter.php
index 5d6d27b..d35c563 100644
--- a/core/vendor/twig/twig/lib/Twig/SimpleFilter.php
+++ b/core/vendor/twig/twig/lib/Twig/SimpleFilter.php
@@ -27,13 +27,12 @@ public function __construct($name, $callable, array $options = array())
         $this->callable = $callable;
         $this->options = array_merge(array(
             'needs_environment' => false,
-            'needs_context' => false,
-            'is_variadic' => false,
-            'is_safe' => null,
-            'is_safe_callback' => null,
-            'pre_escape' => null,
-            'preserves_safety' => null,
-            'node_class' => 'Twig_Node_Expression_Filter',
+            'needs_context'     => false,
+            'is_safe'           => null,
+            'is_safe_callback'  => null,
+            'pre_escape'        => null,
+            'preserves_safety'  => null,
+            'node_class'        => 'Twig_Node_Expression_Filter',
         ), $options);
     }
 
@@ -92,9 +91,4 @@ public function getPreEscape()
     {
         return $this->options['pre_escape'];
     }
-
-    public function isVariadic()
-    {
-        return $this->options['is_variadic'];
-    }
 }
diff --git a/core/vendor/twig/twig/lib/Twig/SimpleFunction.php b/core/vendor/twig/twig/lib/Twig/SimpleFunction.php
index 8085f57..8ef6aca 100644
--- a/core/vendor/twig/twig/lib/Twig/SimpleFunction.php
+++ b/core/vendor/twig/twig/lib/Twig/SimpleFunction.php
@@ -27,11 +27,10 @@ public function __construct($name, $callable, array $options = array())
         $this->callable = $callable;
         $this->options = array_merge(array(
             'needs_environment' => false,
-            'needs_context' => false,
-            'is_variadic' => false,
-            'is_safe' => null,
-            'is_safe_callback' => null,
-            'node_class' => 'Twig_Node_Expression_Function',
+            'needs_context'     => false,
+            'is_safe'           => null,
+            'is_safe_callback'  => null,
+            'node_class'        => 'Twig_Node_Expression_Function',
         ), $options);
     }
 
@@ -82,9 +81,4 @@ public function getSafe(Twig_Node $functionArgs)
 
         return array();
     }
-
-    public function isVariadic()
-    {
-        return $this->options['is_variadic'];
-    }
 }
diff --git a/core/vendor/twig/twig/lib/Twig/SimpleTest.php b/core/vendor/twig/twig/lib/Twig/SimpleTest.php
index 87b0935..225459c 100644
--- a/core/vendor/twig/twig/lib/Twig/SimpleTest.php
+++ b/core/vendor/twig/twig/lib/Twig/SimpleTest.php
@@ -25,7 +25,6 @@ public function __construct($name, $callable, array $options = array())
         $this->name = $name;
         $this->callable = $callable;
         $this->options = array_merge(array(
-            'is_variadic' => false,
             'node_class' => 'Twig_Node_Expression_Test',
         ), $options);
     }
@@ -44,9 +43,4 @@ public function getNodeClass()
     {
         return $this->options['node_class'];
     }
-
-    public function isVariadic()
-    {
-        return $this->options['is_variadic'];
-    }
 }
diff --git a/core/vendor/twig/twig/lib/Twig/Template.php b/core/vendor/twig/twig/lib/Twig/Template.php
index 73150bb..caf9642 100644
--- a/core/vendor/twig/twig/lib/Twig/Template.php
+++ b/core/vendor/twig/twig/lib/Twig/Template.php
@@ -45,12 +45,10 @@ public function __construct(Twig_Environment $env)
     abstract public function getTemplateName();
 
     /**
-     * @deprecated since 1.20 (to be removed in 2.0)
+     * {@inheritdoc}
      */
     public function getEnvironment()
     {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 1.20 and will be removed in 2.0.', E_USER_DEPRECATED);
-
         return $this->env;
     }
 
@@ -60,8 +58,6 @@ public function getEnvironment()
      * This method is for internal use only and should never be called
      * directly.
      *
-     * @param array $context
-     *
      * @return Twig_TemplateInterface|false The parent template or false if there is no parent
      */
     public function getParent(array $context)
@@ -77,7 +73,7 @@ public function getParent(array $context)
                 return false;
             }
 
-            if ($parent instanceof self) {
+            if ($parent instanceof Twig_Template) {
                 return $this->parents[$parent->getTemplateName()] = $parent;
             }
 
@@ -154,25 +150,9 @@ public function displayBlock($name, array $context, array $blocks = array(), $us
         }
 
         if (null !== $template) {
-            // avoid RCEs when sandbox is enabled
-            if (!$template instanceof Twig_Template) {
-                throw new \LogicException('A block must be a method on a Twig_Template instance.');
-            }
-
             try {
                 $template->$block($context, $blocks);
             } catch (Twig_Error $e) {
-                if (!$e->getTemplateFile()) {
-                    $e->setTemplateFile($template->getTemplateName());
-                }
-
-                // this is mostly useful for Twig_Error_Loader exceptions
-                // see Twig_Error_Loader
-                if (false === $e->getTemplateLine()) {
-                    $e->setTemplateLine(-1);
-                    $e->guess();
-                }
-
                 throw $e;
             } catch (Exception $e) {
                 throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getTemplateName(), $e);
@@ -267,20 +247,13 @@ protected function loadTemplate($template, $templateName = null, $line = null, $
                 return $this->env->resolveTemplate($template);
             }
 
-            if ($template instanceof self) {
+            if ($template instanceof Twig_Template) {
                 return $template;
             }
 
             return $this->env->loadTemplate($template, $index);
         } catch (Twig_Error $e) {
-            if (!$e->getTemplateFile()) {
-                $e->setTemplateFile($templateName ? $templateName : $this->getTemplateName());
-            }
-
-            if ($e->getTemplateLine()) {
-                throw $e;
-            }
-
+            $e->setTemplateFile($templateName ? $templateName : $this->getTemplateName());
             if (!$line) {
                 $e->guess();
             } else {
@@ -379,7 +352,7 @@ protected function displayWithErrorHandling(array $context, array $blocks = arra
      * @param string $item              The variable to return from the context
      * @param bool   $ignoreStrictCheck Whether to ignore the strict variable check or not
      *
-     * @return mixed The content of the context variable
+     * @return The content of the context variable
      *
      * @throws Twig_Error_Runtime if the variable does not exist and Twig is running in strict mode
      */
@@ -410,10 +383,10 @@ protected function displayWithErrorHandling(array $context, array $blocks = arra
      *
      * @throws Twig_Error_Runtime if the attribute does not exist and Twig is running in strict mode and $isDefinedTest is false
      */
-    protected function getAttribute($object, $item, array $arguments = array(), $type = self::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false)
+    protected function getAttribute($object, $item, array $arguments = array(), $type = Twig_Template::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false)
     {
         // array
-        if (self::METHOD_CALL !== $type) {
+        if (Twig_Template::METHOD_CALL !== $type) {
             $arrayItem = is_bool($item) || is_float($item) ? (int) $item : $item;
 
             if ((is_array($object) && array_key_exists($arrayItem, $object))
@@ -426,7 +399,7 @@ protected function getAttribute($object, $item, array $arguments = array(), $typ
                 return $object[$arrayItem];
             }
 
-            if (self::ARRAY_CALL === $type || !is_object($object)) {
+            if (Twig_Template::ARRAY_CALL === $type || !is_object($object)) {
                 if ($isDefinedTest) {
                     return false;
                 }
@@ -445,14 +418,8 @@ protected function getAttribute($object, $item, array $arguments = array(), $typ
                     } else {
                         $message = sprintf('Key "%s" for array with keys "%s" does not exist', $arrayItem, implode(', ', array_keys($object)));
                     }
-                } elseif (self::ARRAY_CALL === $type) {
-                    if (null === $object) {
-                        $message = sprintf('Impossible to access a key ("%s") on a null variable', $item);
-                    } else {
-                        $message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
-                    }
-                } elseif (null === $object) {
-                    $message = sprintf('Impossible to access an attribute ("%s") on a null variable', $item);
+                } elseif (Twig_Template::ARRAY_CALL === $type) {
+                    $message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
                 } else {
                     $message = sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
                 }
@@ -470,17 +437,11 @@ protected function getAttribute($object, $item, array $arguments = array(), $typ
                 return;
             }
 
-            if (null === $object) {
-                $message = sprintf('Impossible to invoke a method ("%s") on a null variable', $item);
-            } else {
-                $message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
-            }
-
-            throw new Twig_Error_Runtime($message, -1, $this->getTemplateName());
+            throw new Twig_Error_Runtime(sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s")', $item, gettype($object), $object), -1, $this->getTemplateName());
         }
 
         // object property
-        if (self::METHOD_CALL !== $type && !$object instanceof self) { // Twig_Template does not have public properties, and we don't want to allow access to internal ones
+        if (Twig_Template::METHOD_CALL !== $type) {
             if (isset($object->$item) || array_key_exists((string) $item, $object)) {
                 if ($isDefinedTest) {
                     return true;
@@ -498,24 +459,7 @@ protected function getAttribute($object, $item, array $arguments = array(), $typ
 
         // object method
         if (!isset(self::$cache[$class]['methods'])) {
-            // get_class_methods returns all methods accessible in the scope, but we only want public ones to be accessible in templates
-            if ($object instanceof self) {
-                $ref = new ReflectionClass($class);
-                $methods = array();
-
-                foreach ($ref->getMethods(ReflectionMethod::IS_PUBLIC) as $refMethod) {
-                    $methodName = strtolower($refMethod->name);
-
-                    // Accessing the environment from templates is forbidden to prevent untrusted changes to the environment
-                    if ('getenvironment' !== $methodName) {
-                        $methods[$methodName] = true;
-                    }
-                }
-
-                self::$cache[$class]['methods'] = $methods;
-            } else {
-                self::$cache[$class]['methods'] = array_change_key_case(array_flip(get_class_methods($object)));
-            }
+            self::$cache[$class]['methods'] = array_change_key_case(array_flip(get_class_methods($object)));
         }
 
         $call = false;
diff --git a/core/vendor/twig/twig/lib/Twig/TemplateInterface.php b/core/vendor/twig/twig/lib/Twig/TemplateInterface.php
index 3274640..d178832 100644
--- a/core/vendor/twig/twig/lib/Twig/TemplateInterface.php
+++ b/core/vendor/twig/twig/lib/Twig/TemplateInterface.php
@@ -18,8 +18,8 @@
  */
 interface Twig_TemplateInterface
 {
-    const ANY_CALL = 'any';
-    const ARRAY_CALL = 'array';
+    const ANY_CALL    = 'any';
+    const ARRAY_CALL  = 'array';
     const METHOD_CALL = 'method';
 
     /**
diff --git a/core/vendor/twig/twig/lib/Twig/Test.php b/core/vendor/twig/twig/lib/Twig/Test.php
index c53c3cc..3baff88 100644
--- a/core/vendor/twig/twig/lib/Twig/Test.php
+++ b/core/vendor/twig/twig/lib/Twig/Test.php
@@ -13,7 +13,6 @@
  * Represents a template test.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 abstract class Twig_Test implements Twig_TestInterface, Twig_TestCallableInterface
diff --git a/core/vendor/twig/twig/lib/Twig/Test/Function.php b/core/vendor/twig/twig/lib/Twig/Test/Function.php
index 30e1c62..4be6b9b 100644
--- a/core/vendor/twig/twig/lib/Twig/Test/Function.php
+++ b/core/vendor/twig/twig/lib/Twig/Test/Function.php
@@ -13,7 +13,6 @@
  * Represents a function template test.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 class Twig_Test_Function extends Twig_Test
diff --git a/core/vendor/twig/twig/lib/Twig/Test/IntegrationTestCase.php b/core/vendor/twig/twig/lib/Twig/Test/IntegrationTestCase.php
index 261acd4..b8bceb8 100644
--- a/core/vendor/twig/twig/lib/Twig/Test/IntegrationTestCase.php
+++ b/core/vendor/twig/twig/lib/Twig/Test/IntegrationTestCase.php
@@ -10,7 +10,7 @@
  */
 
 /**
- * Integration test helper.
+ * Integration test helper
  *
  * @author Fabien Potencier <fabien@symfony.com>
  * @author Karma Dordrak <drak@zikula.org>
@@ -74,7 +74,7 @@ protected function doIntegrationTest($file, $message, $condition, $templates, $e
 
         $loader = new Twig_Loader_Array($templates);
 
-        foreach ($outputs as $i => $match) {
+        foreach ($outputs as $match) {
             $config = array_merge(array(
                 'cache' => false,
                 'strict_variables' => true,
@@ -85,14 +85,6 @@ protected function doIntegrationTest($file, $message, $condition, $templates, $e
                 $twig->addExtension($extension);
             }
 
-            // avoid using the same PHP class name for different cases
-            // only for PHP 5.2+
-            if (PHP_VERSION_ID >= 50300) {
-                $p = new ReflectionProperty($twig, 'templateClassPrefix');
-                $p->setAccessible(true);
-                $p->setValue($twig, '__TwigTemplate_'.hash('sha256', uniqid(mt_rand(), true), false).'_');
-            }
-
             try {
                 $template = $twig->loadTemplate('index.twig');
             } catch (Exception $e) {
@@ -130,14 +122,14 @@ protected function doIntegrationTest($file, $message, $condition, $templates, $e
             }
 
             if (false !== $exception) {
-                list($class) = explode(':', $exception);
+                list($class, ) = explode(':', $exception);
                 $this->assertThat(null, new PHPUnit_Framework_Constraint_Exception($class));
             }
 
             $expected = trim($match[3], "\n ");
 
             if ($expected != $output) {
-                printf("Compiled templates that failed on case %d:\n", $i + 1);
+                echo 'Compiled template that failed:';
 
                 foreach (array_keys($templates) as $name) {
                     echo "Template: $name\n";
diff --git a/core/vendor/twig/twig/lib/Twig/Test/Method.php b/core/vendor/twig/twig/lib/Twig/Test/Method.php
index 7fc250b..17c6c04 100644
--- a/core/vendor/twig/twig/lib/Twig/Test/Method.php
+++ b/core/vendor/twig/twig/lib/Twig/Test/Method.php
@@ -13,7 +13,6 @@
  * Represents a method template test.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 class Twig_Test_Method extends Twig_Test
diff --git a/core/vendor/twig/twig/lib/Twig/Test/Node.php b/core/vendor/twig/twig/lib/Twig/Test/Node.php
index cdf0b24..c832a57 100644
--- a/core/vendor/twig/twig/lib/Twig/Test/Node.php
+++ b/core/vendor/twig/twig/lib/Twig/Test/Node.php
@@ -13,7 +13,6 @@
  * Represents a template test as a Node.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 class Twig_Test_Node extends Twig_Test
diff --git a/core/vendor/twig/twig/lib/Twig/TestCallableInterface.php b/core/vendor/twig/twig/lib/Twig/TestCallableInterface.php
index 98d3457..0db4368 100644
--- a/core/vendor/twig/twig/lib/Twig/TestCallableInterface.php
+++ b/core/vendor/twig/twig/lib/Twig/TestCallableInterface.php
@@ -13,7 +13,6 @@
  * Represents a callable template test.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 interface Twig_TestCallableInterface
diff --git a/core/vendor/twig/twig/lib/Twig/TestInterface.php b/core/vendor/twig/twig/lib/Twig/TestInterface.php
index 2fa821c..30d8a2c 100644
--- a/core/vendor/twig/twig/lib/Twig/TestInterface.php
+++ b/core/vendor/twig/twig/lib/Twig/TestInterface.php
@@ -13,7 +13,6 @@
  * Represents a template test.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 interface Twig_TestInterface
diff --git a/core/vendor/twig/twig/lib/Twig/Token.php b/core/vendor/twig/twig/lib/Twig/Token.php
index a0a029b..15dd4eb 100644
--- a/core/vendor/twig/twig/lib/Twig/Token.php
+++ b/core/vendor/twig/twig/lib/Twig/Token.php
@@ -21,19 +21,19 @@ class Twig_Token
     protected $type;
     protected $lineno;
 
-    const EOF_TYPE = -1;
-    const TEXT_TYPE = 0;
-    const BLOCK_START_TYPE = 1;
-    const VAR_START_TYPE = 2;
-    const BLOCK_END_TYPE = 3;
-    const VAR_END_TYPE = 4;
-    const NAME_TYPE = 5;
-    const NUMBER_TYPE = 6;
-    const STRING_TYPE = 7;
-    const OPERATOR_TYPE = 8;
-    const PUNCTUATION_TYPE = 9;
-    const INTERPOLATION_START_TYPE = 10;
-    const INTERPOLATION_END_TYPE = 11;
+    const EOF_TYPE                  = -1;
+    const TEXT_TYPE                 = 0;
+    const BLOCK_START_TYPE          = 1;
+    const VAR_START_TYPE            = 2;
+    const BLOCK_END_TYPE            = 3;
+    const VAR_END_TYPE              = 4;
+    const NAME_TYPE                 = 5;
+    const NUMBER_TYPE               = 6;
+    const STRING_TYPE               = 7;
+    const OPERATOR_TYPE             = 8;
+    const PUNCTUATION_TYPE          = 9;
+    const INTERPOLATION_START_TYPE  = 10;
+    const INTERPOLATION_END_TYPE    = 11;
 
     /**
      * Constructor.
@@ -44,8 +44,8 @@ class Twig_Token
      */
     public function __construct($type, $value, $lineno)
     {
-        $this->type = $type;
-        $this->value = $value;
+        $this->type   = $type;
+        $this->value  = $value;
         $this->lineno = $lineno;
     }
 
diff --git a/core/vendor/twig/twig/lib/Twig/TokenParser.php b/core/vendor/twig/twig/lib/Twig/TokenParser.php
index fa9b6d8..decebd5 100644
--- a/core/vendor/twig/twig/lib/Twig/TokenParser.php
+++ b/core/vendor/twig/twig/lib/Twig/TokenParser.php
@@ -22,9 +22,9 @@
     protected $parser;
 
     /**
-     * Sets the parser associated with this token parser.
+     * Sets the parser associated with this token parser
      *
-     * @param Twig_Parser $parser A Twig_Parser instance
+     * @param $parser A Twig_Parser instance
      */
     public function setParser(Twig_Parser $parser)
     {
diff --git a/core/vendor/twig/twig/lib/Twig/TokenParser/Block.php b/core/vendor/twig/twig/lib/Twig/TokenParser/Block.php
index 0a46200..81e6b1c 100644
--- a/core/vendor/twig/twig/lib/Twig/TokenParser/Block.php
+++ b/core/vendor/twig/twig/lib/Twig/TokenParser/Block.php
@@ -47,7 +47,7 @@ public function parse(Twig_Token $token)
                 $value = $token->getValue();
 
                 if ($value != $name) {
-                    throw new Twig_Error_Syntax(sprintf('Expected endblock for block "%s" (but "%s" given)', $name, $value), $stream->getCurrent()->getLine(), $stream->getFilename());
+                    throw new Twig_Error_Syntax(sprintf("Expected endblock for block '$name' (but %s given)", $value), $stream->getCurrent()->getLine(), $stream->getFilename());
                 }
             }
         } else {
diff --git a/core/vendor/twig/twig/lib/Twig/TokenParser/From.php b/core/vendor/twig/twig/lib/Twig/TokenParser/From.php
index 5540efa..dd73f99 100644
--- a/core/vendor/twig/twig/lib/Twig/TokenParser/From.php
+++ b/core/vendor/twig/twig/lib/Twig/TokenParser/From.php
@@ -52,10 +52,6 @@ public function parse(Twig_Token $token)
         $node = new Twig_Node_Import($macro, new Twig_Node_Expression_AssignName($this->parser->getVarName(), $token->getLine()), $token->getLine(), $this->getTag());
 
         foreach ($targets as $name => $alias) {
-            if ($this->parser->isReservedMacroName($name)) {
-                throw new Twig_Error_Syntax(sprintf('"%s" cannot be an imported macro as it is a reserved keyword', $name), $token->getLine(), $stream->getFilename());
-            }
-
             $this->parser->addImportedSymbol('function', $alias, 'get'.$name, $node->getNode('var'));
         }
 
diff --git a/core/vendor/twig/twig/lib/Twig/TokenParser/Macro.php b/core/vendor/twig/twig/lib/Twig/TokenParser/Macro.php
index ad910b5..87a299d 100644
--- a/core/vendor/twig/twig/lib/Twig/TokenParser/Macro.php
+++ b/core/vendor/twig/twig/lib/Twig/TokenParser/Macro.php
@@ -42,7 +42,7 @@ public function parse(Twig_Token $token)
             $value = $token->getValue();
 
             if ($value != $name) {
-                throw new Twig_Error_Syntax(sprintf('Expected endmacro for macro "%s" (but "%s" given)', $name, $value), $stream->getCurrent()->getLine(), $stream->getFilename());
+                throw new Twig_Error_Syntax(sprintf("Expected endmacro for macro '$name' (but %s given)", $value), $stream->getCurrent()->getLine(), $stream->getFilename());
             }
         }
         $this->parser->popLocalScope();
diff --git a/core/vendor/twig/twig/lib/Twig/TokenParser/Set.php b/core/vendor/twig/twig/lib/Twig/TokenParser/Set.php
index 0b41909..84f7e94 100644
--- a/core/vendor/twig/twig/lib/Twig/TokenParser/Set.php
+++ b/core/vendor/twig/twig/lib/Twig/TokenParser/Set.php
@@ -48,13 +48,13 @@ public function parse(Twig_Token $token)
             $stream->expect(Twig_Token::BLOCK_END_TYPE);
 
             if (count($names) !== count($values)) {
-                throw new Twig_Error_Syntax('When using set, you must have the same number of variables and assignments.', $stream->getCurrent()->getLine(), $stream->getFilename());
+                throw new Twig_Error_Syntax("When using set, you must have the same number of variables and assignments.", $stream->getCurrent()->getLine(), $stream->getFilename());
             }
         } else {
             $capture = true;
 
             if (count($names) > 1) {
-                throw new Twig_Error_Syntax('When using set with a block, you cannot have a multi-target.', $stream->getCurrent()->getLine(), $stream->getFilename());
+                throw new Twig_Error_Syntax("When using set with a block, you cannot have a multi-target.", $stream->getCurrent()->getLine(), $stream->getFilename());
             }
 
             $stream->expect(Twig_Token::BLOCK_END_TYPE);
diff --git a/core/vendor/twig/twig/lib/Twig/TokenParserBroker.php b/core/vendor/twig/twig/lib/Twig/TokenParserBroker.php
index 4a9cb5c..ec3fba6 100644
--- a/core/vendor/twig/twig/lib/Twig/TokenParserBroker.php
+++ b/core/vendor/twig/twig/lib/Twig/TokenParserBroker.php
@@ -14,7 +14,6 @@
  * Default implementation of a token parser broker.
  *
  * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 class Twig_TokenParserBroker implements Twig_TokenParserBrokerInterface
diff --git a/core/vendor/twig/twig/lib/Twig/TokenParserBrokerInterface.php b/core/vendor/twig/twig/lib/Twig/TokenParserBrokerInterface.php
index 3ec2a88..3f006e3 100644
--- a/core/vendor/twig/twig/lib/Twig/TokenParserBrokerInterface.php
+++ b/core/vendor/twig/twig/lib/Twig/TokenParserBrokerInterface.php
@@ -16,7 +16,6 @@
  * Token parser brokers allows to implement custom logic in the process of resolving a token parser for a given tag name.
  *
  * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
- *
  * @deprecated since 1.12 (to be removed in 2.0)
  */
 interface Twig_TokenParserBrokerInterface
diff --git a/core/vendor/twig/twig/lib/Twig/TokenParserInterface.php b/core/vendor/twig/twig/lib/Twig/TokenParserInterface.php
index 12ec396..31e8d5d 100644
--- a/core/vendor/twig/twig/lib/Twig/TokenParserInterface.php
+++ b/core/vendor/twig/twig/lib/Twig/TokenParserInterface.php
@@ -17,9 +17,9 @@
 interface Twig_TokenParserInterface
 {
     /**
-     * Sets the parser associated with this token parser.
+     * Sets the parser associated with this token parser
      *
-     * @param Twig_Parser $parser A Twig_Parser instance
+     * @param $parser A Twig_Parser instance
      */
     public function setParser(Twig_Parser $parser);
 
diff --git a/core/vendor/twig/twig/lib/Twig/TokenStream.php b/core/vendor/twig/twig/lib/Twig/TokenStream.php
index 89d2575..7e95a4f 100644
--- a/core/vendor/twig/twig/lib/Twig/TokenStream.php
+++ b/core/vendor/twig/twig/lib/Twig/TokenStream.php
@@ -29,9 +29,9 @@ class Twig_TokenStream
      */
     public function __construct(array $tokens, $filename = null)
     {
-        $this->tokens = $tokens;
-        $this->current = 0;
-        $this->filename = $filename;
+        $this->tokens     = $tokens;
+        $this->current    = 0;
+        $this->filename   = $filename;
     }
 
     /**
@@ -115,7 +115,7 @@ public function look($number = 1)
     }
 
     /**
-     * Tests the current token.
+     * Tests the current token
      *
      * @return bool
      */
@@ -125,7 +125,7 @@ public function test($primary, $secondary = null)
     }
 
     /**
-     * Checks if end of stream was reached.
+     * Checks if end of stream was reached
      *
      * @return bool
      */
@@ -135,7 +135,7 @@ public function isEOF()
     }
 
     /**
-     * Gets the current token.
+     * Gets the current token
      *
      * @return Twig_Token
      */
@@ -145,7 +145,7 @@ public function getCurrent()
     }
 
     /**
-     * Gets the filename associated with this stream.
+     * Gets the filename associated with this stream
      *
      * @return string
      */
diff --git a/core/vendor/twig/twig/test/Twig/Tests/CompilerTest.php b/core/vendor/twig/twig/test/Twig/Tests/CompilerTest.php
index 2c8b445..e24b0b5 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/CompilerTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/CompilerTest.php
@@ -22,7 +22,7 @@ public function testReprNumericValueWithLocale()
 
         $required_locales = array('fr_FR.UTF-8', 'fr_FR.UTF8', 'fr_FR.utf-8', 'fr_FR.utf8', 'French_France.1252');
         if (false === setlocale(LC_NUMERIC, $required_locales)) {
-            $this->markTestSkipped('Could not set any of required locales: '.implode(', ', $required_locales));
+            $this->markTestSkipped('Could not set any of required locales: '.implode(", ", $required_locales));
         }
 
         $this->assertEquals('1.2', $compiler->repr(1.2)->getSource());
diff --git a/core/vendor/twig/twig/test/Twig/Tests/EnvironmentTest.php b/core/vendor/twig/twig/test/Twig/Tests/EnvironmentTest.php
index f8389ea..ee127e0 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/EnvironmentTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/EnvironmentTest.php
@@ -25,12 +25,12 @@ public function testAutoescapeOption()
     {
         $loader = new Twig_Loader_Array(array(
             'html' => '{{ foo }} {{ foo }}',
-            'js' => '{{ bar }} {{ bar }}',
+            'js'   => '{{ bar }} {{ bar }}',
         ));
 
         $twig = new Twig_Environment($loader, array(
-            'debug' => true,
-            'cache' => false,
+            'debug'      => true,
+            'cache'      => false,
             'autoescape' => array($this, 'escapingStrategyCallback'),
         ));
 
@@ -56,7 +56,7 @@ public function testGlobals()
         // globals can be modified after runtime init
         $twig = new Twig_Environment($this->getMock('Twig_LoaderInterface'));
         $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
+        $globals = $twig->getGlobals();
         $twig->initRuntime();
         $twig->addGlobal('foo', 'bar');
         $globals = $twig->getGlobals();
@@ -91,7 +91,7 @@ public function testGlobals()
         // globals cannot be added after runtime init
         $twig = new Twig_Environment($this->getMock('Twig_LoaderInterface'));
         $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
+        $globals = $twig->getGlobals();
         $twig->initRuntime();
         try {
             $twig->addGlobal('bar', 'bar');
@@ -103,7 +103,7 @@ public function testGlobals()
         // globals cannot be added after extensions init
         $twig = new Twig_Environment($this->getMock('Twig_LoaderInterface'));
         $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
+        $globals = $twig->getGlobals();
         $twig->getFunctions();
         try {
             $twig->addGlobal('bar', 'bar');
@@ -115,7 +115,7 @@ public function testGlobals()
         // globals cannot be added after extensions and runtime init
         $twig = new Twig_Environment($this->getMock('Twig_LoaderInterface'));
         $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
+        $globals = $twig->getGlobals();
         $twig->getFunctions();
         $twig->initRuntime();
         try {
diff --git a/core/vendor/twig/twig/test/Twig/Tests/ErrorTest.php b/core/vendor/twig/twig/test/Twig/Tests/ErrorTest.php
index d58c40b..6a78d2b 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/ErrorTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/ErrorTest.php
@@ -99,7 +99,7 @@ public function getErroredTemplates()
             // error occurs in an included template
             array(
                 array(
-                    'index' => "{% include 'partial' %}",
+                    'index'   => "{% include 'partial' %}",
                     'partial' => '{{ foo.bar }}',
                 ),
                 'partial', 1,
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Extension/CoreTest.php b/core/vendor/twig/twig/test/Twig/Tests/Extension/CoreTest.php
index 8e9b764..b3b1cb0 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/Extension/CoreTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/Extension/CoreTest.php
@@ -18,7 +18,7 @@ public function testRandomFunction($value, $expectedInArray)
     {
         $env = new Twig_Environment();
 
-        for ($i = 0; $i < 100; ++$i) {
+        for ($i = 0; $i < 100; $i++) {
             $this->assertTrue(in_array(twig_random($env, $value), $expectedInArray, true)); // assertContains() would not consider the type
         }
     }
@@ -26,31 +26,31 @@ public function testRandomFunction($value, $expectedInArray)
     public function getRandomFunctionTestData()
     {
         return array(
-            array(// array
+            array( // array
                 array('apple', 'orange', 'citrus'),
                 array('apple', 'orange', 'citrus'),
             ),
-            array(// Traversable
+            array( // Traversable
                 new ArrayObject(array('apple', 'orange', 'citrus')),
                 array('apple', 'orange', 'citrus'),
             ),
-            array(// unicode string
+            array( // unicode string
                 'Ä€é',
                 array('Ä', '€', 'é'),
             ),
-            array(// numeric but string
+            array( // numeric but string
                 '123',
                 array('1', '2', '3'),
             ),
-            array(// integer
+            array( // integer
                 5,
                 range(0, 5, 1),
             ),
-            array(// float
+            array( // float
                 5.9,
                 range(0, 5, 1),
             ),
-            array(// negative
+            array( // negative
                 -2,
                 array(0, -1, -2),
             ),
@@ -61,7 +61,7 @@ public function testRandomFunctionWithoutParameter()
     {
         $max = mt_getrandmax();
 
-        for ($i = 0; $i < 100; ++$i) {
+        for ($i = 0; $i < 100; $i++) {
             $val = twig_random(new Twig_Environment());
             $this->assertTrue(is_int($val) && $val >= 0 && $val <= $max);
         }
@@ -94,7 +94,7 @@ public function testRandomFunctionOnNonUTF8String()
         $twig->setCharset('ISO-8859-1');
 
         $text = twig_convert_encoding('Äé', 'ISO-8859-1', 'UTF-8');
-        for ($i = 0; $i < 30; ++$i) {
+        for ($i = 0; $i < 30; $i++) {
             $rand = twig_random($twig, $text);
             $this->assertTrue(in_array(twig_convert_encoding($rand, 'UTF-8', 'ISO-8859-1'), array('Ä', 'é'), true));
         }
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Extension/SandboxTest.php b/core/vendor/twig/twig/test/Twig/Tests/Extension/SandboxTest.php
index 3f62736..fee35a0 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/Extension/SandboxTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/Extension/SandboxTest.php
@@ -17,8 +17,8 @@ public function setUp()
     {
         self::$params = array(
             'name' => 'Fabien',
-            'obj' => new FooObject(),
-            'arr' => array('obj' => new FooObject()),
+            'obj'  => new FooObject(),
+            'arr'  => array('obj' => new FooObject()),
         );
 
         self::$templates = array(
@@ -31,9 +31,9 @@ public function setUp()
             '1_basic7' => '{{ cycle(["foo","bar"], 1) }}',
             '1_basic8' => '{{ obj.getfoobar }}{{ obj.getFooBar }}',
             '1_basic9' => '{{ obj.foobar }}{{ obj.fooBar }}',
-            '1_basic' => '{% if obj.foo %}{{ obj.foo|upper }}{% endif %}',
+            '1_basic'  => '{% if obj.foo %}{{ obj.foo|upper }}{% endif %}',
             '1_layout' => '{% block content %}{% endblock %}',
-            '1_child' => "{% extends \"1_layout\" %}\n{% block content %}\n{{ \"a\"|json_encode }}\n{% endblock %}",
+            '1_child'  => "{% extends \"1_layout\" %}\n{% block content %}\n{{ \"a\"|json_encode }}\n{% endblock %}",
         );
     }
 
@@ -141,7 +141,7 @@ public function testSandboxGloballySet()
     public function testSandboxLocallySetForAnInclude()
     {
         self::$templates = array(
-            '2_basic' => '{{ obj.foo }}{% include "2_included" %}{{ obj.foo }}',
+            '2_basic'    => '{{ obj.foo }}{% include "2_included" %}{{ obj.foo }}',
             '2_included' => '{% if obj.foo %}{{ obj.foo|upper }}{% endif %}',
         );
 
@@ -149,7 +149,7 @@ public function testSandboxLocallySetForAnInclude()
         $this->assertEquals('fooFOOfoo', $twig->loadTemplate('2_basic')->render(self::$params), 'Sandbox does nothing if disabled globally and sandboxed not used for the include');
 
         self::$templates = array(
-            '3_basic' => '{{ obj.foo }}{% sandbox %}{% include "3_included" %}{% endsandbox %}{{ obj.foo }}',
+            '3_basic'    => '{{ obj.foo }}{% sandbox %}{% include "3_included" %}{% endsandbox %}{{ obj.foo }}',
             '3_included' => '{% if obj.foo %}{{ obj.foo|upper }}{% endif %}',
         );
 
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/syntax_error_in_reused_template.test b/core/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/syntax_error_in_reused_template.test
deleted file mode 100644
index 5dd9f38..0000000
--- a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/syntax_error_in_reused_template.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Exception for syntax error in reused template
---TEMPLATE--
-{% use 'foo.twig' %}
---TEMPLATE(foo.twig)--
-{% block bar %}
-    {% do node.data = 5 %}
-{% endblock %}
---EXCEPTION--
-Twig_Error_Syntax: Unexpected token "operator" of value "=" ("end of statement block" expected) in "foo.twig" at line 3
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/undefined_template_in_child_template.test b/core/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/undefined_template_in_child_template.test
deleted file mode 100644
index 1992510..0000000
--- a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/undefined_template_in_child_template.test
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-Exception for an undefined template in a child template
---TEMPLATE--
-{% extends 'base.twig' %}
-
-{% block sidebar %}
-    {{ include('include.twig') }}
-{% endblock %}
---TEMPLATE(base.twig)--
-{% block sidebar %}
-{% endblock %}
---DATA--
-return array()
---EXCEPTION--
-Twig_Error_Loader: Template "include.twig" is not defined in "index.twig" at line 5.
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_keys.test b/core/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_keys.test
deleted file mode 100644
index 6015380..0000000
--- a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_keys.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"batch" filter preserves array keys
---TEMPLATE--
-{{ {'foo': 'bar', 'key': 'value'}|batch(4)|first|keys|join(',')  }}
-{{ {'foo': 'bar', 'key': 'value'}|batch(4, 'fill')|first|keys|join(',')  }}
---DATA--
-return array()
---EXPECT--
-foo,key
-foo,key,0,1
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_zero_elements.test b/core/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_zero_elements.test
deleted file mode 100644
index b9c058d..0000000
--- a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_zero_elements.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"batch" filter with zero elements
---TEMPLATE--
-{{ []|batch(3)|length }}
-{{ []|batch(3, 'fill')|length }}
---DATA--
-return array()
---EXPECT--
-0
-0
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox_disabling.test b/core/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox_disabling.test
deleted file mode 100644
index 8ffc492..0000000
--- a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox_disabling.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"include" tag sandboxed
---TEMPLATE--
-{{ include("foo.twig", sandboxed = true) }}
-{{ include("bar.twig") }}
---TEMPLATE(foo.twig)--
-foo
---TEMPLATE(bar.twig)--
-{{ foo|e }}
---DATA--
-return array('foo' => 'bar<br />')
---EXPECT--
-foo
-
-
-bar&lt;br /&gt;
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox_disabling_ignore_missing.test b/core/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox_disabling_ignore_missing.test
deleted file mode 100644
index 8bf6e10..0000000
--- a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox_disabling_ignore_missing.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"include" tag sandboxed
---TEMPLATE--
-{{ include("unknown.twig", sandboxed = true, ignore_missing = true) }}
-{{ include("bar.twig") }}
---TEMPLATE(bar.twig)--
-{{ foo|e }}
---DATA--
-return array('foo' => 'bar<br />')
---EXPECT--
-
-
-bar&lt;br /&gt;
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/varargs.test b/core/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/varargs.test
deleted file mode 100644
index 412c90f..0000000
--- a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/varargs.test
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-macro with arbitrary arguments
---TEMPLATE--
-{% from _self import test1, test2 %}
-
-{% macro test1(var) %}
-    {{- var }}: {{ varargs|join(", ") }}
-{% endmacro %}
-
-{% macro test2() %}
-    {{- varargs|join(", ") }}
-{% endmacro %}
-
-{{ test1("foo", "bar", "foobar") }}
-{{ test2("foo", "bar", "foobar") }}
---DATA--
-return array();
---EXPECT--
-foo: bar, foobar
-
-foo, bar, foobar
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/varargs_argument.test b/core/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/varargs_argument.test
deleted file mode 100644
index b08c8ec..0000000
--- a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/varargs_argument.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-macro with varargs argument
---TEMPLATE--
-{% macro test(varargs) %}
-{% endmacro %}
---EXCEPTION--
-Twig_Error_Syntax: The argument "varargs" in macro "test" cannot be defined because the variable "varargs" is reserved for arbitrary arguments in "index.twig" at line 2
-
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/from_with_reserved_name.test b/core/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/from_with_reserved_name.test
deleted file mode 100644
index 6df4f5d..0000000
--- a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/from_with_reserved_name.test
+++ /dev/null
@@ -1,9 +0,0 @@
---TEST--
-"from" tag with reserved name
---TEMPLATE--
-{% from 'forms.twig' import templateName %}
---TEMPLATE(forms.twig)--
---DATA--
-return array()
---EXCEPTION--
-Twig_Error_Syntax: "templateName" cannot be an imported macro as it is a reserved keyword in "index.twig" at line 2
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/import_with_reserved_nam.test b/core/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/import_with_reserved_nam.test
deleted file mode 100644
index e5aa749..0000000
--- a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/import_with_reserved_nam.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"from" tag with reserved name
---TEMPLATE--
-{% import 'forms.twig' as macros %}
-
-{{ macros.parent() }}
---TEMPLATE(forms.twig)--
---DATA--
-return array()
---EXCEPTION--
-Twig_Error_Syntax: "parent" cannot be called as macro as it is a reserved keyword in "index.twig" at line 4
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/reserved_name.test b/core/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/reserved_name.test
deleted file mode 100644
index a2dde5a..0000000
--- a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/reserved_name.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"macro" tag with reserved name
---TEMPLATE--
-{% macro parent(arg1, arg2) %}
-    parent
-{% endmacro %}
---DATA--
-return array()
---EXCEPTION--
-Twig_Error_Syntax: "parent" cannot be used as a macro name as it is a reserved keyword in "index.twig" at line 2
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/in.test b/core/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/in.test
index 545f51f..d212f5d 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/in.test
+++ b/core/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/in.test
@@ -50,7 +50,6 @@
 {{ [] in [true, ''] ? 'TRUE' : 'FALSE' }}
 {{ [] in [true, []] ? 'TRUE' : 'FALSE' }}
 
-{{ resource ? 'TRUE' : 'FALSE' }}
 {{ resource in 'foo'~resource ? 'TRUE' : 'FALSE' }}
 {{ object in 'stdClass' ? 'TRUE' : 'FALSE' }}
 {{ [] in 'Array' ? 'TRUE' : 'FALSE' }}
@@ -74,7 +73,7 @@
 {{ 5.5 in '125.5' ? 'TRUE' : 'FALSE' }}
 {{ '5.5' in 125.5 ? 'TRUE' : 'FALSE' }}
 --DATA--
-return array('bar' => 'bar', 'foo' => array('bar' => 'bar'), 'dir_object' => new SplFileInfo(dirname(__FILE__)), 'object' => new stdClass(), 'resource' => opendir(dirname(__FILE__)))
+return array('bar' => 'bar', 'foo' => array('bar' => 'bar'), 'dir_object' => new SplFileInfo(dirname(__FILE__)), 'object' => new stdClass(), 'resource' => fopen(dirname(__FILE__), 'r'))
 --EXPECT--
 TRUE
 TRUE
@@ -103,7 +102,6 @@
 FALSE
 TRUE
 
-TRUE
 FALSE
 FALSE
 FALSE
diff --git a/core/vendor/twig/twig/test/Twig/Tests/IntegrationTest.php b/core/vendor/twig/twig/test/Twig/Tests/IntegrationTest.php
index 1908bcd..70f9b80 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/IntegrationTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/IntegrationTest.php
@@ -175,7 +175,7 @@ public function §Function($value)
     }
 
     /**
-     * nl2br which also escapes, for testing escaper filters.
+     * nl2br which also escapes, for testing escaper filters
      */
     public function escape_and_nl2br($env, $value, $sep = '<br />')
     {
@@ -183,7 +183,7 @@ public function escape_and_nl2br($env, $value, $sep = '<br />')
     }
 
     /**
-     * nl2br only, for testing filters with pre_escape.
+     * nl2br only, for testing filters with pre_escape
      */
     public function nl2br($value, $sep = '<br />')
     {
diff --git a/core/vendor/twig/twig/test/Twig/Tests/LexerTest.php b/core/vendor/twig/twig/test/Twig/Tests/LexerTest.php
index bf602eb..c4d7083 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/LexerTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/LexerTest.php
@@ -144,16 +144,16 @@ public function testBigNumbers()
 
         $lexer = new Twig_Lexer(new Twig_Environment());
         $stream = $lexer->tokenize($template);
-        $stream->next();
         $node = $stream->next();
-        $this->assertEquals('922337203685477580700', $node->getValue());
+        $node = $stream->next();
+        $this->assertEquals("922337203685477580700", $node->getValue());
     }
 
     public function testStringWithEscapedDelimiter()
     {
         $tests = array(
             "{{ 'foo \' bar' }}" => 'foo \' bar',
-            '{{ "foo \" bar" }}' => 'foo " bar',
+            '{{ "foo \" bar" }}' => "foo \" bar",
         );
         $lexer = new Twig_Lexer(new Twig_Environment());
         foreach ($tests as $template => $expected) {
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Loader/FilesystemTest.php b/core/vendor/twig/twig/test/Twig/Tests/Loader/FilesystemTest.php
index e07f374..03c1eb9 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/Loader/FilesystemTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/Loader/FilesystemTest.php
@@ -78,8 +78,8 @@ public function testPaths()
         ), $loader->getPaths('named'));
 
         $this->assertEquals(
-            realpath($basePath.'/named_quater/named_absolute.html'),
-            realpath($loader->getCacheKey('@named/named_absolute.html'))
+            $basePath.'/named_quater/named_absolute.html',
+            $loader->getCacheKey('@named/named_absolute.html')
         );
         $this->assertEquals("path (final)\n", $loader->getSource('index.html'));
         $this->assertEquals("path (final)\n", $loader->getSource('@__main__/index.html'));
diff --git a/core/vendor/twig/twig/test/Twig/Tests/NativeExtensionTest.php b/core/vendor/twig/twig/test/Twig/Tests/NativeExtensionTest.php
index 942aff9..36b6329 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/NativeExtensionTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/NativeExtensionTest.php
@@ -18,8 +18,8 @@ public function testGetProperties()
         }
 
         $twig = new Twig_Environment(new Twig_Loader_Array(array('index' => '{{ d1.date }}{{ d2.date }}')), array(
-            'debug' => true,
-            'cache' => false,
+            'debug'      => true,
+            'cache'      => false,
             'autoescape' => false,
         ));
 
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Node/Expression/CallTest.php b/core/vendor/twig/twig/test/Twig/Tests/Node/Expression/CallTest.php
index 43afcd2..af4e351 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/Node/Expression/CallTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/Node/Expression/CallTest.php
@@ -73,7 +73,7 @@ public function testResolveArgumentsWithMissingValueForOptionalArgument()
 
     public function testResolveArgumentsOnlyNecessaryArgumentsForCustomFunction()
     {
-        $node = new Twig_Tests_Node_Expression_Call(array(), array('type' => 'function', 'name' => 'custom_function'));
+        $node = new Twig_Tests_Node_Expression_Call(array(), array('type' => 'function', 'name' =>  'custom_function'));
 
         $this->assertEquals(array('arg1'), $node->getArguments(array($this, 'customFunction'), array('arg1' => 'arg1')));
     }
@@ -84,16 +84,6 @@ public function testGetArgumentsForStaticMethod()
         $this->assertEquals(array('arg1'), $node->getArguments(__CLASS__.'::customStaticFunction', array('arg1' => 'arg1')));
     }
 
-    /**
-     * @expectedException        LogicException
-     * @expectedExceptionMessage The last parameter of "Twig_Tests_Node_Expression_CallTest::customFunctionWithArbitraryArguments" for function "foo" must be an array with default value, eg. "array $arg = array()".
-     */
-    public function testResolveArgumentsWithMissingParameterForArbitraryArguments()
-    {
-        $node = new Twig_Tests_Node_Expression_Call(array(), array('type' => 'function', 'name' => 'foo', 'is_variadic' => true));
-        $node->getArguments(array($this, 'customFunctionWithArbitraryArguments'), array());
-    }
-
     public static function customStaticFunction($arg1, $arg2 = 'default', $arg3 = array())
     {
     }
@@ -101,10 +91,6 @@ public static function customStaticFunction($arg1, $arg2 = 'default', $arg3 = ar
     public function customFunction($arg1, $arg2 = 'default', $arg3 = array())
     {
     }
-
-    public function customFunctionWithArbitraryArguments()
-    {
-    }
 }
 
 class Twig_Tests_Node_Expression_Call extends Twig_Node_Expression_Call
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Node/Expression/FilterTest.php b/core/vendor/twig/twig/test/Twig/Tests/Node/Expression/FilterTest.php
index e822e2f..4aefa7e 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/Node/Expression/FilterTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/Node/Expression/FilterTest.php
@@ -25,10 +25,6 @@ public function testConstructor()
 
     public function getTests()
     {
-        $environment = new Twig_Environment();
-        $environment->addFilter(new Twig_SimpleFilter('bar', 'bar', array('needs_environment' => true)));
-        $environment->addFilter(new Twig_SimpleFilter('barbar', 'twig_tests_filter_barbar', array('needs_context' => true, 'is_variadic' => true)));
-
         $tests = array();
 
         $expr = new Twig_Node_Expression_Constant('foo', 1);
@@ -45,7 +41,7 @@ public function getTests()
         $date = new Twig_Node_Expression_Constant(0, 1);
         $node = $this->createFilter($date, 'date', array(
             'timezone' => new Twig_Node_Expression_Constant('America/Chicago', 1),
-            'format' => new Twig_Node_Expression_Constant('d/m/Y H:i:s P', 1),
+            'format'   => new Twig_Node_Expression_Constant('d/m/Y H:i:s P', 1),
         ));
         $tests[] = array($node, 'twig_date_format_filter($this->env, 0, "d/m/Y H:i:s P", "America/Chicago")');
 
@@ -73,31 +69,6 @@ public function getTests()
             $tests[] = array($node, 'call_user_func_array($this->env->getFilter(\'anonymous\')->getCallable(), array("foo"))');
         }
 
-        // needs environment
-        $node = $this->createFilter($string, 'bar');
-        $tests[] = array($node, 'bar($this->env, "abc")', $environment);
-
-        $node = $this->createFilter($string, 'bar', array(new Twig_Node_Expression_Constant('bar', 1)));
-        $tests[] = array($node, 'bar($this->env, "abc", "bar")', $environment);
-
-        // arbitrary named arguments
-        $node = $this->createFilter($string, 'barbar');
-        $tests[] = array($node, 'twig_tests_filter_barbar($context, "abc")', $environment);
-
-        $node = $this->createFilter($string, 'barbar', array('foo' => new Twig_Node_Expression_Constant('bar', 1)));
-        $tests[] = array($node, 'twig_tests_filter_barbar($context, "abc", null, null, array("foo" => "bar"))', $environment);
-
-        $node = $this->createFilter($string, 'barbar', array('arg2' => new Twig_Node_Expression_Constant('bar', 1)));
-        $tests[] = array($node, 'twig_tests_filter_barbar($context, "abc", null, "bar")', $environment);
-
-        $node = $this->createFilter($string, 'barbar', array(
-            new Twig_Node_Expression_Constant('1', 1),
-            new Twig_Node_Expression_Constant('2', 1),
-            new Twig_Node_Expression_Constant('3', 1),
-            'foo' => new Twig_Node_Expression_Constant('bar', 1),
-        ));
-        $tests[] = array($node, 'twig_tests_filter_barbar($context, "abc", "1", "2", array(0 => "3", "foo" => "bar"))', $environment);
-
         return $tests;
     }
 
@@ -148,7 +119,3 @@ protected function getEnvironment()
         return parent::getEnvironment();
     }
 }
-
-function twig_tests_filter_barbar($context, $string, $arg1 = null, $arg2 = null, array $args = array())
-{
-}
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Node/Expression/FunctionTest.php b/core/vendor/twig/twig/test/Twig/Tests/Node/Expression/FunctionTest.php
index 35edfe1..209b8cf 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/Node/Expression/FunctionTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/Node/Expression/FunctionTest.php
@@ -28,7 +28,6 @@ public function getTests()
         $environment->addFunction(new Twig_SimpleFunction('bar', 'bar', array('needs_environment' => true)));
         $environment->addFunction(new Twig_SimpleFunction('foofoo', 'foofoo', array('needs_context' => true)));
         $environment->addFunction(new Twig_SimpleFunction('foobar', 'foobar', array('needs_environment' => true, 'needs_context' => true)));
-        $environment->addFunction(new Twig_SimpleFunction('barbar', 'twig_tests_function_barbar', array('is_variadic' => true)));
 
         $tests = array();
 
@@ -59,28 +58,10 @@ public function getTests()
         // named arguments
         $node = $this->createFunction('date', array(
             'timezone' => new Twig_Node_Expression_Constant('America/Chicago', 1),
-            'date' => new Twig_Node_Expression_Constant(0, 1),
+            'date'     => new Twig_Node_Expression_Constant(0, 1),
         ));
         $tests[] = array($node, 'twig_date_converter($this->env, 0, "America/Chicago")');
 
-        // arbitrary named arguments
-        $node = $this->createFunction('barbar');
-        $tests[] = array($node, 'twig_tests_function_barbar()', $environment);
-
-        $node = $this->createFunction('barbar', array('foo' => new Twig_Node_Expression_Constant('bar', 1)));
-        $tests[] = array($node, 'twig_tests_function_barbar(null, null, array("foo" => "bar"))', $environment);
-
-        $node = $this->createFunction('barbar', array('arg2' => new Twig_Node_Expression_Constant('bar', 1)));
-        $tests[] = array($node, 'twig_tests_function_barbar(null, "bar")', $environment);
-
-        $node = $this->createFunction('barbar', array(
-            new Twig_Node_Expression_Constant('1', 1),
-            new Twig_Node_Expression_Constant('2', 1),
-            new Twig_Node_Expression_Constant('3', 1),
-            'foo' => new Twig_Node_Expression_Constant('bar', 1),
-        ));
-        $tests[] = array($node, 'twig_tests_function_barbar("1", "2", array(0 => "3", "foo" => "bar"))', $environment);
-
         // function as an anonymous function
         if (PHP_VERSION_ID >= 50300) {
             $node = $this->createFunction('anonymous', array(new Twig_Node_Expression_Constant('foo', 1)));
@@ -104,7 +85,3 @@ protected function getEnvironment()
         return parent::getEnvironment();
     }
 }
-
-function twig_tests_function_barbar($arg1 = null, $arg2 = null, array $args = array())
-{
-}
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Node/Expression/TestTest.php b/core/vendor/twig/twig/test/Twig/Tests/Node/Expression/TestTest.php
index 47a6889..e62a8af 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/Node/Expression/TestTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/Node/Expression/TestTest.php
@@ -25,9 +25,6 @@ public function testConstructor()
 
     public function getTests()
     {
-        $environment = new Twig_Environment();
-        $environment->addTest(new Twig_SimpleTest('barbar', 'twig_tests_test_barbar', array('is_variadic' => true, 'need_context' => true)));
-
         $tests = array();
 
         $expr = new Twig_Node_Expression_Constant('foo', 1);
@@ -40,25 +37,6 @@ public function getTests()
             $tests[] = array($node, 'call_user_func_array($this->env->getTest(\'anonymous\')->getCallable(), array("foo", "foo"))');
         }
 
-        // arbitrary named arguments
-        $string = new Twig_Node_Expression_Constant('abc', 1);
-        $node = $this->createTest($string, 'barbar');
-        $tests[] = array($node, 'twig_tests_test_barbar("abc")', $environment);
-
-        $node = $this->createTest($string, 'barbar', array('foo' => new Twig_Node_Expression_Constant('bar', 1)));
-        $tests[] = array($node, 'twig_tests_test_barbar("abc", null, null, array("foo" => "bar"))', $environment);
-
-        $node = $this->createTest($string, 'barbar', array('arg2' => new Twig_Node_Expression_Constant('bar', 1)));
-        $tests[] = array($node, 'twig_tests_test_barbar("abc", null, "bar")', $environment);
-
-        $node = $this->createTest($string, 'barbar', array(
-            new Twig_Node_Expression_Constant('1', 1),
-            new Twig_Node_Expression_Constant('2', 1),
-            new Twig_Node_Expression_Constant('3', 1),
-            'foo' => new Twig_Node_Expression_Constant('bar', 1),
-        ));
-        $tests[] = array($node, 'twig_tests_test_barbar("abc", "1", "2", array(0 => "3", "foo" => "bar"))', $environment);
-
         return $tests;
     }
 
@@ -76,7 +54,3 @@ protected function getEnvironment()
         return parent::getEnvironment();
     }
 }
-
-function twig_tests_test_barbar($string, $arg1 = null, $arg2 = null, array $args = array())
-{
-}
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Node/MacroTest.php b/core/vendor/twig/twig/test/Twig/Tests/Node/MacroTest.php
index 901e57b..52ee8b7 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/Node/MacroTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/Node/MacroTest.php
@@ -31,23 +31,14 @@ public function getTests()
         ), array(), 1);
         $node = new Twig_Node_Macro('foo', $body, $arguments, 1);
 
-        if (PHP_VERSION_ID >= 50600) {
-            $declaration = ', ...$__varargs__';
-            $varargs = '$__varargs__';
-        } else {
-            $declaration = '';
-            $varargs = 'func_num_args() > 2 ? array_slice(func_get_args(), 2) : array()';
-        }
-
         return array(
             array($node, <<<EOF
 // line 1
-public function getfoo(\$__foo__ = null, \$__bar__ = "Foo"$declaration)
+public function getfoo(\$__foo__ = null, \$__bar__ = "Foo")
 {
     \$context = \$this->env->mergeGlobals(array(
         "foo" => \$__foo__,
         "bar" => \$__bar__,
-        "varargs" => $varargs,
     ));
 
     \$blocks = array();
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Node/ModuleTest.php b/core/vendor/twig/twig/test/Twig/Tests/Node/ModuleTest.php
index 5688af8..5facc55 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/Node/ModuleTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/Node/ModuleTest.php
@@ -130,7 +130,7 @@ public function getDebugInfo()
 EOF
         , $twig);
 
-        $set = new Twig_Node_Set(false, new Twig_Node(array(new Twig_Node_Expression_AssignName('foo', 4))), new Twig_Node(array(new Twig_Node_Expression_Constant('foo', 4))), 4);
+        $set = new Twig_Node_Set(false, new Twig_Node(array(new Twig_Node_Expression_AssignName('foo', 4))), new Twig_Node(array(new Twig_Node_Expression_Constant("foo", 4))), 4);
         $body = new Twig_Node(array($set));
         $extends = new Twig_Node_Expression_Conditional(
                         new Twig_Node_Expression_Constant(true, 2),
diff --git a/core/vendor/twig/twig/test/Twig/Tests/ParserTest.php b/core/vendor/twig/twig/test/Twig/Tests/ParserTest.php
index a451aae..b4a3abb 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/ParserTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/ParserTest.php
@@ -16,7 +16,7 @@ class Twig_Tests_ParserTest extends PHPUnit_Framework_TestCase
     public function testSetMacroThrowsExceptionOnReservedMethods()
     {
         $parser = $this->getParser();
-        $parser->setMacro('parent', $this->getMock('Twig_Node_Macro', array(), array(), '', null));
+        $parser->setMacro('display', $this->getMock('Twig_Node_Macro', array(), array(), '', null));
     }
 
     /**
diff --git a/core/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/AbstractTest.php b/core/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/AbstractTest.php
index da97f47..555a5e7 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/AbstractTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/AbstractTest.php
@@ -13,88 +13,32 @@
 {
     protected function getProfile()
     {
-        $profile = $this->getMockBuilder('Twig_Profiler_Profile')->disableOriginalConstructor()->getMock();
-
-        $profile->expects($this->any())->method('isRoot')->will($this->returnValue(true));
-        $profile->expects($this->any())->method('getName')->will($this->returnValue('main'));
-        $profile->expects($this->any())->method('getDuration')->will($this->returnValue(1));
-        $profile->expects($this->any())->method('getMemoryUsage')->will($this->returnValue(0));
-        $profile->expects($this->any())->method('getPeakMemoryUsage')->will($this->returnValue(0));
-
-        $subProfiles = array(
-            $this->getIndexProfile(
-                array(
-                    $this->getEmbeddedBlockProfile(),
-                    $this->getEmbeddedTemplateProfile(
-                        array(
-                            $this->getIncludedTemplateProfile(),
-                        )
-                    ),
-                    $this->getMacroProfile(),
-                    $this->getEmbeddedTemplateProfile(
-                        array(
-                            $this->getIncludedTemplateProfile(),
-                        )
-                    ),
-                )
-            ),
-        );
-
-        $profile->expects($this->any())->method('getProfiles')->will($this->returnValue($subProfiles));
-        $profile->expects($this->any())->method('getIterator')->will($this->returnValue(new ArrayIterator($subProfiles)));
-
-        return $profile;
-    }
-
-    private function getIndexProfile(array $subProfiles = array())
-    {
-        return $this->generateProfile('main', 1, true, 'template', 'index.twig', $subProfiles);
-    }
-
-    private function getEmbeddedBlockProfile(array $subProfiles = array())
-    {
-        return $this->generateProfile('body', 0.0001, false, 'block', 'embedded.twig', $subProfiles);
-    }
-
-    private function getEmbeddedTemplateProfile(array $subProfiles = array())
-    {
-        return $this->generateProfile('main', 0.0001, true, 'template', 'embedded.twig', $subProfiles);
-    }
-
-    private function getIncludedTemplateProfile(array $subProfiles = array())
-    {
-        return $this->generateProfile('main', 0.0001, true, 'template', 'included.twig', $subProfiles);
-    }
-
-    private function getMacroProfile(array $subProfiles = array())
-    {
-        return $this->generateProfile('foo', 0.0001, false, 'macro', 'index.twig', $subProfiles);
-    }
-
-    /**
-     * @param string $name
-     * @param float  $duration
-     * @param bool   $isTemplate
-     * @param string $type
-     * @param string $templateName
-     * @param array  $subProfiles
-     *
-     * @return Twig_Profiler_Profile
-     */
-    private function generateProfile($name, $duration, $isTemplate, $type, $templateName, array $subProfiles = array())
-    {
-        $profile = $this->getMockBuilder('Twig_Profiler_Profile')->disableOriginalConstructor()->getMock();
-
-        $profile->expects($this->any())->method('isRoot')->will($this->returnValue(false));
-        $profile->expects($this->any())->method('getName')->will($this->returnValue($name));
-        $profile->expects($this->any())->method('getDuration')->will($this->returnValue($duration));
-        $profile->expects($this->any())->method('getMemoryUsage')->will($this->returnValue(0));
-        $profile->expects($this->any())->method('getPeakMemoryUsage')->will($this->returnValue(0));
-        $profile->expects($this->any())->method('isTemplate')->will($this->returnValue($isTemplate));
-        $profile->expects($this->any())->method('getType')->will($this->returnValue($type));
-        $profile->expects($this->any())->method('getTemplate')->will($this->returnValue($templateName));
-        $profile->expects($this->any())->method('getProfiles')->will($this->returnValue($subProfiles));
-        $profile->expects($this->any())->method('getIterator')->will($this->returnValue(new ArrayIterator($subProfiles)));
+        $profile = new Twig_Profiler_Profile();
+        $index = new Twig_Profiler_Profile('index.twig', Twig_Profiler_Profile::TEMPLATE);
+        $profile->addProfile($index);
+        $body = new Twig_Profiler_Profile('embedded.twig', Twig_Profiler_Profile::BLOCK, 'body');
+        $body->leave();
+        $index->addProfile($body);
+        $embedded = new Twig_Profiler_Profile('embedded.twig', Twig_Profiler_Profile::TEMPLATE);
+        $included = new Twig_Profiler_Profile('included.twig', Twig_Profiler_Profile::TEMPLATE);
+        $embedded->addProfile($included);
+        $index->addProfile($embedded);
+        $included->leave();
+        $embedded->leave();
+
+        $macro = new Twig_Profiler_Profile('index.twig', Twig_Profiler_Profile::MACRO, 'foo');
+        $macro->leave();
+        $index->addProfile($macro);
+
+        $embedded = clone $embedded;
+        $index->addProfile($embedded);
+        usleep(500);
+        $embedded->leave();
+
+        usleep(4500);
+        $index->leave();
+
+        $profile->leave();
 
         return $profile;
     }
diff --git a/core/vendor/twig/twig/test/Twig/Tests/TemplateTest.php b/core/vendor/twig/twig/test/Twig/Tests/TemplateTest.php
index 64b77f5..9010f28 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/TemplateTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/TemplateTest.php
@@ -11,15 +11,6 @@
 class Twig_Tests_TemplateTest extends PHPUnit_Framework_TestCase
 {
     /**
-     * @expectedException LogicException
-     */
-    public function testDisplayBlocksAcceptTemplateOnlyAsBlocks()
-    {
-        $template = $this->getMockForAbstractClass('Twig_Template', array(), '', false);
-        $template->displayBlock('foo', array(), array('foo' => array(new stdClass(), 'foo')));
-    }
-
-    /**
      * @dataProvider getAttributeExceptions
      */
     public function testGetAttributeExceptions($template, $message, $useExt)
@@ -36,13 +27,12 @@ public function testGetAttributeExceptions($template, $message, $useExt)
         $template = $env->loadTemplate($name);
 
         $context = array(
-            'string' => 'foo',
-            'null' => null,
-            'empty_array' => array(),
-            'array' => array('foo' => 'foo'),
-            'array_access' => new Twig_TemplateArrayAccessObject(),
+            'string'          => 'foo',
+            'empty_array'     => array(),
+            'array'           => array('foo' => 'foo'),
+            'array_access'    => new Twig_TemplateArrayAccessObject(),
             'magic_exception' => new Twig_TemplateMagicPropertyObjectWithException(),
-            'object' => new stdClass(),
+            'object'          => new stdClass(),
         );
 
         try {
@@ -57,19 +47,16 @@ public function getAttributeExceptions()
     {
         $tests = array(
             array('{{ string["a"] }}', 'Impossible to access a key ("a") on a string variable ("foo") in "%s" at line 1', false),
-            array('{{ null["a"] }}', 'Impossible to access a key ("a") on a null variable in "%s" at line 1', false),
             array('{{ empty_array["a"] }}', 'Key "a" does not exist as the array is empty in "%s" at line 1', false),
             array('{{ array["a"] }}', 'Key "a" for array with keys "foo" does not exist in "%s" at line 1', false),
             array('{{ array_access["a"] }}', 'Key "a" in object with ArrayAccess of class "Twig_TemplateArrayAccessObject" does not exist in "%s" at line 1', false),
             array('{{ string.a }}', 'Impossible to access an attribute ("a") on a string variable ("foo") in "%s" at line 1', false),
             array('{{ string.a() }}', 'Impossible to invoke a method ("a") on a string variable ("foo") in "%s" at line 1', false),
-            array('{{ null.a }}', 'Impossible to access an attribute ("a") on a null variable in "%s" at line 1', false),
-            array('{{ null.a() }}', 'Impossible to invoke a method ("a") on a null variable in "%s" at line 1', false),
             array('{{ empty_array.a }}', 'Key "a" does not exist as the array is empty in "%s" at line 1', false),
             array('{{ array.a }}', 'Key "a" for array with keys "foo" does not exist in "%s" at line 1', false),
             array('{{ attribute(array, -10) }}', 'Key "-10" for array with keys "foo" does not exist in "%s" at line 1', false),
             array('{{ array_access.a }}', 'Method "a" for object "Twig_TemplateArrayAccessObject" does not exist in "%s" at line 1', false),
-            array('{% from _self import foo %}{% macro foo(obj) %}{{ obj.missing_method() }}{% endmacro %}{{ foo(array_access) }}', 'Method "missing_method" for object "Twig_TemplateArrayAccessObject" does not exist in "%s" at line 1', false),
+            array('{% macro foo(obj) %}{{ obj.missing_method() }}{% endmacro %}{{ _self.foo(array_access) }}', 'Method "missing_method" for object "Twig_TemplateArrayAccessObject" does not exist in "%s" at line 1', false),
             array('{{ magic_exception.test }}', 'An exception has been thrown during the rendering of a template ("Hey! Don\'t try to isset me!") in "%s" at line 1.', false),
             array('{{ object["a"] }}', 'Impossible to access a key "a" on an object of class "stdClass" that does not implement ArrayAccess interface in "%s" at line 1', false),
         );
@@ -147,11 +134,6 @@ public function testGetAttributeWithTemplateAsObject($useExt)
 
         $this->assertNotInstanceof('Twig_Markup', $template->getAttribute($template1, 'empty'));
         $this->assertSame('', $template->getAttribute($template1, 'empty'));
-
-        $this->assertFalse($template->getAttribute($template1, 'env', array(), Twig_Template::ANY_CALL, true));
-        $this->assertFalse($template->getAttribute($template1, 'environment', array(), Twig_Template::ANY_CALL, true));
-        $this->assertFalse($template->getAttribute($template1, 'getEnvironment', array(), Twig_Template::METHOD_CALL, true));
-        $this->assertFalse($template->getAttribute($template1, 'displayWithErrorHandling', array(), Twig_Template::METHOD_CALL, true));
     }
 
     public function getGetAttributeWithTemplateAsObject()
@@ -275,27 +257,27 @@ public function getGetAttributeTests()
     {
         $array = array(
             'defined' => 'defined',
-            'zero' => 0,
-            'null' => null,
-            '1' => 1,
-            'bar' => true,
-            '09' => '09',
-            '+4' => '+4',
+            'zero'    => 0,
+            'null'    => null,
+            '1'       => 1,
+            'bar'     => true,
+            '09'      => '09',
+            '+4'      => '+4',
         );
 
-        $objectArray = new Twig_TemplateArrayAccessObject();
-        $stdObject = (object) $array;
+        $objectArray         = new Twig_TemplateArrayAccessObject();
+        $stdObject           = (object) $array;
         $magicPropertyObject = new Twig_TemplateMagicPropertyObject();
-        $propertyObject = new Twig_TemplatePropertyObject();
-        $propertyObject1 = new Twig_TemplatePropertyObjectAndIterator();
-        $propertyObject2 = new Twig_TemplatePropertyObjectAndArrayAccess();
-        $propertyObject3 = new Twig_TemplatePropertyObjectDefinedWithUndefinedValue();
-        $methodObject = new Twig_TemplateMethodObject();
-        $magicMethodObject = new Twig_TemplateMagicMethodObject();
-
-        $anyType = Twig_Template::ANY_CALL;
+        $propertyObject      = new Twig_TemplatePropertyObject();
+        $propertyObject1     = new Twig_TemplatePropertyObjectAndIterator();
+        $propertyObject2     = new Twig_TemplatePropertyObjectAndArrayAccess();
+        $propertyObject3     = new Twig_TemplatePropertyObjectDefinedWithUndefinedValue();
+        $methodObject        = new Twig_TemplateMethodObject();
+        $magicMethodObject   = new Twig_TemplateMagicMethodObject();
+
+        $anyType    = Twig_Template::ANY_CALL;
         $methodType = Twig_Template::METHOD_CALL;
-        $arrayType = Twig_Template::ARRAY_CALL;
+        $arrayType  = Twig_Template::ARRAY_CALL;
 
         $basicTests = array(
             // array(defined, value, property to fetch)
@@ -388,7 +370,7 @@ public function getGetAttributeTests()
         // tests when input is not an array or object
         $tests = array_merge($tests, array(
             array(false, null, 42, 'a', array(), $anyType, false, 'Impossible to access an attribute ("a") on a integer variable ("42")'),
-            array(false, null, 'string', 'a', array(), $anyType, false, 'Impossible to access an attribute ("a") on a string variable ("string")'),
+            array(false, null, "string", 'a', array(), $anyType, false, 'Impossible to access an attribute ("a") on a string variable ("string")'),
             array(false, null, array(), 'a', array(), $anyType, false, 'Key "a" does not exist as the array is empty'),
         ));
 
@@ -470,12 +452,12 @@ class Twig_TemplateArrayAccessObject implements ArrayAccess
 
     public $attributes = array(
         'defined' => 'defined',
-        'zero' => 0,
-        'null' => null,
-        '1' => 1,
-        'bar' => true,
-        '09' => '09',
-        '+4' => '+4',
+        'zero'    => 0,
+        'null'    => null,
+        '1'       => 1,
+        'bar'     => true,
+        '09'      => '09',
+        '+4'      => '+4',
     );
 
     public function offsetExists($name)
@@ -502,12 +484,12 @@ class Twig_TemplateMagicPropertyObject
     public $defined = 'defined';
 
     public $attributes = array(
-        'zero' => 0,
-        'null' => null,
-        '1' => 1,
-        'bar' => true,
-        '09' => '09',
-        '+4' => '+4',
+        'zero'    => 0,
+        'null'    => null,
+        '1'       => 1,
+        'bar'     => true,
+        '09'      => '09',
+        '+4'      => '+4',
     );
 
     protected $protected = 'protected';
@@ -527,16 +509,16 @@ class Twig_TemplateMagicPropertyObjectWithException
 {
     public function __isset($key)
     {
-        throw new Exception('Hey! Don\'t try to isset me!');
+        throw new Exception("Hey! Don't try to isset me!");
     }
 }
 
 class Twig_TemplatePropertyObject
 {
     public $defined = 'defined';
-    public $zero = 0;
-    public $null = null;
-    public $bar = true;
+    public $zero    = 0;
+    public $null    = null;
+    public $bar     = true;
 
     protected $protected = 'protected';
 }
diff --git a/core/vendor/twig/twig/test/Twig/Tests/escapingTest.php b/core/vendor/twig/twig/test/Twig/Tests/escapingTest.php
index 98422a5..b28d3cd 100644
--- a/core/vendor/twig/twig/test/Twig/Tests/escapingTest.php
+++ b/core/vendor/twig/twig/test/Twig/Tests/escapingTest.php
@@ -9,137 +9,137 @@
 class Twig_Test_EscapingTest extends PHPUnit_Framework_TestCase
 {
     /**
-     * All character encodings supported by htmlspecialchars().
+     * All character encodings supported by htmlspecialchars()
      */
     protected $htmlSpecialChars = array(
-        '\'' => '&#039;',
-        '"' => '&quot;',
-        '<' => '&lt;',
-        '>' => '&gt;',
-        '&' => '&amp;',
+        '\''    => '&#039;',
+        '"'     => '&quot;',
+        '<'     => '&lt;',
+        '>'     => '&gt;',
+        '&'     => '&amp;',
     );
 
     protected $htmlAttrSpecialChars = array(
-        '\'' => '&#x27;',
+        '\''    => '&#x27;',
         /* Characters beyond ASCII value 255 to unicode escape */
-        'Ā' => '&#x0100;',
+        'Ā'     => '&#x0100;',
         /* Immune chars excluded */
-        ',' => ',',
-        '.' => '.',
-        '-' => '-',
-        '_' => '_',
+        ','     => ',',
+        '.'     => '.',
+        '-'     => '-',
+        '_'     => '_',
         /* Basic alnums excluded */
-        'a' => 'a',
-        'A' => 'A',
-        'z' => 'z',
-        'Z' => 'Z',
-        '0' => '0',
-        '9' => '9',
+        'a'     => 'a',
+        'A'     => 'A',
+        'z'     => 'z',
+        'Z'     => 'Z',
+        '0'     => '0',
+        '9'     => '9',
         /* Basic control characters and null */
-        "\r" => '&#x0D;',
-        "\n" => '&#x0A;',
-        "\t" => '&#x09;',
-        "\0" => '&#xFFFD;', // should use Unicode replacement char
+        "\r"    => '&#x0D;',
+        "\n"    => '&#x0A;',
+        "\t"    => '&#x09;',
+        "\0"    => '&#xFFFD;', // should use Unicode replacement char
         /* Encode chars as named entities where possible */
-        '<' => '&lt;',
-        '>' => '&gt;',
-        '&' => '&amp;',
-        '"' => '&quot;',
+        '<'     => '&lt;',
+        '>'     => '&gt;',
+        '&'     => '&amp;',
+        '"'     => '&quot;',
         /* Encode spaces for quoteless attribute protection */
-        ' ' => '&#x20;',
+        ' '     => '&#x20;',
     );
 
     protected $jsSpecialChars = array(
         /* HTML special chars - escape without exception to hex */
-        '<' => '\\x3C',
-        '>' => '\\x3E',
-        '\'' => '\\x27',
-        '"' => '\\x22',
-        '&' => '\\x26',
+        '<'     => '\\x3C',
+        '>'     => '\\x3E',
+        '\''    => '\\x27',
+        '"'     => '\\x22',
+        '&'     => '\\x26',
         /* Characters beyond ASCII value 255 to unicode escape */
-        'Ā' => '\\u0100',
+        'Ā'     => '\\u0100',
         /* Immune chars excluded */
-        ',' => ',',
-        '.' => '.',
-        '_' => '_',
+        ','     => ',',
+        '.'     => '.',
+        '_'     => '_',
         /* Basic alnums excluded */
-        'a' => 'a',
-        'A' => 'A',
-        'z' => 'z',
-        'Z' => 'Z',
-        '0' => '0',
-        '9' => '9',
+        'a'     => 'a',
+        'A'     => 'A',
+        'z'     => 'z',
+        'Z'     => 'Z',
+        '0'     => '0',
+        '9'     => '9',
         /* Basic control characters and null */
-        "\r" => '\\x0D',
-        "\n" => '\\x0A',
-        "\t" => '\\x09',
-        "\0" => '\\x00',
+        "\r"    => '\\x0D',
+        "\n"    => '\\x0A',
+        "\t"    => '\\x09',
+        "\0"    => '\\x00',
         /* Encode spaces for quoteless attribute protection */
-        ' ' => '\\x20',
+        ' '     => '\\x20',
     );
 
     protected $urlSpecialChars = array(
         /* HTML special chars - escape without exception to percent encoding */
-        '<' => '%3C',
-        '>' => '%3E',
-        '\'' => '%27',
-        '"' => '%22',
-        '&' => '%26',
+        '<'     => '%3C',
+        '>'     => '%3E',
+        '\''    => '%27',
+        '"'     => '%22',
+        '&'     => '%26',
         /* Characters beyond ASCII value 255 to hex sequence */
-        'Ā' => '%C4%80',
+        'Ā'     => '%C4%80',
         /* Punctuation and unreserved check */
-        ',' => '%2C',
-        '.' => '.',
-        '_' => '_',
-        '-' => '-',
-        ':' => '%3A',
-        ';' => '%3B',
-        '!' => '%21',
+        ','     => '%2C',
+        '.'     => '.',
+        '_'     => '_',
+        '-'     => '-',
+        ':'     => '%3A',
+        ';'     => '%3B',
+        '!'     => '%21',
         /* Basic alnums excluded */
-        'a' => 'a',
-        'A' => 'A',
-        'z' => 'z',
-        'Z' => 'Z',
-        '0' => '0',
-        '9' => '9',
+        'a'     => 'a',
+        'A'     => 'A',
+        'z'     => 'z',
+        'Z'     => 'Z',
+        '0'     => '0',
+        '9'     => '9',
         /* Basic control characters and null */
-        "\r" => '%0D',
-        "\n" => '%0A',
-        "\t" => '%09',
-        "\0" => '%00',
+        "\r"    => '%0D',
+        "\n"    => '%0A',
+        "\t"    => '%09',
+        "\0"    => '%00',
         /* PHP quirks from the past */
-        ' ' => '%20',
-        '~' => '~',
-        '+' => '%2B',
+        ' '     => '%20',
+        '~'     => '~',
+        '+'     => '%2B',
     );
 
     protected $cssSpecialChars = array(
         /* HTML special chars - escape without exception to hex */
-        '<' => '\\3C ',
-        '>' => '\\3E ',
-        '\'' => '\\27 ',
-        '"' => '\\22 ',
-        '&' => '\\26 ',
+        '<'     => '\\3C ',
+        '>'     => '\\3E ',
+        '\''    => '\\27 ',
+        '"'     => '\\22 ',
+        '&'     => '\\26 ',
         /* Characters beyond ASCII value 255 to unicode escape */
-        'Ā' => '\\100 ',
+        'Ā'     => '\\100 ',
         /* Immune chars excluded */
-        ',' => '\\2C ',
-        '.' => '\\2E ',
-        '_' => '\\5F ',
+        ','     => '\\2C ',
+        '.'     => '\\2E ',
+        '_'     => '\\5F ',
         /* Basic alnums excluded */
-        'a' => 'a',
-        'A' => 'A',
-        'z' => 'z',
-        'Z' => 'Z',
-        '0' => '0',
-        '9' => '9',
+        'a'     => 'a',
+        'A'     => 'A',
+        'z'     => 'z',
+        'Z'     => 'Z',
+        '0'     => '0',
+        '9'     => '9',
         /* Basic control characters and null */
-        "\r" => '\\D ',
-        "\n" => '\\A ',
-        "\t" => '\\9 ',
-        "\0" => '\\0 ',
+        "\r"    => '\\D ',
+        "\n"    => '\\A ',
+        "\t"    => '\\9 ',
+        "\0"    => '\\0 ',
         /* Encode spaces for quoteless attribute protection */
-        ' ' => '\\20 ',
+        ' '     => '\\20 ',
     );
 
     protected $env;
@@ -205,16 +205,16 @@ public function testUrlEscapingConvertsSpecialChars()
     }
 
     /**
-     * Range tests to confirm escaped range of characters is within OWASP recommendation.
+     * Range tests to confirm escaped range of characters is within OWASP recommendation
      */
 
     /**
      * Only testing the first few 2 ranges on this prot. function as that's all these
-     * other range tests require.
+     * other range tests require
      */
     public function testUnicodeCodepointConversionToUtf8()
     {
-        $expected = ' ~ޙ';
+        $expected = " ~ޙ";
         $codepoints = array(0x20, 0x7e, 0x799);
         $result = '';
         foreach ($codepoints as $value) {
@@ -226,8 +226,7 @@ public function testUnicodeCodepointConversionToUtf8()
     /**
      * Convert a Unicode Codepoint to a literal UTF-8 character.
      *
-     * @param int $codepoint Unicode codepoint in hex notation
-     *
+     * @param  int    $codepoint Unicode codepoint in hex notation
      * @return string UTF-8 literal string
      */
     protected function codepointToUtf8($codepoint)
@@ -256,7 +255,7 @@ protected function codepointToUtf8($codepoint)
     public function testJavascriptEscapingEscapesOwaspRecommendedRanges()
     {
         $immune = array(',', '.', '_'); // Exceptions to escaping ranges
-        for ($chr = 0; $chr < 0xFF; ++$chr) {
+        for ($chr = 0; $chr < 0xFF; $chr++) {
             if ($chr >= 0x30 && $chr <= 0x39
             || $chr >= 0x41 && $chr <= 0x5A
             || $chr >= 0x61 && $chr <= 0x7A) {
@@ -279,7 +278,7 @@ public function testJavascriptEscapingEscapesOwaspRecommendedRanges()
     public function testHtmlAttributeEscapingEscapesOwaspRecommendedRanges()
     {
         $immune = array(',', '.', '-', '_'); // Exceptions to escaping ranges
-        for ($chr = 0; $chr < 0xFF; ++$chr) {
+        for ($chr = 0; $chr < 0xFF; $chr++) {
             if ($chr >= 0x30 && $chr <= 0x39
             || $chr >= 0x41 && $chr <= 0x5A
             || $chr >= 0x61 && $chr <= 0x7A) {
@@ -302,7 +301,7 @@ public function testHtmlAttributeEscapingEscapesOwaspRecommendedRanges()
     public function testCssEscapingEscapesOwaspRecommendedRanges()
     {
         // CSS has no exceptions to escaping ranges
-        for ($chr = 0; $chr < 0xFF; ++$chr) {
+        for ($chr = 0; $chr < 0xFF; $chr++) {
             if ($chr >= 0x30 && $chr <= 0x39
             || $chr >= 0x41 && $chr <= 0x5A
             || $chr >= 0x61 && $chr <= 0x7A) {
diff --git a/update.php b/update.php
deleted file mode 100755
index 5222b96..0000000
--- a/update.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/**
- * @file
- * The PHP page that handles updating the Drupal installation.
- *
- * All Drupal code is released under the GNU General Public License.
- * See COPYRIGHT.txt and LICENSE.txt files in the "core" directory.
- */
-
-use Drupal\Core\Update\UpdateKernel;
-use Symfony\Component\HttpFoundation\Request;
-
-$autoloader = require_once 'autoload.php';
-
-$kernel = new UpdateKernel('prod', $autoloader);
-$request = Request::createFromGlobals();
-
-$response = $kernel->handle($request);
-$response->send();
-
-$kernel->terminate($request, $response);
