diff --git a/sites/all/modules/contrib/admin/admin_menu/README.txt b/sites/all/modules/contrib/admin/admin_menu/README.txt
index 136db709..6fe556d2 100644
--- a/sites/all/modules/contrib/admin/admin_menu/README.txt
+++ b/sites/all/modules/contrib/admin/admin_menu/README.txt
@@ -1,65 +1,84 @@
+CONTENTS OF THIS FILE
+---------------------
 
--- SUMMARY --
+ * Introduction
+ * Requirements
+ * Installation
+ * Configuration
+ * Customization
+ * Troubleshooting
+ * FAQ
+ * Maintainers
+
+
+INTRODUCTION
+------------
 
 The Administration menu module displays the entire administrative menu tree (and
 most local tasks) in a drop-down menu, providing administrators one- or
 two-click access to most pages.  Other modules may also add menu links to the
 menu using hook_admin_menu_output_alter().
 
-For a full description of the module, visit the project page:
-  http://drupal.org/project/admin_menu
+For a full description of the project visit the project page:
+http://drupal.org/project/admin_menu
 
 To submit bug reports and feature suggestions, or to track changes:
-  http://drupal.org/project/issues/admin_menu
+http://drupal.org/project/issues/admin_menu
 
 
--- REQUIREMENTS --
+REQUIREMENTS
+------------
 
-None.
+No special requirements
 
 
--- INSTALLATION --
+INSTALLATION
+------------
 
-* Install as usual, see http://drupal.org/node/895232 for further information.
+Install as you would normally install a contributed Drupal. See:
+https://drupal.org/documentation/install/modules-themes/modules-7 for further
+information.
 
-* You likely want to disable Toolbar module, since its output clashes with
-  Administration menu.
+ * You likely want to disable Toolbar module, since its output clashes with
+ Administration menu.
 
 
--- CONFIGURATION --
+CONFIGURATION
+-------------
 
-* Configure user permissions in Administration » People » Permissions:
+ * Configure user permissions in Administration » People » Permissions:
 
-  - Use the administration pages and help (System module)
+   - Use the administration pages and help (System module)
 
-    The top-level administration categories require this permission to be
-    accessible. The administration menu will be empty unless this permission is
-    granted.
+     The top-level administration categories require this permission to be
+     accessible. The administration menu will be empty unless this permission is
+     granted.
 
-  - Access administration menu
+   - Access administration menu
 
-    Users in roles with the "Access administration menu" permission will see
-    the administration menu at the top of each page.
+     Users in roles with the "Access administration menu" permission will see
+     the administration menu at the top of each page.
 
-  - Display Drupal links
+   - Display Drupal links
 
-    Users in roles with the "Display drupal links" permission will receive
-    links to drupal.org issue queues for all enabled contributed modules. The
-    issue queue links appear under the administration menu icon.
+     Users in roles with the "Display drupal links" permission will receive
+     links to drupal.org issue queues for all enabled contributed modules. The
+     issue queue links appear under the administration menu icon.
 
-  Note that the menu items displayed in the administration menu depend on the
-  actual permissions of the viewing user. For example, the "People" menu item
-  is not displayed to a user who is not a member of a role with the "Administer
-  users" permission.
+     Note that the menu items displayed in the administration menu depend on the
+     actual permissions of the viewing user. For example, the "People" menu item
+     is not displayed to a user who is not a member of a role with the
+     "Administer users" permission.
 
-* Customize the menu settings in Administration » Configuration and modules »
-  Administration » Administration menu.
+ * Customize the menu settings in Administration » Configuration and modules »
+   Administration » Administration menu.
 
-* To prevent administrative menu items from appearing twice, you may hide the
-  "Management" menu block.
+ * To prevent administrative menu items from appearing twice, you may hide the
+   "Management" menu block.
 
 
--- CUSTOMIZATION --
+CUSTOMIZATION
+-------------
 
 * To override the default administration menu icon, you may:
 
@@ -82,12 +101,13 @@ None.
   body #admin-menu { font-size: 10px; }
 
 
--- TROUBLESHOOTING --
+TROUBLESHOOTING
+-------------
 
 * If the menu does not display, check the following:
 
-  - Are the "Access administration menu" and "Use the administration pages and help"
-    permissions enabled for the appropriate roles?
+  - Are the "Access administration menu" and "Use the administration pages and
+    help" permissions enabled for the appropriate roles?
 
   - Does html.tpl.php of your theme output the $page_bottom variable?
 
@@ -99,90 +119,102 @@ None.
   See http://drupal.org/node/195386 for further information.
 
 
--- FAQ --
+FAQ
+---
 
-Q: When the administration menu module is enabled, blank space is added to the
-   bottom of my theme. Why?
+ Q: When the administration menu module is enabled, blank space is added to the
+    bottom of my theme. Why?
 
-A: This is caused by a long list of links to module issue queues at Drupal.org.
-   Use Administer >> User management >> Permissions to disable the "display
-   drupal links" permission for all appropriate roles. Note that since UID 1
-   automatically receives all permissions, the list of issue queue links cannot
-   be disabled for UID 1.
+ A: This is caused by a long list of links to module issue queues at Drupal.org.
+    Use Administer >> User management >> Permissions to disable the "display
+    drupal links" permission for all appropriate roles. Note that since UID 1
+    automatically receives all permissions, the list of issue queue links cannot
+    be disabled for UID 1.
 
 
-Q: After upgrading to 6.x-1.x, the menu disappeared. Why?
+ Q: After upgrading to 6.x-1.x, the menu disappeared. Why?
 
-A: You may need to regenerate your menu. Visit
-   http://example.com/admin/build/modules to regenerate your menu (substitute
-   your site name for example.com).
+ A: You may need to regenerate your menu. Visit
+    http://example.com/admin/build/modules to regenerate your menu (substitute
+    your site name for example.com).
 
 
-Q: Can I configure the administration menu module to display another menu (like
-   the Navigation menu, for instance)?
+ Q: Can I configure the administration menu module to display another menu (like
+    the Navigation menu, for instance)?
 
-A: No. As the name implies, administration menu module is for administrative
-   menu links only. However, you can copy and paste the contents of
-   admin_menu.css into your theme's stylesheet and replace #admin-menu with any
-   other menu block id (#block-menu-1, for example).
+ A: No. As the name implies, administration menu module is for administrative
+    menu links only. However, you can copy and paste the contents of
+    admin_menu.css into your theme's stylesheet and replace #admin-menu with any
+    other menu block id (#block-menu-1, for example).
 
 
-Q: Sometimes, the user counter displays a lot of anonymous users, but no spike
-   of users or requests appear in Google Analytics or other tracking tools.
+ Q: Sometimes, the user counter displays a lot of anonymous users, but no spike
+    of users or requests appear in Google Analytics or other tracking tools.
 
-A: If your site was concurrently spidered by search-engine robots, it may have
-   a significant number of anonymous users for a short time. Most web tracking
-   tools like Google Analytics automatically filter out these requests.
+ A: If your site was concurrently spidered by search-engine robots, it may have
+    a significant number of anonymous users for a short time. Most web tracking
+    tools like Google Analytics automatically filter out these requests.
 
 
-Q: I enabled "Aggregate and compress CSS files", but admin_menu.css is still
-   there. Is this normal?
+ Q: I enabled "Aggregate and compress CSS files", but admin_menu.css is still
+    there. Is this normal?
 
-A: Yes, this is the intended behavior. the administration menu module only loads
-   its stylesheet as needed (i.e., on page requests by logged-on, administrative
-   users).
+ A: Yes, this is the intended behavior. the administration menu module only
+    loads its stylesheet as needed (i.e., on page requests by logged-on,
+    administrative users).
 
 
-Q: Why are sub-menus not visible in Opera?
+ Q: Why are sub-menus not visible in Opera?
 
-A: In the Opera browser preferences under "web pages" there is an option to fit
-   to width. By disabling this option, sub-menus in the administration menu
-   should appear.
+ A: In the Opera browser preferences under "web pages" there is an option to fit
+    to width. By disabling this option, sub-menus in the administration menu
+    should appear.
 
 
-Q: How can the administration menu be hidden on certain pages?
+ Q: How can the administration menu be hidden on certain pages?
 
-A: You can suppress it by simply calling the following function in PHP:
+ A: You can suppress it by simply calling the following function in PHP:
+    module_invoke('admin_menu', 'suppress');
 
-     module_invoke('admin_menu', 'suppress');
-
-   However, this needs to happen as early as possible in the page request, so
-   placing it in the theming layer (resp. a page template file) is too late.
-   Ideally, the function is called in hook_init() in a custom module.  If you do
-   not have a custom module, placing it into some conditional code at the top of
-   template.php may work out, too.
+    However, this needs to happen as early as possible in the page request, so
+    placing it in the theming layer (resp. a page template file) is too late.
+    Ideally, the function is called in hook_init() in a custom module.  If you
+    do not have a custom module, placing it into some conditional code at the
+    top of template.php may work out, too.
 
 
--- CONTACT --
+Q: What does the "Administration Development Tools" module do?
+
+A: The Administration Development Tools adds a jQuery Debugger which allows
+   a developer to debug and inspect arbitrary data/variables in Firebug's
+   console, and also to access them again in the global window object
+   (optionally using a named identifier, e.g. window.debug.myValue).
+   Chainable via jQuery. Especially useful for re-accessing and debugging
+   selected data via Firebug's console.
+
+
+MAINTAINERS
+-----------
 
 Current maintainers:
-* Daniel F. Kudwien (sun) - http://drupal.org/user/54136
-* Peter Wolanin (pwolanin) - http://drupal.org/user/49851
-* Stefan M. Kudwien (smk-ka) - http://drupal.org/user/48898
-* Dave Reid (Dave Reid) - http://drupal.org/user/53892
+ * Daniel F. Kudwien (sun) - http://drupal.org/user/54136
+ * Peter Wolanin (pwolanin) - http://drupal.org/user/49851
+ * Stefan M. Kudwien (smk-ka) - http://drupal.org/user/48898
+ * Dave Reid (Dave Reid) - http://drupal.org/user/53892
+ * Truls S. Yggeseth (truls1502) - http://drupal.org/user/325866
+ * Sebastian Siemssen (fubhy) - https://www.drupal.org/user/761344
 
 Major rewrite for Drupal 6 by Peter Wolanin (pwolanin).
 
 This project has been sponsored by:
-* UNLEASHED MIND
-  Specialized in consulting and planning of Drupal powered sites, UNLEASHED
-  MIND offers installation, development, theming, customization, and hosting
-  to get you started. Visit http://www.unleashedmind.com for more information.
+ * UNLEASHED MIND
+   Specialized in consulting and planning of Drupal powered sites, UNLEASHED
+   MIND offers installation, development, theming, customization, and hosting
+   to get you started. Visit http://www.unleashedmind.com for more information.
 
-* Lullabot
-  Friendly Drupal experts providing professional consulting & education
-  services. Visit http://www.lullabot.com for more information.
-
-* Acquia
-  Commercially Supported Drupal. Visit http://acquia.com for more information.
+ * Lullabot
+   Friendly Drupal experts providing professional consulting & education
+   services. Visit http://www.lullabot.com for more information.
 
+ * Acquia
+   Commercially Supported Drupal. Visit http://acquia.com for more information.
diff --git a/sites/all/modules/contrib/admin/admin_menu/admin_devel/admin_devel.info b/sites/all/modules/contrib/admin/admin_menu/admin_devel/admin_devel.info
index ab3d641f..8b09eb18 100644
--- a/sites/all/modules/contrib/admin/admin_menu/admin_devel/admin_devel.info
+++ b/sites/all/modules/contrib/admin/admin_menu/admin_devel/admin_devel.info
@@ -4,9 +4,8 @@ package = Administration
 core = 7.x
 scripts[] = admin_devel.js
 
-; Information added by Drupal.org packaging script on 2014-12-19
-version = "7.x-3.0-rc5"
+; Information added by Drupal.org packaging script on 2018-12-03
+version = "7.x-3.0-rc6"
 core = "7.x"
 project = "admin_menu"
-datestamp = "1419029284"
-
+datestamp = "1543859284"
diff --git a/sites/all/modules/contrib/admin/admin_menu/admin_menu-rtl.css b/sites/all/modules/contrib/admin/admin_menu/admin_menu-rtl.css
index 9414dcf9..ff9f5008 100644
--- a/sites/all/modules/contrib/admin/admin_menu/admin_menu-rtl.css
+++ b/sites/all/modules/contrib/admin/admin_menu/admin_menu-rtl.css
@@ -1,4 +1,3 @@
-
 #admin-menu {
   text-align: right;
 }
@@ -25,7 +24,7 @@
   border-right: 0;
 }
 #admin-menu .dropdown .admin-menu-tab a {
-  border-left: 1px solid #52565E;
+  border-left: 1px solid #52565e;
   border-right: 0;
 }
 #admin-menu .dropdown li li a {
@@ -42,13 +41,13 @@
 /* Second-level lists */
 #admin-menu .dropdown li ul {
   left: auto;
-  right: -999em;
+  right: auto;
 }
 
 /* Third-and-above-level lists */
 #admin-menu .dropdown li li.expandable ul {
-  margin-left: 0;
-  margin-right: 160px;
+  margin-left: 0 !important;
+  margin-right: 160px !important;
 }
 
 /* Lists nested under hovered list items */
diff --git a/sites/all/modules/contrib/admin/admin_menu/admin_menu.admin.js b/sites/all/modules/contrib/admin/admin_menu/admin_menu.admin.js
index 9ee9f36f..37534631 100644
--- a/sites/all/modules/contrib/admin/admin_menu/admin_menu.admin.js
+++ b/sites/all/modules/contrib/admin/admin_menu/admin_menu.admin.js
@@ -1,4 +1,8 @@
-(function($) {
+/**
+ * @file
+ */
+
+(function ($) {
 
 /**
  * Live preview of Administration menu components.
@@ -45,9 +49,9 @@ Drupal.behaviors.adminMenuPermissionsSetupHelp = {
               // Figure out which is the other, check whether it still disabled,
               // and if so, ask whether to auto-enable it.
               var other = (this == $admin[index] ? $menu[index] : $admin[index]);
-              if (!other.checked && confirm(Drupal.t('Also allow !name role to !permission?', {
-                '!name': $roles[index].textContent,
-                '!permission': (this == $admin[index] ? menuPermission : adminPermission)
+              if (!other.checked && confirm(Drupal.t('Also allow @name role to @permission?', {
+                '@name': $roles[index].textContent,
+                '@permission': (this == $admin[index] ? menuPermission : adminPermission)
               }))) {
                 other.checked = 'checked';
               }
diff --git a/sites/all/modules/contrib/admin/admin_menu/admin_menu.color.css b/sites/all/modules/contrib/admin/admin_menu/admin_menu.color.css
index ea3ef491..00cbf651 100644
--- a/sites/all/modules/contrib/admin/admin_menu/admin_menu.color.css
+++ b/sites/all/modules/contrib/admin/admin_menu/admin_menu.color.css
@@ -1,4 +1,3 @@
-
 /**
  * @file
  * Administration menu color override.
@@ -17,7 +16,7 @@
   border-right-color: #a91f1f;
 }
 #admin-menu ul li.admin-menu-tab a {
-  border-right-color: #52565E;
+  border-right-color: #52565e;
 }
 #admin-menu li li a {
   border-top-color: #801f1f;
diff --git a/sites/all/modules/contrib/admin/admin_menu/admin_menu.css b/sites/all/modules/contrib/admin/admin_menu/admin_menu.css
index 52ae3ff5..73f15e32 100644
--- a/sites/all/modules/contrib/admin/admin_menu/admin_menu.css
+++ b/sites/all/modules/contrib/admin/admin_menu/admin_menu.css
@@ -1,4 +1,3 @@
-
 /**
  * @file
  * Administration menu.
@@ -16,6 +15,7 @@
   position: absolute;
   text-align: left;
   top: 0;
+  height: 30px;
   width: 100%;
 }
 #admin-menu-wrapper {
@@ -62,7 +62,7 @@ body.admin-menu {
 #admin-menu li > span {
   background: transparent none;
   border: none;
-  color: #EEE;
+  color: #eee;
   font-weight: normal;
   text-align: left; /* LTR */
   text-decoration: none;
@@ -74,7 +74,7 @@ body.admin-menu {
   padding: 4px 8px;
 }
 #admin-menu .dropdown .admin-menu-tab a {
-  border-right: 1px solid #52565E; /* LTR */
+  border-right: 1px solid #52565e; /* LTR */
 }
 #admin-menu .dropdown li li a {
   border-right: none; /* LTR */
@@ -147,7 +147,7 @@ body.admin-menu {
 
 /* Second-and-more-level hovering */
 #admin-menu .dropdown li li.expandable {
-  background: #45454A url(images/arrow.png) no-repeat 145px 6px;
+  background: #45454a url(images/arrow.png) no-repeat 145px 6px;
 }
 #admin-menu .dropdown li li:hover {
   background-color: #111;
@@ -155,19 +155,19 @@ body.admin-menu {
 #admin-menu .dropdown li li:hover a,
 #admin-menu .dropdown li li:hover li:hover a,
 #admin-menu .dropdown li li:hover li:hover li:hover a {
-  color: #FFF;
+  color: #fff;
 }
 #admin-menu .dropdown li li.expandable:hover a,
 #admin-menu .dropdown li li.expandable:hover li.expandable:hover a {
   border-color: #444;
-  color: #EEE;
+  color: #eee;
 }
 #admin-menu .dropdown li li.expandable:hover li a,
 #admin-menu .dropdown li li.expandable:hover li.expandable:hover li a {
   border-color: #323232;
 }
 #admin-menu .dropdown li li:hover li a {
-  color: #EEE;
+  color: #eee;
 }
 
 /* Search form */
diff --git a/sites/all/modules/contrib/admin/admin_menu/admin_menu.inc b/sites/all/modules/contrib/admin/admin_menu/admin_menu.inc
index 2eab789b..5721d9ad 100644
--- a/sites/all/modules/contrib/admin/admin_menu/admin_menu.inc
+++ b/sites/all/modules/contrib/admin/admin_menu/admin_menu.inc
@@ -97,7 +97,7 @@ function admin_menu_tree_dynamic(array $expand_map) {
   $db_or = db_or();
   foreach ($plids as $path_plids) {
     $db_and = db_and();
-    // plids with value 0 may be ignored.
+    // Plids with value 0 may be ignored.
     foreach (array_filter($path_plids) as $column => $plid) {
       $db_and->condition($column, $plid);
     }
@@ -204,7 +204,7 @@ function admin_menu_merge_tree(array &$tree, array $tree_dynamic, array $expand_
         foreach ($load_functions as $index => $function) {
           if ($function) {
             if (is_array($function)) {
-              list($function,) = each($function);
+              $function = key($function);
             }
             // Add the loader function name minus "_load".
             $placeholder = '%' . substr($function, 0, -5);
@@ -269,7 +269,7 @@ function admin_menu_translate($router_item, $map) {
     // replace any other.
     // @todo Doing this instead leads to plenty of duplicate links below
     //   admin/structure/menu; likely a hidden recursion problem.
-    // $router_item['mlid'] = $router_item['href'] . $router_item['mlid'];
+    // $router_item['mlid'] = $router_item['href'] . $router_item['mlid'];.
     $router_item['mlid'] = $router_item['href'];
     // Turn menu callbacks into regular menu items to make them visible.
     if ($router_item['type'] == MENU_CALLBACK) {
@@ -278,10 +278,12 @@ function admin_menu_translate($router_item, $map) {
 
     // @see _menu_tree_check_access()
     $key = (50000 + $router_item['weight']) . ' ' . $router_item['title'] . ' ' . $router_item['mlid'];
-    return array($key => array(
-      'link' => $router_item,
-      'below' => array(),
-    ));
+    return array(
+      $key => array(
+        'link' => $router_item,
+        'below' => array(),
+      ),
+    );
   }
 
   return array();
@@ -461,20 +463,22 @@ function admin_menu_links_icon() {
     '#access' => user_access('display drupal links'),
     '#href' => 'http://drupal.org',
   );
-  // Add links to project issue queues.
-  foreach (module_list(FALSE, TRUE) as $module) {
-    $info = drupal_parse_info_file(drupal_get_path('module', $module) . '/' . $module . '.info');
-    if (!isset($info['project']) || isset($links['icon']['drupal.org'][$info['project']])) {
-      continue;
+  if (variable_get('admin_menu_issue_queues', TRUE)) {
+    // Add links to project issue queues.
+    foreach (module_list(FALSE, TRUE) as $module) {
+      $info = drupal_parse_info_file(drupal_get_path('module', $module) . '/' . $module . '.info');
+      if (!isset($info['project']) || isset($links['icon']['drupal.org'][$info['project']])) {
+        continue;
+      }
+      $links['icon']['drupal.org'][$info['project']] = array(
+        '#title' => t('@project issue queue', array('@project' => $info['name'])),
+        '#weight' => ($info['project'] == 'drupal' ? -10 : 0),
+        '#href' => 'http://drupal.org/project/issues/' . $info['project'],
+        '#options' => array(
+          'query' => array('version' => (isset($info['core']) ? $info['core'] : 'All')),
+        ),
+      );
     }
-    $links['icon']['drupal.org'][$info['project']] = array(
-      '#title' => t('@project issue queue', array('@project' => $info['name'])),
-      '#weight' => ($info['project'] == 'drupal' ? -10 : 0),
-      '#href' => 'http://drupal.org/project/issues/' . $info['project'],
-      '#options' => array(
-        'query' => array('version' => (isset($info['core']) ? $info['core'] : 'All')),
-      ),
-    );
   }
   // Add items to flush caches.
   $links['icon']['flush-cache'] = array(
@@ -570,7 +574,7 @@ function admin_menu_links_users() {
     '#description' => t('Current anonymous / authenticated users'),
     '#weight' => -90,
     '#attributes' => array('class' => array('admin-menu-action', 'admin-menu-users')),
-    '#href' => (user_access('administer users') ? 'admin/people/people' : 'user'),
+    '#href' => (user_access('administer users') ? 'admin/people' : 'user'),
   );
   return $links;
 }
@@ -658,7 +662,7 @@ function admin_menu_theme_settings() {
     '#default_value' => variable_get('admin_menu_tweak_modules', 0),
   );
   if (module_exists('util')) {
-    $form['tweaks']['admin_menu_tweak_modules']['#description'] .= '
' . t('If the Utility module was installed for this purpose, it can be safely disabled and uninstalled.') . '';
+    $form['tweaks']['admin_menu_tweak_modules']['#description'] = '
' . t('If the Utility module was installed for this purpose, it can be safely disabled and uninstalled.') . '';
   }
   $form['tweaks']['admin_menu_tweak_permissions'] = array(
     '#type' => 'checkbox',
@@ -685,6 +689,11 @@ function admin_menu_theme_settings() {
     '#title' => t('Cache menu in client-side browser'),
     '#default_value' => variable_get('admin_menu_cache_client', 1),
   );
+  $form['performance']['admin_menu_issue_queues'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Show Issue Queue links in icon menu'),
+    '#default_value' => variable_get('admin_menu_issue_queues', 1),
+  );
 
   return system_settings_form($form);
 }
@@ -763,18 +772,20 @@ function admin_menu_flush_cache($name = NULL) {
     if (!isset($caches[$name])) {
       return MENU_NOT_FOUND;
     }
+    $message = t('@title cache cleared.', array('@title' => $caches[$name]['title']));
   }
   else {
     $caches[$name] = array(
       'title' => t('Every'),
       'callback' => 'drupal_flush_all_caches',
     );
+    $message = t('All caches cleared.');
   }
   // Pass the cache to flush forward to the callback.
   $function = $caches[$name]['callback'];
   $function($name);
 
-  drupal_set_message(t('!title cache cleared.', array('!title' => $caches[$name]['title'])));
+  drupal_set_message($message);
 
   // The JavaScript injects a destination request parameter pointing to the
   // originating page, so the user is redirected back to that page. Without
@@ -907,4 +918,3 @@ function template_preprocess_admin_menu_icon(&$variables) {
 function theme_admin_menu_icon($variables) {
   return '';
 }
-
diff --git a/sites/all/modules/contrib/admin/admin_menu/admin_menu.info b/sites/all/modules/contrib/admin/admin_menu/admin_menu.info
index c6dbd892..ffd22e44 100644
--- a/sites/all/modules/contrib/admin/admin_menu/admin_menu.info
+++ b/sites/all/modules/contrib/admin/admin_menu/admin_menu.info
@@ -8,9 +8,8 @@ configure = admin/config/administration/admin_menu
 dependencies[] = system (>7.10)
 files[] = tests/admin_menu.test
 
-; Information added by Drupal.org packaging script on 2014-12-19
-version = "7.x-3.0-rc5"
+; Information added by Drupal.org packaging script on 2018-12-03
+version = "7.x-3.0-rc6"
 core = "7.x"
 project = "admin_menu"
-datestamp = "1419029284"
-
+datestamp = "1543859284"
diff --git a/sites/all/modules/contrib/admin/admin_menu/admin_menu.js b/sites/all/modules/contrib/admin/admin_menu/admin_menu.js
index 2e28b554..1e32b3d6 100644
--- a/sites/all/modules/contrib/admin/admin_menu/admin_menu.js
+++ b/sites/all/modules/contrib/admin/admin_menu/admin_menu.js
@@ -1,4 +1,8 @@
-(function($) {
+/**
+ * @file
+ */
+
+(function ($) {
 
 Drupal.admin = Drupal.admin || {};
 Drupal.admin.behaviors = Drupal.admin.behaviors || {};
@@ -139,7 +143,7 @@ Drupal.admin.getCache = function (hash, onSuccess) {
  *
  * @see toolbar.js
  */
-Drupal.admin.height = function() {
+Drupal.admin.height = function () {
   var $adminMenu = $('#admin-menu');
   var height = $adminMenu.outerHeight();
   // In IE, Shadow filter adds some extra height, so we need to remove it from
@@ -161,7 +165,7 @@ Drupal.admin.height = function() {
 Drupal.admin.attachBehaviors = function (context, settings, $adminMenu) {
   if ($adminMenu.length) {
     $adminMenu.addClass('admin-menu-processed');
-    $.each(Drupal.admin.behaviors, function() {
+    $.each(Drupal.admin.behaviors, function () {
       this(context, settings, $adminMenu);
     });
   }
@@ -206,7 +210,7 @@ Drupal.admin.behaviors.replacements = function (context, settings, $adminMenu) {
  */
 Drupal.admin.behaviors.destination = function (context, settings, $adminMenu) {
   if (settings.admin_menu.destination) {
-    $('a.admin-menu-destination', $adminMenu).each(function() {
+    $('a.admin-menu-destination', $adminMenu).each(function () {
       this.search += (!this.search.length ? '?' : '&') + Drupal.settings.admin_menu.destination;
     });
   }
diff --git a/sites/all/modules/contrib/admin/admin_menu/admin_menu.map.inc b/sites/all/modules/contrib/admin/admin_menu/admin_menu.map.inc
index f86e80cd..831e3243 100644
--- a/sites/all/modules/contrib/admin/admin_menu/admin_menu.map.inc
+++ b/sites/all/modules/contrib/admin/admin_menu/admin_menu.map.inc
@@ -80,7 +80,14 @@ function field_ui_admin_menu_map() {
         'access callback' => 'user_access',
         'access arguments' => array('administer site configuration'),
       );
-      if (!call_user_func_array($bundle_info['admin']['access callback'], $bundle_info['admin']['access arguments'])) {
+      $access_arguments = $bundle_info['admin']['access arguments'];
+      if (isset($bundle_info['admin']['real path'])) {
+        $menu_item = menu_get_item($bundle_info['admin']['real path']);
+        if (isset($menu_item['map'])) {
+          $access_arguments = menu_unserialize(serialize($access_arguments), $menu_item['map']);
+        }
+      }
+      if (!call_user_func_array($bundle_info['admin']['access callback'], $access_arguments)) {
         continue;
       }
 
diff --git a/sites/all/modules/contrib/admin/admin_menu/admin_menu.module b/sites/all/modules/contrib/admin/admin_menu/admin_menu.module
index 795ad211..f9ce3aed 100644
--- a/sites/all/modules/contrib/admin/admin_menu/admin_menu.module
+++ b/sites/all/modules/contrib/admin/admin_menu/admin_menu.module
@@ -63,7 +63,7 @@ function admin_menu_theme() {
 function admin_menu_menu() {
   // AJAX callback.
   // @see http://drupal.org/project/js
-  $items['js/admin_menu/cache'] = array(
+  $items['js/admin_menu/cache/%'] = array(
     'page callback' => 'admin_menu_js_cache',
     'delivery callback' => 'admin_menu_deliver',
     'access arguments' => array('access administration menu'),
@@ -78,7 +78,7 @@ function admin_menu_menu() {
     'file' => 'system.admin.inc',
     'file path' => drupal_get_path('module', 'system'),
   );
-  $items['admin/config/administration/admin_menu'] = array(
+  $items['admin/config/administration/admin-menu'] = array(
     'title' => 'Administration menu',
     'description' => 'Adjust administration menu settings.',
     'page callback' => 'drupal_get_form',
@@ -211,7 +211,7 @@ function admin_menu_page_build(&$page) {
     // @todo Drupal.behaviors.adminMenuMarginTop is obsolete, but
     //   hook_page_build() does not allow to set a CSS class on the body yet.
     // @see http://drupal.org/node/1473548, http://drupal.org/node/1194528
-    //$page['#attributes']['class'][] = 'admin-menu';
+    // $page['#attributes']['class'][] = 'admin-menu';
   }
   if ($setting = variable_get('admin_menu_position_fixed', 1)) {
     $settings['position_fixed'] = $setting;
@@ -230,7 +230,7 @@ function admin_menu_page_build(&$page) {
   if ($_GET['q'] == 'admin/modules' || strpos($_GET['q'], 'admin/modules/list') === 0) {
     $settings['tweak_modules'] = variable_get('admin_menu_tweak_modules', 0);
   }
-  if ($_GET['q'] == 'admin/people/permissions' || $_GET['q'] == 'admin/people/permissions/list') {
+  if (strpos($_GET['q'], 'admin/people/permissions') === 0) {
     $settings['tweak_permissions'] = variable_get('admin_menu_tweak_permissions', 0);
   }
 
@@ -502,7 +502,6 @@ function admin_menu_output($complete = FALSE) {
 
     // @todo Move the below callbacks into hook_admin_menu_build()
     //   implementations (and $module.admin_menu.inc).
-
     // Add administration menu.
     if (!empty($components['admin_menu.menu']) || $complete) {
       $content['menu'] = admin_menu_links_menu(admin_menu_tree('management'));
@@ -548,7 +547,10 @@ function admin_menu_output($complete = FALSE) {
 
   // Store the new hash for this user.
   if (!empty($_COOKIE['has_js']) && !$complete) {
-    admin_menu_cache_set($cid, md5($content));
+    $cache = cache_get($cid, 'cache_admin_menu');
+    if (!$cache || !isset($cache->data)) {
+      admin_menu_cache_set($cid, md5($content));
+    }
   }
 
   return $content;
@@ -603,11 +605,13 @@ function admin_menu_admin_menu_output_build(&$content) {
  * Implements hook_admin_menu_output_alter().
  */
 function admin_menu_admin_menu_output_alter(&$content) {
-  foreach ($content['menu'] as $key => $link) {
-    // Move local tasks on 'admin' into icon menu.
-    if ($key == 'admin/tasks' || $key == 'admin/index') {
-      $content['icon']['icon'][$key] = $link;
-      unset($content['menu'][$key]);
+  if (!empty($content['menu'])) {
+    foreach ($content['menu'] as $key => $link) {
+      // Move local tasks on 'admin' into icon menu.
+      if ($key == 'admin/tasks' || $key == 'admin/index') {
+        $content['icon']['icon'][$key] = $link;
+        unset($content['menu'][$key]);
+      }
     }
   }
 }
@@ -677,6 +681,13 @@ function theme_admin_menu_links($variables) {
         $elements[$path]['#options']['attributes']['class'][] = 'admin-menu-destination';
       }
 
+      // If the path has an alias replace the href with the alias.
+      if (module_exists('path')) {
+        if ($alias = drupal_get_path_alias($elements[$path]['#href'])) {
+          $elements[$path]['#href'] = $alias;
+        }
+      }
+
       $link = l($elements[$path]['#title'], $elements[$path]['#href'], $elements[$path]['#options']);
     }
     // Handle plain text items, but do not interfere with menu additions.
@@ -751,7 +762,7 @@ function admin_menu_translated_menu_link_alter(&$item, $map) {
     }
   }
 
-  // Don't waste cycles altering items that are not visible
+  // Don't waste cycles altering items that are not visible.
   if (!$item['access']) {
     return;
   }
@@ -795,8 +806,8 @@ function admin_menu_flush_caches($uid = NULL) {
   cache_clear_all($cid, 'cache_menu', TRUE);
   // Flush client-side cache hashes.
   drupal_static_reset('admin_menu_cache_get');
-  // db_table_exists() required for SimpleTest.
-  if (db_table_exists('cache_admin_menu')) {
+  // If cache_admin_menu is not empty, flush it.
+  if (!cache_is_empty('cache_admin_menu')) {
     cache_clear_all(isset($uid) ? $cid : '*', 'cache_admin_menu', TRUE);
   }
 }
diff --git a/sites/all/modules/contrib/admin/admin_menu/admin_menu.uid1.css b/sites/all/modules/contrib/admin/admin_menu/admin_menu.uid1.css
index e375cfe6..105fd242 100644
--- a/sites/all/modules/contrib/admin/admin_menu/admin_menu.uid1.css
+++ b/sites/all/modules/contrib/admin/admin_menu/admin_menu.uid1.css
@@ -1,4 +1,3 @@
-
 /**
  * @file
  * Administration menu color override for uid1.
diff --git a/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar-rtl.css b/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar-rtl.css
new file mode 100644
index 00000000..a159034d
--- /dev/null
+++ b/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar-rtl.css
@@ -0,0 +1,4 @@
+#admin-menu > div > .dropdown > li > a,
+#admin-menu > div > .dropdown > li > span {
+  border-left: 0;
+}
diff --git a/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar.css b/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar.css
index a3e9f3e3..f1bc0935 100644
--- a/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar.css
+++ b/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar.css
@@ -1,4 +1,3 @@
-
 /**
  * @file
  * Toolbar style for Administration menu.
@@ -63,8 +62,9 @@ body div#toolbar.toolbar {
   background: url(toolbar.png) no-repeat 0 -45px;
   text-indent: -9999px;
 }
-#admin-menu > div > .dropdown > li > a {
-  border-right: 0;
+#admin-menu > div > .dropdown > li > a,
+#admin-menu > div > .dropdown > li > span {
+  border-right: 0; /* LTR */
   margin-bottom: 4px;
   padding: 2px 10px 3px;
 }
@@ -142,4 +142,3 @@ body div#toolbar.toolbar {
 #admin-menu .shortcut-toolbar a {
   display: block;
 }
-
diff --git a/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar.info b/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar.info
index fa4ca095..340ced07 100644
--- a/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar.info
+++ b/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar.info
@@ -4,9 +4,8 @@ package = Administration
 core = 7.x
 dependencies[] = admin_menu
 
-; Information added by Drupal.org packaging script on 2014-12-19
-version = "7.x-3.0-rc5"
+; Information added by Drupal.org packaging script on 2018-12-03
+version = "7.x-3.0-rc6"
 core = "7.x"
 project = "admin_menu"
-datestamp = "1419029284"
-
+datestamp = "1543859284"
diff --git a/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar.install b/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar.install
index bf067d78..f6449dcd 100644
--- a/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar.install
+++ b/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar.install
@@ -34,4 +34,3 @@ function admin_menu_toolbar_update_6300() {
     ->condition('name', 'admin_menu_toolbar')
     ->execute();
 }
-
diff --git a/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar.module b/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar.module
index c6111bdc..0f5c0662 100644
--- a/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar.module
+++ b/sites/all/modules/contrib/admin/admin_menu/admin_menu_toolbar/admin_menu_toolbar.module
@@ -115,4 +115,3 @@ function admin_menu_toolbar_admin_menu_output_alter(&$content) {
     $content['account']['account']['#options']['html'] = TRUE;
   }
 }
-
diff --git a/sites/all/modules/contrib/admin/admin_menu/tests/admin_menu.test b/sites/all/modules/contrib/admin/admin_menu/tests/admin_menu.test
index 4b48c9ab..b7c611d7 100644
--- a/sites/all/modules/contrib/admin/admin_menu/tests/admin_menu.test
+++ b/sites/all/modules/contrib/admin/admin_menu/tests/admin_menu.test
@@ -16,7 +16,10 @@ class AdminMenuWebTestCase extends DrupalWebTestCase {
     'admin_menu' => 'access administration menu',
   );
 
-  function setUp() {
+  /**
+   *
+   */
+  public function setUp() {
     // Enable admin menu module and any other modules.
     $modules = func_get_args();
     $modules = isset($modules[0]) ? $modules[0] : $modules;
@@ -108,12 +111,17 @@ class AdminMenuWebTestCase extends DrupalWebTestCase {
     $xpath = '//div[@id="admin-menu"]/div/ul' . implode('/parent::li/ul', $xpath);
     $this->assertNoElementByXPath($xpath, $args, $message . ' link not found.');
   }
+
 }
 
 /**
  * Tests menu links depending on user permissions.
  */
 class AdminMenuPermissionsTestCase extends AdminMenuWebTestCase {
+
+  /**
+   *
+   */
   public static function getInfo() {
     return array(
       'name' => 'Menu link access permissions',
@@ -122,14 +130,17 @@ class AdminMenuPermissionsTestCase extends AdminMenuWebTestCase {
     );
   }
 
-  function setUp() {
+  /**
+   *
+   */
+  public function setUp() {
     parent::setUp(array('node'));
   }
 
   /**
    * Test that the links are added to the page (no JS testing).
    */
-  function testPermissions() {
+  public function testPermissions() {
     module_enable(array('contact'));
     $this->resetAll();
 
@@ -140,7 +151,7 @@ class AdminMenuPermissionsTestCase extends AdminMenuWebTestCase {
     // Create a user who
     // - can access content overview
     // - cannot access drupal.org links
-    // - cannot administer Contact module
+    // - cannot administer Contact module.
     $permissions = $this->basePermissions + array(
       'access content overview',
     );
@@ -156,7 +167,7 @@ class AdminMenuPermissionsTestCase extends AdminMenuWebTestCase {
     // Create a user "reversed" to the above; i.e., who
     // - cannot access content overview
     // - can access drupal.org links
-    // - can administer Contact module
+    // - can administer Contact module.
     $permissions = $this->basePermissions + array(
       'display drupal links',
       'administer contact forms',
@@ -172,7 +183,7 @@ class AdminMenuPermissionsTestCase extends AdminMenuWebTestCase {
   /**
    * Tests handling of links pointing to category/overview pages.
    */
-  function testCategories() {
+  public function testCategories() {
     // Create a user with minimum permissions.
     $admin_user = $this->drupalCreateUser($this->basePermissions);
     $this->drupalLogin($admin_user);
@@ -201,7 +212,7 @@ class AdminMenuPermissionsTestCase extends AdminMenuWebTestCase {
   /**
    * Tests that user role and permission changes are properly taken up.
    */
-  function testPermissionChanges() {
+  public function testPermissionChanges() {
     // Create a user who is able to change permissions.
     $permissions = $this->basePermissions + array(
       'administer permissions',
@@ -253,12 +264,17 @@ class AdminMenuPermissionsTestCase extends AdminMenuWebTestCase {
     // Verify that Structure » Content types does not appear.
     $this->assertNoLinkTrailByTitle(array(t('Structure'), t('Content types')));
   }
+
 }
 
 /**
  * Tests appearance, localization, and escaping of dynamic links.
  */
 class AdminMenuDynamicLinksTestCase extends AdminMenuWebTestCase {
+
+  /**
+   *
+   */
   public static function getInfo() {
     return array(
       'name' => 'Dynamic links',
@@ -267,14 +283,17 @@ class AdminMenuDynamicLinksTestCase extends AdminMenuWebTestCase {
     );
   }
 
-  function setUp() {
+  /**
+   *
+   */
+  public function setUp() {
     parent::setUp(array('node'));
   }
 
   /**
    * Tests node type links.
    */
-  function testNode() {
+  public function testNode() {
     $type = $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
     // Create a content-type with special characters.
     $type = $this->drupalCreateContentType(array('type' => 'special', 'name' => 'Cool & Special'));
@@ -324,7 +343,7 @@ class AdminMenuDynamicLinksTestCase extends AdminMenuWebTestCase {
   /**
    * Tests Add content links.
    */
-  function testNodeAdd() {
+  public function testNodeAdd() {
     $type = $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
 
     // Verify that "Add content" does not appear for unprivileged users.
@@ -359,12 +378,17 @@ class AdminMenuDynamicLinksTestCase extends AdminMenuWebTestCase {
       t('Add content'),
     ));
   }
+
 }
 
 /**
  * Tests appearance of different types of links.
  */
 class AdminMenuLinkTypesTestCase extends AdminMenuWebTestCase {
+
+  /**
+   *
+   */
   public static function getInfo() {
     return array(
       'name' => 'Link types',
@@ -373,7 +397,10 @@ class AdminMenuLinkTypesTestCase extends AdminMenuWebTestCase {
     );
   }
 
-  function setUp() {
+  /**
+   *
+   */
+  public function setUp() {
     parent::setUp(array('help'));
 
     $permissions = module_invoke_all('permission');
@@ -385,7 +412,7 @@ class AdminMenuLinkTypesTestCase extends AdminMenuWebTestCase {
   /**
    * Tests appearance of different router item link types.
    */
-  function testLinkTypes() {
+  public function testLinkTypes() {
     // Verify that MENU_NORMAL_ITEMs appear.
     $this->assertLinkTrailByTitle(array(
       t('Configuration'),
@@ -420,12 +447,17 @@ class AdminMenuLinkTypesTestCase extends AdminMenuWebTestCase {
       ':title' => t('Index'),
     ), "Icon » Index link found.");
   }
+
 }
 
 /**
  * Tests customized menu links.
  */
 class AdminMenuCustomizedTestCase extends AdminMenuWebTestCase {
+
+  /**
+   *
+   */
   public static function getInfo() {
     return array(
       'name' => 'Customized links',
@@ -434,7 +466,10 @@ class AdminMenuCustomizedTestCase extends AdminMenuWebTestCase {
     );
   }
 
-  function setUp() {
+  /**
+   *
+   */
+  public function setUp() {
     parent::setUp(array('menu'));
 
     $this->admin_user = $this->drupalCreateUser($this->basePermissions + array(
@@ -446,7 +481,7 @@ class AdminMenuCustomizedTestCase extends AdminMenuWebTestCase {
   /**
    * Test disabled custom links.
    */
-  function testCustomDisabled() {
+  public function testCustomDisabled() {
     $type = $this->drupalCreateContentType();
     $node = $this->drupalCreateNode(array('type' => $type->type));
     $text = $this->randomName();
@@ -488,7 +523,7 @@ class AdminMenuCustomizedTestCase extends AdminMenuWebTestCase {
   /**
    * Tests external links.
    */
-  function testCustomExternal() {
+  public function testCustomExternal() {
     // Add a custom link to the node to the menu.
     $edit = array(
       'link_path' => 'http://example.com',
@@ -516,5 +551,5 @@ class AdminMenuCustomizedTestCase extends AdminMenuWebTestCase {
       ':path' => $path,
     ))->fetchField();
   }
-}
 
+}
diff --git a/sites/all/modules/contrib/admin/entity_translation_export_import/entity_translation_export_import.admin.inc b/sites/all/modules/contrib/admin/entity_translation_export_import/entity_translation_export_import.admin.inc
index 34a0d09f..c3aaea1f 100644
--- a/sites/all/modules/contrib/admin/entity_translation_export_import/entity_translation_export_import.admin.inc
+++ b/sites/all/modules/contrib/admin/entity_translation_export_import/entity_translation_export_import.admin.inc
@@ -465,12 +465,33 @@ function entity_translation_export_import_import_translation($data){
   $bundle = $data['Bundle (Not Editable)'];
   $entity_id = $data['Entity ID (Not Editable)'];
 
-  $entities = entity_load($entity_type, array($entity_id));
+  if(empty($entity_id)) {
+    if ($entity_type == 'taxonomy_term') {
+      // Handle taxonomy term entity.
+      $vocab = taxonomy_vocabulary_machine_name_load($bundle);
+      $term = new stdClass();
+      $term->name = '';
+      $term->vid = $vocab->vid;
+      taxonomy_term_save($term);
 
-  // If cannot load entity.
-  if(empty($entities)){
-    drupal_set_message(t('Entity with id @id could not be found in database.', array('@id' => $entity_id)));
-    return FALSE;
+      $entities = entity_load($entity_type, array($term->tid));
+    }
+    else if($entity_type == 'node') {
+      // Handle node entity.
+      $node = new stdClass();
+      $node->type = $bundle;
+      node_object_prepare($node);  //Set some default values
+      $node->status = 1;
+      $node->promote = 0;
+      $node->sticky = 0;
+      $node->uid = $user->uid;
+     node_save($node);
+
+     $entities = entity_load($entity_type, array($node->nid));
+    }
+  }
+  else {
+    $entities = entity_load($entity_type, array($entity_id));
   }
 
   // Get the entity.
diff --git a/sites/all/modules/contrib/admin/entity_translation_export_import/entity_translation_export_import.info b/sites/all/modules/contrib/admin/entity_translation_export_import/entity_translation_export_import.info
index fd93689a..5e4ea753 100644
--- a/sites/all/modules/contrib/admin/entity_translation_export_import/entity_translation_export_import.info
+++ b/sites/all/modules/contrib/admin/entity_translation_export_import/entity_translation_export_import.info
@@ -5,9 +5,9 @@ package = Multilingual - Entity Translation
 dependencies[] = entity
 dependencies[] = entity_translation
 
-; Information added by drupal.org packaging script on 2013-09-30
-version = "7.x-1.0-beta3+0-dev"
+; Information added by Drupal.org packaging script on 2017-02-08
+version = "7.x-1.0-beta4"
 core = "7.x"
 project = "entity_translation_export_import"
-datestamp = "1380577025"
+datestamp = "1486567689"
 
diff --git a/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.components.inc b/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.components.inc
index 35934551..f1ab2561 100644
--- a/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.components.inc
+++ b/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.components.inc
@@ -1,13 +1,13 @@
  array(),
       'description'               => '',
       'available_countries'       => array(),
+      'default_country'           => '',
+      'format_handlers'           => array(),
       'csv_separate'              => 0,
     ),
   );
@@ -30,21 +32,22 @@ function _webform_defaults_addressfield() {
 
 /**
  * Generate the form for editing a component.
+ *
  * Create a set of form elements to be displayed on the form for editing this
  * component. Use care naming the form items, as this correlates directly to the
  * database schema. The component "Name" and "Description" fields are added to
  * every component type and are not necessary to specify here (although they
  * may be overridden if desired).
  *
- * @param $component
+ * @param mixed $component
  *   A Webform component array.
  *
- * @return
+ * @return array
  *   An array of form items to be displayed on the edit component page
  */
 function _webform_edit_addressfield($component) {
   $form = array();
-  
+
   $form['extra']['available_countries'] = array(
     '#type' => 'select',
     '#multiple' => TRUE,
@@ -53,6 +56,21 @@ function _webform_edit_addressfield($component) {
     '#options' => _addressfield_country_options_list(),
     '#default_value' => $component['extra']['available_countries'],
   );
+  $form['extra']['default_country'] = array(
+    '#type' => 'select',
+    '#multiple' => FALSE,
+    '#title' => t('Default country'),
+    '#description' => t('Select which country should be selected as the default.'),
+    '#options' => array_merge(array(0 => t('- None -')), _addressfield_country_options_list()),
+    '#default_value' => $component['extra']['default_country'],
+  );
+  $form['extra']['format_handlers'] = array(
+    '#type' => 'checkboxes',
+    '#title' => t('Format handlers'),
+    '#options' => addressfield_format_plugins_options(),
+    '#required' => TRUE,
+    '#default_value' => !empty($component['extra']['format_handlers']) ? $component['extra']['format_handlers'] : array('address'),
+  );
   $form['extra']['csv_separate'] = array(
     '#type' => 'radios',
     '#title' => t('CSV download'),
@@ -69,18 +87,21 @@ function _webform_edit_addressfield($component) {
 /**
  * Render a Webform component to be part of a form.
  *
- * @param $component
+ * @param mixed $component
  *   A Webform component array.
- * @param $value
+ * @param mixed $value
  *   If editing an existing submission or resuming a draft, this will contain
  *   an array of values to be shown instead of the default in the component
  *   configuration. This value will always be an array, keyed numerically for
  *   each value saved in this field.
- * @param $filter
+ * @param bool $filter
  *   Whether or not to filter the contents of descriptions and values when
  *   rendering the component. Values need to be unfiltered to be editable by
  *   Form Builder.
  *
+ * @return array
+ *   Form element.
+ *
  * @see _webform_client_form_add_component()
  */
 function _webform_render_addressfield($component, $value = NULL, $filter = TRUE) {
@@ -98,55 +119,98 @@ function _webform_render_addressfield($component, $value = NULL, $filter = TRUE)
       'description',
     ),
   );
-  
+
   $available = !empty($component['extra']['available_countries']) ? $component['extra']['available_countries'] : NULL;
-    
-  // Get the current address
-  if (!empty($value[0])) {
-    if (is_string($value[0])) {
-      $address = unserialize($value[0]);
+
+  // Get the current address.
+  $address = _addressfield_tokens_expand_value($value);
+  if (empty($address)) {
+    if (!empty($component['value'])) {
+      $address = $component['value'];
     }
     else {
-      $address = $value[0];
+      $address = _webform_addressfield($component['cid']);
     }
   }
-  elseif (!empty($component['value'])) {
-    $address = $component['value'];
-  }
-  else {
-    $address = _webform_addressfield($component['cid']);
-  }
   if (empty($address)) {
-    $address = addressfield_default_values($available);
+    $address = _webform_addressfield_default_values($available, $component);
   }
-  
+
   // Generate the address form.
   $context = array(
     'mode' => 'form',
+    'instance' => array(
+      'required' => $component['required'],
+    ),
+    'form_key' => $component['form_key'],
   );
-  $element += addressfield_generate($address, array('address'), $context);
-  
-  if (!empty($available)) {
-    $element['country']['#options'] = array_intersect_key($element['country']['#options'], $available);
+  $handlers = !empty($component['extra']['format_handlers']) ? $component['extra']['format_handlers'] : array('address');
+  $element += addressfield_generate($address, $handlers, $context);
+
+  if (empty($address['country'])) {
+    $element['street_block']['#access'] = FALSE;
+    $element['locality_block']['#access'] = FALSE;
   }
-  $element['country']['#element_validate'] = array('_webform_addressfield_country_validate');
-  $element['country']['#cid'] = $component['cid'];
-  $element['country']['#limit_validation_errors'] = array();
-  
+
+  if (isset($element['country'])) {
+    if (!empty($available)) {
+      $element['country']['#options'] = array_intersect_key($element['country']['#options'], $available);
+
+      // Hide the country element only if there is one option and the whole field
+      // is required, otherwise there will always be an additional None option.
+      // @see addressfield_format_address_hide_country()
+      if (!empty($handlers['address-hide-country']) && count($element['country']['#options']) == 1 && $component['required']) {
+        $element['country']['#access'] =  FALSE;
+      }
+    }
+    $element['country']['#default_value'] = $address['country'];
+    $element['country']['#element_validate'] = array('_webform_addressfield_country_validate');
+    $element['country']['#cid'] = $component['cid'];
+    $element['country']['#limit_validation_errors'] = array();
+  }
+
   $form_state = array();
-  drupal_alter('field_widget_addressfield_standard_form', $element, $form_state, $context); 
-  
+  drupal_alter('field_widget_addressfield_standard_form', $element, $form_state, $context);
+
   return $element;
 }
 
+function _webform_addressfield_default_values($available, $component) {
+  $default_country = !empty($component['extra']['default_country'])
+    ? $component['extra']['default_country']
+    : addressfield_tokens_default_country();
+  $default_values = array(
+    'country' => $default_country,
+    'name_line' => '',
+    'first_name' => '',
+    'last_name' => '',
+    'organisation_name' => '',
+    'administrative_area' => '',
+    'sub_administrative_area' => '',
+    'locality' => '',
+    'dependent_locality' => '',
+    'postal_code' => '',
+    'thoroughfare' => '',
+    'premise' => '',
+    'sub_premise' => '',
+    'data' => '',
+  );
+  return ($default_values);
+}
+
 /**
- * Stores an addressfield submitted in a webform component.  Ideally we should store
- * it in the $form_state instead, but there appears to be no way to get it to actually
- * pass through to _webform_render_addressfield().
- * 
- * @param $cid integer The ID of the webform component.
- * @param $address array If set, this address will be stored with the given $cid.
- * @return array The address stored with the given $cid, if there is one; otherwise, NULL.
+ * Stores an addressfield submitted in a webform component.
+ *
+ * Ideally store it in the $form_state instead, but there appears to be no way
+ * to get it to actually pass through to _webform_render_addressfield().
+ *
+ * @param int $cid
+ *   The ID of the webform component.
+ * @param mixed $address
+ *   If set, this address will be stored with the given $cid.
+ *
+ * @return array
+ *   The address stored with the given $cid, if there is one; otherwise, NULL.
  */
 function _webform_addressfield($cid, $address = NULL) {
   $out = &drupal_static(__FUNCTION__, array());
@@ -160,40 +224,41 @@ function _webform_addressfield($cid, $address = NULL) {
 }
 
 /**
- * Validates a country, and if it changes, rebuilds the form for the new country
+ * Validates a country, and if changed, rebuilds the form for the new country.
  */
 function _webform_addressfield_country_validate(&$element, &$form_state) {
   // If the country was changed, rebuild the form.
-  if ($element['#default_value'] != $element['#value']) {
+  if (!isset($element['#default_value']) || $element['#default_value'] != $element['#value']) {
     $form_state['rebuild'] = TRUE;
   }
-  
+
   $cid = $element['#cid'];
   $parents = $element['#parents'];
   array_pop($parents);
 
   // Search through the form values to find the current address.
   $address = drupal_array_get_nested_value($form_state['values'], $parents);
-  
+
   _webform_addressfield($cid, $address);
 }
 
 /**
  * Display the result of a submission for a component.
+ *
  * The output of this function will be displayed under the "Results" tab then
  * "Submissions". This should output the saved data in some reasonable manner.
  *
- * @param $component
+ * @param mixed $component
  *   A Webform component array.
- * @param $value
+ * @param mixed $value
  *   An array of information containing the submission result, directly
  *   correlating to the webform_submitted_data database table schema.
- * @param $format
+ * @param string $format
  *   Either 'html' or 'text'. Defines the format that the content should be
  *   returned as. Make sure that returned content is run through check_plain()
  *   or other filtering functions when returning HTML.
  *
- * @return
+ * @return array
  *   A renderable element containing at the very least these properties:
  *    - #title
  *    - #weight
@@ -205,27 +270,23 @@ function _webform_addressfield_country_validate(&$element, &$form_state) {
  *   (such as wrapping the text) or as HTML (ensuring consistent output).
  */
 function _webform_display_addressfield($component, $value, $format = 'html') {
-  $address = NULL;
-  if (isset($value[0])) {
-    $address = $value[0];
-    if (is_string($address)) {
-      $address = unserialize($address);
-    }
-  }
+  $address = _addressfield_tokens_expand_value($value);
   return array(
     '#title'          => $component['name'],
     '#weight'         => $component['weight'],
     '#theme'          => $format == 'html' ? 'addressfield_formatter' : 'addressfield_formatter__linear',
-    '#theme_wrappers' => $format == 'html' ? array('webform_element' ) : array('webform_element_text'),
+    '#theme_wrappers' => $format == 'html' ? array('webform_element') : array('webform_element_text'),
     '#post_render'    => array('webform_element_wrapper'),
     '#component'      => $component,
     '#format'         => $format,
-    '#address'        => $address,
+    '#address'        => $address ? $address : NULL,
+    '#handlers'       => $component['extra']['format_handlers'],
   );
 }
 
 /**
  * A hook for changing the input values before saving to the database.
+ *
  * Webform expects a component to consist of a single field, or a single array
  * of fields. If you have a component that requires a deeper form tree
  * you must flatten the data into a single array using this callback
@@ -234,12 +295,12 @@ function _webform_display_addressfield($component, $value, $format = 'html') {
  * Note that Webform will save the result of this function directly into the
  * database.
  *
- * @param $component
+ * @param mixed $component
  *   A Webform component array.
- * @param $value
+ * @param mixed $value
  *   The POST data associated with the user input.
  *
- * @return
+ * @return array
  *   An array of values to be saved into the database. Note that this should be
  *   a numerically keyed array.
  */
@@ -249,88 +310,92 @@ function _webform_submit_addressfield($component, $value) {
 
 /**
  * Calculate and returns statistics about results for this component.
+ *
  * This takes into account all submissions to this webform. The output of this
  * function will be displayed under the "Results" tab then "Analysis".
  *
- * @param $component
+ * @param mixed $component
  *   An array of information describing the component, directly correlating to
  *   the webform_component database schema.
- * @param $sids
+ * @param mixed $sids
  *   An optional array of submission IDs (sid). If supplied, the analysis will
  *   be limited to these sids.
- * @param $single
+ * @param bool $single
  *   Boolean flag determining if the details about a single component are being
  *   shown. May be used to provided detailed information about a single
  *   component's analysis, such as showing "Other" options within a select list.
  *
- * @return
+ * @return array
  *   An array of data rows, each containing a statistic for this component's
  *   submissions.
  */
 function _webform_analysis_addressfield($component, $sids = array(), $single = FALSE) {
-  // TODO Update this function
-  
+  // @todo Update this function
+
   // Generate the list of options and questions.
   $query = db_select('webform_submitted_data', 'wsd')
     ->fields('wsd', array('data'))
     ->condition('nid', $component['nid'])
     ->condition('cid', $component['cid']);
-    
-  if ( count($sids) ) {
+
+  if (count($sids)) {
     $query->condition('sid', $sids, 'IN');
   }
   $non_blanks = 0;
   $submissions = 0;
   $results = $query->execute();
   foreach ($results as $row) {
-    if ( drupal_strlen(trim($row->data)) > 0 ) {
+    if (drupal_strlen(trim($row->data)) > 0) {
       $non_blanks++;
     }
     $submissions++;
   }
   $rows[0] = array(
     t('Left Blank'),
-    ( $submissions - $non_blanks )
+    ($submissions - $non_blanks),
   );
   $rows[1] = array(
     t('User entered value'),
-    $non_blanks
+    $non_blanks,
   );
-  return $rows;
+  return array('table_rows' => $rows);
 }
 
 /**
  * Return the result of a component value for display in a table.
+ *
  * The output of this function will be displayed under the "Results" tab then
  * "Table".
  *
- * @param $component
+ * @param mixed $component
  *   A Webform component array.
- * @param $value
+ * @param mixed $value
  *   An array of information containing the submission result, directly
  *   correlating to the webform_submitted_data database schema.
  *
- * @return
+ * @return string
  *   Textual output formatted for human reading.
  */
 function _webform_table_addressfield($component, $value) {
-  if (!empty($value[0])) {
-    return theme('addressfield_formatter', array( 'address' => $value[0] ));
+  $address = _addressfield_tokens_expand_value($value);
+  if ($address) {
+    return theme('addressfield_formatter', array('address' => $address));
   }
   return '';
 }
 
 /**
  * Return the header for this component to be displayed in a CSV file.
+ *
  * The output of this function will be displayed under the "Results" tab then
  * "Download".
  *
- * @param $component
+ * @param mixed $component
  *   A Webform component array.
- * @param $export_options
+ * @param mixed $export_options
  *   An array of options that may configure export of this field.
  *
- * @return
+ * @return array
  *   An array of data to be displayed in the first three rows of a CSV file, not
  *   including either prefixed or trailing commas.
  */
@@ -340,7 +405,6 @@ function _webform_csv_headers_addressfield($component, $export_options) {
     $header[0] = array();
     $header[1] = array();
     $header[2] = array();
-    
     foreach (addressfield_tokens_property_names() as $key => $name) {
       $header[0][] = '';
       $header[1][] = (empty($header[1])) ? $component['name'] : '';
@@ -349,7 +413,7 @@ function _webform_csv_headers_addressfield($component, $export_options) {
   }
   else {
     $header[0] = array('');
-    $header[1] = array();
+    $header[1] = array('');
     $header[2] = array($component['name']);
   }
   return $header;
@@ -357,34 +421,56 @@ function _webform_csv_headers_addressfield($component, $export_options) {
 
 /**
  * Format the submitted data of a component for CSV downloading.
+ *
  * The output of this function will be displayed under the "Results" tab then
  * "Download".
  *
- * @param $component
+ * @param mixed $component
  *   A Webform component array.
- * @param $export_options
+ * @param mixed $export_options
  *   An array of options that may configure export of this field.
- * @param $value
+ * @param mixed $value
  *   An array of information containing the submission result, directly
  *   correlating to the webform_submitted_data database schema.
  *
- * @return
+ * @return array
  *   An array of items to be added to the CSV file. Each value within the array
  *   will be another column within the file. This function is called once for
  *   every row of data.
  */
 function _webform_csv_data_addressfield($component, $export_options, $value) {
+  $address = _addressfield_tokens_expand_value($value);
   if (!empty($component['extra']['csv_separate']) && $component['extra']['csv_separate'] == 1) {
+    // Each address component should be in a separate column.
     $return = array();
     foreach (addressfield_tokens_property_names() as $key => $name) {
-      $return[] = (isset($value[0][$key])) ? $value[0][$key] : '';
+      $return[] = (isset($address[$key])) ? $address[$key] : '';
     }
     return $return;
   }
   else {
-    if (!empty($value[0])) {
-      return theme('addressfield_formatter__linear', array( 'address' => $value[0] ));
+    // The entire address should be displayed in the one column.
+    if ($address) {
+      return theme('addressfield_formatter__linear', array('address' => $address));
     }
     return '';
   }
 }
+
+/**
+ * Expand a raw address submission as loaded from the database to an array.
+ *
+ * @param string $value
+ *   An array of information containing the submission result, directly
+ *   correlating to the {webform_submitted_data} database schema.
+ *
+ * @return array|false
+ *   An associative array of address fields, or FALSE on failure.
+ */
+function _addressfield_tokens_expand_value($value) {
+  if (isset($value[0]) && is_string($value[0])) {
+    return unserialize($value[0]);
+  }
+  return FALSE;
+}
+
diff --git a/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.info b/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.info
index 833cbe53..d5409935 100644
--- a/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.info
+++ b/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.info
@@ -1,16 +1,13 @@
-
-name = Address Field Tokens
-description = Creates tokens for address fields, adds new addressfield renders, and adds webform integration.
-core = 7.x
-package = Fields
-
-dependencies[] = addressfield
-dependencies[] = entity_token
-dependencies[] = token
+name = Address Field Tokens
+description = Creates tokens for address fields, adds new addressfield renders, and adds webform integration.
+core = 7.x
+package = Fields
+dependencies[] = addressfield
+dependencies[] = entity_token
+dependencies[] = token
 
-; Information added by Drupal.org packaging script on 2014-10-29
-version = "7.x-1.5"
+; Information added by Drupal.org packaging script on 2018-10-11
+version = "7.x-1.13"
 core = "7.x"
 project = "addressfield_tokens"
-datestamp = "1414599829"
-
+datestamp = "1539260884"
diff --git a/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.module b/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.module
index 92ad204d..e9143019 100644
--- a/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.module
+++ b/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.module
@@ -4,9 +4,12 @@
  * Main components.
  */
 
+/**
+ * Implements hook_menu().
+ */
 function addressfield_tokens_menu() {
   $items = array();
-  
+
   $items['admin/config/regional/address'] = array(
     'title' => 'Addresses',
     'description' => 'Settings for address fields and tokens',
@@ -16,7 +19,7 @@ function addressfield_tokens_menu() {
     'file' => 'addressfield_tokens.admin.inc',
     'type' => MENU_NORMAL_ITEM,
   );
-  
+
   return $items;
 }
 
@@ -34,19 +37,31 @@ function addressfield_tokens_theme($existing, $type, $theme, $path) {
       'file' => 'addressfield_tokens.theme.inc',
     ),
     'addressfield_formatter__linear' => array(
-      'variables' => array('address' => NULL, 'premise' => TRUE, 'organisation_name' => TRUE, 'name_line' => TRUE),
+      'variables' => array(
+        'address' => NULL,
+        'premise' => TRUE,
+        'organisation_name' => TRUE,
+        'name_line' => TRUE,
+      ),
       'file' => 'addressfield_tokens.theme.inc',
     ),
     'addressfield_formatter__components' => array(
       'variables' => array(
         'address' => NULL,
-        'components' => array('thoroughfare', 'premise', 'locality', 'administrative_area', 'postal_code', 'country'),
+        'components' => array(
+          'thoroughfare',
+          'premise',
+          'locality',
+          'administrative_area',
+          'postal_code',
+          'country',
+        ),
         'separator' => ', ',
       ),
       'file' => 'addressfield_tokens.theme.inc',
     ),
   );
-  
+
   return $theme;
 }
 
@@ -75,7 +90,14 @@ function addressfield_tokens_field_formatter_info() {
       'label' => t('Address components'),
       'field types' => array('addressfield'),
       'settings' => array(
-        'components' => array('thoroughfare', 'premise', 'locality', 'administrative_area', 'postal_code', 'country'),
+        'components' => array(
+          'thoroughfare',
+          'premise',
+          'locality',
+          'administrative_area',
+          'postal_code',
+          'country',
+        ),
         'separator' => ', ',
       ),
     ),
@@ -103,14 +125,13 @@ function addressfield_tokens_field_formatter_settings_form($field, $instance, $v
     $element['separator'] = array(
       '#type' => 'textfield',
       '#title' => t('Separator'),
-      '#description' => t('The separator to use between components. Use \n for a line break.'),
+      '#description' => t('The separator to use between components. Use br tag for a line break.'),
       '#default_value' => $settings['separator'],
     );
   }
 
   return $element;
 }
-
 /**
  * Implements hook_field_formatter_settings_summary().
  */
@@ -132,7 +153,7 @@ function addressfield_tokens_field_formatter_settings_summary($field, $instance,
  */
 function addressfield_tokens_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
   $element = array();
-  
+
   switch ($display['type']) {
     case 'addressfield_citystate':
       $theme = array('addressfield_formatter__citystate', 'addressfield_formatter');
@@ -147,7 +168,7 @@ function addressfield_tokens_field_formatter_view($entity_type, $entity, $field,
         );
       }
       break;
-      
+
     case 'addressfield_linear':
       $theme = array('addressfield_formatter__linear', 'addressfield_formatter');
 
@@ -161,7 +182,7 @@ function addressfield_tokens_field_formatter_view($entity_type, $entity, $field,
         );
       }
       break;
-      
+
     case 'addressfield_country':
       foreach ($items as $delta => $item) {
         if (!empty($item['country'])) {
@@ -175,11 +196,11 @@ function addressfield_tokens_field_formatter_view($entity_type, $entity, $field,
         }
       }
       break;
-      
+
     case 'addressfield_state':
       foreach ($items as $delta => $item) {
         if (!empty($item['country']) && !empty($item['administrative_area'])) {
-          $state = _addressfield_tokens_state($item['country'], $item['administrative_area']);
+          $state = addressfield_tokens_state($item['country'], $item['administrative_area']);
           $element[$delta] = array(
             '#type' => 'markup',
             '#markup' => filter_xss($state),
@@ -189,19 +210,19 @@ function addressfield_tokens_field_formatter_view($entity_type, $entity, $field,
         }
       }
       break;
-      
+
     case 'addressfield_components':
       $theme = array('addressfield_formatter__components', 'addressfield_formatter');
       $settings = $display['settings'];
       foreach ($items as $delta => $item) {
         if (!empty($item['country'])) {
           array_unshift($theme, 'addressfield_formatter__components__' . $item['country']);
-        }      
+        }
         $element[$delta] = array(
           '#theme' => $theme,
           '#address' => array_map('filter_xss', $item),
           '#components' => $settings['components'],
-          '#separator' => filter_xss($settings['separator']),
+          '#separator' => filter_xss($settings['separator'], array('br')),
         );
       }
       break;
@@ -230,11 +251,31 @@ function addressfield_tokens_property_names() {
   return $names;
 }
 
+/**
+ * Generates token components.
+ *
+ * @return mixed
+ *   Array of components.
+ */
 function addressfield_tokens_components() {
   $comps = &drupal_static(__FUNCTION__, array());
   if (empty($comps)) {
     $names = addressfield_tokens_property_names();
-    foreach (array('first_name', 'last_name', 'name_line', 'organisation_name', 'thoroughfare', 'premise', 'locality', 'dependent_locality', 'administrative_area', 'sub_administrative_area', 'postal_code', 'country') as $key) {
+    $fields = array(
+      'first_name',
+      'last_name',
+      'name_line',
+      'organisation_name',
+      'thoroughfare',
+      'premise',
+      'locality',
+      'dependent_locality',
+      'administrative_area',
+      'sub_administrative_area',
+      'postal_code',
+      'country',
+    );
+    foreach ($fields as $key) {
       $comps[$key] = $names[$key];
       if (in_array($key, array('administrative_area', 'country'))) {
         $comps[$key . '_full'] = t('@name (full)', array(
@@ -248,14 +289,15 @@ function addressfield_tokens_components() {
 
 /**
  * Gets the list of countries from the locale settings in Drupal.
- * 
- * @return array An array of countries.  The keys are the 2-letter 
+ *
+ * @return array
+ *   An array of countries. The keys are the 2-letter
  *   abbreviations and the values are the full country names.
  */
 function _addressfield_tokens_countries() {
   $countries = &drupal_static(__FUNCTION__);
   if (empty($countries)) {
-    include_once('includes/locale.inc');
+    require_once DRUPAL_ROOT . '/includes/locale.inc';
     $countries = country_get_list();
   }
   return $countries;
@@ -263,14 +305,17 @@ function _addressfield_tokens_countries() {
 
 /**
  * Gets the name of the country with the given abbreviation.
- * 
- * @param string $country The 2-letter abbreviation of the country.
- * @return string The name of the country, or FALSE.
+ *
+ * @param string $country
+ *   The 2-letter abbreviation of the country.
+ *
+ * @return string
+ *   The name of the country, or FALSE.
  */
 function _addressfield_tokens_country($country) {
   $countries = _addressfield_tokens_countries();
-  
-  // Country abbreviations will always be two uppercase letters. 
+
+  // Country abbreviations will always be two uppercase letters.
   $country = drupal_strtoupper($country);
   if (!empty($country) && isset($countries[$country])) {
     return check_plain($countries[$country]);
@@ -279,11 +324,12 @@ function _addressfield_tokens_country($country) {
 }
 
 /**
- * Gets the abbreviation of the country with the given name
- * 
- * @param string
+ * Gets the abbreviation of the country with the given name.
+ *
+ * @param string $country
  *   The name of the country.
- * @return string $country
+ *
+ * @return string
  *   The 2-letter abbreviation of the country, or FALSE.
  */
 function _addressfield_tokens_country_abbr($country) {
@@ -297,55 +343,63 @@ function _addressfield_tokens_country_abbr($country) {
 
 /**
  * Gets the list of states in the given country.
- * 
- * @param string $country The 2-letter abbreviation of the country.
- * 
- * @return array An array of countries.  The keys are the 2-letter 
+ *
+ * @param string $country
+ *   The 2-letter abbreviation of the country.
+ *
+ * @return array
+ *   An array of countries. The keys are the 2-letter
  *   abbreviations and the values are the full country names.
  */
-function _addressfield_tokens_states($country) {
+function addressfield_tokens_states($country) {
+  global $language;
+  $langcode = $language->language;
   $states = &drupal_static(__FUNCTION__);
   $country = drupal_strtoupper($country);
   if (!isset($states[$country])) {
-    $cache = cache_get('addressfield_tokens_states');
+    $cache = cache_get('addressfield_tokens_states:' . $langcode);
     if ($cache) {
       $states = $cache->data;
     }
   }
   if (!isset($states[$country])) {
     $format = addressfield_generate(array('country' => $country), array('address'), array('mode' => 'render'));
-    
+
     if (isset($format['locality_block']['administrative_area']['#options'])) {
       $states[$country] = $format['locality_block']['administrative_area']['#options'];
     }
     else {
       $states[$country] = array();
     }
-    cache_set('addressfield_tokens_states', $states);
+    cache_set('addressfield_tokens_states:' . $langcode, $states);
   }
   return $states[$country];
 }
 
 /**
  * Gets the name of the state with the given abbreviation.
- * 
- * @param string $country The 2-letter abbreviation of the country.
- * @param string $state The 2-letter abbreviation of the state.
- * @return string The name of the state, or FALSE.
+ *
+ * @param string $country
+ *    The 2-letter abbreviation of the country.
+ * @param string $state
+ *   The 2-letter abbreviation of the state.
+ *
+ * @return string
+ *   The name of the state, or FALSE.
  */
-function _addressfield_tokens_state($country, $state) {
-  $states = _addressfield_tokens_states($country);
-  
-  // State abbreviations will usually be two uppercase letters. 
-  $state = drupal_strtoupper($state);
-  if (!empty($state) && !empty($states[$state])) {
+function addressfield_tokens_state($country, $state) {
+  $states = addressfield_tokens_states($country);
+
+  // State abbreviations will usually be two uppercase letters.
+  $state_upper = drupal_strtoupper($state);
+  if (!empty($state_upper) && !empty($states[$state_upper])) {
     return check_plain($states[$state]);
   }
   return check_plain($state);
 }
 
-/** 
- * Implements hook_webform_component_info(). 
+/**
+ * Implements hook_webform_component_info().
  */
 function addressfield_tokens_webform_component_info() {
   $components = array();
@@ -387,6 +441,15 @@ function addressfield_tokens_webform_component_info() {
   return $components;
 }
 
+/**
+ * Retrieves node components based on Node ID.
+
+ * @param int $nid
+ *   Node ID.
+ *
+ * @return mixed
+ *   Components.
+ */
 function _addressfield_tokens_webform_components($nid) {
   $components = &drupal_static(__FUNCTION__, array());
   if (!isset($components[$nid])) {
@@ -402,13 +465,14 @@ function _addressfield_tokens_webform_components($nid) {
 
 /**
  * Implements hook_webform_submission_load().
- */
+ * Commented out to solve issue https://www.drupal.org/project/addressfield_tokens/issues/2674752
+ *
 function addressfield_tokens_webform_submission_load(&$submissions) {
   $submissions_reset = reset($submissions);
   $nid = $submissions_reset->nid;
-  
+
   $components = _addressfield_tokens_webform_components($nid);
-    
+
   foreach ($submissions as $sid => $submission) {
     foreach ($components as $cid => $component) {
       if (!empty($submission->data[$cid])) {
@@ -421,17 +485,40 @@ function addressfield_tokens_webform_submission_load(&$submissions) {
           $data = empty($data) ? array() : unserialize($data);
           $addresses[$delta] = $data;
         }
-        drupal_array_set_nested_value($submission->data, $parents, $addresses);
+        if (count($addresses)) {
+          drupal_array_set_nested_value($submission->data, $parents, $addresses);
+        }
       }
     }
   }
 }
+**/
 
-/** 
- * Implements hook_webform_validator_alter(). 
+/**
+ * Implements hook_webform_validator_alter().
  */
 function addressfield_tokens_webform_validator_alter(&$validators) {
   $validators['unique']['component_types'][] = 'addressfield';
   $validators['oneoftwo']['component_types'][] = 'addressfield';
   $validators['oneofseveral']['component_types'][] = 'addressfield';
 }
+
+/**
+ * Implements hook_webform_hints_element_alter().
+ */
+function addressfield_tokens_webform_hints_element_alter(&$element, &$required_label)
+{
+  if ($element['#type'] == 'addressfield_container' || $element['#type'] == 'fieldset') {
+    $addressfield_tokens_fields_info = addressfield_tokens_field_formatter_info();
+    foreach ($addressfield_tokens_fields_info['addressfield_components']['settings']['components'] as $component) {
+      if (isset($element[$component])) {
+        if (isset($element[$component]['#options'])) {
+          $element[$component]['#empty_option'] = '- ' . $element[$component]['#title'] . $required_label . ' -';
+        }
+
+        $element[$component]['#attributes']['placeholder'] = $element[$component]['#title'] . $required_label;
+        $element[$component]['#title_display'] = 'invisible';
+      }
+    }
+  }
+}
diff --git a/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.theme.inc b/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.theme.inc
index 74182dfc..16483671 100644
--- a/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.theme.inc
+++ b/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.theme.inc
@@ -11,7 +11,13 @@
  */
 function theme_addressfield_formatter($vars) {
   $address = $vars['address'];
+  if (isset($address['addressfield'])) {
+    $address = $address['addressfield'];
+  }
   $handlers = $vars['handlers'];
+  if (empty($handlers)) {
+    $handlers = array('address');
+  }
   
   $out = addressfield_generate($address, $handlers, array('mode' => 'render'));
   return '
' . render($out) . '
';
@@ -39,7 +45,7 @@ function theme_addressfield_formatter__citystate($vars) {
   
   // If there's no location, render an alternate
   if (empty($out)) {
-    $out[] = 'Undefined';
+    return '';
   }
   
   // Render the location components
@@ -56,6 +62,18 @@ function theme_addressfield_formatter__citystate($vars) {
 function theme_addressfield_formatter__linear($vars) {
   $loc = $vars['address'];
   
+  // If single line name is empty, construct it from first and last name.
+  if (empty($loc['name_line'])) {
+    $parts = array();
+    if (!empty($loc['first_name'])) {
+      $parts[] = $loc['first_name'];
+    }
+    if (!empty($loc['last_name'])) {
+      $parts[] = $loc['last_name'];
+    }
+    $loc['name_line'] = join(' ', $parts);
+  }
+
   // Determine which location components to render
   $out = array();
   if (!empty($loc['name_line']) && $vars['name_line']) {
@@ -103,9 +121,9 @@ function theme_addressfield_formatter__components($vars) {
       $out[$key] = _addressfield_tokens_country($loc['country']);
     }
     elseif ($key == 'administrative_area_full' && !empty($loc['country']) && !empty($loc['administrative_area'])) {
-      $out[$key] = _addressfield_tokens_state($loc['country'], $loc['administrative_area']);
+      $out[$key] = addressfield_tokens_state($loc['country'], $loc['administrative_area']);
     }
   }
   
   return implode($separator, $out);
-}
\ No newline at end of file
+}
diff --git a/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.tokens.inc b/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.tokens.inc
index 9102af62..de6db03b 100644
--- a/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.tokens.inc
+++ b/sites/all/modules/contrib/dev/addressfield_tokens/addressfield_tokens.tokens.inc
@@ -1,36 +1,37 @@
  t('Address field'),
     'description' => t('An address associated with an entity.'),
     'needs-data' => 'addressfield',
   );
-  
-  // Add tokens for each component of the address
-  $info['tokens'] += array( 'addressfield' => array() );
-  
+
+  // Add tokens for each component of the address.
+  $info['tokens'] += array('addressfield' => array());
+
   $props = addressfield_data_property_info();
   $names = addressfield_tokens_property_names();
   $params = array(
     '@default_country' => addressfield_tokens_default_country(),
   );
-  
+
   foreach ($props as $field => $data) {
     $fieldtoken = str_replace('_', '-', $field);
-    
+
     if (!empty($names[$field])) {
       $name = $names[$field];
       $descr = $data['label'];
@@ -38,7 +39,7 @@ function addressfield_tokens_token_info_alter(&$info) {
     else {
       $name = $data['label'];
       $descr = $name;
-      
+
       $matches = array();
       if (preg_match('/^(.*)\s+\(i\.e\.\s+(.*)\)$/', $name, $matches)) {
         $name = $matches[1];
@@ -54,7 +55,7 @@ function addressfield_tokens_token_info_alter(&$info) {
   }
   $info['tokens']['addressfield']['administrative-area']['name'] .= ' (abbreviation)';
   $info['tokens']['addressfield']['country']['name'] .= ' (abbreviation)';
-  
+
   // Add tokens for the formatted address and text-only version.
   $info['tokens']['addressfield'] += array(
     'full' => array(
@@ -83,7 +84,7 @@ function addressfield_tokens_token_info_alter(&$info) {
       'type' => 'text',
     ),
   );
-  
+
   // Add user tokens that are useful for MailChimp.
   if (module_exists('mailchimp')) {
     $info['tokens']['addressfield'] += array(
@@ -95,9 +96,23 @@ function addressfield_tokens_token_info_alter(&$info) {
     );
   }
 
-  // Attach tokens to all address fields
+  // Add extra text to webform submission values help.
+  if (array_key_exists('submission', $info['tokens'])) {
+    $info['tokens']['submission']['values']['description'] .= '
+      
+      ' . t('For addressfield components you can also choose individual elements of the address using the syntax field_key:element, For example:') . '
+      
+        - [submission:values:address:thoroughfare]+
- [submission:values:address:locality]+
- [submission:values:address:administrative_area]+
- [submission:values:address:postal_code]+
- [submission:values:address:country]+
+