diff --git a/assets/templates/metaboxes/metabox.contact.add.php b/assets/templates/metaboxes/metabox.contact.add.php
index 31f4df75141f8fc5a4399bb0171001ee7077332c..5faefe1c03b2d93ee10cc1e9fb94f4a702206c93 100644
--- a/assets/templates/metaboxes/metabox.contact.add.php
+++ b/assets/templates/metaboxes/metabox.contact.add.php
@@ -17,6 +17,11 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.contact.add.php -->
 <?php
 
@@ -37,19 +42,19 @@ do_action('civicrm/metabox/contact/add/pre');
   <?php wp_nonce_field('civicrm_quick_add_action', 'civicrm_quick_add_nonce'); ?>
 
   <div class="input-text-wrap" id="contact-first-name-wrap">
-    <label for="civicrm_quick_add_first_name"><?php _e('First Name', 'civicrm'); ?></label>
+    <label for="civicrm_quick_add_first_name"><?php esc_html_e('First Name', 'civicrm'); ?></label>
     <input type="text" name="civicrm_quick_add_first_name" id="civicrm_quick_add_first_name" autocomplete="off" />
     <br class="clear" />
   </div>
 
   <div class="input-text-wrap" id="contact-last-name-wrap">
-    <label for="civicrm_quick_add_last_name"><?php _e('Last Name', 'civicrm'); ?></label>
+    <label for="civicrm_quick_add_last_name"><?php esc_html_e('Last Name', 'civicrm'); ?></label>
     <input type="text" name="civicrm_quick_add_last_name" id="civicrm_quick_add_last_name" autocomplete="off" />
     <br class="clear" />
   </div>
 
   <div class="input-text-wrap" id="contact-email-wrap">
-    <label for="civicrm_quick_add_email"><?php _e('Email', 'civicrm'); ?></label>
+    <label for="civicrm_quick_add_email"><?php esc_html_e('Email', 'civicrm'); ?></label>
     <input type="text" name="civicrm_quick_add_email" id="civicrm_quick_add_email" autocomplete="off" />
     <br class="clear" />
   </div>
@@ -63,7 +68,7 @@ do_action('civicrm/metabox/contact/add/pre');
 </form>
 
 <div class="contacts-added-wrap<?php echo $visiblity_class; ?>">
-  <h3><?php _e('Recently Added Contacts', 'civicrm'); ?></h3>
+  <h3><?php esc_html_e('Recently Added Contacts', 'civicrm'); ?></h3>
 
   <div class="civicrm_quick_add_success notice notice-success inline" style="background-color: #f7f7f7; display: none;">
     <p></p>
diff --git a/assets/templates/metaboxes/metabox.error.help.php b/assets/templates/metaboxes/metabox.error.help.php
index 61a0de80402e8a96806de22d0c309ada1f469e07..ba26a724f4ef9d9022dbaa51c19fca0778a7cb83 100644
--- a/assets/templates/metaboxes/metabox.error.help.php
+++ b/assets/templates/metaboxes/metabox.error.help.php
@@ -17,8 +17,14 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.error.help.php -->
 <p><?php printf(
+  /* translators: 1: Opening anchor tag, 2: Closing anchor tag, 3: Opening anchor tag, 4: Closing anchor tag, 5: Opening anchor tag, 6: Closing anchor tag. */
   __('Please review the %1$sWordPress Installation Guide%2$s and the %3$sTroubleshooting page%4$s for assistance. If you still need help, you can often find solutions to your issue by searching for the error message in the %5$sinstallation support section of the community forum%6$s.', 'civicrm'),
   '<a href="https://docs.civicrm.org/installation/en/latest/wordpress/">', '</a>',
   '<a href="https://docs.civicrm.org/sysadmin/en/latest/troubleshooting/">', '</a>',
diff --git a/assets/templates/metaboxes/metabox.error.path.php b/assets/templates/metaboxes/metabox.error.path.php
index 432730a88ef9c6cd44c9b13637e8a663fc820878..5dd42f00ff8e24e0333b78ef85a8eab5a970e4cb 100644
--- a/assets/templates/metaboxes/metabox.error.path.php
+++ b/assets/templates/metaboxes/metabox.error.path.php
@@ -17,14 +17,19 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.error.path.php -->
-<p><?php printf(
-  __('The path for including CiviCRM code files does appear to be set properly. Most likely there is an error in the %s setting in your CiviCRM settings file.', 'civicrm'),
-  '<code>civicrm_root</code>'
-); ?></p>
+<?php /* translators: %s: The HTML code tag wrapping a variable. */ ?>
+<p><?php printf(__('The path for including CiviCRM code files does appear to be set properly. Most likely there is an error in the %s setting in your CiviCRM settings file.', 'civicrm'), '<code>civicrm_root</code>'); ?></p>
 
-<p><?php _e('Your CiviCRM settings file location is set to:', 'civicrm'); ?><br><pre><?php echo CIVICRM_SETTINGS_PATH; ?></pre></p>
+<p><?php esc_html_e('Your CiviCRM settings file location is set to:', 'civicrm'); ?><br><pre><?php echo esc_html(CIVICRM_SETTINGS_PATH); ?></pre></p>
 
+<?php /* translators: %s: The HTML code tag wrapping a variable. */ ?>
 <p><?php printf(__('%s is currently set to:', 'civicrm'), '<code>civicrm_root</code>'); ?><br><pre><?php echo $civicrm_root; ?></pre></p>
 
+<?php /* translators: %s: The HTML code tag wrapping a variable. */ ?>
 <p><?php printf(__('Please check that your CiviCRM settings file is where it should be and that %s is set correctly in it. Also check that the CiviCRM code directory is where it should be. If these are both fine, then you will have to look in your logs for more information.', 'civicrm'), '<code>civicrm_root</code>'); ?></p>
diff --git a/assets/templates/metaboxes/metabox.error.php.php b/assets/templates/metaboxes/metabox.error.php.php
index 58634cce2819be28fb4fa86a0a2923935ae7ef6f..841de08530a980de6003b8f80d2525d9bf8cbeea 100644
--- a/assets/templates/metaboxes/metabox.error.php.php
+++ b/assets/templates/metaboxes/metabox.error.php.php
@@ -17,13 +17,15 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.error.php.php -->
-<p><?php printf(
-  __('CiviCRM requires PHP version %1$s or greater. You are running PHP version %2$s', 'civicrm'),
-  CIVICRM_WP_PHP_MINIMUM,
-  PHP_VERSION
-); ?></p>
+<?php /* translators: 1: The minimum PHP version, 2: The current PHP version. */ ?>
+<p><?php printf(__('CiviCRM requires PHP version %1$s or greater. You are running PHP version %2$s', 'civicrm'), CIVICRM_WP_PHP_MINIMUM, PHP_VERSION); ?></p>
 
-<p><?php _e('You will have to upgrade PHP before you can run this version CiviCRM.', 'civicrm'); ?></p>
+<p><?php esc_html_e('You will have to upgrade PHP before you can run this version CiviCRM.', 'civicrm'); ?></p>
 
-<p><?php _e('To continue using CiviCRM without upgrading PHP, you will have to revert both the plugin and the database to a backup of your previous version.', 'civicrm'); ?></p>
+<p><?php esc_html_e('To continue using CiviCRM without upgrading PHP, you will have to revert both the plugin and the database to a backup of your previous version.', 'civicrm'); ?></p>
diff --git a/assets/templates/metaboxes/metabox.options.basepage.php b/assets/templates/metaboxes/metabox.options.basepage.php
index 54676e95324f7cbbdf6fb1b845f846bc4fd1d22d..b58b37068a1cab552f4e8a4e9636db851e701aa8 100644
--- a/assets/templates/metaboxes/metabox.options.basepage.php
+++ b/assets/templates/metaboxes/metabox.options.basepage.php
@@ -17,6 +17,11 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.options.basepage.php -->
 <?php
 
@@ -33,15 +38,15 @@ do_action('civicrm/metabox/basepage/pre');
 </div>
 
 <p>
-  <?php _e('CiviCRM needs a WordPress Page to show its content on the public-facing pages of your website.', 'civicrm'); ?>
+  <?php esc_html_e('CiviCRM needs a WordPress Page to show its content on the public-facing pages of your website.', 'civicrm'); ?>
   <?php if (!($basepage instanceof WP_Post)) : ?>
-    <em class="basepage_feedback"><?php _e('Please select a Page from the drop-down for CiviCRM to use as its Base Page. If CiviCRM was able to create one automatically, there should be one with the title "CiviCRM". If not, please select another suitable WordPress Page.', 'civicrm'); ?></em>
+    <em class="basepage_feedback"><?php esc_html_e('Please select a Page from the drop-down for CiviCRM to use as its Base Page. If CiviCRM was able to create one automatically, there should be one with the title "CiviCRM". If not, please select another suitable WordPress Page.', 'civicrm'); ?></em>
   <?php else : ?>
-    <em class="basepage_feedback"><?php _e('It appears that your Base Page has been set. Looking good.', 'civicrm'); ?></em>
+    <em class="basepage_feedback"><?php esc_html_e('It appears that your Base Page has been set. Looking good.', 'civicrm'); ?></em>
   <?php endif; ?>
 </p>
 
-<label for="page_id" class="screen-reader-text"><?php _e('Choose Base Page', 'civicrm'); ?></label>
+<label for="page_id" class="screen-reader-text"><?php esc_html_e('Choose Base Page', 'civicrm'); ?></label>
 <?php wp_dropdown_pages($params); ?>
 
 <p class="submit">
diff --git a/assets/templates/metaboxes/metabox.options.cache.php b/assets/templates/metaboxes/metabox.options.cache.php
index 922619d49be3426d05876cd71f7be96652020d94..2da32a407644c430a231d2dff2cddd49eb34ae4f 100644
--- a/assets/templates/metaboxes/metabox.options.cache.php
+++ b/assets/templates/metaboxes/metabox.options.cache.php
@@ -17,6 +17,11 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.options.cache.php -->
 <?php
 
@@ -35,7 +40,7 @@ do_action('civicrm/metabox/cache/pre');
   <p></p>
 </div>
 
-<p><?php _e('You may sometimes find yourself in situations that require the CiviCRM caches to be cleared, e.g. when template files need to be refreshed.', 'civicrm'); ?></p>
+<p><?php esc_html_e('You may sometimes find yourself in situations that require the CiviCRM caches to be cleared, e.g. when template files need to be refreshed.', 'civicrm'); ?></p>
 
 <p class="submit">
   <?php submit_button(esc_html__('Clear Caches', 'civicrm'), 'primary', 'civicrm_cache_submit', FALSE, $options); ?>
diff --git a/assets/templates/metaboxes/metabox.options.email.php b/assets/templates/metaboxes/metabox.options.email.php
index 5152c342a06bbcec46a4f6fd4ba3da69b0f2e9f1..6b9c4bf0cf469d05bb0908231e71295fb4639fd3 100644
--- a/assets/templates/metaboxes/metabox.options.email.php
+++ b/assets/templates/metaboxes/metabox.options.email.php
@@ -17,6 +17,11 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.options.email.php -->
 <?php
 
@@ -32,9 +37,9 @@ do_action('civicrm/metabox/email_sync/pre');
   <p></p>
 </div>
 
-<p><?php _e('When a WordPress User updates their Email, CiviCRM will automatically update the Primary Email of their linked Contact record. This setting lets you choose whether the reverse update should happen - i.e. if the Primary Email of a Contact that has a linked WordPress User is updated, do you want CiviCRM to update the WordPress User Email?', 'civicrm'); ?></p>
+<p><?php esc_html_e('When a WordPress User updates their Email, CiviCRM will automatically update the Primary Email of their linked Contact record. This setting lets you choose whether the reverse update should happen - i.e. if the Primary Email of a Contact that has a linked WordPress User is updated, do you want CiviCRM to update the WordPress User Email?', 'civicrm'); ?></p>
 
-<label for="sync_email" class="screen-reader-text"><?php _e('Sync Emails', 'civicrm'); ?></label>
+<label for="sync_email" class="screen-reader-text"><?php esc_html_e('Sync Emails', 'civicrm'); ?></label>
 <select name="sync_email" id="sync_email">
   <option value="yes"<?php echo $selected_yes; ?>><?php esc_html_e('Yes', 'civicrm'); ?></option>
   <option value="no"<?php echo $selected_no; ?>><?php esc_html_e('No', 'civicrm'); ?></option>
diff --git a/assets/templates/metaboxes/metabox.options.links.php b/assets/templates/metaboxes/metabox.options.links.php
index fe2e31f5034ec9be1092629c744d41cf02b23598..a82f1dde140d0d96d5d77968e12c69a4fa220e5d 100644
--- a/assets/templates/metaboxes/metabox.options.links.php
+++ b/assets/templates/metaboxes/metabox.options.links.php
@@ -17,6 +17,11 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.options.links.php -->
 <?php
 
@@ -28,7 +33,7 @@
 do_action('civicrm/metabox/links/pre');
 
 ?>
-<p><?php _e('Below is a list of shortcuts to some CiviCRM admin pages that are important when you are setting up CiviCRM. When these settings are correctly configured, your CiviCRM installation should be ready for you to customise to your requirements.', 'civicrm'); ?></p>
+<p><?php esc_html_e('Below is a list of shortcuts to some CiviCRM admin pages that are important when you are setting up CiviCRM. When these settings are correctly configured, your CiviCRM installation should be ready for you to customise to your requirements.', 'civicrm'); ?></p>
 
 <ul>
   <?php foreach ($admin_links as $admin_link) : ?>
@@ -40,7 +45,7 @@ do_action('civicrm/metabox/links/pre');
 
 <hr>
 
-<p><?php _e('Shortcuts to some CiviCRM maintenance tasks.', 'civicrm'); ?></p>
+<p><?php esc_html_e('Shortcuts to some CiviCRM maintenance tasks.', 'civicrm'); ?></p>
 
 <ul>
   <?php foreach ($maintenance_links as $maintenance_link) : ?>
diff --git a/assets/templates/metaboxes/metabox.options.permissions.php b/assets/templates/metaboxes/metabox.options.permissions.php
index 0a8b01cf4ecad93b5ce79ae8825267e90c9fad0a..3de191cf948411998499e1a1b3cd10d7679a0418 100644
--- a/assets/templates/metaboxes/metabox.options.permissions.php
+++ b/assets/templates/metaboxes/metabox.options.permissions.php
@@ -17,6 +17,11 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.options.permissions.php -->
 <?php
 
diff --git a/assets/templates/metaboxes/metabox.options.shortcode.php b/assets/templates/metaboxes/metabox.options.shortcode.php
index 278d1c82b251b724868490d87f7e76fd6fd7b500..117cf2a200ab5394551755bc97937c56573343c1 100644
--- a/assets/templates/metaboxes/metabox.options.shortcode.php
+++ b/assets/templates/metaboxes/metabox.options.shortcode.php
@@ -17,6 +17,11 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.options.shortcode.php -->
 <?php
 
@@ -32,9 +37,9 @@ do_action('civicrm/metabox/shortcode/pre');
   <p></p>
 </div>
 
-<p><?php _e('When a CiviCRM Shortcode is embedded in a Post/Page without "hijack" being set, it is shown embedded in the content in "Shortcode Mode". If any action is taken via the Shortcode, a query string is appended to the URL and the Post/Page is shown in "Base Page Mode" and the title and content are overwritten. Choose to keep this legacy behaviour or move to the new "Remain in Shortcode Mode" behaviour.', 'civicrm'); ?></p>
+<p><?php esc_html_e('When a CiviCRM Shortcode is embedded in a Post/Page without "hijack" being set, it is shown embedded in the content in "Shortcode Mode". If any action is taken via the Shortcode, a query string is appended to the URL and the Post/Page is shown in "Base Page Mode" and the title and content are overwritten. Choose to keep this legacy behaviour or move to the new "Remain in Shortcode Mode" behaviour.', 'civicrm'); ?></p>
 
-<label for="shortcode_mode" class="screen-reader-text"><?php _e('Display Mode', 'civicrm'); ?></label>
+<label for="shortcode_mode" class="screen-reader-text"><?php esc_html_e('Display Mode', 'civicrm'); ?></label>
 <select name="shortcode_mode" id="shortcode_mode">
   <option value="modern"<?php echo $selected_modern; ?>><?php esc_html_e('Remain in Shortcode Mode', 'civicrm'); ?></option>
   <option value="legacy"<?php echo $selected_legacy; ?>><?php esc_html_e('Legacy Base Page Mode', 'civicrm'); ?></option>
diff --git a/assets/templates/metaboxes/metabox.repo.ext.php b/assets/templates/metaboxes/metabox.repo.ext.php
index b20f68ab783eedcfbf29eb7715f7e7d1594de39f..b1589da766bf9f2f687596d584d1d9d1154c1316 100644
--- a/assets/templates/metaboxes/metabox.repo.ext.php
+++ b/assets/templates/metaboxes/metabox.repo.ext.php
@@ -17,19 +17,24 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.repo.ext.php -->
-<p><?php _e('Extensions are a bit like plugins because they enhance what CiviCRM can do. You can find, install and manage many of them in CiviCRM.', 'civicrm'); ?></p>
+<p><?php esc_html_e('Extensions are a bit like plugins because they enhance what CiviCRM can do. You can find, install and manage many of them in CiviCRM.', 'civicrm'); ?></p>
 
 <ul>
-  <li><em><a href="<?php echo $extensions_url; ?>"><?php _e('Go to your CiviCRM Extensions Page', 'civicrm'); ?></a></em></li>
+  <li><em><a href="<?php echo $extensions_url; ?>"><?php esc_html_e('Go to your CiviCRM Extensions Page', 'civicrm'); ?></a></em></li>
 </ul>
 
 <hr/>
 
-<p><?php _e('Here are some other places you can find them.', 'civicrm'); ?></p>
+<p><?php esc_html_e('Here are some other places you can find them.', 'civicrm'); ?></p>
 
 <ul>
-  <li><em><a href="https://civicrm.org/extensions/wordpress"><?php _e('Search CiviCRM Website for "Extensions" that are compatible with WordPress', 'civicrm'); ?></a></em></li>
-  <li><em><a href="https://lab.civicrm.org/explore/projects?tag=wordpress"><?php _e('Search CiviCRM GitLab for "Extensions" that are compatible with WordPress', 'civicrm'); ?></a></em></li>
-  <li><em><a href="https://github.com/search?p=2&q=civicrm+extension&type=Repositories"><?php _e('Search GitHub for "CiviCRM Extensions"', 'civicrm'); ?></a></em></li>
+  <li><em><a href="https://civicrm.org/extensions/wordpress"><?php esc_html_e('Search CiviCRM Website for "Extensions" that are compatible with WordPress', 'civicrm'); ?></a></em></li>
+  <li><em><a href="https://lab.civicrm.org/explore/projects?tag=wordpress"><?php esc_html_e('Search CiviCRM GitLab for "Extensions" that are compatible with WordPress', 'civicrm'); ?></a></em></li>
+  <li><em><a href="https://github.com/search?p=2&q=civicrm+extension&type=Repositories"><?php esc_html_e('Search GitHub for "CiviCRM Extensions"', 'civicrm'); ?></a></em></li>
 </ul>
diff --git a/assets/templates/metaboxes/metabox.repo.git.php b/assets/templates/metaboxes/metabox.repo.git.php
index 842ab671a4ed9fcbbfac6e09efde053b3327fae1..8e0cca035c1538f7d45db3d4096806a541e0b43f 100644
--- a/assets/templates/metaboxes/metabox.repo.git.php
+++ b/assets/templates/metaboxes/metabox.repo.git.php
@@ -17,13 +17,18 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.repo.git.php -->
-<p><?php _e('For the more adventurous, here is a list of plugins that are hosted in git repositories around the web. You may need a bit more technical confidence to install and upgrade these plugins.', 'civicrm'); ?></p>
+<p><?php esc_html_e('For the more adventurous, here is a list of plugins that are hosted in git repositories around the web. You may need a bit more technical confidence to install and upgrade these plugins.', 'civicrm'); ?></p>
 
 <hr/>
 
 <ul>
-  <li><em><a href="https://github.com/search?q=civicrm+wordpress&amp;type=Repositories"><?php _e('Search GitHub for CiviCRM &amp; WordPress', 'civicrm'); ?></a></em></li>
+  <li><em><a href="https://github.com/search?q=civicrm+wordpress&amp;type=Repositories"><?php esc_html_e('Search GitHub for CiviCRM &amp; WordPress', 'civicrm'); ?></a></em></li>
 </ul>
 
 <hr/>
@@ -31,16 +36,16 @@
 <div class="plugin-repo-list-wrapper">
   <?php if (!empty($plugins->messages)) : ?>
     <ul class="plugin-repo-list">
-      <?php foreach ($plugins->messages as $plugin) : ?>
+      <?php foreach ($plugins->messages as $civicrm_plugin) : ?>
         <li>
-          <strong><a href="<?php echo $plugin['url']; ?>/"><?php echo $plugin['name']; ?></a></strong><br>
-          <?php if (!empty($plugin['short_description'])) : ?>
-            <span class="description"><?php echo $plugin['short_description']; ?></span><br>
+          <strong><a href="<?php echo esc_url($civicrm_plugin['url']); ?>/"><?php echo esc_html($civicrm_plugin['name']); ?></a></strong><br>
+          <?php if (!empty($civicrm_plugin['short_description'])) : ?>
+            <span class="description"><?php echo esc_html($civicrm_plugin['short_description']); ?></span><br>
           <?php endif; ?>
         </li>
       <?php endforeach; ?>
     </ul>
   <?php else : ?>
-    <p><?php _e('Could not fetch list of plugins.', 'civicrm'); ?></p>
+    <p><?php esc_html_e('Could not fetch list of plugins.', 'civicrm'); ?></p>
   <?php endif; ?>
 </div>
diff --git a/assets/templates/metaboxes/metabox.repo.wordpress.php b/assets/templates/metaboxes/metabox.repo.wordpress.php
index 6f1a9de15588af4e8db6d2bf5158c487bf49714c..e4aad6b1302cc777612f33d74c65c94ca18a4797 100644
--- a/assets/templates/metaboxes/metabox.repo.wordpress.php
+++ b/assets/templates/metaboxes/metabox.repo.wordpress.php
@@ -17,14 +17,19 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/metaboxes/metabox.repo.wordpress.php -->
-<p><?php _e('The easiest way to extend CiviCRM and integrate it with WordPress is through installing plugins that are hosted in the WordPress Plugin Directory. These can be installed and updated through the normal WordPress admin screens.', 'civicrm'); ?></p>
+<p><?php esc_html_e('The easiest way to extend CiviCRM and integrate it with WordPress is through installing plugins that are hosted in the WordPress Plugin Directory. These can be installed and updated through the normal WordPress admin screens.', 'civicrm'); ?></p>
 
 <hr/>
 
 <ul>
-  <li><em><a href="https://wordpress.org/plugins/tags/civicrm/"><?php _e('Search the WordPress Plugin Directory for plugins tagged CiviCRM', 'civicrm'); ?></a></em></li>
-  <li><em><a href="https://wordpress.org/plugins/search/civicrm/"><?php _e('Search the WordPress Plugin Directory for references to CiviCRM', 'civicrm'); ?></a></em></li>
+  <li><em><a href="https://wordpress.org/plugins/tags/civicrm/"><?php esc_html_e('Search the WordPress Plugin Directory for plugins tagged CiviCRM', 'civicrm'); ?></a></em></li>
+  <li><em><a href="https://wordpress.org/plugins/search/civicrm/"><?php esc_html_e('Search the WordPress Plugin Directory for references to CiviCRM', 'civicrm'); ?></a></em></li>
 </ul>
 
 <hr/>
@@ -32,20 +37,26 @@
 <div class="plugin-directory-list-wrapper">
   <?php if (!empty($plugins->plugins)) : ?>
     <ul class="plugin-directory-list">
-      <?php foreach ($plugins->plugins as $plugin) : ?>
+      <?php foreach ($plugins->plugins as $civicrm_plugin) : ?>
         <li>
-          <strong><a href="<?php echo __('https://wordpress.org/plugins/') . $plugin['slug']; ?>/"><?php echo $plugin['name']; ?></a></strong><br>
-          <?php printf(__('Version %s', 'civicrm'), $plugin['version']); ?><br>
-          <?php printf(__('%d+ active installations', 'civicrm'), $plugin['active_installs']); ?></br>
-          <?php printf(__('Tested up to WordPress %s', 'civicrm'), $plugin['tested']); ?><br>
-          <?php printf(__('Last updated %s ago', 'civicrm'), human_time_diff(strtotime($plugin['last_updated']))); ?><br>
-          <?php if (!empty($plugin['short_description'])) : ?>
-            <span class="description"><?php echo $plugin['short_description']; ?></span><br>
+          <?php /* Deliberate use of default domain so that WordPress "translates" the URL. */ ?>
+          <?php /* phpcs:ignore WordPress.WP.I18n.MissingArgDomain */ ?>
+          <strong><a href="<?php echo esc_url(__('https://wordpress.org/plugins/') . $civicrm_plugin['slug']); ?>/"><?php echo esc_html($civicrm_plugin['name']); ?></a></strong><br>
+          <?php /* translators: %s: The plugin version. */ ?>
+          <?php echo esc_html(sprintf(__('Version %s', 'civicrm'), $civicrm_plugin['version'])); ?><br>
+          <?php /* translators: %d: The number of installs. */ ?>
+          <?php echo esc_html(sprintf(__('%d+ active installations', 'civicrm'), $civicrm_plugin['active_installs'])); ?></br>
+          <?php /* translators: %s: The version of WordPress the plugin is tested to. */ ?>
+          <?php echo esc_html(sprintf(__('Tested up to WordPress %s', 'civicrm'), $civicrm_plugin['tested'])); ?><br>
+          <?php /* translators: %s: The date of the last plugin update. */ ?>
+          <?php echo esc_html(sprintf(__('Last updated %s ago', 'civicrm'), human_time_diff(strtotime($civicrm_plugin['last_updated'])))); ?><br>
+          <?php if (!empty($civicrm_plugin['short_description'])) : ?>
+            <span class="description"><?php echo esc_html($civicrm_plugin['short_description']); ?></span><br>
           <?php endif; ?>
         </li>
       <?php endforeach; ?>
     </ul>
   <?php else : ?>
-    <p><?php _e('Could not fetch list of plugins.', 'civicrm'); ?></p>
+    <p><?php esc_html_e('Could not fetch list of plugins.', 'civicrm'); ?></p>
   <?php endif; ?>
 </div>
diff --git a/assets/templates/pages/page.error.php b/assets/templates/pages/page.error.php
index 692bf283a5ea53996aa9ed4a29d54f1a2b385bdd..7655e8779a225c937389f5404942ea54be66dc00 100644
--- a/assets/templates/pages/page.error.php
+++ b/assets/templates/pages/page.error.php
@@ -17,14 +17,19 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/page.error.php -->
 <div class="wrap civicrm-wrap civicrm-error-wrap">
 
   <img src="<?php echo CIVICRM_PLUGIN_URL . 'assets/images/civicrm-logo.png'; ?>" width="160" height="42" alt="<?php esc_attr_e('CiviCRM Logo', 'civicrm'); ?>" id="civicrm-logo">
 
-  <h1><?php _e('CiviCRM Troubleshooting', 'civicrm'); ?></h1>
+  <h1><?php esc_html_e('CiviCRM Troubleshooting', 'civicrm'); ?></h1>
 
-  <p><?php _e('Something seems to be wrong with your CiviCRM installation. This page will help you try and troubleshoot the problem.', 'civicrm'); ?></p>
+  <p><?php esc_html_e('Something seems to be wrong with your CiviCRM installation. This page will help you try and troubleshoot the problem.', 'civicrm'); ?></p>
 
   <form method="post" id="civicrm_error_form" action="">
 
@@ -34,14 +39,14 @@
 
     <div id="poststuff">
 
-      <div id="post-body" class="metabox-holder columns-<?php echo $columns;?>">
+      <div id="post-body" class="metabox-holder columns-<?php echo $columns; ?>">
 
         <div id="postbox-container-1" class="postbox-container">
           <?php do_meta_boxes($screen->id, 'side', NULL); ?>
         </div>
 
         <div id="postbox-container-2" class="postbox-container">
-          <?php do_meta_boxes($screen->id, 'normal', NULL);  ?>
+          <?php do_meta_boxes($screen->id, 'normal', NULL); ?>
           <?php do_meta_boxes($screen->id, 'advanced', NULL); ?>
         </div>
 
diff --git a/assets/templates/pages/page.integration.php b/assets/templates/pages/page.integration.php
index 3eca996f40dd1b17e1bc3de221bf779e0145f4c9..acbbfa9f3960fb54d0762367e36d5c0fbefc1123 100644
--- a/assets/templates/pages/page.integration.php
+++ b/assets/templates/pages/page.integration.php
@@ -17,14 +17,19 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/page.integration.php -->
 <div class="wrap civicrm-wrap civicrm-integration-wrap">
 
   <img src="<?php echo CIVICRM_PLUGIN_URL . 'assets/images/civicrm-logo.png'; ?>" width="160" height="42" alt="<?php esc_attr_e('CiviCRM Logo', 'civicrm'); ?>" id="civicrm-logo">
 
-  <h1><?php _e('Integrating CiviCRM with WordPress', 'civicrm'); ?></h1>
+  <h1><?php esc_html_e('Integrating CiviCRM with WordPress', 'civicrm'); ?></h1>
 
-  <p><?php _e('We have collected some resources to help you make the most of CiviCRM in WordPress.', 'civicrm'); ?></p>
+  <p><?php esc_html_e('We have collected some resources to help you make the most of CiviCRM in WordPress.', 'civicrm'); ?></p>
 
   <form method="post" id="civicrm_integration_form" action="<?php /* echo $this->page_submit_url_get(); */ ?>">
 
@@ -39,7 +44,7 @@
       <div id="dashboard-widgets" class="metabox-holder<?php echo $columns_css; ?>">
 
         <div id="postbox-container-1" class="postbox-container">
-          <?php do_meta_boxes($screen->id, 'normal', '');  ?>
+          <?php do_meta_boxes($screen->id, 'normal', ''); ?>
         </div>
 
         <div id="postbox-container-2" class="postbox-container">
diff --git a/assets/templates/pages/page.options.php b/assets/templates/pages/page.options.php
index 436a8c94a341b72ca4777e6b831407d1a6739914..7efd657cf79846b99de04bd455d4179f5eecb539 100644
--- a/assets/templates/pages/page.options.php
+++ b/assets/templates/pages/page.options.php
@@ -17,14 +17,19 @@
  *
  */
 
+// This file must not accessed directly.
+if (!defined('ABSPATH')) {
+  exit;
+}
+
 ?><!-- assets/templates/page.options.php -->
 <div class="wrap civicrm-wrap civicrm-settings-wrap">
 
   <img src="<?php echo CIVICRM_PLUGIN_URL . 'assets/images/civicrm-logo.png'; ?>" width="160" height="42" alt="<?php esc_attr_e('CiviCRM Logo', 'civicrm'); ?>" id="civicrm-logo">
 
-  <h1><?php _e('CiviCRM Settings', 'civicrm'); ?></h1>
+  <h1><?php esc_html_e('CiviCRM Settings', 'civicrm'); ?></h1>
 
-  <p><?php _e('We have collected some settings here because they are important for configuring CiviCRM in WordPress.', 'civicrm'); ?></p>
+  <p><?php esc_html_e('We have collected some settings here because they are important for configuring CiviCRM in WordPress.', 'civicrm'); ?></p>
 
   <form method="post" id="civicrm_options_form" action="<?php echo $this->page_submit_url_get(); ?>">
 
@@ -40,7 +45,7 @@
       <div id="dashboard-widgets" class="metabox-holder<?php echo $columns_css; ?>">
 
         <div id="postbox-container-1" class="postbox-container">
-          <?php do_meta_boxes($screen->id, 'normal', '');  ?>
+          <?php do_meta_boxes($screen->id, 'normal', ''); ?>
         </div>
 
         <div id="postbox-container-2" class="postbox-container">
diff --git a/civicrm.php b/civicrm.php
index e0ff08158147073ebbdcc20458b3474df3aae832..51c593b1e0a65b87e0de47901a6cfd13ac325fae 100644
--- a/civicrm.php
+++ b/civicrm.php
@@ -2,7 +2,7 @@
 /**
  * Plugin Name: CiviCRM
  * Description: CiviCRM - Growing and Sustaining Relationships
- * Version: 5.68.1
+ * Version: 5.69.0
  * Requires at least: 4.9
  * Requires PHP:      7.3
  * Author: CiviCRM LLC
@@ -36,7 +36,7 @@ if (!defined('ABSPATH')) {
 }
 
 // Set version here: changing it forces Javascript and CSS to reload.
-define('CIVICRM_PLUGIN_VERSION', '5.68.1');
+define('CIVICRM_PLUGIN_VERSION', '5.69.0');
 
 // Store reference to this file.
 if (!defined('CIVICRM_PLUGIN_FILE')) {
@@ -197,6 +197,38 @@ class CiviCRM_For_WordPress {
    */
   public $admin;
 
+  /**
+   * @var array
+   * Reference to the original $_GET value.
+   * @since 4.6
+   * @access protected
+   */
+  protected $wp_get;
+
+  /**
+   * @var array
+   * Reference to the original $_POST value.
+   * @since 4.6
+   * @access protected
+   */
+  protected $wp_post;
+
+  /**
+   * @var array
+   * Reference to the original $_COOKIE value.
+   * @since 4.6
+   * @access protected
+   */
+  protected $wp_cookie;
+
+  /**
+   * @var array
+   * Reference to the original $_REQUEST value.
+   * @since 4.6
+   * @access protected
+   */
+  protected $wp_request;
+
   // ---------------------------------------------------------------------------
   // Setup
   // ---------------------------------------------------------------------------
@@ -217,15 +249,12 @@ class CiviCRM_For_WordPress {
       // Create instance.
       self::$instance = new CiviCRM_For_WordPress();
 
-      // Include legacy global scope functions.
+      // Include global scope functions.
       include_once CIVICRM_PLUGIN_DIR . 'includes/civicrm.functions.php';
 
-      /*
-       * Incorporate WP-CLI Integration based on drush CiviCRM functionality.
-       * @see https://github.com/andy-walker/wp-cli-civicrm
-       */
+      // Add WP-CLI commands.
       if (defined('WP_CLI') && WP_CLI) {
-        include_once CIVICRM_PLUGIN_DIR . 'wp-cli/civicrm.php';
+        include_once CIVICRM_PLUGIN_DIR . 'wp-cli/wp-cli-civicrm.php';
       }
 
       // Delay setup until 'plugins_loaded' to allow other plugins to load as well.
@@ -329,8 +358,10 @@ class CiviCRM_For_WordPress {
     update_option('civicrm_activation_in_progress', 'false');
 
     // When installed via the WordPress UI, try and redirect to the Installer page.
-    if (!is_multisite() && !isset($_GET['activate-multi']) && !CIVICRM_INSTALLED) {
-      wp_redirect(admin_url('admin.php?page=civicrm-install'));
+    // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+    $activate_multi = isset($_GET['activate-multi']) ? sanitize_text_field(wp_unslash($_GET['activate-multi'])) : '';
+    if (!is_multisite() && empty($activate_multi) && !CIVICRM_INSTALLED) {
+      wp_safe_redirect(admin_url('admin.php?page=civicrm-install'));
       exit;
     }
 
@@ -518,6 +549,7 @@ class CiviCRM_For_WordPress {
   public function enable_translation() {
 
     // Load translations.
+    // phpcs:ignore WordPress.WP.DeprecatedParameters.Load_plugin_textdomainParam2Found
     load_plugin_textdomain(
       // Unique name.
       'civicrm',
@@ -549,11 +581,9 @@ class CiviCRM_For_WordPress {
    */
   public function civicrm_in_wordpress_set() {
 
-    // Get identifying query var.
+    // Store identifying query var.
     $page = get_query_var('civiwp');
-
-    // Store.
-    self::$in_wordpress = ($page == 'CiviCRM') ? TRUE : FALSE;
+    self::$in_wordpress = ($page === 'CiviCRM') ? TRUE : FALSE;
 
   }
 
@@ -697,7 +727,7 @@ class CiviCRM_For_WordPress {
     }
 
     // Bail if filters are suppressed on this query.
-    if (TRUE == $query->get('suppress_filters')) {
+    if (TRUE === $query->get('suppress_filters')) {
       return;
     }
 
@@ -709,10 +739,10 @@ class CiviCRM_For_WordPress {
     $alreadyRegistered = TRUE;
 
     // Redirect if old query var is present.
-    if ('CiviCRM' == get_query_var('page') && 'CiviCRM' != get_query_var('civiwp')) {
+    if ('CiviCRM' === get_query_var('page') && 'CiviCRM' !== get_query_var('civiwp')) {
       $redirect_url = remove_query_arg('page', FALSE);
       $redirect_url = add_query_arg('civiwp', 'CiviCRM', $redirect_url);
-      wp_redirect($redirect_url, 301);
+      wp_safe_redirect($redirect_url, 301);
       exit();
     }
 
@@ -1155,6 +1185,7 @@ class CiviCRM_For_WordPress {
     $original_timezone = date_default_timezone_get();
     $wp_site_timezone = $this->get_timezone_string();
     if ($wp_site_timezone) {
+      // phpcs:ignore WordPress.DateTime.RestrictedFunctions.timezone_change_date_default_timezone_set
       date_default_timezone_set($wp_site_timezone);
       CRM_Core_Config::singleton()->userSystem->setMySQLTimeZone();
     }
@@ -1178,7 +1209,8 @@ class CiviCRM_For_WordPress {
      * Bypass synchronize if running upgrade to avoid any serious non-recoverable
      * error which might hinder the upgrade process.
      */
-    if (CRM_Utils_Array::value('q', $_GET) != 'civicrm/upgrade') {
+    // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+    if (CRM_Utils_Array::value('q', $_GET) !== 'civicrm/upgrade') {
       $this->users->sync_user($current_user);
     }
 
@@ -1200,6 +1232,7 @@ class CiviCRM_For_WordPress {
 
     // Restore original timezone.
     if ($original_timezone) {
+      // phpcs:ignore WordPress.DateTime.RestrictedFunctions.timezone_change_date_default_timezone_set
       date_default_timezone_set($original_timezone);
     }
 
@@ -1248,8 +1281,10 @@ class CiviCRM_For_WordPress {
      * @see https://www.php.net/manual/en/timezones.others.php
      */
     $offset = get_option('gmt_offset');
+    // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
     if (0 != $offset && floor($offset) == $offset) {
-      $offset_string = $offset > 0 ? "-$offset" : '+' . abs((int) $offset);
+      $offset_int = (int) $offset;
+      $offset_string = $offset > 0 ? "-$offset" : '+' . abs($offset_int);
       $tzstring = 'Etc/GMT' . $offset_string;
     }
 
@@ -1272,6 +1307,9 @@ class CiviCRM_For_WordPress {
    */
   private function remove_wp_magic_quotes() {
 
+    // phpcs:disable WordPress.Security.NonceVerification.Recommended
+    // phpcs:disable WordPress.Security.NonceVerification.Missing
+
     // Save original arrays.
     $this->wp_get     = $_GET;
     $this->wp_post    = $_POST;
@@ -1284,6 +1322,9 @@ class CiviCRM_For_WordPress {
     $_COOKIE  = stripslashes_deep($_COOKIE);
     $_REQUEST = stripslashes_deep($_REQUEST);
 
+    // phpcs:enable WordPress.Security.NonceVerification.Recommended
+    // phpcs:enable WordPress.Security.NonceVerification.Missing
+
     // Test for query var.
     $q = get_query_var('q');
     if (!empty($q)) {
@@ -1369,6 +1410,8 @@ class CiviCRM_For_WordPress {
     $_COOKIE  = $this->wp_cookie;
     $_REQUEST = $this->wp_request;
 
+    unset($this->wp_get, $this->wp_post, $this->wp_cookie, $this->wp_request);
+
   }
 
   /**
@@ -1394,7 +1437,12 @@ class CiviCRM_For_WordPress {
     // Grab query var.
     $html = get_query_var('html');
     if (empty($html)) {
-      $html = isset($_GET['html']) ? $_GET['html'] : '';
+      // We do not use $html apart to test for empty.
+      // phpcs:disable WordPress.Security.NonceVerification.Recommended
+      // phpcs:disable WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
+      $html = isset($_GET['html']) ? wp_unslash($_GET['html']) : '';
+      // phpcs:enable WordPress.Security.NonceVerification.Recommended
+      // phpcs:enable WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
     }
 
     /*
@@ -1402,9 +1450,11 @@ class CiviCRM_For_WordPress {
      * pages. Maybe the menu-XML should include some metadata to make this
      * unnecessary?
      */
-    if (CRM_Utils_Array::value('HTTP_X_REQUESTED_WITH', $_SERVER) == 'XMLHttpRequest'
-        || ($argdata['args'][0] == 'civicrm' && in_array($argdata['args'][1], ['ajax', 'file']))
+    if (CRM_Utils_Array::value('HTTP_X_REQUESTED_WITH', $_SERVER) === 'XMLHttpRequest'
+        || ($argdata['args'][0] === 'civicrm' && in_array($argdata['args'][1], ['ajax', 'file']))
+        // phpcs:disable WordPress.Security.NonceVerification.Recommended
         || !empty($_REQUEST['snippet'])
+        // phpcs:enable WordPress.Security.NonceVerification.Recommended
         || strpos($argdata['argString'], 'civicrm/event/ical') === 0 && empty($html)
         || strpos($argdata['argString'], 'civicrm/contact/imagefile') === 0
     ) {
@@ -1433,7 +1483,9 @@ class CiviCRM_For_WordPress {
     // Get path from query vars.
     $q = get_query_var('q');
     if (empty($q)) {
-      $q = isset($_GET['q']) ? $_GET['q'] : '';
+      // phpcs:disable WordPress.Security.NonceVerification.Recommended
+      $q = isset($_GET['q']) ? sanitize_text_field(wp_unslash($_GET['q'])) : '';
+      // phpcs:enable WordPress.Security.NonceVerification.Recommended
     }
 
     /*
@@ -1466,25 +1518,18 @@ class CiviCRM_For_WordPress {
   /**
    * Get base URL.
    *
-   * Clone of CRM_Utils_System_WordPress::getBaseUrl() whose access is set to
-   * private. Until it is public, we cannot access the URL of the Base Page since
-   * CRM_Utils_System_WordPress::url().
-   *
-   * 27-09-2016
-   * CRM-16421 CRM-17633 WIP Changes to support WordPress in it's own directory.
-   * https://wiki.civicrm.org/confluence/display/CRM/WordPress+installed+in+its+own+directory+issues
-   * For now leave hard coded wp-admin references.
-   * TODO: remove wp-admin references and replace with admin_url() in the future.
-   * TODO: Look at best way to get path to admin_url.
+   * Clone of CRM_Utils_System_WordPress::getBaseUrl() whose access was set to
+   * private. Now that it is public, we can access that method instead.
    *
    * @since 4.4
    *
    * @param bool $absolute Passing TRUE prepends the scheme and domain, FALSE doesn't.
    * @param bool $frontend Passing FALSE returns the admin URL.
-   * @param $forceBackend Passing TRUE overrides $frontend and returns the admin URL.
+   * @param bool $forceBackend Passing TRUE overrides $frontend and returns the admin URL.
    * @return mixed|null|string
    */
   public function get_base_url($absolute, $frontend, $forceBackend) {
+    _deprecated_function(__METHOD__, '5.69', 'CRM_Utils_System::getBaseUrl');
     $config = CRM_Core_Config::singleton();
     if ((is_admin() && !$frontend) || $forceBackend) {
       return Civi::paths()->getUrl('[wp.backend]/.', $absolute ? 'absolute' : 'relative');
diff --git a/civicrm/CRM/Activity/BAO/Activity.php b/civicrm/CRM/Activity/BAO/Activity.php
index 8405e21c4bfeadadedbda92044973df5cd9b1617..1b9722d5cc7286cb33db6a3309ed4b4ce122200b 100644
--- a/civicrm/CRM/Activity/BAO/Activity.php
+++ b/civicrm/CRM/Activity/BAO/Activity.php
@@ -691,9 +691,7 @@ class CRM_Activity_BAO_Activity extends CRM_Activity_DAO_Activity {
     foreach ($result as $id => $activity) {
       $isBulkActivity = (!$bulkActivityTypeID || ($bulkActivityTypeID === $activity['activity_type_id']));
       foreach ($mappingParams as $apiKey => $expectedName) {
-        if (in_array($apiKey, [
-          'target_contact_name',
-        ])) {
+        if (in_array($apiKey, ['target_contact_name'])) {
 
           if ($isBulkActivity) {
             // @todo  - how is this used? Couldn't we use 'is_bulk' or something clearer?
@@ -1830,6 +1828,9 @@ AND cl.modified_id  = c.id
     $followupParams['activity_type_id'] = $params['followup_activity_type_id'];
     // Get Subject of Follow-up Activiity, CRM-4491
     $followupParams['subject'] = $params['followup_activity_subject'] ?? NULL;
+    if (!is_array($params['followup_assignee_contact_id']) && !empty($params['followup_assignee_contact_id'])) {
+      $params['followup_assignee_contact_id'] = explode(",", $params['followup_assignee_contact_id']);
+    }
     $followupParams['assignee_contact_id'] = $params['followup_assignee_contact_id'] ?? NULL;
 
     // Create target contact for followup.
@@ -2160,7 +2161,7 @@ AND cl.modified_id  = c.id
     }
 
     // Check for target and assignee contacts.
-    // First check for supper permission.
+    // First check for super permission.
     $supPermission = 'view all contacts';
     if ($action == CRM_Core_Action::UPDATE) {
       $supPermission = 'edit all contacts';
@@ -2296,13 +2297,9 @@ INNER JOIN  civicrm_option_group grp ON (grp.id = option_group_id AND grp.name =
    * @return bool
    */
   public static function checkEditInboundEmailsPermissions() {
-    if (CRM_Core_Permission::check('edit inbound email basic information')
-      || CRM_Core_Permission::check('edit inbound email basic information and content')
-    ) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return CRM_Core_Permission::check([
+      ['edit inbound email basic information', /* OR */ 'edit inbound email basic information and content'],
+    ]);
   }
 
   /**
@@ -2314,7 +2311,7 @@ INNER JOIN  civicrm_option_group grp ON (grp.id = option_group_id AND grp.name =
     $viewOnlyActivities = [
       'Email' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Email'),
     ];
-    if (self::checkEditInboundEmailsPermissions()) {
+    if (!self::checkEditInboundEmailsPermissions()) {
       $viewOnlyActivities['Inbound Email'] = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Inbound Email');
     }
     return $viewOnlyActivities;
diff --git a/civicrm/CRM/Activity/Form/Activity.php b/civicrm/CRM/Activity/Form/Activity.php
index cefbe57ae3770dd3f26e784a08104f17baba4db3..c88631dceb8934fc4d5aea928a46b6f93a43b603 100644
--- a/civicrm/CRM/Activity/Form/Activity.php
+++ b/civicrm/CRM/Activity/Form/Activity.php
@@ -20,6 +20,8 @@
  */
 class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task {
 
+  use CRM_Activity_Form_ActivityFormTrait;
+
   /**
    * The id of the object being edited / created
    *
@@ -65,7 +67,6 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task {
    */
   protected $_sourceContactId;
   protected $_targetContactId;
-  protected $_asigneeContactId;
 
   protected $_single;
 
@@ -266,36 +267,19 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task {
     $this->assign('context', $this->_context);
 
     $this->_action = CRM_Utils_Request::retrieve('action', 'String', $this);
-
-    if ($this->_action & CRM_Core_Action::DELETE) {
+    if ($this->getAction() & CRM_Core_Action::DELETE) {
       if (!CRM_Core_Permission::check('delete activities')) {
         CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.'));
       }
     }
 
-    // CRM-6957
-    // When we come from contact search, activity id never comes.
-    // So don't try to get from object, it might gives you wrong one.
-
-    // if we're not adding new one, there must be an id to
-    // an activity we're trying to work on.
-    if ($this->_action != CRM_Core_Action::ADD &&
-      get_class($this->controller) !== 'CRM_Contact_Controller_Search'
-    ) {
-      $this->_activityId = CRM_Utils_Request::retrieve('id', 'Positive', $this);
-    }
-
-    $this->_activityTypeId = CRM_Utils_Request::retrieve('atype', 'Positive', $this);
+    $this->_activityTypeId = $this->getActivityValue('activity_type_id') ?: CRM_Utils_Request::retrieve('atype', 'Positive', $this);
     $this->assign('atype', $this->_activityTypeId);
-
     $this->assign('activityId', $this->_activityId);
 
     // Check for required permissions, CRM-6264.
-    if ($this->_activityId &&
-      in_array($this->_action, [
-        CRM_Core_Action::UPDATE,
-        CRM_Core_Action::VIEW,
-      ]) &&
+    if ($this->getActivityID() &&
+      in_array($this->_action, [CRM_Core_Action::UPDATE, CRM_Core_Action::VIEW]) &&
       !CRM_Activity_BAO_Activity::checkPermission($this->_activityId, $this->_action)
     ) {
       CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.'));
@@ -307,13 +291,6 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task {
       $this->assign('allow_edit_inbound_emails', CRM_Activity_BAO_Activity::checkEditInboundEmailsPermissions());
     }
 
-    if (!$this->_activityTypeId && $this->_activityId) {
-      $this->_activityTypeId = CRM_Core_DAO::getFieldValue('CRM_Activity_DAO_Activity',
-        $this->_activityId,
-        'activity_type_id'
-      );
-    }
-
     $this->assignActivityType();
 
     // Check the mode when this form is called either single or as
@@ -376,8 +353,10 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task {
       [$this->_activityTypeName, $activityTypeDescription] = CRM_Core_BAO_OptionValue::getActivityTypeDetails($this->_activityTypeId);
     }
 
-    // Set activity type name and description to template.
-    $this->assign('activityTypeName', $this->_activityTypeName ?? FALSE);
+    // Set activity type name and description to template. Type should no longer be used anywhere
+    // except the case_activity workflow template - unsure how to test that... We want to remove
+    // it due to mis-naming of the variable. The workflow template can use a token...
+    $this->assign('activityTypeName', $this->_activityTypeName);
     $this->assign('activityTypeDescription', $activityTypeDescription ?? FALSE);
 
     // set user context
@@ -406,13 +385,7 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task {
       }
       $this->assign('searchKey', $qfKey);
     }
-    elseif (in_array($this->_context, [
-      'standalone',
-      'home',
-      'dashlet',
-      'dashletFullscreen',
-    ])
-    ) {
+    elseif (in_array($this->_context, ['standalone', 'home', 'dashlet', 'dashletFullscreen'])) {
       $urlParams = 'reset=1';
       $urlString = 'civicrm/dashboard';
     }
@@ -1272,8 +1245,29 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task {
         }
       }
     }
-
     $this->assign('activityTypeNameAndLabel', $activityTypeNameAndLabel);
   }
 
+  /**
+   * Get the activity ID.
+   *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   */
+  public function getActivityID(): ?int {
+    // CRM-6957
+    // When we come from contact search, activity id never comes.
+    // So don't try to get from object, it might gives you wrong one.
+    if ($this->controller instanceof \CRM_Contact_Controller_Search) {
+      return NULL;
+    }
+    if (!isset($this->_activityId) && $this->_action != CRM_Core_Action::ADD) {
+      $this->_activityId = CRM_Utils_Request::retrieve('id', 'Positive', $this);
+    }
+    return $this->_activityId ? (int) $this->_activityId : FALSE;
+  }
+
 }
diff --git a/civicrm/CRM/Activity/Form/ActivityFormTrait.php b/civicrm/CRM/Activity/Form/ActivityFormTrait.php
new file mode 100644
index 0000000000000000000000000000000000000000..81f0195099f84931433c931452e1f3261a422f2e
--- /dev/null
+++ b/civicrm/CRM/Activity/Form/ActivityFormTrait.php
@@ -0,0 +1,51 @@
+<?php
+
+use Civi\API\EntityLookupTrait;
+
+/**
+ * Trait implements functions to retrieve activity related values.
+ */
+trait CRM_Activity_Form_ActivityFormTrait {
+
+  use EntityLookupTrait;
+
+  /**
+   * Get the value for a field relating to the activity.
+   *
+   * All values returned in apiv4 format. Escaping may be required.
+   *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   *
+   * @param string $fieldName
+   *
+   * @return mixed
+   * @throws \CRM_Core_Exception
+   */
+  public function getActivityValue(string $fieldName) {
+    if ($this->isDefined('Activity')) {
+      return $this->lookup('Activity', $fieldName);
+    }
+    $id = $this->getActivityID();
+    if ($id) {
+      $this->define('Activity', 'Activity', ['id' => $id]);
+      return $this->lookup('Activity', $fieldName);
+    }
+    return NULL;
+  }
+
+  /**
+   * Get the selected Activity ID.
+   *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   */
+  public function getActivityID(): ?int {
+    throw new CRM_Core_Exception('`getActivityID` must be implemented');
+  }
+
+}
diff --git a/civicrm/CRM/Activity/Form/ActivityView.php b/civicrm/CRM/Activity/Form/ActivityView.php
index 553c16ebb85022820f01b47344aa064fb99088c9..e5223a6f1276fe0faad9ade150ad2beb11e0655a 100644
--- a/civicrm/CRM/Activity/Form/ActivityView.php
+++ b/civicrm/CRM/Activity/Form/ActivityView.php
@@ -25,6 +25,15 @@ class CRM_Activity_Form_ActivityView extends CRM_Core_Form {
    */
   public $submitOnce = TRUE;
 
+  /**
+   * Used by CRM_Mailing_BAO_Mailing::getMailingContent(), so cannot be removed
+   * (even though at first glance it may look safe)
+   *
+   * @var bool
+   * @internal
+   */
+  public $_mailing_id;
+
   /**
    * Set variables up before form is built.
    */
@@ -42,12 +51,7 @@ class CRM_Activity_Form_ActivityView extends CRM_Core_Form {
     }
 
     $session = CRM_Core_Session::singleton();
-    if (!in_array($context, [
-      'home',
-      'dashlet',
-      'dashletFullscreen',
-    ])
-    ) {
+    if (!in_array($context, ['home', 'dashlet', 'dashletFullscreen'])) {
       $url = CRM_Utils_System::url('civicrm/contact/view', "reset=1&cid={$cid}&selectedChild=activity");
     }
     else {
diff --git a/civicrm/CRM/Activity/Page/AJAX.php b/civicrm/CRM/Activity/Page/AJAX.php
index 5c2c63ec9fc581e77c8969da1d6a642212c5ab05..9977d747dd091152e9ce213fdc94504bcf30ef07 100644
--- a/civicrm/CRM/Activity/Page/AJAX.php
+++ b/civicrm/CRM/Activity/Page/AJAX.php
@@ -325,10 +325,7 @@ class CRM_Activity_Page_AJAX {
 
     // Mark previous activity as deleted. If it was a non-case activity
     // then just change the subject.
-    if (in_array($params['mode'], [
-      'move',
-      'file',
-    ])) {
+    if (in_array($params['mode'], ['move', 'file'])) {
       $caseActivity = new CRM_Case_DAO_CaseActivity();
       $caseActivity->case_id = $params['caseID'];
       $caseActivity->activity_id = $otherActivity->id;
diff --git a/civicrm/CRM/Activity/Page/Tab.php b/civicrm/CRM/Activity/Page/Tab.php
index bca1f8abbe222158ac8da45fa5b7a2e3cde5932b..1845e3d5ff45d4979c321516e83ba1ea81ef086d 100644
--- a/civicrm/CRM/Activity/Page/Tab.php
+++ b/civicrm/CRM/Activity/Page/Tab.php
@@ -20,6 +20,20 @@
  */
 class CRM_Activity_Page_Tab extends CRM_Core_Page {
 
+  /**
+   * Case ID, passed in via query param.
+   *
+   * @var int
+   */
+  public $_caseId;
+
+  /**
+   * Contact ID, passed in via query param
+   *
+   * @var int
+   */
+  public $_contactId;
+
   /**
    * Browse all activities for a particular contact.
    */
@@ -111,7 +125,7 @@ class CRM_Activity_Page_Tab extends CRM_Core_Page {
     $this->assign('contactID', $this->_contactId);
 
     // check logged in url permission
-    CRM_Contact_Page_View::checkUserPermission($this);
+    CRM_Contact_Page_View::checkUserPermission($this, $this->_contactId);
 
     $this->_action = CRM_Utils_Request::retrieve('action', 'String', $this, FALSE, 'browse');
     $this->assign('action', $this->_action);
@@ -184,10 +198,7 @@ class CRM_Activity_Page_Tab extends CRM_Core_Page {
         'Print PDF Letter'
       );
 
-      if (in_array($activityTypeId, [
-        $emailTypeValue,
-        $letterTypeValue,
-      ])) {
+      if (in_array($activityTypeId, [$emailTypeValue, $letterTypeValue])) {
         return;
       }
     }
diff --git a/civicrm/CRM/Admin/Form/ParticipantStatusType.php b/civicrm/CRM/Admin/Form/ParticipantStatusType.php
index 7eb952356895f5b04702a0da49567102b2387bfb..b48b822ff8cabfb1ccd9227407c9fda053c23b46 100644
--- a/civicrm/CRM/Admin/Form/ParticipantStatusType.php
+++ b/civicrm/CRM/Admin/Form/ParticipantStatusType.php
@@ -21,6 +21,13 @@ class CRM_Admin_Form_ParticipantStatusType extends CRM_Admin_Form {
    */
   public $submitOnce = TRUE;
 
+  /**
+   * Used to make sure a malicious POST does not change is_reserved
+   *
+   * @var bool
+   */
+  protected $_isReserved = FALSE;
+
   /**
    * Explicitly declare the entity api name.
    */
@@ -70,7 +77,7 @@ class CRM_Admin_Form_ParticipantStatusType extends CRM_Admin_Form {
     if (empty($defaults['weight'])) {
       $defaults['weight'] = CRM_Utils_Weight::getDefaultWeight('CRM_Event_DAO_ParticipantStatusType');
     }
-    $this->_isReserved = $defaults['is_reserved'] ?? NULL;
+    $this->_isReserved = $defaults['is_reserved'] ?? FALSE;
     if ($this->_isReserved) {
       $this->freeze(['name', 'class', 'is_active']);
     }
diff --git a/civicrm/CRM/Admin/Form/Preferences/Contribute.php b/civicrm/CRM/Admin/Form/Preferences/Contribute.php
index e6182123ee5135e77c49d6602042827b55587e09..db4ffc3ac427aa6759c3f72f7a8e76304f8d972c 100644
--- a/civicrm/CRM/Admin/Form/Preferences/Contribute.php
+++ b/civicrm/CRM/Admin/Form/Preferences/Contribute.php
@@ -15,161 +15,23 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Core\SettingsMetadata;
+
 /**
  * This class generates form components for the display preferences.
  */
 class CRM_Admin_Form_Preferences_Contribute extends CRM_Admin_Form_Preferences {
 
-  /**
-   * Our standards for settings are to have a setting per value with defined metadata.
-   *
-   * Unfortunately the 'contribution_invoice_settings' has been added in non-compliance.
-   * We use this array to hack-handle.
-   *
-   * These are now stored as individual settings but this form still does weird & wonderful things.
-   *
-   * Note the 'real' settings on this form are added via metadata definition - ie
-   * 'settings_pages' => ['contribute' => ['weight' => 1]], in their metadata.
-   *
-   * @var array
-   */
-  protected $invoiceSettings = [];
-
   /**
    * Build the form object.
-   *
-   * @throws \CRM_Core_Exception
    */
-  public function buildQuickForm() {
+  public function buildQuickForm(): void {
     parent::buildQuickForm();
-    $this->invoiceSettings = [
-      'invoice_prefix' => [
-        'html_type' => 'text',
-        'title' => ts('Invoice Prefix'),
-        'weight' => 1,
-        'description' => ts('Enter prefix to be display on PDF for invoice'),
-      ],
-      'due_date' => [
-        'html_type' => 'text',
-        'title' => ts('Due Date'),
-        'weight' => 3,
-        'description' => '',
-      ],
-      'due_date_period' => [
-        'html_type' => 'select',
-        'title' => ts('For transmission'),
-        'weight' => 4,
-        'description' => ts('Select the interval for due date.'),
-        'option_values' => [
-          'select' => ts('- select -'),
-          'days' => ts('Days'),
-          'months' => ts('Months'),
-          'years' => ts('Years'),
-        ],
-      ],
-      'notes' => [
-        'html_type' => 'wysiwyg',
-        'title' => ts('Notes or Standard Terms'),
-        'weight' => 5,
-        'description' => ts('Enter note or message to be displayed on PDF invoice or credit notes '),
-        'attributes' => ['rows' => 2, 'cols' => 40],
-      ],
-      'is_email_pdf' => [
-        'html_type' => 'checkbox',
-        'title' => ts('Automatically email invoice when user purchases online'),
-        'weight' => 6,
-        'description' => ts('Should a pdf invoice be emailed automatically?'),
-      ],
-      'tax_term' => [
-        'html_type' => 'text',
-        'title' => ts('Tax Term'),
-        'weight' => 7,
-        'description' => '',
-      ],
-      'tax_display_settings' => [
-        'html_type' => 'select',
-        'title' => ts('Tax Display Settings'),
-        'weight' => 8,
-        'description' => '',
-        'option_values' => [
-          'Do_not_show' => ts('Do not show breakdown, only show total - i.e %1', [
-            1 => CRM_Utils_Money::format(120),
-          ]),
-          'Inclusive' => ts('Show [tax term] inclusive price - i.e. %1', [
-            1 => ts('%1 (includes [tax term] of %2)', [1 => CRM_Utils_Money::format(120), 2 => CRM_Utils_Money::format(20)]),
-          ]),
-          'Exclusive' => ts('Show [tax term] exclusive price - i.e. %1', [
-            1 => ts('%1 + %2 [tax term]', [1 => CRM_Utils_Money::format(120), 2 => CRM_Utils_Money::format(20)]),
-          ]),
-        ],
-      ],
-    ];
-
-    // @todo this is a faux metadata approach - we should be honest & add them correctly or find a way to make this
-    // compatible with our settings standards.
-    foreach ($this->invoiceSettings as $fieldName => $fieldValue) {
-      switch ($fieldValue['html_type']) {
-        case 'text':
-          $this->addElement('text',
-            $fieldName,
-            $fieldValue['title'],
-            [
-              'maxlength' => 64,
-              'size' => 32,
-            ]
-          );
-          break;
-
-        case 'checkbox':
-          $this->add($fieldValue['html_type'],
-            $fieldName,
-            $fieldValue['title']
-          );
-          break;
-
-        case 'select':
-          $this->addElement('select',
-            $fieldName,
-            $fieldValue['title'],
-            $fieldValue['option_values'],
-            CRM_Utils_Array::value('attributes', $fieldValue)
-          );
-          break;
-
-        case 'wysiwyg':
-          $this->add('wysiwyg', $fieldName, $fieldValue['title'], $fieldValue['attributes']);
-          break;
-      }
-    }
-
-    $this->assign('htmlFields', $this->invoiceSettings);
-  }
-
-  /**
-   * Set default values for the form.
-   *
-   * default values are retrieved from the database
-   */
-  public function setDefaultValues() {
-    $defaults = parent::setDefaultValues();
-    $defaults = array_merge($defaults, Civi::settings()->get('contribution_invoice_settings'));
-    return $defaults;
-  }
-
-  /**
-   * Process the form after the input has been submitted and validated.
-   */
-  public function postProcess() {
-    // store the submitted values in an array
-    $params = $this->controller->exportValues($this->_name);
-    $invoiceParams = array_intersect_key($params, $this->invoiceSettings);
-    // This is a hack - invoicing is it's own setting but it is being used from invoice params
-    // too. This means that saving from api will not have the desired core effect.
-    // but we should fix that elsewhere - ie. stop abusing the settings
-    // and fix the code repetition associated with invoicing
-    $invoiceParams['invoicing'] = $params['invoicing'] ?? 0;
-    Civi::settings()->set('contribution_invoice_settings', $invoiceParams);
-    parent::postProcess();
+    $invoiceSettings = SettingsMetadata::getMetadata(['name' => ['invoice_prefix', 'tax_term', 'invoice_notes', 'invoice_due_date', 'invoice_is_email_pdf', 'invoice_due_date_period', 'tax_display_settings']], NULL, TRUE);
+    // Let the main template file deal with the main setting & then Contribute.tpl
+    // can stick the invoice settings in a div that can show-hide-toggle if invoicing is enabled.
+    $this->assign('fields', $this->filterMetadataByWeight(array_diff_key($this->getSettingsMetaData(), $invoiceSettings)));
+    $this->assign('invoiceDependentFields', $invoiceSettings);
   }
 
 }
diff --git a/civicrm/CRM/Admin/Form/PreferencesDate.php b/civicrm/CRM/Admin/Form/PreferencesDate.php
index 3f9337bb890f838a68f93c6c1fa5e964974a7487..da8e438a451d65c4b541544d6de00e9d0fe050fe 100644
--- a/civicrm/CRM/Admin/Form/PreferencesDate.php
+++ b/civicrm/CRM/Admin/Form/PreferencesDate.php
@@ -20,6 +20,13 @@
  */
 class CRM_Admin_Form_PreferencesDate extends CRM_Admin_Form {
 
+  /**
+   * @return string
+   */
+  public function getDefaultEntity(): string {
+    return 'PreferencesDate';
+  }
+
   /**
    * Build the form object.
    */
diff --git a/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php b/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php
index cf0753506856307d297522604fd1a450cbd5f943..cc221644ae7b88a98c08196f8010f9476c93b8df 100644
--- a/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php
+++ b/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php
@@ -48,9 +48,13 @@ class CRM_Admin_Form_Setting_Miscellaneous extends CRM_Admin_Form_Setting {
   /**
    * Basic setup.
    */
-  public function preProcess() {
-    // check for post max size
-    CRM_Utils_Number::formatUnitSize(ini_get('post_max_size'), TRUE);
+  public function preProcess(): void {
+    $maxImportFileSize = CRM_Utils_Number::formatUnitSize(ini_get('upload_max_filesize'));
+    $postMaxSize = CRM_Utils_Number::formatUnitSize(ini_get('post_max_size'));
+    if ($maxImportFileSize > $postMaxSize) {
+      CRM_Core_Session::setStatus(ts("Note: Upload max filesize ('upload_max_filesize') should not exceed Post max size ('post_max_size') as defined in PHP.ini, please check with your system administrator."), ts("Warning"), "alert");
+    }
+
     // This is a temp hack for the fact we really don't need to hard-code each setting in the tpl but
     // we haven't worked through NOT doing that. These settings have been un-hardcoded.
     $this->assign('pure_config_settings', [
@@ -100,8 +104,8 @@ class CRM_Admin_Form_Setting_Miscellaneous extends CRM_Admin_Form_Setting {
     $errors = [];
 
     // validate max file size
-    $iniBytes = CRM_Utils_Number::formatUnitSize(ini_get('upload_max_filesize'), FALSE);
-    $inputBytes = CRM_Utils_Number::formatUnitSize($fields['maxFileSize'] . 'M', FALSE);
+    $iniBytes = CRM_Utils_Number::formatUnitSize(ini_get('upload_max_filesize'));
+    $inputBytes = ((int) $fields['maxFileSize']) * 1024 * 1024;
 
     if ($inputBytes > $iniBytes) {
       $errors['maxFileSize'] = ts("Maximum file size cannot exceed limit defined in \"php.ini\" (\"upload_max_filesize=%1\").", [
diff --git a/civicrm/CRM/Admin/Form/SettingTrait.php b/civicrm/CRM/Admin/Form/SettingTrait.php
index 705e0ab600af95a6262e25bec224c920c513899e..eb8d592cf75814ee608086b6bfd6feffc895fae6 100644
--- a/civicrm/CRM/Admin/Form/SettingTrait.php
+++ b/civicrm/CRM/Admin/Form/SettingTrait.php
@@ -150,21 +150,7 @@ trait CRM_Admin_Form_SettingTrait {
    */
   protected function getSettingsOrderedByWeight() {
     $settingMetaData = $this->getSettingsMetaData();
-    $filter = $this->getSettingPageFilter();
-
-    usort($settingMetaData, function ($a, $b) use ($filter) {
-      // Handle cases in which a comparison is impossible. Such will be considered ties.
-      if (
-        // A comparison can't be made unless both setting weights are declared.
-        !isset($a['settings_pages'][$filter]['weight'], $b['settings_pages'][$filter]['weight'])
-        // A pair of settings might actually have the same weight.
-        || $a['settings_pages'][$filter]['weight'] === $b['settings_pages'][$filter]['weight']
-      ) {
-        return 0;
-      }
-
-      return $a['settings_pages'][$filter]['weight'] > $b['settings_pages'][$filter]['weight'] ? 1 : -1;
-    });
+    $settingMetaData = $this->filterMetadataByWeight($settingMetaData);
 
     return $settingMetaData;
   }
@@ -412,4 +398,28 @@ trait CRM_Admin_Form_SettingTrait {
     }
   }
 
+  /**
+   * @param array $settingMetaData
+   *
+   * @return array
+   */
+  protected function filterMetadataByWeight(array $settingMetaData): array {
+    $filter = $this->getSettingPageFilter();
+
+    usort($settingMetaData, function ($a, $b) use ($filter) {
+      // Handle cases in which a comparison is impossible. Such will be considered ties.
+      if (
+        // A comparison can't be made unless both setting weights are declared.
+        !isset($a['settings_pages'][$filter]['weight'], $b['settings_pages'][$filter]['weight'])
+        // A pair of settings might actually have the same weight.
+        || $a['settings_pages'][$filter]['weight'] === $b['settings_pages'][$filter]['weight']
+      ) {
+        return 0;
+      }
+
+      return $a['settings_pages'][$filter]['weight'] > $b['settings_pages'][$filter]['weight'] ? 1 : -1;
+    });
+    return $settingMetaData;
+  }
+
 }
diff --git a/civicrm/CRM/Admin/Page/Job.php b/civicrm/CRM/Admin/Page/Job.php
index f8a1a10171909dce2bcd15d490a235e136115705..fb7c9f103ec4b65c2feab7fc8b89853fac846d98 100644
--- a/civicrm/CRM/Admin/Page/Job.php
+++ b/civicrm/CRM/Admin/Page/Job.php
@@ -120,9 +120,6 @@ class CRM_Admin_Page_Job extends CRM_Core_Page_Basic {
     $this->_action = CRM_Utils_Request::retrieve('action', 'String',
       $this, FALSE, 0
     );
-    $this->_context = CRM_Utils_Request::retrieve('context', 'String',
-      $this, FALSE, 0
-    );
 
     if (($this->_action & CRM_Core_Action::COPY) && (!empty($this->_id))) {
       try {
diff --git a/civicrm/CRM/Admin/Page/LabelFormats.php b/civicrm/CRM/Admin/Page/LabelFormats.php
index ea4dead9d9c7caa3dd2bf92b0a2f680ce1eacae1..630be0ef6b57a7de1285ec4188ebd4a0d856ede2 100644
--- a/civicrm/CRM/Admin/Page/LabelFormats.php
+++ b/civicrm/CRM/Admin/Page/LabelFormats.php
@@ -51,19 +51,19 @@ class CRM_Admin_Page_LabelFormats extends CRM_Core_Page_Basic {
       self::$_links = [
         CRM_Core_Action::UPDATE => [
           'name' => ts('Edit'),
-          'url' => 'civicrm/admin/labelFormats',
+          'url' => 'civicrm/admin/labelFormats/edit',
           'qs' => 'action=update&id=%%id%%&group=%%group%%&reset=1',
           'title' => ts('Edit Label Format'),
         ],
         CRM_Core_Action::COPY => [
           'name' => ts('Copy'),
-          'url' => 'civicrm/admin/labelFormats',
+          'url' => 'civicrm/admin/labelFormats/edit',
           'qs' => 'action=copy&id=%%id%%&group=%%group%%&reset=1',
           'title' => ts('Copy Label Format'),
         ],
         CRM_Core_Action::DELETE => [
           'name' => ts('Delete'),
-          'url' => 'civicrm/admin/labelFormats',
+          'url' => 'civicrm/admin/labelFormats/edit',
           'qs' => 'action=delete&id=%%id%%&group=%%group%%&reset=1',
           'title' => ts('Delete Label Format'),
         ],
diff --git a/civicrm/CRM/Api4/Page/AJAX.php b/civicrm/CRM/Api4/Page/AJAX.php
index bea9ec48224007e50d9c8596993bf9b1579c5f16..3e968cd0f91a6347c3646c2e3290de72d7b06675 100644
--- a/civicrm/CRM/Api4/Page/AJAX.php
+++ b/civicrm/CRM/Api4/Page/AJAX.php
@@ -137,10 +137,10 @@ class CRM_Api4_Page_AJAX extends CRM_Core_Page {
       $status = $statusMap[get_class($e)] ?? 500;
       // Send error code (but don't overwrite success code if there are multiple calls and one was successful)
       $this->httpResponseCode = $this->httpResponseCode ?: $status;
-      if (CRM_Core_Permission::check('view debug output') || ($e->getErrorData()['show_detailed_error'] ?? FALSE)) {
+      if (CRM_Core_Permission::check('view debug output') || (method_exists($e, 'getErrorData') && ($e->getErrorData()['show_detailed_error'] ?? FALSE))) {
         $response['error_code'] = $e->getCode();
         $response['error_message'] = $e->getMessage();
-        if (!empty($params['debug'])) {
+        if (!empty($params['debug']) && CRM_Core_Permission::check('view debug output')) {
           if (method_exists($e, 'getUserInfo')) {
             $response['debug']['info'] = $e->getUserInfo();
           }
diff --git a/civicrm/CRM/Badge/BAO/Badge.php b/civicrm/CRM/Badge/BAO/Badge.php
index d3486b13ff254aade14bd521d047702a94f24bb9..d1896836600c364306fe38e3bdbbbb2cc91bfbb1 100644
--- a/civicrm/CRM/Badge/BAO/Badge.php
+++ b/civicrm/CRM/Badge/BAO/Badge.php
@@ -24,6 +24,11 @@ use Civi\Token\TokenProcessor;
  */
 class CRM_Badge_BAO_Badge {
 
+  /**
+   * @var CRM_Utils_PDF_Label
+   */
+  public $pdf;
+
   /**
    * @var bool
    */
@@ -168,9 +173,6 @@ class CRM_Badge_BAO_Badge {
    * @param int $cellspacing
    */
   public function labelCreator($formattedRow, $cellspacing = 0) {
-    $this->lMarginLogo = 18;
-    $this->tMarginName = 20;
-
     $x = $this->pdf->GetAbsX();
     $y = $this->pdf->getY();
 
@@ -363,10 +365,8 @@ class CRM_Badge_BAO_Badge {
       $y = $this->pdf->GetY();
     }
 
-    $this->imgRes = 300;
-
     if ($img) {
-      [$w, $h] = self::getImageProperties($img, $this->imgRes, $w, $h);
+      [$w, $h] = self::getImageProperties($img, 300, $w, $h);
       $this->pdf->Image($img, $x, $y, $w, $h, '', '', '', FALSE, 72, '', FALSE,
         FALSE, $this->debug, FALSE, FALSE, FALSE);
     }
diff --git a/civicrm/CRM/Batch/Form/Entry.php b/civicrm/CRM/Batch/Form/Entry.php
index b17c8c733b27c023c8667d27db3ddf90fbb96900..7a472a9fe1e148b5e56d975a71b23fbb8c3feab7 100644
--- a/civicrm/CRM/Batch/Form/Entry.php
+++ b/civicrm/CRM/Batch/Form/Entry.php
@@ -107,6 +107,11 @@ class CRM_Batch_Form_Entry extends CRM_Core_Form {
    */
   protected $currentRowExistingMembership;
 
+  /**
+   * @var array
+   */
+  protected $_priceSet;
+
   /**
    * Get the contribution id for the current row.
    *
@@ -650,10 +655,7 @@ class CRM_Batch_Form_Entry extends CRM_Core_Form {
         $lineItem = [];
         CRM_Price_BAO_PriceSet::processAmount($this->_priceSet['fields'], $value, $lineItem[$priceSetId]);
 
-        // @todo - stop setting amount level in this function & call the CRM_Price_BAO_PriceSet::getAmountLevel
-        // function to get correct amount level consistently. Remove setting of the amount level in
-        // CRM_Price_BAO_PriceSet::processAmount. Extend the unit tests in CRM_Price_BAO_PriceSetTest
-        // to cover all variants.
+        // @todo - stop setting amount level in this function - use $this->order->getAmountLevel()
         unset($value['amount_level']);
 
         //CRM-11529 for back office transactions
@@ -915,7 +917,7 @@ class CRM_Batch_Form_Entry extends CRM_Core_Form {
   /**
    * Send email receipt.
    *
-   * @param CRM_Core_Form $form
+   * @param CRM_Batch_Form_Entry $form
    *   Form object.
    * @param array $formValues
    *
@@ -952,22 +954,22 @@ class CRM_Batch_Form_Entry extends CRM_Core_Form {
     }
     $form->assign('membership_name', CRM_Member_PseudoConstant::membershipType($membership->membership_type_id));
 
-    [$form->_contributorDisplayName, $form->_contributorEmail]
+    [$contributorDisplayName, $contributorEmail]
       = CRM_Contact_BAO_Contact_Location::getEmailDetails($formValues['contact_id']);
-    $form->_receiptContactId = $formValues['contact_id'];
+    $receiptContactId = $formValues['contact_id'];
 
     CRM_Core_BAO_MessageTemplate::sendTemplate(
       [
         'workflow' => 'membership_offline_receipt',
         'from' => $this->getFromEmailAddress(),
-        'toName' => $form->_contributorDisplayName,
-        'toEmail' => $form->_contributorEmail,
+        'toName' => $contributorDisplayName,
+        'toEmail' => $contributorEmail,
         'PDFFilename' => ts('receipt') . '.pdf',
         'isEmailPdf' => Civi::settings()->get('invoice_is_email_pdf'),
         'isTest' => (bool) ($form->_action & CRM_Core_Action::PREVIEW),
         'modelProps' => [
           'contributionID' => $this->getCurrentRowContributionID(),
-          'contactID' => $form->_receiptContactId,
+          'contactID' => $receiptContactId,
           'membershipID' => $this->getCurrentRowMembershipID(),
         ],
       ]
diff --git a/civicrm/CRM/Campaign/BAO/Survey.php b/civicrm/CRM/Campaign/BAO/Survey.php
index f0220a12b2b6f2314e6cce98c9a5ba37e8534bb8..9976b33dcfa8406ee77a798af796ba546f95f28a 100644
--- a/civicrm/CRM/Campaign/BAO/Survey.php
+++ b/civicrm/CRM/Campaign/BAO/Survey.php
@@ -266,10 +266,7 @@ SELECT  survey.id    as id,
 
     $select = $from = [];
     foreach ($returnProperties as $property => $ignore) {
-      $value = (in_array($property, [
-        'city',
-        'street_address',
-      ])) ? 'address' : $property;
+      $value = (in_array($property, ['city', 'street_address'])) ? 'address' : $property;
       switch ($property) {
         case 'sort_name':
         case 'contact_type':
diff --git a/civicrm/CRM/Campaign/Form/Search.php b/civicrm/CRM/Campaign/Form/Search.php
index dcbf439915d381e73e87f4b334b867d746f5faa0..528bf2ce5defeacd21e9d445c0e74f7fb13802d3 100644
--- a/civicrm/CRM/Campaign/Form/Search.php
+++ b/civicrm/CRM/Campaign/Form/Search.php
@@ -65,12 +65,7 @@ class CRM_Campaign_Form_Search extends CRM_Core_Form_Search {
     //operation for state machine.
     $this->_operation = CRM_Utils_Request::retrieve('op', 'String', $this, FALSE, 'reserve');
     //validate operation.
-    if (!in_array($this->_operation, [
-      'reserve',
-      'release',
-      'interview',
-    ])
-    ) {
+    if (!in_array($this->_operation, ['reserve', 'release', 'interview'])) {
       $this->_operation = 'reserve';
       $this->set('op', $this->_operation);
     }
diff --git a/civicrm/CRM/Campaign/Form/Task/Interview.php b/civicrm/CRM/Campaign/Form/Task/Interview.php
index 34a7c5978c9788bc3fd84e005fc8bf44e4ecce5a..653f67c0cb16f950093ec2f11f529fa99a1df95e 100644
--- a/civicrm/CRM/Campaign/Form/Task/Interview.php
+++ b/civicrm/CRM/Campaign/Form/Task/Interview.php
@@ -59,11 +59,7 @@ class CRM_Campaign_Form_Task_Interview extends CRM_Campaign_Form_Task {
     $this->_reserveToInterview = $this->get('reserveToInterview');
     if ($this->_reserveToInterview || $this->_votingTab) {
       //user came from voting tab / reserve form.
-      foreach ([
-        'surveyId',
-        'contactIds',
-        'interviewerId',
-      ] as $fld) {
+      foreach (['surveyId', 'contactIds', 'interviewerId'] as $fld) {
         $this->{"_$fld"} = $this->get($fld);
       }
       //get the target voter ids.
@@ -428,11 +424,7 @@ WHERE {$clause}
     }
     elseif ($buttonName == '_qf_Interview_next_interviewToRelease') {
       //get ready to jump to release form.
-      foreach ([
-        'surveyId',
-        'contactIds',
-        'interviewerId',
-      ] as $fld) {
+      foreach (['surveyId', 'contactIds', 'interviewerId'] as $fld) {
         $this->controller->set($fld, $this->{"_$fld"});
       }
       $this->controller->set('interviewToRelease', TRUE);
diff --git a/civicrm/CRM/Campaign/Form/Task/Release.php b/civicrm/CRM/Campaign/Form/Task/Release.php
index 8cfb78ba14b284c396a81c64023c18293a2c876f..ae17d3be8ca8dcac85f395583e1a61ed02332647 100644
--- a/civicrm/CRM/Campaign/Form/Task/Release.php
+++ b/civicrm/CRM/Campaign/Form/Task/Release.php
@@ -50,11 +50,7 @@ class CRM_Campaign_Form_Task_Release extends CRM_Campaign_Form_Task {
     $this->_interviewToRelease = $this->get('interviewToRelease');
     if ($this->_interviewToRelease) {
       //user came from interview form.
-      foreach ([
-        'surveyId',
-        'contactIds',
-        'interviewerId',
-      ] as $fld) {
+      foreach (['surveyId', 'contactIds', 'interviewerId'] as $fld) {
         $this->{"_$fld"} = $this->get($fld);
       }
 
diff --git a/civicrm/CRM/Campaign/Page/AJAX.php b/civicrm/CRM/Campaign/Page/AJAX.php
index 69e15a5585c2a819a55fd0cc2079220c55181996..7d99c2f666a2fe7777549bdf6bb17c65581111b5 100644
--- a/civicrm/CRM/Campaign/Page/AJAX.php
+++ b/civicrm/CRM/Campaign/Page/AJAX.php
@@ -127,10 +127,7 @@ class CRM_Campaign_Page_AJAX {
     }
 
     //format multi-select group and contact types.
-    foreach ([
-      'group',
-      'contact_type',
-    ] as $param) {
+    foreach (['group', 'contact_type'] as $param) {
       $paramValue = $params[$param] ?? NULL;
       if ($paramValue) {
         unset($params[$param]);
diff --git a/civicrm/CRM/Case/Audit/Audit.php b/civicrm/CRM/Case/Audit/Audit.php
index 620ef00941de8489f93ffc011b4287c3c590fa28..9f9128241f6caf94dcc461d26d4495933fe8584c 100644
--- a/civicrm/CRM/Case/Audit/Audit.php
+++ b/civicrm/CRM/Case/Audit/Audit.php
@@ -102,11 +102,7 @@ class CRM_Case_Audit_Audit {
 
               //CRM-4570
               if ($printReport) {
-                if (!in_array($label, [
-                  'Activity Type',
-                  'Status',
-                ])
-                ) {
+                if (!in_array($label, ['Activity Type', 'Status'])) {
                   $caseActivities[$activityindex][$fieldindex] = [];
                   $caseActivities[$activityindex][$fieldindex]['name'] = $name;
                   $caseActivities[$activityindex][$fieldindex]['label'] = $label;
diff --git a/civicrm/CRM/Case/BAO/Case.php b/civicrm/CRM/Case/BAO/Case.php
index d6d3c55cd9d41d15b952bbfd57f8ce52dd2c852b..c0d1a23dbe18abc0dc8daf2985721c797a36a3c8 100644
--- a/civicrm/CRM/Case/BAO/Case.php
+++ b/civicrm/CRM/Case/BAO/Case.php
@@ -639,7 +639,7 @@ HERESQL;
 
     $order = NULL;
     if (!empty($params['sortBy'])) {
-      if (strstr($params['sortBy'], 'date ')) {
+      if (str_contains($params['sortBy'], 'date ')) {
         $params['sortBy'] = str_replace('date', 'activity_date_time', $params['sortBy']);
       }
       $order = "ORDER BY " . $params['sortBy'];
@@ -768,17 +768,19 @@ HERESQL;
 
     $caseTypes = CRM_Case_PseudoConstant::caseType();
     $caseStatuses = CRM_Case_PseudoConstant::caseStatus();
-    $caseTypes = array_flip($caseTypes);
 
     // get statuses as headers for the table
     $url = CRM_Utils_System::url('civicrm/case/search', "reset=1&force=1&all=1&case_status_id=");
-    foreach ($caseStatuses as $key => $name) {
-      $caseSummary['headers'][$key]['status'] = $name;
+    $rows = [];
+    foreach ($caseStatuses as $key => $caseStatusLabel) {
+      $caseSummary['headers'][$key]['status'] = $caseStatusLabel;
       $caseSummary['headers'][$key]['url'] = $url . $key;
+      foreach ($caseTypes as $caseTypeLabel) {
+        $rows[$caseTypeLabel][$caseStatusLabel] = ['count' => NULL, 'url' => NULL];
+      }
     }
 
     // build rows with actual data
-    $rows = [];
     $myGroupByClause = $mySelectClause = $myCaseFromClause = $myCaseWhereClauseA = $myCaseWhereClauseB = '';
 
     if ($allCases) {
@@ -827,10 +829,7 @@ SELECT civicrm_case.id, case_status.label AS case_status, status_id, civicrm_cas
 
     $res = CRM_Core_DAO::executeQuery($query);
     while ($res->fetch()) {
-      if (!isset($rows[$res->case_type])) {
-        $rows[$res->case_type] = array_fill_keys($caseStatuses, []);
-      }
-      if (!empty($rows[$res->case_type]) && !empty($rows[$res->case_type][$res->case_status])) {
+      if (!empty($rows[$res->case_type][$res->case_status]['count'])) {
         $rows[$res->case_type][$res->case_status]['count'] = $rows[$res->case_type][$res->case_status]['count'] + 1;
       }
       else {
@@ -842,7 +841,7 @@ SELECT civicrm_case.id, case_status.label AS case_status, status_id, civicrm_cas
         ];
       }
     }
-    $caseSummary['rows'] = array_merge($caseTypes, $rows);
+    $caseSummary['rows'] = $rows;
 
     return $caseSummary;
   }
@@ -2503,7 +2502,7 @@ WHERE id IN (' . implode(',', $copiedActivityIds) . ')';
     $actionOperations = ['view', 'edit', 'delete'];
     if (in_array($operation, $actionOperations)) {
 
-      //do cache when user has non/supper permission.
+      // Do cache when user has non-super permission.
       static $allowOperations;
 
       if (!is_array($allowOperations) ||
@@ -2542,12 +2541,8 @@ WHERE id IN (' . implode(',', $copiedActivityIds) . ')';
         //has permissions.
         if (!empty($hasPermissions)) {
           //need to check activity object specific.
-          if (in_array($operation, [
-            'view',
-            'edit',
-          ])
-          ) {
-            //do we have supper permission.
+          if (in_array($operation, ['view', 'edit'])) {
+            // Check for super permission.
             if (in_array('access all cases and activities', $hasPermissions[$operation])) {
               $allowOperations[$operation] = $allow = TRUE;
             }
@@ -2609,8 +2604,7 @@ WHERE id IN (' . implode(',', $copiedActivityIds) . ')';
         }
       }
       else {
-        //use cache.
-        //here contact might have supper/non permission.
+        // Use cache; user might have non-super permission.
         $allow = $allowOperations[$operation];
       }
     }
@@ -2710,13 +2704,9 @@ WHERE id IN (' . implode(',', $copiedActivityIds) . ')';
       return FALSE;
     }
 
-    if (CRM_Core_Permission::check('access my cases and activities') ||
-      CRM_Core_Permission::check('access all cases and activities')
-    ) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return CRM_Core_Permission::check([
+      ['access my cases and activities', /* OR */ 'access all cases and activities'],
+    ]);
   }
 
   /**
diff --git a/civicrm/CRM/Case/Form/Activity/OpenCase.php b/civicrm/CRM/Case/Form/Activity/OpenCase.php
index 1c3092f0bc19fb24ac6e0f8d937d75e5e1f7c6a3..6f01cce1b452b3b2b6d87965e83867a7ff70a4fe 100644
--- a/civicrm/CRM/Case/Form/Activity/OpenCase.php
+++ b/civicrm/CRM/Case/Form/Activity/OpenCase.php
@@ -32,10 +32,6 @@ class CRM_Case_Form_Activity_OpenCase {
    * @throws \CRM_Core_Exception
    */
   public static function preProcess(&$form) {
-    //get multi client case configuration
-    $xmlProcessorProcess = new CRM_Case_XMLProcessor_Process();
-    $form->_allowMultiClient = (bool) $xmlProcessorProcess->getAllowMultipleCaseClients();
-
     if ($form->_context == 'caseActivity') {
       $contactID = CRM_Utils_Request::retrieve('cid', 'Positive', $form);
       $atype = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Change Case Start Date');
@@ -140,9 +136,12 @@ class CRM_Case_Form_Activity_OpenCase {
       return;
     }
     if ($form->_context == 'standalone') {
+      //get multi client case configuration
+      $xmlProcessorProcess = new CRM_Case_XMLProcessor_Process();
+
       $form->addEntityRef('client_id', ts('Client'), [
         'create' => TRUE,
-        'multiple' => $form->_allowMultiClient,
+        'multiple' => (bool) $xmlProcessorProcess->getAllowMultipleCaseClients(),
       ], TRUE);
     }
 
diff --git a/civicrm/CRM/Case/Form/ActivityToCase.php b/civicrm/CRM/Case/Form/ActivityToCase.php
index fddff50fe3697c76cd67a7fe7cb5ebdd457cdfff..ac182876bb7ed46625446871b5c63b269e5fb62a 100644
--- a/civicrm/CRM/Case/Form/ActivityToCase.php
+++ b/civicrm/CRM/Case/Form/ActivityToCase.php
@@ -20,6 +20,19 @@
  */
 class CRM_Case_Form_ActivityToCase extends CRM_Core_Form {
 
+  /**
+   * Case Activity being copied or moved
+   * @var int
+   */
+  public $_activityId;
+
+
+  /**
+   * Current CiviCase ID associated with the activity
+   * @var int
+   */
+  public $_currentCaseId;
+
   /**
    * Build all the data structures needed to build the form.
    *
diff --git a/civicrm/CRM/Case/Form/DeleteClient.php b/civicrm/CRM/Case/Form/DeleteClient.php
index c7614416ea0150b5304589378a45215f5d478a62..58978fb33fca3fa12a8d7ffd1f60e9e61ba3bad1 100644
--- a/civicrm/CRM/Case/Form/DeleteClient.php
+++ b/civicrm/CRM/Case/Form/DeleteClient.php
@@ -66,10 +66,7 @@ class CRM_Case_Form_DeleteClient extends CRM_Core_Form {
     elseif ($context == 'dashboard') {
       $url = CRM_Utils_System::url('civicrm/case', 'reset=1');
     }
-    elseif (in_array($context, [
-      'dashlet',
-      'dashletFullscreen',
-    ])) {
+    elseif (in_array($context, ['dashlet', 'dashletFullscreen'])) {
       $url = CRM_Utils_System::url('civicrm/dashboard', 'reset=1');
     }
     $session = CRM_Core_Session::singleton();
diff --git a/civicrm/CRM/Case/Form/EditClient.php b/civicrm/CRM/Case/Form/EditClient.php
index 16e7257b73c90fc0c6ad22a89c8371d708c699b4..cf0c5ea7e06bdbb0d55be400c4fdc087da80bcc6 100644
--- a/civicrm/CRM/Case/Form/EditClient.php
+++ b/civicrm/CRM/Case/Form/EditClient.php
@@ -45,10 +45,7 @@ class CRM_Case_Form_EditClient extends CRM_Core_Form {
     elseif ($context == 'dashboard') {
       $url = CRM_Utils_System::url('civicrm/case', 'reset=1');
     }
-    elseif (in_array($context, [
-      'dashlet',
-      'dashletFullscreen',
-    ])) {
+    elseif (in_array($context, ['dashlet', 'dashletFullscreen'])) {
       $url = CRM_Utils_System::url('civicrm/dashboard', 'reset=1');
     }
     $session = CRM_Core_Session::singleton();
diff --git a/civicrm/CRM/Case/Info.php b/civicrm/CRM/Case/Info.php
index bd4037ceff6ce13e9c7b8c3fe42742cb7a61c7cc..7f1e548c483925e62d5e9a621193e091f88fe09a 100644
--- a/civicrm/CRM/Case/Info.php
+++ b/civicrm/CRM/Case/Info.php
@@ -40,17 +40,6 @@ class CRM_Case_Info extends CRM_Core_Component_Info {
     ];
   }
 
-  /**
-   * @inheritDoc
-   */
-  public function getAngularModules() {
-    global $civicrm_root;
-
-    $result = [];
-    $result['crmCaseType'] = include "$civicrm_root/ang/crmCaseType.ang.php";
-    return $result;
-  }
-
   /**
    * @inheritDoc
    * @param bool $getAllUnconditionally
diff --git a/civicrm/CRM/Case/XMLProcessor/Report.php b/civicrm/CRM/Case/XMLProcessor/Report.php
index 05b29fb5344a7883e4a85c248367486aeb8c2f0f..6e42fb4bf300198e4149e0331c57ebc91c5fffb6 100644
--- a/civicrm/CRM/Case/XMLProcessor/Report.php
+++ b/civicrm/CRM/Case/XMLProcessor/Report.php
@@ -30,6 +30,11 @@ class CRM_Case_XMLProcessor_Report extends CRM_Case_XMLProcessor {
    */
   protected $_redactionStringRules = [];
 
+  /**
+   * @var array
+   */
+  public $_redactionRegexRules;
+
   /**
    */
   public function __construct() {
@@ -529,7 +534,7 @@ WHERE      a.id = %1
           if ($value) {
             // Note: this is already taken care in getDisplayValue above, but sometimes
             // strings like '^A^A' creates problem. So to fix this special case -
-            if (strstr($value, CRM_Core_DAO::VALUE_SEPARATOR)) {
+            if (str_contains($value, CRM_Core_DAO::VALUE_SEPARATOR)) {
               $value = trim($value, CRM_Core_DAO::VALUE_SEPARATOR);
             }
             if (($typeValue['type'] ?? NULL) == 'String' ||
@@ -725,7 +730,7 @@ LIMIT  1
    * @param int $caseID
    * @param string $activitySetName
    * @param array $params
-   * @param CRM_Core_Form $form
+   * @param CRM_Case_XMLProcessor_Report $form
    *
    * @return CRM_Core_Smarty
    */
diff --git a/civicrm/CRM/Contact/BAO/Contact.php b/civicrm/CRM/Contact/BAO/Contact.php
index fc3435e30f4f6afe9362b63bac77fb1d40b6bfba..d5ab1a5c4e823dabd5f6661caccfd4e38799c2f3 100644
--- a/civicrm/CRM/Contact/BAO/Contact.php
+++ b/civicrm/CRM/Contact/BAO/Contact.php
@@ -1272,12 +1272,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
       $fields = CRM_Contact_DAO_Contact::import();
 
       // get the fields thar are meant for contact types
-      if (in_array($contactType, [
-        'Individual',
-        'Household',
-        'Organization',
-        'All',
-      ])) {
+      if (in_array($contactType, ['Individual', 'Household', 'Organization', 'All'])) {
         $fields = array_merge($fields, CRM_Core_OptionValue::getFields('', $contactType));
       }
 
@@ -1431,12 +1426,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
         $fields = CRM_Contact_DAO_Contact::export();
 
         // The fields are meant for contact types.
-        if (in_array($contactType, [
-          'Individual',
-          'Household',
-          'Organization',
-          'All',
-        ])) {
+        if (in_array($contactType, ['Individual', 'Household', 'Organization', 'All'])) {
           $fields = array_merge($fields, CRM_Core_OptionValue::getFields('', $contactType));
         }
         // add current employer for individuals
@@ -3057,10 +3047,7 @@ LEFT JOIN civicrm_email    ON ( civicrm_contact.id = civicrm_email.contact_id )
           continue;
         }
         // build directly accessible action menu.
-        if (in_array($values['ref'], [
-          'view-contact',
-          'edit-contact',
-        ])) {
+        if (in_array($values['ref'], ['view-contact', 'edit-contact'])) {
           $contextMenu['primaryActions'][$key] = [
             'title' => $values['title'],
             'ref' => $values['ref'],
@@ -3169,9 +3156,7 @@ LEFT JOIN civicrm_email    ON ( civicrm_contact.id = civicrm_email.contact_id )
         ) {
           $hasAllPermissions = TRUE;
         }
-        elseif (in_array($menuOptions['ref'], [
-          'new-email',
-        ])) {
+        elseif (in_array($menuOptions['ref'], ['new-email'])) {
           // grant permissions for these tasks.
           $hasAllPermissions = TRUE;
         }
diff --git a/civicrm/CRM/Contact/BAO/Contact/Utils.php b/civicrm/CRM/Contact/BAO/Contact/Utils.php
index 2b972e77f37fb6739f5c7016b774f2276bc2bc6a..f4a67da52e075afbe9735ee5e1717284336c74e8 100644
--- a/civicrm/CRM/Contact/BAO/Contact/Utils.php
+++ b/civicrm/CRM/Contact/BAO/Contact/Utils.php
@@ -584,10 +584,7 @@ UPDATE civicrm_contact
       }
 
       // check permission on acl basis.
-      if (in_array($task, [
-        'view',
-        'edit',
-      ])) {
+      if (in_array($task, ['view', 'edit'])) {
         $aclPermission = CRM_Core_Permission::VIEW;
         if ($task == 'edit') {
           $aclPermission = CRM_Core_Permission::EDIT;
@@ -946,14 +943,6 @@ INNER JOIN civicrm_contact contact_target ON ( contact_target.id = act.contact_i
       throw new CRM_Core_Exception(ts('Incorrect greeting value id %1, or no default greeting for this contact type and greeting type.', [1 => $valueID]));
     }
 
-    // build return properties based on tokens
-    $greetingTokens = CRM_Utils_Token::getTokens($greetingString);
-    $tokens = $greetingTokens['contact'] ?? NULL;
-    $greetingsReturnProperties = [];
-    if (is_array($tokens)) {
-      $greetingsReturnProperties = array_fill_keys(array_values($tokens), 1);
-    }
-
     // Process ALL contacts only when force=1 or force=2 is passed. Else only contacts with NULL greeting or addressee value are updated.
     $processAll = $processOnlyIdSet = FALSE;
     if ($force == 1) {
diff --git a/civicrm/CRM/Contact/BAO/ContactType.php b/civicrm/CRM/Contact/BAO/ContactType.php
index de18235c96444c5494890dc4cf03081e514382fc..0059f499e4afed03ff37d62a1666271290dc0342 100644
--- a/civicrm/CRM/Contact/BAO/ContactType.php
+++ b/civicrm/CRM/Contact/BAO/ContactType.php
@@ -693,11 +693,7 @@ LIMIT 1";
 
     $relationshipCount = CRM_Core_DAO::singleValueQuery($relationshipQuery);
 
-    if (!empty($relationshipCount)) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return (bool) $relationshipCount;
   }
 
   /**
diff --git a/civicrm/CRM/Contact/BAO/Individual.php b/civicrm/CRM/Contact/BAO/Individual.php
index 200c7b54d78009a0b598796ce494acc47abac693..fc375bb4ab6f2f6066dcbbb1f027c93e92875755 100644
--- a/civicrm/CRM/Contact/BAO/Individual.php
+++ b/civicrm/CRM/Contact/BAO/Individual.php
@@ -15,6 +15,8 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Token\TokenProcessor;
+
 /**
  * Class contains functions for individual contact type.
  */
@@ -185,19 +187,18 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact {
         }
       }
 
-      //build the sort name.
-      $format = Civi::settings()->get('sort_name_format');
-      $sortName = CRM_Utils_Address::format($formatted, $format,
-        FALSE, FALSE, $tokenFields
-      );
-      $sortName = trim($sortName);
-
-      //build the display name.
-      $format = Civi::settings()->get('display_name_format');
-      $displayName = CRM_Utils_Address::format($formatted, $format,
-        FALSE, FALSE, $tokenFields
-      );
-      $displayName = trim($displayName);
+      $formatted['id'] = $contact->id ?? $params['id'] ?? 0;
+      $tokenProcessor = new TokenProcessor(\Civi::dispatcher(), [
+        'class' => __CLASS__,
+        'schema' => ['contactId'],
+      ]);
+      $tokenProcessor->addRow(['contactId' => $contactFields['id'] ?? 0, 'contact' => $formatted]);
+      $tokenProcessor->addMessage('sort_name', Civi::settings()->get('sort_name_format'), 'text/plain');
+      $tokenProcessor->addMessage('display_name', Civi::settings()->get('display_name_format'), 'text/plain');
+      $tokenProcessor->evaluate();
+      $row = $tokenProcessor->getRow(0);
+      $sortName = trim($row->render('sort_name'));
+      $displayName = trim($row->render('display_name'));
     }
 
     //start further check for email.
@@ -266,11 +267,7 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact {
    * @return bool
    */
   public static function dataExists($params) {
-    if ($params['contact_type'] == 'Individual') {
-      return TRUE;
-    }
-
-    return FALSE;
+    return $params['contact_type'] == 'Individual';
   }
 
 }
diff --git a/civicrm/CRM/Contact/BAO/Query.php b/civicrm/CRM/Contact/BAO/Query.php
index 6fb4936ad15fd58ff9bd04e5ec3276c22294079c..6855885fdd1bdc686d3882b8a5ef15201a0e536c 100644
--- a/civicrm/CRM/Contact/BAO/Query.php
+++ b/civicrm/CRM/Contact/BAO/Query.php
@@ -3213,27 +3213,28 @@ WHERE  $smartGroupClause
    *
    * @throws \CRM_Core_Exception
    */
-  public function tagSearch(&$values) {
+  public function tagSearch(array $values): void {
     [$name, $op, $value, $grouping, $wildcard] = $values;
 
-    $op = "LIKE";
+    $op = 'LIKE';
     $value = "%{$value}%";
     $escapedValue = CRM_Utils_Type::escape("%{$value}%", 'String');
 
     $useAllTagTypes = $this->getWhereValues('all_tag_types', $grouping);
     $tagTypesText = $this->getWhereValues('tag_types_text', $grouping);
 
-    $etTable = "`civicrm_entity_tag-" . uniqid() . "`";
-    $tTable = "`civicrm_tag-" . uniqid() . "`";
-
-    if ($useAllTagTypes[2]) {
+    $etTable = '`civicrm_entity_tag-' . uniqid() . '`';
+    $tTable = '`civicrm_tag-' . uniqid() . '`';
+    // All Tag Types will only be added as a field on the form if tags are available
+    // for entities other than contact
+    if ($useAllTagTypes && $useAllTagTypes[2]) {
       $this->_tables[$etTable] = $this->_whereTables[$etTable]
         = " LEFT JOIN civicrm_entity_tag {$etTable} ON ( {$etTable}.entity_id = contact_a.id)
             LEFT JOIN civicrm_tag {$tTable} ON ( {$etTable}.tag_id = {$tTable}.id  )";
 
       // search tag in cases
-      $etCaseTable = "`civicrm_entity_case_tag-" . uniqid() . "`";
-      $tCaseTable = "`civicrm_case_tag-" . uniqid() . "`";
+      $etCaseTable = '`civicrm_entity_case_tag-' . uniqid() . '`';
+      $tCaseTable = '`civicrm_case_tag-' . uniqid() . '`';
       $this->_tables[$etCaseTable] = $this->_whereTables[$etCaseTable]
         = " LEFT JOIN civicrm_case_contact ON civicrm_case_contact.contact_id = contact_a.id
             LEFT JOIN civicrm_case
@@ -3242,8 +3243,8 @@ WHERE  $smartGroupClause
             LEFT JOIN civicrm_entity_tag {$etCaseTable} ON ( {$etCaseTable}.entity_table = 'civicrm_case' AND {$etCaseTable}.entity_id = civicrm_case.id )
             LEFT JOIN civicrm_tag {$tCaseTable} ON ( {$etCaseTable}.tag_id = {$tCaseTable}.id  )";
       // search tag in activities
-      $etActTable = "`civicrm_entity_act_tag-" . uniqid() . "`";
-      $tActTable = "`civicrm_act_tag-" . uniqid() . "`";
+      $etActTable = '`civicrm_entity_act_tag-' . uniqid() . '`';
+      $tActTable = '`civicrm_act_tag-' . uniqid() . '`';
       $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate');
       $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts);
 
@@ -3260,8 +3261,8 @@ WHERE  $smartGroupClause
       $this->_qill[$grouping][] = ts('Tag %1 %2', [1 => $tagTypesText[2], 2 => $op]) . ' ' . $value;
     }
     else {
-      $etTable = "`civicrm_entity_tag-" . uniqid() . "`";
-      $tTable = "`civicrm_tag-" . uniqid() . "`";
+      $etTable = '`civicrm_entity_tag-' . uniqid() . "`";
+      $tTable = '`civicrm_tag-' . uniqid() . '`';
       $this->_tables[$etTable] = $this->_whereTables[$etTable] = " LEFT JOIN civicrm_entity_tag {$etTable} ON ( {$etTable}.entity_id = contact_a.id  AND
       {$etTable}.entity_table = 'civicrm_contact' )
                 LEFT JOIN civicrm_tag {$tTable} ON ( {$etTable}.tag_id = {$tTable}.id  ) ";
@@ -3364,7 +3365,7 @@ WHERE  $smartGroupClause
       elseif ($op == '!=') {
         $this->_where[$grouping][] = "{$etTable}.entity_id NOT IN (SELECT entity_id FROM civicrm_entity_tag cet WHERE cet.entity_table = 'civicrm_contact' AND " . self::buildClause("cet.tag_id", '=', $value, 'Int') . ")";
       }
-      elseif ($op == '=' || strstr($op, 'IN')) {
+      elseif ($op == '=' || str_contains($op, 'IN')) {
         $op = ($op == '=') ? 'IN' : $op;
         $this->_where[$grouping][] = "{$etTable}.tag_id $op ( $value )";
       }
@@ -4116,7 +4117,7 @@ WHERE  $smartGroupClause
 
     if (self::caseImportant($op)) {
       $value = implode("[[:cntrl:]]|[[:cntrl:]]", (array) $value);
-      $op = (strstr($op, '!') || strstr($op, 'NOT')) ? 'NOT RLIKE' : 'RLIKE';
+      $op = (str_contains($op, '!') || str_contains($op, 'NOT')) ? 'NOT RLIKE' : 'RLIKE';
       $value = "[[:cntrl:]]" . $value . "[[:cntrl:]]";
     }
 
@@ -5364,7 +5365,7 @@ civicrm_relationship.start_date > {$today}
       }
 
       $date = $format = NULL;
-      if (strstr($op, 'IN')) {
+      if (str_contains($op, 'IN')) {
         $format = [];
         foreach ($value as &$date) {
           $date = CRM_Utils_Date::processDate($date, NULL, FALSE, $dateFormat);
diff --git a/civicrm/CRM/Contact/BAO/Relationship.php b/civicrm/CRM/Contact/BAO/Relationship.php
index 9d231e0fe40ec2ab77bbde6e0cbbc2d2ba4a63c1..2afef78d8717f14f9ab5fb16a7f0b7f10def2538 100644
--- a/civicrm/CRM/Contact/BAO/Relationship.php
+++ b/civicrm/CRM/Contact/BAO/Relationship.php
@@ -1590,13 +1590,7 @@ contact_id_a IN ( %1 ) OR contact_id_b IN ( %1 ) AND id IN (" . implode(',', $re
       return TRUE;
     }
 
-    $recordsFound = (int) CRM_Core_DAO::singleValueQuery("SELECT COUNT(*) FROM civicrm_relationship WHERE relationship_type_id IN ( " . implode(',', $membershipTypeRelationshipTypeIDs) . " ) AND contact_id_a IN ( %1, %2 ) AND contact_id_b IN ( %1, %2 ) AND id NOT IN (" . implode(',', $relIds) . ")", $relParamas);
-
-    if ($recordsFound) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return !CRM_Core_DAO::singleValueQuery("SELECT COUNT(*) FROM civicrm_relationship WHERE relationship_type_id IN ( " . implode(',', $membershipTypeRelationshipTypeIDs) . " ) AND contact_id_a IN ( %1, %2 ) AND contact_id_b IN ( %1, %2 ) AND id NOT IN (" . implode(',', $relIds) . ")", $relParamas);
   }
 
   /**
diff --git a/civicrm/CRM/Contact/Form/Contact.php b/civicrm/CRM/Contact/Form/Contact.php
index 65da378bee9100baa4296870a92f14dfdd32b9de..99d0761d00863b94692ef7e3ee38683708dc810c 100644
--- a/civicrm/CRM/Contact/Form/Contact.php
+++ b/civicrm/CRM/Contact/Form/Contact.php
@@ -25,6 +25,8 @@
  */
 class CRM_Contact_Form_Contact extends CRM_Core_Form {
 
+  use CRM_Contact_Form_ContactFormTrait;
+
   /**
    * The contact type of the form.
    *
@@ -128,6 +130,8 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form {
 
   /**
    * Build all the data structures needed to build the form.
+   *
+   * @throws \CRM_Core_Exception
    */
   public function preProcess() {
     $this->_action = CRM_Utils_Request::retrieve('action', 'String', $this, FALSE, 'add');
@@ -183,14 +187,9 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form {
       $this->_contactId = NULL;
     }
     else {
-      //update mode
-      if (!$this->_contactId) {
-        $this->_contactId = CRM_Utils_Request::retrieve('cid', 'Positive', $this, TRUE);
-      }
-
-      if ($this->_contactId) {
+      if ($this->getContactID()) {
         $defaults = [];
-        $params = ['id' => $this->_contactId];
+        $params = ['id' => $this->getContactID()];
         $returnProperities = ['id', 'contact_type', 'contact_sub_type', 'modified_date', 'is_deceased'];
         CRM_Core_DAO::commonRetrieve('CRM_Contact_DAO_Contact', $params, $defaults, $returnProperities);
 
@@ -359,14 +358,15 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form {
         CRM_Contact_Form_Edit_CustomData::preProcess($this);
       }
       else {
-        $contactSubType = array_filter(explode(CRM_Core_DAO::VALUE_SEPARATOR, (string) $this->_contactSubType));
-        // need contact sub type to build related grouptree array during post process
-        if (!empty($_POST['qfKey'])) {
-          $contactSubType = $_POST['contact_sub_type'] ?? NULL;
-        }
-        //only custom data has preprocess hence directly call it
-        CRM_Custom_Form_CustomData::preProcess($this, NULL, $contactSubType,
-          1, $this->_contactType, $this->_contactId
+        // The reason we call this here is that it sets the _groupTree property which is later used
+        // in setDefaultValues and buildForm. (Ideally instead we would have a trait with getCustomGroup & getCustomFields
+        // that can be called at appropriate times). In order for buildForm to add the right fields it needs
+        // to know any contact sub types that are being added in the submission. Since this runs before
+        // the buildForm adds the contact_sub_type to the form we need to look in _submitValues for it - submitValues
+        // is a un-sanitised version of what is in the form submission (_POST) whereas `getSubmittedValues()` retrieves
+        // 'allowed' POSTED values - ie values which match available fields, with some localization handling.
+        CRM_Custom_Form_CustomData::preProcess($this, NULL, $this->isSubmitted() ? ($this->_submitValues['contact_sub_type'] ?? []) : $this->getContactValue('contact_sub_type'),
+          1, $this->_contactType, $this->getContactID()
         );
         $this->assign('customValueCount', $this->_customValueCount);
       }
@@ -680,10 +680,8 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form {
             if (!empty($blockValues['is_primary'])) {
               $hasPrimary[] = $instance;
               if (!$primaryID &&
-                in_array($name, [
-                  'email',
-                  'openid',
-                ]) && !empty($blockValues[$name])
+                in_array($name, ['email', 'openid']) &&
+                !empty($blockValues[$name])
               ) {
                 $primaryID = $blockValues[$name];
               }
@@ -1397,10 +1395,7 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form {
           'street_name',
           'street_unit',
         ] as $fld) {
-          if (in_array($fld, [
-            'street_name',
-            'street_unit',
-          ])) {
+          if (in_array($fld, ['street_name', 'street_unit'])) {
             $streetAddress .= ' ';
           }
           // CRM-17619 - if the street number suffix begins with a number, add a space
@@ -1510,4 +1505,18 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form {
     return "$number$str";
   }
 
+  /**
+   * Get the contact ID being edited.
+   *
+   * @return int||null
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   */
+  public function getContactID(): ?int {
+    if (!$this->_contactId) {
+      $this->_contactId = CRM_Utils_Request::retrieve('cid', 'Positive', $this);
+    }
+    return $this->_contactId ? (int) $this->_contactId : NULL;
+  }
+
 }
diff --git a/civicrm/CRM/Contact/Form/Edit/Address.php b/civicrm/CRM/Contact/Form/Edit/Address.php
index 4c82a7ff5134d3060fc7fd644a48da974bccaae2..ea280315fc06e71ac2c29036bcc38c261fe1ac27 100644
--- a/civicrm/CRM/Contact/Form/Edit/Address.php
+++ b/civicrm/CRM/Contact/Form/Edit/Address.php
@@ -283,10 +283,7 @@ class CRM_Contact_Form_Edit_Address {
             'street_name',
             'street_unit',
           ] as $fld) {
-            if (in_array($fld, [
-              'street_name',
-              'street_unit',
-            ])) {
+            if (in_array($fld, ['street_name', 'street_unit'])) {
               $streetAddress .= ' ';
             }
             // CRM-17619 - if the street number suffix begins with a number, add a space
diff --git a/civicrm/CRM/Contact/Form/GroupContact.php b/civicrm/CRM/Contact/Form/GroupContact.php
index 79d4c29c1d62152fe31b0f2528d47a1f0662253b..b865f568db99091c7fc7e7526779d607790292c7 100644
--- a/civicrm/CRM/Contact/Form/GroupContact.php
+++ b/civicrm/CRM/Contact/Form/GroupContact.php
@@ -34,6 +34,13 @@ class CRM_Contact_Form_GroupContact extends CRM_Core_Form {
    */
   protected $_contactId;
 
+  /**
+   * The context this page is being rendered in
+   *
+   * @var string
+   */
+  protected $_context;
+
   /**
    * Explicitly declare the entity api name.
    */
@@ -100,7 +107,7 @@ class CRM_Contact_Form_GroupContact extends CRM_Core_Form {
     if (count($groupSelect) > 1) {
       $session = CRM_Core_Session::singleton();
       // user dashboard
-      if (strstr($session->readUserContext(), 'user')) {
+      if (str_contains($session->readUserContext(), 'user')) {
         $msg = ts('Join a Group');
       }
       else {
diff --git a/civicrm/CRM/Contact/Form/Inline.php b/civicrm/CRM/Contact/Form/Inline.php
index ea93dde40ddc58c02e7299e91bf7733201516a7d..253f667311052ae9648466f1dc5303155477876f 100644
--- a/civicrm/CRM/Contact/Form/Inline.php
+++ b/civicrm/CRM/Contact/Form/Inline.php
@@ -157,6 +157,7 @@ abstract class CRM_Contact_Form_Inline extends CRM_Core_Form {
     $smarty = CRM_Core_Smarty::singleton();
     $smarty->assign('contactId', $cid);
     $smarty->assign('external_identifier', CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $cid, 'external_identifier'));
+    $smarty->assign('created_date', CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $cid, 'created_date'));
     $smarty->assign('lastModified', CRM_Core_BAO_Log::lastModified($cid, 'civicrm_contact'));
     $viewOptions = CRM_Core_BAO_Setting::valueOptions(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME,
       'contact_view_options', TRUE
diff --git a/civicrm/CRM/Contact/Form/Merge.php b/civicrm/CRM/Contact/Form/Merge.php
index c59df6e82f6f2ebb2ac9a27687a20b2467e8d9b1..95c12ffaf3463f7000f90f4c5fe78993097950f4 100644
--- a/civicrm/CRM/Contact/Form/Merge.php
+++ b/civicrm/CRM/Contact/Form/Merge.php
@@ -200,6 +200,7 @@ class CRM_Contact_Form_Merge extends CRM_Core_Form {
           'main' => NULL,
           'other' => NULL,
           'location_entity' => NULL,
+          'location_block_index' => NULL,
         ];
       }
       $this->assign('rows', $assignedRows);
diff --git a/civicrm/CRM/Contact/Form/RelatedContact.php b/civicrm/CRM/Contact/Form/RelatedContact.php
index 68f64b70864c38ac4a4eb2f93a64419cdc5afe87..bdacf8249003da3c9dcfb0d434b879c74e609d13 100644
--- a/civicrm/CRM/Contact/Form/RelatedContact.php
+++ b/civicrm/CRM/Contact/Form/RelatedContact.php
@@ -137,11 +137,7 @@ class CRM_Contact_Form_RelatedContact extends CRM_Core_Form {
     $params = $this->controller->exportValues($this->_name);
 
     $locType = CRM_Core_BAO_LocationType::getDefault();
-    foreach ([
-      'phone',
-      'email',
-      'address',
-    ] as $locFld) {
+    foreach (['phone', 'email', 'address'] as $locFld) {
       if (!empty($this->_defaults[$locFld]) && $this->_defaults[$locFld][1]['location_type_id']) {
         $params[$locFld][1]['is_primary'] = $this->_defaults[$locFld][1]['is_primary'];
         $params[$locFld][1]['location_type_id'] = $this->_defaults[$locFld][1]['location_type_id'];
diff --git a/civicrm/CRM/Contact/Form/Search/Builder.php b/civicrm/CRM/Contact/Form/Search/Builder.php
index a0a1e70f0f73ef98c17067d0588e613735f3e7e9..44108ea0d814c64b72d3d7cfdf1be348e6966184 100644
--- a/civicrm/CRM/Contact/Form/Search/Builder.php
+++ b/civicrm/CRM/Contact/Form/Search/Builder.php
@@ -65,8 +65,6 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search {
       }
     }
 
-    $this->_loadedMappingId = $this->get('savedMapping');
-
     if ($this->get('showSearchForm')) {
       $this->assign('showSearchForm', TRUE);
     }
@@ -201,7 +199,7 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search {
             $fldType = $fldValue['type'] ?? NULL;
             $type = CRM_Utils_Type::typeToString($fldType);
 
-            if (strstr($v[1], 'IN')) {
+            if (str_contains($v[1], 'IN')) {
               if (empty($v[2])) {
                 $errorMsg["value[$v[3]][$v[4]]"] = ts("Please enter a value.");
               }
@@ -221,7 +219,7 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search {
 
           if ($type && empty($errorMsg)) {
             // check for valid format while using IN Operator
-            if (strstr($v[1], 'IN')) {
+            if (str_contains($v[1], 'IN')) {
               if (!is_array($v[2])) {
                 $inVal = trim($v[2]);
                 //checking for format to avoid db errors
diff --git a/civicrm/CRM/Contact/Form/Task/Delete.php b/civicrm/CRM/Contact/Form/Task/Delete.php
index 1c35f9e00df950ac68a3e5dee412d56fc8524668..0f9d4518e1448888149ab52bf67592d1b2c65de3 100644
--- a/civicrm/CRM/Contact/Form/Task/Delete.php
+++ b/civicrm/CRM/Contact/Form/Task/Delete.php
@@ -32,10 +32,26 @@ class CRM_Contact_Form_Task_Delete extends CRM_Contact_Form_Task {
 
   /**
    * Cache shared address message so we don't query twice
-   * @var string
+   *
+   * @var array
    */
   protected $_sharedAddressMessage = NULL;
 
+  /**
+   * @var string
+   */
+  protected $_searchKey;
+
+  /**
+   * @var bool
+   */
+  protected $_skipUndelete;
+
+  /**
+   * @var bool
+   */
+  protected $_restore;
+
   /**
    * Build all the data structures needed to build the form.
    */
diff --git a/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php b/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php
index 926ce85f862623d481a2a973e306e5bc1c4e11ca..b4da3de89eacea7cd624cfda4b92444b4fe9379c 100644
--- a/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php
+++ b/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php
@@ -36,45 +36,6 @@ class CRM_Contact_Form_Task_PDFLetterCommon extends CRM_Core_Form_Task_PDFLetter
     ];
   }
 
-  /**
-   * Build all the data structures needed to build the form.
-   *
-   * @deprecated
-   *
-   * @param CRM_Core_Form $form
-   */
-  public static function preProcess(&$form) {
-    CRM_Core_Error::deprecatedFunctionWarning('no alternative');
-    $defaults = [];
-    $form->_fromEmails = CRM_Core_BAO_Email::getFromEmail();
-    if (is_numeric(key($form->_fromEmails))) {
-      $emailID = (int) key($form->_fromEmails);
-      $defaults = CRM_Core_BAO_Email::getEmailSignatureDefaults($emailID);
-    }
-    if (!Civi::settings()->get('allow_mail_from_logged_in_contact')) {
-      $defaults['from_email_address'] = current(CRM_Core_BAO_Domain::getNameAndEmail(FALSE, TRUE));
-    }
-    $form->setDefaults($defaults);
-    $form->setTitle(ts('Print/Merge Document'));
-  }
-
-  /**
-   * @deprecated
-   * @param CRM_Core_Form $form
-   * @param int $cid
-   */
-  public static function preProcessSingle(&$form, $cid) {
-    CRM_Core_Error::deprecatedFunctionWarning('no alternative');
-    $form->_contactIds = explode(',', $cid);
-    // put contact display name in title for single contact mode
-    if (count($form->_contactIds) === 1) {
-      $form->setTitle(
-        ts('Print/Merge Document for %1',
-        [1 => CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $cid, 'display_name')])
-      );
-    }
-  }
-
   /**
    * Get the categories required for rendering tokens.
    *
diff --git a/civicrm/CRM/Contact/Form/Task/PDFTrait.php b/civicrm/CRM/Contact/Form/Task/PDFTrait.php
index 9e8219c27d7a19f53806f701cef68a5b73ab6e5d..95ac51e31758a575b355787fca2ec1f78c5f43a9 100644
--- a/civicrm/CRM/Contact/Form/Task/PDFTrait.php
+++ b/civicrm/CRM/Contact/Form/Task/PDFTrait.php
@@ -169,9 +169,9 @@ trait CRM_Contact_Form_Task_PDFTrait {
   public function preProcessPDF(): void {
     $form = $this;
     $defaults = [];
-    $form->_fromEmails = CRM_Core_BAO_Email::getFromEmail();
-    if (is_numeric(key($form->_fromEmails))) {
-      $emailID = (int) key($form->_fromEmails);
+    $fromEmails = $this->getFromEmails();
+    if (is_numeric(key($fromEmails))) {
+      $emailID = (int) key($fromEmails);
       $defaults = CRM_Core_BAO_Email::getEmailSignatureDefaults($emailID);
     }
     if (!Civi::settings()->get('allow_mail_from_logged_in_contact')) {
@@ -181,6 +181,15 @@ trait CRM_Contact_Form_Task_PDFTrait {
     $form->setTitle(ts('Print/Merge Document'));
   }
 
+  /**
+   * Get an array of email IDS from which the back-office user may select the from field.
+   *
+   * @return array
+   */
+  protected function getFromEmails(): array {
+    return CRM_Core_BAO_Email::getFromEmail();
+  }
+
   /**
    * Returns the filename for the pdf by striping off unwanted characters and limits the length to 200 characters.
    *
@@ -272,7 +281,7 @@ trait CRM_Contact_Form_Task_PDFTrait {
 
     if ($tee) {
       $tee->stop();
-      $content = file_get_contents($tee->getFileName(), NULL, NULL, NULL, 5);
+      $content = file_get_contents($tee->getFileName(), FALSE, NULL, 0, 5);
       if (empty($content)) {
         throw new \CRM_Core_Exception("Failed to capture document content (type=$type)!");
       }
diff --git a/civicrm/CRM/Contact/Form/Task/Result.php b/civicrm/CRM/Contact/Form/Task/Result.php
index 03bcfe8d1fdb5878262847ae8982197c62531f16..36692eef6f9faa6c0404ba24792c1d832fa7a487 100644
--- a/civicrm/CRM/Contact/Form/Task/Result.php
+++ b/civicrm/CRM/Contact/Form/Task/Result.php
@@ -30,10 +30,7 @@ class CRM_Contact_Form_Task_Result extends CRM_Contact_Form_Task {
     $this->set('searchRows', '');
 
     $context = $this->get('context');
-    if (in_array($context, [
-      'smog',
-      'amtg',
-    ])) {
+    if (in_array($context, ['smog', 'amtg'])) {
       $urlParams = 'reset=1&force=1&context=smog&gid=';
       $urlParams .= ($context == 'smog') ? $this->get('gid') : $this->get('amtgID');
       $session->replaceUserContext(CRM_Utils_System::url('civicrm/group/search', $urlParams));
diff --git a/civicrm/CRM/Contact/Import/Parser/Contact.php b/civicrm/CRM/Contact/Import/Parser/Contact.php
index 2b3837601307ea07e38767ab8932ba7ab2d9539c..8fda4d76af0d98efba9f259d556b6c2993bf19be 100644
--- a/civicrm/CRM/Contact/Import/Parser/Contact.php
+++ b/civicrm/CRM/Contact/Import/Parser/Contact.php
@@ -28,8 +28,6 @@ require_once 'api/v3/utils.php';
  */
 class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
 
-  use CRM_Contact_Import_MetadataTrait;
-
   private $externalIdentifiers = [];
 
   /**
@@ -155,7 +153,7 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
         }
       }
 
-      [$formatted, $params] = $this->processContact($params, $formatted, TRUE);
+      $formatted['id'] = $params['id'] = $this->processContact($params, TRUE);
 
       //format common data, CRM-4062
       $this->formatCommonData($params, $formatted);
@@ -177,7 +175,8 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
 
       //relationship contact insert
       foreach ($this->getRelatedContactsParams($params) as $key => $field) {
-        [$formatting, $field] = $this->processContact($field, $field, FALSE);
+        $field['id'] = $this->processContact($field, FALSE);
+        $formatting = $field;
         //format common data, CRM-4062
         $this->formatCommonData($field, $formatting);
         $isUpdate = empty($formatting['id']) ? 'new' : 'updated';
@@ -308,7 +307,7 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
         !array_key_exists($customFieldID, $addressCustomFields)
       ) {
         // @todo - this can probably go....
-        if ($customFields[$customFieldID]['data_type'] == 'Boolean') {
+        if ($customFields[$customFieldID]['data_type'] === 'Boolean') {
           if (empty($val) && !is_numeric($val) && $this->isFillDuplicates()) {
             //retain earlier value when Import mode is `Fill`
             unset($params[$key]);
@@ -466,6 +465,26 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
     }
   }
 
+  /**
+   * Get sorted available relationships.
+   *
+   * @return array
+   */
+  protected function getRelationships(): array {
+    $cacheKey = 'importable_contact_relationship_field_metadata' . $this->getContactType() . $this->getContactSubType();
+    if (Civi::cache('fields')->has($cacheKey)) {
+      return Civi::cache('fields')->get($cacheKey);
+    }
+    //Relationship importables
+    $relations = CRM_Contact_BAO_Relationship::getContactRelationshipType(
+      NULL, NULL, NULL, $this->getContactType(),
+      FALSE, 'label', TRUE, $this->getContactSubType()
+    );
+    asort($relations);
+    Civi::cache('fields')->set($cacheKey, $relations);
+    return $relations;
+  }
+
   /**
    * @param array $params
    *
@@ -747,7 +766,7 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
 
       if (is_numeric($locTypeId) &&
         !in_array($fieldName, $multiplFields) &&
-        substr($fieldName, 0, 7) != 'custom_'
+        substr($fieldName, 0, 7) !== 'custom_'
       ) {
         $index = $locTypeId;
 
@@ -913,22 +932,21 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
         }
       }
       else {
-        if (is_array($params[$key]) ?? FALSE) {
-          foreach ($params[$key] as $innerKey => $value) {
-            if ($modeFill) {
-              $getValue = CRM_Utils_Array::retrieveValueRecursive($contact, $key);
-              if (isset($getValue)) {
-                foreach ($getValue as $cnt => $values) {
-                  if ((!empty($getValue[$cnt]['location_type_id']) && !empty($params[$key][$innerKey]['location_type_id'])) && $getValue[$cnt]['location_type_id'] == $params[$key][$innerKey]['location_type_id']) {
-                    unset($params[$key][$innerKey]);
-                  }
+
+        foreach ($value as $innerKey => $locationValues) {
+          if ($modeFill) {
+            $getValue = CRM_Utils_Array::retrieveValueRecursive($contact, $key);
+            if (isset($getValue)) {
+              foreach ($getValue as $cnt => $values) {
+                if ((!empty($getValue[$cnt]['location_type_id']) && !empty($params[$key][$innerKey]['location_type_id'])) && $getValue[$cnt]['location_type_id'] == $params[$key][$innerKey]['location_type_id']) {
+                  unset($params[$key][$innerKey]);
                 }
               }
             }
           }
-          if (count($params[$key]) == 0) {
-            unset($params[$key]);
-          }
+        }
+        if (count($params[$key]) == 0) {
+          unset($params[$key]);
         }
       }
     }
@@ -1035,6 +1053,58 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
     return TRUE;
   }
 
+  /**
+   * Get metadata for contact importable fields.
+   *
+   * @internal this function will be made private in the near future. It is
+   * currently used by a core form but should not be called directly & once fixed
+   * will be private.
+   *
+   * @return array
+   */
+  public function getContactImportMetadata(): array {
+    $cacheKey = 'importable_contact_field_metadata' . $this->getContactType() . $this->getContactSubType();
+    if (Civi::cache('fields')->has($cacheKey)) {
+      return Civi::cache('fields')->get($cacheKey);
+    }
+    $contactFields = CRM_Contact_BAO_Contact::importableFields($this->getContactType());
+    // exclude the address options disabled in the Address Settings
+    $fields = CRM_Core_BAO_Address::validateAddressOptions($contactFields);
+
+    //CRM-5125
+    //supporting import for contact subtypes
+    $csType = NULL;
+    if ($this->getContactSubType()) {
+      //custom fields for sub type
+      $subTypeFields = CRM_Core_BAO_CustomField::getFieldsForImport($this->getContactSubType());
+
+      if (!empty($subTypeFields)) {
+        foreach ($subTypeFields as $customSubTypeField => $details) {
+          $fields[$customSubTypeField] = $details;
+        }
+      }
+    }
+
+    foreach ($this->getRelationships() as $key => $var) {
+      [$type] = explode('_', $key);
+      $relationshipType[$key]['title'] = $var;
+      $relationshipType[$key]['headerPattern'] = '/' . preg_quote($var, '/') . '/';
+      $relationshipType[$key]['import'] = TRUE;
+      $relationshipType[$key]['relationship_type_id'] = $type;
+      $relationshipType[$key]['related'] = TRUE;
+    }
+
+    if (!empty($relationshipType)) {
+      $fields = array_merge($fields, [
+        'related' => [
+          'title' => ts('- related contact info -'),
+        ],
+      ], $relationshipType);
+    }
+    Civi::cache('fields')->set($cacheKey, $fields);
+    return $fields;
+  }
+
   /**
    * Format location block ready for importing.
    *
@@ -1546,25 +1616,24 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
 
   /**
    * @param array $params
-   * @param array $formatted
    * @param bool $isMainContact
    *
-   * @return array[]
+   * @return int|null
    * @throws \CRM_Core_Exception
    */
-  protected function processContact(array $params, array $formatted, bool $isMainContact): array {
-    $params['id'] = $formatted['id'] = $this->lookupContactID($params, $isMainContact);
-    if ($params['id'] && !empty($params['contact_sub_type'])) {
+  protected function processContact(array $params, bool $isMainContact): ?int {
+    $contactID = $this->lookupContactID($params, $isMainContact);
+    if ($contactID && !empty($params['contact_sub_type'])) {
       $contactSubType = Contact::get(FALSE)
-        ->addWhere('id', '=', $params['id'])
+        ->addWhere('id', '=', $contactID)
         ->addSelect('contact_sub_type')
         ->execute()
         ->first()['contact_sub_type'];
-      if (!empty($contactSubType) && $contactSubType[0] !== $params['contact_sub_type'] && !CRM_Contact_BAO_ContactType::isAllowEdit($params['id'], $contactSubType[0])) {
+      if (!empty($contactSubType) && $contactSubType[0] !== $params['contact_sub_type'] && !CRM_Contact_BAO_ContactType::isAllowEdit($contactID, $contactSubType[0])) {
         throw new CRM_Core_Exception('Mismatched contact SubTypes :', CRM_Import_Parser::NO_MATCH);
       }
     }
-    return [$formatted, $params];
+    return $contactID;
   }
 
   /**
diff --git a/civicrm/CRM/Contact/Selector.php b/civicrm/CRM/Contact/Selector.php
index 8ad89811a2c4d667dfea960fee43b479b875a328..b4f0fd2a0a1275f97cd1de377e68eeb5b88e77dd 100644
--- a/civicrm/CRM/Contact/Selector.php
+++ b/civicrm/CRM/Contact/Selector.php
@@ -81,6 +81,13 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se
    */
   protected $_contextMenu;
 
+  /**
+   * The search context
+   *
+   * @var string
+   */
+  public $_context;
+
   /**
    * Params is the array in a value used by the search query creator
    *
@@ -191,8 +198,6 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se
       );
       self::$_columnHeaders = NULL;
 
-      $this->_customFields = CRM_Core_BAO_CustomField::getFieldsForImport('Individual');
-
       $this->_returnProperties = CRM_Contact_BAO_Contact::makeHierReturnProperties($this->_fields);
       $this->_returnProperties['contact_type'] = 1;
       $this->_returnProperties['contact_sub_type'] = 1;
diff --git a/civicrm/CRM/Contact/Task.php b/civicrm/CRM/Contact/Task.php
index 4a6989bd070c198225df7b73051922d5d19a1937..a992548150ce8e33c0bd267f3a47be0b5c8f5697 100644
--- a/civicrm/CRM/Contact/Task.php
+++ b/civicrm/CRM/Contact/Task.php
@@ -301,11 +301,7 @@ class CRM_Contact_Task extends CRM_Core_Task {
         self::LABEL_CONTACTS => self::$_tasks[self::LABEL_CONTACTS]['title'],
       ];
 
-      foreach ([
-        self::MAP_CONTACTS,
-        self::CREATE_MAILING,
-        self::TASK_SMS,
-      ] as $task) {
+      foreach ([self::MAP_CONTACTS, self::CREATE_MAILING, self::TASK_SMS] as $task) {
         if (isset(self::$_tasks[$task]) &&
           !empty(self::$_tasks[$task]['title'])
         ) {
diff --git a/civicrm/CRM/Contribute/BAO/Contribution.php b/civicrm/CRM/Contribute/BAO/Contribution.php
index a04da212f21ceed1deb6daea3579f61519e90578..c1bb81b39ed85587bde4a1b942e377d1a0bc9d3f 100644
--- a/civicrm/CRM/Contribute/BAO/Contribution.php
+++ b/civicrm/CRM/Contribute/BAO/Contribution.php
@@ -1064,6 +1064,9 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution im
       if ($paidByName === 'Check') {
         $val['check_number'] = $resultDAO->check_number;
       }
+      else {
+        $val['check_number'] = NULL;
+      }
       $rows[] = $val;
     }
     return $rows;
@@ -1775,11 +1778,14 @@ LEFT JOIN  civicrm_contribution contribution ON ( componentPayment.contribution_
    * Use api contribute.completetransaction
    * For failures use failPayment (preferably exposing by api in the process).
    *
+   * @deprecated since 5.69 Will be remvoed ASAP since this is old & crufty &
+   * should never have been used outside core.
    */
   public static function transitionComponents($params) {
     // @todo fix the one place that calls this function to use Payment.create
     // remove this.
     // get minimum required values.
+    CRM_Core_Error::deprecatedFunctionWarning('use Payment.create api');
     $contributionId = $params['contribution_id'];
 
     // we process only ( Completed, Cancelled, or Failed ) contributions.
@@ -2629,16 +2635,10 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
         foreach ($this->_relatedObjects['membership'] as $membership) {
           if ($membership->id) {
             $values['membership_id'] = $membership->id;
-            $values['isMembership'] = TRUE;
-            $values['membership_assign'] = TRUE;
-
             // need to set the membership values here
             $template->assign('membership_name',
               CRM_Member_PseudoConstant::membershipType($membership->membership_type_id)
             );
-            $template->assign('mem_start_date', $membership->start_date);
-            $template->assign('mem_join_date', $membership->join_date);
-            $template->assign('mem_end_date', $membership->end_date);
             $membership_status = CRM_Member_PseudoConstant::membershipStatus($membership->status_id, NULL, 'label');
             $template->assign('mem_status', $membership_status);
             if ($membership_status === 'Pending' && $membership->is_pay_later == 1) {
@@ -4135,13 +4135,14 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
    * settings we will live with an inconsistency because it's too hard to change for now.
    * https://github.com/civicrm/civicrm-core/pull/8562#issuecomment-227874245
    *
-   *
    * @param string $name
    *
    * @return string
    *
+   * @deprecated since 5.68 will be removed around 5.74.
    */
   public static function checkContributeSettings($name) {
+    CRM_Core_Error::deprecatedFunctionWarning('Use \Civi::settings()->get() with the actual setting name');
     $contributeSettings = Civi::settings()->get('contribution_invoice_settings');
     return $contributeSettings[$name] ?? NULL;
   }
@@ -4214,11 +4215,7 @@ LIMIT 1;";
       }
       // @todo remove all this stuff in favour of letting the api call further down handle in
       // (it is a duplication of what the api does).
-      $dates = array_fill_keys([
-        'join_date',
-        'start_date',
-        'end_date',
-      ], NULL);
+      $dates = [];
       if ($currentMembership) {
         /*
          * Fixed FOR CRM-4433
@@ -4241,9 +4238,9 @@ LIMIT 1;";
       }
       else {
         //get the status for membership.
-        $calcStatus = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($dates['start_date'],
-          $dates['end_date'],
-          $dates['join_date'],
+        $calcStatus = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($dates['start_date'] ?? NULL,
+          $dates['end_date'] ?? NULL,
+          $dates['join_date'] ?? NULL,
           'now',
          TRUE,
           $membershipParams['membership_type_id'],
@@ -4257,7 +4254,23 @@ LIMIT 1;";
       //so make status override false.
       $membershipParams['is_override'] = FALSE;
       $membershipParams['status_override_end_date'] = 'null';
-      civicrm_api3('Membership', 'create', $membershipParams);
+      $membership = civicrm_api3('Membership', 'create', $membershipParams);
+      $membership = $membership['values'][$membership['id']];
+      // Update activity to Completed.
+      // Perhaps this should be in Membership::create? Test cover in
+      // api_v3_ContributionTest.testPendingToCompleteContribution.
+      $priorMembershipStatus = $memberships[$membership['id']]['status_id'] ?? NULL;
+      Activity::update(FALSE)->setValues([
+        'status_id:name' => 'Completed',
+        'subject' => ts('Status changed from %1 to %2'), [
+          1 => CRM_Core_PseudoConstant::getLabel('CRM_Member_BAO_Membership', 'status_id', $priorMembershipStatus),
+          2 => CRM_Core_PseudoConstant::getLabel('CRM_Member_BAO_Membership', 'status_id', $membership['status_id']),
+        ],
+
+      ])->addWhere('source_record_id', '=', $membership['id'])
+        ->addWhere('status_id:name', '=', 'Scheduled')
+        ->addWhere('activity_type_id:name', 'IN', ['Membership Signup', 'Membership Renewal'])
+        ->execute();
     }
   }
 
diff --git a/civicrm/CRM/Contribute/BAO/ContributionPage.php b/civicrm/CRM/Contribute/BAO/ContributionPage.php
index a2a5ce289d62a2d4828dcd3533bc77a14ee39000..9be8c666de80a0b2f76e72df6d2ad6b8c9aaa54e 100644
--- a/civicrm/CRM/Contribute/BAO/ContributionPage.php
+++ b/civicrm/CRM/Contribute/BAO/ContributionPage.php
@@ -147,7 +147,6 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio
       'customPre_grouptitle',
       'customPost_grouptitle',
       'useForMember',
-      'membership_assign',
       'amount',
       'receipt_date',
       'is_pay_later',
@@ -351,7 +350,6 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio
         'customPost' => $values['customPost'],
         'customPost_grouptitle' => $values['customPost_grouptitle'],
         'useForMember' => $values['useForMember'],
-        'membership_assign' => $values['membership_assign'],
         'amount' => $values['amount'],
         'is_pay_later' => $values['is_pay_later'],
         'receipt_date' => !$values['receipt_date'] ? NULL : date('YmdHis', strtotime($values['receipt_date'])),
@@ -405,11 +403,18 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio
       }
 
       // use either the contribution or membership receipt, based on whether it’s a membership-related contrib or not
+      $tokenContext = ['contactId' => (int) $contactID];
+      if (!empty($tplParams['contributionID'])) {
+        $tokenContext['contributionId'] = $tplParams['contributionID'];
+      }
+      if (!empty($values['membership_id'])) {
+        $tokenContext['membershipId'] = $values['membership_id'];
+      }
       $sendTemplateParams = [
-        'workflow' => !empty($values['isMembership']) ? 'membership_online_receipt' : 'contribution_online_receipt',
+        'workflow' => !empty($values['membership_id']) ? 'membership_online_receipt' : 'contribution_online_receipt',
         'contactId' => $contactID,
         'tplParams' => $tplParams,
-        'tokenContext' => $tplParams['contributionID'] ? ['contributionId' => (int) $tplParams['contributionID'], 'contactId' => $contactID] : ['contactId' => $contactID],
+        'tokenContext' => $tokenContext,
         'isTest' => $isTest,
         'PDFFilename' => 'receipt.pdf',
       ];
diff --git a/civicrm/CRM/Contribute/BAO/ContributionSoft.php b/civicrm/CRM/Contribute/BAO/ContributionSoft.php
index 2a2885c95f3415cfc0c10cef94a380dc46dcb936..4fbad1a2f504279ca3f7ff876c0644202265bd1c 100644
--- a/civicrm/CRM/Contribute/BAO/ContributionSoft.php
+++ b/civicrm/CRM/Contribute/BAO/ContributionSoft.php
@@ -498,6 +498,10 @@ class CRM_Contribute_BAO_ContributionSoft extends CRM_Contribute_DAO_Contributio
         }
       }
     }
+    if (!is_array($params)) {
+      CRM_Core_Error::deprecatedWarning('this could indicate a bug - see https://lab.civicrm.org/dev/core/-/issues/4881');
+      $params = [];
+    }
 
     //remove name related fields and construct name string with prefix/suffix
     //which will be later assigned to template
diff --git a/civicrm/CRM/Contribute/BAO/Premium.php b/civicrm/CRM/Contribute/BAO/Premium.php
index d0314a12f5dc2727ed07fd6b95557dbe5eabb4bd..349545ca5a53030033dc61ead72f419cdae2517a 100644
--- a/civicrm/CRM/Contribute/BAO/Premium.php
+++ b/civicrm/CRM/Contribute/BAO/Premium.php
@@ -59,9 +59,22 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium {
     return static::deleteRecord(['id' => $premiumID]);
   }
 
+  /**
+   * Whitelist of possible values for the entity_table field
+   *
+   * @return array
+   */
+  public static function entityTables(): array {
+    return [
+      'civicrm_contribution_page' => ts('Contribution Page'),
+    ];
+  }
+
   /**
    * Build Premium Block im Contribution Pages.
    *
+   * @deprecated since 5.69 will be removed around 5.75
+   *
    * @param CRM_Core_Form $form
    * @param int $pageID
    * @param bool $formItems
@@ -69,6 +82,7 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium {
    * @param string $selectedOption
    */
   public static function buildPremiumBlock(&$form, $pageID, $formItems = FALSE, $selectedProductID = NULL, $selectedOption = NULL) {
+    CRM_Core_Error::deprecatedFunctionWarning('no alternative');
     $form->add('hidden', "selectProduct", $selectedProductID, ['id' => 'selectProduct']);
 
     $premiumDao = new CRM_Contribute_DAO_Premium();
@@ -126,7 +140,7 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium {
         }
       }
       if (count($products)) {
-        $form->assign('showPremium', $formItems);
+        $form->assign('showPremiumSelectionFields', $formItems);
         $form->assign('showSelectOptions', $formItems);
         $form->assign('premiumBlock', $premiumBlock);
       }
diff --git a/civicrm/CRM/Contribute/DAO/Premium.php b/civicrm/CRM/Contribute/DAO/Premium.php
index bf3b18a2fde4bfa1b686c32ae0f0c2fb7238ea14..6597edb70dcc8ba4632641de9ea024964d706c87 100644
--- a/civicrm/CRM/Contribute/DAO/Premium.php
+++ b/civicrm/CRM/Contribute/DAO/Premium.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contribute/Premium.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:adb794a4061201b488eb8149f61553d5)
+ * (GenCodeChecksum:3463ecde633704e18dc34fb992825c11)
  */
 
 /**
@@ -206,6 +206,9 @@ class CRM_Contribute_DAO_Premium extends CRM_Core_DAO {
           'entity' => 'Premium',
           'bao' => 'CRM_Contribute_BAO_Premium',
           'localizable' => 0,
+          'pseudoconstant' => [
+            'callback' => 'CRM_Contribute_BAO_Premium::entityTables',
+          ],
           'add' => '1.4',
         ],
         'entity_id' => [
diff --git a/civicrm/CRM/Contribute/DAO/Product.php b/civicrm/CRM/Contribute/DAO/Product.php
index 460a15467cd32648627242b51add634882e0aac3..9e9322baa8b7d7eef16baf6eca697e150848a0dc 100644
--- a/civicrm/CRM/Contribute/DAO/Product.php
+++ b/civicrm/CRM/Contribute/DAO/Product.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contribute/Product.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:b75121858ccfcc711d4904ed7f4ef6d1)
+ * (GenCodeChecksum:6bd62695324c0ebd78baa0eca84db6e8)
  */
 
 /**
@@ -38,6 +38,18 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO {
    */
   public static $_log = TRUE;
 
+  /**
+   * Paths for accessing this entity in the UI.
+   *
+   * @var string[]
+   */
+  protected static $_paths = [
+    'add' => 'civicrm/admin/contribute/managePremiums/edit?action=add&reset=1',
+    'update' => 'civicrm/admin/contribute/managePremiums/edit?action=update&id=[id]&reset=1',
+    'delete' => 'civicrm/admin/contribute/managePremiums/edit?action=delete&id=[id]&reset=1',
+    'browse' => 'civicrm/admin/contribute/managePremiums/',
+  ];
+
   /**
    * @var int|string|null
    *   (SQL type: int unsigned)
diff --git a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php
index 6b9b5472ef3c8ff348d043a749b5bed4305130d8..aff8f72a668ce48a66731ec12c5d4e6e73383272 100644
--- a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php
+++ b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php
@@ -70,13 +70,6 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task {
    */
   protected $_paymentProcessors = [];
 
-  /**
-   * Instance of the payment processor object.
-   *
-   * @var CRM_Core_Payment
-   */
-  protected $_paymentObject;
-
   /**
    * Entity that $this->_id relates to.
    *
@@ -160,8 +153,6 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task {
    */
   public $_pledgeValues;
 
-  public $_contributeMode = 'direct';
-
   public $_context;
 
   public $_compId;
@@ -413,17 +404,6 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task {
     $this->assign_by_ref('paymentProcessor', $this->_paymentProcessor);
   }
 
-  /**
-   * Get current currency from DB or use default currency.
-   *
-   * @param array $submittedValues
-   *
-   * @return string
-   */
-  public function getCurrency($submittedValues = []) {
-    return $submittedValues['currency'] ?? $this->_values['currency'] ?? CRM_Core_Config::singleton()->defaultCurrency;
-  }
-
   /**
    * @param array $submittedValues
    *
@@ -678,14 +658,14 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task {
     return $title;
   }
 
-  protected function assignContactEmailDetails() {
+  protected function assignContactEmailDetails(): void {
     if ($this->getContactID()) {
       [$displayName] = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->getContactID());
       if (!$displayName) {
         $displayName = civicrm_api3('contact', 'getvalue', ['id' => $this->getContactID(), 'return' => 'display_name']);
       }
-      $this->assign('displayName', $displayName);
     }
+    $this->assign('displayName', $displayName ?? NULL);
   }
 
   protected function assignContactID(): void {
diff --git a/civicrm/CRM/Contribute/Form/AdditionalInfo.php b/civicrm/CRM/Contribute/Form/AdditionalInfo.php
index 7f1d5e393fd0f56c0e1a2d1b94c8580c115da5d2..6e418805dbbe23adb70b90a7e1e909803cda7636 100644
--- a/civicrm/CRM/Contribute/Form/AdditionalInfo.php
+++ b/civicrm/CRM/Contribute/Form/AdditionalInfo.php
@@ -367,10 +367,7 @@ class CRM_Contribute_Form_AdditionalInfo {
     $form->assign('ccContribution', $ccContribution);
     if ($ccContribution) {
       $form->assignBillingName($params);
-      $form->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters(
-        $params,
-        $form->_bltID
-      ));
+      $form->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($params));
 
       $valuesForForm = CRM_Contribute_Form_AbstractEditPayment::formatCreditCardDetails($params);
       $form->assignVariables($valuesForForm, ['credit_card_exp_date', 'credit_card_type', 'credit_card_number']);
diff --git a/civicrm/CRM/Contribute/Form/AdditionalPayment.php b/civicrm/CRM/Contribute/Form/AdditionalPayment.php
index e6e6cb824cfcfba6a5d3136973ed1a970deb4334..62927030949d936e5388f5a6801a54a960529c10 100644
--- a/civicrm/CRM/Contribute/Form/AdditionalPayment.php
+++ b/civicrm/CRM/Contribute/Form/AdditionalPayment.php
@@ -15,11 +15,12 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Payment\Exception\PaymentProcessorException;
+
 /**
  * This form records additional payments needed when event/contribution is partially paid.
  */
 class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_AbstractEditPayment {
-  public $_contributeMode = 'direct';
 
   /**
    * Id of the component entity
@@ -49,7 +50,14 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
 
   protected $_paymentType = NULL;
 
-  protected $_contributionId = NULL;
+  /**
+   * Internal property for contribution ID - use getContributionID().
+   *
+   * @var int
+   *
+   * @internal
+   */
+  protected $_contributionId;
 
   protected $fromEmailId = NULL;
 
@@ -73,24 +81,14 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
     $this->assign('id', $this->_id);
     $this->assign('suppressPaymentFormButtons', $this->isBeingCalledFromSelectorContext());
 
-    if ($this->_view == 'transaction' && ($this->_action & CRM_Core_Action::BROWSE)) {
+    if ($this->_view === 'transaction' && ($this->_action & CRM_Core_Action::BROWSE)) {
       $title = $this->assignPaymentInfoBlock();
       $this->setTitle($title);
       return;
     }
-    if ($this->_component == 'event') {
-      $this->_contributionId = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment', $this->_id, 'contribution_id', 'participant_id');
-    }
-    else {
-      $this->_contributionId = $this->_id;
-    }
 
-    $paymentDetails = CRM_Contribute_BAO_Contribution::getPaymentInfo($this->_id, $this->_component, FALSE, TRUE);
     $paymentAmt = $this->getAmountDue();
 
-    $this->_amtPaid = $paymentDetails['paid'];
-    $this->_amtTotal = $paymentDetails['total'];
-
     if ($paymentAmt >= 0) {
       $this->_owed = $paymentAmt;
     }
@@ -101,7 +99,7 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
       throw new CRM_Core_Exception(ts('Credit card payment is not for Refund payments use'));
     }
 
-    list($this->_contributorDisplayName, $this->_contributorEmail) = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactID);
+    [$this->_contributorDisplayName, $this->_contributorEmail] = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactID);
 
     $this->assign('contributionMode', $this->_mode);
     $this->assign('contactId', $this->_contactID);
@@ -139,7 +137,7 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
    * @throws \CRM_Core_Exception
    */
   public function setDefaultValues() {
-    if ($this->_view == 'transaction' && ($this->_action & CRM_Core_Action::BROWSE)) {
+    if ($this->_view === 'transaction' && ($this->_action & CRM_Core_Action::BROWSE)) {
       return NULL;
     }
     $defaults = [];
@@ -314,39 +312,38 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
   public function submit($submittedValues) {
     $this->_params = $submittedValues;
     $this->beginPostProcess();
-    // _contributorContactID may no longer need to be set - setting it here
-    // was for use in processBillingAddress
-    $this->_contributorContactID = $this->_contactID;
     $this->processBillingAddress($this->_contactID, (string) $this->_contributorEmail);
-    $participantId = NULL;
-    if ($this->_component === 'event') {
-      $participantId = $this->_id;
-    }
-
+    $paymentResult = [];
     if ($this->_mode) {
       // process credit card
-      $this->assign('contributeMode', 'direct');
-      $this->processCreditCard();
-    }
-
-    // @todo we should clean $ on the form & pass in skipCleanMoney
-    $trxnsData = $this->_params;
-    if ($this->isARefund()) {
-      $trxnsData['total_amount'] = -$trxnsData['total_amount'];
-    }
-    $trxnsData['participant_id'] = $participantId;
-    $trxnsData['contribution_id'] = $this->_contributionId;
-    // From the
-    $trxnsData['is_send_contribution_notification'] = FALSE;
+      $paymentResult = $this->processCreditCard();
+    }
+
+    $totalAmount = $this->getSubmittedValue('total_amount');
+    $trxnsData = [
+      'total_amount' => $this->isARefund() ? -$totalAmount : $totalAmount,
+      'check_number' => $this->getSubmittedValue('check_number'),
+      'fee_amount' => $paymentResult['fee_amount'] ?? 0,
+      'contribution_id' => $this->getContributionID(),
+      'payment_processor_id' => $this->getPaymentProcessorID(),
+      'card_type_id' => CRM_Core_PseudoConstant::getKey('CRM_Core_BAO_FinancialTrxn', 'card_type_id', $this->getSubmittedValue('credit_card_type')),
+      'pan_truncation' => substr((string) $this->getSubmittedValue('credit_card_number'), -4),
+      'trxn_result_code' => $paymentResult['trxn_result_code'] ?? NULL,
+      'payment_instrument_id' => $this->getSubmittedValue('payment_instrument_id'),
+      'trxn_id' => $paymentResult['trxn_id'] ?? NULL,
+      'trxn_date' => $this->getSubmittedValue('trxn_date'),
+      // This form sends payment notification only, for historical reasons.
+      'is_send_contribution_notification' => FALSE,
+    ];
     $paymentID = civicrm_api3('Payment', 'create', $trxnsData)['id'];
 
-    if ($this->_contributionId && CRM_Core_Permission::access('CiviMember')) {
+    if ($this->getContributionID() && CRM_Core_Permission::access('CiviMember')) {
       $membershipPaymentCount = civicrm_api3('MembershipPayment', 'getCount', ['contribution_id' => $this->_contributionId]);
       if ($membershipPaymentCount) {
         $this->ajaxResponse['updateTabs']['#tab_member'] = CRM_Contact_BAO_Contact::getCountComponent('membership', $this->_contactID);
       }
     }
-    if ($this->_contributionId && CRM_Core_Permission::access('CiviEvent')) {
+    if ($this->getContributionID() && CRM_Core_Permission::access('CiviEvent')) {
       $participantPaymentCount = civicrm_api3('ParticipantPayment', 'getCount', ['contribution_id' => $this->_contributionId]);
       if ($participantPaymentCount) {
         $this->ajaxResponse['updateTabs']['#tab_participant'] = CRM_Contact_BAO_Contact::getCountComponent('participant', $this->_contactID);
@@ -365,48 +362,23 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
     CRM_Core_Session::setStatus($statusMsg, ts('Saved'), 'success');
   }
 
-  public function processCreditCard() {
-    $config = CRM_Core_Config::singleton();
-    $session = CRM_Core_Session::singleton();
-
+  public function processCreditCard(): ?array {
     // we need to retrieve email address
     if ($this->_context === 'standalone' && !empty($this->_params['is_email_receipt'])) {
       [$displayName] = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactId);
       $this->assign('displayName', $displayName);
     }
 
-    $this->_params['amount'] = $this->_params['total_amount'];
-    // @todo - stop setting amount level in this function & call the CRM_Price_BAO_PriceSet::getAmountLevel
-    // function to get correct amount level consistently. Remove setting of the amount level in
-    // CRM_Price_BAO_PriceSet::processAmount. Extend the unit tests in CRM_Price_BAO_PriceSetTest
-    // to cover all variants.
-    $this->_params['amount_level'] = 0;
-    $this->_params['currencyID'] = CRM_Utils_Array::value('currency',
-      $this->_params,
-      $config->defaultCurrency
-    );
-
-    if (empty($this->_params['invoice_id'])) {
-      $this->_params['invoiceID'] = md5(uniqid(rand(), TRUE));
-    }
-    else {
-      $this->_params['invoiceID'] = $this->_params['invoice_id'];
-    }
-
-    $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters(
-      $this->_params,
-      $this->_bltID
-    ));
+    $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($this->_params));
 
-    //Add common data to formatted params
-    $params = $this->_params;
-    CRM_Contribute_Form_AdditionalInfo::postProcessCommon($params, $this->_params, $this);
     // at this point we've created a contact and stored its address etc
     // all the payment processors expect the name and address to be in the
     // so we copy stuff over to first_name etc.
     $paymentParams = $this->_params;
     $paymentParams['contactID'] = $this->_contactId;
-    CRM_Core_Payment_Form::mapParams($this->_bltID, $this->_params, $paymentParams, TRUE);
+    $paymentParams['amount'] = $this->getSubmittedValue('total_amount');
+    $paymentParams['currency'] = $this->getCurrency();
+    CRM_Core_Payment_Form::mapParams($this->_bltID, $this->getSubmittedValues(), $paymentParams, TRUE);
 
     $paymentParams['contributionPageID'] = NULL;
     if (!empty($this->_params['is_email_receipt'])) {
@@ -421,36 +393,33 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
 
     if ($paymentParams['amount'] > 0.0) {
       try {
-        // force a reset of the payment processor in case the form changed it, CRM-7179
-        $payment = Civi\Payment\System::singleton()->getByProcessor($this->_paymentProcessor);
+        // Re-retrieve the payment processor in case the form changed it, CRM-7179
+        $payment = \Civi\Payment\System::singleton()->getById($this->getPaymentProcessorID());
         $result = $payment->doPayment($paymentParams);
       }
-      catch (\Civi\Payment\Exception\PaymentProcessorException $e) {
+      catch (PaymentProcessorException $e) {
         Civi::log()->error('Payment processor exception: ' . $e->getMessage());
         $urlParams = "action=add&cid={$this->_contactId}&id={$this->_contributionId}&component={$this->_component}&mode={$this->_mode}";
         CRM_Core_Error::statusBounce($e->getMessage(), CRM_Utils_System::url('civicrm/payment/add', $urlParams));
       }
     }
-
     if (!empty($result)) {
       $this->_params = array_merge($this->_params, $result);
     }
 
     $this->set('params', $this->_params);
-
-    // set source if not set
-    if (empty($this->_params['source'])) {
-      $userID = $session->get('userID');
-      $userSortName = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $userID,
-        'sort_name'
-      );
-      $this->_params['source'] = ts('Submit Credit Card Payment by: %1', [1 => $userSortName]);
-    }
+    return [
+      'fee_amount' => $result['fee_amount'] ?? 0,
+      'trxn_id' => $result['trxn_id'] ?? NULL,
+      'trxn_result_code' => $result['trxn_result_code'] ?? NULL,
+    ];
   }
 
   /**
    * Wrapper for unit testing the post process submit function.
    *
+   * @deprecated since 5.69 will be removed around 5.75
+   *
    * @param array $params
    * @param string|null $creditCardMode
    * @param string $entityType
@@ -458,6 +427,7 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
    * @throws \CRM_Core_Exception
    */
   public function testSubmit($params, $creditCardMode = NULL, $entityType = 'contribute') {
+    CRM_Core_Error::deprecatedFunctionWarning('use FormTrait in tests');
     $this->_bltID = 5;
     // Required because processCreditCard calls set method on this.
     $_SERVER['REQUEST_METHOD'] = 'GET';
@@ -468,11 +438,7 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
     if (!empty($params['contribution_id'])) {
       $this->_contributionId = $params['contribution_id'];
 
-      $paymentDetails = CRM_Contribute_BAO_Contribution::getPaymentInfo($this->_contributionId, $entityType, FALSE, TRUE);
-
       $paymentAmount = $this->getAmountDue();
-      $this->_amtPaid = $paymentDetails['paid'];
-      $this->_amtTotal = $paymentDetails['total'];
 
       if ($paymentAmount > 0) {
         $this->_owed = $paymentAmount;
@@ -532,9 +498,40 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
    */
   protected function getAmountDue(): float {
     if (!isset($this->amountDue)) {
-      $this->amountDue = CRM_Contribute_BAO_Contribution::getContributionBalance($this->_contributionId);
+      $this->amountDue = CRM_Contribute_BAO_Contribution::getContributionBalance($this->getContributionID());
     }
     return $this->amountDue;
   }
 
+  /**
+   * Get the selected Contribution ID.
+   *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   */
+  public function getContributionID(): int {
+    if (!$this->_contributionId) {
+      $component = CRM_Utils_Request::retrieve('component', 'String', $this, FALSE, 'contribution');
+      if ($component === 'event') {
+        $this->_contributionId = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment', $this->_id, 'contribution_id', 'participant_id');
+      }
+      else {
+        $this->_contributionId = $this->_id;
+      }
+    }
+    return (int) $this->_contributionId;
+  }
+
+  /**
+   * Get the payment processor ID.
+   *
+   * @return int
+   */
+  public function getPaymentProcessorID(): int {
+    return (int) ($this->getSubmittedValue('payment_processor_id') ?: $this->_paymentProcessor['id']);
+  }
+
 }
diff --git a/civicrm/CRM/Contribute/Form/CancelSubscription.php b/civicrm/CRM/Contribute/Form/CancelSubscription.php
index 8ce402c57484ea801c8ee6d55f78c0cb95b83861..450132d2444060f01d0ea6faa2135ec1144bb61b 100644
--- a/civicrm/CRM/Contribute/Form/CancelSubscription.php
+++ b/civicrm/CRM/Contribute/Form/CancelSubscription.php
@@ -28,6 +28,13 @@ class CRM_Contribute_Form_CancelSubscription extends CRM_Contribute_Form_Contrib
    */
   protected $_donorEmail = '';
 
+  /**
+   * The contributor display name (for emails)
+   *
+   * @var string
+   */
+  protected $_donorDisplayName = '';
+
   /**
    * Should custom data be suppressed on this form.
    *
diff --git a/civicrm/CRM/Contribute/Form/Contribution.php b/civicrm/CRM/Contribute/Form/Contribution.php
index 8227fb63af04f0aa09618459818a45de0fdecfb1..739caae2019ed525ce4aa7cdbaa619d0d57c0ce0 100644
--- a/civicrm/CRM/Contribute/Form/Contribution.php
+++ b/civicrm/CRM/Contribute/Form/Contribution.php
@@ -19,6 +19,7 @@ use Civi\Payment\Exception\PaymentProcessorException;
 class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditPayment {
   use CRM_Contact_Form_ContactFormTrait;
   use CRM_Contribute_Form_ContributeFormTrait;
+  use CRM_Financial_Form_PaymentProcessorFormTrait;
 
   /**
    * The id of the contribution that we are processing.
@@ -95,8 +96,6 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
    */
   public $_pledgeValues;
 
-  public $_contributeMode = 'direct';
-
   public $_context;
 
   /**
@@ -612,16 +611,9 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
       ($this->_priceSetId || !empty($_POST['price_set_id']))
     ) {
       $buildPriceSet = TRUE;
-      $getOnlyPriceSetElements = TRUE;
-      if (!$this->_priceSetId) {
-        $this->_priceSetId = $_POST['price_set_id'];
-        $getOnlyPriceSetElements = FALSE;
-      }
-
       $this->buildPriceSet();
-
-      // get only price set form elements.
-      if ($getOnlyPriceSetElements) {
+      if (!$this->isSubmitted()) {
+        // This is being called in overload mode to render the price set.
         return;
       }
     }
@@ -1154,8 +1146,8 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
       $this->_lineItem = $lineItem;
     }
 
-    $this->_paymentObject = Civi\Payment\System::singleton()->getById($submittedValues['payment_processor_id']);
-    $this->_paymentProcessor = $this->_paymentObject->getPaymentProcessor();
+    $paymentObject = Civi\Payment\System::singleton()->getById($submittedValues['payment_processor_id']);
+    $this->_paymentProcessor = $paymentObject->getPaymentProcessor();
 
     // Set source if not set
     if (empty($submittedValues['source'])) {
@@ -1180,10 +1172,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
     }
 
     $this->_params['amount'] = $this->_params['total_amount'];
-    // @todo - stop setting amount level in this function & call the CRM_Price_BAO_PriceSet::getAmountLevel
-    // function to get correct amount level consistently. Remove setting of the amount level in
-    // CRM_Price_BAO_PriceSet::processAmount. Extend the unit tests in CRM_Price_BAO_PriceSetTest
-    // to cover all variants.
+    // @todo - stop setting amount level in this function - use $this->order->getAmountLevel()
     $this->_params['amount_level'] = 0;
     $this->_params['description'] = ts("Contribution submitted by a staff person using contributor's credit card");
     $this->_params['currencyID'] = CRM_Utils_Array::value('currency',
@@ -1416,12 +1405,11 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
     }
 
     if (isset($params['amount'])) {
-      $contributionParams = array_merge(CRM_Contribute_Form_Contribution_Confirm::getContributionParams(
-        $params, $financialType->id,
-        NULL, $receiptDate,
+      $contributionParams = array_merge($this->getContributionParams(
+        $params, $financialType->id, $receiptDate,
         $recurringContributionID), $contributionParams
       );
-      $contributionParams['non_deductible_amount'] = CRM_Contribute_Form_Contribution_Confirm::getNonDeductibleAmount($params, $financialType, FALSE, $form);
+      $contributionParams['non_deductible_amount'] = $this->getNonDeductibleAmount($params, $financialType, FALSE, $form);
       $contributionParams['skipCleanMoney'] = TRUE;
       // @todo this is the wrong place for this - it should be done as close to form submission
       // as possible
@@ -1430,23 +1418,8 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
       $contribution = CRM_Contribute_BAO_Contribution::add($contributionParams);
 
       if (Civi::settings()->get('invoicing')) {
-        $dataArray = [];
-        // @todo - interrogate the line items passed in on the params array.
-        // No reason to assume line items will be set on the form.
-        foreach ($form->_lineItem as $lineItemKey => $lineItemValue) {
-          foreach ($lineItemValue as $key => $value) {
-            if (isset($value['tax_amount']) && isset($value['tax_rate'])) {
-              if (isset($dataArray[$value['tax_rate']])) {
-                $dataArray[$value['tax_rate']] = $dataArray[$value['tax_rate']] + $value['tax_amount'];
-              }
-              else {
-                $dataArray[$value['tax_rate']] = $value['tax_amount'];
-              }
-            }
-          }
-        }
         $smarty = CRM_Core_Smarty::singleton();
-        $smarty->assign('dataArray', $dataArray);
+        // @todo - probably this assign is no longer needed as we use a token.
         $smarty->assign('totalTaxAmount', $params['tax_amount'] ?? NULL);
       }
     }
@@ -1484,6 +1457,75 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
     return $contribution;
   }
 
+  /**
+   * Get non-deductible amount.
+   *
+   * Previously shared function - was quite broken in the other flow.
+   * Maybe here too
+   *
+   * This is a bit too much about wierd form interpretation to be this deep.
+   *
+   * @see https://issues.civicrm.org/jira/browse/CRM-11885
+   *  if non_deductible_amount exists i.e. Additional Details fieldset was opened [and staff typed something] -> keep
+   * it.
+   *
+   * @param array $params
+   * @param CRM_Financial_BAO_FinancialType $financialType
+   * @param bool $online
+   * @param CRM_Contribute_Form_Contribution_Confirm $form
+   *
+   * @return array
+   */
+  private function getNonDeductibleAmount($params, $financialType, $online, $form) {
+    if (isset($params['non_deductible_amount']) && (!empty($params['non_deductible_amount']))) {
+      return $params['non_deductible_amount'];
+    }
+    $priceSetId = $params['priceSetId'] ?? NULL;
+    // return non-deductible amount if it is set at the price field option level
+    if ($priceSetId && !empty($form->_lineItem)) {
+      $nonDeductibleAmount = CRM_Price_BAO_PriceSet::getNonDeductibleAmountFromPriceSet($priceSetId, $form->_lineItem);
+    }
+
+    if (!empty($nonDeductibleAmount)) {
+      return $nonDeductibleAmount;
+    }
+    else {
+      if ($financialType->is_deductible) {
+        if ($online && isset($params['selectProduct'])) {
+          $selectProduct = $params['selectProduct'] ?? NULL;
+        }
+        if (!$online && isset($params['product_name'][0])) {
+          $selectProduct = $params['product_name'][0];
+        }
+        // if there is a product - compare the value to the contribution amount
+        if (isset($selectProduct) &&
+          $selectProduct !== 'no_thanks'
+        ) {
+          $productDAO = new CRM_Contribute_DAO_Product();
+          $productDAO->id = $selectProduct;
+          $productDAO->find(TRUE);
+          // product value exceeds contribution amount
+          if ($params['amount'] < $productDAO->price) {
+            $nonDeductibleAmount = $params['amount'];
+            return $nonDeductibleAmount;
+          }
+          // product value does NOT exceed contribution amount
+          else {
+            return $productDAO->price;
+          }
+        }
+        // contribution is deductible - but there is no product
+        else {
+          return '0.00';
+        }
+      }
+      // contribution is NOT deductible
+      else {
+        return $params['amount'];
+      }
+    }
+  }
+
   /**
    * Create the recurring contribution record.
    *
@@ -1529,6 +1571,61 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
     return $recurring->id;
   }
 
+  /**
+   * Set the parameters to be passed to contribution create function.
+   *
+   * Previously shared function.
+   *
+   * @param array $params
+   * @param int $financialTypeID
+   * @param string $receiptDate
+   * @param int $recurringContributionID
+   *
+   * @return array
+   * @throws \CRM_Core_Exception
+   */
+  private function getContributionParams(
+    $params, $financialTypeID, $receiptDate, $recurringContributionID) {
+    $contributionParams = [
+      'financial_type_id' => $financialTypeID,
+      'receive_date' => !empty($params['receive_date']) ? CRM_Utils_Date::processDate($params['receive_date']) : date('YmdHis'),
+      'tax_amount' => $params['tax_amount'] ?? NULL,
+      'amount_level' => $params['amount_level'] ?? NULL,
+      'invoice_id' => $params['invoiceID'],
+      'currency' => $params['currencyID'],
+      'is_pay_later' => $params['is_pay_later'] ?? 0,
+      //configure cancel reason, cancel date and thankyou date
+      //from 'contribution' type profile if included
+      'cancel_reason' => $params['cancel_reason'] ?? 0,
+      'cancel_date' => isset($params['cancel_date']) ? CRM_Utils_Date::format($params['cancel_date']) : NULL,
+      'thankyou_date' => isset($params['thankyou_date']) ? CRM_Utils_Date::format($params['thankyou_date']) : NULL,
+      //setting to make available to hook - although seems wrong to set on form for BAO hook availability
+      'skipLineItem' => $params['skipLineItem'] ?? 0,
+    ];
+
+    if (!empty($params["is_email_receipt"])) {
+      $contributionParams += [
+        'receipt_date' => $receiptDate,
+      ];
+    }
+
+    if ($recurringContributionID) {
+      $contributionParams['contribution_recur_id'] = $recurringContributionID;
+    }
+
+    $contributionParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending');
+    if (isset($contributionParams['invoice_id'])) {
+      $contributionParams['id'] = CRM_Core_DAO::getFieldValue(
+        'CRM_Contribute_DAO_Contribution',
+        $contributionParams['invoice_id'],
+        'id',
+        'invoice_id'
+      );
+    }
+
+    return $contributionParams;
+  }
+
   /**
    * Generate the data to construct a snippet based pane.
    *
@@ -1859,7 +1956,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
 
       $params = [
         'contact_id' => $this->_contactID,
-        'currency' => $this->getCurrency($submittedValues),
+        'currency' => $this->getCurrency(),
         'skipCleanMoney' => TRUE,
         'id' => $this->_id,
       ];
@@ -1870,7 +1967,6 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
 
       $fields = [
         'financial_type_id',
-        'contribution_status_id',
         'payment_instrument_id',
         'cancel_reason',
         'source',
@@ -1881,6 +1977,21 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
       foreach ($fields as $f) {
         $params[$f] = $formValues[$f] ?? NULL;
       }
+      if ($this->_id && $action & CRM_Core_Action::UPDATE) {
+        // Can only be updated to contribution which is handled via Payment.create
+        $params['contribution_status_id'] = $this->getSubmittedValue('contribution_status_id');
+
+        // Set is_pay_later flag for back-office offline Pending status contributions CRM-8996
+        // else if contribution_status is changed to Completed is_pay_later flag is changed to 0, CRM-15041
+        if ($params['contribution_status_id'] == CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending')) {
+          $params['is_pay_later'] = 1;
+        }
+        elseif ($params['contribution_status_id'] == CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed')) {
+          // @todo - if the contribution is new then it should be Pending status & then we use
+          // Payment.create to update to Completed.
+          $params['is_pay_later'] = 0;
+        }
+      }
 
       $params['revenue_recognition_date'] = NULL;
       if (!empty($formValues['revenue_recognition_date'])) {
@@ -1901,17 +2012,6 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
         $params['cancel_date'] = $params['cancel_reason'] = 'null';
       }
 
-      // Set is_pay_later flag for back-office offline Pending status contributions CRM-8996
-      // else if contribution_status is changed to Completed is_pay_later flag is changed to 0, CRM-15041
-      if ($params['contribution_status_id'] == CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending')) {
-        $params['is_pay_later'] = 1;
-      }
-      elseif ($params['contribution_status_id'] == CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed')) {
-        // @todo - if the contribution is new then it should be Pending status & then we use
-        // Payment.create to update to Completed.
-        $params['is_pay_later'] = 0;
-      }
-
       // Add Additional common information to formatted params.
       CRM_Contribute_Form_AdditionalInfo::postProcessCommon($formValues, $params, $this);
       if ($pId) {
@@ -1932,21 +2032,21 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
       if (!empty($params['note']) && !empty($submittedValues['note'])) {
         unset($params['note']);
       }
-      $contribution = CRM_Contribute_BAO_Contribution::create($params);
-
       $previousStatus = CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $this->_values['contribution_status_id'] ?? NULL);
       // process associated membership / participant, CRM-4395
-      if ($contribution->id && $action & CRM_Core_Action::UPDATE
+      if ($this->getContributionID() && $this->getAction() & CRM_Core_Action::UPDATE
         && in_array($previousStatus, ['Pending', 'Partially paid'], TRUE)
         && 'Completed' === CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $this->getSubmittedValue('contribution_status_id'))) {
-        // @todo use Payment.create to do this, remove transitioncomponents function
-        // if contribution is being created with a completed status it should be
-        // created pending & then Payment.create adds the payment
-        CRM_Contribute_BAO_Contribution::transitionComponents([
-          'contribution_id' => $contribution->id,
-          'receive_date' => $contribution->receive_date,
+        // @todo make users use add payment form.
+        civicrm_api3('Payment', 'create', [
+          'contribution_id' => $this->getContributionID(),
+          'total_amount' => $this->getContributionValue('balance_amount'),
+          'currency' => $this->getSubmittedValue('currency'),
+          'payment_instrument_id' => $this->getSubmittedValue('payment_instrument_id'),
+          'check_number' => $this->getSubmittedValue('check_number'),
         ]);
       }
+      $contribution = CRM_Contribute_BAO_Contribution::create($params);
 
       array_unshift($this->statusMessage, ts('The contribution record has been saved.'));
 
@@ -2027,11 +2127,9 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
     foreach ($lineItem as $key => $value) {
       foreach ($value as $v) {
         if (isset($taxRate[(string) CRM_Utils_Array::value('tax_rate', $v)])) {
-          $taxRate[(string) $v['tax_rate']] = $taxRate[(string) $v['tax_rate']] + ($v['tax_amount'] ?? 0);
         }
         else {
           if (isset($v['tax_rate'])) {
-            $taxRate[(string) $v['tax_rate']] = $v['tax_amount'] ?? NULL;
             $getTaxDetails = TRUE;
           }
         }
@@ -2040,14 +2138,13 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
 
     if ($action & CRM_Core_Action::UPDATE) {
       $totalTaxAmount = $submittedValues['tax_amount'] ?? $this->_values['tax_amount'];
+      // Assign likely replaced by a token
       $this->assign('totalTaxAmount', $totalTaxAmount);
-      $this->assign('dataArray', $taxRate);
     }
     else {
       if (!empty($submittedValues['price_set_id'])) {
         $this->assign('totalTaxAmount', $submittedValues['tax_amount']);
         $this->assign('getTaxDetails', $getTaxDetails);
-        $this->assign('dataArray', $taxRate);
       }
       else {
         $this->assign('totalTaxAmount', CRM_Utils_Array::value('tax_amount', $submittedValues));
@@ -2298,13 +2395,19 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
   /**
    * Get the price set ID.
    *
-   * Note that the function currently returns NULL if not submitted
-   * but will over time be fixed to always return an ID.
+   * @api Supported for external use.
    *
    * @return int|null
    */
-  protected function getPriceSetID() {
-    return $this->getSubmittedValue('price_set_id');
+  public function getPriceSetID(): ?int {
+    $priceSetID = $this->getSubmittedValue('price_set_id') ?: CRM_Utils_Request::retrieve('priceSetId', 'Integer');
+    // Ideally we would use $this->isFormBuilt() here to know when to access the _POST
+    // array directly. However, the parent sets isBuilt before, building the form,
+    // rather than after.
+    if (!$priceSetID && !empty($this->getSubmitValue('price_set_id'))) {
+      return (int) $this->getSubmitValue('price_set_id');
+    }
+    return $priceSetID ?? NULL;
   }
 
   /**
@@ -2363,7 +2466,7 @@ WHERE  contribution_id = {$id}
 
     $form->assign('is_recur_interval', $form->_values['is_recur_interval'] ?? NULL);
     $form->assign('is_recur_installments', $form->_values['is_recur_installments'] ?? NULL);
-    $paymentObject = $form->getVar('_paymentObject');
+    $paymentObject = $this->getPaymentProcessorObject();
     if ($paymentObject) {
       $form->assign('recurringHelpText', $paymentObject->getText('contributionPageRecurringHelp', [
         'is_recur_installments' => !empty($form->_values['is_recur_installments']),
diff --git a/civicrm/CRM/Contribute/Form/Contribution/Confirm.php b/civicrm/CRM/Contribute/Form/Contribution/Confirm.php
index daf64aa0f6c7093a75989095381cad1228fb3141..ab9987f216fc34578a139f965c22d2928dfa5cf4 100644
--- a/civicrm/CRM/Contribute/Form/Contribution/Confirm.php
+++ b/civicrm/CRM/Contribute/Form/Contribution/Confirm.php
@@ -144,21 +144,20 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
    *
    * @param array $params
    * @param int $financialTypeID
-   * @param array $paymentProcessorOutcome
    * @param string $receiptDate
    * @param int $recurringContributionID
    *
    * @return array
    * @throws \CRM_Core_Exception
    */
-  public static function getContributionParams(
+  private function getContributionParams(
     $params, $financialTypeID,
-    $paymentProcessorOutcome, $receiptDate, $recurringContributionID) {
+    $receiptDate, $recurringContributionID) {
     $contributionParams = [
       'financial_type_id' => $financialTypeID,
       'receive_date' => !empty($params['receive_date']) ? CRM_Utils_Date::processDate($params['receive_date']) : date('YmdHis'),
       'tax_amount' => $params['tax_amount'] ?? NULL,
-      'amount_level' => $params['amount_level'] ?? NULL,
+      'amount_level' => $this->getMainContributionAmountLevel(),
       'invoice_id' => $params['invoiceID'],
       'currency' => $params['currencyID'],
       'is_pay_later' => $params['is_pay_later'] ?? 0,
@@ -206,18 +205,17 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
    * @param array $params
    * @param CRM_Financial_BAO_FinancialType $financialType
    * @param bool $online
-   * @param CRM_Contribute_Form_Contribution_Confirm $form
    *
    * @return array
    */
-  public static function getNonDeductibleAmount($params, $financialType, $online, $form) {
+  private function getNonDeductibleAmount($params, $financialType, $online) {
     if (isset($params['non_deductible_amount']) && (!empty($params['non_deductible_amount']))) {
       return $params['non_deductible_amount'];
     }
     $priceSetId = $params['priceSetId'] ?? NULL;
     // return non-deductible amount if it is set at the price field option level
-    if ($priceSetId && !empty($form->_lineItem)) {
-      $nonDeductibleAmount = CRM_Price_BAO_PriceSet::getNonDeductibleAmountFromPriceSet($priceSetId, $form->_lineItem);
+    if ($priceSetId && !empty($this->getLineItems())) {
+      $nonDeductibleAmount = CRM_Price_BAO_PriceSet::getNonDeductibleAmountFromPriceSet($priceSetId, [$this->getPriceSetID() => $this->getLineItems()]);
     }
 
     if (!empty($nonDeductibleAmount)) {
@@ -265,16 +263,13 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
    */
   public function preProcess() {
     parent::preProcess();
-
-    // lineItem isn't set until Register postProcess
-    $this->_lineItem = $this->get('lineItem');
     $this->_ccid = $this->get('ccid');
 
     $this->_params = $this->controller->exportValues('Main');
     $this->_params['ip_address'] = CRM_Utils_System::ipAddress();
     $this->_params['amount'] = $this->get('amount');
     if (isset($this->_params['amount'])) {
-      $this->setFormAmountFields($this->_params['priceSetId']);
+      $this->setFormAmountFields($this->getPriceSetID());
     }
 
     $this->_useForMember = $this->get('useForMember');
@@ -324,7 +319,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       $blocks = ['email', 'phone', 'im', 'url', 'openid'];
       foreach ($this->_params['onbehalf'] as $loc => $value) {
         $field = $typeId = NULL;
-        if (strstr($loc, '-')) {
+        if (str_contains($loc, '-')) {
           [$field, $locType] = explode('-', $loc);
         }
 
@@ -413,7 +408,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
             }
           }
         }
-        elseif (strstr($loc, 'custom')) {
+        elseif (str_contains($loc, 'custom')) {
           if ($value && isset($this->_params['onbehalf']["{$loc}_id"])) {
             $value = $this->_params['onbehalf']["{$loc}_id"];
           }
@@ -432,11 +427,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     elseif (!empty($this->_values['is_for_organization'])) {
       // no on behalf of an organization, CRM-5519
       // so reset loc blocks from main params.
-      foreach ([
-        'phone',
-        'email',
-        'address',
-      ] as $blk) {
+      foreach (['phone', 'email', 'address'] as $blk) {
         if (isset($this->_params[$blk])) {
           unset($this->_params[$blk]);
         }
@@ -448,6 +439,9 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       $params = $this->processPcp($this, $this->_params);
       $this->_params = $params;
     }
+    else {
+      $this->assign('pcpBlock');
+    }
     $this->_params['invoiceID'] = $this->get('invoiceID');
 
     //carry campaign from profile.
@@ -464,6 +458,8 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
   /**
    * Build the form object.
+   *
+   * @throws \CRM_Core_Exception
    */
   public function buildQuickForm() {
     // FIXME: Some of this code is identical to Thankyou.php and should be broken out into a shared function
@@ -482,23 +478,13 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       $fieldTypes[] = CRM_Core_BAO_UFGroup::getContactType($this->_values['honoree_profile_id']);
       $this->buildCustom($this->_values['honoree_profile_id'], 'honoreeProfileFields', TRUE, 'honor', $fieldTypes);
     }
+    else {
+      $this->assign('honoreeProfileFields');
+    }
     $this->assign('receiptFromEmail', $this->_values['receipt_from_email'] ?? NULL);
     $this->assign('amount_block_is_active', $this->isFormSupportsNonMembershipContributions());
-
-    // Make a copy of line items array to use for display only
-    $tplLineItems = $this->_lineItem;
-    if (CRM_Invoicing_Utils::isInvoicingEnabled()) {
-      $taxAmount = 0;
-      foreach ($tplLineItems ?? [] as $lineItems) {
-        foreach ($lineItems as $lineItem) {
-          $taxAmount += (float) ($lineItem['tax_amount'] ?? 0);
-        }
-      }
-
-      $this->assign('totalTaxAmount', $taxAmount);
-      $this->assign('taxTerm', CRM_Invoicing_Utils::getTaxTerm());
-    }
-
+    $this->assign('taxTerm', \Civi::settings()->get('tax_term'));
+    $this->assign('totalTaxAmount', $this->order->getTotalTaxAmount());
     $isDisplayLineItems = $this->_priceSetId && !CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_priceSetId, 'is_quick_config');
     $this->assign('isDisplayLineItems', $isDisplayLineItems);
 
@@ -509,18 +495,17 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       $this->_params['is_quick_config'] = 1;
     }
     else {
-      $this->assignLineItemsToTemplate($tplLineItems);
+      $this->assign('lineItem', [$this->getPriceSetID() => $this->order->getLineItems()]);
     }
 
     if (!empty($params['selectProduct']) && $params['selectProduct'] !== 'no_thanks') {
       $option = $params['options_' . $params['selectProduct']] ?? NULL;
-      $productID = $params['selectProduct'];
-      CRM_Contribute_BAO_Premium::buildPremiumBlock($this, $this->_id, FALSE,
-        $productID, $option
-      );
-      $this->set('productID', $productID);
+      $this->buildPremiumsBlock(FALSE, $option);
       $this->set('option', $option);
     }
+    else {
+      $this->assign('products');
+    }
     if (CRM_Core_Component::isEnabled('CiviMember') && empty($this->_ccid)) {
       if (isset($params['selectMembership']) &&
         $params['selectMembership'] !== 'no_thanks'
@@ -560,6 +545,9 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
       $this->buildCustom($this->_values['onbehalf_profile_id'], 'onbehalfProfile', TRUE, 'onbehalf', $fieldTypes);
     }
+    else {
+      $this->assign('onbehalfProfile');
+    }
 
     $this->_separateMembershipPayment = $this->isSeparateMembershipPayment();
     $this->assign('is_separate_payment', $this->isSeparateMembershipPayment());
@@ -664,8 +652,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
   private function buildMembershipBlock($cid, $selectedMembershipTypeID = NULL, $isTest = NULL) {
     $separateMembershipPayment = FALSE;
     if ($this->_membershipBlock) {
-      $this->_currentMemberships = [];
-
       $membershipTypeIds = $membershipTypes = [];
       $membershipPriceset = (!empty($this->_priceSetId) && $this->_useForMember);
 
@@ -691,19 +677,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       }
 
       if (!empty($membershipTypeIds)) {
-        //set status message if wrong membershipType is included in membershipBlock
-        if ($this->getRenewalMembershipID() && !$membershipPriceset) {
-          $membershipTypeID = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_Membership',
-            $this->getRenewalMembershipID(),
-            'membership_type_id'
-          );
-          if (!in_array($membershipTypeID, $membershipTypeIds)) {
-            CRM_Core_Session::setStatus(ts("Oops. The membership you're trying to renew appears to be invalid. Contact your site administrator if you need assistance. If you continue, you will be issued a new membership."), ts('Invalid Membership'), 'error');
-          }
-        }
-
         $membershipTypeValues = CRM_Member_BAO_Membership::buildMembershipTypeValues($this, $membershipTypeIds);
-        $this->_membershipTypeValues = $membershipTypeValues;
         $endDate = NULL;
 
         // Check if we support auto-renew on this contribution page
@@ -730,7 +704,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
                 if ($membership->find(TRUE)) {
                   $this->assign('renewal_mode', TRUE);
                   $memType['current_membership'] = $membership->end_date;
-                  $this->_currentMemberships[$membership->membership_type_id] = $membership->membership_type_id;
                 }
               }
               $membershipTypes[] = $memType;
@@ -761,7 +734,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
               if ($membership && $membership['membership_type_id.duration_unit:name'] !== 'lifetime') {
                 $this->assign('renewal_mode', TRUE);
-                $this->_currentMemberships[$membership['membership_type_id']] = $membership['membership_type_id'];
                 $memType['current_membership'] = $membership['end_date'];
                 if (!$endDate) {
                   $endDate = $memType['current_membership'];
@@ -778,6 +750,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
       $this->assign('membershipBlock', $this->_membershipBlock);
       $this->assign('showRadio', FALSE);
+      $this->assignTotalAmounts();
       $this->assign('membershipTypes', $membershipTypes);
       $this->assign('autoRenewMembershipTypeOptions', json_encode($autoRenewMembershipTypeOptions));
       //give preference to user submitted auto_renew value.
@@ -1054,14 +1027,13 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     }
 
     if (isset($params['amount'])) {
-      $contributionParams = array_merge(self::getContributionParams(
-        $params, $financialType->id,
-        NULL, $receiptDate,
+      $contributionParams = array_merge($this->getContributionParams(
+        $params, $financialType->id, $receiptDate,
         $recurringContributionID), $contributionParams
       );
 
       $contributionParams['payment_processor'] = $result ? ($result['payment_processor'] ?? NULL) : NULL;
-      $contributionParams['non_deductible_amount'] = self::getNonDeductibleAmount($params, $financialType, TRUE, $form);
+      $contributionParams['non_deductible_amount'] = $this->getNonDeductibleAmount($params, $financialType, TRUE, $form);
       $contributionParams['skipCleanMoney'] = TRUE;
       // @todo this is the wrong place for this - it should be done as close to form submission
       // as possible
@@ -1069,26 +1041,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
       $contribution = CRM_Contribute_BAO_Contribution::add($contributionParams);
 
-      if (Civi::settings()->get('invoicing')) {
-        $dataArray = [];
-        // @todo - interrogate the line items passed in on the params array.
-        // No reason to assume line items will be set on the form.
-        foreach ($form->_lineItem as $lineItemKey => $lineItemValue) {
-          foreach ($lineItemValue as $key => $value) {
-            if (isset($value['tax_amount']) && isset($value['tax_rate'])) {
-              if (isset($dataArray[$value['tax_rate']])) {
-                $dataArray[$value['tax_rate']] = $dataArray[$value['tax_rate']] + $value['tax_amount'];
-              }
-              else {
-                $dataArray[$value['tax_rate']] = $value['tax_amount'];
-              }
-            }
-          }
-        }
-        $smarty = CRM_Core_Smarty::singleton();
-        $smarty->assign('dataArray', $dataArray);
-      }
-
       // lets store it in the form variable so postProcess hook can get to this and use it
       $form->_contributionID = $contribution->id;
     }
@@ -1165,15 +1117,13 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
     // CRM-14354: For an auto-renewing membership with an additional contribution,
     // if separate payments is not enabled, make sure only the membership fee recurs
-    if (!empty($this->_membershipBlock)
-      && $this->_membershipBlock['is_separate_payment'] === '0'
+    if ($this->isSeparateMembershipPayment()
       && isset($params['selectMembership'])
-      && $this->_values['is_allow_other_amount'] == '1'
+      && $this->getContributionPageValue('is_allow_other_amount')
       // CRM-16331
-      && !empty($this->_membershipTypeValues)
-      && !empty($this->_membershipTypeValues[$params['selectMembership']]['minimum_fee'])
+      && !empty($this->order->getMembershipTotalAmount())
     ) {
-      $recurParams['amount'] = $this->_membershipTypeValues[$params['selectMembership']]['minimum_fee'];
+      $recurParams['amount'] = $this->order->getMembershipTotalAmount();
     }
 
     $recurParams['is_test'] = 0;
@@ -1372,7 +1322,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
   protected function processMembership($membershipParams, $contactID, $customFieldsFormatted, $premiumParams,
                                 $membershipLineItems): void {
 
-    $membershipTypeIDs = (array) $membershipParams['selectMembership'];
+    $membershipTypeIDs = array_keys($this->order->getMembershipTypes());
     $membershipTypes = CRM_Member_BAO_Membership::buildMembershipTypeValues($this, $membershipTypeIDs);
     $membershipType = empty($membershipTypes) ? [] : reset($membershipTypes);
 
@@ -1403,7 +1353,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     $this->postProcessMembership($membershipParams, $contactID, $premiumParams, $customFieldsFormatted, $membershipType, $membershipTypeIDs, $isPaidMembership, $this->_membershipId, $isProcessSeparateMembershipTransaction, $financialTypeID,
       $membershipLineItems);
 
-    $this->assign('membership_assign', TRUE);
     $this->set('membershipTypeID', $membershipParams['selectMembership']);
   }
 
@@ -1441,31 +1390,31 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     $membershipContribution = NULL;
     $isTest = $membershipParams['is_test'] ?? FALSE;
     $errors = $paymentResults = [];
-    $this->_values['isMembership'] = TRUE;
+
     $isRecurForFirstTransaction = $this->_params['is_recur'] ?? $membershipParams['is_recur'] ?? NULL;
 
     $totalAmount = $membershipParams['amount'];
 
     if ($isPaidMembership) {
-      if ($isProcessSeparateMembershipTransaction) {
+      if ($this->isSeparatePaymentSelected()) {
         // If we have 2 transactions only one can use the invoice id.
         $membershipParams['invoiceID'] .= '-2';
         if (!empty($membershipParams['auto_renew'])) {
           $isRecurForFirstTransaction = FALSE;
         }
+        $membershipParams['total_amount'] = $totalAmount;
+        $membershipParams['skipLineItem'] = 0;
+        CRM_Price_BAO_LineItem::getLineItemArray($membershipParams);
       }
-
-      if (!$isProcessSeparateMembershipTransaction) {
+      else {
         // Skip line items in the contribution processing transaction.
         // We will create them with the membership for proper linking.
         $membershipParams['skipLineItem'] = 1;
+        // Since we are not letting Contribution::create set up the line items
+        // we need to specify the tax.
+        $membershipParams['tax_amount'] = $this->order->getTotalTaxAmount();
       }
-      else {
-        $membershipParams['total_amount'] = $totalAmount;
-        $membershipParams['skipLineItem'] = 0;
-        CRM_Price_BAO_LineItem::getLineItemArray($membershipParams);
 
-      }
       $paymentResult = $this->processConfirm(
         $membershipParams,
         $contactID,
@@ -1484,14 +1433,13 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       }
     }
 
-    if ($isProcessSeparateMembershipTransaction) {
+    if ($this->isSeparatePaymentSelected()) {
       try {
-        $this->_lineItem = $unprocessedLineItems;
         if (empty($this->_params['auto_renew']) && !empty($membershipParams['is_recur'])) {
           unset($membershipParams['is_recur']);
         }
         [$membershipContribution, $secondPaymentResult] = $this->processSecondaryFinancialTransaction($contactID, array_merge($membershipParams, ['skipLineItem' => 1]),
-          $isTest, $unprocessedLineItems, $membershipDetails['minimum_fee'] ?? 0, $membershipDetails['financial_type_id'] ?? NULL);
+          $isTest, $membershipDetails['minimum_fee'] ?? 0, $membershipDetails['financial_type_id'] ?? NULL);
         $paymentResults[] = ['contribution_id' => $membershipContribution->id, 'result' => $secondPaymentResult];
         $totalAmount = $membershipContribution->total_amount;
       }
@@ -1513,29 +1461,11 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     //@todo it should no longer be possible for it to get to this point & membership to not be an array
     if (is_array($membershipTypeIDs) && !empty($membershipContributionID)) {
       $typesTerms = $membershipParams['types_terms'] ?? [];
-
-      $membershipLines = $nonMembershipLines = [];
-      foreach ($unprocessedLineItems as $priceSetID => $lines) {
-        foreach ($lines as $line) {
-          if (!empty($line['membership_type_id'])) {
-            $membershipLines[$line['membership_type_id']] = $line['price_field_value_id'];
-          }
-        }
-      }
-
-      $i = 1;
       $this->_params['createdMembershipIDs'] = [];
-      foreach ($membershipTypeIDs as $memType) {
-        $membershipLineItems = [];
-        if ($i < count($membershipTypeIDs)) {
-          $membershipLineItems[$priceSetID][$membershipLines[$memType]] = $unprocessedLineItems[$priceSetID][$membershipLines[$memType]];
-          unset($unprocessedLineItems[$priceSetID][$membershipLines[$memType]]);
-        }
-        else {
-          $membershipLineItems = $unprocessedLineItems;
-        }
-        $i++;
-        $numTerms = $typesTerms[$memType] ?? 1;
+      $firstMembershipTypeID = reset($membershipTypeIDs);
+      foreach ($membershipTypeIDs as $membershipTypeID) {
+        $membershipLineItems = [$this->getPriceSetID() => $this->getLineItemsForMembershipCreate((int) $membershipTypeID, $firstMembershipTypeID)];
+        $numTerms = $typesTerms[$membershipTypeID] ?? 1;
         $contributionRecurID = $this->_params['contributionRecurID'] ?? NULL;
 
         $membershipSource = NULL;
@@ -1563,7 +1493,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
         }
 
         [$membership, $renewalMode, $dates] = self::legacyProcessMembership(
-          $contactID, $memType, $isTest,
+          $contactID, $membershipTypeID, $isTest,
           date('YmdHis'), $membershipParams['cms_contactID'] ?? NULL,
           $customFieldsFormatted,
           $numTerms, $membershipID, $pending,
@@ -1572,10 +1502,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
         );
 
         $this->set('renewal_mode', $renewalMode);
-        if (!empty($dates)) {
-          $this->assign('mem_start_date', CRM_Utils_Date::customFormat($dates['start_date'], '%Y%m%d'));
-          $this->assign('mem_end_date', CRM_Utils_Date::customFormat($dates['end_date'], '%Y%m%d'));
-        }
 
         if (!empty($membershipContribution)) {
           // Next line is probably redundant. Checks prevent it happening twice.
@@ -1593,24 +1519,11 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
           //CRM-15232: Check if membership is created and on the basis of it use
           //membership receipt template to send payment receipt
-          $this->_values['isMembership'] = TRUE;
-        }
-      }
-      if ($this->_priceSetId && !empty($this->_useForMember) && !empty($this->_lineItem)) {
-        foreach ($this->_lineItem[$this->_priceSetId] as & $priceFieldOp) {
-          if (!empty($priceFieldOp['membership_type_id']) && $membership->membership_type_id == $priceFieldOp['membership_type_id']) {
-            $membershipOb = $membership;
-            $priceFieldOp['start_date'] = $membershipOb->start_date ? CRM_Utils_Date::formatDateOnlyLong($membershipOb->start_date) : '-';
-            $priceFieldOp['end_date'] = $membershipOb->end_date ? CRM_Utils_Date::formatDateOnlyLong($membershipOb->end_date) : '-';
-          }
-          else {
-            $priceFieldOp['start_date'] = $priceFieldOp['end_date'] = 'N/A';
-          }
+          $this->_values['membership_id'] = $membership->id;
         }
-        $this->_values['lineItem'] = $this->_lineItem;
-        $this->assign('lineItem', $this->_lineItem);
       }
     }
+    $this->assign('lineItem', $this->isQuickConfig() ? NULL : [$this->getPriceSetID() => $this->getLineItems()]);
 
     if (!empty($errors)) {
       $message = $this->compileErrorMessage($errors);
@@ -1640,7 +1553,8 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
       // If this is a single membership-related contribution, it won't have
       // be performed yet, so do it now.
-      if ($isPaidMembership && !$isProcessSeparateMembershipTransaction) {
+      if ($isPaidMembership && !$this->isSeparatePaymentSelected()) {
+        $paymentParams['amount'] = $this->getMainContributionAmount();
         $paymentActionResult = $payment->doPayment($paymentParams);
         $paymentResults[] = ['contribution_id' => $paymentResult['contribution']->id, 'result' => $paymentActionResult];
       }
@@ -1675,8 +1589,8 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     }
 
     $emailValues = array_merge($membershipParams, $this->_values);
-    $emailValues['membership_assign'] = 1;
     $emailValues['useForMember'] = !empty($this->_useForMember);
+    $emailValues['membership_id'] = !empty($membership) ? $membership->id : NULL;
 
     // Finally send an email receipt for pay-later scenario (although it might sometimes be caught above!)
     if ($totalAmount == 0) {
@@ -1740,7 +1654,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
    * @param int $contactID
    * @param array $tempParams
    * @param bool $isTest
-   * @param array $lineItems
    * @param $minimumFee
    * @param int $financialTypeID
    *
@@ -1749,7 +1662,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
    * @throws \CRM_Core_Exception
    * @throws \Civi\Payment\Exception\PaymentProcessorException
    */
-  private function processSecondaryFinancialTransaction($contactID, $tempParams, $isTest, $lineItems, $minimumFee,
+  private function processSecondaryFinancialTransaction($contactID, $tempParams, $isTest, $minimumFee,
                                                    $financialTypeID): array {
     $financialType = new CRM_Financial_DAO_FinancialType();
     $financialType->id = $financialTypeID;
@@ -1778,7 +1691,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     $this->_params['separate_membership_payment'] = 1;
     $contributionParams = [
       'contact_id' => $contactID,
-      'line_item' => $lineItems,
+      'line_item' => [$this->getPriceSetID() => $this->getSecondaryMembershipContributionLineItems()],
       'is_test' => $isTest,
       'campaign_id' => $tempParams['campaign_id'] ?? $this->_values['campaign_id'] ?? NULL,
       'contribution_page_id' => $this->_id,
@@ -1854,6 +1767,8 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
   /**
    * This function sets the fields.
    *
+   * The results of it are likely unused.
+   *
    * - $this->_params['amount_level']
    * - $this->_params['selectMembership']
    * And under certain circumstances sets
@@ -1862,7 +1777,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
    * @param int $priceSetID
    */
   public function setFormAmountFields($priceSetID) {
-    $isQuickConfig = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_params['priceSetId'], 'is_quick_config');
     $priceField = new CRM_Price_DAO_PriceField();
     $priceField->price_set_id = $priceSetID;
     $priceField->orderBy('weight');
@@ -1873,16 +1787,15 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       if ($priceField->name == "contribution_amount") {
         $paramWeDoNotUnderstand = $priceField->id;
       }
-      if ($isQuickConfig && !empty($this->_params["price_{$priceField->id}"])) {
+      if ($this->isQuickConfig() && !empty($this->_params["price_{$priceField->id}"])) {
         if ($this->_values['fee'][$priceField->id]['html_type'] != 'Text') {
-          // @todo - stop setting amount level in this function & call the CRM_Price_BAO_PriceSet::getAmountLevel
-          // function to get correct amount level consistently. Remove setting of the amount level in
-          // CRM_Price_BAO_PriceSet::processAmount. Extend the unit tests in CRM_Price_BAO_PriceSetTest
-          // to cover all variants.
+          // @todo - stop setting amount level in this function - use $this->order->getAmountLevel()
+          // We expect this to be ignored.
           $this->_params['amount_level'] = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceFieldValue',
             $this->_params["price_{$priceField->id}"], 'label');
         }
         if ($priceField->name == "membership_amount") {
+          // We expect this to be ignored.
           $this->_params['selectMembership'] = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceFieldValue',
             $this->_params["price_{$priceField->id}"], 'membership_type_id');
         }
@@ -1901,6 +1814,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
         && ($this->_params["price_{$paramWeDoNotUnderstand}"] ?? NULL) < 1
         && empty($this->_params["price_{$priceField->id}"])
       ) {
+        // We expect this to be ignored.
         $this->_params['amount'] = NULL;
       }
 
@@ -1914,6 +1828,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
         && ($this->_values['fee'][$priceField->id]['name'] ?? NULL) == 'contribution_amount'
         && ($this->_params["price_{$priceField->id}"] ?? NULL) == '-1'
       ) {
+        // We expect this to be ignored.
         $this->_params['amount'] = NULL;
       }
     }
@@ -1932,7 +1847,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     $form->_id = $params['id'];
 
     CRM_Contribute_BAO_ContributionPage::setValues($form->_id, $form->_values);
-    $form->_separateMembershipPayment = $form->isSeparateMembershipPayment();
     //this way the mocked up controller ignores the session stuff
     $_SERVER['REQUEST_METHOD'] = 'GET';
     $form->controller = new CRM_Contribute_Controller_Contribution();
@@ -1940,18 +1854,13 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
     $paramsProcessedForForm = $form->_params = self::getFormParams($params['id'], $params);
 
-    $order = new CRM_Financial_BAO_Order();
-    $order->setPriceSetIDByContributionPageID($params['id']);
-    $order->setPriceSelectionFromUnfilteredInput($params);
+    $form->order = new CRM_Financial_BAO_Order();
+    $form->order->setPriceSetIDByContributionPageID($params['id']);
+    $form->order->setPriceSelectionFromUnfilteredInput($params);
     if (isset($params['amount']) && !$form->isSeparateMembershipPayment()) {
       // @todo deprecate receiving amount, calculate on the form.
-      $order->setOverrideTotalAmount((float) $params['amount']);
+      $form->order->setOverrideTotalAmount((float) $params['amount']);
     }
-    $amount = $order->getTotalAmount();
-    if ($form->isSeparateMembershipPayment()) {
-      $amount -= $order->getMembershipTotalAmount();
-    }
-    $form->_amount = $params['amount'] = $form->_params['amount'] = $amount;
     // hack these in for test support.
     $form->_fields['billing_first_name'] = 1;
     $form->_fields['billing_last_name'] = 1;
@@ -1981,25 +1890,14 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       // It can be blank with a $0 transaction - then no processor needs to be selected
       $form->_paymentProcessor = $form->_paymentProcessors[$form->_params['payment_processor_id']];
     }
-    if (!empty($params['payment_processor_id'])) {
-      // The concept of contributeMode is deprecated as is the billing_mode concept.
-      if ($form->_paymentProcessor['billing_mode'] == 1) {
-        $form->_contributeMode = 'direct';
-      }
-      else {
-        $form->_contributeMode = 'notify';
-      }
-    }
 
     if (!empty($params['useForMember'])) {
       $form->set('useForMember', 1);
       $form->_useForMember = 1;
     }
     $priceFields = $priceFields[$priceSetID]['fields'];
-
-    $form->_lineItem = [$priceSetID => $order->getLineItems()];
     $membershipPriceFieldIDs = [];
-    foreach ($order->getLineItems() as $lineItem) {
+    foreach ($form->order->getLineItems() as $lineItem) {
       if (!empty($lineItem['membership_type_id'])) {
         $form->set('useForMember', 1);
         $form->_useForMember = 1;
@@ -2134,29 +2032,29 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     if (!empty($this->_values['onbehalf_profile_id']) && empty($this->_ccid)) {
       $behalfOrganization = [];
       $orgFields = ['organization_name', 'organization_id', 'org_option'];
-      foreach ($orgFields as $fld) {
-        if (array_key_exists($fld, $params)) {
-          $behalfOrganization[$fld] = $params[$fld];
-          unset($params[$fld]);
+      foreach ($orgFields as $organizationField) {
+        if (array_key_exists($organizationField, $params)) {
+          $behalfOrganization[$organizationField] = $params[$organizationField];
+          unset($params[$organizationField]);
         }
       }
 
       if (is_array($params['onbehalf']) && !empty($params['onbehalf'])) {
-        foreach ($params['onbehalf'] as $fld => $values) {
-          if (strstr($fld, 'custom_')) {
-            $behalfOrganization[$fld] = $values;
+        foreach ($params['onbehalf'] as $onBehalfField => $values) {
+          if (str_contains($onBehalfField, 'custom_')) {
+            $behalfOrganization[$onBehalfField] = $values;
           }
-          elseif (!(strstr($fld, '-'))) {
-            if (in_array($fld, [
+          elseif (!str_contains($onBehalfField, '-')) {
+            if (in_array($onBehalfField, [
               'contribution_campaign_id',
               'member_campaign_id',
             ])) {
-              $fld = 'campaign_id';
+              $onBehalfField = 'campaign_id';
             }
             else {
-              $behalfOrganization[$fld] = $values;
+              $behalfOrganization[$onBehalfField] = $values;
             }
-            $this->_params[$fld] = $values;
+            $this->_params[$onBehalfField] = $values;
           }
         }
       }
@@ -2164,7 +2062,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       if (array_key_exists('onbehalf_location', $params) && is_array($params['onbehalf_location'])) {
         foreach ($params['onbehalf_location'] as $block => $vals) {
           //fix for custom data (of type checkbox, multi-select)
-          if (substr($block, 0, 7) == 'custom_') {
+          if (str_starts_with($block, 'custom_')) {
             continue;
           }
           // fix the index of block elements
@@ -2290,8 +2188,8 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     $this->_useForMember = $this->get('useForMember');
 
     // store the fact that this is a membership and membership type is selected
-    if ($this->isMembershipSelected($membershipParams)) {
-      $this->doMembershipProcessing($contactID, $membershipParams, $premiumParams, $this->_lineItem);
+    if ($this->isMembershipSelected()) {
+      $this->doMembershipProcessing($contactID, $membershipParams, $premiumParams);
     }
     else {
       // at this point we've created a contact and stored its address etc
@@ -2302,19 +2200,20 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       $paymentParams['skipLineItem'] = 0;
 
       if (!isset($paymentParams['line_item'])) {
-        $paymentParams['line_item'] = $this->_lineItem;
+        $paymentParams['line_item'] = [$this->getPriceSetID() => $this->getLineItems()];
       }
 
       if (!empty($paymentParams['onbehalf']) &&
         is_array($paymentParams['onbehalf'])
       ) {
         foreach ($paymentParams['onbehalf'] as $key => $value) {
-          if (strstr($key, 'custom_')) {
+          if (str_contains($key, 'custom_')) {
             $this->_params[$key] = $value;
           }
         }
       }
-
+      $paymentParams['amount'] = $this->getMainContributionAmount();
+      $paymentParams['line_item'] = [$this->getPriceSetID() => $this->getMainContributionLineItems()];
       $result = $this->processConfirm($paymentParams,
         $contactID,
         $this->wrangleFinancialTypeID($this->_values['financial_type_id']),
@@ -2355,20 +2254,11 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
   /**
    * Return True/False if we have a membership selected on the contribution page
-   * @param array $membershipParams
    *
    * @return bool
    */
-  private function isMembershipSelected($membershipParams) {
-    $priceFieldIds = $this->get('memberPriceFieldIDS');
-    if ((!empty($membershipParams['selectMembership']) && $membershipParams['selectMembership'] != 'no_thanks')
-        && empty($priceFieldIds)) {
-      return TRUE;
-    }
-    else {
-      $membershipParams = $this->getMembershipParamsFromPriceSet($membershipParams);
-    }
-    return !empty($membershipParams['selectMembership']);
+  private function isMembershipSelected(): bool {
+    return !empty($this->getMembershipLineItems());
   }
 
   /**
@@ -2408,11 +2298,9 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
    * @param int $contactID
    * @param array $membershipParams
    * @param array $premiumParams
-   * @param array $formLineItems
    */
-  protected function doMembershipProcessing($contactID, $membershipParams, $premiumParams, $formLineItems) {
+  protected function doMembershipProcessing($contactID, $membershipParams, $premiumParams) {
     if (!$this->_useForMember) {
-      $this->assign('membership_assign', TRUE);
       $this->set('membershipTypeID', $this->_params['selectMembership']);
     }
 
@@ -2456,7 +2344,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       is_array($membershipParams['onbehalf'])
     ) {
       foreach ($membershipParams['onbehalf'] as $key => $value) {
-        if (strstr($key, 'custom_')) {
+        if (str_contains($key, 'custom_')) {
           $customFieldId = explode('_', $key);
           CRM_Core_BAO_CustomField::formatCustomField(
             $customFieldId[1],
@@ -2471,21 +2359,11 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     }
 
     $membershipParams = $this->getMembershipParamsFromPriceSet($membershipParams);
-    if (!empty($membershipParams['selectMembership'])) {
-      // CRM-12233
-      $membershipLineItems = $formLineItems;
-      if ($this->_separateMembershipPayment && $this->isFormSupportsNonMembershipContributions()) {
-        $membershipLineItems = [];
-        foreach ($this->_values['fee'] as $key => $feeValues) {
-          if ($feeValues['name'] == 'membership_amount') {
-            $fieldId = $this->_params['price_' . $key];
-            $membershipLineItems[$this->_priceSetId][$fieldId] = $this->_lineItem[$this->_priceSetId][$fieldId];
-            unset($this->_lineItem[$this->_priceSetId][$fieldId]);
-            break;
-          }
-        }
-      }
+    if ($this->isMembershipSelected()) {
+      // CRM-12233.
       try {
+        $membershipLineItems = [$this->getPriceSetID() => $this->getMainContributionLineItems()];
+        $membershipParams['amount'] = $this->getMainContributionAmount();
         $this->processMembership($membershipParams, $contactID, $customFieldsFormatted, $premiumParams, $membershipLineItems);
       }
       catch (\Civi\Payment\Exception\PaymentProcessorException $e) {
@@ -2632,11 +2510,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       CRM_Utils_Date::mysqlToIso($form->_params['receive_date'])
     );
 
-    if (empty($form->_values['amount'])) {
-      // If the amount is not in _values[], set it
-      $form->_values['amount'] = $form->_params['amount'];
-    }
-
     if (isset($paymentParams['contribution_source'])) {
       $paymentParams['source'] = $paymentParams['contribution_source'];
     }
@@ -2713,19 +2586,13 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
         $form->_params['source'] = $paymentParams['contribution_source'];
       }
 
-      // get the price set values for receipt.
-      if ($form->_priceSetId && $form->_lineItem) {
-        $form->_values['lineItem'] = $form->_lineItem;
-        $form->_values['priceSetID'] = $form->_priceSetId;
-      }
-
       $form->_values['contribution_id'] = $contribution->id;
       $form->_values['contribution_page_id'] = $contribution->contribution_page_id;
 
       if (!empty($form->_paymentProcessor)) {
         try {
           $payment = Civi\Payment\System::singleton()->getByProcessor($form->_paymentProcessor);
-          if ($form->_contributeMode == 'notify') {
+          if ($this->getPaymentProcessorObject()->supports('noReturn')) {
             // We want to get rid of this & make it generic - eg. by making payment processing the last thing
             // and always calling it first.
             $form->postProcessHook();
@@ -3026,4 +2893,36 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     return [$membership, $renewalMode, $dates];
   }
 
+  /**
+   * Get the line items for the membership create call.
+   *
+   * This form follows a legacy code path - rather than creating the membership
+   * and then creating the contribution / order with the right line items it
+   * creates the contribution and then the membership & uses some old code in
+   * the membership BAO to create the line items. In order to do this it needs to
+   * separate out the line items into the separate membership create calls.
+   * However, any non-membership lines need to be assigned to one & only one
+   * of these line item splits.
+   *
+   * Where we have separate payments enabled then we should ignore any non-membership
+   * line items as they will have been processed as part of the non-membership
+   * contribution.
+   *
+   * @param int $membershipTypeID
+   * @param int $defaultMembershipTypeID
+   *
+   * @return array
+   * @throws \CRM_Core_Exception
+   */
+  protected function getLineItemsForMembershipCreate(int $membershipTypeID, int $defaultMembershipTypeID): array {
+    $lineItemSplit = [];
+    foreach ($this->getLineItems() as $lineItem) {
+      if (empty($lineItem['membership_type_id']) && $this->isSeparateMembershipPayment()) {
+        continue;
+      }
+      $lineItemSplit[$lineItem['membership_type_id'] ?: $defaultMembershipTypeID][$lineItem['price_field_id']] = $lineItem;
+    }
+    return $lineItemSplit[$membershipTypeID];
+  }
+
 }
diff --git a/civicrm/CRM/Contribute/Form/Contribution/Main.php b/civicrm/CRM/Contribute/Form/Contribution/Main.php
index 46cf7e28c06184f0530917481e2ea8043a4a33ab..8b5544e590f0b295bec7c9d31ea97d663159ca37 100644
--- a/civicrm/CRM/Contribute/Form/Contribution/Main.php
+++ b/civicrm/CRM/Contribute/Form/Contribution/Main.php
@@ -15,6 +15,8 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Api4\Membership;
+
 /**
  * This class generates form components for processing a Contribution.
  */
@@ -39,6 +41,22 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
   protected $_paymentProcessorID;
   protected $_snippet;
 
+  /**
+   * Variable for legacy paypal express implementation.
+   *
+   * @var string
+   *
+   * @internal - only to be used by legacy paypal express implementation.
+   */
+  public $_expressButtonName;
+
+  /**
+   * Existing memberships the contact has.
+   *
+   * @var array
+   */
+  private $existingMemberships;
+
   /**
    * Get the active UFGroups (profiles) on this form
    * Many forms load one or more UFGroups (profiles).
@@ -70,12 +88,17 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
 
   /**
    * Set variables up before form is built.
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \CRM_Contribute_Exception_InactiveContributionPageException
    */
   public function preProcess() {
     parent::preProcess();
 
     $this->_paymentProcessors = $this->get('paymentProcessors');
     $this->preProcessPaymentOptions();
+    // If the in-use payment processor is the Dummy processor we assign the name so that a test warning is displayed.
+    $this->assign('dummyTitle', $this->getPaymentProcessorValue('payment_processor_type_id.class') === 'CRM_Dummy' ? $this->getPaymentProcessorValue('payment_processor_type_id.front_end_title') : '');
 
     $this->assignFormVariablesByContributionID();
 
@@ -99,8 +122,8 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
     if (!empty($this->_pcpInfo['id']) && !empty($this->_pcpInfo['intro_text'])) {
       $this->assign('intro_text', $this->_pcpInfo['intro_text']);
     }
-    elseif (!empty($this->_values['intro_text'])) {
-      $this->assign('intro_text', $this->_values['intro_text']);
+    else {
+      $this->assign('intro_text', $this->getContributionPageValue('intro_text'));
     }
 
     $qParams = "reset=1&amp;id={$this->_id}";
@@ -209,7 +232,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
 
     $entityId = $memtypeID = NULL;
     if ($this->_priceSetId) {
-      if (($this->isMembershipPriceSet() && !empty($this->_currentMemberships)) || $this->_defaultMemTypeId) {
+      if (($this->isMembershipPriceSet() && !$this->isDefined('CurrentMembership')) || $this->_defaultMemTypeId) {
         $selectedCurrentMemTypes = [];
         foreach ($this->_priceSet['fields'] as $key => $val) {
           foreach ($val['options'] as $keys => $values) {
@@ -225,7 +248,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
               break;
             }
             elseif ($opMemTypeId &&
-              in_array($opMemTypeId, $this->_currentMemberships) &&
+              !empty($this->getExistingMemberships()[$opMemTypeId]) &&
               !in_array($opMemTypeId, $selectedCurrentMemTypes)
             ) {
               CRM_Price_BAO_PriceSet::setDefaultPriceSetField($priceFieldName, $keys, $val['html_type'], $this->_defaults);
@@ -350,7 +373,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
       // build price set form.
       $this->set('priceSetId', $this->_priceSetId);
       if (empty($this->_ccid)) {
-        $this->buildPriceSet($this, $this->getFormContext());
+        $this->buildPriceSet($this);
       }
       if ($this->_values['is_monetary'] &&
         $this->_values['is_recur'] && empty($this->_values['pledge_id'])
@@ -361,7 +384,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
 
     //we allow premium for pledge during pledge creation only.
     if (empty($this->_values['pledge_id']) && empty($this->_ccid)) {
-      CRM_Contribute_BAO_Premium::buildPremiumBlock($this, $this->_id, TRUE);
+      $this->buildPremiumsBlock(TRUE);
     }
 
     //don't build pledge block when mid is passed
@@ -473,19 +496,18 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
    * Build the price set form.
    *
    * @param CRM_Core_Form $form
-   * @param string|null $component
    *
    * @return void
    * @throws \CRM_Core_Exception
    */
-  private function buildPriceSet(&$form, $component = NULL) {
+  private function buildPriceSet($form) {
     $validPriceFieldIds = array_keys($this->getPriceFieldMetaData());
     $form->assign('priceSet', $form->_priceSet);
 
     // @todo - this hook wrangling can be done earlier if we set the form on $this->>order.
     $feeBlock = &$form->_values['fee'];
     // Call the buildAmount hook.
-    CRM_Utils_Hook::buildAmount($component ?? 'contribution', $form, $feeBlock);
+    CRM_Utils_Hook::buildAmount($this->getFormContext(), $form, $feeBlock);
 
     // CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions
     $adminFieldVisible = CRM_Core_Permission::check('administer CiviCRM');
@@ -529,6 +551,17 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
             ];
           }
 
+          if (!empty($field['options'])) {
+            foreach ($field['options'] as $option) {
+              if (!empty($option['membership_type_id.auto_renew'])) {
+                $extra += [
+                  'onclick' => "return showHideAutoRenew(CRM.$(this).data('membershipTypeId'));",
+                ];
+                $this->assign('membershipFieldID', $fieldID);
+              }
+            }
+          }
+
           CRM_Price_BAO_PriceField::addQuickFormElement($form,
             'price_' . $fieldID,
             $field['id'],
@@ -546,7 +579,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
   }
 
   /**
-   * Get the idea of the other amount field if the form is configured to offer it.
+   * Get the ID of the other amount field if the form is configured to offer it.
    *
    * The other amount field is an alternative to the configured radio options,
    * specific to this form.
@@ -566,7 +599,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
   }
 
   /**
-   * Get the idea of the other amount field if the form is configured to offer an other amount.
+   * Get the ID of the main amount field if the form is configured to offer an other amount.
    *
    * The other amount field is an alternative to the configured radio options,
    * specific to this form.
@@ -595,19 +628,17 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
    *
    * @throws \CRM_Core_Exception
    */
-  private function buildMembershipBlock() {
+  private function buildMembershipBlock(): ?bool {
     $cid = $this->_membershipContactID;
-    $isTest = (bool) ($this->getAction() & CRM_Core_Action::PREVIEW);
     $separateMembershipPayment = FALSE;
     $this->addOptionalQuickFormElement('auto_renew');
+    $this->addExpectedSmartyVariable('renewal_mode');
     if ($this->_membershipBlock) {
-      $this->_currentMemberships = [];
-
-      $membershipTypeIds = $membershipTypes = $radio = $radioOptAttrs = [];
+      $membershipTypeIds = $membershipTypes = $radio = [];
       // This is always true if this line is reachable - remove along with the upcoming if.
       $membershipPriceset = TRUE;
 
-      $allowAutoRenewMembership = $autoRenewOption = FALSE;
+      $allowAutoRenewMembership = FALSE;
       $autoRenewMembershipTypeOptions = [];
 
       $separateMembershipPayment = $this->_membershipBlock['is_separate_payment'] ?? NULL;
@@ -624,75 +655,38 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
         }
       }
 
+      //because we take first membership record id for renewal
+      $memberships = $this->getExistingMemberships();
       if (!empty($membershipTypeIds)) {
-        //set status message if wrong membershipType is included in membershipBlock
-        // @todo - this appears to be unreachable - it seems likely it has been broken for
-        // a while so remove may be an OK alternative to fix
-        if ($this->getRenewalMembershipID() && !$membershipPriceset) {
-          $membershipTypeID = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_Membership',
-            $this->getRenewalMembershipID(),
-            'membership_type_id'
-          );
-          if (!in_array($membershipTypeID, $membershipTypeIds)) {
-            CRM_Core_Session::setStatus(ts("Oops. The membership you're trying to renew appears to be invalid. Contact your site administrator if you need assistance. If you continue, you will be issued a new membership."), ts('Invalid Membership'), 'error');
-          }
-        }
-
         $membershipTypeValues = CRM_Member_BAO_Membership::buildMembershipTypeValues($this, $membershipTypeIds);
         $this->_membershipTypeValues = $membershipTypeValues;
         $endDate = NULL;
 
-        // Check if we support auto-renew on this contribution page
-        // FIXME: If any of the payment processors do NOT support recurring you cannot setup an
-        //   auto-renew payment even if that processor is not selected.
-        $allowAutoRenewOpt = TRUE;
-        if (is_array($this->_paymentProcessors)) {
-          foreach ($this->_paymentProcessors as $id => $val) {
-            if ($id && !$val['is_recur']) {
-              $allowAutoRenewOpt = FALSE;
-            }
-          }
-        }
+        $allowAutoRenewOpt = $this->isPageHasPaymentProcessorSupportForRecurring();
         foreach ($membershipTypeIds as $value) {
           $memType = $membershipTypeValues[$value];
           if ($memType['is_active']) {
-
+            $autoRenewMembershipTypeOptions["autoRenewMembershipType_{$value}"] = $this->getConfiguredAutoRenewOptionForMembershipType($value);
             if ($allowAutoRenewOpt) {
-              $javascriptMethod = ['onclick' => "return showHideAutoRenew( this.value );"];
-              $isAvailableAutoRenew = $this->_membershipBlock['auto_renew'][$value] ?? 1;
-              $autoRenewMembershipTypeOptions["autoRenewMembershipType_{$value}"] = (int) $memType['auto_renew'] * $isAvailableAutoRenew;
               $allowAutoRenewMembership = TRUE;
             }
             else {
               $javascriptMethod = NULL;
-              $autoRenewMembershipTypeOptions["autoRenewMembershipType_{$value}"] = 0;
             }
 
             //add membership type.
             $radio[$memType['id']] = NULL;
-            $radioOptAttrs[$memType['id']] = $javascriptMethod;
             if ($cid) {
               //show current membership, skip pending and cancelled membership records,
-              //because we take first membership record id for renewal
-              $membership = \Civi\Api4\Membership::get(FALSE)
-                ->addSelect('end_date', 'membership_type_id', 'membership_type_id.duration_unit:name')
-                ->addWhere('contact_id', '=', $cid)
-                ->addWhere('membership_type_id', '=', $memType['id'])
-                ->addWhere('status_id:name', 'NOT IN', ['Cancelled', 'Pending'])
-                ->addWhere('is_test', '=', (bool) $isTest)
-                ->addOrderBy('end_date', 'DESC')
-                ->execute()
-                ->first();
-
+              $membership = $memberships[$memType['id']] ?? NULL;
               if ($membership) {
                 if ($membership["membership_type_id.duration_unit:name"] === 'lifetime') {
                   unset($radio[$memType['id']]);
-                  unset($radioOptAttrs[$memType['id']]);
                   $this->assign('hasExistingLifetimeMembership', TRUE);
+                  unset($memberships[$memType['id']]);
                   continue;
                 }
-                $this->assign('renewal_mode', TRUE);
-                $this->_currentMemberships[$membership['membership_type_id']] = $membership['membership_type_id'];
+                $this->define('Membership', 'CurrentMembership', $membership);
                 $memType['current_membership'] = $membership['end_date'];
                 if (!$endDate) {
                   $endDate = $memType['current_membership'];
@@ -711,15 +705,15 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
 
       $this->assign('membershipBlock', $this->_membershipBlock);
       $this->assign('showRadio', TRUE);
+      $this->assign('renewal_mode', !empty($memberships));
       $this->assign('membershipTypes', $membershipTypes);
       $this->assign('allowAutoRenewMembership', $allowAutoRenewMembership);
       $this->assign('autoRenewMembershipTypeOptions', json_encode($autoRenewMembershipTypeOptions));
       //give preference to user submitted auto_renew value.
       $takeUserSubmittedAutoRenew = (!empty($_POST) || $this->isSubmitted());
       $this->assign('takeUserSubmittedAutoRenew', $takeUserSubmittedAutoRenew);
-
+      $autoRenewOption = $this->getAutoRenewOption();
       // Assign autorenew option (0:hide,1:optional,2:required) so we can use it in confirmation etc.
-      $autoRenewOption = CRM_Price_BAO_PriceSet::checkAutoRenewForPriceSet($this->_priceSetId);
       $this->assign('autoRenewOption', $autoRenewOption);
 
       if ((!$this->_values['is_pay_later'] || is_array($this->_paymentProcessors)) && ($allowAutoRenewMembership || $autoRenewOption)) {
@@ -747,7 +741,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
 
     $form->assign('is_recur_interval', $this->getContributionPageValue('is_recur_interval'));
     $form->assign('is_recur_installments', $this->getContributionPageValue('is_recur_installments'));
-    $paymentObject = $form->getVar('_paymentObject');
+    $paymentObject = $this->getPaymentProcessorObject();
     if ($paymentObject) {
       $form->assign('recurringHelpText', $paymentObject->getText('contributionPageRecurringHelp', [
         'is_recur_installments' => !empty($form->_values['is_recur_installments']),
@@ -843,8 +837,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
     ) {
 
       // appears to be unreachable - selectMembership never set...
-      $isTest = $self->_action & CRM_Core_Action::PREVIEW;
-      $lifeMember = CRM_Member_BAO_Membership::getAllContactMembership($self->_membershipContactID, $isTest, TRUE);
+      $lifeMember = CRM_Member_BAO_Membership::getAllContactMembership($self->_membershipContactID, $self->isTest(), TRUE);
 
       $membershipOrgDetails = CRM_Member_BAO_MembershipType::getAllMembershipTypes();
       $unallowedOrgs = [];
@@ -1002,7 +995,8 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
           $errors['_qf_default'] = ts('Please select at least one membership option.');
         }
       }
-
+      // @todo - processAmount is to be deprectated - can we use getTotalAmount or
+      // a function of self->order here?
       CRM_Price_BAO_PriceSet::processAmount($self->_values['fee'],
         $fields, $lineItem
       );
@@ -1161,11 +1155,6 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
         $amountID = $params['amount'] ?? NULL;
 
         if ($amountID) {
-          // @todo - stop setting amount level in this function & call the CRM_Price_BAO_PriceSet::getAmountLevel
-          // function to get correct amount level consistently. Remove setting of the amount level in
-          // CRM_Price_BAO_PriceSet::processAmount. Extend the unit tests in CRM_Price_BAO_PriceSetTest
-          // to cover all variants.
-          $params['amount_level'] = $formValues[$amountID]['label'] ?? NULL;
           $amount = $formValues[$amountID]['value'] ?? NULL;
         }
       }
@@ -1175,10 +1164,17 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
 
   /**
    * Process the form submission.
+   *
+   * @throws \CRM_Core_Exception
    */
   public function postProcess() {
     // we first reset the confirm page so it accepts new values
     $this->controller->resetPage('Confirm');
+    // Update order to the submitted values (in case the back button has been used
+    // and the submitted values have changed.
+    $this->set('lineItem', NULL);
+    $this->order->setPriceSelectionFromUnfilteredInput($this->getSubmittedValues());
+    $this->order->recalculateLineItems();
 
     // get the submitted form values.
     $params = $this->controller->exportValues($this->_name);
@@ -1209,8 +1205,9 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
     $params['currencyID'] = CRM_Core_Config::singleton()->defaultCurrency;
 
     if ($this->isQuickConfig()) {
+      // @todo - this is silly cruft - we can likely remove it.
       $priceField = new CRM_Price_DAO_PriceField();
-      $priceField->price_set_id = $params['priceSetId'];
+      $priceField->price_set_id = $this->getPriceSetID();
       $priceField->orderBy('weight');
       $priceField->find();
 
@@ -1222,116 +1219,29 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
             case 'membership_amount':
               $this->_params['selectMembership'] = $params['selectMembership'] = $priceOptions[$selectedPriceOptionID]['membership_type_id'] ?? NULL;
               $this->set('selectMembership', $params['selectMembership']);
-
-            case 'contribution_amount':
-              $params['amount'] = $selectedPriceOptionID;
-              if ($priceField->name == 'contribution_amount' ||
-                  ($priceField->name == 'membership_amount' &&
-                    ($this->_membershipBlock['is_separate_payment'] ?? NULL) == 0)
-              ) {
-                $this->_values['amount'] = $priceOptions[$selectedPriceOptionID]['amount'] ?? NULL;
-              }
-              $this->_values[$selectedPriceOptionID]['value'] = $priceOptions[$selectedPriceOptionID]['amount'] ?? NULL;
-              $this->_values[$selectedPriceOptionID]['label'] = $priceOptions[$selectedPriceOptionID]['label'] ?? NULL;
-              $this->_values[$selectedPriceOptionID]['amount_id'] = $priceOptions[$selectedPriceOptionID]['id'] ?? NULL;
-              $this->_values[$selectedPriceOptionID]['weight'] = $priceOptions[$selectedPriceOptionID]['weight'] ?? NULL;
               break;
 
             case 'other_amount':
+              // Only used now when deciding whether to assign
+              // amount_level to the template in subsequent screens.
               $params['amount_other'] = $selectedPriceOptionID;
               break;
           }
         }
       }
     }
-    $balance = $this->getContributionBalance();
-    if ($balance) {
-      $params['amount'] = $balance;
-    }
-    else {
-      // from here on down, $params['amount'] holds a monetary value (or null) rather than an option ID
-      $params['amount'] = $this->computeAmount($params, $this->_values);
-    }
-
-    $params['separate_amount'] = $params['amount'];
-    // @todo - stepping through the code indicates that amount is always set before this point so it never matters.
-    // Move more of the above into this function...
-    $params['amount'] = $this->getMainContributionAmount($params);
-    //If the membership & contribution is used in contribution page & not separate payment
-    $memPresent = $membershipLabel = $fieldOption = NULL;
-    $proceFieldAmount = 0;
-    if (property_exists($this, '_separateMembershipPayment') && $this->_separateMembershipPayment == 0) {
-      if ($this->isQuickConfig()) {
-        foreach ($this->_priceSet['fields'] as $fieldKey => $fieldVal) {
-          if ($fieldVal['name'] == 'membership_amount' && !empty($params['price_' . $fieldKey])) {
-            $fieldId = $fieldVal['id'];
-            $fieldOption = $params['price_' . $fieldId];
-            $proceFieldAmount += $fieldVal['options'][$this->_submitValues['price_' . $fieldId]]['amount'];
-            $memPresent = TRUE;
-          }
-          else {
-            if (!empty($params['price_' . $fieldKey]) && $memPresent && ($fieldVal['name'] == 'other_amount' || $fieldVal['name'] == 'contribution_amount')) {
-              $fieldId = $fieldVal['id'];
-              if ($fieldVal['name'] == 'other_amount') {
-                $proceFieldAmount += $this->_submitValues['price_' . $fieldId];
-              }
-              elseif ($fieldVal['name'] == 'contribution_amount' && $this->_submitValues['price_' . $fieldId] > 0) {
-                $proceFieldAmount += $fieldVal['options'][$this->_submitValues['price_' . $fieldId]]['amount'];
-              }
-              unset($params['price_' . $fieldId]);
-              break;
-            }
-          }
-        }
-      }
-    }
-
-    if (!isset($params['amount_other'])) {
-      $this->set('amount_level', CRM_Utils_Array::value('amount_level', $params));
-    }
 
-    $priceSetID = $this->getPriceSetID();
+    $params['amount'] = $this->getMainContributionAmount();
+    $this->set('amount_level', $this->order->getAmountLevel());
     if (!empty($this->_ccid)) {
+      // @todo - verify that this is the same as `$this->>getLineItems()` which it should be & consolidate
       $this->set('lineItem', [$this->getPriceSetID() => $this->getExistingContributionLineItems()]);
     }
-    elseif ($priceSetID) {
-      $lineItem = [];
-      if ($this->isQuickConfig()) {
-        foreach ($this->_values['fee'] as $key => & $val) {
-          if ($val['name'] == 'other_amount' && $val['html_type'] == 'Text' && !empty($params['price_' . $key])) {
-            // Clean out any currency symbols.
-            $params['price_' . $key] = CRM_Utils_Rule::cleanMoney($params['price_' . $key]);
-            if ($params['price_' . $key] != 0) {
-              foreach ($val['options'] as $optionKey => & $options) {
-                $options['amount'] = $params['price_' . $key] ?? NULL;
-                break;
-              }
-            }
-            $params['price_' . $key] = 1;
-            break;
-          }
-        }
-      }
-
+    else {
       if ($this->_membershipBlock) {
-        $this->processAmountAndGetAutoRenew($this->_values['fee'], $params, $lineItem[$priceSetID]);
-      }
-      else {
-        CRM_Price_BAO_PriceSet::processAmount($this->_values['fee'], $params, $lineItem[$priceSetID], $priceSetID);
-      }
-
-      if ($proceFieldAmount) {
-        $lineItem[$priceSetID][$fieldOption]['unit_price'] = $proceFieldAmount;
-        $lineItem[$priceSetID][$fieldOption]['line_total'] = $proceFieldAmount;
-        if (isset($lineItem[$priceSetID][$fieldOption]['tax_amount'])) {
-          $proceFieldAmount += $lineItem[$priceSetID][$fieldOption]['tax_amount'];
-        }
-        if (!$this->_membershipBlock['is_separate_payment']) {
-          //require when separate membership not used
-          $params['amount'] = $proceFieldAmount;
-        }
+        $this->processAmountAndGetAutoRenew($params);
       }
-      $this->set('lineItem', $lineItem);
+      $this->set('lineItem', [$this->getPriceSetID() => $this->getLineItems()]);
     }
 
     if ($params['amount'] != 0 && (($this->_values['is_pay_later'] &&
@@ -1347,13 +1257,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
 
     // Would be nice to someday understand the point of this set.
     $this->set('is_pay_later', $params['is_pay_later']);
-
-    if ($this->_membershipBlock && $this->_membershipBlock['is_separate_payment'] && !empty($params['separate_amount'])) {
-      $this->set('amount', $params['separate_amount']);
-    }
-    else {
-      $this->set('amount', $params['amount']);
-    }
+    $this->set('amount', $this->getMainContributionAmount());
 
     // generate and set an invoiceID for this transaction
     $invoiceID = md5(uniqid(rand(), TRUE));
@@ -1438,14 +1342,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
    * Set form variables if contribution ID is found
    */
   public function assignFormVariablesByContributionID(): void {
-    $dummyTitle = 0;
-    foreach ($this->_paymentProcessors as $pp) {
-      if ($pp['class_name'] === 'Payment_Dummy') {
-        $dummyTitle = $pp['name'];
-        break;
-      }
-    }
-    $this->assign('dummyTitle', $dummyTitle);
+    $this->assign('isPaymentOnExistingContribution', (bool) $this->getExistingContributionID());
     $this->assign('pendingAmount', $this->getContributionBalance());
     if (empty($this->getExistingContributionID())) {
       return;
@@ -1457,8 +1354,8 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
 
     $lineItems = $this->getExistingContributionLineItems();
     $this->assign('lineItem', [$this->getPriceSetID() => $lineItems]);
-    $this->assign('is_quick_config', $this->isQuickConfig());
     $this->assign('priceSetID', $this->getPriceSetID());
+    $this->assign('is_quick_config', $this->isQuickConfig());
   }
 
   /**
@@ -1880,4 +1777,109 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
     }
   }
 
+  /**
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  private function getExistingMemberships(): array {
+    if ($this->existingMemberships === NULL) {
+      $availableMembershipTypeIDs = $this->getAvailableMembershipTypeIDs();
+      if (!empty($availableMembershipTypeIDs)) {
+        $this->existingMemberships = (array) Membership::get(FALSE)
+          ->addSelect('*', 'membership_type_id.duration_unit:name')
+          ->addWhere('contact_id', '=', $this->_membershipContactID)
+          ->addWhere('membership_type_id', 'IN', $availableMembershipTypeIDs)
+          ->addWhere('status_id:name', 'NOT IN', ['Cancelled', 'Pending'])
+          ->addWhere('is_test', '=', $this->isTest())
+          ->addOrderBy('end_date', 'DESC')
+          ->execute();
+      }
+    }
+    return $this->existingMemberships ?? [];
+  }
+
+  /**
+   * Get the membership type IDs available in the price set.
+   *
+   * @return array
+   * @throws \CRM_Core_Exception
+   */
+  private function getAvailableMembershipTypeIDs(): array {
+    $membershipTypeIDs = [];
+    foreach ($this->getMembershipLineItems() as $lineItem) {
+      $membershipTypeIDs[$lineItem['membership_type_id']] = $lineItem['membership_type_id'];
+    }
+    return $membershipTypeIDs;
+  }
+
+  /**
+   * @return int
+   */
+  private function getAutoRenewOption(): int {
+    $autoRenewOption = 0;
+    foreach ($this->getPriceFieldMetaData() as $field) {
+      foreach ($field['options'] as $option) {
+        if ($option['membership_type_id.auto_renew'] === 1) {
+          $autoRenewOption = 1;
+          break 2;
+        }
+        if ($option['membership_type_id.auto_renew'] === 2) {
+          $autoRenewOption = 2;
+        }
+      }
+    }
+    return $autoRenewOption;
+  }
+
+  /**
+   * Get configured auto renew option.
+   *
+   * One of
+   * 0 = never
+   * 1 = optional
+   * 2 - always
+   *
+   * This is based on the membership type but 1 can be moved up or down by membership block configuration.
+   *
+   * @param int $membershipTypeID
+   *
+   * @return int
+   * @throws \CRM_Core_Exception
+   */
+  private function getConfiguredAutoRenewOptionForMembershipType($membershipTypeID): int {
+    if (!$this->isPageHasPaymentProcessorSupportForRecurring()) {
+      return 0;
+    }
+    if (!$this->isQuickConfig()) {
+      return CRM_Member_BAO_MembershipType::getMembershipType($membershipTypeID)['auto_renew'];
+    }
+    $membershipTypeAutoRenewOption = CRM_Member_BAO_MembershipType::getMembershipType($membershipTypeID)['auto_renew'];
+    if ($membershipTypeAutoRenewOption === 2 || $membershipTypeAutoRenewOption === 0) {
+      // It is not possible to override never or always at the membership block leve.
+      return $membershipTypeAutoRenewOption;
+    }
+    // For quick config it is possible to override the give option membership type setting in the membership block.
+    return $this->_membershipBlock['auto_renew'][$membershipTypeID] ?? $membershipTypeAutoRenewOption;
+  }
+
+  /**
+   * Is there payment processor support for recurring contributions on the the contribution page.
+   *
+   * As our front end js is not clever enough to deal with switching this returns FALSE
+   * if any configured processor will not do recurring.
+   *
+   * @return bool
+   */
+  private function isPageHasPaymentProcessorSupportForRecurring(): bool {
+    if (is_array($this->_paymentProcessors)) {
+      foreach ($this->_paymentProcessors as $id => $val) {
+        if ($id && !$val['is_recur']) {
+          return FALSE;
+        }
+      }
+    }
+    return TRUE;
+  }
+
 }
diff --git a/civicrm/CRM/Contribute/Form/Contribution/ThankYou.php b/civicrm/CRM/Contribute/Form/Contribution/ThankYou.php
index 9c0a93bccf5c7d61cc24216f2c36b6172b2ce21c..2a146f154c3d8c8748fb03fd4f04b61f11459643 100644
--- a/civicrm/CRM/Contribute/Form/Contribution/ThankYou.php
+++ b/civicrm/CRM/Contribute/Form/Contribution/ThankYou.php
@@ -36,18 +36,29 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
 
   /**
    * Set variables up before form is built.
+   *
+   * @throws \CRM_Contribute_Exception_InactiveContributionPageException
    */
-  public function preProcess() {
+  public function preProcess(): void {
     parent::preProcess();
 
     $this->_params = $this->get('params');
-    $this->_lineItem = $this->get('lineItem');
     $this->_useForMember = $this->get('useForMember');
     $this->assign('thankyou_title', CRM_Utils_Array::value('thankyou_title', $this->_values));
     $this->assign('thankyou_text', CRM_Utils_Array::value('thankyou_text', $this->_values));
     $this->assign('thankyou_footer', CRM_Utils_Array::value('thankyou_footer', $this->_values));
     $this->assign('max_reminders', CRM_Utils_Array::value('max_reminders', $this->_values));
     $this->assign('initial_reminder_day', CRM_Utils_Array::value('initial_reminder_day', $this->_values));
+    $this->assignTotalAmounts();
+    // Link (button) for users to create their own Personal Campaign page
+    if ($linkText = CRM_PCP_BAO_PCP::getPcpBlockStatus($this->getContributionPageID(), 'contribute')) {
+      $linkTextUrl = CRM_Utils_System::url('civicrm/contribute/campaign',
+        'action=add&reset=1&pageId=' . $this->getContributionPageID() . '&component=contribute',
+        FALSE, NULL, TRUE
+      );
+    }
+    $this->assign('linkTextUrl', $linkTextUrl ?? NULL);
+    $this->assign('linkText', $linkText);
     $this->setTitle(CRM_Utils_Array::value('thankyou_title', $this->_values));
     // Make the contributionPageID available to the template
     $this->assign('contributionPageID', $this->_id);
@@ -58,7 +69,7 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
     if ($this->_params['is_pay_later']) {
       $this->assign('pay_later_receipt', $this->_values['pay_later_receipt']);
     }
-    $this->assign('is_for_organization', CRM_Utils_Array::value('is_for_organization', $this->_params));
+    $this->assign('is_for_organization', $this->_params['is_for_organization'] ?? NULL);
   }
 
   /**
@@ -85,52 +96,34 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
     // FIXME: Some of this code is identical to Confirm.php and should be broken out into a shared function
     $this->assignToTemplate();
     $this->_ccid = $this->get('ccid');
-    $productID = $this->get('productID');
     $option = $this->get('option');
     $membershipTypeID = $this->get('membershipTypeID');
     $this->assign('receiptFromEmail', CRM_Utils_Array::value('receipt_from_email', $this->_values));
 
-    if ($productID) {
-      CRM_Contribute_BAO_Premium::buildPremiumBlock($this, $this->_id, FALSE, $productID, $option);
+    if ($this->getProductID()) {
+      $this->buildPremiumsBlock(FALSE, $option);
+    }
+    else {
+      $this->assign('products');
     }
 
     $params = $this->_params;
-    $invoicing = CRM_Invoicing_Utils::isInvoicingEnabled();
-    // Make a copy of line items array to use for display only
-    $tplLineItems = $this->_lineItem;
-    if ($invoicing) {
-      $getTaxDetails = FALSE;
-      foreach ($this->_lineItem as $key => $value) {
-        foreach ($value as $k => $v) {
-          if (isset($v['tax_rate'])) {
-            if ($v['tax_rate'] != '') {
-              $getTaxDetails = TRUE;
-              // Cast to float to display without trailing zero decimals
-              $tplLineItems[$key][$k]['tax_rate'] = (float) $v['tax_rate'];
-            }
-          }
-        }
-      }
-    }
     $this->assign('getTaxDetails', (bool) $this->order->getTotalTaxAmount());
     $this->assign('totalTaxAmount', $this->order->getTotalTaxAmount());
     $this->assign('taxTerm', \Civi::settings()->get('tax_term'));
-
-    if ($this->_priceSetId && !CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_priceSetId, 'is_quick_config')) {
-      $this->assign('lineItem', $tplLineItems);
-    }
-    else {
+    $this->assign('lineItem', $this->isQuickConfig() ? NULL : [$this->getPriceSetID() => $this->order->getLineItems()]);
+    if (!$this->isQuickConfig()) {
       if (is_array($membershipTypeID)) {
         $membershipTypeID = current($membershipTypeID);
       }
-      $this->assign('is_quick_config', 1);
       $this->_params['is_quick_config'] = 1;
     }
-    $this->assign('priceSetID', $this->_priceSetId);
+    $this->assign('is_quick_config', $this->isQuickConfig());
+    $this->assign('priceSetID', $this->getPriceSetID());
     $this->assign('useForMember', $this->get('useForMember'));
 
     if (!empty($this->_values['honoree_profile_id']) && !empty($params['soft_credit_type_id'])) {
-      $softCreditTypes = CRM_Core_OptionGroup::values("soft_credit_type", FALSE);
+      $softCreditTypes = CRM_Core_OptionGroup::values('soft_credit_type', FALSE);
 
       $this->assign('soft_credit_type', $softCreditTypes[$params['soft_credit_type_id']]);
       CRM_Contribute_BAO_ContributionSoft::formatHonoreeProfileFields($this, $params['honor']);
@@ -139,12 +132,15 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
       $fieldTypes[] = CRM_Core_BAO_UFGroup::getContactType($this->_values['honoree_profile_id']);
       $this->buildCustom($this->_values['honoree_profile_id'], 'honoreeProfileFields', TRUE, 'honor', $fieldTypes);
     }
+    else {
+      $this->assign('honoreeProfileFields');
+    }
 
     $qParams = "reset=1&amp;id={$this->_id}";
     //pcp elements
+    $this->assign('pcpBlock', FALSE);
     if ($this->_pcpId) {
       $qParams .= "&amp;pcpId={$this->_pcpId}";
-      $this->assign('pcpBlock', FALSE);
 
       // display honor roll data only if it's enabled for the PCP page
       if (!empty($this->_pcpInfo['is_honor_roll'])) {
@@ -163,19 +159,17 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
     }
 
     $this->assign('qParams', $qParams);
-
+    $this->assign('membershipBlock', $this->_membershipBlock);
+    $this->assign('membership_trx_id', $this->get('membership_trx_id'));
     if ($membershipTypeID) {
-      $transactionID = $this->get('membership_trx_id');
       $membershipAmount = $this->get('membership_amount');
       $renewalMode = $this->get('renewal_mode');
-      $this->assign('membership_trx_id', $transactionID);
       $this->assign('membership_amount', $membershipAmount);
       $this->assign('renewal_mode', $renewalMode);
 
       $this->buildMembershipBlock(
         $this->_membershipContactID,
-        $membershipTypeID,
-        NULL
+        $membershipTypeID
       );
 
       if (!empty($params['auto_renew'])) {
@@ -184,7 +178,7 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
     }
 
     $this->_separateMembershipPayment = $this->get('separateMembershipPayment');
-    $this->assign("is_separate_payment", $this->_separateMembershipPayment);
+    $this->assign('is_separate_payment', $this->_separateMembershipPayment);
 
     if (empty($this->_ccid)) {
       $this->buildCustom($this->_values['custom_pre_id'], 'customPre', TRUE);
@@ -208,6 +202,9 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
 
       $this->buildCustom($this->_values['onbehalf_profile_id'], 'onbehalfProfile', TRUE, 'onbehalf', $fieldTypes);
     }
+    else {
+      $this->assign('onbehalfProfile');
+    }
 
     $this->_trxnId = $this->_params['trxn_id'] ?? NULL;
 
@@ -220,7 +217,7 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
     $defaults = [];
     $fields = [];
     foreach ($this->_fields as $name => $dontCare) {
-      if ($name != 'onbehalf' || $name != 'honor') {
+      if ($name !== 'onbehalf' || $name !== 'honor') {
         $fields[$name] = 1;
       }
     }
@@ -269,15 +266,18 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
       $subUrl = "eid={$this->_id}&pcomponent=contribute";
       $tellAFriend = TRUE;
     }
+    else {
+      $this->assign('friendText');
+    }
 
     if ($tellAFriend) {
       if ($this->_action & CRM_Core_Action::PREVIEW) {
-        $url = CRM_Utils_System::url("civicrm/friend",
+        $url = CRM_Utils_System::url('civicrm/friend',
           "reset=1&action=preview&{$subUrl}"
         );
       }
       else {
-        $url = CRM_Utils_System::url("civicrm/friend",
+        $url = CRM_Utils_System::url('civicrm/friend',
           "reset=1&{$subUrl}"
         );
       }
@@ -285,6 +285,7 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
     }
 
     $this->assign('isPendingOutcome', $this->isPendingOutcome($params));
+    $this->assign('paymentProcessorName', $this->getPaymentProcessorValue('frontend_title'));
     $this->freeze();
 
     // can we blow away the session now to prevent hackery
@@ -301,17 +302,15 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
    *   Contact checked for having a current membership for a particular membership.
    * @param int|array $selectedMembershipTypeID
    *   Selected membership id.
-   * @param null $isTest
    *
    * @return bool
    *   Is this a separate membership payment
    *
    * @throws \CRM_Core_Exception
    */
-  private function buildMembershipBlock($cid, $selectedMembershipTypeID = NULL, $isTest = NULL) {
+  private function buildMembershipBlock($cid, $selectedMembershipTypeID = NULL) {
     $separateMembershipPayment = FALSE;
     if ($this->_membershipBlock) {
-      $this->_currentMemberships = [];
 
       $membershipTypeIds = $membershipTypes = [];
       $membershipPriceset = (!empty($this->_priceSetId) && $this->_useForMember);
@@ -338,19 +337,7 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
       }
 
       if (!empty($membershipTypeIds)) {
-        //set status message if wrong membershipType is included in membershipBlock
-        if ($this->getRenewalMembershipID() && !$membershipPriceset) {
-          $membershipTypeID = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_Membership',
-            $this->getRenewalMembershipID(),
-            'membership_type_id'
-          );
-          if (!in_array($membershipTypeID, $membershipTypeIds)) {
-            CRM_Core_Session::setStatus(ts("Oops. The membership you're trying to renew appears to be invalid. Contact your site administrator if you need assistance. If you continue, you will be issued a new membership."), ts('Invalid Membership'), 'error');
-          }
-        }
-
         $membershipTypeValues = CRM_Member_BAO_Membership::buildMembershipTypeValues($this, $membershipTypeIds);
-        $this->_membershipTypeValues = $membershipTypeValues;
         $endDate = NULL;
 
         // Check if we support auto-renew on this contribution page
@@ -392,14 +379,16 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
                 ->addWhere('contact_id', '=', $cid)
                 ->addWhere('membership_type_id', '=', $memType['id'])
                 ->addWhere('status_id:name', 'NOT IN', ['Cancelled', 'Pending'])
-                ->addWhere('is_test', '=', (bool) $isTest)
+                // @todo - this FALSE is dubious but respects the previous code behaviour.
+                // This code is from a previously shared function & likely not relevant on the
+                // thank you form anyway....
+                ->addWhere('is_test', '=', FALSE)
                 ->addOrderBy('end_date', 'DESC')
                 ->execute()
                 ->first();
 
               if ($membership && $membership['membership_type_id.duration_unit:name'] !== 'lifetime') {
                 $this->assign('renewal_mode', TRUE);
-                $this->_currentMemberships[$membership['membership_type_id']] = $membership['membership_type_id'];
                 $memType['current_membership'] = $membership['end_date'];
                 if (!$endDate) {
                   $endDate = $memType['current_membership'];
@@ -414,7 +403,6 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont
         }
       }
 
-      $this->assign('membershipBlock', $this->_membershipBlock);
       $this->assign('showRadio', FALSE);
       $this->assign('membershipTypes', $membershipTypes);
       $this->assign('autoRenewMembershipTypeOptions', json_encode($autoRenewMembershipTypeOptions));
diff --git a/civicrm/CRM/Contribute/Form/ContributionBase.php b/civicrm/CRM/Contribute/Form/ContributionBase.php
index 31b76b29f8c42e44bccdc58c6d525047ee0c3266..1040711c7237e7a2bb6318e11a92b4a64b9cbf1d 100644
--- a/civicrm/CRM/Contribute/Form/ContributionBase.php
+++ b/civicrm/CRM/Contribute/Form/ContributionBase.php
@@ -15,6 +15,7 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Api4\PremiumsProduct;
 use Civi\Api4\PriceSet;
 
 /**
@@ -23,6 +24,7 @@ use Civi\Api4\PriceSet;
 class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
   use CRM_Financial_Form_FrontEndPaymentFormTrait;
   use CRM_Contribute_Form_ContributeFormTrait;
+  use CRM_Financial_Form_PaymentProcessorFormTrait;
 
   /**
    * The id of the contribution page that we are processing.
@@ -60,8 +62,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
    */
   public $_paymentProcessor;
 
-  public $_paymentObject = NULL;
-
   /**
    * Order object, used to calculate amounts, line items etc.
    *
@@ -166,22 +166,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
 
   public $_action;
 
-  /**
-   * Contribution mode.
-   *
-   * In general we are trying to deprecate this parameter but some templates and processors still
-   * require it to denote whether the processor redirects offsite (notify) or not.
-   *
-   * The intent is that this knowledge should not be required and all contributions should
-   * be created in a pending state and updated based on the payment result without needing to be
-   * aware of the processor workings.
-   *
-   * @var string
-   *
-   * @deprecated
-   */
-  public $_contributeMode;
-
   /**
    * Contribution page supports memberships
    * @var bool
@@ -244,6 +228,53 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
     return $this->getPriceSetID() && CRM_Price_BAO_PriceSet::isQuickConfig($this->getPriceSetID());
   }
 
+  /**
+   * Provide support for extensions that are used to being able to retrieve _lineItem
+   *
+   * Note extension should call getPriceSetID() and getLineItems() directly.
+   * They are supported for external use per the api annotation.
+   *
+   * @param string $name
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   */
+  public function __get($name) {
+    if ($name === '_lineItem') {
+      CRM_Core_Error::deprecatedWarning('attempt to access undefined property _lineItem - use externally supported function getLineItems()');
+      return [$this->getPriceSetID() => $this->getLineItems()];
+    }
+    CRM_Core_Error::deprecatedWarning('attempt to access invalid property :' . $name);
+  }
+
+  /**
+   * Provide support for extensions that are used to being able to retrieve _lineItem
+   *
+   * Note extension should call getPriceSetID() and getLineItems() directly.
+   * They are supported for external use per the api annotation.
+   *
+   * @param string $name
+   * @param mixed $value
+   */
+  public function __set($name, $value) {
+    if ($name === '_lineItem') {
+      CRM_Core_Error::deprecatedWarning('attempt to access undefined property _lineItem - use externally supported function setLineItems()');
+      $this->order->setLineItems($value[$this->getPriceSetID()]);
+      return;
+    }
+    CRM_Core_Error::deprecatedWarning('attempt to set invalid property :' . $name);
+  }
+
+  /**
+   * Is the form being submitted in test mode.
+   *
+   * @api this function is supported for external use.
+   *
+   * @return bool
+   */
+  public function isTest(): bool {
+    return (bool) ($this->getAction() & CRM_Core_Action::PREVIEW);
+  }
+
   /**
    * Get the price set for the contribution page.
    *
@@ -253,6 +284,10 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
    *
    * Out of caution we still allow `get`, `set` to take precedence.
    *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   *
    * @return int|null
    * @throws \CRM_Core_Exception
    */
@@ -322,46 +357,9 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
     $this->_emailExists = $this->get('emailExists');
 
     $this->_contactID = $this->_membershipContactID = $this->getContactID();
-    $this->getRenewalMembershipID();
 
     if ($this->getRenewalMembershipID()) {
-      $membership = new CRM_Member_DAO_Membership();
-      $membership->id = $this->getRenewalMembershipID();
-
-      if ($membership->find(TRUE)) {
-        $this->_defaultMemTypeId = $membership->membership_type_id;
-        if ($membership->contact_id != $this->_contactID) {
-          $validMembership = FALSE;
-          $organizations = CRM_Contact_BAO_Relationship::getPermissionedContacts($this->getAuthenticatedContactID(), NULL, NULL, 'Organization');
-          if (!empty($organizations) && array_key_exists($membership->contact_id, $organizations)) {
-            $this->_membershipContactID = $membership->contact_id;
-            $this->assign('membershipContactID', $this->_membershipContactID);
-            $this->assign('membershipContactName', $organizations[$this->_membershipContactID]['name']);
-            $validMembership = TRUE;
-          }
-          else {
-            $membershipType = new CRM_Member_BAO_MembershipType();
-            $membershipType->id = $membership->membership_type_id;
-            if ($membershipType->find(TRUE)) {
-              // CRM-14051 - membership_type.relationship_type_id is a CTRL-A padded string w one or more ID values.
-              // Convert to comma separated list.
-              $inheritedRelTypes = implode(',', CRM_Utils_Array::explodePadded($membershipType->relationship_type_id));
-              $permContacts = CRM_Contact_BAO_Relationship::getPermissionedContacts($this->getAuthenticatedContactID(), $membershipType->relationship_type_id);
-              if (array_key_exists($membership->contact_id, $permContacts)) {
-                $this->_membershipContactID = $membership->contact_id;
-                $validMembership = TRUE;
-              }
-            }
-          }
-          if (!$validMembership) {
-            CRM_Core_Session::setStatus(ts("Oops. The membership you're trying to renew appears to be invalid. Contact your site administrator if you need assistance. If you continue, you will be issued a new membership."), ts('Membership Invalid'), 'alert');
-          }
-        }
-      }
-      else {
-        CRM_Core_Session::setStatus(ts("Oops. The membership you're trying to renew appears to be invalid. Contact your site administrator if you need assistance. If you continue, you will be issued a new membership."), ts('Membership Invalid'), 'alert');
-      }
-      unset($membership);
+      $this->defineRenewalMembership();
     }
 
     // we do not want to display recently viewed items, so turn off
@@ -382,10 +380,7 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
     // In tests price set id is not always set - it is unclear if this is just
     // poor test set up or it is possible in 'the real world'
     if ($this->getPriceSetID()) {
-      $this->order = new CRM_Financial_BAO_Order();
-      $this->order->setPriceSetID($this->getPriceSetID());
-      $this->order->setIsExcludeExpiredFields(TRUE);
-      $this->order->setPriceSelectionFromUnfilteredInput($this->getSubmittedValues());
+      $this->initializeOrder();
     }
     else {
       CRM_Core_Error::deprecatedFunctionWarning('forms require a price set ID');
@@ -489,16 +484,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
       $this->_pcpInfo = $pcp['pcpInfo'];
     }
 
-    // Link (button) for users to create their own Personal Campaign page
-    if ($linkText = CRM_PCP_BAO_PCP::getPcpBlockStatus($this->_id, 'contribute')) {
-      $linkTextUrl = CRM_Utils_System::url('civicrm/contribute/campaign',
-        "action=add&reset=1&pageId={$this->_id}&component=contribute",
-        FALSE, NULL, TRUE
-      );
-      $this->assign('linkTextUrl', $linkTextUrl);
-      $this->assign('linkText', $linkText);
-    }
-
     $this->assign('pledgeBlock', !empty($this->_values['pledge_block_id']));
 
     // @todo - move this check to `getMembershipBlock`
@@ -512,8 +497,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
     // on every form, rather than being passed from form to form.
     $this->set('amount_block_is_active', $this->isFormSupportsNonMembershipContributions());
 
-    $this->_contributeMode = $this->get('contributeMode');
-
     //assigning is_monetary and is_email_receipt to template
     $this->assign('is_monetary', $this->_values['is_monetary']);
     $this->assign('is_email_receipt', $this->_values['is_email_receipt']);
@@ -549,6 +532,118 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
     }
   }
 
+  /**
+   * Set the selected line items.
+   *
+   * This returns all selected line items, even if they will
+   * be split to a secondary contribution.
+   *
+   * @api Supported for external use.
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function getLineItems(): array {
+    return $this->order->getLineItems();
+  }
+
+  /**
+   * Set the selected line items.
+   *
+   * This returns all selected line items, even if they will
+   * be split to a secondary contribution.
+   *
+   * @api Supported for external use.
+   */
+  public function setLineItems($lineItems): void {
+    $this->order->setLineItems($lineItems);
+    $this->set('_lineItem', $lineItems);
+  }
+
+  /**
+   * Set the selected line items.
+   *
+   * @internal
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getMainContributionLineItems(): array {
+    $membershipLineItems = $this->getSecondaryMembershipContributionLineItems();
+    $allLineItems = $this->getOrder()->getLineItems();
+    if (!$membershipLineItems || $allLineItems === $membershipLineItems) {
+      return $allLineItems;
+    }
+    $mainContributionLineItems = [];
+    foreach ($allLineItems as $index => $lineItem) {
+      if (empty($lineItem['membership_type_id'])) {
+        $mainContributionLineItems[$index] = $lineItem;
+      }
+    }
+    return $mainContributionLineItems;
+  }
+
+  /**
+   * Is the form separate payment AND has the user selected 2 options,
+   * resulting in 2 payments.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function isSeparatePaymentSelected(): bool {
+    return (bool) $this->getSecondaryMembershipContributionLineItems();
+  }
+
+  /**
+   * Set the line items for the secondary membership contribution.
+   *
+   * Return false if the page is not configured for separate contributions,
+   * or if only the membership or the contribution has been selected.
+   *
+   * @internal
+   *
+   * @return array|false
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getSecondaryMembershipContributionLineItems() {
+    if (!$this->isSeparateMembershipPayment()) {
+      return FALSE;
+    }
+    $lineItems = [];
+    foreach ($this->getLineItems() as $index => $lineItem) {
+      if (!empty($lineItem['membership_type_id'])) {
+        $lineItems[$index] = $lineItem;
+      }
+    }
+    if (empty($lineItems) || count($lineItems) === count($this->getLineItems())) {
+      return FALSE;
+    }
+    return $lineItems;
+  }
+
+  /**
+   * Get membership line items.
+   *
+   * Get all line items relating to membership, regardless of primary or secondary membership.
+   *
+   * @internal
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getMembershipLineItems(): array {
+    $lineItems = [];
+    foreach ($this->getLineItems() as $index => $lineItem) {
+      if (!empty($lineItem['membership_type_id'])) {
+        $lineItems[$index] = $lineItem;
+      }
+    }
+    return $lineItems;
+  }
+
   /**
    * Initiate price set such that various non-BAO things are set on the form.
    *
@@ -616,67 +711,34 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
    */
   public function assignToTemplate() {
     $this->set('name', $this->assignBillingName($this->_params));
-
-    $this->assign('paymentProcessor', $this->_paymentProcessor);
-    $vars = [
-      'amount',
-      'currencyID',
-      'credit_card_type',
-      'trxn_id',
-      'amount_level',
-    ];
-
-    if (isset($this->_values['is_recur']) && !empty($this->_paymentProcessor['is_recur'])) {
-      $this->assign('is_recur_enabled', 1);
-      $vars = array_merge($vars, [
-        'is_recur',
-        'frequency_interval',
-        'frequency_unit',
-        'installments',
-      ]);
-    }
-
-    if (CRM_Core_Component::isEnabled('CiviPledge') &&
-      !empty($this->_params['is_pledge'])
-    ) {
-      // TODO: Assigned variable appears to be unused
-      $this->assign('pledge_enabled', 1);
-
-      $vars = array_merge($vars, [
-        'is_pledge',
-        'pledge_frequency_interval',
-        'pledge_frequency_unit',
-        'pledge_installments',
-      ]);
-    }
-
-    // @todo - stop setting amount level in this function & call the CRM_Price_BAO_PriceSet::getAmountLevel
-    // function to get correct amount level consistently. Remove setting of the amount level in
-    // CRM_Price_BAO_PriceSet::processAmount. Extend the unit tests in CRM_Price_BAO_PriceSetTest
-    // to cover all variants.
-    if (isset($this->_params['amount_other']) || isset($this->_params['selectMembership'])) {
-      $this->_params['amount_level'] = '';
-    }
-
-    foreach ($vars as $v) {
-      if (isset($this->_params[$v])) {
-        if ($v == "amount" && $this->_params[$v] === 0) {
-          $this->_params[$v] = CRM_Utils_Money::format($this->_params[$v], NULL, NULL, TRUE);
-        }
-        $this->assign($v, $this->_params[$v]);
-      }
-    }
-
-    $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters(
-      $this->_params,
-      $this->_bltID
-    ));
-
-    if (!empty($this->_params['onbehalf_profile_id']) && !empty($this->_params['onbehalf'])) {
+    $this->assign('currencyID', $this->_params['currencyID'] ?? NULL);
+    $this->assign('credit_card_type', $this->_params['credit_card_type'] ?? NULL);
+    $this->assign('trxn_id', $this->_params['trxn_id'] ?? NULL);
+    $this->assign('amount_level', $this->order->getAmountLevel());
+    $this->assign('amount', $this->getMainContributionAmount() > 0 ? CRM_Utils_Money::format($this->getMainContributionAmount(), NULL, NULL, TRUE) : NULL);
+
+    $isRecurEnabled = isset($this->_values['is_recur']) && !empty($this->_paymentProcessor['is_recur']);
+    $this->assign('is_recur_enabled', $isRecurEnabled);
+    $this->assign('is_recur', $isRecurEnabled ? ($this->_params['is_recur'] ?? NULL) : NULL);
+    $this->assign('frequency_interval', $isRecurEnabled ? ($this->_params['frequency_interval'] ?? NULL) : NULL);
+    $this->assign('frequency_unit', $isRecurEnabled ? ($this->_params['frequency_unit'] ?? NULL) : NULL);
+    $this->assign('installments', $isRecurEnabled ? ($this->_params['installments'] ?? NULL) : NULL);
+    $isPledgeEnabled = CRM_Core_Component::isEnabled('CiviPledge') && !empty($this->_params['is_pledge']);
+    // @todo Assigned pledge_enabled variable appears to be unused
+    $this->assign('pledge_enabled', $isPledgeEnabled);
+    $this->assign('is_pledge', $isPledgeEnabled ? ($this->_params['is_pledge'] ?? NULL) : NULL);
+    $this->assign('pledge_frequency_interval', $isPledgeEnabled ? ($this->_params['pledge_frequency_interval'] ?? NULL) : NULL);
+    $this->assign('pledge_frequency_unit', $isPledgeEnabled ? ($this->_params['pledge_frequency_unit'] ?? NULL) : NULL);
+    $this->assign('pledge_installments', $isPledgeEnabled ? ($this->_params['pledge_installments'] ?? NULL) : NULL);
+    $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($this->_params));
+
+    $isDisplayOnBehalf = !empty($this->_params['onbehalf_profile_id']) && !empty($this->_params['onbehalf']);
+    if ($isDisplayOnBehalf) {
       $this->assign('onBehalfName', $this->_params['organization_name']);
       $locTypeId = array_keys($this->_params['onbehalf_location']['email']);
-      $this->assign('onBehalfEmail', $this->_params['onbehalf_location']['email'][$locTypeId[0]]['email']);
+      $onBehalfEmail = $this->_params['onbehalf_location']['email'][$locTypeId[0]]['email'] ?? NULL;
     }
+    $this->assign('onBehalfEmail', $onBehalfEmail ?? NULL);
     $this->assignPaymentFields();
     $this->assignEmailField();
     $this->assign('emailExists', $this->_emailExists);
@@ -850,6 +912,62 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
     $this->assign($name, $fields ?? NULL);
   }
 
+  /**
+   * Build Premium Block im Contribution Pages.
+   *
+   * @param bool $formItems
+   * @param string $selectedOption
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   */
+  protected function buildPremiumsBlock(bool $formItems = FALSE, $selectedOption = NULL): void {
+    $selectedProductID = $this->getProductID();
+    $this->add('hidden', 'selectProduct', $selectedProductID, ['id' => 'selectProduct']);
+    $premiumProducts = PremiumsProduct::get()
+      ->addSelect('product_id.*')
+      ->addSelect('product_id')
+      ->addSelect('premiums_id.*')
+      ->addWhere('product_id.is_active', '=', TRUE)
+      ->addWhere('premiums_id.entity_id', '=', $this->getContributionPageID())
+      ->addWhere('premiums_id.entity_table', '=', 'civicrm_contribution_page')
+      ->addOrderBy('weight')
+      ->execute();
+    $products = [];
+    $premium = [];
+    foreach ($premiumProducts as $premiumProduct) {
+      $product = ['options' => NULL];
+      foreach ($premiumProduct as $key => $value) {
+        if (str_starts_with($key, 'product_id.')) {
+          if ($key === 'product_id.options' && $selectedProductID === $product['id'] && $selectedOption) {
+            // In this case we are on the thank you or confirm page so assign
+            // the selected option to the page for display.
+            $product['options'] = ts('Selected Option') . ': ' . $selectedOption;
+          }
+          else {
+            $product[str_replace('product_id.', '', $key)] = $value;
+          }
+        }
+        if (str_starts_with($key, 'premiums_id.')) {
+          $premium[str_replace('premiums_id.', '', $key)] = $value;
+        }
+      }
+      $options = array_filter(explode(',', $product['options']));
+      $productOptions = [];
+      foreach ($options as $option) {
+        $optionValue = trim($option);
+        if ($optionValue) {
+          $productOptions[$optionValue] = $optionValue;
+        }
+      }
+      if (!empty($options)) {
+        $this->addElement('select', 'options_' . $product['id'], NULL, $productOptions);
+      }
+      $products[$premiumProduct['product_id']] = $product;
+    }
+    $this->assign('premiumBlock', $premium);
+    $this->assign('products', $products ?? NULL);
+  }
+
   /**
    * Assign payment field information to the template.
    *
@@ -858,7 +976,7 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
   public function assignPaymentFields() {
     //fix for CRM-3767
     $isMonetary = FALSE;
-    if ($this->_amount > 0.0) {
+    if ($this->order->getTotalAmount() > 0.0) {
       $isMonetary = TRUE;
     }
     elseif (!empty($this->_params['selectMembership'])) {
@@ -870,8 +988,8 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
 
     // The concept of contributeMode is deprecated.
     // The payment processor object can provide info about the fields it shows.
-    if ($isMonetary && $this->_paymentProcessor['object'] instanceof \CRM_Core_Payment) {
-      $paymentProcessorObject = $this->_paymentProcessor['object'];
+    if ($isMonetary) {
+      $paymentProcessorObject = $this->getPaymentProcessorObject();
       $this->assign('paymentAgreementTitle', $paymentProcessorObject->getText('agreementTitle', []));
       $this->assign('paymentAgreementText', $paymentProcessorObject->getText('agreementText', []));
       $paymentFields = $paymentProcessorObject->getPaymentFormFields();
@@ -902,9 +1020,8 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
         }
       }
       $this->assign('paymentFieldsetLabel', CRM_Core_Payment_Form::getPaymentLabel($paymentProcessorObject));
-      $this->assign('paymentFields', $paymentFields);
-
     }
+    $this->assign('paymentFields', $paymentFields ?? []);
   }
 
   /**
@@ -1026,30 +1143,33 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
       $priceFieldValue = $this->_params["price_{$priceFieldId}"];
     }
     $selectedMembershipTypeID = $this->_values['fee'][$priceFieldId]['options'][$priceFieldValue]['membership_type_id'] ?? NULL;
-    if (!$selectedMembershipTypeID) {
+    if (!$selectedMembershipTypeID || !$this->getPaymentProcessorValue('is_recur')) {
       return;
     }
 
     // Check if membership the selected membership is automatically opted into auto renew or give user the option.
     // In the 2nd case we check that the user has in deed opted in (auto renew as at June 22 is the field name for the membership auto renew checkbox)
     // Also check that the payment Processor used can support recurring contributions.
-    $membershipTypes = CRM_Price_BAO_PriceSet::getMembershipTypesFromPriceSet($this->getPriceSetID());
-    if (in_array($selectedMembershipTypeID, $membershipTypes['autorenew_required'])
-      || (in_array($selectedMembershipTypeID, $membershipTypes['autorenew_optional']) &&
-        !empty($this->_params['auto_renew']))
-        && !empty($this->_paymentProcessor['is_recur'])
+    $membershipTypeDetails = CRM_Member_BAO_MembershipType::getMembershipType($selectedMembershipTypeID);
+    if (
+      // 2 means required
+      $membershipTypeDetails['auto_renew'] === 2
+      // 1 means optional - so they must also select the check box on the form
+      || ($membershipTypeDetails['auto_renew'] === 1 && !empty($this->_params['auto_renew']))
     ) {
       $this->_params['auto_renew'] = TRUE;
       $this->_params['is_recur'] = $this->_values['is_recur'] = 1;
-      $membershipTypeDetails = \Civi\Api4\MembershipType::get(FALSE)
-        ->addWhere('id', '=', $selectedMembershipTypeID)
-        ->execute()
-        ->first();
-      $this->_params['frequency_interval'] = $this->_params['frequency_interval'] ?? $this->_values['fee'][$priceFieldId]['options'][$priceFieldValue]['membership_num_terms'];
-      $this->_params['frequency_unit'] = $this->_params['frequency_unit'] ?? $membershipTypeDetails['duration_unit'];
+      // If membership_num_terms is not specified on the the price field value (which seems not uncommon
+      // in default config) then the membership type provides the values.
+      // @todo - access the line item value from $this->getLineItems() rather than _values['fee']
+      $membershipNumTerms = $this->_values['fee'][$priceFieldId]['options'][$priceFieldValue]['membership_num_terms'] ?? 1;
+      $membershipDurationInterval = $membershipTypeDetails['duration_interval'] ?? 1;
+      $this->_params['frequency_interval'] = $this->getSubmittedValue('frequency_interval') ?? ($membershipNumTerms * $membershipDurationInterval);
+      $this->_params['frequency_unit'] = $this->getSubmittedValue('frequency_unit') ?? $membershipTypeDetails['duration_unit'];
     }
-    elseif (!$this->_separateMembershipPayment && (in_array($selectedMembershipTypeID, $membershipTypes['autorenew_required'])
-      || in_array($selectedMembershipTypeID, $membershipTypes['autorenew_optional']))) {
+    // This seems like it repeats the above with less care...
+    elseif (!$this->_separateMembershipPayment && ($membershipTypeDetails['auto_renew'] === 2
+      || $membershipTypeDetails['auto_renew'] === 1)) {
       // otherwise check if we have a separate membership payment setting as that will allow people to independently opt into recurring contributions and memberships
       // If we don't have that and the membership type is auto recur or opt into recur set is_recur to 0.
       $this->_params['is_recur'] = $this->_values['is_recur'] = 0;
@@ -1057,58 +1177,61 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
   }
 
   /**
-   * Get the payment processor object for the submission, returning the manual one for offline payments.
+   * Get the amount for the main contribution.
+   *
+   * If there is a separate membership contribution this is the 'other one'. Otherwise there
+   * is only one.
    *
-   * @return CRM_Core_Payment
+   * @return float
+   *
+   * @throws \CRM_Core_Exception
    */
-  protected function getPaymentProcessorObject() {
-    if (!empty($this->_paymentProcessor)) {
-      return $this->_paymentProcessor['object'];
+  protected function getMainContributionAmount(): float {
+    $amount = 0;
+    foreach ($this->getMainContributionLineItems() as $lineItem) {
+      // Line total inclusive should really be always set but this is a safe fall back.
+      $amount += $lineItem['line_total_inclusive'] ?? ($lineItem['line_total'] + $lineItem['tax_amount']);
     }
-    return new CRM_Core_Payment_Manual();
+    return $amount;
   }
 
   /**
-   * Get the amount for the main contribution.
-   *
-   * The goal is to expand this function so that all the argy-bargy of figuring out the amount
-   * winds up here as the main spaghetti shrinks.
+   * Get the amount level description for the main contribution.
    *
    * If there is a separate membership contribution this is the 'other one'. Otherwise there
    * is only one.
    *
-   * @param $params
-   *
-   * @return float
+   * @return string
    *
    * @throws \CRM_Core_Exception
    */
-  protected function getMainContributionAmount($params) {
-    if (!empty($params['selectMembership'])) {
-      if (empty($params['amount']) && !$this->_separateMembershipPayment) {
-        return CRM_Member_BAO_MembershipType::getMembershipType($params['selectMembership'])['minimum_fee'] ?? 0;
+  protected function getMainContributionAmountLevel(): string {
+    $amountLevel = [];
+    if ($this->getSecondaryMembershipContributionLineItems()) {
+      // This is really only needed transitionally because the
+      // test ConfirmTest::testSeparatePaymentConfirm has some set up configuration
+      // issues that will take a bit longer to work through (the labels
+      // should be Contribution Amount or Other Amount but in that test set up they are not.
+      return '';
+    }
+    foreach ($this->getMainContributionLineItems() as $lineItem) {
+      if ($lineItem['label'] !== ts('Contribution Amount') && $lineItem['label'] !== ts('Other Amount')) {
+        $amountLevel[] = $lineItem['label'] . ' - ' . (float) $lineItem['qty'];
       }
     }
-    return $params['amount'] ?? 0;
+    return empty($amountLevel) ? '' : CRM_Utils_Array::implodePadded($amountLevel);
   }
 
   /**
    * Wrapper for processAmount that also sets autorenew.
    *
-   * @param $fields
-   *   This is the output of the function CRM_Price_BAO_PriceSet::getSetDetail($priceSetID, FALSE, FALSE);
-   *   And, it would make sense to introduce caching into that function and call it from here rather than
-   *   require the $fields array which is passed from pillar to post around the form in order to pass it in here.
    * @param array $params
    *   Params reflecting form input e.g with fields 'price_5' => 7, 'price_8' => array(7, 8)
-   * @param $lineItems
-   *   Line item array to be altered.
    */
-  public function processAmountAndGetAutoRenew($fields, &$params, &$lineItems) {
-    CRM_Price_BAO_PriceSet::processAmount($fields, $params, $lineItems, $this->getPriceSetID());
+  public function processAmountAndGetAutoRenew(&$params) {
     $autoRenew = [];
     $autoRenew[0] = $autoRenew[1] = $autoRenew[2] = 0;
-    foreach ($lineItems as $lineItem) {
+    foreach ($this->getLineItems() as $lineItem) {
       if (!empty($lineItem['auto_renew']) &&
         is_numeric($lineItem['auto_renew'])
       ) {
@@ -1243,6 +1366,15 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
     return $this->_ccid ?: CRM_Utils_Request::retrieve('ccid', 'Positive', $this);
   }
 
+  /**
+   * @return int|bool
+   */
+  protected function getProductID() {
+    $productID = $this->getSubmittedValue('selectProduct') ? (int) $this->getSubmittedValue('selectProduct') : FALSE;
+    $this->set('productID', $productID);
+    return $productID;
+  }
+
   /**
    * Get the submitted value, accessing it from whatever form in the flow it is
    * submitted on.
@@ -1329,4 +1461,107 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
     return NULL;
   }
 
+  protected function getOrder(): CRM_Financial_BAO_Order {
+    if (!$this->order) {
+      $this->initializeOrder();
+    }
+    return $this->order;
+  }
+
+  protected function initializeOrder(): void {
+    $this->order = new CRM_Financial_BAO_Order();
+    $this->order->setPriceSetID($this->getPriceSetID());
+    $this->order->setIsExcludeExpiredFields(TRUE);
+    if ($this->get('lineItem')) {
+      $this->order->setLineItems($this->get('lineItem')[$this->getPriceSetID()]);
+    }
+    if ($this->getExistingContributionID()) {
+      $this->order->setTemplateContributionID($this->getExistingContributionID());
+    }
+    $this->order->setForm($this);
+    foreach ($this->getPriceFieldMetaData() as $priceField) {
+      if ($priceField['html_type'] === 'Text') {
+        $this->submittableMoneyFields[] = 'price_' . $priceField['id'];
+      }
+    }
+    $this->order->setPriceSelectionFromUnfilteredInput($this->getSubmittedValues());
+  }
+
+  protected function defineRenewalMembership(): void {
+    $membership = new CRM_Member_DAO_Membership();
+    $membership->id = $this->getRenewalMembershipID();
+
+    if ($membership->find(TRUE)) {
+      $this->_defaultMemTypeId = $membership->membership_type_id;
+      if ($membership->contact_id != $this->_contactID) {
+        $validMembership = FALSE;
+        $organizations = CRM_Contact_BAO_Relationship::getPermissionedContacts($this->getAuthenticatedContactID(), NULL, NULL, 'Organization');
+        if (!empty($organizations) && array_key_exists($membership->contact_id, $organizations)) {
+          $this->_membershipContactID = $membership->contact_id;
+          $this->assign('membershipContactID', $this->_membershipContactID);
+          $this->assign('membershipContactName', $organizations[$this->_membershipContactID]['name']);
+          $validMembership = TRUE;
+        }
+        else {
+          $membershipType = new CRM_Member_BAO_MembershipType();
+          $membershipType->id = $membership->membership_type_id;
+          if ($membershipType->find(TRUE)) {
+            // CRM-14051 - membership_type.relationship_type_id is a CTRL-A padded string w one or more ID values.
+            // Convert to comma separated list.
+            $inheritedRelTypes = implode(',', CRM_Utils_Array::explodePadded($membershipType->relationship_type_id));
+            $permContacts = CRM_Contact_BAO_Relationship::getPermissionedContacts($this->getAuthenticatedContactID(), $membershipType->relationship_type_id);
+            if (array_key_exists($membership->contact_id, $permContacts)) {
+              $this->_membershipContactID = $membership->contact_id;
+              $validMembership = TRUE;
+            }
+          }
+        }
+        if (!$validMembership) {
+          CRM_Core_Session::setStatus(ts("Oops. The membership you're trying to renew appears to be invalid. Contact your site administrator if you need assistance. If you continue, you will be issued a new membership."), ts('Membership Invalid'), 'alert');
+        }
+      }
+    }
+    else {
+      CRM_Core_Session::setStatus(ts("Oops. The membership you're trying to renew appears to be invalid. Contact your site administrator if you need assistance. If you continue, you will be issued a new membership."), ts('Membership Invalid'), 'alert');
+    }
+  }
+
+  /**
+   * Assign the total amounts for display on Confirm and ThankYou pages.
+   *
+   * These values are used in the separate payments section.
+   *
+   * @return void
+   * @throws \CRM_Core_Exception
+   */
+  protected function assignTotalAmounts(): void {
+    // orderTotal includes both payments, if separate.
+    $orderTotal = $this->getOrder() ? $this->order->getTotalAmount() : 0;
+    $membershipTotalAmount = $this->getOrder() ? $this->order->getMembershipTotalAmount() : 0;
+    $this->assign('orderTotal', $orderTotal);
+    $this->assign('membershipTotalAmount', $membershipTotalAmount);
+    $this->assign('nonMembershipTotalAmount', $orderTotal - $membershipTotalAmount);
+  }
+
+  /**
+   * Get the currency for the form.
+   *
+   * Rather historic - might have unneeded stuff
+   *
+   * @return string
+   */
+  public function getCurrency() {
+    $currency = $this->_values['currency'] ?? NULL;
+    // For event forms, currency is in a different spot
+    if (empty($currency)) {
+      $currency = CRM_Utils_Array::value('currency', CRM_Utils_Array::value('event', $this->_values));
+    }
+    if (empty($currency)) {
+      $currency = CRM_Utils_Request::retrieveValue('currency', 'String');
+    }
+    // @todo If empty there is a problem - we should probably put in a deprecation notice
+    // to warn if that seems to be happening.
+    return (string) $currency;
+  }
+
 }
diff --git a/civicrm/CRM/Contribute/Form/ContributionCharts.php b/civicrm/CRM/Contribute/Form/ContributionCharts.php
index 666546e0ca81c8ae0e5c2b6ae4ee4fc70e2779ea..892b9006f4b80918c83c776ebe4959aca6981864 100644
--- a/civicrm/CRM/Contribute/Form/ContributionCharts.php
+++ b/civicrm/CRM/Contribute/Form/ContributionCharts.php
@@ -172,13 +172,15 @@ class CRM_Contribute_Form_ContributionCharts extends CRM_Core_Form {
           $urlParams = "reset=1&force=1&status=1&start={$startDate}&end={$endDate}&test=0";
         }
         elseif ($chartKey == 'by_year') {
+          $year = substr($index, 0, 4);
+          $year = is_numeric($year) ? (int) $year : date('Y');
           if (!empty($config->fiscalYearStart) && ($config->fiscalYearStart['M'] != 1 || $config->fiscalYearStart['d'] != 1)) {
-            $startDate = date('Ymd', mktime(0, 0, 0, $config->fiscalYearStart['M'], $config->fiscalYearStart['d'], substr($index, 0, 4)));
-            $endDate = date('Ymd', mktime(0, 0, 0, $config->fiscalYearStart['M'], $config->fiscalYearStart['d'], (substr($index, 0, 4)) + 1));
+            $startDate = date('Ymd', mktime(0, 0, 0, $config->fiscalYearStart['M'], $config->fiscalYearStart['d'], $year));
+            $endDate = date('Ymd', mktime(0, 0, 0, $config->fiscalYearStart['M'], $config->fiscalYearStart['d'], $year + 1));
           }
           else {
-            $startDate = CRM_Utils_Date::format(['Y' => substr($index, 0, 4)]);
-            $endDate = date('Ymd', mktime(0, 0, 0, 13, 0, substr($index, 0, 4)));
+            $startDate = CRM_Utils_Date::format(['Y' => $year]);
+            $endDate = date('Ymd', mktime(0, 0, 0, 13, 0, $year));
           }
           $urlParams = "reset=1&force=1&status=1&start={$startDate}&end={$endDate}&test=0";
         }
diff --git a/civicrm/CRM/Contribute/Form/ContributionPage.php b/civicrm/CRM/Contribute/Form/ContributionPage.php
index 3b8f5a1d6fc0baec46d1cdac47fe1c844550f64d..104e2801dee6a680e57dfb81de53278a851d7516 100644
--- a/civicrm/CRM/Contribute/Form/ContributionPage.php
+++ b/civicrm/CRM/Contribute/Form/ContributionPage.php
@@ -14,6 +14,7 @@
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
+use Civi\Api4\MembershipBlock;
 
 /**
  * Contribution Page form.
@@ -413,6 +414,18 @@ class CRM_Contribute_Form_ContributionPage extends CRM_Core_Form {
     return $this->_id ? (int) $this->_id : NULL;
   }
 
+  /**
+   * Get the membership Block ID, if any, attached to the contribution page.
+   *
+   * @return int|null
+   */
+  public function getMembershipBlockID(): ?int {
+    return MembershipBlock::get(FALSE)
+      ->addWhere('entity_table', '=', 'civicrm_contribution_page')
+      ->addWhere('entity_id', '=', $this->getContributionPageID())
+      ->addWhere('is_active', '=', TRUE)->execute()->first()['id'] ?? NULL;
+  }
+
   /**
    * Get the price set ID for the contribution page.
    *
diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/AddProduct.php b/civicrm/CRM/Contribute/Form/ContributionPage/AddProduct.php
index ca0a6f9b4aa7552361077519ed612b00abc9e299..27dbb758954dd98927689b2e9734a8e3398c14d4 100644
--- a/civicrm/CRM/Contribute/Form/ContributionPage/AddProduct.php
+++ b/civicrm/CRM/Contribute/Form/ContributionPage/AddProduct.php
@@ -187,23 +187,7 @@ class CRM_Contribute_Form_ContributionPage_AddProduct extends CRM_Contribute_For
     $this->addRule('weight', ts('Please enter integer value for weight'), 'integer');
     $session->pushUserContext(CRM_Utils_System::url($urlParams, 'action=update&reset=1&id=' . $this->_id));
 
-    if ($this->_single) {
-      $this->addButtons([
-        [
-          'type' => 'next',
-          'name' => ts('Save'),
-          'spacing' => '&nbsp;&nbsp;&nbsp;&nbsp;',
-          'isDefault' => TRUE,
-        ],
-        [
-          'type' => 'cancel',
-          'name' => ts('Cancel'),
-        ],
-      ]);
-    }
-    else {
-      parent::buildQuickForm();
-    }
+    parent::buildQuickForm();
   }
 
   /**
diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php b/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php
index 03df84064adebaedb978280aae5f24c5de370967..69667cabcb0915faa4ce969ea5e1c5cfc7a50112 100644
--- a/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php
+++ b/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php
@@ -483,10 +483,7 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co
         $val = $defaultVal;
       }
 
-      if (in_array($field, [
-        'min_amount',
-        'max_amount',
-      ])) {
+      if (in_array($field, ['min_amount', 'max_amount'])) {
         $val = CRM_Utils_Rule::cleanMoney($val);
       }
 
@@ -546,10 +543,12 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co
     $contributionPageID = $contributionPage->id;
 
     // prepare for data cleanup.
-    $deleteAmountBlk = $deletePledgeBlk = $deletePriceSet = FALSE;
-    if ($this->_priceSetID) {
-      $deletePriceSet = TRUE;
-    }
+    $deleteAmountBlk = $deletePledgeBlk = FALSE;
+    // We delete the link to the price set (the price set entity record) when
+    // one exists and there is neither a contribution or membership section enabled.
+    // This amount form can set & unset the contribution section but must check the database
+    // for the membership section (membership block).
+    $deletePriceSet = $this->_priceSetID && !$this->getSubmittedValue('amount_block_is_active') && !$this->getMembershipBlockID();
     if ($this->_pledgeBlockID) {
       $deletePledgeBlk = TRUE;
     }
@@ -561,9 +560,9 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co
 
       if (!empty($params['amount_block_is_active'])) {
         // handle price set.
+        $deletePriceSet = FALSE;
         if ($priceSetID) {
           // add/update price set.
-          $deletePriceSet = FALSE;
           if (!empty($params['price_field_id']) || !empty($params['price_field_other'])) {
             $deleteAmountBlk = TRUE;
           }
@@ -571,8 +570,6 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co
           CRM_Price_BAO_PriceSet::addTo('civicrm_contribution_page', $contributionPageID, $priceSetID);
         }
         else {
-
-          $deletePriceSet = FALSE;
           // process contribution amount block
           $deleteAmountBlk = FALSE;
 
@@ -798,7 +795,6 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co
           }
           else {
             $deleteAmountBlk = TRUE;
-            $deletePriceSet = TRUE;
           }
         }
       }
diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/Premium.php b/civicrm/CRM/Contribute/Form/ContributionPage/Premium.php
index 258c4e1cbafe5c5842604184f5f2d281048eec01..53cde454f247f4df8e0ffc570952a0a1dfd942d6 100644
--- a/civicrm/CRM/Contribute/Form/ContributionPage/Premium.php
+++ b/civicrm/CRM/Contribute/Form/ContributionPage/Premium.php
@@ -68,20 +68,6 @@ class CRM_Contribute_Form_ContributionPage_Premium extends CRM_Contribute_Form_C
     $this->add('text', 'premiums_nothankyou_label', ts('No Thank-you Label'), $attributes['premiums_nothankyou_label']);
     $positions = [1 => ts('Before Premiums'), 2 => ts('After Premiums')];
     $this->add('select', 'premiums_nothankyou_position', ts('No Thank-you Option'), $positions);
-    $showForm = TRUE;
-
-    if ($this->_single) {
-      if ($this->_id) {
-        $daoPremium = new CRM_Contribute_DAO_Premium();
-        $daoPremium->entity_id = $this->_id;
-        $daoPremium->entity_table = 'civicrm_contribution_page';
-        $daoPremium->premiums_active = 1;
-        if ($daoPremium->find(TRUE)) {
-          $showForm = FALSE;
-        }
-      }
-    }
-    $this->assign('showForm', $showForm);
 
     parent::buildQuickForm();
     $this->addFormRule(['CRM_Contribute_Form_ContributionPage_Premium', 'formRule'], $this);
diff --git a/civicrm/CRM/Contribute/Form/ContributionRecur.php b/civicrm/CRM/Contribute/Form/ContributionRecur.php
index 7402e94cad2bf0f027d76c9daeaa39c0a650df14..09fb3fd3c083b1626153e59a02aa7ffff6b5c56e 100644
--- a/civicrm/CRM/Contribute/Form/ContributionRecur.php
+++ b/civicrm/CRM/Contribute/Form/ContributionRecur.php
@@ -83,6 +83,14 @@ class CRM_Contribute_Form_ContributionRecur extends CRM_Core_Form {
    */
   protected $selfService;
 
+  /**
+   * Used by `CRM_Contribute_Form_UpdateSubscription`
+   *
+   * @var CRM_Core_DAO
+   * @deprecated This is being set temporarily - we should eventually just use the getter fn.
+   */
+  protected $_subscriptionDetails = NULL;
+
   /**
    * Explicitly declare the entity api name.
    */
diff --git a/civicrm/CRM/Contribute/Form/ContributionView.php b/civicrm/CRM/Contribute/Form/ContributionView.php
index d68c4d30876da0937fa7622b3b728e26095e6d06..5edd85bb4611d83793de60f848fb59997ee7e90a 100644
--- a/civicrm/CRM/Contribute/Form/ContributionView.php
+++ b/civicrm/CRM/Contribute/Form/ContributionView.php
@@ -30,6 +30,8 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form {
    */
   public function preProcess() {
     $id = $this->getContributionID();
+    $this->assign('taxTerm', Civi::settings()->get('tax_term'));
+    $this->assign('getTaxDetails', \Civi::settings()->get('invoicing'));
 
     // Check permission for action.
     $actionMapping = [
diff --git a/civicrm/CRM/Contribute/Form/ManagePremiums.php b/civicrm/CRM/Contribute/Form/ManagePremiums.php
index 247c3df103ff9fd70ea6f132dd7232abe5983b0b..85e25503d0e04cd32af1f2ad3ead4a4dfafe69a4 100644
--- a/civicrm/CRM/Contribute/Form/ManagePremiums.php
+++ b/civicrm/CRM/Contribute/Form/ManagePremiums.php
@@ -264,7 +264,7 @@ class CRM_Contribute_Form_ManagePremiums extends CRM_Contribute_Form {
       catch (CRM_Core_Exception $e) {
         $message = ts("This Premium is linked to an <a href='%1'>Online Contribution page</a>. Please remove it before deleting this Premium.", [1 => CRM_Utils_System::url('civicrm/admin/contribute', 'reset=1')]);
         CRM_Core_Session::setStatus($message, ts('Cannot delete Premium'), 'error');
-        CRM_Core_Session::singleton()->pushUserContext(CRM_Utils_System::url('civicrm/admin/contribute/managePremiums', 'reset=1&action=browse'));
+        CRM_Core_Session::singleton()->pushUserContext(CRM_Utils_System::url('civicrm/admin/contribute/managePremiums', 'reset=1'));
         return;
       }
       CRM_Core_Session::setStatus(
diff --git a/civicrm/CRM/Contribute/Form/Search.php b/civicrm/CRM/Contribute/Form/Search.php
index 8997b4208e34a6d1e8a5eedfc171e8881bc232b9..f1401dfc8e2d317c41f1a0e5b20326020484c3c4 100644
--- a/civicrm/CRM/Contribute/Form/Search.php
+++ b/civicrm/CRM/Contribute/Form/Search.php
@@ -259,10 +259,7 @@ class CRM_Contribute_Form_Search extends CRM_Core_Form_Search {
       $this->_formValues['is_template'] = 0;
     }
 
-    foreach ([
-      'contribution_amount_low',
-      'contribution_amount_high',
-    ] as $f) {
+    foreach (['contribution_amount_low', 'contribution_amount_high'] as $f) {
       if (isset($this->_formValues[$f])) {
         // @todo - stop changing formValues - respect submitted form values, change a working array.
         $this->_formValues[$f] = CRM_Utils_Rule::cleanMoney($this->_formValues[$f]);
diff --git a/civicrm/CRM/Contribute/Form/Task/Invoice.php b/civicrm/CRM/Contribute/Form/Task/Invoice.php
index f8b885edcbb6885a12acb190be8177e1762faf0b..bf148d7e089133c4fa88047b4a3c0fc2e342aef4 100644
--- a/civicrm/CRM/Contribute/Form/Task/Invoice.php
+++ b/civicrm/CRM/Contribute/Form/Task/Invoice.php
@@ -282,16 +282,9 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
       $amountDue = ($input['amount'] - $amountPaid);
 
       // retrieving the subtotal and sum of same tax_rate
-      $dataArray = [];
       $subTotal = 0;
       $lineItem = CRM_Price_BAO_LineItem::getLineItemsByContributionID($contributionID);
       foreach ($lineItem as $taxRate) {
-        if (isset($dataArray[(string) $taxRate['tax_rate']])) {
-          $dataArray[(string) $taxRate['tax_rate']] = $dataArray[(string) $taxRate['tax_rate']] + ($taxRate['tax_amount'] ?? 0);
-        }
-        else {
-          $dataArray[(string) $taxRate['tax_rate']] = $taxRate['tax_amount'] ?? NULL;
-        }
         $subTotal += $taxRate['subTotal'] ?? 0;
       }
 
@@ -385,8 +378,6 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
         'notes' => $invoiceNotes,
         // @todo not used in shipped template from 5.53
         'lineItem' => $lineItem,
-        // @todo not used in shipped template from 5.53
-        'dataArray' => $dataArray,
         // @todo not used in shipped template from 5.52
         'refundedStatusId' => $refundedStatusId,
         // @todo not used in shipped template from 5.52
@@ -436,6 +427,9 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
         'tplParams' => $tplParams,
         'PDFFilename' => $pdfFileName,
         'tokenContext' => ['contributionId' => $contribution->id, 'contactId' => $contribution->contact_id],
+        'modelProps' => [
+          'userEnteredText' => $params['email_comment'] ?? NULL,
+        ],
       ];
 
       // from email address
@@ -504,10 +498,10 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
         $fileName = self::putFile($html, $pdfFileName, $pdfFormat);
         self::addActivities($subject, $contribution->contact_id, $fileName, $params, $contribution->id);
       }
-      elseif ($component == 'event') {
+      elseif ($component === 'event') {
         $email = CRM_Contact_BAO_Contact::getPrimaryEmail($contribution->contact_id);
 
-        $sendTemplateParams['tplParams'] = array_merge($tplParams, ['email_comment' => $params['email_comment']]);
+        $sendTemplateParams['tplParams'] = $tplParams;
         $sendTemplateParams['from'] = $fromEmailAddress;
         $sendTemplateParams['toEmail'] = $email;
         $sendTemplateParams['cc'] = $values['cc_confirm'] ?? NULL;
diff --git a/civicrm/CRM/Contribute/Form/Task/PDF.php b/civicrm/CRM/Contribute/Form/Task/PDF.php
index df39acc994b3e45262cb2ad43ff42c4c47159548..b48c98da101f0403606078d1c3ae8a0097a9250d 100644
--- a/civicrm/CRM/Contribute/Form/Task/PDF.php
+++ b/civicrm/CRM/Contribute/Form/Task/PDF.php
@@ -95,7 +95,7 @@ AND    {$this->_componentClause}";
     $this->add('checkbox', 'receipt_update', ts('Update receipt dates for these contributions'), FALSE);
     $this->add('checkbox', 'override_privacy', ts('Override privacy setting? (Do not email / Do not mail)'), FALSE);
 
-    $this->add('select', 'from_email_address', ts('From Email'), $this->_fromEmails, FALSE);
+    $this->add('select', 'from_email_address', ts('From Email'), $this->getFromEmails(), FALSE);
 
     $this->addButtons([
       [
@@ -110,6 +110,15 @@ AND    {$this->_componentClause}";
     ]);
   }
 
+  /**
+   * Get an array of email IDS from which the back-office user may select the from field.
+   *
+   * @return array
+   */
+  public function getFromEmails(): array {
+    return CRM_Core_BAO_Email::getFromEmail();
+  }
+
   /**
    * Set default values.
    */
diff --git a/civicrm/CRM/Contribute/Form/Task/PDFLetter.php b/civicrm/CRM/Contribute/Form/Task/PDFLetter.php
index 1718cca1a701f6b4104e48332c76071e8476519a..9a9f2b063f42744ee64b439e3d520638c493c3dc 100644
--- a/civicrm/CRM/Contribute/Form/Task/PDFLetter.php
+++ b/civicrm/CRM/Contribute/Form/Task/PDFLetter.php
@@ -80,7 +80,7 @@ class CRM_Contribute_Form_Task_PDFLetter extends CRM_Contribute_Form_Task {
     $this->assign('suppressForm', FALSE);
 
     // Contribute PDF tasks allow you to email as well, so we need to add email address to those forms
-    $this->add('select', 'from_email_address', ts('From Email Address'), $this->_fromEmails, TRUE);
+    $this->add('select', 'from_email_address', ts('From Email Address'), $this->getFromEmails(), TRUE);
     $this->addPDFElementsToForm();
 
     // specific need for contributions
diff --git a/civicrm/CRM/Contribute/Form/UpdateBilling.php b/civicrm/CRM/Contribute/Form/UpdateBilling.php
index b7e60559b040d8531d2d66bd99ab5547fa367e58..97401469e008a132b38ffbe57b1fab90a9ac3aa9 100644
--- a/civicrm/CRM/Contribute/Form/UpdateBilling.php
+++ b/civicrm/CRM/Contribute/Form/UpdateBilling.php
@@ -21,8 +21,6 @@
 class CRM_Contribute_Form_UpdateBilling extends CRM_Contribute_Form_ContributionRecur {
   protected $_mode = NULL;
 
-  protected $_subscriptionDetails = NULL;
-
   public $_bltID = NULL;
 
   /**
diff --git a/civicrm/CRM/Contribute/Form/UpdateSubscription.php b/civicrm/CRM/Contribute/Form/UpdateSubscription.php
index 5ef8c01903f0a5a9dfe264a2e77f5b0d84d13d7f..e68c618189975286e7f8f8aa248bbcdc5b4cd5f5 100644
--- a/civicrm/CRM/Contribute/Form/UpdateSubscription.php
+++ b/civicrm/CRM/Contribute/Form/UpdateSubscription.php
@@ -25,8 +25,6 @@ use Civi\Payment\Exception\PaymentProcessorException;
  */
 class CRM_Contribute_Form_UpdateSubscription extends CRM_Contribute_Form_ContributionRecur {
 
-  protected $_subscriptionDetails = NULL;
-
   public $_paymentProcessor = NULL;
 
   public $_paymentProcessorObj = NULL;
@@ -45,6 +43,13 @@ class CRM_Contribute_Form_UpdateSubscription extends CRM_Contribute_Form_Contrib
    */
   public $_contactID;
 
+  /**
+   * The contributor email
+   *
+   * @var string
+   */
+  protected $_donorEmail = '';
+
   /**
    * Pre-processing for the form.
    *
@@ -114,7 +119,8 @@ class CRM_Contribute_Form_UpdateSubscription extends CRM_Contribute_Form_Contrib
     $this->assign('editableScheduleFields', array_diff($this->editableScheduleFields, $alreadyHardCodedFields));
 
     if ($this->_subscriptionDetails->contact_id) {
-      [$this->_donorDisplayName, $this->_donorEmail] = CRM_Contact_BAO_Contact::getContactDetails($this->_subscriptionDetails->contact_id);
+      $contactDetails = CRM_Contact_BAO_Contact::getContactDetails($this->_subscriptionDetails->contact_id);
+      $this->_donorEmail = $contactDetails[1];
     }
 
     $this->setTitle(ts('Update Recurring Contribution'));
diff --git a/civicrm/CRM/Contribute/Page/DashBoard.php b/civicrm/CRM/Contribute/Page/DashBoard.php
index aa8cdbbc413df36175391074c8d05fbeff134199..fbb5c253b0d75f4733da7470fb6a424bd8cd5179 100644
--- a/civicrm/CRM/Contribute/Page/DashBoard.php
+++ b/civicrm/CRM/Contribute/Page/DashBoard.php
@@ -35,11 +35,7 @@ class CRM_Contribute_Page_DashBoard extends CRM_Core_Page {
 
     //get contribution dates.
     $dates = CRM_Contribute_BAO_Contribution::getContributionDates();
-    foreach ([
-      'now',
-      'yearDate',
-      'monthDate',
-    ] as $date) {
+    foreach (['now', 'yearDate', 'monthDate'] as $date) {
       $$date = $dates[$date];
     }
     // fiscal years end date
diff --git a/civicrm/CRM/Contribute/Page/ManagePremiums.php b/civicrm/CRM/Contribute/Page/ManagePremiums.php
index 0c08a37687d28e8eea7a22ddb00217da081953f8..0fa88c979e22f40c99eca12d9a6c9c901e880b9a 100644
--- a/civicrm/CRM/Contribute/Page/ManagePremiums.php
+++ b/civicrm/CRM/Contribute/Page/ManagePremiums.php
@@ -15,6 +15,8 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Api4\Product;
+
 /**
  * Page for displaying list of Premiums.
  */
@@ -27,7 +29,7 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
    *
    * @var array
    */
-  public static $_links = NULL;
+  public static $_links;
 
   /**
    * Get BAO Name.
@@ -35,7 +37,7 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
    * @return string
    *   Classname of BAO.
    */
-  public function getBAOName() {
+  public function getBAOName(): string {
     return 'CRM_Contribute_BAO_Product';
   }
 
@@ -45,19 +47,19 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
    * @return array
    *   (reference) of action links
    */
-  public function &links() {
+  public function &links(): array {
     if (!(self::$_links)) {
       self::$_links = [
         CRM_Core_Action::UPDATE => [
           'name' => ts('Edit'),
-          'url' => 'civicrm/admin/contribute/managePremiums',
+          'url' => 'civicrm/admin/contribute/managePremiums/edit',
           'qs' => 'action=update&id=%%id%%&reset=1',
           'title' => ts('Edit Premium'),
           'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE),
         ],
         CRM_Core_Action::PREVIEW => [
           'name' => ts('Preview'),
-          'url' => 'civicrm/admin/contribute/managePremiums',
+          'url' => 'civicrm/admin/contribute/managePremiums/edit',
           'qs' => 'action=preview&id=%%id%%',
           'title' => ts('Preview Premium'),
           'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::PREVIEW),
@@ -76,7 +78,7 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
         ],
         CRM_Core_Action::DELETE => [
           'name' => ts('Delete'),
-          'url' => 'civicrm/admin/contribute/managePremiums',
+          'url' => 'civicrm/admin/contribute/managePremiums/edit',
           'qs' => 'action=delete&id=%%id%%',
           'title' => ts('Delete Premium'),
           'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE),
@@ -92,8 +94,10 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
    * This method is called after the page is created. It checks for the
    * type of action and executes that action.
    * Finally it calls the parent's run method.
+   *
+   * @throws \CRM_Core_Exception
    */
-  public function run() {
+  public function run(): void {
     $id = $this->getIdAndAction();
 
     // what action to take ?
@@ -104,45 +108,42 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
     $this->browse();
 
     // parent run
-    return CRM_Core_Page::run();
+    CRM_Core_Page::run();
   }
 
   /**
    * Browse all custom data groups.
+   *
+   * @throws \CRM_Core_Exception
    */
-  public function browse() {
-    // get all custom groups sorted by weight
-    $premiums = [];
-    $dao = new CRM_Contribute_DAO_Product();
-    $dao->orderBy('name');
-    $dao->find();
-
-    while ($dao->fetch()) {
-      $premiums[$dao->id] = [];
-      CRM_Core_DAO::storeValues($dao, $premiums[$dao->id]);
-      // form all action links
+  public function browse(): void {
+    // We could probably use checkPermissions here but historically didn't
+    // so have set it to FALSE to be safe while converting to api use.
+    $premiums = Product::get(FALSE)->addOrderBy('name')
+      ->addSelect('*', 'financial_type_id:name')
+      ->execute();
+
+    foreach ($premiums as $index => $premium) {
       $action = array_sum(array_keys($this->links()));
 
-      if ($dao->is_active) {
+      if ($premium['is_active']) {
         $action -= CRM_Core_Action::ENABLE;
       }
       else {
         $action -= CRM_Core_Action::DISABLE;
       }
 
-      $premiums[$dao->id]['action'] = CRM_Core_Action::formLink($this->links(),
+      $premiums[$index]['action'] = CRM_Core_Action::formLink($this->links(),
         $action,
-        ['id' => $dao->id],
+        ['id' => $premium['id']],
         ts('more'),
         FALSE,
         'premium.manage.row',
         'Premium',
-        $dao->id
+        $premium['id']
       );
-      // Financial Type
-      if (!empty($dao->financial_type_id)) {
-        $premiums[$dao->id]['financial_type'] = CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_Product', 'financial_type_id', $dao->financial_type_id);
-      }
+      $premiums[$index]['financial_type'] = $premium['financial_type_id:name'];
+      $premiums[$index]['class'] = '';
     }
     $this->assign('rows', $premiums);
   }
@@ -153,7 +154,7 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
    * @return string
    *   Classname of edit form.
    */
-  public function editForm() {
+  public function editForm(): string {
     return 'CRM_Contribute_Form_ManagePremiums';
   }
 
@@ -163,7 +164,7 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
    * @return string
    *   name of this page.
    */
-  public function editName() {
+  public function editName(): string {
     return 'Manage Premiums';
   }
 
@@ -175,7 +176,7 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic {
    * @return string
    *   user context.
    */
-  public function userContext($mode = NULL) {
+  public function userContext($mode = NULL): string {
     return 'civicrm/admin/contribute/managePremiums';
   }
 
diff --git a/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php b/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php
index 4c5bdc364fca39eb38449727f643901aaaa591cf..d2610b6a4f4e19dcfbb223e7a590d63fcf597189 100644
--- a/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php
+++ b/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php
@@ -4,6 +4,7 @@ use Civi\Api4\PriceField;
 use Civi\Api4\PriceFieldValue;
 use Civi\Api4\PriceSet;
 use Civi\Api4\WorkflowMessage;
+use Civi\Test;
 use Civi\WorkflowMessage\GenericWorkflowMessage;
 use Civi\WorkflowMessage\WorkflowMessageExample;
 
@@ -19,20 +20,25 @@ class CRM_Contribute_WorkflowMessage_Contribution_BasicContribution extends Work
    * Get the examples this class is able to deliver.
    */
   public function getExamples(): iterable {
-    $workflows = ['contribution_online_receipt', 'contribution_offline_receipt', 'contribution_invoice_receipt'];
+    $workflows = ['contribution_online_receipt', 'contribution_offline_receipt', 'contribution_invoice_receipt', 'payment_or_refund_notification'];
+    $defaultCurrency = \Civi::settings()->get('defaultCurrency');
+    $currencies = [$defaultCurrency => $defaultCurrency, 'EUR' => 'EUR', 'CAD' => 'CAD'];
     foreach ($workflows as $workflow) {
+      foreach ($currencies as $currency) {
+        yield [
+          'name' => 'workflow/' . $workflow . '/basic_' . $currency,
+          'title' => ts('Completed Contribution') . ' : ' . $currency,
+          'tags' => $workflow === 'contribution_offline_receipt' ? ['phpunit', 'preview'] : ['preview'],
+          'workflow' => $workflow,
+        ];
+      }
       yield [
-        'name' => 'workflow/' . $workflow . '/basic_eur',
-        'title' => ts('Completed Contribution') . ' : ' . 'EUR',
-        'tags' => $workflow === 'contribution_offline_receipt' ? ['phpunit', 'preview'] : ['preview'],
-        'workflow' => $workflow,
-      ];
-      yield [
-        'name' => 'workflow/' . $workflow . '/' . 'basic_cad',
-        'title' => ts('Completed Contribution') . ' : ' . 'CAD',
+        'name' => 'workflow/' . $workflow . '/' . 'partially paid' . $currency,
+        'title' => ts('Partially Paid Contribution') . ' : ' . $currency,
         'tags' => ['preview'],
         'workflow' => $workflow,
-        'contribution_params' => ['currency' => 'CAD'],
+        'is_show_line_items' => TRUE,
+        'contribution_params' => ['contribution_status_id' => \CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Partially paid')],
       ];
       $priceSet = $this->getNonQuickConfigPriceSet();
       if ($priceSet) {
@@ -111,14 +117,28 @@ class CRM_Contribute_WorkflowMessage_Contribution_BasicContribution extends Work
    * @throws \Civi\API\Exception\UnauthorizedException
    */
   private function addExampleData(GenericWorkflowMessage $messageTemplate, $example): void {
-    $messageTemplate->setContact(\Civi\Test::example('entity/Contact/Barb'));
-    $contribution = \Civi\Test::example('entity/Contribution/Euro5990/completed');
+    $messageTemplate->setContact(Test::example('entity/Contact/Barb'));
+    $contribution = Test::example('entity/Contribution/Euro5990/completed');
+    $example['currency'] = $example['currency'] ?? \Civi::settings()->get('defaultCurrency');
     if (isset($example['contribution_params'])) {
       $contribution = array_merge($contribution, $example['contribution_params']);
     }
     $contribution['contribution_status_id:name'] = \CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contribution['contribution_status_id']);
     $contribution['contribution_status_id:label'] = \CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contribution['contribution_status_id']);
-
+    if ($contribution['contribution_status_id:name'] === 'Partially paid') {
+      $contribution['paid_amount'] = round($contribution['total_amount'] / 2, 2);
+    }
+    elseif ($contribution['contribution_status_id:name'] === 'Pending' || $contribution['contribution_status_id:name'] === 'Refunded') {
+      $contribution['paid_amount'] = 0;
+    }
+    else {
+      $contribution['paid_amount'] = $contribution['total_amount'];
+    }
+    $contribution['balance_amount'] = $contribution['total_amount'] - $contribution['paid_amount'];
+    if ($contribution['contribution_status_id:name'] === 'Refunded') {
+      $contribution['balance_amount'] = 0;
+    }
+    $contribution['net_amount'] = $contribution['total_amount'] - $contribution['fee_amount'];
     $mockOrder = new CRM_Financial_BAO_Order();
     $mockOrder->setTemplateContributionID(50);
 
@@ -152,6 +172,19 @@ United States';
     $messageTemplate->setContribution($contribution);
     $messageTemplate->setOrder($mockOrder);
     $messageTemplate->setContribution($contribution);
+    $financialTrxn = [
+      'trxn_date' => date('Y-m-d H:i:s'),
+      'total_amount' => $contribution['contribution_status_id:name'] === 'Refunded' ? -$contribution['total_amount'] : $contribution['paid_amount'],
+      'payment_instrument_id' => CRM_Core_PseudoConstant::getKey('CRM_Financial_BAO_FinancialTrxn', 'payment_instrument_id', 'Credit Card'),
+      'card_type_id' => CRM_Core_PseudoConstant::getKey('CRM_Financial_BAO_FinancialTrxn', 'card_type_id', 'Visa'),
+      'pan_truncation' => 5679,
+    ];
+    $financialTrxn['payment_instrument_id:label'] = \CRM_Core_PseudoConstant::getLabel('CRM_Financial_BAO_FinancialTrxn', 'payment_instrument_id', $financialTrxn['payment_instrument_id']);
+    $financialTrxn['payment_instrument_id:name'] = \CRM_Core_PseudoConstant::getName('CRM_Financial_BAO_FinancialTrxn', 'payment_instrument_id', $financialTrxn['payment_instrument_id']);
+    $financialTrxn['card_type_id:label'] = \CRM_Core_PseudoConstant::getLabel('CRM_Financial_BAO_FinancialTrxn', 'card_type_id', $financialTrxn['card_type_id']);
+    $financialTrxn['card_type_id:name'] = \CRM_Core_PseudoConstant::getName('CRM_Financial_BAO_FinancialTrxn', 'card_type_id', $financialTrxn['card_type_id']);
+
+    $messageTemplate->setFinancialTrxn($financialTrxn);
   }
 
   /**
diff --git a/civicrm/CRM/Contribute/WorkflowMessage/ContributionTrait.php b/civicrm/CRM/Contribute/WorkflowMessage/ContributionTrait.php
index b7baed4edb37a53beee215811377c1f345c15536..26c28f73a72e1cf877ba4abd3449ff4e8d7b5cf9 100644
--- a/civicrm/CRM/Contribute/WorkflowMessage/ContributionTrait.php
+++ b/civicrm/CRM/Contribute/WorkflowMessage/ContributionTrait.php
@@ -3,9 +3,10 @@
 use Civi\Api4\Membership;
 
 /**
- * @method array getContribution()
  * @method int|null getContributionID()
- * @method $this setContributionID(?int $contributionId)
+ * @method $this setContributionID(?int $contributionID)
+ * @method int|null getFinancialTrxnID()
+ * @method $this setFinancialTrxnID(?int $financialTrxnID)
  */
 trait CRM_Contribute_WorkflowMessage_ContributionTrait {
   /**
@@ -17,12 +18,34 @@ trait CRM_Contribute_WorkflowMessage_ContributionTrait {
    */
   public $contribution;
 
+  /**
+   * @return array|null
+   */
+  public function getContribution(): ?array {
+    return $this->contribution;
+  }
+
+  /**
+   * Optional financial transaction (payment).
+   *
+   * @var array|null
+   *
+   * @scope tokenContext as financial_trxn
+   */
+  public $financialTrxn;
+
   /**
    * @var int
    * @scope tokenContext as contributionId, tplParams as contributionID
    */
   public $contributionID;
 
+  /**
+   * @var int
+   * @scope tokenContext as financial_trxnId
+   */
+  public $financialTrxnID;
+
   /**
    * Is the site configured such that tax should be displayed.
    *
@@ -220,6 +243,21 @@ trait CRM_Contribute_WorkflowMessage_ContributionTrait {
     return $this;
   }
 
+  /**
+   * Set contribution object.
+   *
+   * @param array $financialTrxn
+   *
+   * @return $this
+   */
+  public function setFinancialTrxn(array $financialTrxn): self {
+    $this->financialTrxn = $financialTrxn;
+    if (!empty($financialTrxn['id'])) {
+      $this->financialTrxnID = $financialTrxn['id'];
+    }
+    return $this;
+  }
+
   /**
    * Set order object.
    *
diff --git a/civicrm/CRM/Contribute/WorkflowMessage/PaymentOrRefundNotification.php b/civicrm/CRM/Contribute/WorkflowMessage/PaymentOrRefundNotification.php
new file mode 100644
index 0000000000000000000000000000000000000000..6b1a250c5e90b87a3b40f516e03a203defb85724
--- /dev/null
+++ b/civicrm/CRM/Contribute/WorkflowMessage/PaymentOrRefundNotification.php
@@ -0,0 +1,34 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+use Civi\WorkflowMessage\GenericWorkflowMessage;
+
+/**
+ * Receipt sent when confirming contribution add payment.
+ *
+ * @method int getEventID()
+ *
+ * @support template-only
+ * @see CRM_Financial_BAO_Payment::sendConfirmation()
+ */
+class CRM_Contribute_WorkflowMessage_PaymentOrRefundNotification extends GenericWorkflowMessage {
+  use CRM_Contribute_WorkflowMessage_ContributionTrait;
+  public const WORKFLOW = 'payment_or_refund_notification';
+
+  /**
+   * @var int
+   *
+   * @scope tokenContext as eventId, tplParams as eventID
+   */
+  public $eventID;
+
+}
diff --git a/civicrm/CRM/Contribute/xml/Menu/Contribute.xml b/civicrm/CRM/Contribute/xml/Menu/Contribute.xml
index 1757c746a6269cd5e085a93e9ba6aae02993819f..242bd1eedf5ac2492b8bf480883bd9292e9e1178 100644
--- a/civicrm/CRM/Contribute/xml/Menu/Contribute.xml
+++ b/civicrm/CRM/Contribute/xml/Menu/Contribute.xml
@@ -111,6 +111,11 @@
     <adminGroup>CiviContribute</adminGroup>
     <weight>365</weight>
   </item>
+  <item>
+    <path>civicrm/admin/contribute/managePremiums/edit</path>
+    <title>Manage Premiums</title>
+    <page_callback>CRM_Contribute_Form_ManagePremiums</page_callback>
+  </item>
   <item>
     <path>civicrm/admin/financial/financialType</path>
     <title>Financial Types</title>
diff --git a/civicrm/CRM/Core/BAO/ActionSchedule.php b/civicrm/CRM/Core/BAO/ActionSchedule.php
index df6f784ded8246f208dcc05e83c771f6730894e1..d6e876fc1d56a6d0316f13cafeab9c252dc60dd1 100644
--- a/civicrm/CRM/Core/BAO/ActionSchedule.php
+++ b/civicrm/CRM/Core/BAO/ActionSchedule.php
@@ -691,6 +691,7 @@ FROM civicrm_action_schedule cas
       'subject' => $tokenRow->render('subject'),
       'entity' => 'action_schedule',
       'entity_id' => $schedule->id,
+      'contactId' => $toContactID,
     ];
     $body_text = $tokenRow->render('body_text');
     $mailParams['html'] = $tokenRow->render('body_html');
diff --git a/civicrm/CRM/Core/BAO/Address.php b/civicrm/CRM/Core/BAO/Address.php
index a0aa6a50191e7bfac3c09c1d9fec520872c562e6..1489b5ca670f8a6dadaeac12f8e1b1a24c0030d4 100644
--- a/civicrm/CRM/Core/BAO/Address.php
+++ b/civicrm/CRM/Core/BAO/Address.php
@@ -301,7 +301,6 @@ class CRM_Core_BAO_Address extends CRM_Core_DAO_Address implements Civi\Core\Hoo
         'contact_id',
         'is_billing',
         'display',
-        'master_id',
       ])) {
         continue;
       }
@@ -720,10 +719,7 @@ ORDER BY civicrm_address.is_primary DESC, civicrm_address.location_type_id DESC,
     ];
 
     // overwriting $streetUnitFormats for 'en_CA' and 'fr_CA' locale
-    if (in_array($locale, [
-      'en_CA',
-      'fr_CA',
-    ])) {
+    if (in_array($locale, ['en_CA', 'fr_CA'])) {
       $streetUnitFormats = ['APT', 'APP', 'SUITE', 'BUREAU', 'UNIT'];
     }
     //@todo per CRM-14459 this regex picks up words with the string in them - e.g APT picks up
@@ -780,11 +776,7 @@ ORDER BY civicrm_address.is_primary DESC, civicrm_address.location_type_id DESC,
 
     $parsingSupportedLocales = ['en_US', 'en_CA', 'fr_CA'];
 
-    if (in_array($locale, $parsingSupportedLocales)) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return in_array($locale, $parsingSupportedLocales);
   }
 
   /**
@@ -906,6 +898,8 @@ SELECT is_primary,
    * Fix the shared address if address is already shared
    * or if address will be shared with itself.
    *
+   * Add in the details from the master address.
+   *
    * @param array $params
    *   Associated array of address params.
    */
@@ -921,6 +915,12 @@ SELECT is_primary,
       $params['master_id'] = NULL;
       CRM_Core_Session::setStatus(ts("You can't connect an address to itself"), '', 'warning');
     }
+    if ($params['master_id']) {
+      $masterAddressParams = Address::get(FALSE)
+        ->addWhere('id', '=', $params['master_id'])->execute()->first();
+      unset($masterAddressParams['id'], $masterAddressParams['is_primary'], $masterAddressParams['is_billing'], $masterAddressParams['contact_id']);
+      $params += $masterAddressParams;
+    }
   }
 
   /**
diff --git a/civicrm/CRM/Core/BAO/ConfigSetting.php b/civicrm/CRM/Core/BAO/ConfigSetting.php
index 7d7b01fbabbba8a90bbe2b50f6985684083a1b48..f26cc34c4ada679de6159aead3f33a8bbcaf8bb9 100644
--- a/civicrm/CRM/Core/BAO/ConfigSetting.php
+++ b/civicrm/CRM/Core/BAO/ConfigSetting.php
@@ -207,14 +207,14 @@ class CRM_Core_BAO_ConfigSetting {
 
     }
     else {
-
       // CRM-11993 - Use default when it's a single-language install.
       $chosenLocale = $defaultLocale;
-
     }
 
-    if (!$session->isEmpty()) {
-      // Always assign the chosen locale to the session.
+    if ($chosenLocale && ($requestLocale ?? NULL) === $chosenLocale) {
+      // If the locale is passed in via lcMessages key on GET or POST data,
+      // and it's valid against our configured locales, we require the session
+      // to store this, even if that means starting an anonymous session.
       $session->set('lcMessages', $chosenLocale);
     }
 
diff --git a/civicrm/CRM/Core/BAO/CustomField.php b/civicrm/CRM/Core/BAO/CustomField.php
index e6f4b68d31b084d8d3af36565c4b08050124ba6d..6e81545bfaf0505b1062161d93aacd9fe631363c 100644
--- a/civicrm/CRM/Core/BAO/CustomField.php
+++ b/civicrm/CRM/Core/BAO/CustomField.php
@@ -1116,18 +1116,23 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField {
           );
 
         }
-        elseif ($field->data_type == 'EntityReference') {
-          $fieldAttributes['entity'] = $field->fk_entity;
-          $fieldAttributes['api']['fieldName'] = $field->getEntity() . '.' . $groupName . '.' . $field->name;
-          $element = $qf->addAutocomplete($elementName, $label, $fieldAttributes, $useRequired && !$search);
-        }
-        // Autocomplete for field with option values
         else {
-          $fieldAttributes['entity'] = 'OptionValue';
-          $fieldAttributes['placeholder'] = $placeholder;
-          $fieldAttributes['api']['fieldName'] = $field->getEntity() . '.' . $groupName . '.' . $field->name;
-          $fieldAttributes['select']['multiple'] = $search ? TRUE : !empty($field->serialize);
-          $fieldAttributes['select']['minimumInputLength'] = 0;
+          $entityName = $field->getEntityName();
+          // Format fieldName attribute: convention is `EntityName.field_name`
+          // For normal entities, `field_name` is a combination of `customGroupName.customFieldName`
+          // But form multi-record custom groups, the EntityName already includes the customGroupName so field_name stands alone
+          $fieldAttributes['api']['fieldName'] = $entityName . (str_starts_with($entityName, 'Custom_') ? '' : ".$groupName") . ".$field->name";
+          // Autocomplete for FK fields
+          if ($field->data_type == 'EntityReference') {
+            $fieldAttributes['entity'] = $field->fk_entity;
+          }
+          // Autocomplete for field with option values
+          else {
+            $fieldAttributes['entity'] = 'OptionValue';
+            $fieldAttributes['placeholder'] = $placeholder;
+            $fieldAttributes['select']['multiple'] = $search ? TRUE : !empty($field->serialize);
+            $fieldAttributes['select']['minimumInputLength'] = 0;
+          }
           $element = $qf->addAutocomplete($elementName, $label, $fieldAttributes, $useRequired && !$search);
         }
 
@@ -2582,7 +2587,7 @@ AND      default_value IS NOT NULL";
    * @return array
    */
   public static function postProcess(
-    &$params,
+    $params,
     $entityID,
     $customFieldExtends,
     $inline = FALSE,
@@ -2863,8 +2868,8 @@ WHERE cf.id = %1 AND cg.is_multiple = 1";
   }
 
   /**
-   * Get api entity for this field
-   *
+   * Get api3 entity name for this field
+   * @deprecated
    * @return string
    */
   public function getEntity() {
@@ -2872,6 +2877,19 @@ WHERE cf.id = %1 AND cg.is_multiple = 1";
     return in_array($entity, CRM_Contact_BAO_ContactType::basicTypes(TRUE), TRUE) ? 'Contact' : $entity;
   }
 
+  /**
+   * Get api4 entity name for this field
+   * @return string
+   */
+  public function getEntityName(): string {
+    $isMultiple = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $this->custom_group_id, 'is_multiple');
+    if ($isMultiple) {
+      $groupName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $this->custom_group_id, 'name');
+      return "Custom_$groupName";
+    }
+    return CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $this->custom_group_id, 'extends');
+  }
+
   /**
    * Set pseudoconstant properties for field metadata.
    *
diff --git a/civicrm/CRM/Core/BAO/CustomGroup.php b/civicrm/CRM/Core/BAO/CustomGroup.php
index 69acff73784416a743bc75b16bf4947a13d76353..c9ea430fc5b35e6cce30e9eee6e7fb827b5819da 100644
--- a/civicrm/CRM/Core/BAO/CustomGroup.php
+++ b/civicrm/CRM/Core/BAO/CustomGroup.php
@@ -60,13 +60,13 @@ class CRM_Core_BAO_CustomGroup extends CRM_Core_DAO_CustomGroup implements \Civi
       if (is_array($extendsChildType)) {
         foreach ($extendsChildType as $childType) {
           if (!array_key_exists($childType, $registeredSubTypes) && !in_array($childType, $registeredSubTypes, TRUE)) {
-            throw new CRM_Core_Exception('Supplied Sub type is not valid for the specified entitiy');
+            throw new CRM_Core_Exception('Supplied Sub type is not valid for the specified entity');
           }
         }
       }
       else {
         if (!array_key_exists($extendsChildType, $registeredSubTypes) && !in_array($extendsChildType, $registeredSubTypes, TRUE)) {
-          throw new CRM_Core_Exception('Supplied Sub type is not valid for the specified entitiy');
+          throw new CRM_Core_Exception('Supplied Sub type is not valid for the specified entity');
         }
         $extendsChildType = [$extendsChildType];
       }
@@ -2008,11 +2008,7 @@ SELECT  civicrm_custom_group.id as groupID, civicrm_custom_group.title as groupT
     $query = "SELECT count(id) FROM {$tableName} WHERE id IS NOT NULL LIMIT 1";
     $value = CRM_Core_DAO::singleValueQuery($query);
 
-    if (empty($value)) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return empty($value);
   }
 
   /**
diff --git a/civicrm/CRM/Core/BAO/CustomQuery.php b/civicrm/CRM/Core/BAO/CustomQuery.php
index 7948b7eaf0ee9f752f3ab6fdec2314e71db4de0a..c448d3ce2b4d7e68cc3133a1ac924c684de9186e 100644
--- a/civicrm/CRM/Core/BAO/CustomQuery.php
+++ b/civicrm/CRM/Core/BAO/CustomQuery.php
@@ -256,7 +256,7 @@ class CRM_Core_BAO_CustomQuery {
                 $value = str_replace(",", "$sp|$sp", $value);
                 $value = str_replace(['[:comma:]', '(', ')'], [',', '[(]', '[)]'], $value);
 
-                $op = (strstr($op, '!') || strstr($op, 'NOT')) ? 'NOT RLIKE' : 'RLIKE';
+                $op = (str_contains($op, '!') || str_contains($op, 'NOT')) ? 'NOT RLIKE' : 'RLIKE';
                 $value = $sp . $value . $sp;
                 if (!$wildcard) {
                   foreach (explode("|", $value) as $val) {
diff --git a/civicrm/CRM/Core/BAO/CustomValue.php b/civicrm/CRM/Core/BAO/CustomValue.php
index 485b231cc4ba690fa835e851d28d72bcab025562..8b965803db0973293584494b13ecb495ff435ea0 100644
--- a/civicrm/CRM/Core/BAO/CustomValue.php
+++ b/civicrm/CRM/Core/BAO/CustomValue.php
@@ -172,7 +172,7 @@ class CRM_Core_BAO_CustomValue extends CRM_Core_DAO {
       }
       elseif (($htmlType == 'TextArea' ||
           ($htmlType == 'Text' && $dataType == 'String')
-        ) && strstr($formValues[$key], '%')
+        ) && str_contains($formValues[$key], '%')
       ) {
         $formValues[$key] = ['LIKE' => $formValues[$key]];
       }
diff --git a/civicrm/CRM/Core/BAO/File.php b/civicrm/CRM/Core/BAO/File.php
index d0ad6492a389ba4c02c59e798672e849cb907455..0745e4a4a26b0014419a88d3ef62a65dbc798d44 100644
--- a/civicrm/CRM/Core/BAO/File.php
+++ b/civicrm/CRM/Core/BAO/File.php
@@ -442,9 +442,8 @@ AND       CEF.entity_id    = %2";
     // Assign maxAttachments count to template for help message
     $form->assign('maxAttachments', $numAttachments);
 
-    $config = CRM_Core_Config::singleton();
     // set default max file size as 2MB
-    $maxFileSize = $config->maxFileSize ? $config->maxFileSize : 2;
+    $maxFileSize = \Civi::settings()->get('maxFileSize') ?: 2;
 
     $currentAttachmentInfo = self::getEntityFile($entityTable, $entityID, TRUE);
     $totalAttachments = $currentAttachmentInfo ? count($currentAttachmentInfo) : 0;
diff --git a/civicrm/CRM/Core/BAO/Mapping.php b/civicrm/CRM/Core/BAO/Mapping.php
index 583fa8de597da77a5a0cf3f854460cc79b7e6c5a..804e3b4369aac74099dd14906fdd9b05d9ce9527 100644
--- a/civicrm/CRM/Core/BAO/Mapping.php
+++ b/civicrm/CRM/Core/BAO/Mapping.php
@@ -606,7 +606,7 @@ class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping implements \Civi\Core\Ho
           }
 
           // CRM-14983: verify if values are comma separated convert to array
-          if (!is_array($value) && strstr($params['operator'][$key][$k], 'IN')) {
+          if (!is_array($value) && str_contains($params['operator'][$key][$k], 'IN')) {
             $value = explode(',', $value);
             $value = [$params['operator'][$key][$k] => $value];
           }
diff --git a/civicrm/CRM/Core/BAO/MessageTemplate.php b/civicrm/CRM/Core/BAO/MessageTemplate.php
index 1d53ed7a80a4cb9795844c77d0191907ca46dcb9..e9342273af0b46e945b9a399f12a9d5a216209b4 100644
--- a/civicrm/CRM/Core/BAO/MessageTemplate.php
+++ b/civicrm/CRM/Core/BAO/MessageTemplate.php
@@ -448,7 +448,14 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen
           $params['attachments'] = [];
         }
         $params['attachments'][] = CRM_Utils_Mail::appendPDF($params['PDFFilename'], $params['html'], $mailContent['format']);
+        // This specifically allows the invoice code to attach an invoice & have
+        // a different message body. It will be removed & replaced with something
+        // saner so avoid trying to leverage this. There are no universe usages outside
+        // the core invoice task as of Dec 2023
         if (isset($params['tplParams']['email_comment'])) {
+          if ($params['workflow'] !== 'contribution_invoice_receipt') {
+            CRM_Core_Error::deprecatedWarning('unsupported parameter email_comment used');
+          }
           $params['html'] = $params['tplParams']['email_comment'];
           $params['text'] = strip_tags($params['tplParams']['email_comment']);
         }
diff --git a/civicrm/CRM/Core/BAO/Note.php b/civicrm/CRM/Core/BAO/Note.php
index f1e54f06f7ba4b86018d9820721c42f9f19e0463..8a30490905eab2d2976463ac4594a14891f3497a 100644
--- a/civicrm/CRM/Core/BAO/Note.php
+++ b/civicrm/CRM/Core/BAO/Note.php
@@ -538,12 +538,14 @@ WHERE participant.contact_id = %1 AND  note.entity_table = 'civicrm_participant'
       $clauses['entity_table'] = [$relatedClauses];
     }
     // Enforce note privacy setting
-    if (!CRM_Core_Permission::check('view all notes')) {
+    if (!CRM_Core_Permission::check('view all notes', $userId)) {
+      // It was ok to have $userId = NULL for the permission check but must be an int for the query
+      $cid = $userId ?? (int) CRM_Core_Session::getLoggedInContactID();
       $clauses['privacy'] = [
         [
           '= 0',
           // OR
-          '= 1 AND {contact_id} = ' . (int) CRM_Core_Session::getLoggedInContactID(),
+          "= 1 AND {contact_id} = $cid",
         ],
       ];
     }
diff --git a/civicrm/CRM/Core/BAO/UFGroup.php b/civicrm/CRM/Core/BAO/UFGroup.php
index fae355c2e705941ca0a333bff4fcbf1855a763b9..6451188dccc5584d78f65e9c502c95794f3ce3eb 100644
--- a/civicrm/CRM/Core/BAO/UFGroup.php
+++ b/civicrm/CRM/Core/BAO/UFGroup.php
@@ -1458,28 +1458,7 @@ class CRM_Core_BAO_UFGroup extends CRM_Core_DAO_UFGroup implements \Civi\Core\Ho
       $params['group_type'] = implode(',', $params['group_type']);
     }
 
-    $hook = empty($params['id']) ? 'create' : 'edit';
-    CRM_Utils_Hook::pre($hook, 'UFGroup', ($params['id'] ?? NULL), $params);
-
-    $ufGroup = new CRM_Core_DAO_UFGroup();
-    $ufGroup->copyValues($params);
-
-    $ufGroupID = CRM_Utils_Array::value('ufgroup', $ids, CRM_Utils_Array::value('id', $params));
-    if (!$ufGroupID && empty($params['name'])) {
-      $ufGroup->name = CRM_Utils_String::munge($ufGroup->title, '_', 56);
-    }
-    $ufGroup->id = $ufGroupID;
-
-    $ufGroup->save();
-
-    if (!$ufGroupID && empty($params['name'])) {
-      $ufGroup->name = $ufGroup->name . "_{$ufGroup->id}";
-      $ufGroup->save();
-    }
-
-    CRM_Utils_Hook::post($hook, 'UFGroup', $ufGroup->id, $ufGroup);
-
-    return $ufGroup;
+    return self::writeRecord($params);
   }
 
   /**
diff --git a/civicrm/CRM/Core/BAO/UFMatch.php b/civicrm/CRM/Core/BAO/UFMatch.php
index 6290430fd0d7f89cc56d562cdc6249f1597eb618..3d874a6d658d2259c20d1f9fe7ec06c7a8188d8f 100644
--- a/civicrm/CRM/Core/BAO/UFMatch.php
+++ b/civicrm/CRM/Core/BAO/UFMatch.php
@@ -627,4 +627,32 @@ AND    domain_id    = %4
     return $clauses;
   }
 
+  /**
+   * This checks and adds a unique index on (uf_id,domain_id)
+   *
+   * @return bool
+   * @throws \Civi\Core\Exception\DBQueryException
+   */
+  public static function tryToAddUniqueIndexOnUfId(): bool {
+    if (!CRM_Core_BAO_SchemaHandler::checkIfIndexExists('civicrm_uf_match', 'UI_uf_match_uf_id_domain_id')) {
+      // Run a query to check if we have duplicates
+      $query = 'SELECT COUNT(*) FROM civicrm_uf_match
+GROUP BY uf_id,domain_id
+HAVING COUNT(*) > 1';
+      $dao = CRM_Core_DAO::executeQuery($query);
+      if ($dao->fetch()) {
+        // Tell the user they need to fix it manually
+        \Civi::log()->error('You have multiple records with the same uf_id in civicrm_uf_match. You need to manually fix this in the database so that uf_id is unique.');
+        return FALSE;
+      }
+      else {
+        // Add the unique index
+        CRM_Core_DAO::executeQuery("
+        ALTER TABLE civicrm_uf_match ADD UNIQUE INDEX UI_uf_match_uf_id_domain_id (uf_id,domain_id);
+      ");
+      }
+    }
+    return TRUE;
+  }
+
 }
diff --git a/civicrm/CRM/Core/BAO/UserJob.php b/civicrm/CRM/Core/BAO/UserJob.php
index 0e3ea8faf294ca8f47ee1674af9dbec8a0126716..3f7d3f6e0a7c5af4f8d2a2f594e0e0d3d79ac680 100644
--- a/civicrm/CRM/Core/BAO/UserJob.php
+++ b/civicrm/CRM/Core/BAO/UserJob.php
@@ -159,8 +159,10 @@ class CRM_Core_BAO_UserJob extends CRM_Core_DAO_UserJob implements HookInterface
   public function addSelectWhereClause(string $entityName = NULL, int $userId = NULL, array $conditions = []): array {
     $clauses = [];
     if (!\CRM_Core_Permission::check('administer queues', $userId)) {
+      // It was ok to have $userId = NULL for the permission check but must be an int for the query
+      $cid = $userId ?? (int) CRM_Core_Session::getLoggedInContactID();
       // Only allow access to users' own jobs (or templates)
-      $clauses['created_id'][] = '= ' . (int) CRM_Core_Session::getLoggedInContactID() . ' OR {is_template} = 1';
+      $clauses['created_id'][] = "= $cid OR {is_template} = 1";
     }
     CRM_Utils_Hook::selectWhereClause($this, $clauses, $userId, $conditions);
     return $clauses;
diff --git a/civicrm/CRM/Core/Block.php b/civicrm/CRM/Core/Block.php
index 4e034084f812dce675a06b7b22e2e6498b59bf9f..e33e9289331e4c28ddbc3216a8bc265cfbe54bc6 100644
--- a/civicrm/CRM/Core/Block.php
+++ b/civicrm/CRM/Core/Block.php
@@ -218,10 +218,7 @@ class CRM_Core_Block {
     $block = [];
     foreach (self::properties() as $id => $value) {
       if ($value['active']) {
-        if (in_array($id, [
-          self::ADD,
-          self::CREATE_NEW,
-        ])) {
+        if (in_array($id, [self::ADD, self::CREATE_NEW])) {
           $hasAccess = TRUE;
           if (!CRM_Core_Permission::check('add contacts') &&
             !CRM_Core_Permission::check('edit groups')
diff --git a/civicrm/CRM/Core/CodeGen/I18n.php b/civicrm/CRM/Core/CodeGen/I18n.php
index 2f71133ba4b22e3314db4c428d32a3be52d0122a..91cb6e117628bf310fb88d91ae1eb93708602daf 100644
--- a/civicrm/CRM/Core/CodeGen/I18n.php
+++ b/civicrm/CRM/Core/CodeGen/I18n.php
@@ -19,7 +19,13 @@ class CRM_Core_CodeGen_I18n extends CRM_Core_CodeGen_BaseTask {
     for ($i = 0; $i < count($matches[0]); $i++) {
       $langs[$matches[1][$i]] = $matches[2][$i];
     }
+    // @todo Somewhere in 2024 or beyond, deprecate the old installer
     file_put_contents('../install/langs.php', "<?php \$langs = " . var_export($langs, TRUE) . ";");
+
+    // The `Template` helper provides PHP code cleanup.
+    $tpl = new CRM_Core_CodeGen_Util_Template('php');
+    $tpl->assign('langs', var_export($langs, TRUE));
+    $tpl->run('languages_setup.tpl', '../setup/res/languages.php');
   }
 
   public function generateSchemaStructure(): void {
diff --git a/civicrm/CRM/Core/CodeGen/Reflection.php b/civicrm/CRM/Core/CodeGen/Reflection.php
index 0dd7f23545077bf3b1f6492a5f66134ea70837be..f6ba371f403948417fbfac556a40d45e022c21f0 100644
--- a/civicrm/CRM/Core/CodeGen/Reflection.php
+++ b/civicrm/CRM/Core/CodeGen/Reflection.php
@@ -14,11 +14,7 @@ class CRM_Core_CodeGen_Reflection extends CRM_Core_CodeGen_BaseTask {
     // for the checksum.
 
     // skip this task on test environment as the schema generation should only be triggered during installation/upgrade
-    if (CIVICRM_UF == 'UnitTests') {
-      return FALSE;
-    }
-
-    return TRUE;
+    return CIVICRM_UF !== 'UnitTests';
   }
 
   /**
diff --git a/civicrm/CRM/Core/CodeGen/Specification.php b/civicrm/CRM/Core/CodeGen/Specification.php
index e64367f97b6f766e93263c92e8dbf766ecab4e53..24013d7257408cbf30ed58d446be1db43572d3d7 100644
--- a/civicrm/CRM/Core/CodeGen/Specification.php
+++ b/civicrm/CRM/Core/CodeGen/Specification.php
@@ -552,11 +552,7 @@ class CRM_Core_CodeGen_Specification {
    */
   private function getPhpNullable($fieldXML) {
     $required = $this->value('required', $fieldXML);
-    if ($required) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return !$required;
   }
 
   /**
diff --git a/civicrm/CRM/Core/Component.php b/civicrm/CRM/Core/Component.php
index a837ca92ab8302e1e19bb9cac32d9c34c339cb1c..f9f91e8a086c3a11ad0f68a2c684ba10e481249e 100644
--- a/civicrm/CRM/Core/Component.php
+++ b/civicrm/CRM/Core/Component.php
@@ -416,7 +416,44 @@ class CRM_Core_Component {
   }
 
   /**
-   * Callback for the "enable_components" setting
+   * Callback for the "enable_components" setting (pre change)
+   *
+   * Before a component is disabled, disable reverse-dependencies (all extensions dependent on it).
+   *
+   * This is imperfect because it only goes one-level deep:
+   * it doesn't deal with any extensions that depend on the ones being disabled.
+   * The proper fix for that would probably be something like a CASCADE mode for
+   * disabling an extension with all its reverse dependencies (which would render this function moot).
+   *
+   * @param array $oldValue
+   *   List of component names.
+   * @param array $newValue
+   *   List of component names.
+   *
+   * @throws \CRM_Core_Exception.
+   */
+  public static function preToggleComponents($oldValue, $newValue): void {
+    if (is_array($oldValue) && is_array($newValue)) {
+      $disabledComponents = array_diff($oldValue, $newValue);
+    }
+    if (empty($disabledComponents)) {
+      return;
+    }
+    $disabledExtensions = array_map(['CRM_Utils_String', 'convertStringToSnakeCase'], $disabledComponents);
+    $manager = CRM_Extension_System::singleton()->getManager();
+    $extensions = $manager->getStatuses();
+    foreach ($extensions as $extension => $status) {
+      if ($status === CRM_Extension_Manager::STATUS_INSTALLED) {
+        $info = $manager->mapper->keyToInfo($extension);
+        if (array_intersect($info->requires, $disabledExtensions)) {
+          $manager->disable($extension);
+        }
+      }
+    }
+  }
+
+  /**
+   * Callback for the "enable_components" setting (post change)
    *
    * When a component is enabled or disabled, ensure the corresponding module-extension is also enabled/disabled.
    *
@@ -427,7 +464,7 @@ class CRM_Core_Component {
    *
    * @throws \CRM_Core_Exception.
    */
-  public static function onToggleComponents($oldValue, $newValue): void {
+  public static function postToggleComponents($oldValue, $newValue): void {
     if (CRM_Core_Config::isUpgradeMode()) {
       return;
     }
diff --git a/civicrm/CRM/Core/Component/Info.php b/civicrm/CRM/Core/Component/Info.php
index 037b3cea0eb3e395acf3863edea59186309a5925..328f62d28a186311eb875a28c74f59d6e1a8aa3f 100644
--- a/civicrm/CRM/Core/Component/Info.php
+++ b/civicrm/CRM/Core/Component/Info.php
@@ -110,17 +110,6 @@ abstract class CRM_Core_Component_Info {
     $this->info['url'] = $this->getKeyword();
   }
 
-  /**
-   * EXPERIMENTAL: Get a list of AngularJS modules
-   *
-   * @return array
-   *   list of modules; same format as CRM_Utils_Hook::angularModules(&$angularModules)
-   * @see CRM_Utils_Hook::angularModules
-   */
-  public function getAngularModules() {
-    return [];
-  }
-
   /**
    * Name of the module-extension coupled with this component
    * @return string
diff --git a/civicrm/CRM/Core/Config.php b/civicrm/CRM/Core/Config.php
index 2018a486fb1ec7f10e5c8508a32b09e883610681..86353a8a497199b613a314d8abe448b623ee42f3 100644
--- a/civicrm/CRM/Core/Config.php
+++ b/civicrm/CRM/Core/Config.php
@@ -431,11 +431,7 @@ class CRM_Core_Config extends CRM_Core_Config_MagicMerge {
       $path = $_GET[$urlVar] ?? NULL;
     }
 
-    if ($path && preg_match('/^civicrm\/upgrade(\/.*)?$/', $path)) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return ($path && preg_match('/^civicrm\/upgrade(\/.*)?$/', $path));
   }
 
   /**
diff --git a/civicrm/CRM/Core/DAO/MessageTemplate.php b/civicrm/CRM/Core/DAO/MessageTemplate.php
index fd7f5cafd221c3384c8bfc225962e0c704e6870d..85db7bf294671d0c33bf69c422b66c10978610bf 100644
--- a/civicrm/CRM/Core/DAO/MessageTemplate.php
+++ b/civicrm/CRM/Core/DAO/MessageTemplate.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/MessageTemplate.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:6dc7072586d725f18dd3c984091820f0)
+ * (GenCodeChecksum:c5ea23571e85e6abb0e42fe204e97dc4)
  */
 
 /**
@@ -23,6 +23,13 @@ class CRM_Core_DAO_MessageTemplate extends CRM_Core_DAO {
    */
   public static $_tableName = 'civicrm_msg_template';
 
+  /**
+   * Icon associated with this entity.
+   *
+   * @var string
+   */
+  public static $_icon = 'fa-newspaper-o';
+
   /**
    * Field to show when displaying a record.
    *
diff --git a/civicrm/CRM/Core/DAO/PreferencesDate.php b/civicrm/CRM/Core/DAO/PreferencesDate.php
index f6c1f48e00dda79154151d1fb8cb45767f3316a5..f2273b32e73d985c0d088e1c8d259de961a7816b 100644
--- a/civicrm/CRM/Core/DAO/PreferencesDate.php
+++ b/civicrm/CRM/Core/DAO/PreferencesDate.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/PreferencesDate.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:c83fafaf0b7ee8513ce6de9844d7a729)
+ * (GenCodeChecksum:7e0344ca89b265be75ff2995b711dc61)
  */
 
 /**
@@ -36,7 +36,9 @@ class CRM_Core_DAO_PreferencesDate extends CRM_Core_DAO {
    * @var string[]
    */
   protected static $_paths = [
-    'update' => 'civicrm/admin/setting/preferences/date?reset=1&action=update&id=[id]',
+    'add' => 'civicrm/admin/setting/preferences/date/edit?reset=1&action=add',
+    'browse' => 'civicrm/admin/setting/preferences/date?reset=1',
+    'update' => 'civicrm/admin/setting/preferences/date/edit?reset=1&action=update&id=[id]',
   ];
 
   /**
diff --git a/civicrm/CRM/Core/DAO/UFMatch.php b/civicrm/CRM/Core/DAO/UFMatch.php
index aaa71a8278f2c0b605534cdbf532663ea5c20329..58948427a7267a76965875ebcaf035ce3bb68ed5 100644
--- a/civicrm/CRM/Core/DAO/UFMatch.php
+++ b/civicrm/CRM/Core/DAO/UFMatch.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/UFMatch.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ddf0ceeb22715a1ee0b7b93c90df31f2)
+ * (GenCodeChecksum:19280813191bcf496c8e43eb9778157a)
  */
 
 /**
@@ -336,6 +336,15 @@ class CRM_Core_DAO_UFMatch extends CRM_Core_DAO {
         'localizable' => FALSE,
         'sig' => 'civicrm_uf_match::0::uf_id',
       ],
+      'UI_uf_match_uf_id_domain_id' => [
+        'name' => 'UI_uf_match_uf_id_domain_id',
+        'field' => [
+          0 => 'uf_id',
+          1 => 'domain_id',
+        ],
+        'localizable' => FALSE,
+        'sig' => 'civicrm_uf_match::0::uf_id::domain_id',
+      ],
       'UI_uf_name_domain_id' => [
         'name' => 'UI_uf_name_domain_id',
         'field' => [
diff --git a/civicrm/CRM/Core/Form.php b/civicrm/CRM/Core/Form.php
index da2a22ae6d1238ab6e188ce8e60a4a99bc66c0d2..6dae88f22eac973e1ef3e1011e6d3b035070cd6a 100644
--- a/civicrm/CRM/Core/Form.php
+++ b/civicrm/CRM/Core/Form.php
@@ -319,6 +319,9 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
     // Required for footer.tpl,
     // See CRM_Activity_Form_ActivityTest:testInboundEmailDisplaysWithLineBreaks.
     'footer_status_severity',
+    // Required for some profiles (e.g on the Main page of the contribution form flow).
+    // A bit tricky to add closer to the usage due to conditionality of inclusion
+    'showCMS',
   ];
 
   /**
@@ -623,10 +626,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
     $this->postProcessHook();
 
     // Respond with JSON if in AJAX context (also support legacy value '6')
-    if ($allowAjax && !empty($_REQUEST['snippet']) && in_array($_REQUEST['snippet'], [
-      CRM_Core_Smarty::PRINT_JSON,
-      6,
-    ])) {
+    if ($allowAjax && !empty($_REQUEST['snippet']) && in_array($_REQUEST['snippet'], [CRM_Core_Smarty::PRINT_JSON, 6])) {
       $this->ajaxResponse['buttonName'] = str_replace('_qf_' . $this->getAttribute('id') . '_', '', $this->controller->getButtonName());
       $this->ajaxResponse['action'] = $this->_action;
       if (isset($this->_id) || isset($this->id)) {
@@ -712,6 +712,8 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
    * buildQuickForm.
    */
   public function buildForm() {
+    // @todo - move this to the end of the function - then it can be checked
+    // ie $this->isBuilt() to determine whether variables are not yet in getSubmittedValues()
     $this->_formBuilt = TRUE;
 
     $this->preProcess();
@@ -918,9 +920,9 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
   }
 
   /**
-   * @return int
+   * @return int|null
    */
-  public function getPaymentProcessorID(): int {
+  public function getPaymentProcessorID(): ?int {
     return (int) $this->_paymentProcessorID;
   }
 
@@ -945,8 +947,6 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
         ) {
           $this->_paymentProcessor = $paymentProcessorDetail;
           $this->assign('paymentProcessor', $this->_paymentProcessor);
-          // Setting this is a bit of a legacy overhang.
-          $this->_paymentObject = $paymentProcessorDetail['object'];
         }
       }
       // It's not clear why we set this on the form.
@@ -2084,7 +2084,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
    * @return mixed
    */
   public function getVar($name) {
-    return $this->$name ?? NULL;
+    return $this->$name;
   }
 
   /**
@@ -2324,9 +2324,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
     $props['data-select-params'] = json_encode($props['select']);
     $props['data-api-params'] = json_encode($props['api']);
     $props['data-api-entity'] = $props['entity'];
-    if (!empty($props['select']['quickAdd'])) {
-      Civi::service('angularjs.loader')->addModules(['af']);
-    }
+
     CRM_Utils_Array::remove($props, 'select', 'api', 'entity');
     return $this->add('text', $name, $label, $props, $required);
   }
@@ -2880,10 +2878,10 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
   private function validateChainSelectFields() {
     foreach ($this->_chainSelectFields as $control => $target) {
       if ($this->elementExists($control) && $this->elementExists($target)) {
-        $controlValue = (array) $this->getElementValue($control);
+        $controlValue = (array) $this->getSubmitValue($control);
         $targetField = $this->getElement($target);
         $controlType = $targetField->getAttribute('data-callback') == 'civicrm/ajax/jqCounty' ? 'stateProvince' : 'country';
-        $targetValue = array_filter((array) $targetField->getValue());
+        $targetValue = array_filter((array) $this->getSubmitValue($target));
         if ($targetValue || $this->getElementError($target)) {
           $options = CRM_Core_BAO_Location::getChainSelectValues($controlValue, $controlType, TRUE);
           if ($targetValue) {
@@ -2932,29 +2930,17 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
   /**
    * Get the currency for the form.
    *
-   * @todo this should be overriden on the forms rather than having this
-   * historic, possible handling in here. As we clean that up we should
-   * add deprecation notices into here.
-   *
-   * @param array $submittedValues
-   *   Array allowed so forms inheriting this class do not break.
-   *   Ideally we would make a clear standard around how submitted values
-   *   are stored (is $this->_values consistently doing that?).
-   *
    * @return string
    */
-  public function getCurrency($submittedValues = []) {
-    $currency = $this->_values['currency'] ?? NULL;
-    // For event forms, currency is in a different spot
-    if (empty($currency)) {
-      $currency = CRM_Utils_Array::value('currency', CRM_Utils_Array::value('event', $this->_values));
+  public function getCurrency() {
+    if ($this->getSubmittedValue('currency')) {
+      return $this->getSubmittedValue('currency');
     }
-    if (empty($currency)) {
-      $currency = CRM_Utils_Request::retrieveValue('currency', 'String');
+    $currency = CRM_Utils_Request::retrieveValue('currency', 'String');
+    if ($currency) {
+      return $currency;
     }
-    // @todo If empty there is a problem - we should probably put in a deprecation notice
-    // to warn if that seems to be happening.
-    return $currency;
+    return \Civi::settings()->get('defaultCurrency');
   }
 
   /**
@@ -3005,7 +2991,8 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
    *
    * @param string $default
    *
-   * @throws \CRM_Core_Exception
+   *
+   * @noinspection PhpUnhandledExceptionInspection
    */
   public function setSelectedChild($default = NULL) {
     $selectedChild = CRM_Utils_Request::retrieve('selectedChild', 'Alphanumeric', $this, FALSE, $default);
diff --git a/civicrm/CRM/Core/Form/Renderer.php b/civicrm/CRM/Core/Form/Renderer.php
index 11f40d86ed84a8ab3d3ebf187becd77badac2520..a6c4e687684a9cd917e32bd5d12234942b6218a3 100644
--- a/civicrm/CRM/Core/Form/Renderer.php
+++ b/civicrm/CRM/Core/Form/Renderer.php
@@ -115,7 +115,7 @@ class CRM_Core_Form_Renderer extends HTML_QuickForm_Renderer_ArraySmarty {
         $el['html'] = $date . '<input type="hidden" value="' . $element->getValue() . '" name="' . $element->getAttribute('name') . '">';
       }
       // Render html for wysiwyg textareas
-      if ($el['type'] == 'textarea' && isset($element->_attributes['class']) && strstr($element->_attributes['class'], 'wysiwyg')) {
+      if ($el['type'] == 'textarea' && isset($element->_attributes['class']) && str_contains($element->_attributes['class'], 'wysiwyg')) {
         $el['html'] = '<span class="crm-frozen-field">' . $el['value'] . '</span>';
       }
       else {
diff --git a/civicrm/CRM/Core/Form/Search.php b/civicrm/CRM/Core/Form/Search.php
index b071a4c45f141f6beb7fb4e33b70c9fe4c2249f3..09d9d68280ed0a72f1188987076e9bcec8f028fa 100644
--- a/civicrm/CRM/Core/Form/Search.php
+++ b/civicrm/CRM/Core/Form/Search.php
@@ -438,9 +438,9 @@ class CRM_Core_Form_Search extends CRM_Core_Form {
       return;
     }
 
-    $this->_group = CRM_Core_PseudoConstant::nestedGroup();
-    if ($this->_group) {
-      $this->add('select', 'group', $this->getGroupLabel(), $this->_group, FALSE,
+    $nestedGroup = CRM_Core_PseudoConstant::nestedGroup();
+    if ($nestedGroup) {
+      $this->add('select', 'group', $this->getGroupLabel(), $nestedGroup, FALSE,
         [
           'id' => 'group',
           'multiple' => 'multiple',
diff --git a/civicrm/CRM/Core/Invoke.php b/civicrm/CRM/Core/Invoke.php
index 64c1f77460568817579a40178fd8de605c74d36a..b2a3e75550a9af203b281ce0e2b4824973865f3e 100644
--- a/civicrm/CRM/Core/Invoke.php
+++ b/civicrm/CRM/Core/Invoke.php
@@ -303,11 +303,11 @@ class CRM_Core_Invoke {
           unset($pageArgs['mode']);
         }
         $title = $item['title'] ?? NULL;
-        if (strstr($item['page_callback'], '_Page') || strstr($item['page_callback'], '\\Page\\')) {
+        if (str_contains($item['page_callback'], '_Page') || str_contains($item['page_callback'], '\\Page\\')) {
           $object = new $item['page_callback']($title, $mode);
           $object->urlPath = explode('/', $_GET[$config->userFrameworkURLVar]);
         }
-        elseif (strstr($item['page_callback'], '_Controller') || strstr($item['page_callback'], '\\Controller\\')) {
+        elseif (str_contains($item['page_callback'], '_Controller') || str_contains($item['page_callback'], '\\Controller\\')) {
           $addSequence = 'false';
           if (isset($pageArgs['addSequence'])) {
             $addSequence = $pageArgs['addSequence'];
diff --git a/civicrm/CRM/Core/Menu.php b/civicrm/CRM/Core/Menu.php
index 2a23ee2053279b11a4e43688699c1941744eb6e4..c9a9ff3159baf4aacc05bc90cde65a602585dbb8 100644
--- a/civicrm/CRM/Core/Menu.php
+++ b/civicrm/CRM/Core/Menu.php
@@ -635,7 +635,7 @@ UNION (
       }
     }
 
-    if (strstr($path, 'report/instance')) {
+    if (str_contains($path, 'report/instance')) {
       $args = explode('/', $path);
       if (is_numeric(end($args))) {
         $menuPath['path'] .= '/' . end($args);
diff --git a/civicrm/CRM/Core/OptionValue.php b/civicrm/CRM/Core/OptionValue.php
index 89f45a28da2abe29d95d353c60ab371c4b336ce8..2ce77fe815199227cc6e45c0de05166775747d1f 100644
--- a/civicrm/CRM/Core/OptionValue.php
+++ b/civicrm/CRM/Core/OptionValue.php
@@ -306,12 +306,7 @@ class CRM_Core_OptionValue {
       elseif ($mode == '') {
         //the fields email greeting and postal greeting are meant only for Individual and Household
         //the field addressee is meant for all contact types, CRM-4575
-        if (in_array($contactType, [
-          'Individual',
-          'Household',
-          'Organization',
-          'All',
-        ])) {
+        if (in_array($contactType, ['Individual', 'Household', 'Organization', 'All'])) {
           $nameTitle = [
             'addressee' => [
               'name' => 'addressee',
diff --git a/civicrm/CRM/Core/Page.php b/civicrm/CRM/Core/Page.php
index bfe554070fc6548476a4fe4cdffe81088372fdf7..993166e8fbffa24fcbf873a30e48a249d319a926 100644
--- a/civicrm/CRM/Core/Page.php
+++ b/civicrm/CRM/Core/Page.php
@@ -143,6 +143,16 @@ class CRM_Core_Page {
    */
   public $_permission;
 
+  /**
+   * @var int
+   */
+  protected $_action;
+
+  /**
+   * @var int
+   */
+  protected $_id;
+
   /**
    * Class constructor.
    *
diff --git a/civicrm/CRM/Core/Page/AJAX/Location.php b/civicrm/CRM/Core/Page/AJAX/Location.php
index 0e47c0a46600d4dea37ab0fb9fe44548aa162f53..100968942f452bdd9d86ba8d556d002e8ed396b5 100644
--- a/civicrm/CRM/Core/Page/AJAX/Location.php
+++ b/civicrm/CRM/Core/Page/AJAX/Location.php
@@ -155,7 +155,7 @@ class CRM_Core_Page_AJAX_Location {
               $elements["onbehalf_{$key}"]['value'][$k] = $v;
             }
           }
-          elseif (strstr($htmlType, 'Multi-Select')) {
+          elseif (str_contains($htmlType, 'Multi-Select')) {
             $elements["onbehalf_{$key}"]['type'] = 'Multi-Select';
             $elements["onbehalf_{$key}"]['value'] = array_values($defaults[$key]);
           }
@@ -210,15 +210,8 @@ class CRM_Core_Page_AJAX_Location {
     );
     // lets output only required fields.
     foreach ($addressOptions as $element => $isSet) {
-      if ($isSet && (!in_array($element, [
-        'im',
-        'openid',
-      ]))) {
-        if (in_array($element, [
-          'country',
-          'state_province',
-          'county',
-        ])) {
+      if ($isSet && (!in_array($element, ['im', 'openid']))) {
+        if (in_array($element, ['country', 'state_province', 'county'])) {
           $element .= '_id';
         }
         elseif ($element == 'address_name') {
@@ -227,29 +220,17 @@ class CRM_Core_Page_AJAX_Location {
         $fld = "address[1][{$element}]";
         $value = $location['address'][1][$element] ?? NULL;
         $value = $value ?: "";
-        $result[str_replace([
-          '][',
-          '[',
-          "]",
-        ], ['_', '_', ''], $fld)] = $value;
+        $result[str_replace(['][', '[', ']'], ['_', '_', ''], $fld)] = $value;
       }
     }
 
-    foreach ([
-      'email',
-      'phone_type_id',
-      'phone',
-    ] as $element) {
+    foreach (['email', 'phone_type_id', 'phone'] as $element) {
       $block = ($element == 'phone_type_id') ? 'phone' : $element;
       for ($i = 1; $i < 3; $i++) {
         $fld = "{$block}[{$i}][{$element}]";
         $value = $location[$block][$i][$element] ?? NULL;
         $value = $value ?: "";
-        $result[str_replace([
-          '][',
-          '[',
-          "]",
-        ], ['_', '_', ''], $fld)] = $value;
+        $result[str_replace(['][', '[', ']'], ['_', '_', ''], $fld)] = $value;
       }
     }
 
diff --git a/civicrm/CRM/Core/Payment.php b/civicrm/CRM/Core/Payment.php
index 9e0f2a33a87ecba2938175e0fe59fa9b16555edb..bc9a08b1406c607bd74e05e32146d667b7f9b2e8 100644
--- a/civicrm/CRM/Core/Payment.php
+++ b/civicrm/CRM/Core/Payment.php
@@ -609,6 +609,22 @@ abstract class CRM_Core_Payment {
         }
         return ts('Make Contribution');
 
+      case 'eventContinueText':
+        // This use of the ts function uses the legacy interpolation of the button name to avoid translations having to be re-done.
+        if ((int) $this->_paymentProcessor['billing_mode'] === self::BILLING_MODE_NOTIFY) {
+          return ts('Click <strong>%1</strong> to checkout with %2.', [1 => ts('Register'), 2 => $this->_paymentProcessor['frontend_title']]);
+        }
+        return ts('Click <strong>%1</strong> to complete your registration.', [1 => ts('Register')]);
+
+      case 'eventConfirmText':
+        if ((int) $this->_paymentProcessor['billing_mode'] === self::BILLING_MODE_NOTIFY) {
+          return ts('Your registration payment has been submitted to %1 for processing', [1 => $this->_paymentProcessor['frontend_title']]);
+        }
+        return '';
+
+      case 'eventConfirmEmailText':
+        return ts('A registration confirmation email will be sent to %1 once the transaction is processed successfully.', [1 => $params['email']]);
+
       case 'cancelRecurDetailText':
         if ($params['mode'] === 'auto_renew') {
           return ts('Click the button below if you want to cancel the auto-renewal option for your %1 membership. This will not cancel your membership. However you will need to arrange payment for renewal when your membership expires.',
@@ -1496,13 +1512,14 @@ abstract class CRM_Core_Payment {
   /**
    * Refunds payment
    *
-   * Payment processors should set payment_status_id if it set the status to Refunded in case the transaction is successful
-   *
    * @param array $params
    *
-   * @throws \Civi\Payment\Exception\PaymentProcessorException
+   * @return array
+   *   Result array (containing at least the key refund_status)
    */
-  public function doRefund(&$params) {}
+  public function doRefund(&$params) {
+    return ['refund_status' => 'Completed'];
+  }
 
   /**
    * Query payment processor for details about a transaction.
@@ -1544,15 +1561,11 @@ abstract class CRM_Core_Payment {
       return FALSE;
     }
 
-    if (isset($_GET['payment_date']) &&
+    return (isset($_GET['payment_date']) &&
       isset($_GET['merchant_return_link']) &&
       ($_GET['payment_status'] ?? NULL) == 'Completed' &&
       $paymentProcessor['payment_processor_type'] == "PayPal_Standard"
-    ) {
-      return TRUE;
-    }
-
-    return FALSE;
+    );
   }
 
   /**
@@ -1871,6 +1884,20 @@ abstract class CRM_Core_Payment {
     return method_exists(CRM_Utils_System::getClassName($this), 'changeSubscriptionAmount');
   }
 
+  /**
+   * Checks if payment processor supports not returning to the form processing.
+   *
+   * The exists to support historical event form logic where emails are sent
+   * & the form postProcess hook is called before redirecting the browser where
+   * the user is redirected.
+   *
+   * @return bool
+   */
+  public function supportsNoReturn(): bool {
+    $billingMode = (int) $this->_paymentProcessor['billing_mode'];
+    return $billingMode === self::BILLING_MODE_NOTIFY || $billingMode === self::BILLING_MODE_BUTTON;
+  }
+
   /**
    * Checks if payment processor supports recurring contributions
    *
diff --git a/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php b/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php
index 6cd7b694a5a6d17ecf3300020cee36f1da0c7660..50dd20ff5148ea3f63de8286d4dde80f20ebf527 100644
--- a/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php
+++ b/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php
@@ -310,7 +310,36 @@ INNER JOIN civicrm_contribution co ON co.contribution_recur_id = cr.id
    * @throws \CRM_Core_Exception
    */
   protected function getContributionID(): int {
-    return (int) $this->retrieve('x_invoice_num', 'Integer');
+    $id = $this->retrieve('x_invoice_num', 'String');
+
+    /* Fix for https://lab.civicrm.org/dev/core/-/issues/4833 :
+     * There's a potential conflict in the way x_invoice_num is used currently,
+     * vs the way it was used in the past. This problem will affect long-running
+     * ARB (recurring) subscriptions, if they're old enough (e.g. created before Nov 2021,
+     * though admittedly I'm not sure of that cutoff date).
+     *
+     * Summary:
+     * - Currently: x_invoice_num is an integer equal to civicrm_contribution.id;
+     * - Previously, x_invoice_num was a 20-character alphanumeric string,
+     * stored in the comma-delimited value of civicrm_contribution.trxn_id.
+     *
+     * Therefore: If x_invoice_num is not an integer, AND it's 20 characters long,
+     * we'll assume we might be processing a payment on a long-running "old-style"
+     * ARB subscription and attempt to match on (civicrm_contribution.trxn_id contains
+     * x_invoice_num).
+     */
+    if (
+      ($id !== (int) $id)
+      && (strlen($id) == 20)
+    ) {
+      $contribution = Contribution::get(FALSE)
+        ->addSelect('id')
+        ->addWhere('trxn_id', 'LIKE', "$id,%")
+        ->execute()
+        ->first();
+      $id = $contribution['id'];
+    }
+    return (int) $id;
   }
 
   /**
diff --git a/civicrm/CRM/Core/Payment/Dummy.php b/civicrm/CRM/Core/Payment/Dummy.php
index d2d3195c689b1a2d2d7f1c81ce866493e7b920c0..3bd2318dc797a7efc7f505649385976c4be6b9e3 100644
--- a/civicrm/CRM/Core/Payment/Dummy.php
+++ b/civicrm/CRM/Core/Payment/Dummy.php
@@ -205,7 +205,9 @@ class CRM_Core_Payment_Dummy extends CRM_Core_Payment {
     $statuses = CRM_Contribute_BAO_Contribution::buildOptions('contribution_status_id', 'validate');
 
     $propertyBag = PropertyBag::cast($params);
-
+    if ((float) $propertyBag->getAmount() !== (float) $params['amount']) {
+      CRM_Core_Error::deprecatedWarning('amount should be passed through in machine-ready format');
+    }
     // If we have a $0 amount, skip call to processor and set payment_status to Completed.
     // Conceivably a processor might override this - perhaps for setting up a token - but we don't
     // have an example of that at the mome.
diff --git a/civicrm/CRM/Core/Payment/Form.php b/civicrm/CRM/Core/Payment/Form.php
index 6002459f34172e74807ee92779f43465aaa50d3f..954cb96169dfd9295274d7cf2ca4ec2c41bdbfa5 100644
--- a/civicrm/CRM/Core/Payment/Form.php
+++ b/civicrm/CRM/Core/Payment/Form.php
@@ -315,12 +315,13 @@ class CRM_Core_Payment_Form {
   /**
    * Map address fields.
    *
-   * @param int $id
+   * @param int $id unused
    * @param array $src
    * @param array $dst
    * @param bool $reverse
    */
   public static function mapParams($id, $src, &$dst, $reverse = FALSE) {
+    $id = CRM_Core_BAO_LocationType::getBilling();
     $map = [
       'first_name' => 'billing_first_name',
       'middle_name' => 'billing_middle_name',
diff --git a/civicrm/CRM/Core/Payment/ProcessorForm.php b/civicrm/CRM/Core/Payment/ProcessorForm.php
index 381090f7aa93fc56926131dbd2a9ea3bbcc1baaf..257125e1d2849efa1c76179ef878a91f1fe2a416 100644
--- a/civicrm/CRM/Core/Payment/ProcessorForm.php
+++ b/civicrm/CRM/Core/Payment/ProcessorForm.php
@@ -25,13 +25,11 @@ class CRM_Core_Payment_ProcessorForm {
 
   /**
    * @param CRM_Contribute_Form_Contribution_Main|CRM_Event_Form_Registration_Register|CRM_Financial_Form_Payment $form
-   * @param null $type
-   * @param null $mode
    *
    * @throws Exception
    */
-  public static function preProcess(&$form, $type = NULL, $mode = NULL) {
-    $type = $type ?: CRM_Utils_Request::retrieve('type', 'String', $form);
+  public static function preProcess($form) {
+    $type = CRM_Utils_Request::retrieve('type', 'String', $form);
     if ($type) {
       // @todo not sure when this would be true. Never passed in.
       $form->_paymentProcessor = CRM_Financial_BAO_PaymentProcessor::getPayment($type, $form->_mode);
@@ -42,14 +40,14 @@ class CRM_Core_Payment_ProcessorForm {
       return;
     }
     $form->set('paymentProcessor', $form->_paymentProcessor);
-    $form->_paymentObject = System::singleton()->getByProcessor($form->_paymentProcessor);
+    $paymentObject = System::singleton()->getByProcessor($form->_paymentProcessor);
     if ($form->paymentInstrumentID) {
-      $form->_paymentObject->setPaymentInstrumentID($form->paymentInstrumentID);
+      $paymentObject->setPaymentInstrumentID($form->paymentInstrumentID);
     }
-    $form->_paymentObject->setBackOffice($form->isBackOffice);
+    $paymentObject->setBackOffice($form->isBackOffice);
     $form->assign('isBackOffice', $form->isBackOffice);
 
-    $form->assign('suppressSubmitButton', $form->_paymentObject->isSuppressSubmitButtons());
+    $form->assign('suppressSubmitButton', $paymentObject->isSuppressSubmitButtons());
 
     CRM_Financial_Form_Payment::addCreditCardJs($form->getPaymentProcessorID());
     $form->assign('paymentProcessorID', $form->getPaymentProcessorID());
@@ -61,7 +59,7 @@ class CRM_Core_Payment_ProcessorForm {
 
     // also set cancel subscription url
     if (!empty($form->_paymentProcessor['is_recur']) && !empty($form->_values['is_recur'])) {
-      $form->_values['cancelSubscriptionUrl'] = $form->_paymentObject->subscriptionURL(NULL, NULL, 'cancel');
+      $form->_values['cancelSubscriptionUrl'] = $paymentObject->subscriptionURL(NULL, NULL, 'cancel');
     }
 
     $paymentProcessorBillingFields = array_keys($form->_paymentProcessor['object']->getBillingAddressFields());
@@ -110,7 +108,7 @@ class CRM_Core_Payment_ProcessorForm {
 
     if (!empty($form->_membershipBlock) && !empty($form->_membershipBlock['is_separate_payment']) &&
       (!empty($form->_paymentProcessor['class_name']) &&
-        !$form->_paymentObject->supports('MultipleConcurrentPayments')
+        !$paymentObject->supports('MultipleConcurrentPayments')
       )
     ) {
 
diff --git a/civicrm/CRM/Core/Permission.php b/civicrm/CRM/Core/Permission.php
index f8f2fb7ace178231d4f2f4e491825b41b2f7f1d2..b37cf4c3e1e901cf072bbddb77c79d69ca8155a5 100644
--- a/civicrm/CRM/Core/Permission.php
+++ b/civicrm/CRM/Core/Permission.php
@@ -234,11 +234,7 @@ class CRM_Core_Permission {
       return TRUE;
     }
 
-    if (self::check('administer CiviCRM data', $userId)) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return self::check('administer CiviCRM data', $userId);
   }
 
   /**
@@ -1152,7 +1148,11 @@ class CRM_Core_Permission {
       ],
     ];
     $permissions['line_item'] = $permissions['contribution'];
-    $permissions['product'] = $permissions['contribution'];
+    $permissions['product'] = $permissions['premiums'] = $permissions['premiums_product'] = $permissions['contribution'];
+    // Add 'make online contributions' permissions to allow anon users to access these entities
+    // (permissions are controlled by financial ACLs)
+    $permissions['product']['get'] = $permissions['premium']['get'] = $permissions['premiums_product']['get'] = [['access CiviCRM', 'access CiviContribute', 'make online contributions']];
+    $permissions['product']['meta'] = $permissions['premium']['meta'] = $permissions['premiums_product']['meta'] = [['access CiviCRM', 'access CiviContribute', 'make online contributions']];
 
     $permissions['financial_item'] = $permissions['contribution'];
     $permissions['financial_type']['get'] = $permissions['contribution']['get'];
diff --git a/civicrm/CRM/Core/Resources.php b/civicrm/CRM/Core/Resources.php
index 748aaa1c2629519233b74eba92c6a7bf973ef9dc..3d3db50d7ae20240c44d60996d730c9cbf4120d9 100644
--- a/civicrm/CRM/Core/Resources.php
+++ b/civicrm/CRM/Core/Resources.php
@@ -381,6 +381,9 @@ class CRM_Core_Resources implements CRM_Core_Resources_CollectionAdderInterface
     if (!self::isAjaxMode()) {
       $this->addBundle('coreResources');
       $this->addCoreStyles($region);
+      // This ensures that if a popup link requires AngularJS, it will always be available.
+      // Additional Ang modules required by popups will be loaded on-the-fly by Civi\Angular\AngularLoader
+      Civi::service('angularjs.loader')->addModules(['crmResource']);
     }
     return $this;
   }
@@ -419,8 +422,31 @@ class CRM_Core_Resources implements CRM_Core_Resources_CollectionAdderInterface
     return $this->strings;
   }
 
+  /**
+   * Get the params used to render crm-l10n.js
+   * Gets called above the caching layer and then used
+   * in the render function below
+   */
+  public static function getL10nJsParams(): array {
+    $settings = Civi::settings();
+    return [
+      'cid' => CRM_Core_Session::getLoggedInContactID() ?: 0,
+      'includeEmailInName' => (bool) $settings->get('includeEmailInName'),
+      'ajaxPopupsEnabled' => (bool) $settings->get('ajaxPopupsEnabled'),
+      'allowAlertAutodismissal' => (bool) $settings->get('allow_alert_autodismissal'),
+      'resourceCacheCode' => Civi::resources()->getCacheCode(),
+      'locale' => CRM_Core_I18n::getLocale(),
+      'lcMessages' => $settings->get('lcMessages'),
+      'dateInputFormat' => $settings->get('dateInputFormat'),
+      'timeInputFormat' => $settings->get('timeInputFormat'),
+      'moneyFormat' => CRM_Utils_Money::format(1234.56),
+    ];
+  }
+
   /**
    * Create dynamic script for localizing js widgets.
+   * Params come from the function above
+   * @see getL10nJsParams
    */
   public static function renderL10nJs(GenericHookEvent $e) {
     if ($e->asset !== 'crm-l10n.js') {
diff --git a/civicrm/CRM/Core/Resources/Common.php b/civicrm/CRM/Core/Resources/Common.php
index e470406ace9122affa42c14d28b48a73619dd6c0..73a8bd2b991d2c15a90ff903ca26d2e755bb717d 100644
--- a/civicrm/CRM/Core/Resources/Common.php
+++ b/civicrm/CRM/Core/Resources/Common.php
@@ -206,18 +206,7 @@ class CRM_Core_Resources_Common {
 
     // Dynamic localization script
     if (!CRM_Core_Config::isUpgradeMode()) {
-      $items[] = Civi::service('asset_builder')->getUrl('crm-l10n.js', [
-        'cid' => $contactID,
-        'includeEmailInName' => (bool) $settings->get('includeEmailInName'),
-        'ajaxPopupsEnabled' => (bool) $settings->get('ajaxPopupsEnabled'),
-        'allowAlertAutodismissal' => (bool) $settings->get('allow_alert_autodismissal'),
-        'resourceCacheCode' => Civi::resources()->getCacheCode(),
-        'locale' => CRM_Core_I18n::getLocale(),
-        'lcMessages' => $settings->get('lcMessages'),
-        'dateInputFormat' => $settings->get('dateInputFormat'),
-        'timeInputFormat' => $settings->get('timeInputFormat'),
-        'moneyFormat' => CRM_Utils_Money::format(1234.56),
-      ]);
+      $items[] = Civi::service('asset_builder')->getUrl('crm-l10n.js', CRM_Core_Resources::getL10nJsParams());
     }
 
     // These scripts are only needed by back-office users
diff --git a/civicrm/CRM/Core/Smarty/plugins/function.sectionTotal.php b/civicrm/CRM/Core/Smarty/plugins/function.sectionTotal.php
index 37e3068652747ff1055be748ca94422becfabf41..5cc7fb5c3ec493722b8700ca3e9ddc8f6669bf85 100644
--- a/civicrm/CRM/Core/Smarty/plugins/function.sectionTotal.php
+++ b/civicrm/CRM/Core/Smarty/plugins/function.sectionTotal.php
@@ -28,13 +28,14 @@
  *
  * @param array $params
  *   Template call's parameters.
- * @param CRM_Core_Smarty $smarty
- *   The Smarty object.
  *
  * @return string
  *   the string, translated by gettext
+ *
+ * @deprecated This is called from table.tpl but we aim to remove
+ * from there.
  */
-function smarty_function_sectionTotal($params, &$smarty) {
+function smarty_function_sectionTotal(array $params) {
   /* section totals are stored in template variable 'sectionTotals',
    * which is a two-dimensional array keyed to a string which is a delimited
    * concatenation (using CRM_Core_DAO::VALUE_SEPARATOR) of ordered permutations
@@ -59,5 +60,5 @@ function smarty_function_sectionTotal($params, &$smarty) {
   $totalsKey = implode(CRM_Core_DAO::VALUE_SEPARATOR, $sectionValues);
 
   // return the corresponding total
-  return $smarty->_tpl_vars['sectionTotals'][$totalsKey];
+  return $params['totals'][$totalsKey];
 }
diff --git a/civicrm/CRM/Core/Smarty/plugins/function.simpleActivityContacts.php b/civicrm/CRM/Core/Smarty/plugins/function.simpleActivityContacts.php
index cb3ecf363a7d8595f7f442134d3a0a03302d5a2f..3f092924ec1c94581bd5a2c64b3f82f779092f60 100644
--- a/civicrm/CRM/Core/Smarty/plugins/function.simpleActivityContacts.php
+++ b/civicrm/CRM/Core/Smarty/plugins/function.simpleActivityContacts.php
@@ -50,10 +50,7 @@ function smarty_function_simpleActivityContacts($params, &$smarty) {
     $baseContactParams['return.' . $field] = 1;
   }
 
-  foreach ([
-    'target',
-    'assignee',
-  ] as $role) {
+  foreach (['target', 'assignee'] as $role) {
     $contact = [];
     if (!empty($activity[$role . '_contact_id'])) {
       $contact_id = array_shift($activity[$role . '_contact_id']);
diff --git a/civicrm/CRM/Core/SmartyCompatibility.php b/civicrm/CRM/Core/SmartyCompatibility.php
index 25364d905529c462bdb4561ab1e4c808cbddea03..bc7146020bafdb2f6fdb87ece6a2b286bdf66bcf 100644
--- a/civicrm/CRM/Core/SmartyCompatibility.php
+++ b/civicrm/CRM/Core/SmartyCompatibility.php
@@ -166,7 +166,7 @@ class CRM_Core_SmartyCompatibility extends Smarty {
    */
   public function getTemplateVars($varName = NULL, Smarty_Internal_Data $_ptr = NULL, $searchParents = TRUE) {
     if (method_exists(get_parent_class(), 'getTemplateVars')) {
-      return parent::getTemplateVars($varName . $_ptr, $searchParents);
+      return parent::getTemplateVars($varName, $_ptr, $searchParents);
     }
     return parent::get_template_vars($varName);
   }
diff --git a/civicrm/CRM/Core/xml/Menu/Admin.xml b/civicrm/CRM/Core/xml/Menu/Admin.xml
index 93ecf394771907bec5eef2680783efc812d85b72..1c6dd7cddb577938ca20355873ad002a31d0dfd5 100644
--- a/civicrm/CRM/Core/xml/Menu/Admin.xml
+++ b/civicrm/CRM/Core/xml/Menu/Admin.xml
@@ -231,7 +231,7 @@
      <weight>95</weight>
   </item>
   <item>
-     <path>civicrm/admin/setting/preferences/date</path>
+     <path>civicrm/admin/setting/preferences/date/edit</path>
      <title>Date Preferences</title>
      <page_callback>CRM_Admin_Form_PreferencesDate</page_callback>
      <adminGroup>Customize Data and Screens</adminGroup>
@@ -332,6 +332,11 @@
      <adminGroup>Communications</adminGroup>
      <weight>60</weight>
   </item>
+  <item>
+     <path>civicrm/admin/labelFormats/edit</path>
+     <title>Label Page Formats</title>
+     <page_callback>CRM_Admin_Page_LabelFormats</page_callback>
+  </item>
   <item>
      <path>civicrm/admin/pdfFormats</path>
      <title>Print Page (PDF) Formats</title>
diff --git a/civicrm/CRM/Custom/Form/CustomData.php b/civicrm/CRM/Custom/Form/CustomData.php
index b063936c813acce4ce7c855c5441def892b94a46..d440ccad1c6f2f65f67c82a08a93249e2e0f35a7 100644
--- a/civicrm/CRM/Custom/Form/CustomData.php
+++ b/civicrm/CRM/Custom/Form/CustomData.php
@@ -132,7 +132,7 @@ class CRM_Custom_Form_CustomData {
 
     $gid = (isset($form->_groupID)) ? $form->_groupID : NULL;
     $getCachedTree = $form->_getCachedTree ?? TRUE;
-    if (!is_array($subType) && strstr(($subType ?? ''), CRM_Core_DAO::VALUE_SEPARATOR)) {
+    if (!is_array($subType) && str_contains(($subType ?? ''), CRM_Core_DAO::VALUE_SEPARATOR)) {
       CRM_Core_Error::deprecatedWarning('Using a CRM_Core_DAO::VALUE_SEPARATOR separated subType deprecated, use a comma-separated string instead.');
       $subType = str_replace(CRM_Core_DAO::VALUE_SEPARATOR, ',', trim($subType, CRM_Core_DAO::VALUE_SEPARATOR));
     }
diff --git a/civicrm/CRM/Dedupe/Finder.php b/civicrm/CRM/Dedupe/Finder.php
index 77fe3d185c21c01adea407bfd4b77a24b09c78fb..e6082c455ebc8c46a4ac5ee45109bec9f121dbcf 100644
--- a/civicrm/CRM/Dedupe/Finder.php
+++ b/civicrm/CRM/Dedupe/Finder.php
@@ -191,10 +191,7 @@ class CRM_Dedupe_Finder {
     }
 
     // handle {birth,deceased}_date
-    foreach ([
-      'birth_date',
-      'deceased_date',
-    ] as $date) {
+    foreach (['birth_date', 'deceased_date'] as $date) {
       if (!empty($fields[$date])) {
         $flat[$date] = $fields[$date];
         if (is_array($flat[$date])) {
diff --git a/civicrm/CRM/Dedupe/Merger.php b/civicrm/CRM/Dedupe/Merger.php
index d4cb2f7c616b37f02a3c7292b9e73c57029d816f..e567439dfcc6eb2d5e63f46d13f43586c09f9811 100644
--- a/civicrm/CRM/Dedupe/Merger.php
+++ b/civicrm/CRM/Dedupe/Merger.php
@@ -1561,8 +1561,8 @@ INNER JOIN  civicrm_membership membership2 ON membership1.membership_type_id = m
         $value[1] = NULL;
       }
 
-      // Display a checkbox to migrate, only if the values are different
-      if ($value != $main[$field]) {
+      // Display a checkbox to migrate, only if the values are different, should check type also for true value
+      if ($value !== $main[$field]) {
         // Don't check source if main is empty, because the source of the other contact is not the source of the merged contact
         $isChecked = ($field === 'source') ? FALSE : (!isset($main[$field]) || $main[$field] === '');
         $elements[] = [
@@ -2945,6 +2945,7 @@ ORDER BY civicrm_custom_group.weight,
         // Add this value to the table rows
         $rows["move_location_{$blockName}_{$count}"]['other'] = $displayValue;
         $rows["move_location_{$blockName}_{$count}"]['location_entity'] = $blockName;
+        $rows["move_location_{$blockName}_{$count}"]['location_block_index'] = $count;
 
         // CRM-17556 Only display 'main' contact value if it's the same location + type
         // Look it up from main values...
diff --git a/civicrm/CRM/Event/BAO/Participant.php b/civicrm/CRM/Event/BAO/Participant.php
index e0946b03da3db848f37f8fbaf74cf1affc5685ed..f9f0c1c9569ee052da2d2544ff9969b412998c89 100644
--- a/civicrm/CRM/Event/BAO/Participant.php
+++ b/civicrm/CRM/Event/BAO/Participant.php
@@ -211,10 +211,7 @@ class CRM_Event_BAO_Participant extends CRM_Event_DAO_Participant implements \Ci
     }
     $noteValue = NULL;
     $hasNoteField = FALSE;
-    foreach ([
-      'note',
-      'participant_note',
-    ] as $noteFld) {
+    foreach (['note', 'participant_note'] as $noteFld) {
       if (array_key_exists($noteFld, $params)) {
         $noteValue = $params[$noteFld];
         $hasNoteField = TRUE;
diff --git a/civicrm/CRM/Event/BAO/Query.php b/civicrm/CRM/Event/BAO/Query.php
index f89d58614d66af201e6a29bb8897e481f206c17d..b1bf8f8b6825144e1acaccd62adcf43a9243b133 100644
--- a/civicrm/CRM/Event/BAO/Query.php
+++ b/civicrm/CRM/Event/BAO/Query.php
@@ -270,13 +270,13 @@ class CRM_Event_BAO_Query extends CRM_Core_BAO_Query {
         $exEventId = '';
         if ($query->_where[$grouping]) {
           foreach ($query->_where[$grouping] as $key => $val) {
-            if (strstr($val, 'civicrm_event.id =')) {
+            if (str_contains($val, 'civicrm_event.id =')) {
               $exEventId = $val;
               $extractEventId = explode(" ", $val);
               $value = $extractEventId[2];
               $where = $query->_where[$grouping][$key];
             }
-            elseif (strstr($val, 'civicrm_event.id IN')) {
+            elseif (str_contains($val, 'civicrm_event.id IN')) {
               //extract the first event id if multiple events are selected
               preg_match('/civicrm_event.id IN \(\"(\d+)/', $val, $matches);
               $value = $matches[1];
@@ -405,8 +405,8 @@ class CRM_Event_BAO_Query extends CRM_Core_BAO_Query {
           $op = key($value);
           $value = $value[$op];
         }
-        if (!strstr($op, 'NULL') && !strstr($op, 'EMPTY') && !strstr($op, 'LIKE')) {
-          $regexOp = (strstr($op, '!') || strstr($op, 'NOT')) ? 'NOT REGEXP' : 'REGEXP';
+        if (!str_contains($op, 'NULL') && !str_contains($op, 'EMPTY') && !str_contains($op, 'LIKE')) {
+          $regexOp = (str_contains($op, '!') || str_contains($op, 'NOT')) ? 'NOT REGEXP' : 'REGEXP';
           $regexp = "([[:cntrl:]]|^)" . implode('([[:cntrl:]]|$)|([[:cntrl:]]|^)', (array) $value) . "([[:cntrl:]]|$)";
           $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_participant.$name", $regexOp, $regexp, 'String');
         }
@@ -434,11 +434,7 @@ class CRM_Event_BAO_Query extends CRM_Core_BAO_Query {
       case 'event_type_id':
       case 'event_title':
         $qillName = $name;
-        if (in_array($name, [
-          'event_id',
-          'event_title',
-          'event_is_public',
-        ])) {
+        if (in_array($name, ['event_id', 'event_title', 'event_is_public'])) {
           $name = str_replace('event_', '', $name);
         }
         $dataType = !empty($fields[$qillName]['type']) ? CRM_Utils_Type::typeToString($fields[$qillName]['type']) : 'String';
diff --git a/civicrm/CRM/Event/DAO/Event.php b/civicrm/CRM/Event/DAO/Event.php
index e1bc30cb40e101014fe4a15e2096211b6b31f469..4d09de0d5721f3d4b19c04a1f57346246666ccc7 100644
--- a/civicrm/CRM/Event/DAO/Event.php
+++ b/civicrm/CRM/Event/DAO/Event.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Event/Event.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a1c6fa263d5a0c98d03e270a5759dd35)
+ * (GenCodeChecksum:fd75d47cd23c3893174a0b55ba831894)
  */
 
 /**
@@ -675,6 +675,15 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO {
    */
   public $is_billing_required;
 
+  /**
+   * If true then calendar links are shown for this event.
+   *
+   * @var bool|string
+   *   (SQL type: tinyint)
+   *   Note that values will be retrieved from the database as a string.
+   */
+  public $is_show_calendar_links;
+
   /**
    * Class constructor.
    */
@@ -2365,6 +2374,29 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO {
           ],
           'add' => '4.6',
         ],
+        'is_show_calendar_links' => [
+          'name' => 'is_show_calendar_links',
+          'type' => CRM_Utils_Type::T_BOOLEAN,
+          'title' => ts('Are calendar links shown?'),
+          'description' => ts('If true then calendar links are shown for this event.'),
+          'required' => TRUE,
+          'usage' => [
+            'import' => FALSE,
+            'export' => FALSE,
+            'duplicate_matching' => FALSE,
+            'token' => FALSE,
+          ],
+          'where' => 'civicrm_event.is_show_calendar_links',
+          'default' => '1',
+          'table_name' => 'civicrm_event',
+          'entity' => 'Event',
+          'bao' => 'CRM_Event_BAO_Event',
+          'localizable' => 0,
+          'html' => [
+            'type' => 'CheckBox',
+          ],
+          'add' => '5.68',
+        ],
       ];
       CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
     }
diff --git a/civicrm/CRM/Event/Form/EventFees.php b/civicrm/CRM/Event/Form/EventFees.php
index 32a3f10ead3b1d6aadaf0ae2925ecb625cd4d6e9..8da6bdeaa8c515f0fb4735f74afa76d710cb79c7 100644
--- a/civicrm/CRM/Event/Form/EventFees.php
+++ b/civicrm/CRM/Event/Form/EventFees.php
@@ -24,11 +24,14 @@ class CRM_Event_Form_EventFees {
   /**
    * Set variables up before form is built.
    *
+   * @deprecated since 5.69 will be removed around 5.74
+   *
    * @param CRM_Core_Form $form
    *
    * @throws \CRM_Core_Exception
    */
   public static function preProcess(&$form) {
+    CRM_Core_Error::deprecatedFunctionWarning('no alternative');
     //as when call come from register.php
     if (!$form->_eventId) {
       $form->_eventId = CRM_Utils_Request::retrieve('eventId', 'Positive', $form);
diff --git a/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php b/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php
index 0fd442b025dc3f34a25289960187c3fb7047f552..82a28c5e66f2cd1fd1d190678edb83584666f5c6 100644
--- a/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php
+++ b/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php
@@ -41,8 +41,8 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent {
     // when custom data is included in this page
     if (!empty($_POST['hidden_custom'])) {
       $this->set('type', 'Event');
-      $this->set('subType', CRM_Utils_Array::value('event_type_id', $_POST));
-      $this->assign('customDataSubType', CRM_Utils_Array::value('event_type_id', $_POST));
+      $this->set('subType', $_POST['event_type_id'] ?? '');
+      $this->assign('customDataSubType', $_POST['event_type_id'] ?? '');
       $this->set('entityId', $entityID);
 
       CRM_Custom_Form_CustomData::preProcess($this, NULL, $this->_eventType, 1, 'Event', $entityID);
@@ -88,12 +88,12 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent {
     $showHideBlocks->addToTemplate();
     $this->assign('elemType', 'table-row');
 
-    $this->assign('description', CRM_Utils_Array::value('description', $defaults));
+    $this->assign('description', $defaults['description'] ?? '');
 
     // Provide suggested text for event full and waitlist messages if they're empty
-    $defaults['event_full_text'] = CRM_Utils_Array::value('event_full_text', $defaults, ts('This event is currently full.'));
+    $defaults['event_full_text'] = $defaults['event_full_text'] ?? ts('This event is currently full.');
 
-    $defaults['waitlist_text'] = CRM_Utils_Array::value('waitlist_text', $defaults, ts('This event is currently full. However you can register now and get added to a waiting list. You will be notified if spaces become available.'));
+    $defaults['waitlist_text'] = $defaults['waitlist_text'] ?? ts('This event is currently full. However you can register now and get added to a waiting list. You will be notified if spaces become available.');
     $defaults['template_id'] = $this->_templateId;
 
     return $defaults;
@@ -161,6 +161,7 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent {
     $this->addElement('checkbox', 'is_public', ts('Public Event'));
     $this->addElement('checkbox', 'is_share', ts('Add footer region with Twitter, Facebook and LinkedIn share buttons and scripts?'));
     $this->addElement('checkbox', 'is_map', ts('Include Map to Event Location'));
+    $this->addElement('checkbox', 'is_show_calendar_links', ts('Show Calendar Links'));
 
     $this->add('datepicker', 'start_date', ts('Start'), [], !$this->_isTemplate, ['time' => TRUE]);
     $this->add('datepicker', 'end_date', ts('End'), [], FALSE, ['time' => TRUE]);
@@ -222,9 +223,9 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent {
     $params['is_active'] = $params['is_active'] ?? FALSE;
     $params['is_public'] = $params['is_public'] ?? FALSE;
     $params['is_share'] = $params['is_share'] ?? FALSE;
+    $params['is_show_calendar_links'] = $params['is_show_calendar_links'] ?? FALSE;
     $params['default_role_id'] = $params['default_role_id'] ?? FALSE;
     $params['id'] = $this->_id;
-
     //merge params with defaults from templates
     if (!empty($params['template_id'])) {
       $params = array_merge(CRM_Event_BAO_Event::getTemplateDefaultValues($params['template_id']), $params);
diff --git a/civicrm/CRM/Event/Form/Participant.php b/civicrm/CRM/Event/Form/Participant.php
index b33f7acb45c23ff4e1ae193764e354037a58e0ec..934bf20feddd8da4c69b41235a0f83fb7b8c481d 100644
--- a/civicrm/CRM/Event/Form/Participant.php
+++ b/civicrm/CRM/Event/Form/Participant.php
@@ -17,6 +17,7 @@
  */
 
 use Civi\API\EntityLookupTrait;
+use Civi\Api4\Contribution;
 
 /**
  * Back office participant form.
@@ -153,15 +154,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
    *
    * @var array
    */
-  public $_lineItem = NULL;
-
-  /**
-   * Contribution mode for event registration for offline mode.
-   *
-   * @var string
-   * @deprecated
-   */
-  public $_contributeMode = 'direct';
+  public $_lineItem;
 
   public $_online;
 
@@ -302,7 +295,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       if (CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $_GET['eventId'], 'is_monetary')) {
         $this->assign('feeBlockPaid', TRUE);
       }
-      CRM_Event_Form_EventFees::preProcess($this);
       return;
     }
 
@@ -325,7 +317,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       if ($this->_submitValues['event_id']) {
         $this->_eventId = (int) $this->_submitValues['event_id'];
       }
-      CRM_Event_Form_EventFees::preProcess($this);
       $this->buildEventFeeForm($this);
       CRM_Event_Form_EventFees::setDefaultValues($this);
     }
@@ -872,7 +863,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       $params['total_amount'] = CRM_Utils_Rule::cleanMoney($params['total_amount']);
     }
     if ($this->_isPaidEvent) {
-      [$contributionParams, $lineItem, $params] = $this->preparePaidEventProcessing($params);
+      [$lineItem, $params] = $this->preparePaidEventProcessing($params);
     }
 
     $this->_params = $params;
@@ -884,35 +875,10 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
     }
     $params['contact_id'] = $this->_contactId;
 
-    // overwrite actual payment amount if entered
-    if (!empty($params['total_amount'])) {
-      $contributionParams['total_amount'] = $params['total_amount'] ?? NULL;
-    }
-
-    // Retrieve the name and email of the current user - this will be the FROM for the receipt email
-    $userName = CRM_Core_Session::singleton()->getLoggedInContactDisplayName();
-
-    //modify params according to parameter used in create
-    //participant method (addParticipant)
-    $this->_params['participant_status_id'] = $params['status_id'];
-    $this->_params['participant_role_id'] = $this->getSubmittedValue('role_id');
-
     $now = date('YmdHis');
 
     if ($this->_mode) {
-      // set source if not set
-      if (empty($params['source'])) {
-        $this->_params['participant_source'] = ts('Offline Registration for Event: %2 by: %1', [
-          1 => $userName,
-          2 => $this->getEventValue('title'),
-        ]);
-      }
-      else {
-        $this->_params['participant_source'] = $params['source'];
-      }
-      $this->_params['description'] = $this->_params['participant_source'];
-
-      $this->_paymentProcessor = CRM_Financial_BAO_PaymentProcessor::getPayment($this->_params['payment_processor_id'],
+      $this->_paymentProcessor = CRM_Financial_BAO_PaymentProcessor::getPayment($this->getSubmittedValue('payment_processor_id'),
         $this->_mode
       );
       $fields = [];
@@ -960,14 +926,12 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       $this->_params = $this->prepareParamsForPaymentProcessor($this->_params);
       $this->_params['amount'] = $params['fee_amount'];
       $this->_params['amount_level'] = $params['amount_level'];
-      $this->_params['currencyID'] = $config->defaultCurrency;
-      $this->_params['invoiceID'] = md5(uniqid(rand(), TRUE));
 
       // at this point we've created a contact and stored its address etc
       // all the payment processors expect the name and address to be in the
       // so we copy stuff over to first_name etc.
       $paymentParams = $this->_params;
-      if (!empty($this->_params['send_receipt'])) {
+      if ($this->getSubmittedValue('send_receipt')) {
         $paymentParams['email'] = $this->getContactValue('email_primary.email');
       }
 
@@ -976,14 +940,16 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       // so more conservative approach is called for.
       // In fact the use of $params and $this->_params & $this->_contactId vs $contactID
       // needs rationalising.
-      $mapParams = array_merge(['contact_id' => $contactID], $this->_params);
-      CRM_Core_Payment_Form::mapParams($this->_bltID, $mapParams, $paymentParams, TRUE);
+      $mapParams = array_merge(['contact_id' => $contactID], $this->getSubmittedValues());
+      CRM_Core_Payment_Form::mapParams(NULL, $mapParams, $paymentParams, TRUE);
 
       $payment = $this->_paymentProcessor['object'];
 
       // CRM-15622: fix for incorrect contribution.fee_amount
       $paymentParams['fee_amount'] = NULL;
+      $paymentParams['description'] = $this->getSourceText();
       try {
+        $paymentParams['invoiceID'] = $this->getInvoiceID();
         $result = $payment->doPayment($paymentParams);
       }
       catch (\Civi\Payment\Exception\PaymentProcessorException $e) {
@@ -1000,24 +966,9 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
         $this->_params = array_merge($this->_params, $result);
       }
 
-      $this->_params['receive_date'] = $now;
-
-      if (!empty($this->_params['send_receipt'])) {
-        $this->_params['receipt_date'] = $now;
-      }
-      else {
-        $this->_params['receipt_date'] = NULL;
-      }
-
-      $this->set('params', $this->_params);
-      //add contribution record
-      $this->_params['financial_type_id']
-        = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $params['event_id'], 'financial_type_id');
-      $this->_params['mode'] = $this->_mode;
-
       //add contribution record
       $contributions[] = $contribution = $this->processContribution(
-        $this, $this->_params,
+        $this->_params,
         $result, $contactID,
         FALSE,
         $this->_paymentProcessor
@@ -1025,23 +976,11 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
 
       // add participant record
       $participants = [];
-      if (!empty($this->_params['role_id']) && is_array($this->_params['role_id'])) {
-        $this->_params['role_id'] = implode(CRM_Core_DAO::VALUE_SEPARATOR,
-          $this->_params['role_id']
-        );
-      }
 
       //CRM-15372 patch to fix fee amount replacing amount
       $this->_params['fee_amount'] = $this->_params['amount'];
 
-      $participants[] = $this->addParticipant($this, $this->_params, $contactID);
-
-      //add custom data for participant
-      CRM_Core_BAO_CustomValueTable::postProcess($this->_params,
-        'civicrm_participant',
-        $participants[0]->id,
-        'Participant'
-      );
+      $participants[] = $this->addParticipant($this->_params, $contactID);
 
       // Add participant payment
       $participantPaymentParams = [
@@ -1059,12 +998,30 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       $participants = [];
       foreach ($this->_contactIds as $contactID) {
         $commonParams = $params;
+        $commonParams['source'] = $this->getSourceText();
         $commonParams['contact_id'] = $contactID;
         $participants[] = CRM_Event_BAO_Participant::create($commonParams);
       }
 
       $contributions = [];
       if (!empty($params['record_contribution'])) {
+        $contributionParams = [
+          'skipLineItem' => 1,
+          'skipCleanMoney' => TRUE,
+          'total_amount' => $this->getSubmittedValue('total_amount'),
+          'revenue_recognition_date' => $this->getRevenueRecognitionDate(),
+          'source' => $this->getSourceText(),
+          'non_deductible_amount' => 'null',
+          'financial_type_id' => $this->getSubmittedValue('financial_type_id'),
+          'payment_instrument_id' => $this->getSubmittedValue('payment_instrument_id'),
+          'trxn_id' => $this->getSubmittedValue('trxn_id'),
+          'contribution_status_id' => $this->getSubmittedValue('contribution_status_id'),
+          'check_number' => $this->getSubmittedValue('check_number'),
+          'campaign_id' => $this->getSubmittedValue('campaign_id'),
+          'pan_truncation' => $this->getSubmittedValue('pan_truncation'),
+          'card_type_id' => $this->getSubmittedValue('card_type_id'),
+          'receive_date' => $this->getSubmittedValue('receive_date') ?: $now,
+        ];
         if (!empty($params['id'])) {
           if ($this->_onlinePendingContributionId) {
             $contributionParams['id'] = $this->_onlinePendingContributionId;
@@ -1078,41 +1035,9 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
           }
         }
         unset($params['note']);
-
-        //build contribution params
-        if (!$this->_onlinePendingContributionId) {
-          if (empty($params['source'])) {
-            $contributionParams['source'] = ts('%1 : Offline registration (by %2)', [
-              1 => $this->getEventValue('title'),
-              2 => $userName,
-            ]);
-          }
-          else {
-            $contributionParams['source'] = $params['source'];
-          }
-        }
-
-        $contributionParams['currency'] = $config->defaultCurrency;
-        $contributionParams['non_deductible_amount'] = 'null';
-        $contributionParams['receipt_date'] = !empty($params['send_receipt']) ? CRM_Utils_Array::value('receive_date', $params) : 'null';
+        $contributionParams['currency'] = $this->getCurrency();
         $contributionParams['contact_id'] = $this->_contactID;
-        $contributionParams['receive_date'] = !(empty($params['receive_date'])) ? $params['receive_date'] : $now;
-
-        $recordContribution = [
-          'financial_type_id',
-          'payment_instrument_id',
-          'trxn_id',
-          'contribution_status_id',
-          'check_number',
-          'campaign_id',
-          'pan_truncation',
-          'card_type_id',
-        ];
 
-        foreach ($recordContribution as $f) {
-          $contributionParams[$f] = $this->_params[$f] ?? NULL;
-        }
-        $contributionParams['skipLineItem'] = 1;
         if ($this->_id) {
           $contributionParams['contribution_mode'] = 'participant';
           $contributionParams['participant_id'] = $this->_id;
@@ -1173,12 +1098,12 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
         }
 
         // CRM-11124
-        if ($this->_params['discount_id']) {
+        if ($this->getSubmittedValue('discount_id')) {
           CRM_Event_BAO_Participant::createDiscountTrxn(
             $this->_eventId,
             $contributionParams,
             NULL,
-            CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($this->_params)
+            CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($this->getSubmittedValues())
           );
         }
       }
@@ -1311,6 +1236,14 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
    * @throws \Exception
    */
   public function buildEventFeeForm($form) {
+    //as when call come from register.php
+    if (!$form->_eventId) {
+      $form->_eventId = CRM_Utils_Request::retrieve('eventId', 'Positive', $form);
+    }
+
+    $form->_pId = CRM_Utils_Request::retrieve('participantId', 'Positive', $form);
+    $form->_discountId = CRM_Utils_Request::retrieve('discountId', 'Positive', $form);
+
     if ($form->_eventId) {
       $form->_isPaidEvent = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $form->_eventId, 'is_monetary');
       if ($form->_isPaidEvent) {
@@ -1326,7 +1259,8 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       CRM_Event_BAO_Event::retrieve($params, $event);
 
       //retrieve custom information
-      $form->_values = [];
+      $this->_values = [];
+      $this->_values['line_items'] = CRM_Price_BAO_LineItem::getLineItems($this->_id, 'participant');
       CRM_Event_Form_Registration::initEventFee($form, FALSE, $this->getPriceSetID());
       if ($form->_context === 'standalone' || $form->_context === 'participant') {
         $discountedEvent = CRM_Core_BAO_Discount::getOptionGroup($event['id'], 'civicrm_event');
@@ -1367,7 +1301,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
           $discounts[$key] = $value['name'];
         }
 
-        $element = $form->add('select', 'discount_id',
+        $form->add('select', 'discount_id',
           ts('Discount Set'),
           [
             0 => ts('- select -'),
@@ -1487,37 +1421,16 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
    */
   protected function preparePaidEventProcessing($params): array {
     $participantStatus = CRM_Event_PseudoConstant::participantStatus();
-    $contributionParams = [
-      'skipCleanMoney' => TRUE,
-      'revenue_recognition_date' => $this->getRevenueRecognitionDate(),
-    ];
     $lineItem = [];
-    $additionalParticipantDetails = [];
 
     if ($this->isPaymentOnExistingContribution()) {
-      $contributionParams['total_amount'] = $this->getParticipantValue('fee_amount');
-
-      $params['discount_id'] = NULL;
       //re-enter the values for UPDATE mode
       $params['fee_level'] = $params['amount_level'] = $this->getParticipantValue('fee_level');
       $params['fee_amount'] = $this->getParticipantValue('fee_amount');
-
-      //also add additional participant's fee level/priceset
-      if (CRM_Event_BAO_Participant::isPrimaryParticipant($this->_id)) {
-        $additionalIds = CRM_Event_BAO_Participant::getAdditionalParticipantIds($this->_id);
-        $hasLineItems = $params['priceSetId'] ?? FALSE;
-        $additionalParticipantDetails = $this->getFeeDetails($additionalIds, $hasLineItems);
-      }
     }
     else {
-
-      // check that discount_id is set
-      if (empty($params['discount_id'])) {
-        $params['discount_id'] = 'null';
-      }
-
       //lets carry currency, CRM-4453
-      $params['fee_currency'] = CRM_Core_Config::singleton()->defaultCurrency;
+      $params['fee_currency'] = $this->getCurrency();
       if (!isset($lineItem[0])) {
         $lineItem[0] = [];
       }
@@ -1528,7 +1441,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       //when financial_type_id is passed in form, update the
       //lineitems with the financial type selected in form
       $submittedFinancialType = $params['financial_type_id'] ?? NULL;
-      $isPaymentRecorded = $params['record_contribution'] ?? NULL;
+      $isPaymentRecorded = $this->getSubmittedValue('record_contribution');
       if ($isPaymentRecorded && $this->isQuickConfig() && $submittedFinancialType) {
         foreach ($lineItem[0] as &$values) {
           $values['financial_type_id'] = $submittedFinancialType;
@@ -1536,7 +1449,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       }
 
       $params['fee_level'] = $params['amount_level'];
-      $contributionParams['total_amount'] = $params['amount'];
       if ($this->isQuickConfig() && !empty($params['total_amount']) &&
         $params['status_id'] != array_search('Partially paid', $participantStatus)
       ) {
@@ -1551,13 +1463,11 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
     if (isset($params['priceSetId'])) {
       if (!empty($lineItem[0])) {
         $this->set('lineItem', $lineItem);
-
         $this->_lineItem = $lineItem;
-        $lineItem = array_merge($lineItem, $additionalParticipantDetails);
       }
     }
 
-    return [$contributionParams, $lineItem, $params];
+    return [$lineItem, $params];
   }
 
   /**
@@ -1571,10 +1481,18 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
     $this->assign('event', ['confirm_email_text' => $receiptText]);
   }
 
+  /**
+   * Get the currency for the event.
+   *
+   * @return string
+   */
+  public function getCurrency() {
+    return $this->getEventValue('currency') ?: \Civi::settings()->get('defaultCurrency');
+  }
+
   /**
    * Process the contribution.
    *
-   * @param CRM_Core_Form $form
    * @param array $params
    * @param array $result
    * @param int $contactID
@@ -1585,35 +1503,29 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
    *
    * @throws \CRM_Core_Exception
    */
-  protected function processContribution(
-    &$form, $params, $result, $contactID,
+  protected function processContribution($params, $result, $contactID,
     $pending = FALSE,
     $paymentProcessor = NULL
   ) {
     $transaction = new CRM_Core_Transaction();
 
     $now = date('YmdHis');
-    $receiptDate = NULL;
-
-    if (!empty($form->_values['event']['is_email_confirm'])) {
-      $receiptDate = $now;
-    }
 
     // CRM-20264: fetch CC type ID and number (last 4 digit) and assign it back to $params
     CRM_Contribute_Form_AbstractEditPayment::formatCreditCardDetails($params);
 
     $contribParams = [
       'contact_id' => $contactID,
-      'financial_type_id' => !empty($form->_values['event']['financial_type_id']) ? $form->_values['event']['financial_type_id'] : $params['financial_type_id'],
-      'receive_date' => $now,
+      'financial_type_id' => $this->getEventValue('financial_type_id'),
+      'receive_date' => $this->getSubmittedValue('receive_date') ?: $now,
       'total_amount' => $params['amount'],
       'tax_amount' => $params['tax_amount'],
       'amount_level' => $params['amount_level'],
-      'invoice_id' => $params['invoiceID'],
-      'currency' => $params['currencyID'],
-      'source' => !empty($params['participant_source']) ? $params['participant_source'] : $params['description'],
-      'is_pay_later' => $params['is_pay_later'] ?? 0,
-      'campaign_id' => $params['campaign_id'] ?? NULL,
+      'invoice_id' => $this->getInvoiceID(),
+      'currency' => $this->getCurrency(),
+      'source' => $this->getSourceText(),
+      'is_pay_later' => FALSE,
+      'campaign_id' => $this->getSubmittedValue('campaign_id'),
       'card_type_id' => $params['card_type_id'] ?? NULL,
       'pan_truncation' => $params['pan_truncation'] ?? NULL,
     ];
@@ -1627,7 +1539,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       $contribParams += [
         'fee_amount' => $result['fee_amount'] ?? NULL,
         'trxn_id' => $result['trxn_id'],
-        'receipt_date' => $receiptDate,
       ];
     }
 
@@ -1638,7 +1549,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
     }
 
     $contribParams['is_test'] = 0;
-    if ($form->_action & CRM_Core_Action::PREVIEW || ($params['mode'] ?? NULL) === 'test') {
+    if ($this->getAction() & CRM_Core_Action::PREVIEW || ($this->_mode ?? NULL) === 'test') {
       $contribParams['is_test'] = 1;
     }
 
@@ -1658,7 +1569,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
     // create contribution record
     $contribution = CRM_Contribute_BAO_Contribution::add($contribParams);
     // CRM-11124
-    CRM_Event_BAO_Participant::createDiscountTrxn($form->_eventId, $contribParams, NULL, CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($params));
+    CRM_Event_BAO_Participant::createDiscountTrxn($this->getEventID(), $contribParams, NULL, CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($params));
 
     $transaction->commit();
 
@@ -1668,71 +1579,40 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
   /**
    * Process the participant.
    *
-   * @param CRM_Core_Form $form
    * @param array $params
    * @param int $contactID
    *
    * @return \CRM_Event_BAO_Participant
    * @throws \CRM_Core_Exception
    */
-  protected function addParticipant(&$form, $params, $contactID) {
+  protected function addParticipant($params, $contactID) {
     $transaction = new CRM_Core_Transaction();
-
-    $participantFields = CRM_Event_DAO_Participant::fields();
     $participantParams = [
       'id' => $params['participant_id'] ?? NULL,
       'contact_id' => $contactID,
-      'event_id' => $form->_eventId ? $form->_eventId : $params['event_id'],
-      'status_id' => CRM_Utils_Array::value('participant_status',
-        $params, 1
-      ),
-      'role_id' => CRM_Utils_Array::value('participant_role_id', $params) ?: CRM_Event_BAO_Participant::getDefaultRoleID(),
-      'register_date' => $params['register_date'],
-      'source' => CRM_Utils_String::ellipsify(
-        isset($params['participant_source']) ? CRM_Utils_Array::value('participant_source', $params) : CRM_Utils_Array::value('description', $params),
-        $participantFields['participant_source']['maxlength']
-      ),
+      'event_id' => $this->getEventID(),
+      'status_id' => $this->getSubmittedValue('status_id'),
+      'role_id' => $this->getSubmittedValue('role_id'),
+      'register_date' => $this->getSubmittedValue('register_date'),
+      'source' => $this->getSourceText(),
       'fee_level' => $params['amount_level'] ?? NULL,
-      'is_pay_later' => $params['is_pay_later'] ?? 0,
+      'is_pay_later' => FALSE,
       'fee_amount' => $params['fee_amount'] ?? NULL,
-      'registered_by_id' => $params['registered_by_id'] ?? NULL,
-      'discount_id' => $params['discount_id'] ?? NULL,
-      'fee_currency' => $params['currencyID'] ?? NULL,
-      'campaign_id' => $params['campaign_id'] ?? NULL,
+      'fee_currency' => $this->getCurrency(),
+      'campaign_id' => $this->getSubmittedValue('campaign_id'),
+      'note' => $this->getSubmittedValue('note'),
+      'is_test' => ($this->_mode === 'test)'),
     ];
-
-    if ($form->_action & CRM_Core_Action::PREVIEW || ($params['mode'] ?? NULL) == 'test') {
-      $participantParams['is_test'] = 1;
-    }
-    else {
-      $participantParams['is_test'] = 0;
-    }
-
-    if (!empty($form->_params['note'])) {
-      $participantParams['note'] = $form->_params['note'];
-    }
-    elseif (!empty($form->_params['participant_note'])) {
-      $participantParams['note'] = $form->_params['participant_note'];
-    }
-
-    // reuse id if one already exists for this one (can happen
-    // with back button being hit etc)
-    if (!$participantParams['id'] && !empty($params['contributionID'])) {
-      $pID = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment',
-        $params['contributionID'],
-        'participant_id',
-        'contribution_id'
-      );
-      $participantParams['id'] = $pID;
-    }
-    $participantParams['discount_id'] = CRM_Core_BAO_Discount::findSet($form->_eventId, 'civicrm_event');
-
-    if (!$participantParams['discount_id']) {
-      $participantParams['discount_id'] = "null";
-    }
-
+    $participantParams['discount_id'] = $this->getSubmittedValue('discount_id');
     $participant = CRM_Event_BAO_Participant::create($participantParams);
 
+    // Add custom data for participant
+    $submittedValues = $this->getSubmittedValues();
+    CRM_Core_BAO_CustomValueTable::postProcess($submittedValues,
+      'civicrm_participant',
+      $participant->id,
+      'Participant'
+    );
     $transaction->commit();
 
     return $participant;
@@ -1958,6 +1838,7 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_
         'PDFFilename' => ts('confirmation') . '.pdf',
         'modelProps' => [
           'participantID' => $participantID,
+          'userEnteredText' => $this->getSubmittedValue('receipt_text'),
           'eventID' => $params['event_id'],
           'contributionID' => $contributionID,
         ],
@@ -1976,6 +1857,12 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_
       }
       [$mailSent] = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams);
       if ($mailSent) {
+        if ($contributionID) {
+          Contribution::update(FALSE)
+            ->addWhere('id', '=', $contributionID)
+            ->setValues(['receipt_date' => 'now'])
+            ->execute();
+        }
         $sent[] = $contactID;
         $participant->details = $this->getSubmittedValue('receipt_text');
         CRM_Activity_BAO_Activity::addActivity($participant, 'Email');
@@ -2000,6 +1887,9 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_
    * @noinspection PhpUnhandledExceptionInspection
    */
   public function getDiscountID(): ?int {
+    if ($this->getSubmittedValue('discount_id')) {
+      return $this->getSubmittedValue('discount_id');
+    }
     if ($this->_discountId === NULL) {
       if ($this->getParticipantID()) {
         $this->_discountId = (int) CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Participant', $this->getParticipantID(), 'discount_id');
@@ -2088,4 +1978,30 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_
     return $this->_contactID;
   }
 
+  /**
+   * Get the text for the participant & contribution source fields.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  private function getSourceText(): string {
+    $maxLength = CRM_Event_DAO_Participant::fields()['participant_source']['maxlength'];
+    if ($this->getSubmittedValue('source')) {
+      return CRM_Utils_String::ellipsify($this->getSubmittedValue('source'), $maxLength);
+    }
+    return CRM_Utils_String::ellipsify(ts('Offline Registration for Event: %2 by: %1', [
+      1 => CRM_Core_Session::singleton()->getLoggedInContactDisplayName(),
+      2 => $this->getEventValue('title'),
+    ]), $maxLength);
+  }
+
+  /**
+   * @return string
+   */
+  public function getInvoiceID(): string {
+    if (!$this->invoiceID) {
+      $this->invoiceID = md5(uniqid(rand(), TRUE));
+    }
+    return $this->invoiceID;
+  }
+
 }
diff --git a/civicrm/CRM/Event/Form/ParticipantFeeSelection.php b/civicrm/CRM/Event/Form/ParticipantFeeSelection.php
index cbb5c49bc866d9993baf0760278fdbe9865100da..9a9ca95276f1afe59e7740c9a56e583742a93965 100644
--- a/civicrm/CRM/Event/Form/ParticipantFeeSelection.php
+++ b/civicrm/CRM/Event/Form/ParticipantFeeSelection.php
@@ -176,6 +176,7 @@ class CRM_Event_Form_ParticipantFeeSelection extends CRM_Core_Form {
     //retrieve custom information
     $this->_values = [];
 
+    $this->_values['line_items'] = CRM_Price_BAO_LineItem::getLineItems($this->_participantId, 'participant');
     CRM_Event_Form_Registration::initEventFee($this, $this->_action !== CRM_Core_Action::UPDATE, $this->getPriceSetID());
     CRM_Event_Form_Registration_Register::buildAmount($this, TRUE, NULL, $this->getPriceSetID());
 
diff --git a/civicrm/CRM/Event/Form/Registration.php b/civicrm/CRM/Event/Form/Registration.php
index f73508bbb4c685b459bcc58f7f7db34f6d48a17a..f94dd144d537483906e1ee81a3fe774201549da2 100644
--- a/civicrm/CRM/Event/Form/Registration.php
+++ b/civicrm/CRM/Event/Form/Registration.php
@@ -21,6 +21,7 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
 
   use CRM_Financial_Form_FrontEndPaymentFormTrait;
   use CRM_Event_Form_EventFormTrait;
+  use CRM_Financial_Form_PaymentProcessorFormTrait;
 
   /**
    * The id of the event we are processing.
@@ -314,7 +315,19 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
 
       $priceSetID = $this->getPriceSetID();
       if ($priceSetID) {
+        $this->_values['line_items'] = CRM_Price_BAO_LineItem::getLineItems($this->_participantId, 'participant');
         self::initEventFee($this, TRUE, $priceSetID);
+
+        //fix for non-upgraded price sets.CRM-4256.
+        if (isset($this->_isPaidEvent)) {
+          $isPaidEvent = $this->_isPaidEvent;
+        }
+        else {
+          $isPaidEvent = $this->_values['event']['is_monetary'] ?? NULL;
+        }
+        if ($isPaidEvent && empty($this->_values['fee'])) {
+          CRM_Core_Error::statusBounce(ts('No Fee Level(s) or Price Set is configured for this event.<br />Click <a href=\'%1\'>CiviEvent >> Manage Event >> Configure >> Event Fees</a> to configure the Fee Level(s) or Price Set for this event.', [1 => CRM_Utils_System::url('civicrm/event/manage/fee', 'reset=1&action=update&id=' . $this->_eventId)]));
+        }
         $this->assign('quickConfig', $this->isQuickConfig());
       }
 
@@ -379,12 +392,8 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
       );
       CRM_Utils_System::redirect($url);
     }
-    // The concept of contributeMode is deprecated.
-    $this->_contributeMode = $this->get('contributeMode');
-    $this->assign('contributeMode', $this->_contributeMode);
-
-    $this->assign('paidEvent', $this->_values['event']['is_monetary']);
 
+    $this->assign('paidEvent', $this->getEventValue('is_monetary'));
     // we do not want to display recently viewed items on Registration pages
     $this->assign('displayRecent', FALSE);
 
@@ -471,7 +480,7 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
       }
     }
 
-    $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($params, $this->_bltID));
+    $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($params));
 
     if ($this->getSubmittedValue('credit_card_number')) {
       if (isset($params['credit_card_exp_date'])) {
@@ -609,15 +618,6 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
       return;
     }
 
-    // get price info
-    if ($form->_action & CRM_Core_Action::UPDATE) {
-      if (in_array(CRM_Utils_System::getClassName($form), ['CRM_Event_Form_Participant', 'CRM_Event_Form_Task_Register'])) {
-        $form->_values['line_items'] = CRM_Price_BAO_LineItem::getLineItems($form->_id, 'participant');
-      }
-      else {
-        $form->_values['line_items'] = CRM_Price_BAO_LineItem::getLineItems($form->_participantId, 'participant');
-      }
-    }
     $priceSet = CRM_Price_BAO_PriceSet::getSetDetail($priceSetId, NULL, $doNotIncludeExpiredFields);
     $form->_priceSet = $priceSet[$priceSetId] ?? NULL;
     $form->_values['fee'] = $form->_priceSet['fields'] ?? NULL;
@@ -662,14 +662,6 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
     if (!is_array($eventFee) || empty($eventFee)) {
       $form->_values['fee'] = [];
     }
-
-    //fix for non-upgraded price sets.CRM-4256.
-    if (isset($form->_isPaidEvent)) {
-      $isPaidEvent = $form->_isPaidEvent;
-    }
-    else {
-      $isPaidEvent = $form->_values['event']['is_monetary'] ?? NULL;
-    }
     if (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus()
       && !empty($form->_values['fee'])
     ) {
@@ -681,11 +673,6 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
         }
       }
     }
-    if ($isPaidEvent && empty($form->_values['fee'])) {
-      if (!in_array(CRM_Utils_System::getClassName($form), ['CRM_Event_Form_Participant', 'CRM_Event_Form_Task_Register'])) {
-        CRM_Core_Error::statusBounce(ts('No Fee Level(s) or Price Set is configured for this event.<br />Click <a href=\'%1\'>CiviEvent >> Manage Event >> Configure >> Event Fees</a> to configure the Fee Level(s) or Price Set for this event.', [1 => CRM_Utils_System::url('civicrm/event/manage/fee', 'reset=1&action=update&id=' . $form->_eventId)]));
-      }
-    }
   }
 
   /**
@@ -965,6 +952,17 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
     return $totalCount;
   }
 
+  /**
+   * Get id of participant being acted on.
+   *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   */
+  public function getParticipantID(): ?int {
+    return $this->_participantId;
+  }
+
   /**
    * Format user submitted price set params.
    *
@@ -1593,10 +1591,9 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
       $this->set('participantInfo', $this->_participantInfo);
     }
 
-    //send mail Confirmation/Receipt
-    if ($this->_contributeMode != 'checkout' ||
-      $this->_contributeMode != 'notify'
+    if ($this->getPaymentProcessorObject()->supports('noReturn')
     ) {
+      // Send mail Confirmation/Receipt.
       $this->sendMails($params, $registerByID, $participantCount);
     }
   }
@@ -1731,4 +1728,25 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
     return $this->getPriceSetID() && CRM_Price_BAO_PriceSet::isQuickConfig($this->getPriceSetID());
   }
 
+  /**
+   * Get the currency for the form.
+   *
+   * Rather historic - might have unneeded stuff
+   *
+   * @return string
+   */
+  public function getCurrency() {
+    $currency = $this->_values['currency'] ?? NULL;
+    // For event forms, currency is in a different spot
+    if (empty($currency)) {
+      $currency = CRM_Utils_Array::value('currency', CRM_Utils_Array::value('event', $this->_values));
+    }
+    if (empty($currency)) {
+      $currency = CRM_Utils_Request::retrieveValue('currency', 'String');
+    }
+    // @todo If empty there is a problem - we should probably put in a deprecation notice
+    // to warn if that seems to be happening.
+    return $currency;
+  }
+
 }
diff --git a/civicrm/CRM/Event/Form/Registration/Confirm.php b/civicrm/CRM/Event/Form/Registration/Confirm.php
index 5d84a66b683a5f1a2b10073d4528653492c05e29..daec9350a1c00ffad0841b3f865595bc5bb2d240 100644
--- a/civicrm/CRM/Event/Form/Registration/Confirm.php
+++ b/civicrm/CRM/Event/Form/Registration/Confirm.php
@@ -124,7 +124,7 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
    * @throws \CRM_Core_Exception
    */
   private function preProcessExpress() {
-    if ($this->_contributeMode !== 'express') {
+    if ($this->getPaymentProcessorValue('payment_processor_type_id:name') !== 'PayPal_Express') {
       return FALSE;
     }
     $params = [];
@@ -216,10 +216,7 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
         $taxAmount += $v['tax_amount'];
         if (is_array($v)) {
           $this->cleanMoneyFields($v);
-          foreach ([
-            'first_name',
-            'last_name',
-          ] as $name) {
+          foreach (['first_name', 'last_name'] as $name) {
             if (isset($v['billing_' . $name]) &&
               !isset($v[$name])
             ) {
@@ -245,9 +242,9 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
           }
 
           $this->_amount[$k]['label'] = preg_replace('//', '', $v['amount_level']) . '  -  ' . $append;
-          $this->_part[$k]['info'] = ($v['first_name'] ?? '') . ' ' . ($v['last_name'] ?? '');
+          $participantDetails[$k]['info'] = ($v['first_name'] ?? '') . ' ' . ($v['last_name'] ?? '');
           if (empty($v['first_name'])) {
-            $this->_part[$k]['info'] = $append;
+            $participantDetails[$k]['info'] = $append;
           }
 
           /*CRM-16320 */
@@ -260,18 +257,20 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
         }
       }
 
-      if (CRM_Invoicing_Utils::isInvoicingEnabled()) {
+      if (\Civi::settings()->get('invoicing')) {
         $this->assign('totalTaxAmount', $taxAmount);
-        $this->assign('taxTerm', CRM_Invoicing_Utils::getTaxTerm());
+        $this->assign('taxTerm', \Civi::settings()->get('tax_term'));
         $this->assign('individual', $individual);
         $this->set('individual', $individual);
       }
 
-      $this->assign('part', $this->_part);
-      $this->set('part', $this->_part);
+      $this->assign('part', $participantDetails);
+      $this->set('part', $participantDetails);
       $this->assign('amounts', $this->_amount);
       $this->assign('totalAmount', $this->_totalAmount);
       $this->set('totalAmount', $this->_totalAmount);
+      // This use of the ts function uses the legacy interpolation of the button name to avoid translations having to be re-done.
+      $this->assign('verifyText', !$this->_totalAmount ? ts('Click <strong>%1</strong> to complete your registration.', [1 => ts('Register')]) : $this->getPaymentProcessorObject()->getText('eventContinueText', []));
 
       $showPaymentOnConfirm = (in_array($this->_eventId, \Civi::settings()->get('event_show_payment_on_confirm')) || in_array('all', \Civi::settings()->get('event_show_payment_on_confirm')));
       $this->assign('showPaymentOnConfirm', $showPaymentOnConfirm);
@@ -305,7 +304,6 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
     //consider total amount.
     $this->assign('isAmountzero', $this->_totalAmount <= 0);
 
-    $contribButton = ts('Register');
     $this->addButtons([
       [
         'type' => 'back',
@@ -313,7 +311,7 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
       ],
       [
         'type' => 'next',
-        'name' => $contribButton,
+        'name' => ts('Register'),
         'isDefault' => TRUE,
       ],
     ]);
@@ -372,10 +370,10 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
    */
   public static function formRule($fields, $files, $form) {
     $errors = [];
-    $eventFull = CRM_Event_BAO_Participant::eventFull($form->_eventId, FALSE, $form->_values['event']['has_waitlist'] ?? FALSE);
+    $eventFull = CRM_Event_BAO_Participant::eventFull($form->getEventID(), FALSE, $form->_values['event']['has_waitlist'] ?? FALSE);
     if ($eventFull && empty($form->_allowConfirmation)) {
       if (empty($form->_allowWaitlist)) {
-        CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/event/register', "reset=1&id={$form->_eventId}", FALSE, NULL, FALSE, TRUE));
+        CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/event/register', "reset=1&id={$form->getEventID()}", FALSE, NULL, FALSE, TRUE));
       }
     }
     $form->_feeBlock = $form->_values['fee'];
@@ -458,21 +456,21 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
     //unset the skip participant from params.
     //build the $participantCount array.
     //maintain record for all participants.
-    foreach ($params as $participantNum => $record) {
-      if ($record === 'skip') {
+    foreach ($params as $participantNum => $participantRecord) {
+      if ($participantRecord === 'skip') {
         unset($params[$participantNum]);
         $participantCount[$participantNum] = 'skip';
       }
       elseif ($participantNum) {
         $participantCount[$participantNum] = 'participant';
       }
-      $totalTaxAmount += $record['tax_amount'] ?? 0;
-      if (!empty($record['is_primary'])) {
+      $totalTaxAmount += $participantRecord['tax_amount'] ?? 0;
+      if (!empty($participantRecord['is_primary'])) {
         $taxAmount = &$params[$participantNum]['tax_amount'];
       }
       //lets get additional participant id to cancel.
       if ($this->_allowConfirmation && is_array($cancelledIds)) {
-        $additionalId = $record['participant_id'] ?? NULL;
+        $additionalId = $participantRecord['participant_id'] ?? NULL;
         if ($additionalId && $key = array_search($additionalId, $cancelledIds)) {
           unset($cancelledIds[$key]);
         }
@@ -483,59 +481,48 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
     $paymentObjError = ts('The system did not record payment details for this payment and so could not process the transaction. Please report this error to the site administrator.');
 
     $fields = [];
-    foreach ($params as $key => $value) {
-      CRM_Event_Form_Registration_Confirm::fixLocationFields($value, $fields, $this);
-      if ($this->_allowWaitlist
-        || $this->_requireApproval
-        || (!empty($value['is_pay_later']) && !$this->_isBillingAddressRequiredForPayLater)
-        || empty($value['is_primary'])
-      ) {
-        // This is confusing because unnecessary code around it has been removed. It is not
-        // clear why we do this / whether we should.
-        if (!empty($value['is_pay_later'])) {
-          $this->_values['params']['is_pay_later'] = TRUE;
-        }
-      }
+    foreach ($params as $participantRecord) {
+      CRM_Event_Form_Registration_Confirm::fixLocationFields($participantRecord, $fields, $this);
 
       //Unset ContactID for additional participants and set RegisterBy Id.
-      if (empty($value['is_primary'])) {
-        $contactID = $value['contact_id'] ?? NULL;
+      if (empty($participantRecord['is_primary'])) {
+        $contactID = $participantRecord['contact_id'] ?? NULL;
         $registerByID = $this->get('registerByID');
         if ($registerByID) {
-          $value['registered_by_id'] = $registerByID;
+          $participantRecord['registered_by_id'] = $registerByID;
         }
       }
       else {
-        $value['amount'] = $this->_totalAmount;
+        $participantRecord['amount'] = $this->_totalAmount;
       }
 
-      $contactID = CRM_Event_Form_Registration_Confirm::updateContactFields($contactID, $value, $fields, $this);
+      $contactID = CRM_Event_Form_Registration_Confirm::updateContactFields($contactID, $participantRecord, $fields, $this);
 
       // lets store the contactID in the session
       // we dont store in userID in case the user is doing multiple
       // transactions etc
       // for things like tell a friend
-      if (!$this->getContactID() && !empty($value['is_primary'])) {
+      if (!$this->getContactID() && !empty($participantRecord['is_primary'])) {
         CRM_Core_Session::singleton()->set('transaction.userID', $contactID);
       }
 
-      $value['description'] = ts('Online Event Registration') . ': ' . $this->_values['event']['title'];
-      $value['accountingCode'] = $this->_values['event']['accountingCode'] ?? NULL;
+      $participantRecord['description'] = ts('Online Event Registration') . ': ' . $this->_values['event']['title'];
+      $participantRecord['accountingCode'] = $this->_values['event']['accountingCode'] ?? NULL;
 
       $pending = FALSE;
       if ($this->_allowWaitlist || $this->_requireApproval) {
         //get the participant statuses.
         $waitingStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Waiting'");
         if ($this->_allowWaitlist) {
-          $value['participant_status_id'] = $value['participant_status'] = array_search('On waitlist', $waitingStatuses);
+          $participantRecord['participant_status_id'] = $participantRecord['participant_status'] = array_search('On waitlist', $waitingStatuses);
         }
         else {
-          $value['participant_status_id'] = $value['participant_status'] = array_search('Awaiting approval', $waitingStatuses);
+          $participantRecord['participant_status_id'] = $participantRecord['participant_status'] = array_search('Awaiting approval', $waitingStatuses);
         }
 
         //there might be case user selected pay later and
         //now becomes part of run time waiting list.
-        $value['is_pay_later'] = FALSE;
+        $participantRecord['is_pay_later'] = FALSE;
       }
       elseif ($this->_values['event']['is_monetary']) {
         // required only if paid event
@@ -544,116 +531,112 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
         }
         if (!empty($this->_paymentProcessor) &&  $this->_paymentProcessor['object']->supports('preApproval')) {
           $preApprovalParams = $this->_paymentProcessor['object']->getPreApprovalDetails($this->get('pre_approval_parameters'));
-          $value = array_merge($value, $preApprovalParams);
+          $participantRecord = array_merge($participantRecord, $preApprovalParams);
         }
-        $result = NULL;
+        $doPaymentResult = NULL;
 
-        if (!empty($value['is_pay_later']) ||
-          $value['amount'] == 0 ||
+        if (!empty($participantRecord['is_pay_later']) ||
+          $participantRecord['amount'] == 0 ||
           // The concept of contributeMode is deprecated.
-          $this->_contributeMode == 'checkout' ||
-          $this->_contributeMode == 'notify'
+          $this->getPaymentProcessorObject()->supports('noReturn')
         ) {
-          if ($value['amount'] != 0) {
+          if ($participantRecord['amount'] != 0) {
             $pending = TRUE;
             //get the participant statuses.
             $pendingStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Pending'");
-            $status = !empty($value['is_pay_later']) ? 'Pending from pay later' : 'Pending from incomplete transaction';
-            $value['participant_status_id'] = $value['participant_status'] = array_search($status, $pendingStatuses);
+            $status = !empty($participantRecord['is_pay_later']) ? 'Pending from pay later' : 'Pending from incomplete transaction';
+            $participantRecord['participant_status_id'] = $participantRecord['participant_status'] = array_search($status, $pendingStatuses);
           }
         }
-        elseif (!empty($value['is_primary'])) {
-          CRM_Core_Payment_Form::mapParams($this->_bltID, $value, $value, TRUE);
+        elseif (!empty($participantRecord['is_primary'])) {
+          CRM_Core_Payment_Form::mapParams($this->_bltID, $participantRecord, $participantRecord, TRUE);
           // payment email param can be empty for _bltID mapping
           // thus provide mapping for it with a different email value
-          if (empty($value['email'])) {
-            $value['email'] = CRM_Utils_Array::valueByRegexKey('/^email-/', $value);
+          if (empty($participantRecord['email'])) {
+            $participantRecord['email'] = CRM_Utils_Array::valueByRegexKey('/^email-/', $participantRecord);
           }
 
           if (is_object($payment)) {
-            // Not quite sure why we don't just user $value since it contains the data
-            // from result
-            // @todo ditch $result & retest.
             // If registering from waitlist participant_id is set but contact_id is not.
             // We need a contact ID to process the payment so set the "primary" contact ID.
-            $value['contactID'] = empty($value['contact_id']) ? (int) $contactID : (int) $value['contact_id'];
+            $participantRecord['contactID'] = empty($participantRecord['contact_id']) ? (int) $contactID : (int) $participantRecord['contact_id'];
             // contactID is the correct parameter to pass to the processor.
             // However, we still pass contact_id as the same value as was previously being assigned,
             // in case some processors are expecting that.
             // (especially since this was recently not passing the correct value).
             // https://docs.civicrm.org/dev/en/latest/extensions/payment-processors/create/#getpaymentformfields
-            if (empty($value['contact_id'])) {
-              $value['contact_id'] = $value['contactID'];
+            if (empty($participantRecord['contact_id'])) {
+              $participantRecord['contact_id'] = $participantRecord['contactID'];
             }
-            [$result, $value] = $this->processPayment($payment, $value);
+            [$doPaymentResult, $participantRecord] = $this->processPayment($payment, $participantRecord);
           }
           else {
             throw new CRM_Core_Exception($paymentObjError);
           }
         }
 
-        $value['receive_date'] = $now;
+        $participantRecord['receive_date'] = $now;
         if ($this->_allowConfirmation) {
-          $value['participant_register_date'] = $this->_values['participant']['register_date'];
+          $participantRecord['participant_register_date'] = $this->_values['participant']['register_date'];
         }
 
-        $createContrib = $value['amount'] != 0;
+        $createContrib = $participantRecord['amount'] != 0;
         // force to create zero amount contribution, CRM-5095
-        if (!$createContrib && ($value['amount'] == 0)
+        if (!$createContrib && ($participantRecord['amount'] == 0)
           && $this->_priceSetId && $this->_lineItem
         ) {
           $createContrib = TRUE;
         }
 
-        if ($createContrib && !empty($value['is_primary']) &&
+        if ($createContrib && !empty($participantRecord['is_primary']) &&
           !$this->_allowWaitlist && !$this->_requireApproval
         ) {
           // if paid event add a contribution record
           //if primary participant contributing additional amount
           //append (multiple participants) to its fee level. CRM-4196.
           if (count($params) > 1) {
-            $value['amount_level'] .= ts(' (multiple participants)') . CRM_Core_DAO::VALUE_SEPARATOR;
+            $participantRecord['amount_level'] .= ts(' (multiple participants)') . CRM_Core_DAO::VALUE_SEPARATOR;
           }
 
           //passing contribution id is already registered.
-          $contribution = $this->processContribution($value, $result, $contactID, $pending);
-          $value['contributionID'] = $contribution->id;
-          $value['receive_date'] = $contribution->receive_date;
-          $value['trxn_id'] = $contribution->trxn_id;
-          $value['contributionID'] = $contribution->id;
+          $contribution = $this->processContribution($participantRecord, $doPaymentResult, $contactID, $pending);
+          $participantRecord['contributionID'] = $contribution->id;
+          $participantRecord['receive_date'] = $contribution->receive_date;
+          $participantRecord['trxn_id'] = $contribution->trxn_id;
+          $participantRecord['contributionID'] = $contribution->id;
         }
-        $value['contactID'] = $contactID;
-        $value['eventID'] = $this->_eventId;
-        $value['item_name'] = $value['description'];
+        $participantRecord['contactID'] = $contactID;
+        $participantRecord['eventID'] = $this->getEventID();
+        $participantRecord['item_name'] = $participantRecord['description'];
       }
 
-      if (!empty($value['contributionID'])) {
-        $this->_values['contributionId'] = $value['contributionID'];
+      if (!empty($participantRecord['contributionID'])) {
+        $this->_values['contributionId'] = $participantRecord['contributionID'];
       }
 
       //CRM-4453.
-      if (!empty($value['is_primary'])) {
-        $primaryCurrencyID = $value['currencyID'] ?? NULL;
+      if (!empty($participantRecord['is_primary'])) {
+        $primaryCurrencyID = $participantRecord['currencyID'] ?? NULL;
       }
-      if (empty($value['currencyID'])) {
-        $value['currencyID'] = $primaryCurrencyID;
+      if (empty($participantRecord['currencyID'])) {
+        $participantRecord['currencyID'] = $primaryCurrencyID;
       }
 
       // CRM-11182 - Confirmation page might not be monetary
       if ($this->_values['event']['is_monetary']) {
-        if (!$pending && !empty($value['is_primary']) &&
+        if (!$pending && !empty($participantRecord['is_primary']) &&
           !$this->_allowWaitlist && !$this->_requireApproval
         ) {
           // transactionID & receive date required while building email template
-          $this->assign('trxn_id', $value['trxn_id'] ?? NULL);
-          $this->assign('receive_date', CRM_Utils_Date::mysqlToIso($value['receive_date'] ?? NULL));
-          $this->set('receiveDate', CRM_Utils_Date::mysqlToIso($value['receive_date'] ?? NULL));
-          $this->set('trxnId', $value['trxn_id'] ?? NULL);
+          $this->assign('trxn_id', $participantRecord['trxn_id'] ?? NULL);
+          $this->assign('receive_date', CRM_Utils_Date::mysqlToIso($participantRecord['receive_date'] ?? NULL));
+          $this->set('receiveDate', CRM_Utils_Date::mysqlToIso($participantRecord['receive_date'] ?? NULL));
+          $this->set('trxnId', $participantRecord['trxn_id'] ?? NULL);
         }
       }
 
-      $value['fee_amount'] = $value['amount'] ?? NULL;
-      $this->set('value', $value);
+      $participantRecord['fee_amount'] = $participantRecord['amount'] ?? NULL;
+      $this->set('value', $participantRecord);
 
       // handle register date CRM-4320
       if ($this->_allowConfirmation) {
@@ -695,7 +678,6 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
 
       $entityTable = 'civicrm_participant';
       $totalTaxAmount = 0;
-      $dataArray = [];
       foreach ($this->_lineItem as $key => $value) {
         if ($value == 'skip') {
           continue;
@@ -708,21 +690,14 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
           $lineItem[$this->_priceSetId] = $value;
           CRM_Price_BAO_LineItem::processPriceSet($entityId, $lineItem, $contribution, $entityTable);
         }
-        if (CRM_Invoicing_Utils::isInvoicingEnabled()) {
+        if (\Civi::settings()->get('invoicing')) {
           foreach ($value as $line) {
             if (isset($line['tax_amount']) && isset($line['tax_rate'])) {
               $totalTaxAmount = $line['tax_amount'] + $totalTaxAmount;
-              if (isset($dataArray[$line['tax_rate']])) {
-                $dataArray[$line['tax_rate']] = $dataArray[$line['tax_rate']] + ($line['tax_amount'] ?? 0);
-              }
-              else {
-                $dataArray[$line['tax_rate']] = $line['tax_amount'] ?? NULL;
-              }
             }
           }
         }
       }
-      $this->assign('dataArray', $dataArray);
       $this->assign('totalTaxAmount', $totalTaxAmount);
     }
 
@@ -750,8 +725,7 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
 
     // for Transfer checkout.
     // The concept of contributeMode is deprecated.
-    if (($this->_contributeMode == 'checkout' ||
-        $this->_contributeMode == 'notify'
+    if (($this->getPaymentProcessorObject()->supports('noReturn')
       ) && empty($params[0]['is_pay_later']) &&
       !$this->_allowWaitlist && !$this->_requireApproval &&
       $this->_totalAmount > 0
@@ -817,7 +791,7 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
           }
 
           //get event custom field information
-          $groupTree = CRM_Core_BAO_CustomGroup::getTree('Event', NULL, $this->_eventId, 0, $this->_values['event']['event_type_id']);
+          $groupTree = CRM_Core_BAO_CustomGroup::getTree('Event', NULL, $this->getEventID(), 0, $this->_values['event']['event_type_id']);
           $primaryParticipant['eventCustomFields'] = $groupTree;
 
           // call postprocess hook before leaving
@@ -901,10 +875,8 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
             if ($lineItemValue = ($lineItems[$participantNum] ?? NULL)) {
               $lineItem[] = $lineItemValue;
             }
-            if (CRM_Invoicing_Utils::isInvoicingEnabled()) {
+            if (\Civi::settings()->get('invoicing')) {
               $individual = $this->get('individual');
-              $dataArray[key($dataArray)] = $individual[$participantNum]['totalTaxAmt'];
-              $this->assign('dataArray', $dataArray);
               $this->assign('totalAmount', $individual[$participantNum]['totalAmtWithTax']);
               $this->assign('totalTaxAmount', $individual[$participantNum]['totalTaxAmt']);
               $this->assign('individual', [$individual[$participantNum]]);
@@ -983,7 +955,7 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
       ];
     }
 
-    $allStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
+    $allStatuses = CRM_Contribute_BAO_Contribution::buildOptions('contribution_status_id', 'validate');
     $contribParams['contribution_status_id'] = array_search('Completed', $allStatuses);
     if ($pending) {
       $contribParams['contribution_status_id'] = array_search('Pending', $allStatuses);
@@ -1008,19 +980,14 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
         $contribParams['revenue_recognition_date'] = date('Ymd', strtotime($eventStartDate));
       }
     }
-    //create an contribution address
-    // The concept of contributeMode is deprecated. Elsewhere we use the function processBillingAddress() - although
-    // currently that is only inherited by back-office forms.
-    if ($form->_contributeMode != 'notify' && empty($params['is_pay_later'])) {
-      $contribParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params);
-    }
+    $contribParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params);
 
     $contribParams['skipLineItem'] = 1;
     $contribParams['skipCleanMoney'] = 1;
     // create contribution record
     $contribution = CRM_Contribute_BAO_Contribution::add($contribParams);
     // CRM-11124
-    CRM_Event_BAO_Participant::createDiscountTrxn($form->_eventId, $contribParams, NULL, CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($params));
+    CRM_Event_BAO_Participant::createDiscountTrxn($form->getEventID(), $contribParams, NULL, CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($params));
 
     $transaction->commit();
 
@@ -1062,12 +1029,13 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
     }
 
     // Add the billing names to the billing address, if a billing name is set
+    $billingLocationTypeID = CRM_Core_BAO_LocationType::getBilling();
     if (!empty($params['billing_first_name'])) {
-      $params["address_name-{$form->_bltID}"] = $params['billing_first_name'] . ' ' . ($params['billing_middle_name'] ?? '') . ' ' . ($params['billing_last_name'] ?? '');
-      $fields["address_name-{$form->_bltID}"] = 1;
+      $params["address_name-{$billingLocationTypeID}"] = $params['billing_first_name'] . ' ' . ($params['billing_middle_name'] ?? '') . ' ' . ($params['billing_last_name'] ?? '');
+      $fields["address_name-{$billingLocationTypeID}"] = 1;
     }
 
-    $fields["email-{$form->_bltID}"] = 1;
+    $fields["email-{$billingLocationTypeID}"] = 1;
     $fields['email-Primary'] = 1;
 
     //if its pay later or additional participant set email address as primary.
@@ -1075,9 +1043,9 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
         !$form->_values['event']['is_monetary'] ||
         $form->_allowWaitlist ||
         $form->_requireApproval
-      ) && !empty($params["email-{$form->_bltID}"])
+      ) && !empty($params["email-{$billingLocationTypeID}"])
     ) {
-      $params['email-Primary'] = $params["email-{$form->_bltID}"];
+      $params['email-Primary'] = $params["email-{$billingLocationTypeID}"];
     }
   }
 
@@ -1185,7 +1153,7 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
     //get email primary first if exist
     $subscriptionEmail = ['email' => $params['email-Primary'] ?? NULL];
     if (!$subscriptionEmail['email']) {
-      $subscriptionEmail['email'] = $params["email-{$form->_bltID}"] ?? NULL;
+      $subscriptionEmail['email'] = $params['email-' . CRM_Core_BAO_LocationType::getBilling()] ?? NULL;
     }
     // subscribing contact to groups
     if (!empty($subscribeGroupIds) && $subscriptionEmail['email']) {
@@ -1312,20 +1280,20 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration {
    * Process the payment, redirecting back to the page on error.
    *
    * @param \CRM_Core_Payment $payment
-   * @param $value
+   * @param array $value
    *
    * @return array
    */
-  private function processPayment($payment, $value) {
+  private function processPayment(\CRM_Core_Payment $payment, array $value): array {
     try {
       $params = $this->prepareParamsForPaymentProcessor($value);
-      $result = $payment->doPayment($params, 'event');
-      return [$result, $value];
+      $doPaymentResult = $payment->doPayment($params, 'event');
+      return [$doPaymentResult, $value];
     }
     catch (\Civi\Payment\Exception\PaymentProcessorException $e) {
       Civi::log()->error('Payment processor exception: ' . $e->getMessage());
       CRM_Core_Session::singleton()->setStatus($e->getMessage());
-      CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/event/register', "id={$this->_eventId}"));
+      CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/event/register', "id={$this->getEventID()}"));
     }
     return [];
   }
diff --git a/civicrm/CRM/Event/Form/Registration/ThankYou.php b/civicrm/CRM/Event/Form/Registration/ThankYou.php
index 948294772a3f2790a208b889bd11ffacec00a24c..474e3d5f8d076c623ffad911c5996e0de2bfc3e9 100644
--- a/civicrm/CRM/Event/Form/Registration/ThankYou.php
+++ b/civicrm/CRM/Event/Form/Registration/ThankYou.php
@@ -72,13 +72,17 @@ class CRM_Event_Form_Registration_ThankYou extends CRM_Event_Form_Registration {
   public function buildQuickForm() {
     // Assign the email address from a contact id lookup as in CRM_Event_BAO_Event->sendMail()
     $primaryContactId = $this->get('primaryContactId');
+    $email = NULL;
     if ($primaryContactId) {
       $email = CRM_Utils_Array::valueByRegexKey('/^email-/', current($this->_params));
       if (!$email) {
         $email = CRM_Contact_BAO_Contact::getPrimaryEmail($primaryContactId);
       }
-      $this->assign('email', $email);
     }
+    $this->assign('email', $email ?? NULL);
+    $this->assign('eventConfirmText', $this->getEventValue('is_monetary') ? $this->getPaymentProcessorObject()->getText('eventConfirmText', []) : '');
+    $this->assign('eventConfirmEmailText', ($email && $this->getEventValue('is_monetary')) ? $this->getPaymentProcessorObject()->getText('eventConfirmEmailText', ['email' => $email]) : '');
+
     $this->assignToTemplate();
 
     $invoicing = CRM_Invoicing_Utils::isInvoicingEnabled();
diff --git a/civicrm/CRM/Event/Form/SelfSvcUpdate.php b/civicrm/CRM/Event/Form/SelfSvcUpdate.php
index ae9850714737b43634ef813f232d07f7ad98e6d4..249da1cec5098c6a4864218c9ca53c627da971a1 100644
--- a/civicrm/CRM/Event/Form/SelfSvcUpdate.php
+++ b/civicrm/CRM/Event/Form/SelfSvcUpdate.php
@@ -27,6 +27,7 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form {
    *
    */
   protected $_participant_id;
+
   /**
    * contact id
    *
@@ -34,6 +35,7 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form {
    *
    */
   protected $_contact_id;
+
   /**
    * name of the participant
    *
@@ -41,65 +43,80 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form {
    *
    */
   protected $_contact_name;
+
   /**
    * email of participant
    *
    * @var string
    */
   protected $_contact_email;
+
   /**
    * event to be cancelled/transferred
    *
    * @var string
    */
   protected $_event_id;
+
   /**
    * event title
    *
    * @var string
    */
   protected $_event_title;
+
   /**
    * event title
    *
    * @var string
    */
   protected $_event_start_date;
+
   /**
    * action
    *
    * @var string
    */
   public $_action;
+
   /**
    * participant object
    *
    * @var string
    */
   protected $_participant = [];
+
   /**
    * participant values
    *
    * @var string
    */
   protected $_part_values;
+
   /**
    * details of event registration values
    *
    * @var array
    */
   protected $_details = [];
+
   /**
    * Is backoffice form?
    *
    * @var bool
    */
   protected $isBackoffice = FALSE;
+
   /**
    * @var string
    */
   protected $_userContext;
 
+  /**
+   * @var string
+   */
+  protected $_userChecksum;
+
   /**
    * Set variables up before form is built based on participant ID from URL
    *
@@ -149,19 +166,13 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form {
     }
     $details = array_merge($details, $selfServiceDetails);
     $this->assign('details', $details);
-    $this->selfsvcupdateUrl = CRM_Utils_System::url('civicrm/event/selfsvcupdate', "reset=1&id={$this->_participant_id}&id=0");
-    $this->selfsvcupdateText = ts('Update');
-    $this->selfsvcupdateButtonText = ts('Update');
-    // Based on those ids retrieve event and verify it is eligible
-    // for self update (event.start_date > today, event can be 'self_updated'
-    // retrieve contact name and email, and let user verify his/her identity
   }
 
   /**
    * buildQuickForm -populate input variables for source Event
    * to cancel or transfer to another person
    *
-   * return @void
+   * @return void
    */
   public function buildQuickForm() {
     $this->add('select', 'action', ts('Transfer or Cancel Registration'), [ts('-select-'), ts('Transfer'), ts('Cancel Registration')], TRUE);
@@ -182,7 +193,7 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form {
   /**
    * Set default values for contact
    *
-   * return @void
+   * @return void
    */
   public function setDefaultValues() {
     $this->_defaults = [];
@@ -212,15 +223,15 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form {
    * Process submit form - based on user selection of action
    * transfer or cancel the event
    *
-   * return @void
+   * @return void
    */
   public function postProcess() {
     //if selection is cancel, cancel this participant' registration, process refund
-    //if transfer, process form to allow selection of transferree
+    //if transfer, process form to allow selection of transferee
     $params = $this->controller->exportValues($this->_name);
     $action = $params['action'];
     if ($action == "1") {
-      $this->transferParticipant($params);
+      $this->transferParticipant();
     }
     elseif ($action == "2") {
       $this->cancelParticipant($params);
@@ -231,9 +242,9 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form {
    * Transfer to a new form, allowing selection of a new contact
    * based on email and name. The Event will be transferred to this new participant
    *
-   * return @void
+   * @return void
    */
-  public function transferParticipant($params) {
+  public function transferParticipant() {
     CRM_Utils_System::redirect(CRM_Utils_System::url(
       'civicrm/event/selfsvctransfer',
       [
@@ -250,12 +261,10 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form {
    * Cancel this participant and finish, send cancellation email. At this point no
    * auto-cancellation of payment is handled, so payment needs to be manually cancelled
    *
-   * return @void
-   *
    * @throws \CRM_Core_Exception
    */
   public function cancelParticipant($params) {
-    //set participant record status to Cancelled, refund payment if possible
+    // Set participant record status to Cancelled, refund payment if possible
     // send email to participant and admin, and log Activity
     $value = [];
     $value['id'] = $this->_participant_id;
diff --git a/civicrm/CRM/Event/Form/Task/Badge.php b/civicrm/CRM/Event/Form/Task/Badge.php
index 69496c959857b7e05cc2df770d5acb9eaaa25a0f..0e1d02fb964d8595269d581b57d1b2b3017caf2c 100644
--- a/civicrm/CRM/Event/Form/Task/Badge.php
+++ b/civicrm/CRM/Event/Form/Task/Badge.php
@@ -34,6 +34,13 @@ class CRM_Event_Form_Task_Badge extends CRM_Event_Form_Task {
    */
   public $_componentClause;
 
+  /**
+   * The context this page is being rendered in
+   *
+   * @var string
+   */
+  protected $_context;
+
   /**
    * Build all the data structures needed to build the form.
    *
diff --git a/civicrm/CRM/Event/Form/Task/Batch.php b/civicrm/CRM/Event/Form/Task/Batch.php
index 614696c11b974ff4b443e208826af5471c562fed..92e1becbf9172036ff5e95f3cf0d97e9f194b1bc 100644
--- a/civicrm/CRM/Event/Form/Task/Batch.php
+++ b/civicrm/CRM/Event/Form/Task/Batch.php
@@ -155,7 +155,7 @@ class CRM_Event_Form_Task_Batch extends CRM_Event_Form_Task {
       CRM_Core_BAO_CustomField::getFields('Participant', FALSE, FALSE, NULL, NULL, TRUE)
     );
     $customFields = CRM_Utils_Array::crmArrayMerge($customFieldsEventType, $customFields);
-    $this->_customFields = CRM_Utils_Array::crmArrayMerge($customFieldsEvent, $customFields);
+    $customFields = CRM_Utils_Array::crmArrayMerge($customFieldsEvent, $customFields);
 
     foreach ($this->_participantIds as $participantId) {
       $roleId = CRM_Core_DAO::getFieldValue("CRM_Event_DAO_Participant", $participantId, 'role_id');
@@ -163,7 +163,7 @@ class CRM_Event_Form_Task_Batch extends CRM_Event_Form_Task {
       $eventTypeId = CRM_Core_DAO::getFieldValue("CRM_Event_DAO_Event", $eventId, 'event_type_id');
       foreach ($this->_fields as $name => $field) {
         if ($customFieldID = CRM_Core_BAO_CustomField::getKeyID($name)) {
-          $customValue = $this->_customFields[$customFieldID] ?? NULL;
+          $customValue = $customFields[$customFieldID] ?? NULL;
           $entityColumnValue = [];
           if (!empty($customValue['extends_entity_column_value'])) {
             $entityColumnValue = explode(CRM_Core_DAO::VALUE_SEPARATOR,
@@ -331,11 +331,7 @@ class CRM_Event_Form_Task_Batch extends CRM_Event_Form_Task {
     }
 
     //set values for ipn code.
-    foreach ([
-      'fee_amount',
-      'check_number',
-      'payment_instrument_id',
-    ] as $field) {
+    foreach (['fee_amount', 'check_number', 'payment_instrument_id'] as $field) {
       if (!$input[$field] = CRM_Utils_Array::value($field, $params)) {
         $input[$field] = $contribution->$field;
       }
diff --git a/civicrm/CRM/Event/Tokens.php b/civicrm/CRM/Event/Tokens.php
index ed4f8066560628437b4c6298c6c911b25a029406..3cedb677e13318a21834565c1fb7e6be665638c4 100644
--- a/civicrm/CRM/Event/Tokens.php
+++ b/civicrm/CRM/Event/Tokens.php
@@ -170,6 +170,9 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens {
    * @internal
    */
   protected function getEventTokenValues(int $eventID = NULL): array {
+    if (!$eventID) {
+      return [];
+    }
     $cacheKey = __CLASS__ . 'event_tokens' . $eventID . '_' . CRM_Core_I18n::getLocale();
     if ($this->checkPermissions) {
       $cacheKey .= '__' . CRM_Core_Session::getLoggedInContactID();
@@ -204,6 +207,7 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens {
           'pay_later_text',
           'pay_later_receipt',
           'fee_label',
+          'is_show_calendar_links:label',
           'custom.*',
         ], $this->getExposedFields()))
         ->execute()->first();
@@ -271,6 +275,7 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens {
       'confirm_email_text',
       'is_monetary',
       'fee_label',
+      'is_show_calendar_links',
     ];
   }
 
@@ -287,10 +292,11 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens {
    */
   protected function getTokenMetadataOverrides(): array {
     return [
+      'allow_selfcancelxfer' => ['audience' => 'sysadmin'],
+      'is_monetary' => ['audience' => 'sysadmin'],
       'is_public' => ['audience' => 'sysadmin'],
+      'is_show_calendar_links' => ['audience' => 'sysadmin'],
       'is_show_location' => ['audience' => 'sysadmin'],
-      'is_monetary' => ['audience' => 'sysadmin'],
-      'allow_selfcancelxfer' => ['audience' => 'sysadmin'],
       'selfcancelxfer_time' => ['audience' => 'sysadmin'],
     ];
   }
diff --git a/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php b/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php
index 22c02d19265f342c767c403dd444a0796540fec9..be46e2c807621cc5c33951b4a47a32bc41841dd6 100644
--- a/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php
+++ b/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php
@@ -50,6 +50,17 @@ trait CRM_Event_WorkflowMessage_ParticipantTrait {
    */
   public $isShowParticipantCount;
 
+  /**
+   * What is the participant count, if 'specifically configured'.
+   *
+   * See getter notes.
+   *
+   * @var bool
+   *
+   * @scope tplParams as participantCount
+   */
+  public $participantCount;
+
   /**
    * @var int
    *
@@ -175,12 +186,28 @@ trait CRM_Event_WorkflowMessage_ParticipantTrait {
    * @throws \CRM_Core_Exception
    */
   public function getIsShowParticipantCount(): bool {
+    return (bool) $this->getParticipantCount();
+  }
+
+  /**
+   * Get the count of participants, where count is used in the line items.
+   *
+   * This might be the case where a line item represents a table of 6 people.
+   *
+   * Where the price field value does not record the participant count we ignore.
+   *
+   * This lack of specifying it is a bit unclear but seems to be 'presumed 1'.
+   * From the templates point of view it is not information to present if not
+   * configured.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function getParticipantCount() {
+    $count = 0;
     foreach ($this->getLineItems() as $lineItem) {
-      if ((int) $lineItem['participant_count'] > 1) {
-        return TRUE;
-      }
+      $count += $lineItem['participant_count'];
     }
-    return FALSE;
+    return $count;
   }
 
   /**
diff --git a/civicrm/CRM/Export/BAO/ExportProcessor.php b/civicrm/CRM/Export/BAO/ExportProcessor.php
index 9a2002d72e1f1e211eb0c6a7b547a33fc0018a3e..2b26fd10284e15cecbf60b9acf1d48388ed56586 100644
--- a/civicrm/CRM/Export/BAO/ExportProcessor.php
+++ b/civicrm/CRM/Export/BAO/ExportProcessor.php
@@ -1010,7 +1010,7 @@ class CRM_Export_BAO_ExportProcessor {
         if ($field == 'provider_id' || $field == 'im_provider') {
           $fieldValue = $imProviders[$fieldValue] ?? NULL;
         }
-        elseif (strstr($field, 'master_id')) {
+        elseif (str_contains($field, 'master_id')) {
           // @todo - why not just $field === 'master_id'  - what else would it be?
           $masterAddressId = $iterationDAO->$field ?? NULL;
           // get display name of contact that address is shared.
@@ -1126,11 +1126,7 @@ class CRM_Export_BAO_ExportProcessor {
 
         return CRM_Core_BAO_CustomField::displayValue($fieldValue, $cfID);
       }
-      elseif (in_array($field, [
-        'email_greeting',
-        'postal_greeting',
-        'addressee',
-      ])) {
+      elseif (in_array($field, ['email_greeting', 'postal_greeting', 'addressee'])) {
         //special case for greeting replacement
         $fldValue = "{$field}_display";
         return $iterationDAO->$fldValue;
@@ -2138,11 +2134,9 @@ WHERE  id IN ( $deleteIDString )
           $fieldValue = $imProviders[$relationValue] ?? NULL;
         }
         // CRM-13995
-        elseif (is_object($relDAO) && in_array($relationField, [
-          'email_greeting',
-          'postal_greeting',
-          'addressee',
-        ])) {
+        elseif (is_object($relDAO) &&
+          in_array($relationField, ['email_greeting', 'postal_greeting', 'addressee'])
+        ) {
           //special case for greeting replacement
           $fldValue = "{$relationField}_display";
           $fieldValue = $relDAO->$fldValue;
diff --git a/civicrm/CRM/Export/Form/Select.php b/civicrm/CRM/Export/Form/Select.php
index 2c83bc0e824d316331b475c97ba300ad74d1505a..42601a11e5a85396b79fbbef0caafbfac62feeed 100644
--- a/civicrm/CRM/Export/Form/Select.php
+++ b/civicrm/CRM/Export/Form/Select.php
@@ -91,7 +91,7 @@ class CRM_Export_Form_Select extends CRM_Core_Form_Task {
     $this->_matchingContacts = FALSE;
     if (($values['radio_ts'] ?? NULL) == 'ts_sel') {
       foreach ($values as $key => $value) {
-        if (strstr($key, 'mark_x')) {
+        if (str_contains($key, 'mark_x')) {
           $count++;
         }
         if ($count > 2) {
diff --git a/civicrm/CRM/Extension/Browser.php b/civicrm/CRM/Extension/Browser.php
index 5b7b683fd716fb7e01490fc664869fb63de18bc8..cf6dcae9d354087caf07dd0ded54146d86f6aacd 100644
--- a/civicrm/CRM/Extension/Browser.php
+++ b/civicrm/CRM/Extension/Browser.php
@@ -34,11 +34,6 @@ class CRM_Extension_Browser {
    */
   const SINGLE_FILE_PATH = '/single';
 
-  /**
-   * Timeout for when the connection or the server is slow
-   */
-  const CHECK_TIMEOUT = 5;
-
   /**
    * @var GuzzleHttp\Client
    */
@@ -219,9 +214,11 @@ class CRM_Extension_Browser {
 
     $url = $this->getRepositoryUrl() . $this->indexPath;
     $client = $this->getGuzzleClient();
+    // Timeout should be a minimum of 10 seconds. See https://lab.civicrm.org/infra/ops/-/issues/1009.
+    $timeout = max(10, \Civi::settings()->get('http_timeout'));
     try {
       $response = $client->request('GET', $url, [
-        'timeout' => \Civi::settings()->get('http_timeout'),
+        'timeout' => $timeout,
       ]);
     }
     catch (GuzzleException $e) {
diff --git a/civicrm/CRM/Extension/Downloader.php b/civicrm/CRM/Extension/Downloader.php
index ccd6d20884b07add3d7d6b8f1d44b308c24ee30a..a0cad95ffb95a48adaef082f6b73d5ba5e53e4ac 100644
--- a/civicrm/CRM/Extension/Downloader.php
+++ b/civicrm/CRM/Extension/Downloader.php
@@ -191,24 +191,31 @@ class CRM_Extension_Downloader {
     if ($res === TRUE) {
       $zipSubDir = CRM_Utils_Zip::guessBasedir($zip, $key);
       if ($zipSubDir === FALSE) {
+        \Civi::log()->error('Unable to extract the extension: bad directory structure');
         CRM_Core_Session::setStatus(ts('Unable to extract the extension: bad directory structure'), '', 'error');
         return FALSE;
       }
       $extractedZipPath = $this->tmpDir . DIRECTORY_SEPARATOR . $zipSubDir;
       if (is_dir($extractedZipPath)) {
         if (!CRM_Utils_File::cleanDir($extractedZipPath, TRUE, FALSE)) {
+          \Civi::log()->error('Unable to extract the extension {extension}: {path} cannot be cleared', [
+            'extension' => $key,
+            'path' => $extractedZipPath,
+          ]);
           CRM_Core_Session::setStatus(ts('Unable to extract the extension: %1 cannot be cleared', [1 => $extractedZipPath]), ts('Installation Error'), 'error');
           return FALSE;
         }
       }
       if (!$zip->extractTo($this->tmpDir)) {
+        \Civi::log()->error('Unable to extract the extension to {path}.', ['path' => $this->tmpDir]);
         CRM_Core_Session::setStatus(ts('Unable to extract the extension to %1.', [1 => $this->tmpDir]), ts('Installation Error'), 'error');
         return FALSE;
       }
       $zip->close();
     }
     else {
-      CRM_Core_Session::setStatus(ts('Unable to extract the extension.'), '', 'error');
+      \Civi::log()->error('Unable to extract the extension');
+      CRM_Core_Session::setStatus(ts('Unable to extract the extension'), '', 'error');
       return FALSE;
     }
 
@@ -227,6 +234,7 @@ class CRM_Extension_Downloader {
   public function validateFiles($key, $extractedZipPath) {
     $filename = $extractedZipPath . DIRECTORY_SEPARATOR . CRM_Extension_Info::FILENAME;
     if (!is_readable($filename)) {
+      \Civi::log()->error('Failed reading data from {filename} during installation', ['filename' => $filename]);
       CRM_Core_Session::setStatus(ts('Failed reading data from %1 during installation', [1 => $filename]), ts('Installation Error'), 'error');
       return FALSE;
     }
@@ -235,6 +243,7 @@ class CRM_Extension_Downloader {
       $newInfo = CRM_Extension_Info::loadFromFile($filename);
     }
     catch (Exception $e) {
+      \Civi::log()->error('Failed reading data from {filename} during installation', ['filename' => $filename]);
       CRM_Core_Session::setStatus(ts('Failed reading data from %1 during installation', [1 => $filename]), ts('Installation Error'), 'error');
       return FALSE;
     }
diff --git a/civicrm/CRM/Extension/Upgrader/Component.php b/civicrm/CRM/Extension/Upgrader/Component.php
index d4e3b07e3e630c6b6d07be7b456aa66927cb62a5..b445c964a3ad6c3ae8b5198dc61c447857163e09 100644
--- a/civicrm/CRM/Extension/Upgrader/Component.php
+++ b/civicrm/CRM/Extension/Upgrader/Component.php
@@ -1,5 +1,4 @@
 <?php
-use CRM_AfformAdmin_ExtensionUtil as E;
 
 /**
  * Upgrader base class ONLY for core component extensions (e.g. `civi_mail`, `civi_event`).
@@ -22,7 +21,7 @@ class CRM_Extension_Upgrader_Component extends CRM_Extension_Upgrader_Base {
   }
 
   /**
-   * Get of component (e.g. CiviMail)
+   * Get name of component corresponding to this extension (e.g. CiviMail)
    *
    * @return string
    */
diff --git a/civicrm/CRM/Financial/BAO/ExportFormat.php b/civicrm/CRM/Financial/BAO/ExportFormat.php
index 8e27691e57576fed3c6a89368b4c04ec05132126..9112655b5558c5dcc633959ab4e3fc81777b07a8 100644
--- a/civicrm/CRM/Financial/BAO/ExportFormat.php
+++ b/civicrm/CRM/Financial/BAO/ExportFormat.php
@@ -40,6 +40,19 @@ abstract class CRM_Financial_BAO_ExportFormat {
    */
   public $_isDownloadFile;
 
+  /**
+   * BatchIds to be exported
+   * @var string
+   */
+  public $_batchIds;
+
+
+  /**
+   * Files to be downloaded
+   * @var array
+   */
+  public $_downloadFile;
+
   /**
    * Class constructor.
    */
diff --git a/civicrm/CRM/Financial/BAO/Order.php b/civicrm/CRM/Financial/BAO/Order.php
index ca74b7d44c9405b197d9133ce1fb245c8303c7e0..a7098b0a970d2784f8efb4266ba7048ac570cdac 100644
--- a/civicrm/CRM/Financial/BAO/Order.php
+++ b/civicrm/CRM/Financial/BAO/Order.php
@@ -672,6 +672,10 @@ class CRM_Financial_BAO_Order {
    */
   protected function setPriceFieldMetadata(array $metadata): void {
     foreach ($metadata as $index => $priceField) {
+      $metadata[$index]['supports_auto_renew'] = FALSE;
+      if ($this->isExcludeExpiredFields && !$priceField['is_active']) {
+        unset($metadata[$index]);
+      }
       if ($this->isExcludeExpiredFields && !empty($priceField['active_on']) && time() < strtotime($priceField['active_on'])) {
         unset($metadata[$index]);
       }
@@ -680,14 +684,16 @@ class CRM_Financial_BAO_Order {
       }
       elseif (!empty($priceField['options'])) {
         foreach ($priceField['options'] as $optionID => $option) {
-          if (!empty($option['membership_type_id'])) {
+          if (!$option['is_active']) {
+            unset($metadata[$index]['options'][$optionID]);
+          }
+          elseif (!empty($option['membership_type_id'])) {
             $membershipType = CRM_Member_BAO_MembershipType::getMembershipType((int) $option['membership_type_id']);
-            $metadata[$index]['options'][$optionID]['auto_renew'] = (int) $membershipType['auto_renew'];
-            if ($membershipType['auto_renew'] && empty($this->priceSetMetadata['auto_renew_membership_field'])) {
-              // Quick form layer supports one auto-renew membership type per price set. If we
-              // want more for any reason we can add another array property.
-              $this->priceSetMetadata['auto_renew_membership_field'] = (int) $option['price_field_id'];
-            }
+            $metadata[$index]['options'][$optionID]['membership_type_id.auto_renew'] = (int) $membershipType['auto_renew'];
+            $metadata[$index]['supports_auto_renew'] = $metadata[$index]['supports_auto_renew'] ?? $membershipType['auto_renew'] ?: (bool) $membershipType['auto_renew'];
+          }
+          else {
+            $metadata[$index]['options'][$optionID]['membership_type_id.auto_renew'] = NULL;
           }
         }
       }
@@ -711,7 +717,6 @@ class CRM_Financial_BAO_Order {
     if (empty($this->priceSetMetadata)) {
       $this->priceSetMetadata = CRM_Price_BAO_PriceSet::getCachedPriceSetDetail($this->getPriceSetID());
       $this->priceSetMetadata['id'] = $this->getPriceSetID();
-      $this->priceSetMetadata['auto_renew_membership_field'] = NULL;
       $this->setPriceFieldMetadata($this->priceSetMetadata['fields']);
       unset($this->priceSetMetadata['fields']);
     }
@@ -816,6 +821,17 @@ class CRM_Financial_BAO_Order {
     return $this->lineItems;
   }
 
+  /**
+   * Recalculate the line items.
+   *
+   * @return void
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function recalculateLineItems(): void {
+    $this->lineItems = $this->calculateLineItems();
+  }
+
   /**
    * Get line items in a 'traditional' indexing format.
    *
@@ -917,8 +933,9 @@ class CRM_Financial_BAO_Order {
         if ($valueID !== '') {
           $this->setPriceSetIDFromSelectedField($fieldID);
           $throwAwayArray = [];
+          $temporaryParams = $params;
           // @todo - still using getLine for now but better to bring it to this class & do a better job.
-          $newLines = CRM_Price_BAO_PriceSet::getLine($params, $throwAwayArray, $this->getPriceSetID(), $this->getPriceFieldSpec($fieldID), $fieldID)[1];
+          $newLines = CRM_Price_BAO_PriceSet::getLine($temporaryParams, $throwAwayArray, $this->getPriceSetID(), $this->getPriceFieldSpec($fieldID), $fieldID)[1];
           foreach ($newLines as $newLine) {
             $lineItems[$newLine['price_field_value_id']] = $newLine;
           }
@@ -947,8 +964,30 @@ class CRM_Financial_BAO_Order {
       elseif ($taxRate) {
         $lineItem['tax_amount'] = ($taxRate / 100) * $lineItem['line_total'];
       }
+      $lineItem['membership_type_id'] = $lineItem['membership_type_id'] ?? NULL;
+      if ($lineItem['membership_type_id']) {
+        $lineItem['entity_table'] = 'civicrm_membership';
+        $lineItem['membership_num_terms'] = $lineItem['membership_num_terms'] ?:1;
+      }
       $lineItem['title'] = $this->getLineItemTitle($lineItem);
-      $lineItem['line_total_inclusive'] = $lineItem['line_total'] + $lineItem['tax_amount'];
+      $lineItem['tax_rate'] = $taxRate = $this->getTaxRate((int) $lineItem['financial_type_id']);
+      if ($this->getOverrideTotalAmount() !== FALSE) {
+        $this->addTotalsToLineBasedOnOverrideTotal((int) $lineItem['financial_type_id'], $lineItem);
+      }
+      elseif ($this->getPriceFieldMetadata($lineItem['price_field_id'])['name'] === 'other_amount') {
+        // Other amount is a front end user entered form. It is reasonable to think it would be tax inclusive.
+        $lineItem['line_total_inclusive'] = $lineItem['line_total'];
+        $lineItem['line_total'] = $lineItem['line_total_inclusive'] / (1 + ($lineItem['tax_rate'] / 100));
+        $lineItem['tax_amount'] = round($lineItem['line_total_inclusive'] - $lineItem['line_total'], 2);
+        // Make sure they still add up to each other afer the rounding.
+        $lineItem['line_total'] = $lineItem['line_total_inclusive'] - $lineItem['tax_amount'];
+        $lineItem['unit_price'] = $lineItem['line_total'] / $lineItem['qty'];
+
+      }
+      elseif ($taxRate) {
+        $lineItem['tax_amount'] = ($taxRate / 100) * $lineItem['line_total'];
+      }
+      $lineItem['line_total_inclusive'] = $lineItem['line_total_inclusive'] ?? ($lineItem['line_total'] + $lineItem['tax_amount']);
     }
     return $lineItems;
   }
@@ -983,6 +1022,34 @@ class CRM_Financial_BAO_Order {
     return $amount;
   }
 
+  /**
+   * Get Amount Level text.
+   *
+   * @return string
+   * @throws \CRM_Core_Exception
+   */
+  public function getAmountLevel() : string {
+    $amount_level = [];
+    $totalParticipant = 0;
+    foreach ($this->getLineItems() as $lineItem) {
+      if ($lineItem['label'] !== ts('Contribution Amount')) {
+        $amount_level[] = $lineItem['label'] . ' - ' . (float) $lineItem['qty'];
+      }
+      $totalParticipant += (float) ($lineItem['participant_count'] ?? 0);
+    }
+    $displayParticipantCount = '';
+    if ($totalParticipant > 0) {
+      $displayParticipantCount = ' Participant Count -' . $totalParticipant;
+    }
+    if (!empty($amount_level)) {
+      $amountString = CRM_Utils_Array::implodePadded($amount_level);
+      if (!empty($displayParticipantCount)) {
+        $amountString = CRM_Core_DAO::VALUE_SEPARATOR . implode(CRM_Core_DAO::VALUE_SEPARATOR, $amount_level) . $displayParticipantCount . CRM_Core_DAO::VALUE_SEPARATOR;
+      }
+    }
+    return $amountString ?? '';
+  }
+
   /**
    * Get the total amount relating to memberships for the order.
    *
@@ -1121,6 +1188,18 @@ class CRM_Financial_BAO_Order {
     $this->lineItems[$index][$name] = $value;
   }
 
+  /**
+   * Set the line item array.
+   *
+   * This is mostly useful when they have been calculated & stored
+   * on the form & we want to rebuild the line item object.
+   *
+   * @param array $lineItems
+   */
+  public function setLineItems(array $lineItems): void {
+    $this->lineItems = $lineItems;
+  }
+
   /**
    * @param int|string $index
    *
@@ -1192,6 +1271,8 @@ class CRM_Financial_BAO_Order {
     }
     else {
       $lineItem['line_total'] = $this->getOverrideTotalAmount();
+      $lineItem['tax_amount'] = 0.0;
+      $lineItem['line_total_inclusive'] = $lineItem['line_total'];
     }
     if (!empty($lineItem['qty'])) {
       $lineItem['unit_price'] = $lineItem['line_total'] / $lineItem['qty'];
diff --git a/civicrm/CRM/Financial/BAO/Payment.php b/civicrm/CRM/Financial/BAO/Payment.php
index 82da1f25805b9403f923c723586c8610b5aa2b37..281e78183e536471fa0d96e6b3fa9d838f5afd19 100644
--- a/civicrm/CRM/Financial/BAO/Payment.php
+++ b/civicrm/CRM/Financial/BAO/Payment.php
@@ -288,13 +288,18 @@ class CRM_Financial_BAO_Payment {
     $entities = self::loadRelatedEntities($params['id']);
 
     $sendTemplateParams = [
-      'groupName' => 'msg_tpl_workflow_contribution',
       'workflow' => 'payment_or_refund_notification',
       'PDFFilename' => ts('notification') . '.pdf',
-      'contactId' => $entities['contact']['id'],
       'toName' => $entities['contact']['display_name'],
       'toEmail' => $entities['contact']['email'],
       'tplParams' => self::getConfirmationTemplateParameters($entities),
+      'modelProps' => array_filter([
+        'contributionID' => $entities['contribution']['id'],
+        'contactID' => $entities['contact']['id'],
+        'financialTrxnID' => $params['id'],
+        'eventID' => $entities['event']['id'] ?? NULL,
+        'participantID' => $entities['participant']['id'] ?? NULL,
+      ]),
     ];
     if (!empty($params['from']) && !empty($params['check_permissions'])) {
       // Filter from against permitted emails.
@@ -365,7 +370,8 @@ class CRM_Financial_BAO_Payment {
       'sequential' => 1,
     ])['values'];
     if (!empty($participantRecords)) {
-      $entities['event'] = civicrm_api3('Event', 'getsingle', ['id' => $participantRecords[0]['api.Participant.get']['values'][0]['event_id']]);
+      $entities['participant'] = $participantRecords[0]['api.Participant.get']['values'][0];
+      $entities['event'] = civicrm_api3('Event', 'getsingle', ['id' => $entities['participant']['event_id']]);
       if (!empty($entities['event']['is_show_location'])) {
         $locationParams = [
           'entity_id' => $entities['event']['id'],
@@ -396,6 +402,9 @@ class CRM_Financial_BAO_Payment {
    * @param array $entities
    *   Related entities as an array keyed by the various entities.
    *
+   * @deprecated these template variables no longer used in the core template
+   * from 5.69 - stop assigning them.
+   *
    * @return array
    *   Values required for the notification
    *   - contact_id
diff --git a/civicrm/CRM/Financial/BAO/PaymentProcessor.php b/civicrm/CRM/Financial/BAO/PaymentProcessor.php
index b46df53a76dbda1dd464adfa9b086da3d1a56e46..e0c9fa40e4e36f2336c420e4ade6b2939a9108d2 100644
--- a/civicrm/CRM/Financial/BAO/PaymentProcessor.php
+++ b/civicrm/CRM/Financial/BAO/PaymentProcessor.php
@@ -482,12 +482,7 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces
    */
   public static function getProcessorForEntity($entityID, $component = 'contribute', $type = 'id') {
     $result = NULL;
-    if (!in_array($component, [
-      'membership',
-      'contribute',
-      'recur',
-    ])
-    ) {
+    if (!in_array($component, ['membership', 'contribute', 'recur'])) {
       return $result;
     }
 
diff --git a/civicrm/CRM/Financial/FinancialTrxnTokens.php b/civicrm/CRM/Financial/FinancialTrxnTokens.php
new file mode 100644
index 0000000000000000000000000000000000000000..6aab625b8f9fd5902624637547daeaeae89f0afc
--- /dev/null
+++ b/civicrm/CRM/Financial/FinancialTrxnTokens.php
@@ -0,0 +1,36 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ * Class CRM_Event_Tokens
+ *
+ * Generate "event.*" tokens.
+ */
+class CRM_Financial_FinancialTrxnTokens extends CRM_Core_EntityTokens {
+
+  /**
+   * Get the entity name for api v4 calls.
+   *
+   * @return string
+   */
+  protected function getApiEntityName(): string {
+    return 'FinancialTrxn';
+  }
+
+  /**
+   * @return array
+   */
+  public function getCurrencyFieldName(): array {
+    return ['currency'];
+  }
+
+}
diff --git a/civicrm/CRM/Financial/Form/FinancialAccount.php b/civicrm/CRM/Financial/Form/FinancialAccount.php
index 727c2335e3451c2dee677a0b797b444cffebeae7..2ea06f7705c71438f29e116b92cd4da95566233b 100644
--- a/civicrm/CRM/Financial/Form/FinancialAccount.php
+++ b/civicrm/CRM/Financial/Form/FinancialAccount.php
@@ -200,12 +200,7 @@ class CRM_Financial_Form_FinancialAccount extends CRM_Contribute_Form {
       if ($this->_action & CRM_Core_Action::UPDATE) {
         $params['id'] = $this->_id;
       }
-      foreach ([
-        'is_active',
-        'is_deductible',
-        'is_tax',
-        'is_default',
-      ] as $field) {
+      foreach (['is_active', 'is_deductible', 'is_tax', 'is_default'] as $field) {
         $params[$field] = $params[$field] ?? FALSE;
       }
       $financialAccount = CRM_Financial_BAO_FinancialAccount::writeRecord($params);
diff --git a/civicrm/CRM/Financial/Form/FinancialType.php b/civicrm/CRM/Financial/Form/FinancialType.php
index 4521ca3afc41fb62ca76540a376457f326230ca8..0a953bf5ba6ecf2593fb42349a1b52deff7a4e7c 100644
--- a/civicrm/CRM/Financial/Form/FinancialType.php
+++ b/civicrm/CRM/Financial/Form/FinancialType.php
@@ -117,11 +117,7 @@ class CRM_Financial_Form_FinancialType extends CRM_Core_Form {
       if ($this->_id) {
         $params['id'] = $this->_id;
       }
-      foreach ([
-        'is_active',
-        'is_reserved',
-        'is_deductible',
-      ] as $field) {
+      foreach (['is_active', 'is_reserved', 'is_deductible'] as $field) {
         $params[$field] = $params[$field] ?? FALSE;
       }
       $financialType = civicrm_api3('FinancialType', 'create', $params);
diff --git a/civicrm/CRM/Financial/Form/Payment.php b/civicrm/CRM/Financial/Form/Payment.php
index e1937e149b364f1190e4f931f2ff3adf1da5ee5b..f52d2cad70e3c44f558c686fc469e3c54bc0d65a 100644
--- a/civicrm/CRM/Financial/Form/Payment.php
+++ b/civicrm/CRM/Financial/Form/Payment.php
@@ -69,13 +69,10 @@ class CRM_Financial_Form_Payment extends CRM_Core_Form {
   /**
    * Get currency
    *
-   * @param array $submittedValues
-   *   Required for consistency with other form methods.
-   *
    * @return string
    */
-  public function getCurrency($submittedValues = []) {
-    return $this->currency;
+  public function getCurrency(): string {
+    return (string) $this->currency;
   }
 
   /**
diff --git a/civicrm/CRM/Financial/Form/PaymentProcessorFormTrait.php b/civicrm/CRM/Financial/Form/PaymentProcessorFormTrait.php
new file mode 100644
index 0000000000000000000000000000000000000000..15c8e3f8ec25bd351d3bc6abed9c5e0552b16ecb
--- /dev/null
+++ b/civicrm/CRM/Financial/Form/PaymentProcessorFormTrait.php
@@ -0,0 +1,104 @@
+<?php
+
+/**
+ * Trait implements functions to retrieve payment processor related values.
+ *
+ * Note that any functions on this class that are supported to be used from
+ * outside of core are specifically tagged.
+ */
+trait CRM_Financial_Form_PaymentProcessorFormTrait {
+
+  /**
+   * Get the payment processors that are available on the form.
+   *
+   * @return array
+   * @throws \CRM_Core_Exception
+   */
+  protected function getAvailablePaymentProcessors(): array {
+    return CRM_Financial_BAO_PaymentProcessor::getPaymentProcessors([ucfirst($this->getPaymentProcessorMode()) . 'Mode'], $this->getAvailablePaymentProcessorIDS());
+  }
+
+  /**
+   * Get the payment processor IDs available on the form.
+   *
+   * @return false|array
+   */
+  protected function getAvailablePaymentProcessorIDS() {
+    return FALSE;
+  }
+
+  /**
+   * Get the mode (test or live) of the payment processor.
+   *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   *
+   * @return string|null
+   *   test or live
+   * @throws \CRM_Core_Exception
+   */
+  public function getPaymentProcessorMode(): ?string {
+    return CRM_Utils_Request::retrieve('mode', 'Alphanumeric', $this);
+  }
+
+  /**
+   * Get the payment processor object for the submission, returning the manual one for offline payments.
+   *
+   * @return CRM_Core_Payment
+   */
+  protected function getPaymentProcessorObject() {
+    if (!empty($this->_paymentProcessor)) {
+      return $this->_paymentProcessor['object'];
+    }
+    return new CRM_Core_Payment_Manual();
+  }
+
+  /**
+   * Get the value for a field relating to the in-use payment processor.
+   *
+   * All values returned in apiv4 format. Escaping may be required.
+   *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   *
+   * @param string $fieldName
+   *
+   * @return mixed
+   * @throws \CRM_Core_Exception
+   */
+  public function getPaymentProcessorValue(string $fieldName) {
+    if ($this->isDefined('PaymentProcessor')) {
+      return $this->lookup('PaymentProcessor', $fieldName);
+    }
+    $id = $this->getPaymentProcessorID();
+    if ($id === 0) {
+      $manualProcessor = [
+        'payment_processor_type_id' => 0,
+        'payment_processor_type_id.name' => 'Manual',
+        'payment_processor_type_id.class_name' => 'Payment_Manual',
+      ];
+      return $manualProcessor[$fieldName] ?? NULL;
+    }
+    if ($id) {
+      $this->define('PaymentProcessor', 'PaymentProcessor', ['id' => $id]);
+      return $this->lookup('PaymentProcessor', $fieldName);
+    }
+    return NULL;
+  }
+
+  /**
+   * Get the ID for the in-use payment processor.
+   *
+   * @api This function will not change in a minor release and is supported for
+   * use outside of core. This annotation / external support for properties
+   * is only given where there is specific test cover.
+   *
+   * @return int|null
+   */
+  public function getPaymentProcessorID(): ?int {
+    return isset($this->_paymentProcessor['id']) ? (int) $this->_paymentProcessor['id'] : NULL;
+  }
+
+}
diff --git a/civicrm/CRM/Financial/Form/SalesTaxTrait.php b/civicrm/CRM/Financial/Form/SalesTaxTrait.php
index 3ea4d0183c5f54f8200fb6ab8f639b46d4a87cda..01f0949e10500d190cc21a512578b422b542b951 100644
--- a/civicrm/CRM/Financial/Form/SalesTaxTrait.php
+++ b/civicrm/CRM/Financial/Form/SalesTaxTrait.php
@@ -18,8 +18,11 @@ trait CRM_Financial_Form_SalesTaxTrait {
 
   /**
    * Assign the sales tax term to the template.
+   *
+   * @deprecated since 5.69 will be removed around 5.80
    */
   public function assignSalesTaxTermToTemplate() {
+    CRM_Core_Error::deprecatedFunctionWarning('assign the setting');
     $this->assign('taxTerm', $this->getSalesTaxTerm());
   }
 
@@ -47,7 +50,7 @@ trait CRM_Financial_Form_SalesTaxTrait {
    */
   public function assignSalesTaxMetadataToTemplate() {
     $this->assignSalesTaxRates();
-    $this->assignSalesTaxTermToTemplate();
+    $this->assign('taxTerm', $this->getSalesTaxTerm());
   }
 
   /**
diff --git a/civicrm/CRM/Friend/Form.php b/civicrm/CRM/Friend/Form.php
index 0441951d1e00d4b89283e2644c5125c3b794604a..c36056d048fe09487b8edca1f4c892f03df98c75 100644
--- a/civicrm/CRM/Friend/Form.php
+++ b/civicrm/CRM/Friend/Form.php
@@ -56,10 +56,7 @@ class CRM_Friend_Form extends CRM_Core_Form {
 
     $pcomponent = CRM_Utils_Request::retrieve('pcomponent', 'String', $this, TRUE);
 
-    if (in_array($pcomponent, [
-      'contribute',
-      'event',
-    ])) {
+    if (in_array($pcomponent, ['contribute', 'event'])) {
       $values = [];
       $params = ['id' => $this->_entityId];
       CRM_Core_DAO::commonRetrieve('CRM_Contribute_DAO_ContributionPage',
@@ -285,8 +282,6 @@ class CRM_Friend_Form extends CRM_Core_Form {
           FALSE, NULL, TRUE,
           TRUE
         );
-        $this->assign('linkTextUrl', $linkTextUrl);
-        $this->assign('linkText', $linkText);
       }
     }
     elseif ($this->_entityTable === 'civicrm_event') {
@@ -297,11 +292,10 @@ class CRM_Friend_Form extends CRM_Core_Form {
           "action=add&reset=1&pageId={$defaults['entity_id']}&component=event",
           FALSE, NULL, TRUE,
           TRUE);
-        $this->assign('linkTextUrl', $linkTextUrl);
-        $this->assign('linkText', $linkText);
       }
     }
-
+    $this->assign('linkTextUrl', $linkTextUrl ?? NULL);
+    $this->assign('linkText', $linkText ?? NULL);
     $this->setTitle($defaults['thankyou_title']);
     $this->assign('thankYouText', $defaults['thankyou_text']);
   }
diff --git a/civicrm/CRM/Import/DataSource.php b/civicrm/CRM/Import/DataSource.php
index b44933274adf28d0dd2b66b79159f8228d59cf9b..f6ddab89f74b341412bbd622f0a4576712ab1bb1 100644
--- a/civicrm/CRM/Import/DataSource.php
+++ b/civicrm/CRM/Import/DataSource.php
@@ -15,14 +15,15 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
-use Civi\Api4\UserJob;
+use Civi\Import\DataSource\DataSourceInterface;
+use Civi\Import\DataSource\DataSourceTrait;
 
 /**
  * This class defines the DataSource interface but must be subclassed to be
  * useful.
  */
-abstract class CRM_Import_DataSource {
-
+abstract class CRM_Import_DataSource implements DataSourceInterface {
+  use DataSourceTrait;
   /**
    * @var \CRM_Core_DAO
    */
@@ -38,7 +39,7 @@ abstract class CRM_Import_DataSource {
    *
    * @return CRM_Import_DataSource
    */
-  public function setLimit(int $limit): CRM_Import_DataSource {
+  public function setLimit(int $limit): DataSourceInterface {
     $this->limit = $limit;
     $this->queryResultObject = NULL;
     return $this;
@@ -134,23 +135,12 @@ abstract class CRM_Import_DataSource {
    *
    * @return self
    */
-  public function setStatuses(array $statuses): self {
+  public function setStatuses(array $statuses): DataSourceInterface {
     $this->statuses = $statuses;
     $this->queryResultObject = NULL;
     return $this;
   }
 
-  /**
-   * Class constructor.
-   *
-   * @param int|null $userJobID
-   */
-  public function __construct(int $userJobID = NULL) {
-    if ($userJobID) {
-      $this->setUserJobID($userJobID);
-    }
-  }
-
   /**
    * Form fields declared for this datasource.
    *
@@ -158,73 +148,6 @@ abstract class CRM_Import_DataSource {
    */
   protected $submittableFields = [];
 
-  /**
-   * User job id.
-   *
-   * This is the primary key of the civicrm_user_job table which is used to
-   * track the import.
-   *
-   * @var int
-   */
-  protected $userJobID;
-
-  /**
-   * @return int|null
-   */
-  public function getUserJobID(): ?int {
-    return $this->userJobID;
-  }
-
-  /**
-   * Set user job ID.
-   *
-   * @param int $userJobID
-   */
-  public function setUserJobID(int $userJobID): void {
-    $this->userJobID = $userJobID;
-  }
-
-  /**
-   * User job details.
-   *
-   * This is the relevant row from civicrm_user_job.
-   *
-   * @var array
-   */
-  protected $userJob;
-
-  /**
-   * Get User Job.
-   *
-   * API call to retrieve the userJob row.
-   *
-   * @return array
-   *
-   * @throws \CRM_Core_Exception
-   */
-  protected function getUserJob(): array {
-    if (!$this->userJob) {
-      $this->userJob = UserJob::get()
-        ->addWhere('id', '=', $this->getUserJobID())
-        ->execute()
-        ->first();
-    }
-    return $this->userJob;
-  }
-
-  /**
-   * Get submitted value.
-   *
-   * Get a value submitted on the form.
-   *
-   * @return mixed
-   *
-   * @throws \CRM_Core_Exception
-   */
-  protected function getSubmittedValue(string $valueName) {
-    return $this->getUserJob()['metadata']['submitted_values'][$valueName];
-  }
-
   /**
    * Get rows as an array.
    *
@@ -286,22 +209,6 @@ abstract class CRM_Import_DataSource {
     return CRM_Core_DAO::singleValueQuery($query);
   }
 
-  /**
-   * Get an array of column headers, if any.
-   *
-   * Null is returned when there are none - ie because a csv file does not
-   * have an initial header row.
-   *
-   * This is presented to the user in the MapField screen so
-   * that can see what fields they are mapping.
-   *
-   * @return array
-   * @throws \CRM_Core_Exception
-   */
-  public function getColumnHeaders(): array {
-    return $this->getUserJob()['metadata']['DataSource']['column_headers'];
-  }
-
   /**
    * Get the field names of the fields holding data in the import tracking table.
    *
@@ -394,96 +301,6 @@ abstract class CRM_Import_DataSource {
     return $this->submittableFields;
   }
 
-  /**
-   * Provides information about the data source.
-   *
-   * @return array
-   *   Description of this data source, including:
-   *   - title: string, translated, required
-   *   - permissions: array, optional
-   *
-   */
-  abstract public function getInfo();
-
-  /**
-   * This is function is called by the form object to get the DataSource's form snippet.
-   *
-   * It should add all fields necessary to get the data uploaded to the temporary table in the DB.
-   *
-   * @param CRM_Core_Form $form
-   */
-  abstract public function buildQuickForm(&$form);
-
-  /**
-   * Initialize the datasource, based on the submitted values stored in the user job.
-   */
-  public function initialize(): void {
-
-  }
-
-  /**
-   * Determine if the current user has access to this data source.
-   *
-   * @return bool
-   */
-  public function checkPermission() {
-    $info = $this->getInfo();
-    return empty($info['permissions']) || CRM_Core_Permission::check($info['permissions']);
-  }
-
-  /**
-   * @param string $key
-   * @param array $data
-   *
-   * @throws \CRM_Core_Exception
-   * @throws \Civi\API\Exception\UnauthorizedException
-   */
-  protected function updateUserJobMetadata(string $key, array $data): void {
-    $metaData = array_merge(
-      $this->getUserJob()['metadata'],
-      [$key => $data]
-    );
-    UserJob::update(FALSE)
-      ->addWhere('id', '=', $this->getUserJobID())
-      ->setValues(['metadata' => $metaData])
-      ->execute();
-    $this->userJob['metadata'] = $metaData;
-  }
-
-  /**
-   * Purge any datasource related assets when the datasource is dropped.
-   *
-   * This is the datasource's chance to delete any tables etc that it created
-   * which will now not be used.
-   *
-   * @param array $newParams
-   *   If the dataSource is being updated to another variant of the same
-   *   class (eg. the csv upload was set to no column headers and they
-   *   have resubmitted WITH skipColumnHeader (first row is a header) then
-   *   the dataSource is still CSV and the params for the new instance
-   *   are passed in. When changing from csv to SQL (for example) newParams is
-   *   empty.
-   *
-   * @return array
-   *   The details to update the DataSource key in the userJob metadata to.
-   *   Generally and empty array but it the datasource decided (for example)
-   *   that the table it created earlier is still consistent with the new params
-   *   then it might decided not to drop the table and would want to retain
-   *   some metadata.
-   *
-   * @throws \CRM_Core_Exception
-   *
-   * @noinspection PhpUnusedParameterInspection
-   */
-  public function purge(array $newParams = []) :array {
-    // The old name is still stored...
-    $oldTableName = $this->getTableName();
-    if ($oldTableName) {
-      CRM_Core_DAO::executeQuery('DROP TABLE IF EXISTS ' . $oldTableName);
-    }
-    return [];
-  }
-
   /**
    * Add a status columns to the import table.
    *
diff --git a/civicrm/CRM/Import/DataSource/CSV.php b/civicrm/CRM/Import/DataSource/CSV.php
index 9885ceab93737c7080bd47ca4bf2143f80e2a129..28b9d79d5143bb31ca26b8fc1ba0a7ba4ba79457 100644
--- a/civicrm/CRM/Import/DataSource/CSV.php
+++ b/civicrm/CRM/Import/DataSource/CSV.php
@@ -15,8 +15,7 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 class CRM_Import_DataSource_CSV extends CRM_Import_DataSource {
-  const
-    NUM_ROWS_TO_INSERT = 100;
+  private const NUM_ROWS_TO_INSERT = 100;
 
   /**
    * Form fields declared for this datasource.
@@ -32,7 +31,10 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource {
    *   collection of info about this data source
    */
   public function getInfo(): array {
-    return ['title' => ts('Comma-Separated Values (CSV)')];
+    return [
+      'title' => ts('Comma-Separated Values (CSV)'),
+      'template' => 'CRM/Contact/Import/Form/CSV.tpl',
+    ];
   }
 
   /**
@@ -42,26 +44,20 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource {
    * uploaded to the temporary table in the DB.
    *
    * @param CRM_Contact_Import_Form_DataSource|\CRM_Import_Form_DataSourceConfig $form
-   *
-   * @throws \CRM_Core_Exception
    */
-  public function buildQuickForm(&$form) {
+  public function buildQuickForm(\CRM_Import_Forms $form): void {
     $form->add('hidden', 'hidden_dataSource', 'CRM_Import_DataSource_CSV');
 
-    $uploadFileSize = CRM_Utils_Number::formatUnitSize(Civi::settings()->get('maxFileSize') . 'm', TRUE);
-    //Fetch uploadFileSize from php_ini when $config->maxFileSize is set to "no limit".
-    if (empty($uploadFileSize)) {
-      $uploadFileSize = CRM_Utils_Number::formatUnitSize(ini_get('upload_max_filesize'), TRUE);
-    }
-    $uploadSize = round(($uploadFileSize / (1024 * 1024)), 2);
-    $form->assign('uploadSize', $uploadSize);
+    $maxFileSizeMegaBytes = CRM_Utils_File::getMaxFileSize();
+    $maxFileSizeBytes = $maxFileSizeMegaBytes * 1024 * 1024;
+    $form->assign('uploadSize', $maxFileSizeMegaBytes);
     $form->add('File', 'uploadFile', ts('Import Data File'), NULL, TRUE);
     $form->add('text', 'fieldSeparator', ts('Import Field Separator'), ['size' => 2], TRUE);
-    $form->setMaxFileSize($uploadFileSize);
+    $form->setMaxFileSize($maxFileSizeBytes);
     $form->addRule('uploadFile', ts('File size should be less than %1 MBytes (%2 bytes)', [
-      1 => $uploadSize,
-      2 => $uploadFileSize,
-    ]), 'maxfilesize', $uploadFileSize);
+      1 => $maxFileSizeMegaBytes,
+      2 => $maxFileSizeBytes,
+    ]), 'maxfilesize', $maxFileSizeBytes);
     $form->addRule('uploadFile', ts('Input file must be in CSV format'), 'utf8File');
     $form->addRule('uploadFile', ts('A valid file must be uploaded.'), 'uploadedfile');
     $form->setDataSourceDefaults($this->getDefaultValues());
@@ -81,7 +77,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource {
     );
     $this->addTrackingFieldsToTable($result['import_table_name']);
 
-    $this->updateUserJobMetadata('DataSource', [
+    $this->updateUserJobDataSource([
       'table_name' => $result['import_table_name'],
       'column_headers' => $result['column_headers'],
       'number_of_columns' => $result['number_of_columns'],
@@ -128,56 +124,14 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource {
     if ($headers) {
       //need to get original headers.
       $result['column_headers'] = $firstrow;
-
-      $strtolower = function_exists('mb_strtolower') ? 'mb_strtolower' : 'strtolower';
-      $columns = array_map($strtolower, $firstrow);
-      $columns = array_map('trim', $columns);
-      $columns = str_replace(' ', '_', $columns);
-      $columns = preg_replace('/[^a-z_]/', '', $columns);
-
-      // need to take care of null as well as duplicate col names.
-      $duplicateColName = FALSE;
-      if (count($columns) != count(array_unique($columns))) {
-        $duplicateColName = TRUE;
-      }
-
-      // need to truncate values per mysql field name length limits
-      // mysql allows 64, but we need to account for appending colKey
-      // CRM-9079
-      foreach ($columns as $colKey => & $colName) {
-        if (strlen($colName) > 58) {
-          $colName = substr($colName, 0, 58);
-        }
-      }
-
-      if (in_array('', $columns) || $duplicateColName) {
-        foreach ($columns as $colKey => & $colName) {
-          if (!$colName) {
-            $colName = "col_$colKey";
-          }
-          elseif ($duplicateColName) {
-            $colName .= "_$colKey";
-          }
-        }
-      }
-
-      // CRM-4881: we need to quote column names, as they may be MySQL reserved words
-      foreach ($columns as & $column) {
-        $column = "`$column`";
-      }
+      $columns = $this->getColumnNamesFromHeaders($firstrow);
     }
     else {
-      $columns = [];
-      foreach ($firstrow as $i => $_) {
-        $columns[] = "column_$i";
-      }
+      $columns = $this->getColumnNamesForUnnamedColumns($firstrow);
       $result['column_headers'] = $columns;
     }
 
-    $table = CRM_Utils_SQL_TempTable::build()->setDurable();
-    $tableName = $table->getName();
-    CRM_Core_DAO::executeQuery("DROP TABLE IF EXISTS $tableName");
-    $table->createWithColumns(implode(' text, ', $columns) . ' text');
+    $tableName = $this->createTempTableFromColumns($columns);
 
     $numColumns = count($columns);
 
@@ -211,7 +165,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource {
       $first = FALSE;
 
       // CRM-17859 Trim non-breaking spaces from columns.
-      $row = array_map(['CRM_Import_DataSource_CSV', 'trimNonBreakingSpaces'], $row);
+      $row = array_map([__CLASS__, 'trimNonBreakingSpaces'], $row);
       $row = array_map(['CRM_Core_DAO', 'escapeString'], $row);
       $sql .= "('" . implode("', '", $row) . "')";
       $count++;
@@ -237,30 +191,6 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource {
     return $result;
   }
 
-  /**
-   * Trim non-breaking spaces in a multibyte-safe way.
-   * See also dev/core#2127 - avoid breaking strings ending in à or any other
-   * unicode character sharing the same 0xA0 byte as a non-breaking space.
-   *
-   * @param string $string
-   * @return string The trimmed string
-   */
-  public static function trimNonBreakingSpaces(string $string): string {
-    $encoding = mb_detect_encoding($string, NULL, TRUE);
-    if ($encoding === FALSE) {
-      // This could mean a couple things. One is that the string is
-      // ASCII-encoded but contains a non-breaking space, which causes
-      // php to fail to detect the encoding. So let's just do what we
-      // did before which works in that situation and is at least no
-      // worse in other situations.
-      return trim($string, chr(0xC2) . chr(0xA0));
-    }
-    elseif ($encoding !== 'UTF-8') {
-      $string = mb_convert_encoding($string, 'UTF-8', [$encoding]);
-    }
-    return preg_replace("/^(\u{a0})+|(\u{a0})+$/", '', $string);
-  }
-
   /**
    * Get default values for csv dataSource fields.
    *
@@ -270,6 +200,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource {
     return [
       'fieldSeparator' => CRM_Core_Config::singleton()->fieldSeparator,
       'skipColumnHeader' => 1,
+      'template' => 'CRM/Contact/Import/Form/CSV.tpl',
     ];
 
   }
diff --git a/civicrm/CRM/Import/DataSource/SQL.php b/civicrm/CRM/Import/DataSource/SQL.php
index ad6ac14ea095b091336fb28a0cc025f84e4a5632..6ee1c7ce3b7ba1fc30aa5e40a37ac494ca443e7a 100644
--- a/civicrm/CRM/Import/DataSource/SQL.php
+++ b/civicrm/CRM/Import/DataSource/SQL.php
@@ -33,6 +33,7 @@ class CRM_Import_DataSource_SQL extends CRM_Import_DataSource {
     return [
       'title' => ts('SQL Query'),
       'permissions' => ['import SQL datasource'],
+      'template' => 'CRM/Contact/Import/Form/SQL.tpl',
     ];
   }
 
@@ -41,12 +42,9 @@ class CRM_Import_DataSource_SQL extends CRM_Import_DataSource {
    * form snippet. It should add all fields necesarry to get the data
    * uploaded to the temporary table in the DB.
    *
-   * @param CRM_Core_Form $form
-   *
-   * @return void
-   *   (operates directly on form argument)
+   * @param CRM_Import_Forms $form
    */
-  public function buildQuickForm(&$form) {
+  public function buildQuickForm(CRM_Import_Forms $form): void {
     $form->add('hidden', 'hidden_dataSource', 'CRM_Import_DataSource_SQL');
     $form->add('textarea', 'sqlQuery', ts('Specify SQL Query'), ['rows' => 10, 'cols' => 45], TRUE);
     $form->addFormRule(['CRM_Import_DataSource_SQL', 'formRule'], $form);
@@ -103,7 +101,7 @@ class CRM_Import_DataSource_SQL extends CRM_Import_DataSource {
     }
 
     $this->addTrackingFieldsToTable($tableName);
-    $this->updateUserJobMetadata('DataSource', [
+    $this->updateUserJobDataSource([
       'table_name' => $tableName,
       'column_headers' => $columnNames,
       'number_of_columns' => count($columnNames),
diff --git a/civicrm/CRM/Import/Form/DataSource.php b/civicrm/CRM/Import/Form/DataSource.php
index 75149c026eddbef1737a01a4d569a25bbd0f0c6d..c9ab949279f7e6efebed92996419c86e6405cb7a 100644
--- a/civicrm/CRM/Import/Form/DataSource.php
+++ b/civicrm/CRM/Import/Form/DataSource.php
@@ -37,8 +37,6 @@ abstract class CRM_Import_Form_DataSource extends CRM_Import_Forms {
    */
   public function preProcess(): void {
     $this->pushUrlToUserContext();
-    // check for post max size
-    CRM_Utils_Number::formatUnitSize(ini_get('post_max_size'), TRUE);
     $this->assign('importEntity', $this->getTranslatedEntity());
     $this->assign('importEntities', $this->getTranslatedEntities());
   }
diff --git a/civicrm/CRM/Import/Form/DataSourceConfig.php b/civicrm/CRM/Import/Form/DataSourceConfig.php
index b8bd425ba455d7dedaa34593b5a9404007ba221b..36109b7fb3e980d112deb83bc802beb02152d03b 100644
--- a/civicrm/CRM/Import/Form/DataSourceConfig.php
+++ b/civicrm/CRM/Import/Form/DataSourceConfig.php
@@ -45,9 +45,7 @@ class CRM_Import_Form_DataSourceConfig extends CRM_Import_Forms {
    * @throws \CRM_Core_Exception
    */
   public function preProcess(): void {
-    $dataSourcePath = explode('_', $this->getDataSourceClassName());
-    $templateFile = 'CRM/Contact/Import/Form/' . $dataSourcePath[3] . '.tpl';
-    $this->assign('dataSourceFormTemplateFile', $templateFile ?? NULL);
+    $this->assign('dataSourceFormTemplateFile', $this->getDataSourceObject()->getInfo()['template']);
     if (CRM_Utils_Request::retrieveValue('user_job_id', 'Integer')) {
       $this->setUserJobID(CRM_Utils_Request::retrieveValue('user_job_id', 'Integer'));
     }
diff --git a/civicrm/CRM/Import/Forms.php b/civicrm/CRM/Import/Forms.php
index 4535fd2121a02b62635f3ffe48791f775cad9ca6..f794fb662eccc61f16accbf55c65fc93a35cd538 100644
--- a/civicrm/CRM/Import/Forms.php
+++ b/civicrm/CRM/Import/Forms.php
@@ -17,6 +17,8 @@
 
 use Civi\Api4\Mapping;
 use Civi\Api4\UserJob;
+use Civi\Core\ClassScanner;
+use Civi\Import\DataSource\DataSourceInterface;
 use League\Csv\Writer;
 
 /**
@@ -269,7 +271,8 @@ class CRM_Import_Forms extends CRM_Core_Form {
    */
   protected function getDataSources(): array {
     $dataSources = [];
-    foreach (['CRM_Import_DataSource_SQL', 'CRM_Import_DataSource_CSV'] as $dataSourceClass) {
+    $classes = ClassScanner::get(['interface' => DataSourceInterface::class]);
+    foreach ($classes as $dataSourceClass) {
       $object = new $dataSourceClass();
       if ($object->checkPermission()) {
         $dataSources[$dataSourceClass] = $object->getInfo()['title'];
@@ -388,11 +391,10 @@ class CRM_Import_Forms extends CRM_Core_Form {
   /**
    * Get the relevant datasource object.
    *
-   * @return \CRM_Import_DataSource|null
-   *
+   * @return \Civi\Import\DataSource\DataSourceInterface|null
    * @throws \CRM_Core_Exception
    */
-  protected function getDataSourceObject(): ?CRM_Import_DataSource {
+  protected function getDataSourceObject(): ?DataSourceInterface {
     $className = $this->getDataSourceClassName();
     if ($className) {
       return new $className($this->getUserJobID());
diff --git a/civicrm/CRM/Invoicing/Utils.php b/civicrm/CRM/Invoicing/Utils.php
index 70de2c7d4d6535bd1b30e1a66ebd0fdb3cf33390..382bc4177d37feb55264b95256c0e6f17f178116 100644
--- a/civicrm/CRM/Invoicing/Utils.php
+++ b/civicrm/CRM/Invoicing/Utils.php
@@ -48,11 +48,9 @@ class CRM_Invoicing_Utils {
   /**
    * Function to call to determine if invoicing is enabled.
    *
-   * Historically the invoicing was declared as a setting but actually
-   * set within contribution_invoice_settings (which stores multiple settings
-   * as an array in a non-standard way).
+   * Use Civi::settings()->get('invoicing') instead.
    *
-   * We check both here. But will deprecate the latter in time.
+   * @deprecated since 5.68 expected removal time to be added when we add noisy deprecation.
    */
   public static function isInvoicingEnabled() {
     return Civi::settings()->get('invoicing');
@@ -61,8 +59,9 @@ class CRM_Invoicing_Utils {
   /**
    * Function to get the tax term.
    *
-   * The value is nested in the contribution_invoice_settings setting - which
-   * is unsupported. Here we have a wrapper function to make later cleanup easier.
+   * Use Civi::settings()->get('tax_term') instead.
+   *
+   * @deprecated since 5.68 expected removal time to be added when we add noisy deprecation.
    */
   public static function getTaxTerm() {
     return Civi::settings()->get('tax_term');
diff --git a/civicrm/CRM/Mailing/BAO/Mailing.php b/civicrm/CRM/Mailing/BAO/Mailing.php
index ae2037a0b698efe369242d86a39b94566b8e2d87..c476818874fd6bf8e24fae4db62a58c9628057d4 100644
--- a/civicrm/CRM/Mailing/BAO/Mailing.php
+++ b/civicrm/CRM/Mailing/BAO/Mailing.php
@@ -616,11 +616,7 @@ class CRM_Mailing_BAO_Mailing extends CRM_Mailing_DAO_Mailing implements \Civi\C
 
       $this->preparedTemplates = [];
 
-      foreach ([
-        'html',
-        'text',
-        'subject',
-      ] as $key) {
+      foreach (['html', 'text', 'subject'] as $key) {
         if (!isset($templates[$key])) {
           continue;
         }
@@ -1565,8 +1561,8 @@ ORDER BY   civicrm_email.is_bulkmail DESC
         'url_tracking' => Civi::settings()->get('url_tracking_default'),
         'visibility' => 'Public Pages',
         'replyto_email' => $domain_email,
-        'header_id' => CRM_Mailing_PseudoConstant::defaultComponent('header_id', ''),
-        'footer_id' => CRM_Mailing_PseudoConstant::defaultComponent('footer_id', ''),
+        'header_id' => CRM_Mailing_PseudoConstant::defaultComponent('Header', ''),
+        'footer_id' => CRM_Mailing_PseudoConstant::defaultComponent('Footer', ''),
         'from_email' => $domain_email,
         'from_name' => $domain_name,
         'msg_template_id' => NULL,
@@ -2441,6 +2437,22 @@ LEFT JOIN civicrm_mailing_group g ON g.mailing_id   = m.id
    * @throws CRM_Core_Exception
    */
   public static function self_hook_civicrm_pre(\Civi\Core\Event\PreEvent $event) {
+    if ($event->action === 'create') {
+      $params = &$event->params;
+      $params['created_id'] ??= CRM_Core_Session::singleton()->getLoggedInContactID();
+      $params['override_verp'] ??= !Civi::settings()->get('track_civimail_replies');
+      $params['visibility'] ??= 'Public Pages';
+      $params['dedupe_email'] ??= Civi::settings()->get('dedupe_email_default');
+      $params['open_tracking'] ??= Civi::settings()->get('open_tracking_default');
+      $params['url_tracking'] ??= Civi::settings()->get('url_tracking_default');
+      $params['header_id'] ??= CRM_Mailing_PseudoConstant::defaultComponent('Header', '');
+      $params['footer_id'] ??= CRM_Mailing_PseudoConstant::defaultComponent('Footer', '');
+      $params['optout_id'] ??= CRM_Mailing_PseudoConstant::defaultComponent('OptOut', '');
+      $params['reply_id'] ??= CRM_Mailing_PseudoConstant::defaultComponent('Reply', '');
+      $params['resubscribe_id'] ??= CRM_Mailing_PseudoConstant::defaultComponent('Resubscribe', '');
+      $params['unsubscribe_id'] ??= CRM_Mailing_PseudoConstant::defaultComponent('Unsubscribe', '');
+      $params['mailing_type'] ??= 'standalone';
+    }
     if ($event->action === 'delete' && $event->id) {
       // Delete all file attachments
       CRM_Core_BAO_File::deleteEntityFile('civicrm_mailing', $event->id);
diff --git a/civicrm/CRM/Mailing/BAO/MailingComponent.php b/civicrm/CRM/Mailing/BAO/MailingComponent.php
index f015b5cb91774815327111e130ff741b28b3fdad..cc5212f44ecb943ca9b2c76cce36a34e938c7ccc 100644
--- a/civicrm/CRM/Mailing/BAO/MailingComponent.php
+++ b/civicrm/CRM/Mailing/BAO/MailingComponent.php
@@ -58,7 +58,7 @@ class CRM_Mailing_BAO_MailingComponent extends CRM_Mailing_DAO_MailingComponent
 
     $component->copyValues($params);
     if (empty($id) && empty($params['body_text'])) {
-      $component->body_text = CRM_Utils_String::htmlToText(CRM_Utils_Array::value('body_html', $params));
+      $component->body_text = CRM_Utils_String::htmlToText($params['body_html'] ?? '');
     }
 
     if ($component->is_default) {
diff --git a/civicrm/CRM/Mailing/BAO/MailingJob.php b/civicrm/CRM/Mailing/BAO/MailingJob.php
index 3d7598007937f2b45c7c4d0fc5d550fde5ce54e2..326da1cb8d29ba394caac701671da7b0d385a64e 100644
--- a/civicrm/CRM/Mailing/BAO/MailingJob.php
+++ b/civicrm/CRM/Mailing/BAO/MailingJob.php
@@ -763,7 +763,7 @@ VALUES (%1, %2, %3, %4, %5, %6, %7)
     // SMTP response code is buried in the message.
     $code = preg_match('/ \(code: (.+), response: /', $message, $matches) ? $matches[1] : '';
 
-    if (strpos($message, 'Failed to write to socket') !== FALSE) {
+    if (str_contains($message, 'Failed to write to socket')) {
       return TRUE;
     }
 
@@ -772,15 +772,15 @@ VALUES (%1, %2, %3, %4, %5, %6, %7)
       return FALSE;
     }
 
-    if (strpos($message, 'Failed to set sender') !== FALSE) {
+    if (str_contains($message, 'Failed to set sender')) {
       return TRUE;
     }
 
-    if (strpos($message, 'Failed to add recipient') !== FALSE) {
+    if (str_contains($message, 'Failed to add recipient')) {
       return TRUE;
     }
 
-    if (strpos($message, 'Failed to send data') !== FALSE) {
+    if (str_contains($message, 'Failed to send data')) {
       return TRUE;
     }
 
diff --git a/civicrm/CRM/Mailing/DAO/Mailing.php b/civicrm/CRM/Mailing/DAO/Mailing.php
index 2bb67e0253ba964c540482738d44a07d1283a60d..fefa921ddfc12bcc27fc7d004b2cb32ecfe8c28f 100644
--- a/civicrm/CRM/Mailing/DAO/Mailing.php
+++ b/civicrm/CRM/Mailing/DAO/Mailing.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/Mailing.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:62a218e043b9abab2e816bf69272cca1)
+ * (GenCodeChecksum:55608e7270f5f764477813403689775a)
  */
 
 /**
@@ -56,6 +56,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
     'copy' => 'civicrm/mailing/send?mid=[id]',
     'view' => 'civicrm/mailing/report?mid=[id]&reset=1',
     'preview' => 'civicrm/mailing/view?id=[id]&reset=1',
+    'delete' => 'civicrm/mailing/browse?action=delete&mid=[id]&reset=1',
   ];
 
   /**
@@ -709,6 +710,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
           'localizable' => 0,
           'html' => [
             'type' => 'Text',
+            'label' => ts("Name"),
           ],
           'add' => NULL,
         ],
@@ -758,6 +760,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
           'localizable' => 0,
           'html' => [
             'type' => 'Text',
+            'label' => ts("From Name"),
           ],
           'add' => NULL,
         ],
@@ -781,6 +784,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
           'localizable' => 0,
           'html' => [
             'type' => 'Text',
+            'label' => ts("From Email"),
           ],
           'add' => NULL,
         ],
@@ -1122,6 +1126,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
           'html' => [
             'type' => 'Select Date',
             'formatType' => 'activityDateTime',
+            'label' => ts("Created Date"),
           ],
           'add' => '3.0',
         ],
@@ -1145,6 +1150,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
           'bao' => 'CRM_Mailing_BAO_Mailing',
           'localizable' => 0,
           'html' => [
+            'type' => 'Select Date',
             'label' => ts("Modified Date"),
           ],
           'readonly' => TRUE,
@@ -1193,6 +1199,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
           'html' => [
             'type' => 'Select Date',
             'formatType' => 'activityDateTime',
+            'label' => ts("Scheduled Date"),
           ],
           'add' => '3.3',
         ],
@@ -1332,6 +1339,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
           'localizable' => 0,
           'html' => [
             'type' => 'Select',
+            'label' => ts("Visibility"),
           ],
           'pseudoconstant' => [
             'callback' => 'CRM_Core_SelectValues::groupVisibility',
diff --git a/civicrm/CRM/Mailing/DAO/MailingComponent.php b/civicrm/CRM/Mailing/DAO/MailingComponent.php
index 1a0b2001d18bc1afd45c1d3c0c0b7c4d8d67915a..61e792f2ddc183e44fcde469e8e1a7bafa5e4b4b 100644
--- a/civicrm/CRM/Mailing/DAO/MailingComponent.php
+++ b/civicrm/CRM/Mailing/DAO/MailingComponent.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/MailingComponent.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:7ad429cf84e9bae091c8ea38beada696)
+ * (GenCodeChecksum:7e8514edf9fb7b55783cc813df572660)
  */
 
 /**
@@ -37,8 +37,9 @@ class CRM_Mailing_DAO_MailingComponent extends CRM_Core_DAO {
    * @var string[]
    */
   protected static $_paths = [
-    'add' => 'civicrm/admin/component?action=add&reset=1',
-    'update' => 'civicrm/admin/component?action=update&id=[id]&reset=1',
+    'add' => 'civicrm/admin/component/edit?action=add&reset=1',
+    'update' => 'civicrm/admin/component/edit?action=update&id=[id]&reset=1',
+    'browse' => 'civicrm/admin/component?action=browse&id=[id]&reset=1',
   ];
 
   /**
diff --git a/civicrm/CRM/Mailing/DAO/MailingJob.php b/civicrm/CRM/Mailing/DAO/MailingJob.php
index e2dc1a5883a2ec3bf22c7cbb979bf273f1d7531e..b4b21d1c12c46539f26e96c2a4130f02db91b7b3 100644
--- a/civicrm/CRM/Mailing/DAO/MailingJob.php
+++ b/civicrm/CRM/Mailing/DAO/MailingJob.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/MailingJob.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:234cdededd082922f889dc386c46ed60)
+ * (GenCodeChecksum:92bce75ffec87400a53a47591c09201f)
  */
 
 /**
@@ -221,6 +221,7 @@ class CRM_Mailing_DAO_MailingJob extends CRM_Core_DAO {
           'localizable' => 0,
           'FKClassName' => 'CRM_Mailing_DAO_Mailing',
           'html' => [
+            'type' => 'EntityRef',
             'label' => ts("Mailing"),
           ],
           'add' => NULL,
@@ -318,6 +319,7 @@ class CRM_Mailing_DAO_MailingJob extends CRM_Core_DAO {
           'localizable' => 0,
           'html' => [
             'type' => 'Select',
+            'label' => ts("Status"),
           ],
           'pseudoconstant' => [
             'callback' => 'CRM_Core_SelectValues::getMailingJobStatus',
@@ -342,6 +344,10 @@ class CRM_Mailing_DAO_MailingJob extends CRM_Core_DAO {
           'entity' => 'MailingJob',
           'bao' => 'CRM_Mailing_BAO_MailingJob',
           'localizable' => 0,
+          'html' => [
+            'type' => 'CheckBox',
+            'label' => ts("Test Mailing"),
+          ],
           'add' => '1.9',
         ],
         'job_type' => [
@@ -383,6 +389,7 @@ class CRM_Mailing_DAO_MailingJob extends CRM_Core_DAO {
           'localizable' => 0,
           'FKClassName' => 'CRM_Mailing_DAO_MailingJob',
           'html' => [
+            'type' => 'EntityRef',
             'label' => ts("Parent"),
           ],
           'add' => '3.3',
@@ -423,6 +430,10 @@ class CRM_Mailing_DAO_MailingJob extends CRM_Core_DAO {
           'entity' => 'MailingJob',
           'bao' => 'CRM_Mailing_BAO_MailingJob',
           'localizable' => 0,
+          'html' => [
+            'type' => 'Number',
+            'label' => ts("Batch Limit"),
+          ],
           'add' => '3.3',
         ],
       ];
diff --git a/civicrm/CRM/Mailing/Form/Component.php b/civicrm/CRM/Mailing/Form/Component.php
index 6044fd565888a6011a84405daa3808ab4bdcfc87..603317c7b58da197cd0a7d6d598c7b49e64d2d24 100644
--- a/civicrm/CRM/Mailing/Form/Component.php
+++ b/civicrm/CRM/Mailing/Form/Component.php
@@ -35,8 +35,7 @@ class CRM_Mailing_Form_Component extends CRM_Core_Form {
   protected $_BAOName;
 
   public function preProcess() {
-    $this->_id = $this->get('id');
-    $this->_BAOName = $this->get('BAOName');
+    $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this);
   }
 
   /**
@@ -94,8 +93,7 @@ class CRM_Mailing_Form_Component extends CRM_Core_Form {
 
     if (isset($this->_id)) {
       $params = ['id' => $this->_id];
-      $baoName = $this->_BAOName;
-      $baoName::retrieve($params, $defaults);
+      CRM_Mailing_BAO_MailingComponent::retrieve($params, $defaults);
     }
     else {
       $defaults['is_active'] = 1;
@@ -146,10 +144,7 @@ class CRM_Mailing_Form_Component extends CRM_Core_Form {
       $InvalidTokens = ['action.forward' => ts("This token can only be used in send mailing context (body, header, footer)..")];
     }
     $errors = [];
-    foreach ([
-      'text',
-      'html',
-    ] as $type) {
+    foreach (['text', 'html'] as $type) {
       $dataErrors = [];
       foreach ($InvalidTokens as $token => $desc) {
         if ($params['body_' . $type]) {
diff --git a/civicrm/CRM/Mailing/Info.php b/civicrm/CRM/Mailing/Info.php
index 2eec29a4382ec93af4c858eccfb99df4a00b4963..b3f0c3371c082b3b1a7e6e48b0e6bbc5bdec014f 100644
--- a/civicrm/CRM/Mailing/Info.php
+++ b/civicrm/CRM/Mailing/Info.php
@@ -129,23 +129,6 @@ class CRM_Mailing_Info extends CRM_Core_Component_Info {
     ];
   }
 
-  /**
-   * Get AngularJS modules and their dependencies.
-   *
-   * @return array
-   *   list of modules; same format as CRM_Utils_Hook::angularModules(&$angularModules)
-   * @see CRM_Utils_Hook::angularModules
-   */
-  public function getAngularModules() {
-    global $civicrm_root;
-
-    $result = [];
-    $result['crmMailing'] = include "$civicrm_root/ang/crmMailing.ang.php";
-    $result['crmMailingAB'] = include "$civicrm_root/ang/crmMailingAB.ang.php";
-
-    return $result;
-  }
-
   /**
    * @return bool
    */
diff --git a/civicrm/CRM/Mailing/MailStore.php b/civicrm/CRM/Mailing/MailStore.php
index 13626fcf1cac661360eb899768cda144f57f7ac4..1aa3e62b34197b2acc954a4dce6fbf812cf8373d 100644
--- a/civicrm/CRM/Mailing/MailStore.php
+++ b/civicrm/CRM/Mailing/MailStore.php
@@ -191,11 +191,7 @@ class CRM_Mailing_MailStore {
   public function maildir($name) {
     $config = CRM_Core_Config::singleton();
     $dir = $config->customFileUploadDir . DIRECTORY_SEPARATOR . $name;
-    foreach ([
-      'cur',
-      'new',
-      'tmp',
-    ] as $sub) {
+    foreach (['cur', 'new', 'tmp'] as $sub) {
       if (!file_exists($dir . DIRECTORY_SEPARATOR . $sub)) {
         if ($this->_debug) {
           print "creating $dir/$sub\n";
diff --git a/civicrm/CRM/Mailing/MailStore/Maildir.php b/civicrm/CRM/Mailing/MailStore/Maildir.php
index 8668ce12e6c3bdd2c56bbd17069dea13a6e5d392..33490dd0d50b5a14637f63845e8a79bd7d31a72b 100644
--- a/civicrm/CRM/Mailing/MailStore/Maildir.php
+++ b/civicrm/CRM/Mailing/MailStore/Maildir.php
@@ -82,10 +82,7 @@ class CRM_Mailing_MailStore_Maildir extends CRM_Mailing_MailStore {
     // set property text attachment as file CRM-5408
     $parser->options->parseTextAttachmentsAsFiles = TRUE;
 
-    foreach ([
-      'cur',
-      'new',
-    ] as $subdir) {
+    foreach (['cur', 'new'] as $subdir) {
       $dir = $this->_dir . DIRECTORY_SEPARATOR . $subdir;
       foreach (scandir($dir) as $file) {
         if ($file == '.' or $file == '..') {
diff --git a/civicrm/CRM/Mailing/Page/Common.php b/civicrm/CRM/Mailing/Page/Common.php
index 680777753a907526d1b831113bbcb31dba6da3e4..42b6a0e383f61a63418ad22fc15288b04037cbdb 100644
--- a/civicrm/CRM/Mailing/Page/Common.php
+++ b/civicrm/CRM/Mailing/Page/Common.php
@@ -44,7 +44,7 @@ class CRM_Mailing_Page_Common extends CRM_Core_Page {
     }
 
     $cancel = CRM_Utils_Request::retrieve("_qf_{$this->_type}_cancel", 'String');
-    if ($cancel) {
+    if (isset($cancel)) {
       $config = CRM_Core_Config::singleton();
       CRM_Utils_System::redirect($config->userFrameworkBaseURL);
     }
diff --git a/civicrm/CRM/Mailing/Page/View.php b/civicrm/CRM/Mailing/Page/View.php
index 2f775981776dc181bea54951bf1c40f1f05f02f6..ef39231236443a7c4c4a6f74790aa899f702185e 100644
--- a/civicrm/CRM/Mailing/Page/View.php
+++ b/civicrm/CRM/Mailing/Page/View.php
@@ -44,14 +44,9 @@ class CRM_Mailing_Page_View extends CRM_Core_Page {
     }
 
     // if user is an admin, return true
-    if (CRM_Core_Permission::check('administer CiviCRM') ||
-      CRM_Core_Permission::check('approve mailings') ||
-      CRM_Core_Permission::check('access CiviMail')
-    ) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return CRM_Core_Permission::check([
+      ['administer CiviCRM', /* OR */ 'approve mailings', /* OR */ 'access CiviMail'],
+    ]);
   }
 
   /**
diff --git a/civicrm/CRM/Mailing/PseudoConstant.php b/civicrm/CRM/Mailing/PseudoConstant.php
index ea347de44e21f69dd39bb97f0a5f78f1a1ec0934..faf90cb6ac4169287f88f56dec2bff00510030ad 100644
--- a/civicrm/CRM/Mailing/PseudoConstant.php
+++ b/civicrm/CRM/Mailing/PseudoConstant.php
@@ -190,7 +190,7 @@ class CRM_Mailing_PseudoConstant extends CRM_Core_PseudoConstant {
         self::$defaultComponent[$dao->component_type] = $dao->id;
       }
     }
-    $value = CRM_Utils_Array::value($type, self::$defaultComponent, $undefined);
+    $value = self::$defaultComponent[$type] ?? $undefined;
     return $value;
   }
 
diff --git a/civicrm/CRM/Mailing/Selector/Browse.php b/civicrm/CRM/Mailing/Selector/Browse.php
index d5cf043fb62f0b3fa0d792664afd224e5c3ff23c..cf6fd1e6cba37053a8f685efba5ac5a307f75c61 100644
--- a/civicrm/CRM/Mailing/Selector/Browse.php
+++ b/civicrm/CRM/Mailing/Selector/Browse.php
@@ -378,14 +378,8 @@ LEFT JOIN  civicrm_contact scheduledContact ON ( $mailing.scheduled_id = schedul
             $actionMask = CRM_Core_Action::PREVIEW;
           }
         }
-        if (in_array($row['status'], [
-          'Scheduled',
-          'Running',
-          'Paused',
-        ])) {
-          if ($allAccess ||
-            ($showApprovalLinks && $showCreateLinks && $showScheduleLinks)
-          ) {
+        if (in_array($row['status'], ['Scheduled', 'Running', 'Paused'])) {
+          if ($allAccess || ($showApprovalLinks && $showCreateLinks && $showScheduleLinks)) {
 
             $actionMask |= CRM_Core_Action::DISABLE;
             if ($row['status'] === "Paused") {
diff --git a/civicrm/CRM/Mailing/xml/Menu/Mailing.xml b/civicrm/CRM/Mailing/xml/Menu/Mailing.xml
index 3067227861a18e9424177484b0a1f6e89d4d13ea..f3267235d3b0e63651ed96864091c427d07cb84f 100644
--- a/civicrm/CRM/Mailing/xml/Menu/Mailing.xml
+++ b/civicrm/CRM/Mailing/xml/Menu/Mailing.xml
@@ -28,6 +28,15 @@
     <adminGroup>CiviMail</adminGroup>
     <weight>410</weight>
   </item>
+  <item>
+    <path>civicrm/admin/component/edit</path>
+    <title>Headers, Footers, and Automated Messages</title>
+    <page_callback>CRM_Mailing_Form_Component</page_callback>
+    <desc>Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.</desc>
+    <access_arguments>access CiviCRM,access CiviMail</access_arguments>
+    <adminGroup>CiviMail</adminGroup>
+    <weight>411</weight>
+  </item>
   <item>
     <path>civicrm/admin/options/from_email_address/civimail</path>
     <title>From Email Addresses</title>
diff --git a/civicrm/CRM/Member/BAO/MembershipBlock.php b/civicrm/CRM/Member/BAO/MembershipBlock.php
index d89eae0d2a443cc20e80c0c1a90b2671d95edc98..68c05e49a81825fdfad8c0ff99f2eff9af62d67a 100644
--- a/civicrm/CRM/Member/BAO/MembershipBlock.php
+++ b/civicrm/CRM/Member/BAO/MembershipBlock.php
@@ -9,12 +9,16 @@
  +--------------------------------------------------------------------+
  */
 
+use Civi\Api4\MembershipBlock;
+use Civi\Core\Event\PostEvent;
+use Civi\Core\HookInterface;
+
 /**
  *
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
-class CRM_Member_BAO_MembershipBlock extends CRM_Member_DAO_MembershipBlock {
+class CRM_Member_BAO_MembershipBlock extends CRM_Member_DAO_MembershipBlock implements HookInterface {
 
   /**
    * Create or update a MembershipBlock.
@@ -40,4 +44,40 @@ class CRM_Member_BAO_MembershipBlock extends CRM_Member_DAO_MembershipBlock {
     return (bool) self::deleteRecord(['id' => $id]);
   }
 
+  /**
+   * Update MembershipBlocks if autorenew option is changed.
+   *
+   * Available auto-renew options are
+   * 0 - Autorenew unavailable
+   * 1 - Give option
+   * 2 - Force auto-renewal
+   *
+   * In the case of 0 or 2 we need to ensure that all membership blocks are
+   * set to the same value. If the option is 1 no action is required as
+   * all 3 options are then valid at the membership block level.
+   *
+   * https://issues.civicrm.org/jira/browse/CRM-15573
+   *
+   * @param \Civi\Core\Event\PostEvent $event
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   */
+  public static function on_hook_civicrm_post(PostEvent $event): void {
+    if ($event->entity === 'MembershipType' && $event->action === 'edit') {
+      $autoRenewOption = $event->object->auto_renew;
+      if ($event->id && $autoRenewOption !== NULL && ((int) $autoRenewOption) !== 1) {
+        $autoRenewOption = (int) $autoRenewOption;
+        $membershipBlocks = MembershipBlock::get(FALSE)->execute();
+        foreach ($membershipBlocks as $membershipBlock) {
+          if (array_key_exists($event->id, $membershipBlock['membership_types'])
+            && ((int) $membershipBlock['membership_types'][$event->id]) !== $autoRenewOption
+          ) {
+            $membershipBlock['membership_types'][$event->id] = $autoRenewOption;
+            MembershipBlock::update(FALSE)->setValues($membershipBlock)->execute();
+          }
+        }
+      }
+    }
+  }
+
 }
diff --git a/civicrm/CRM/Member/BAO/MembershipStatus.php b/civicrm/CRM/Member/BAO/MembershipStatus.php
index 48175688ff420ed8674026fa9ad0a87a32e87bd0..f85fec9cecdb1fd65a2177614f3f808770ae3773 100644
--- a/civicrm/CRM/Member/BAO/MembershipStatus.php
+++ b/civicrm/CRM/Member/BAO/MembershipStatus.php
@@ -339,4 +339,23 @@ class CRM_Member_BAO_MembershipStatus extends CRM_Member_DAO_MembershipStatus im
     return $statusIds;
   }
 
+  /**
+   * Get the id of the status to be used for new memberships.
+   *
+   * @return int
+   * @throws \CRM_Core_Exception
+   */
+  public static function getNewMembershipTypeID(): int {
+    $cacheKey = __CLASS__ . __FUNCTION__;
+    if (!isset(\Civi::$statics[$cacheKey])) {
+      \Civi::$statics[$cacheKey] = (bool) CRM_Core_DAO::singleValueQuery(
+        'SELECT id FROM civicrm_membership_status
+        WHERE start_event = "join_date"
+        AND start_event_adjust_unit IS NULL
+        ORDER BY weight LIMIT 1'
+      );
+    }
+    return \Civi::$statics[$cacheKey];
+  }
+
 }
diff --git a/civicrm/CRM/Member/BAO/MembershipType.php b/civicrm/CRM/Member/BAO/MembershipType.php
index 0d686deacb7ad035be2a662dbe79f3d313611cdd..169064acc9292755165845b40abfbb1a5bc1ed61 100644
--- a/civicrm/CRM/Member/BAO/MembershipType.php
+++ b/civicrm/CRM/Member/BAO/MembershipType.php
@@ -9,6 +9,8 @@
  +--------------------------------------------------------------------+
  */
 
+use Civi\Api4\MembershipType;
+
 /**
  *
  * @package CRM
@@ -54,11 +56,8 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implem
    * @return \CRM_Member_DAO_MembershipType
    * @throws \CRM_Core_Exception
    */
-  public static function add(&$params) {
-    $hook = empty($params['id']) ? 'create' : 'edit';
+  public static function add($params) {
     $membershipTypeID = $params['id'] ?? NULL;
-    CRM_Utils_Hook::pre($hook, 'MembershipType', $membershipTypeID, $params);
-
     if (!$membershipTypeID && !isset($params['domain_id'])) {
       $params['domain_id'] = CRM_Core_Config::domainID();
     }
@@ -68,10 +67,7 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implem
     if ($membershipTypeID) {
       $previousID = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $membershipTypeID, 'member_of_contact_id');
     }
-
-    $membershipType = new CRM_Member_DAO_MembershipType();
-    $membershipType->copyValues($params);
-    $membershipType->save();
+    $membershipType = self::writeRecord($params);
 
     if ($membershipTypeID) {
       // on update we may need to retrieve some details for the price field function - otherwise we get e-notices on attempts to retrieve
@@ -83,9 +79,6 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implem
     if ($membershipTypeID) {
       self::updateAllPriceFieldValue($membershipTypeID, $params);
     }
-
-    CRM_Utils_Hook::post($hook, 'MembershipType', $membershipType->id, $membershipType);
-
     self::flush();
     return $membershipType;
   }
@@ -298,11 +291,7 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implem
     $membershipTypeDetails = self::getMembershipTypeDetails($membershipTypeId);
 
     // Convert all dates to 'Y-m-d' format.
-    foreach ([
-      'joinDate',
-      'startDate',
-      'endDate',
-    ] as $dateParam) {
+    foreach (['joinDate', 'startDate', 'endDate'] as $dateParam) {
       if (!empty($$dateParam)) {
         $$dateParam = CRM_Utils_Date::processDate($$dateParam, NULL, FALSE, 'Y-m-d');
       }
@@ -809,29 +798,14 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implem
   public static function getAllMembershipTypes(): array {
     $cacheString = __CLASS__ . __FUNCTION__ . CRM_Core_Config::domainID() . '_' . CRM_Core_I18n::getLocale();
     if (!Civi::cache('metadata')->has($cacheString)) {
-      $types = civicrm_api3('MembershipType', 'get', ['options' => ['limit' => 0, 'sort' => 'weight']])['values'];
+      $types = (array) MembershipType::get(FALSE)->addOrderBy('weight')->execute()->indexBy('id');
       $taxRates = CRM_Core_PseudoConstant::getTaxRates();
-      $keys = ['description', 'relationship_type_id', 'relationship_direction', 'max_related', 'auto_renew'];
-      // In order to avoid down-stream e-notices we undo api v3 filtering of NULL values. This is covered
-      // in Unit tests & ideally we might switch to apiv4 but I would argue we should build caching
-      // of metadata entities like this directly into apiv4.
       foreach ($types as $id => $type) {
-        foreach ($keys as $key) {
-          if (!isset($type[$key])) {
-            $types[$id][$key] = NULL;
-          }
-        }
-        if (isset($type['contribution_type_id'])) {
-          unset($types[$id]['contribution_type_id']);
-        }
         $types[$id]['tax_rate'] = (float) ($taxRates[$type['financial_type_id']] ?? 0.0);
         $multiplier = 1;
         if ($types[$id]['tax_rate'] !== 0.0) {
           $multiplier += ($types[$id]['tax_rate'] / 100);
         }
-        if (!array_key_exists('minimum_fee', $types[$id])) {
-          $types[$id]['minimum_fee'] = 0;
-        }
         $types[$id]['minimum_fee_with_tax'] = (float) $types[$id]['minimum_fee'] * $multiplier;
       }
       Civi::cache('metadata')->set($cacheString, $types);
diff --git a/civicrm/CRM/Member/Form.php b/civicrm/CRM/Member/Form.php
index f0a2ecba2126fa12de31e50ef9f3d0a599346e9f..03c1d9e1703725d12cde573879e5ee9b12333911 100644
--- a/civicrm/CRM/Member/Form.php
+++ b/civicrm/CRM/Member/Form.php
@@ -208,7 +208,8 @@ class CRM_Member_Form extends CRM_Contribute_Form_AbstractEditPayment {
       // all possible statuses are disabled - redirect back to contact form
       CRM_Core_Error::statusBounce(ts('There are no configured membership statuses. You cannot add this membership until your membership statuses are correctly configured'));
     }
-
+    // This should be overwritten from the contribution....
+    $this->assign('currency', \Civi::settings()->get('defaultCurrency'));
     parent::preProcess();
     $params = [];
     $params['context'] = CRM_Utils_Request::retrieve('context', 'Alphanumeric', $this, FALSE, 'membership');
@@ -583,13 +584,27 @@ class CRM_Member_Form extends CRM_Contribute_Form_AbstractEditPayment {
     $this->order = new CRM_Financial_BAO_Order();
     $this->order->setForm($this);
     $this->order->setPriceSelectionFromUnfilteredInput($formValues);
+
     if (isset($formValues['total_amount'])) {
       $this->order->setOverrideTotalAmount((float) $formValues['total_amount']);
     }
-    $this->order->setOverrideFinancialTypeID((int) $formValues['financial_type_id']);
+
+    if ($this->isQuickConfig()) {
+      $this->order->setOverrideFinancialTypeID((int) $formValues['financial_type_id']);
+    }
+
     return $formValues;
   }
 
+  /**
+   * Is the price set quick config.
+   *
+   * @return bool
+   */
+  private function isQuickConfig(): bool {
+    return $this->_priceSetId && CRM_Price_BAO_PriceSet::isQuickConfig($this->_priceSetId);
+  }
+
   /**
    * Wrapper function for unit tests.
    *
@@ -628,21 +643,6 @@ class CRM_Member_Form extends CRM_Contribute_Form_AbstractEditPayment {
     ];
   }
 
-  /**
-   * Get the currency in use.
-   *
-   * This just defaults to getting the default currency
-   * as other currencies are not supported on the membership
-   * forms at the moment.
-   *
-   * @param array $submittedValues
-   *
-   * @return string
-   */
-  public function getCurrency($submittedValues = []): string {
-    return CRM_Core_Config::singleton()->defaultCurrency;
-  }
-
   /**
    * Get the relevant payment instrument id.
    *
diff --git a/civicrm/CRM/Member/Form/Membership.php b/civicrm/CRM/Member/Form/Membership.php
index e6e1debc70c281bf005ac2a6c7714489f388e546..4c7e4b658dd8ca14f5bbd503ae5adf3992d876a0 100644
--- a/civicrm/CRM/Member/Form/Membership.php
+++ b/civicrm/CRM/Member/Form/Membership.php
@@ -29,8 +29,6 @@ class CRM_Member_Form_Membership extends CRM_Member_Form {
    */
   public $_mode;
 
-  public $_contributeMode = 'direct';
-
   protected $_memTypeSelected;
 
   /**
@@ -911,7 +909,7 @@ DESC limit 1");
         'isEmailPdf' => Civi::settings()->get('invoice_is_email_pdf'),
         'isTest' => (bool) ($this->_action & CRM_Core_Action::PREVIEW),
         'modelProps' => [
-          'receiptText' => $this->getSubmittedValue('receipt_text'),
+          'userEnteredText' => $this->getSubmittedValue('receipt_text'),
           'contributionID' => $formValues['contribution_id'],
           'contactID' => $this->_receiptContactId,
           'membershipID' => $this->getMembershipID(),
@@ -1255,21 +1253,6 @@ DESC limit 1");
           $priceFieldOp['start_date'] = $priceFieldOp['end_date'] = 'N/A';
         }
       }
-      if (Civi::settings()->get('invoicing')) {
-        $dataArray = [];
-        foreach ($lineItem[$this->_priceSetId] as $value) {
-          if (isset($value['tax_amount']) && isset($value['tax_rate'])) {
-            if (isset($dataArray[$value['tax_rate']])) {
-              $dataArray[$value['tax_rate']] = $dataArray[$value['tax_rate']] + CRM_Utils_Array::value('tax_amount', $value);
-            }
-            else {
-              $dataArray[$value['tax_rate']] = $value['tax_amount'] ?? NULL;
-            }
-          }
-        }
-
-        $this->assign('dataArray', $dataArray);
-      }
     }
     $this->assign('lineItem', !empty($lineItem) && !$isQuickConfig ? $lineItem : FALSE);
 
@@ -1510,10 +1493,7 @@ DESC limit 1");
 
     if ($this->_mode) {
       // @todo move this outside shared code as Batch entry just doesn't
-      $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters(
-        $this->_params,
-        $this->_bltID
-      ));
+      $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($this->_params));
 
       $valuesForForm = CRM_Contribute_Form_AbstractEditPayment::formatCreditCardDetails($this->_params);
       $this->assignVariables($valuesForForm, ['credit_card_exp_date', 'credit_card_type', 'credit_card_number']);
diff --git a/civicrm/CRM/Member/Form/MembershipBlock.php b/civicrm/CRM/Member/Form/MembershipBlock.php
index 72dd3f22c1ad341dc987f6c5b389e847a4ffe554..6b6461d94b2458f3c7b0ba75b0e4a5714cc4de19 100644
--- a/civicrm/CRM/Member/Form/MembershipBlock.php
+++ b/civicrm/CRM/Member/Form/MembershipBlock.php
@@ -9,6 +9,8 @@
  +--------------------------------------------------------------------+
  */
 
+use Civi\Api4\PriceSetEntity;
+
 /**
  * form to process actions on Membership
  */
@@ -18,12 +20,12 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
    * Store membership price set id
    * @var int
    */
-  protected $_memPriceSetId = NULL;
+  protected $_memPriceSetId;
 
   /**
    * Set variables up before form is built.
    */
-  public function preProcess() {
+  public function preProcess(): void {
     parent::preProcess();
     $this->setSelectedChild('membership');
   }
@@ -32,10 +34,10 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
    * Set default values for the form. Note that in edit/view mode
    * the default values are retrieved from the database
    */
-  public function setDefaultValues() {
+  public function setDefaultValues(): ?array {
     $defaults = [];
-    if (isset($this->_id)) {
-      $defaults = CRM_Member_BAO_Membership::getMembershipBlock($this->_id);
+    if ($this->getContributionPageID()) {
+      $defaults = CRM_Member_BAO_Membership::getMembershipBlock($this->getContributionPageID());
     }
     $defaults['member_is_active'] = $defaults['is_active'] ?? FALSE;
 
@@ -65,8 +67,8 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
           'name',
           'label',
         ]);
-        foreach ($pFIDs as $pid => $pValue) {
-          if ($pValue['html_type'] == 'Radio' && $pValue['name'] == 'membership_amount') {
+        foreach ($pFIDs as $pValue) {
+          if ($pValue['html_type'] === 'Radio' && $pValue['name'] === 'membership_amount') {
             $defaults['mem_price_field_id'] = $pValue['id'];
             $defaults['membership_type_label'] = $pValue['label'];
           }
@@ -75,10 +77,10 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
         if (!empty($defaults['mem_price_field_id'])) {
           $options = [];
           $priceFieldOptions = CRM_Price_BAO_PriceFieldValue::getValues($defaults['mem_price_field_id'], $options, 'id', 1);
-          foreach ($options as $k => $v) {
+          foreach ($options as $v) {
             $newMembershipType[$v['membership_type_id']] = 1;
             if (!empty($defaults['auto_renew'])) {
-              $defaults["auto_renew_" . $v['membership_type_id']] = $defaults['auto_renew'][$v['membership_type_id']];
+              $defaults['auto_renew_' . $v['membership_type_id']] = $defaults['auto_renew'][$v['membership_type_id']];
             }
           }
           $defaults['membership_type'] = $newMembershipType;
@@ -119,14 +121,14 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
       );
       $paymentProcessorId = explode(CRM_Core_DAO::VALUE_SEPARATOR, $paymentProcessorIds);
       $isRecur = TRUE;
-      foreach ($paymentProcessorId as $dontCare => $id) {
+      foreach ($paymentProcessorId as $id) {
         if (!array_key_exists($id, $paymentProcessor)) {
           $isRecur = FALSE;
           continue;
         }
       }
 
-      $membership = $membershipDefault = $params = [];
+      $membership = $membershipDefault = [];
       $renewOption = [];
       foreach ($membershipTypes as $k => $v) {
         $membership[] = $this->createElement('advcheckbox', $k, NULL, $v);
@@ -135,26 +137,19 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
         if ($isRecur) {
           $autoRenew = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $k, 'auto_renew');
           $membershipRequired[$k] = $autoRenew;
-          $autoRenewOptions = [];
           if ($autoRenew) {
             $autoRenewOptions = [ts('Not offered'), ts('Give option'), ts('Required')];
             $this->addElement('select', "auto_renew_$k", ts('Auto-renew'), $autoRenewOptions);
             //CRM-15573
             if ($autoRenew == 2) {
               $this->freeze("auto_renew_$k");
-              $params['id'] = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipBlock', $this->_id, 'id', 'entity_id');
             }
             $renewOption[$k] = $autoRenew;
           }
         }
       }
 
-      //CRM-15573
-      if (!empty($params['id'])) {
-        $params['membership_types'] = serialize($membershipRequired);
-        CRM_Member_BAO_MembershipBlock::writeRecord($params);
-      }
-      $this->add('hidden', "mem_price_field_id", '', ['id' => "mem_price_field_id"]);
+      $this->add('hidden', 'mem_price_field_id', '', ['id' => 'mem_price_field_id']);
       $this->assign('is_recur', $isRecur);
       $this->assign('auto_renew', $renewOption);
       $this->addGroup($membership, 'membership_type', ts('Membership Types'));
@@ -211,7 +206,7 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
    *   mixed true or array of errors
    * @throws \CRM_Core_Exception
    */
-  public static function formRule($params, $files, $contributionPageId = NULL) {
+  public static function formRule(array $params, $files, $contributionPageId = NULL) {
     $errors = [];
 
     if (!empty($params['member_price_set_id'])) {
@@ -241,7 +236,7 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
     }
     if (!empty($params['member_is_active'])) {
       // Don't allow Contribution price set w/ membership signup, CRM-5095.
-      $priceSetNotExtendingMembership = \Civi\Api4\PriceSetEntity::get(FALSE)
+      $priceSetNotExtendingMembership = PriceSetEntity::get(FALSE)
         ->addSelect('id')
         ->addJoin('PriceSet AS price_set', 'LEFT', ['price_set_id', '=', 'price_set.id'])
         ->addWhere('entity_table', '=', 'civicrm_contribution_page')
@@ -316,6 +311,8 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
 
   /**
    * Process the form.
+   *
+   * @throws \CRM_Core_Exception
    */
   public function postProcess() {
     // get the submitted form values.
@@ -359,7 +356,7 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
             $setParams['name'] = $pageTitle . '_' . $this->_id;
           }
           else {
-            $timeSec = explode(".", microtime(TRUE));
+            $timeSec = explode('.', microtime(TRUE));
             $setParams['name'] = $pageTitle . '_' . date('is', $timeSec[0]) . $timeSec[1];
           }
           $setParams['is_quick_config'] = 1;
@@ -429,7 +426,7 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
         foreach ($options as $priceFieldID => $memType) {
           CRM_Price_BAO_PriceFieldValue::setIsActive($priceFieldID, '0');
         }
-        $priceField = CRM_Price_BAO_PriceField::create($fieldParams);
+        CRM_Price_BAO_PriceField::create($fieldParams);
       }
       elseif (!$priceSetID) {
         $deletePriceSet = 1;
@@ -486,7 +483,7 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa
    *
    * @return string
    */
-  public function getTitle() {
+  public function getTitle(): string {
     return ts('Memberships');
   }
 
diff --git a/civicrm/CRM/Member/Form/MembershipRenewal.php b/civicrm/CRM/Member/Form/MembershipRenewal.php
index aa002c5f6a6c3a7120be574071737dcb2dadba10..ceb123cfea7edba155ebf48b6f63f3c48ef6dce7 100644
--- a/civicrm/CRM/Member/Form/MembershipRenewal.php
+++ b/civicrm/CRM/Member/Form/MembershipRenewal.php
@@ -92,6 +92,17 @@ class CRM_Member_Form_MembershipRenewal extends CRM_Member_Form {
    */
   protected $membershipTypeName = '';
 
+  /**
+   * Used in the wrangling of custom field data onto the form.
+   *
+   * There are known instances of extensions altering this array
+   * in order to affect the custom data displayed & there is no
+   * alternative recommendation.
+   *
+   * @var array
+   */
+  public $_groupTree;
+
   /**
    * Set entity fields to be assigned to the form.
    */
@@ -378,9 +389,7 @@ class CRM_Member_Form_MembershipRenewal extends CRM_Member_Form {
     $this->add('textarea', 'receipt_text', ts('Renewal Message'));
 
     // Retrieve the name and email of the contact - this will be the TO for receipt email
-    list($this->_contributorDisplayName,
-      $this->_contributorEmail
-      ) = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactID);
+    [$this->_contributorDisplayName, $this->_contributorEmail] = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactID);
     $this->assign('email', $this->_contributorEmail);
     // The member form uses emailExists. Assigning both while we transition / synchronise.
     $this->assign('emailExists', $this->_contributorEmail);
@@ -691,7 +700,9 @@ class CRM_Member_Form_MembershipRenewal extends CRM_Member_Form {
       }
     }
 
-    list($this->isMailSent) = CRM_Core_BAO_MessageTemplate::sendTemplate(
+    // This is being replaced by userEnteredText.
+    $this->assign('receipt_text', $this->getSubmittedValue('receipt_text'));
+    [$this->isMailSent] = CRM_Core_BAO_MessageTemplate::sendTemplate(
       [
         'workflow' => 'membership_offline_receipt',
         'from' => $receiptFrom,
@@ -701,7 +712,7 @@ class CRM_Member_Form_MembershipRenewal extends CRM_Member_Form {
         'PDFFilename' => ts('receipt') . '.pdf',
         'isEmailPdf' => Civi::settings()->get('invoice_is_email_pdf'),
         'modelProps' => [
-          'receiptText' => $this->getSubmittedValue('receipt_text'),
+          'userEnteredText' => $this->getSubmittedValue('receipt_text'),
           'contactID' => $this->_receiptContactId,
           'contributionID' => $this->getContributionID(),
           'membershipID' => $this->getMembershipID(),
diff --git a/civicrm/CRM/Member/Form/MembershipType.php b/civicrm/CRM/Member/Form/MembershipType.php
index 9781f19319572fa88358ae23b1deea61bf7759b3..1907ed6aaa5837b8d1c1153b44c94dca6ccd152a 100644
--- a/civicrm/CRM/Member/Form/MembershipType.php
+++ b/civicrm/CRM/Member/Form/MembershipType.php
@@ -23,6 +23,8 @@ class CRM_Member_Form_MembershipType extends CRM_Member_Form_MembershipConfig {
 
   use CRM_Core_Form_EntityFormTrait;
 
+  protected $submittableMoneyFields = ['minimum_fee'];
+
   /**
    * Set entity fields to be assigned to the form.
    */
@@ -287,7 +289,7 @@ class CRM_Member_Form_MembershipType extends CRM_Member_Form_MembershipConfig {
       $errors['financial_type_id'] = ts('Please enter the financial Type.');
     }
 
-    if (empty($params['duration_interval']) and $params['duration_unit'] != 'lifetime') {
+    if (empty($params['duration_interval']) and $params['duration_unit'] !== 'lifetime') {
       $errors['duration_interval'] = ts('Please enter a duration interval.');
     }
 
@@ -295,15 +297,15 @@ class CRM_Member_Form_MembershipType extends CRM_Member_Form_MembershipConfig {
       1,
       2,
     ])) {
-      if (($params['duration_interval'] > 1 && $params['duration_unit'] == 'year') ||
-        ($params['duration_interval'] > 12 && $params['duration_unit'] == 'month')
+      if (($params['duration_interval'] > 1 && $params['duration_unit'] === 'year') ||
+        ($params['duration_interval'] > 12 && $params['duration_unit'] === 'month')
       ) {
         $errors['duration_unit'] = ts('Automatic renewals are not supported by the currently available payment processors when the membership duration is greater than 1 year / 12 months.');
       }
     }
 
-    if ($params['period_type'] == 'fixed' &&
-      $params['duration_unit'] == 'day'
+    if ($params['period_type'] === 'fixed' &&
+      $params['duration_unit'] === 'day'
     ) {
       $errors['period_type'] = ts('Period type should be Rolling when duration unit is Day');
     }
@@ -362,11 +364,7 @@ class CRM_Member_Form_MembershipType extends CRM_Member_Form_MembershipConfig {
       CRM_Core_Session::setStatus(ts('Selected membership type has been deleted.'), ts('Record Deleted'), 'success');
     }
     else {
-      $params = $this->exportValues();
-
-      if ($params['minimum_fee']) {
-        $params['minimum_fee'] = CRM_Utils_Rule::cleanMoney($params['minimum_fee']);
-      }
+      $params = $this->getSubmittedValues();
 
       $hasRelTypeVal = FALSE;
       if (!CRM_Utils_System::isNull($params['relationship_type_id'])) {
diff --git a/civicrm/CRM/Member/Form/Task/Label.php b/civicrm/CRM/Member/Form/Task/Label.php
index 2162dd0d071524a58098b82c2d6aa12eafee3444..a25d9e4382967f5b32e3794399c2c575fadc087a 100644
--- a/civicrm/CRM/Member/Form/Task/Label.php
+++ b/civicrm/CRM/Member/Form/Task/Label.php
@@ -26,7 +26,7 @@ class CRM_Member_Form_Task_Label extends CRM_Member_Form_Task {
    *
    * @return void
    */
-  public function preProcess() {
+  public function preProcess(): void {
     parent::preProcess();
     $this->setContactIDs();
     CRM_Core_Resources::singleton()->addScriptFile('civicrm', 'templates/CRM/Member/Form/Task/Label.js');
@@ -38,7 +38,7 @@ class CRM_Member_Form_Task_Label extends CRM_Member_Form_Task {
    *
    * @return void
    */
-  public function buildQuickForm() {
+  public function buildQuickForm(): void {
     CRM_Contact_Form_Task_Label::buildLabelForm($this);
     $this->addElement('checkbox', 'per_membership', ts('Print one label per Membership (rather than per contact)'));
   }
@@ -49,7 +49,7 @@ class CRM_Member_Form_Task_Label extends CRM_Member_Form_Task {
    * @return array
    *   array of default values
    */
-  public function setDefaultValues() {
+  public function setDefaultValues(): array {
     $defaults = [];
     $format = CRM_Core_BAO_LabelFormat::getDefaultValues();
     $defaults['label_name'] = $format['name'] ?? NULL;
@@ -65,7 +65,7 @@ class CRM_Member_Form_Task_Label extends CRM_Member_Form_Task {
    *
    * @return void
    */
-  public function postProcess() {
+  public function postProcess(): void {
     $formValues = $this->controller->exportValues($this->_name);
     $locationTypeID = $formValues['location_type_id'];
     $respectDoNotMail = $formValues['do_not_mail'] ?? NULL;
@@ -81,16 +81,13 @@ class CRM_Member_Form_Task_Label extends CRM_Member_Form_Task {
     // so no-one is tempted to refer to this again after relevant values are extracted
     unset($formValues);
 
-    list($rows, $tokenFields) = CRM_Contact_Form_Task_LabelCommon::getRows($this->_contactIds, $locationTypeID, $respectDoNotMail, $mergeSameAddress, $mergeSameHousehold);
+    [$rows, $tokenFields] = CRM_Contact_Form_Task_LabelCommon::getRows($this->_contactIds, $locationTypeID, $respectDoNotMail, $mergeSameAddress, $mergeSameHousehold);
 
-    $individualFormat = FALSE;
     if ($mergeSameAddress) {
       CRM_Core_BAO_Address::mergeSameAddress($rows);
-      $individualFormat = TRUE;
     }
     if ($mergeSameHousehold) {
       $rows = CRM_Contact_Form_Task_LabelCommon::mergeSameHousehold($rows);
-      $individualFormat = TRUE;
     }
     // format the addresses according to CIVICRM_ADDRESS_FORMAT (CRM-1327)
     foreach ((array) $rows as $id => $row) {
diff --git a/civicrm/CRM/Member/Form/Task/PDFLetter.php b/civicrm/CRM/Member/Form/Task/PDFLetter.php
index 2d1b680ef497a211e37977d6ae46355778c9d333..29f42b8c1cc3d74a090e8741efbe3a8d860f2c4e 100644
--- a/civicrm/CRM/Member/Form/Task/PDFLetter.php
+++ b/civicrm/CRM/Member/Form/Task/PDFLetter.php
@@ -87,13 +87,7 @@ class CRM_Member_Form_Task_PDFLetter extends CRM_Member_Form_Task {
     $form = $this;
     $formValues = $form->controller->exportValues($form->getName());
     [$formValues, $html_message] = $this->processMessageTemplate($formValues);
-    $messageToken = CRM_Utils_Token::getTokens($html_message);
-    $html
-      = $this->generateHTML(
-      $membershipIDs,
-      $messageToken,
-      $html_message
-    );
+    $html = $this->generateHTML($membershipIDs, $html_message);
     $form->createActivities($html_message, $contactIDs, $formValues['subject'], CRM_Utils_Array::value('campaign_id', $formValues));
     CRM_Utils_PDF_Utils::html2pdf($html, $this->getFileName() . '.pdf', FALSE, $formValues);
 
@@ -106,7 +100,6 @@ class CRM_Member_Form_Task_PDFLetter extends CRM_Member_Form_Task {
    * Generate html for pdf letters.
    *
    * @param array $membershipIDs
-   * @param array $messageToken
    * @param $html_message
    *
    * @return array
@@ -114,7 +107,7 @@ class CRM_Member_Form_Task_PDFLetter extends CRM_Member_Form_Task {
    * @internal
    *
    */
-  public function generateHTML($membershipIDs, $messageToken, $html_message): array {
+  public function generateHTML($membershipIDs, $html_message): array {
     $memberships = Membership::get(FALSE)
       ->addWhere('id', 'IN', $membershipIDs)
       ->addSelect('contact_id')->execute();
diff --git a/civicrm/CRM/Member/Page/Tab.php b/civicrm/CRM/Member/Page/Tab.php
index e6c543f1cd6681551663ddf03a09c3e623febb21..7b1eb4de55bad3dd79947f0dd2eaf3ac997bd587 100644
--- a/civicrm/CRM/Member/Page/Tab.php
+++ b/civicrm/CRM/Member/Page/Tab.php
@@ -25,7 +25,15 @@ class CRM_Member_Page_Tab extends CRM_Core_Page {
   public static $_membershipTypesLinks = NULL;
 
   public $_permission = NULL;
-  public $_contactId = NULL;
+
+  /**
+   * Contact ID.
+   *
+   * @var int
+   *
+   * @deprecated
+   */
+  public $_contactId;
 
   /**
    * @var bool
@@ -332,8 +340,9 @@ class CRM_Member_Page_Tab extends CRM_Core_Page {
       $this->_action = CRM_Core_Action::ADD;
     }
     else {
-      $this->_contactId = CRM_Utils_Request::retrieve('cid', 'Positive', $this, TRUE);
-      $this->assign('contactId', $this->_contactId);
+      $contactID = $this->getContactID();
+      $this->assign('contactId', $contactID);
+      CRM_Contact_Form_Inline::renderFooter($contactID, FALSE);
 
       // check logged in url permission
       CRM_Contact_Page_View::checkUserPermission($this);
@@ -372,13 +381,9 @@ class CRM_Member_Page_Tab extends CRM_Core_Page {
       $this->assign('accessContribution', TRUE);
 
       //show associated soft credit when contribution payment is paid by different person
-      if ($this->_id && $this->_contactId) {
-        $softCreditList = CRM_Contribute_BAO_ContributionSoft::getSoftContributionList($this->_contactId, $this->_id);
-        if (!empty($softCreditList)) {
-          $this->assign('softCredit', TRUE);
-          $this->assign('softCreditRows', $softCreditList);
-        }
-      }
+      $softCreditList = ($this->_id && $this->_contactId) ? CRM_Contribute_BAO_ContributionSoft::getSoftContributionList($this->_contactId, $this->_id) : FALSE;
+      $this->assign('softCredit', (bool) $softCreditList);
+      $this->assign('softCreditRows', $softCreditList);
     }
     else {
       $this->_accessContribution = FALSE;
@@ -669,4 +674,17 @@ class CRM_Member_Page_Tab extends CRM_Core_Page {
     }
   }
 
+  /**
+   * Get the contact ID.
+   *
+   * @api Supported for external use.
+   *
+   * @return int|null
+   * @throws \CRM_Core_Exception
+   */
+  public function getContactID(): ?int {
+    $this->_contactId = CRM_Utils_Request::retrieve('cid', 'Positive', $this, TRUE);
+    return $this->_contactId;
+  }
+
 }
diff --git a/civicrm/CRM/Member/Page/UserDashboard.php b/civicrm/CRM/Member/Page/UserDashboard.php
index bcc693f61a89706f2cb1ffb973808c5392657075..5e427c40bec8059c0d6115d20640690249c00923 100644
--- a/civicrm/CRM/Member/Page/UserDashboard.php
+++ b/civicrm/CRM/Member/Page/UserDashboard.php
@@ -38,10 +38,7 @@ class CRM_Member_Page_UserDashboard extends CRM_Contact_Page_View_UserDashBoard
 
       //get the membership status and type values.
       $statusANDType = CRM_Member_BAO_Membership::getStatusANDTypeValues($dao->id);
-      foreach ([
-        'status',
-        'membership_type',
-      ] as $fld) {
+      foreach (['status', 'membership_type'] as $fld) {
         $membership[$dao->id][$fld] = $statusANDType[$dao->id][$fld] ?? NULL;
       }
       if (!empty($statusANDType[$dao->id]['is_current_member'])) {
diff --git a/civicrm/CRM/Member/StatusOverrideTypes.php b/civicrm/CRM/Member/StatusOverrideTypes.php
index 57451fafa1e0ef2c6df44f7806eb59b638c2e3b7..c75439703a05470bceafa7d0d184a02b388b7bdc 100644
--- a/civicrm/CRM/Member/StatusOverrideTypes.php
+++ b/civicrm/CRM/Member/StatusOverrideTypes.php
@@ -65,35 +65,19 @@ class CRM_Member_StatusOverrideTypes {
    * @return bool
    */
   public static function isOverridden($overrideType) {
-    if ($overrideType == self::NO) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return $overrideType != self::NO;
   }
 
   public static function isNo($overrideType) {
-    if ($overrideType != self::NO) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return $overrideType == self::NO;
   }
 
   public static function isPermanent($overrideType) {
-    if ($overrideType != self::PERMANENT) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return $overrideType == self::PERMANENT;
   }
 
   public static function isUntilDate($overrideType) {
-    if ($overrideType != self::UNTIL_DATE) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return $overrideType == self::UNTIL_DATE;
   }
 
 }
diff --git a/civicrm/CRM/Member/WorkflowMessage/Membership/Membership.php b/civicrm/CRM/Member/WorkflowMessage/Membership/Membership.php
index 03d134e2896efe242a30ce1f1259dd58a585164d..1169ea498f5de9d3fc95ae7399e06553e306de74 100644
--- a/civicrm/CRM/Member/WorkflowMessage/Membership/Membership.php
+++ b/civicrm/CRM/Member/WorkflowMessage/Membership/Membership.php
@@ -1,9 +1,11 @@
 <?php
 
+use Civi\Api4\ContributionPage;
 use Civi\Api4\MembershipType;
 use Civi\Api4\PriceField;
 use Civi\Api4\PriceFieldValue;
 use Civi\Api4\PriceSet;
+use Civi\Api4\PriceSetEntity;
 use Civi\Api4\WorkflowMessage;
 use Civi\Test;
 use Civi\WorkflowMessage\GenericWorkflowMessage;
@@ -16,6 +18,10 @@ use Civi\WorkflowMessage\WorkflowMessageExample;
  */
 class CRM_Member_WorkflowMessage_Membership_Membership extends WorkflowMessageExample {
 
+  private $priceSets;
+
+  private $contributionPages;
+
   /**
    * Get the examples this class is able to deliver.
    *
@@ -35,15 +41,23 @@ class CRM_Member_WorkflowMessage_Membership_Membership extends WorkflowMessageEx
 
     foreach ($workflows as $workflow) {
       foreach ($priceSets as $priceSet) {
+        if (!$priceSet['contribution_page_id'] && $workflow === 'membership_online_receipt' & count($priceSets) > 1) {
+          // Generally the online receipt is used with a contribution page so lets' focus
+          // on those examples for it - unless none exist. It could also be used
+          // on other contributions via the send receipt method so we do want to show it if
+          // there are not better examples.
+          continue;
+        }
         yield [
           'name' => 'workflow/' . $workflow . '/' . strtolower($membershipType['name']) . '_' . strtolower($priceSet['name']) . '_' . strtolower($defaultCurrency),
-          'title' => $priceSet['title'] . ' - ' . $membershipType['name'] . ' : ' . $defaultCurrency,
+          'title' => ($priceSet['contribution_page_id'] ? $this->getContributionPage($priceSet['contribution_page_id'])['title'] : $priceSet['title']) . ' - ' . $membershipType['name'] . ' : ' . $defaultCurrency,
           'tags' => ['preview'],
           'workflow' => $workflow,
           'membership_type' => $membershipType,
           'currency' => $defaultCurrency,
           'price_set_id' => $priceSet['id'],
-          'is_show_line_items' => !$priceSets['is_quick_config'],
+          'contribution_page_id' => $priceSet['contribution_page_id'],
+          'is_show_line_items' => !$priceSet['is_quick_config'],
         ];
       }
     }
@@ -92,15 +106,20 @@ class CRM_Member_WorkflowMessage_Membership_Membership extends WorkflowMessageEx
       'contact_id' => 100,
       'financial_type_id' => $example['membership_type']['financial_type_id'],
       'receive_date' => '2021-07-23 15:39:20',
-      'total_amount' => $example['membership_type']['minimum_amount'],
       'fee_amount' => .99,
       'net_amount' => $example['membership_type']['minimum_amount'] - .99,
       'currency' => $example['currency'],
+      'contribution_page_id' => $example['contribution_page_id'],
       'trxn_id' => 123,
       'invoice_id' => 'I-123',
       'contribution_status_id:name' => 'Completed',
       'contribution_status_id' => \CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed'),
     ];
+    if ($example['contribution_page_id']) {
+      foreach ($this->getContributionPage($example['contribution_page_id']) as $pageKey => $pageValue) {
+        $contribution['contribution_page_id.' . $pageKey] = $pageValue;
+      }
+    }
     $contribution['contribution_status_id:label'] = \CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contribution['contribution_status_id']);
 
     if (isset($example['contribution_params'])) {
@@ -111,8 +130,14 @@ class CRM_Member_WorkflowMessage_Membership_Membership extends WorkflowMessageEx
     $mockOrder->setTemplateContributionID(50);
 
     if (empty($example['is_show_line_items'])) {
-      $mockOrder->setPriceSetToDefault('membership');
-      $mockOrder->setOverrideTotalAmount($example['membership_type']['minimum_fee']);
+      if (empty($example['contribution_page_id'])) {
+        $mockOrder->setOverrideTotalAmount($example['membership_type']['minimum_fee']);
+        $mockOrder->setPriceSetToDefault('membership');
+      }
+      else {
+        $priceSet = $this->getPriceSet()[$example['price_set_id']];
+        $mockOrder->setPriceSetID($priceSet['id']);
+      }
       $mockOrder->setDefaultFinancialTypeID($example['membership_type']['financial_type_id']);
     }
     else {
@@ -124,15 +149,14 @@ class CRM_Member_WorkflowMessage_Membership_Membership extends WorkflowMessageEx
     }
     foreach (PriceField::get()->addWhere('price_set_id', '=', $mockOrder->getPriceSetID())->execute() as $index => $priceField) {
       $priceFieldValue = PriceFieldValue::get()->addWhere('price_field_id', '=', $priceField['id'])->execute()->first();
-      if (empty($example['is_show_line_items'])) {
-        $priceFieldValue['amount'] = $contribution['total_amount'];
-        $priceFieldValue['financial_type_id'] = $contribution['financial_type_id'];
-      }
       $this->setLineItem($mockOrder, $priceField, $priceFieldValue, $index, $membership);
     }
 
     $contribution['total_amount'] = $mockOrder->getTotalAmount();
     $contribution['tax_amount'] = $mockOrder->getTotalTaxAmount() ? round($mockOrder->getTotalTaxAmount(), 2) : 0;
+    $contribution['amount_level'] = $mockOrder->getAmountLevel();
+    $contribution['address_id.name'] = 'Barbara Mary Jones';
+    $contribution['address_id.display'] = "123 Main Street\nMega City";
     $messageTemplate->setContribution($contribution);
     $messageTemplate->setOrder($mockOrder);
     $messageTemplate->setContribution($contribution);
@@ -145,10 +169,23 @@ class CRM_Member_WorkflowMessage_Membership_Membership extends WorkflowMessageEx
    * @throws \CRM_Core_Exception
    */
   private function getPriceSet(): ?array {
-    return (array) PriceSet::get(FALSE)
-      ->addWhere('extends', '=', CRM_Core_Component::getComponentID('CiviMember'))
-      ->addOrderBy('is_quick_config', 'DESC')
-      ->execute()->indexBy('id');
+    if (!$this->priceSets) {
+      $priceSets = (array) PriceSet::get(FALSE)
+        ->addWhere('extends:name', 'CONTAINS', 'CiviMember')
+        ->addOrderBy('is_quick_config', 'DESC')
+        ->execute()->indexBy('id');
+      $priceSetEntities = PriceSetEntity::get(FALSE)
+        ->addWhere('price_set_id', 'IN', array_keys($priceSets))
+        ->addWhere('entity_table', '=', 'civicrm_contribution_page')
+        ->addOrderBy('entity_id')
+        ->addSelect('price_set_id', 'entity_id')
+        ->execute();
+      foreach ($priceSetEntities as $priceSetEntity) {
+        $priceSets[$priceSetEntity['price_set_id']]['contribution_page_id'] = $priceSetEntity['entity_id'];
+      }
+      $this->priceSets = $priceSets;
+    }
+    return $this->priceSets;
   }
 
   /**
@@ -171,6 +208,7 @@ class CRM_Member_WorkflowMessage_Membership_Membership extends WorkflowMessageEx
       'label' => $priceFieldValue['label'],
       'financial_type_id' => $priceFieldValue['financial_type_id'],
       'non_deductible_amount' => $priceFieldValue['non_deductible_amount'],
+      'membership_type_id' => $priceFieldValue['membership_type_id'],
     ];
     if (!empty($priceFieldValue['membership_type_id'])) {
       $lineItem['membership'] = ['start_date' => $membership['start_date'], 'end_date' => $membership['end_date']];
@@ -178,4 +216,21 @@ class CRM_Member_WorkflowMessage_Membership_Membership extends WorkflowMessageEx
     $mockOrder->setLineItem($lineItem, $index);
   }
 
+  /**
+   * @param int $id
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  private function getContributionPage(int $id): array {
+    if (!isset($this->contributionPages[$id])) {
+      $this->contributionPages[$id] = ContributionPage::get(FALSE)
+        ->addWhere('id', '=', $id)
+        ->execute()->first();
+    }
+    return $this->contributionPages[$id];
+  }
+
 }
diff --git a/civicrm/CRM/Member/WorkflowMessage/MembershipOfflineReceipt.php b/civicrm/CRM/Member/WorkflowMessage/MembershipOfflineReceipt.php
index 9522240d5c4683222df128c8b37f09c88671d457..93648fa32691f56bb24cdace5d3d64ca7ddf07bd 100644
--- a/civicrm/CRM/Member/WorkflowMessage/MembershipOfflineReceipt.php
+++ b/civicrm/CRM/Member/WorkflowMessage/MembershipOfflineReceipt.php
@@ -25,13 +25,4 @@ class CRM_Member_WorkflowMessage_MembershipOfflineReceipt extends GenericWorkflo
   use CRM_Contribute_WorkflowMessage_ContributionTrait;
   public const WORKFLOW = 'membership_offline_receipt';
 
-  /**
-   * Additional text to include in the receipt.
-   *
-   * @var string
-   *
-   * @scope tplParams as receipt_text
-   */
-  protected $receiptText;
-
 }
diff --git a/civicrm/CRM/Member/WorkflowMessage/MembershipTrait.php b/civicrm/CRM/Member/WorkflowMessage/MembershipTrait.php
index 665fd4cb7ea87988d515fedd83100a598f090f3b..30bcd251f6e4154ca1064fdf90c63a6795e87c4a 100644
--- a/civicrm/CRM/Member/WorkflowMessage/MembershipTrait.php
+++ b/civicrm/CRM/Member/WorkflowMessage/MembershipTrait.php
@@ -31,7 +31,7 @@ trait CRM_Member_WorkflowMessage_MembershipTrait {
   public function setMembership(array $membership): self {
     $this->membership = $membership;
     if (!empty($membership['id'])) {
-      $this->membershipId = $membership['id'];
+      $this->membershipID = $membership['id'];
     }
     return $this;
   }
diff --git a/civicrm/CRM/PCP/Form/Event.php b/civicrm/CRM/PCP/Form/Event.php
index 5448225acc030bd27ab893a2a2eddd2484c72689..b51425d8c580140fa71ea79b8d99e3c701ea0c1f 100644
--- a/civicrm/CRM/PCP/Form/Event.php
+++ b/civicrm/CRM/PCP/Form/Event.php
@@ -100,10 +100,7 @@ class CRM_PCP_Form_Event extends CRM_Event_Form_ManageEvent {
     $pcpBlock->find(TRUE);
 
     if (!empty($pcpBlock->id) && CRM_PCP_BAO_PCP::getPcpBlockInUse($pcpBlock->id)) {
-      foreach ([
-        'target_entity_type',
-        'target_entity_id',
-      ] as $element_name) {
+      foreach (['target_entity_type', 'target_entity_id'] as $element_name) {
         $element = $this->getElement($element_name);
         $element->freeze();
       }
diff --git a/civicrm/CRM/PCP/Page/PCPInfo.php b/civicrm/CRM/PCP/Page/PCPInfo.php
index 18496ef20e599f59edacf2680c962df974633e30..12dc8f91633aa0c35f83563c69469eab619b2472 100644
--- a/civicrm/CRM/PCP/Page/PCPInfo.php
+++ b/civicrm/CRM/PCP/Page/PCPInfo.php
@@ -206,9 +206,9 @@ class CRM_PCP_Page_PCPInfo extends CRM_Core_Page {
         TRUE, NULL, TRUE,
         TRUE
       );
-      $this->assign('linkTextUrl', $linkTextUrl);
-      $this->assign('linkText', $pcpBlock->link_text);
     }
+    $this->assign('linkTextUrl', $linkTextUrl ?? NULL);
+    $this->assign('linkText', $pcpBlock->link_text ?? NULL);
 
     $this->assign('honor', $honor);
     $this->assign('total', $totalAmount ?: '0.0');
diff --git a/civicrm/CRM/Price/BAO/LineItem.php b/civicrm/CRM/Price/BAO/LineItem.php
index 4a1a81c85abece7e84b98d4547dea455cfd51444..f54b31133aeb908de25c9329ea129c0d52f07f75 100644
--- a/civicrm/CRM/Price/BAO/LineItem.php
+++ b/civicrm/CRM/Price/BAO/LineItem.php
@@ -257,13 +257,6 @@ WHERE li.contribution_id = %1";
         $getTaxDetails = TRUE;
       }
     }
-    if (Civi::settings()->get('invoicing')) {
-      // @todo - this is an inappropriate place to be doing form level assignments.
-      $taxTerm = Civi::settings()->get('tax_term');
-      $smarty = CRM_Core_Smarty::singleton();
-      $smarty->assign('taxTerm', $taxTerm);
-      $smarty->assign('getTaxDetails', $getTaxDetails);
-    }
     return $lineItems;
   }
 
@@ -1256,7 +1249,7 @@ WHERE li.contribution_id = %1";
    * @return string
    */
   protected function getSalesTaxTerm() {
-    return CRM_Contribute_BAO_Contribution::checkContributeSettings('tax_term');
+    return \Civi::settings()->get('tax_term');
   }
 
   /**
diff --git a/civicrm/CRM/Price/BAO/PriceField.php b/civicrm/CRM/Price/BAO/PriceField.php
index 39803c6d4f6a63bd97e942268a6e54346446bcbd..a161fae72659c69566b4909ea0cc8576b6ac2556 100644
--- a/civicrm/CRM/Price/BAO/PriceField.php
+++ b/civicrm/CRM/Price/BAO/PriceField.php
@@ -372,16 +372,9 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField {
             'data-amount' => $opt[$valueFieldName],
             'data-currency' => $currencyName,
             'data-price-field-values' => json_encode($customOption),
+            'data-membership-type-id' => $opt['membership_type_id'] ?? NULL,
             'visibility' => $visibility_id,
           ] + $incomingExtra;
-          // @todo - move this back to the only calling function on Contribution_Form_Main.php
-          if ($field->name == 'membership_amount') {
-            $extra += [
-              'onclick' => "return showHideAutoRenew({$opt['membership_type_id']});",
-              'membership-type' => $opt['membership_type_id'],
-            ];
-            $qf->assign('membershipFieldID', $field->id);
-          }
 
           $choice[$opt['id']] = CRM_Utils_String::purifyHTML($priceOptionText['label']);
           $choiceAttrs[$opt['id']] = $extra;
@@ -412,7 +405,10 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField {
           }
 
           $choice['0'] = '<span class="crm-price-amount-label">' . $none . '</span>';
-          $choiceAttrs['0'] = ['price' => json_encode([$elementName, '0'])];
+          $choiceAttrs['0'] = [
+            'price' => json_encode([$elementName, '0']),
+            'data-membership-type-id' => NULL,
+          ] + $incomingExtra;
         }
 
         $element = &$qf->addRadio($elementName, $label, $choice, [], NULL, FALSE, $choiceAttrs);
diff --git a/civicrm/CRM/Price/BAO/PriceSet.php b/civicrm/CRM/Price/BAO/PriceSet.php
index 566ef3287a51da5bb93f2c9a18fd5a6c8754dca3..0e7fe7f85f31cf8e948a13518118098689451ecc 100644
--- a/civicrm/CRM/Price/BAO/PriceSet.php
+++ b/civicrm/CRM/Price/BAO/PriceSet.php
@@ -646,12 +646,27 @@ WHERE  id = %1";
    *   Line item array to be altered.
    * @param int $priceSetID
    *
+   * @deprecated since 5.69 will be removed around 5.85. This function is still in use but marking deprecated to make it clear that
+   * we are moving away from it. There is no function that has the guaranteed stable signature
+   * that would allow us to support if from outside of core so if using this or the core alternative
+   * from an extension you need to rely on unit tests to keep your code stable. Within core we
+   * already have good test cover on code that calls this.
+   *
+   * The recommended approach within core is something like
+   *
+   * private function initializeOrder(): void {
+   *  $this->order = new CRM_Financial_BAO_Order();
+   *  $this->order->setForm($this);
+   *  $this->order->setPriceSelectionFromUnfilteredInput($this->>getSubmittedValues());
+   * }
+   *
+   * $lineItems = $this->order->getLineItems();
+   *
    * @todo $priceSetID is a pseudoparam for permit override - we should stop passing it where we
    * don't specifically need it & find a better way where we do.
    */
   public static function processAmount($fields, &$params, &$lineItem, $priceSetID = NULL) {
     // using price set
-    $totalPrice = $totalTax = 0;
     foreach ($fields as $id => $field) {
       if (empty($params["price_{$id}"]) ||
         (empty($params["price_{$id}"]) && $params["price_{$id}"] == NULL)
@@ -662,49 +677,11 @@ WHERE  id = %1";
 
       [$params, $lineItem] = self::getLine($params, $lineItem, $priceSetID, $field, $id);
     }
-
-    $amount_level = [];
-    $totalParticipant = 0;
-    if (is_array($lineItem)) {
-      foreach ($lineItem as $values) {
-        $totalPrice += $values['line_total'] + $values['tax_amount'];
-        $totalTax += $values['tax_amount'];
-        $totalParticipant += $values['participant_count'];
-        // This is a bit nasty. The logic of 'quick config' was because price set configuration was
-        // (and still is) too difficult to replace the 'quick config' price set configuration on the contribution
-        // page.
-        //
-        // However, because the quick config concept existed all sorts of logic was hung off it
-        // and function behaviour sometimes depends on whether 'price set' is set - although actually it
-        // is always set at the functional level. In this case we are dealing with the default 'quick config'
-        // price set having a label of 'Contribution Amount' which could wind up creating a 'funny looking' label.
-        // The correct answer is probably for it to have an empty label in the DB - the label is never shown so it is a
-        // place holder.
-        //
-        // But, in the interests of being careful when capacity is low - avoiding the known default value
-        // will get us by.
-        // Crucially a test has been added so a better solution can be implemented later with some comfort.
-        // @todo - stop setting amount level in this function & call the getAmountLevel function to retrieve it.
-        if ($values['label'] !== ts('Contribution Amount')) {
-          $amount_level[] = $values['label'] . ' - ' . (float) $values['qty'];
-        }
-      }
-    }
-
-    $displayParticipantCount = '';
-    if ($totalParticipant > 0) {
-      $displayParticipantCount = ' Participant Count -' . $totalParticipant;
-    }
-    // @todo - stop setting amount level in this function & call the getAmountLevel function to retrieve it.
-    if (!empty($amount_level)) {
-      $params['amount_level'] = CRM_Utils_Array::implodePadded($amount_level);
-      if (!empty($displayParticipantCount)) {
-        $params['amount_level'] = CRM_Core_DAO::VALUE_SEPARATOR . implode(CRM_Core_DAO::VALUE_SEPARATOR, $amount_level) . $displayParticipantCount . CRM_Core_DAO::VALUE_SEPARATOR;
-      }
-    }
-
-    $params['amount'] = $totalPrice;
-    $params['tax_amount'] = $totalTax;
+    $order = new CRM_Financial_BAO_Order();
+    $order->setLineItems((array) $lineItem);
+    $params['amount_level'] = $order->getAmountLevel();
+    $params['amount'] = $order->getTotalAmount();
+    $params['tax_amount'] = $order->getTotalTaxAmount();
   }
 
   /**
@@ -787,6 +764,7 @@ WHERE  id = %1";
       $data['fields'] = (array) PriceField::get(FALSE)
         ->addWhere('price_set_id', '=', $priceSetID)
         ->addSelect('*', 'visibility_id:name')
+        ->addOrderBy('weight', 'ASC')
         ->execute()->indexBy('id');
       foreach ($data['fields'] as &$field) {
         $field['options'] = [];
@@ -800,6 +778,7 @@ WHERE  id = %1";
       $options = PriceFieldValue::get(FALSE)
         ->addWhere('price_field_id', 'IN', array_keys($data['fields']))
         ->setSelect($select)
+        ->addOrderBy('weight', 'ASC')
         ->execute();
       $taxRates = CRM_Core_PseudoConstant::getTaxRates();
       foreach ($options as $option) {
@@ -1699,4 +1678,18 @@ WHERE     ct.id = cp.financial_type_id AND
     return $result;
   }
 
+  public static function hook_civicrm_post($op, $objectName, $objectId, &$objectRef): void {
+    if (in_array($objectName, ['PriceField', 'PriceFieldValue', 'PriceSet'], TRUE)) {
+      self::flushPriceSets();
+    }
+  }
+
+  public static function flushPriceSets(): void {
+    $cache = CRM_Utils_Cache::singleton();
+    foreach (PriceSet::get(FALSE)->addSelect('id')->execute() as $priceSet) {
+      $cacheKey = 'CRM_Price_BAO_PriceSetgetCachedPriceSetDetail_' . $priceSet['id'];
+      $cache->delete($cacheKey);
+    }
+  }
+
 }
diff --git a/civicrm/CRM/Price/Page/Option.php b/civicrm/CRM/Price/Page/Option.php
index b07bf8ccb876d3fc6df558c7a359b56a9e5c0391..19d399edb0846957c4dc5f4191573b6a46d509ac 100644
--- a/civicrm/CRM/Price/Page/Option.php
+++ b/civicrm/CRM/Price/Page/Option.php
@@ -189,7 +189,7 @@ class CRM_Price_Page_Option extends CRM_Core_Page {
     $this->assign('customOption', $customOption);
     $this->assign('sid', $this->_sid);
     $this->assign('isEvent', $isEvent);
-    $this->assignSalesTaxTermToTemplate();
+    $this->assign('taxTerm', $this->getSalesTaxTerm());
   }
 
   /**
diff --git a/civicrm/CRM/Profile/Form.php b/civicrm/CRM/Profile/Form.php
index e20bd8d40b92fa9176b165637f42cc94730c70ea..32cea9291c32005cb44dd8d09c3005264054faeb 100644
--- a/civicrm/CRM/Profile/Form.php
+++ b/civicrm/CRM/Profile/Form.php
@@ -473,11 +473,8 @@ class CRM_Profile_Form extends CRM_Core_Form {
           }
 
         }
-        elseif (!empty($this->_multiRecordFields)
-          && (!$this->_multiRecord || !in_array($this->_multiRecord, [
-            CRM_Core_Action::DELETE,
-            CRM_Core_Action::UPDATE,
-          ]))
+        elseif (!empty($this->_multiRecordFields) &&
+          (!$this->_multiRecord || !in_array($this->_multiRecord, [CRM_Core_Action::DELETE, CRM_Core_Action::UPDATE]))
         ) {
           CRM_Core_Resources::singleton()->addScriptFile('civicrm', 'js/crm.livePage.js', 1, 'html-header');
           //multi-record listing page
diff --git a/civicrm/CRM/Profile/Form/Search.php b/civicrm/CRM/Profile/Form/Search.php
index 71d9a6cc518d922da42c0db5cc29ed837e9e646f..dc5e7efa4d4519d44274819c1638eef8bc259258 100644
--- a/civicrm/CRM/Profile/Form/Search.php
+++ b/civicrm/CRM/Profile/Form/Search.php
@@ -63,10 +63,7 @@ class CRM_Profile_Form_Search extends CRM_Profile_Form {
           $value[$item] = 1;
         }
       }
-      elseif (in_array($key, [
-        'birth_date',
-        'deceased_date',
-      ])) {
+      elseif (in_array($key, ['birth_date', 'deceased_date'])) {
         list($value) = CRM_Utils_Date::setDateDefaults($value);
       }
 
diff --git a/civicrm/CRM/Profile/Selector/Listings.php b/civicrm/CRM/Profile/Selector/Listings.php
index dbec1ab1ac2edc478298ee0e554a879db656a122..c2ede95215759f308a0ef6d2f6ab8970804dd4fa 100644
--- a/civicrm/CRM/Profile/Selector/Listings.php
+++ b/civicrm/CRM/Profile/Selector/Listings.php
@@ -310,11 +310,7 @@ class CRM_Profile_Selector_Listings extends CRM_Core_Selector_Base implements CR
                 $locationTypeName = $locationTypes[$lType];
               }
 
-              if (in_array($fieldName, [
-                'phone',
-                'im',
-                'email',
-              ])) {
+              if (in_array($fieldName, ['phone', 'im', 'email'])) {
                 if ($type) {
                   $name = "`$locationTypeName-$fieldName-$type`";
                 }
@@ -523,11 +519,7 @@ class CRM_Profile_Selector_Listings extends CRM_Core_Selector_Base implements CR
               continue;
             }
             $locationTypeName = str_replace(' ', '_', $locationTypeName);
-            if (in_array($fieldName, [
-              'phone',
-              'im',
-              'email',
-            ])) {
+            if (in_array($fieldName, ['phone', 'im', 'email'])) {
               if ($type) {
                 $names[] = "{$locationTypeName}-{$fieldName}-{$type}";
               }
@@ -598,7 +590,7 @@ class CRM_Profile_Selector_Listings extends CRM_Core_Selector_Base implements CR
           $typeId = substr($name, 0, -4) . "-website_type_id";
           $typeName = CRM_Core_PseudoConstant::getLabel('CRM_Core_DAO_Website', 'website_type_id', $result->$typeId);
           if ($typeName) {
-            $row[] = "<a href=\"$url\">{$result->$name} (${typeName})</a>";
+            $row[] = "<a href=\"$url\">{$result->$name} ($typeName)</a>";
           }
           else {
             $row[] = "<a href=\"$url\">{$result->$name}</a>";
@@ -643,10 +635,7 @@ class CRM_Profile_Selector_Listings extends CRM_Core_Selector_Base implements CR
           $dname = $name . '_display';
           $row[] = $result->$dname;
         }
-        elseif (in_array($name, [
-          'birth_date',
-          'deceased_date',
-        ])) {
+        elseif (in_array($name, ['birth_date', 'deceased_date'])) {
           $row[] = CRM_Utils_Date::customFormat($result->$name);
         }
         elseif (isset($result->$name)) {
diff --git a/civicrm/CRM/Queue/ErrorPolicy.php b/civicrm/CRM/Queue/ErrorPolicy.php
index 9246036f9bc272877ca4ca8d863d85aa76b008d0..d7ffeff762a27bbb772e9a1e7cb52290b94971db 100644
--- a/civicrm/CRM/Queue/ErrorPolicy.php
+++ b/civicrm/CRM/Queue/ErrorPolicy.php
@@ -60,11 +60,7 @@ class CRM_Queue_ErrorPolicy {
   protected function activate() {
     $this->active = TRUE;
     $this->backup = [];
-    foreach ([
-      'display_errors',
-      'html_errors',
-      'xmlrpc_errors',
-    ] as $key) {
+    foreach (['display_errors', 'html_errors', 'xmlrpc_errors'] as $key) {
       $this->backup[$key] = ini_get($key);
       ini_set($key, 0);
     }
@@ -76,11 +72,7 @@ class CRM_Queue_ErrorPolicy {
    */
   protected function deactivate() {
     restore_error_handler();
-    foreach ([
-      'display_errors',
-      'html_errors',
-      'xmlrpc_errors',
-    ] as $key) {
+    foreach (['display_errors', 'html_errors', 'xmlrpc_errors'] as $key) {
       ini_set($key, $this->backup[$key]);
     }
     $this->active = FALSE;
diff --git a/civicrm/CRM/Queue/TaskRunner.php b/civicrm/CRM/Queue/TaskRunner.php
index 8c42ab84250129a02033e1c9e87d939af1aafe1d..7f1d03c87944646794591a7d853e0abb9588ea39 100644
--- a/civicrm/CRM/Queue/TaskRunner.php
+++ b/civicrm/CRM/Queue/TaskRunner.php
@@ -40,12 +40,12 @@ class CRM_Queue_TaskRunner {
     /** @var string $outcome One of 'ok', 'retry', 'delete', 'abort' */
 
     if (is_numeric($queue->getSpec('retry_limit')) && $item->run_count > 1 + $queue->getSpec('retry_limit')) {
-      \Civi::log()->debug("Skipping exhausted task: " . $task->title);
+      \Civi::log()->debug('Skipping exhausted task: ' . $task->title);
       $outcome = $queue->getSpec('error');
       $exception = new \CRM_Core_Exception(sprintf('Skipping exhausted task after %d tries: %s', $item->run_count, print_r($task, 1)), 'queue_retry_exhausted');
     }
     else {
-      \Civi::log()->debug("Running task: " . $task->title);
+      \Civi::log()->debug('Running task: ' . $task->title);
       try {
         $runResult = $task->run($this->createContext($queue));
         $outcome = $runResult ? 'ok' : $queue->getSpec('error');
@@ -80,17 +80,17 @@ class CRM_Queue_TaskRunner {
 
     switch ($outcome) {
       case 'retry':
-        \Civi::log('queue')->error('Task "{id}" failed and should be retried. {message}', $logDetails);
+        \Civi::log('queue')->error('Task "{id}" failed and should be retried. Task specific error: {message}', $logDetails);
         $queue->releaseItem($item);
         break;
 
       case 'delete':
-        \Civi::log('queue')->error('Task "{id}" failed and will be deleted. {message}', $logDetails);
+        \Civi::log('queue')->error('Task "{id}" failed and will be deleted. Task specific error: {message}', $logDetails);
         $queue->deleteItem($item);
         break;
 
       case 'abort':
-        \Civi::log('queue')->error('Task "{id}" failed. Queue processing aborted. {message}', $logDetails);
+        \Civi::log('queue')->error('Task "{id}" failed. Queue processing aborted. Task specific error: {message}', $logDetails);
         $queue->setStatus('aborted');
         $queue->releaseItem($item); /* Sysadmin might inspect, fix, and then resume. Item should be accessible. */
         break;
diff --git a/civicrm/CRM/Report/Form.php b/civicrm/CRM/Report/Form.php
index 2c2605ce4f4d7741ebe2cbde5db3981ff67d194c..91622e7c26f307f0d968bd429c531ed8c46622da 100644
--- a/civicrm/CRM/Report/Form.php
+++ b/civicrm/CRM/Report/Form.php
@@ -4272,14 +4272,7 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a
   protected function isFieldFiltered($prop) {
     if (!empty($prop['filters']) && $this->_customGroupFilters) {
       foreach ($prop['filters'] as $fieldAlias => $val) {
-        foreach ([
-          'value',
-          'min',
-          'max',
-          'relative',
-          'from',
-          'to',
-        ] as $attach) {
+        foreach (['value', 'min', 'max', 'relative', 'from', 'to'] as $attach) {
           if (isset($this->_params[$fieldAlias . '_' . $attach]) &&
             (!empty($this->_params[$fieldAlias . '_' . $attach])
               || ($attach != 'relative' &&
diff --git a/civicrm/CRM/Report/Form/Activity.php b/civicrm/CRM/Report/Form/Activity.php
index 536d6695f9c3d2cbc9e51ac3682c2bf9348cf68b..38f7627825e001257954630909bb0616018646d3 100644
--- a/civicrm/CRM/Report/Form/Activity.php
+++ b/civicrm/CRM/Report/Form/Activity.php
@@ -432,12 +432,12 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
     if ($recordType == 'target') {
       // @todo - fix up the way the tables are declared in construct & remove this.
       foreach ($this->_selectClauses as $key => $clause) {
-        if (strstr($clause, 'civicrm_contact_assignee.') ||
-          strstr($clause, 'civicrm_contact_source.') ||
-          strstr($clause, 'civicrm_email_assignee.') ||
-          strstr($clause, 'civicrm_email_source.') ||
-          strstr($clause, 'civicrm_phone_assignee.') ||
-          strstr($clause, 'civicrm_phone_source.')
+        if (str_contains($clause, 'civicrm_contact_assignee.') ||
+          str_contains($clause, 'civicrm_contact_source.') ||
+          str_contains($clause, 'civicrm_email_assignee.') ||
+          str_contains($clause, 'civicrm_email_source.') ||
+          str_contains($clause, 'civicrm_phone_assignee.') ||
+          str_contains($clause, 'civicrm_phone_source.')
         ) {
           $removeKeys[] = $key;
           unset($this->_selectClauses[$key]);
@@ -447,13 +447,13 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
     elseif ($recordType == 'assignee') {
       // @todo - fix up the way the tables are declared in construct & remove this.
       foreach ($this->_selectClauses as $key => $clause) {
-        if (strstr($clause, 'civicrm_contact_target.') ||
-          strstr($clause, 'civicrm_contact_source.') ||
-          strstr($clause, 'civicrm_email_target.') ||
-          strstr($clause, 'civicrm_email_source.') ||
-          strstr($clause, 'civicrm_phone_target.') ||
-          strstr($clause, 'civicrm_phone_source.') ||
-          strstr($clause, 'civicrm_address_')
+        if (str_contains($clause, 'civicrm_contact_target.') ||
+          str_contains($clause, 'civicrm_contact_source.') ||
+          str_contains($clause, 'civicrm_email_target.') ||
+          str_contains($clause, 'civicrm_email_source.') ||
+          str_contains($clause, 'civicrm_phone_target.') ||
+          str_contains($clause, 'civicrm_phone_source.') ||
+          str_contains($clause, 'civicrm_address_')
         ) {
           $removeKeys[] = $key;
           unset($this->_selectClauses[$key]);
@@ -463,13 +463,13 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
     elseif ($recordType == 'source') {
       // @todo - fix up the way the tables are declared in construct & remove this.
       foreach ($this->_selectClauses as $key => $clause) {
-        if (strstr($clause, 'civicrm_contact_target.') ||
-          strstr($clause, 'civicrm_contact_assignee.') ||
-          strstr($clause, 'civicrm_email_target.') ||
-          strstr($clause, 'civicrm_email_assignee.') ||
-          strstr($clause, 'civicrm_phone_target.') ||
-          strstr($clause, 'civicrm_phone_assignee.') ||
-          strstr($clause, 'civicrm_address_')
+        if (str_contains($clause, 'civicrm_contact_target.') ||
+          str_contains($clause, 'civicrm_contact_assignee.') ||
+          str_contains($clause, 'civicrm_email_target.') ||
+          str_contains($clause, 'civicrm_email_assignee.') ||
+          str_contains($clause, 'civicrm_phone_target.') ||
+          str_contains($clause, 'civicrm_phone_assignee.') ||
+          str_contains($clause, 'civicrm_address_')
         ) {
           $removeKeys[] = $key;
           unset($this->_selectClauses[$key]);
@@ -480,16 +480,16 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
       $this->_selectClauses = $this->_selectAliasesTotal;
       foreach ($this->_selectClauses as $key => $clause) {
         // @todo - fix up the way the tables are declared in construct & remove this.
-        if (strstr($clause, 'civicrm_contact_contact_target') ||
-          strstr($clause, 'civicrm_contact_contact_assignee') ||
-          strstr($clause, 'civicrm_contact_contact_source') ||
-          strstr($clause, 'civicrm_phone_contact_source_phone') ||
-          strstr($clause, 'civicrm_phone_contact_assignee_phone') ||
-          strstr($clause, 'civicrm_email_contact_source_email') ||
-          strstr($clause, 'civicrm_email_contact_assignee_email') ||
-          strstr($clause, 'civicrm_email_contact_target_email') ||
-          strstr($clause, 'civicrm_phone_contact_target_phone') ||
-          strstr($clause, 'civicrm_address_')
+        if (str_contains($clause, 'civicrm_contact_contact_target') ||
+          str_contains($clause, 'civicrm_contact_contact_assignee') ||
+          str_contains($clause, 'civicrm_contact_contact_source') ||
+          str_contains($clause, 'civicrm_phone_contact_source_phone') ||
+          str_contains($clause, 'civicrm_phone_contact_assignee_phone') ||
+          str_contains($clause, 'civicrm_email_contact_source_email') ||
+          str_contains($clause, 'civicrm_email_contact_assignee_email') ||
+          str_contains($clause, 'civicrm_email_contact_target_email') ||
+          str_contains($clause, 'civicrm_phone_contact_target_phone') ||
+          str_contains($clause, 'civicrm_address_')
         ) {
           $this->_selectClauses[$key] = "GROUP_CONCAT(DISTINCT $clause SEPARATOR ';') as $clause";
         }
diff --git a/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php b/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php
index fe56fbdc8053c3b4fe486c30fba59663bf426e74..9191acc4efd18a46384c06ead283e7edbc988eab 100644
--- a/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php
+++ b/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php
@@ -628,10 +628,7 @@ INNER JOIN  civicrm_custom_group cg ON ( cg.id = cf.custom_group_id )
       if ($responseField->option_group_id) {
         //show value for print and pdf.
         $value = $responseField->label;
-        if (in_array($this->_outputMode, [
-          'print',
-          'pdf',
-        ])) {
+        if (in_array($this->_outputMode, ['print', 'pdf'])) {
           $value = $responseField->value;
         }
         $fieldValueMap[$responseField->option_group_id][$responseField->value] = $value;
diff --git a/civicrm/CRM/Report/Form/Case/Detail.php b/civicrm/CRM/Report/Form/Case/Detail.php
index bc90feede728912de0798247e18b2be2c72c163a..fc1d7de6c079530af49625d6448d16436595ca8d 100644
--- a/civicrm/CRM/Report/Form/Case/Detail.php
+++ b/civicrm/CRM/Report/Form/Case/Detail.php
@@ -35,14 +35,34 @@ class CRM_Report_Form_Case_Detail extends CRM_Report_Form {
 
   protected $_caseTypeNameOrderBy = FALSE;
 
+  /**
+   * @var array
+   */
+  protected $caseStatuses;
+
+  /**
+   * @var array
+   */
+  protected $caseTypes;
+
+  /**
+   * @var array
+   */
+  protected $relTypes;
+
+  /**
+   * @var array
+   */
+  protected $caseActivityTypes;
+
   /**
    */
   public function __construct() {
-    $this->case_statuses = CRM_Core_OptionGroup::values('case_status');
-    $this->case_types = CRM_Case_PseudoConstant::caseType();
+    $this->caseStatuses = CRM_Core_OptionGroup::values('case_status');
+    $this->caseTypes = CRM_Case_PseudoConstant::caseType();
     $rels = CRM_Core_PseudoConstant::relationshipType();
     foreach ($rels as $relid => $v) {
-      $this->rel_types[$relid] = $v['label_b_a'];
+      $this->relTypes[$relid] = $v['label_b_a'];
     }
 
     $this->caseActivityTypes = [];
@@ -165,7 +185,7 @@ class CRM_Report_Form_Case_Detail extends CRM_Report_Form {
             'title' => ts('Case Role(s)'),
             'type' => CRM_Utils_Type::T_INT,
             'operatorType' => CRM_Report_Form::OP_MULTISELECT,
-            'options' => $this->rel_types,
+            'options' => $this->relTypes,
           ],
           'is_active' => [
             'title' => ts('Active Role?'),
@@ -597,14 +617,14 @@ class CRM_Report_Form_Case_Detail extends CRM_Report_Form {
     foreach ($rows as $rowNum => $row) {
       if (array_key_exists('civicrm_case_status_id', $row)) {
         if ($value = $row['civicrm_case_status_id']) {
-          $rows[$rowNum]['civicrm_case_status_id'] = $this->case_statuses[$value];
+          $rows[$rowNum]['civicrm_case_status_id'] = $this->caseStatuses[$value];
 
           $entryFound = TRUE;
         }
       }
       if (array_key_exists('civicrm_case_case_type_id', $row)) {
         if ($value = str_replace(CRM_Core_DAO::VALUE_SEPARATOR, '', $row['civicrm_case_case_type_id'])) {
-          $rows[$rowNum]['civicrm_case_case_type_id'] = $this->case_types[$value];
+          $rows[$rowNum]['civicrm_case_case_type_id'] = $this->caseTypes[$value];
 
           $entryFound = TRUE;
         }
@@ -625,7 +645,7 @@ class CRM_Report_Form_Case_Detail extends CRM_Report_Form {
         if ($value = $row['civicrm_relationship_case_role']) {
           $caseRoles = explode(',', $value);
           foreach ($caseRoles as $num => $caseRole) {
-            $caseRoles[$num] = $this->rel_types[$caseRole];
+            $caseRoles[$num] = $this->relTypes[$caseRole];
           }
           $rows[$rowNum]['civicrm_relationship_case_role'] = implode('; ', $caseRoles);
         }
diff --git a/civicrm/CRM/Report/Form/Case/TimeSpent.php b/civicrm/CRM/Report/Form/Case/TimeSpent.php
index fb929b7a04dae4e0c751da0cd29f6fb5e49e7935..95e1de4aa1e24e6e3379fcf15b8112f3f714eb36 100644
--- a/civicrm/CRM/Report/Form/Case/TimeSpent.php
+++ b/civicrm/CRM/Report/Form/Case/TimeSpent.php
@@ -16,6 +16,30 @@
  */
 class CRM_Report_Form_Case_TimeSpent extends CRM_Report_Form {
 
+  /**
+   * @var array
+   * @internal
+   */
+  public $activityTypes;
+
+  /**
+   * @var array
+   * @internal
+   */
+  public $activityStatuses;
+
+  /**
+   * @var array
+   * @internal
+   */
+  public $has_grouping;
+
+  /**
+   * @var array
+   * @internal
+   */
+  public $has_activity_type;
+
   /**
    * Class constructor.
    */
diff --git a/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php b/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php
index 4003b58cee10960cf0ffe74b01949a1ac8fb3d8d..165d9bf973dbe0cf53e84186eb1a299e6077ce21 100644
--- a/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php
+++ b/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php
@@ -20,6 +20,30 @@ class CRM_Report_Form_Contribute_HouseholdSummary extends CRM_Report_Form {
 
   protected $_summary = NULL;
 
+  /**
+   * @var array
+   * @internal
+   */
+  public $relationTypes;
+
+  /**
+   * @var int
+   * @internal
+   */
+  public $relationshipId;
+
+  /**
+   * @var string
+   * @internal
+   */
+  public $householdContact;
+
+  /**
+   * @var string
+   * @internal
+   */
+  public $otherContact;
+
   /**
    * Class constructor.
    */
@@ -407,6 +431,8 @@ class CRM_Report_Form_Contribute_HouseholdSummary extends CRM_Report_Form {
    */
   public function alterDisplay(&$rows) {
     $type = substr($this->_params['relationship_type_id_value'], -3);
+    $previousHousehold = NULL;
+    $previousContact = NULL;
 
     $entryFound = FALSE;
     $flagHousehold = $flagContact = 0;
@@ -426,16 +452,16 @@ class CRM_Report_Form_Contribute_HouseholdSummary extends CRM_Report_Form {
       ) {
         if ($value = $row['civicrm_contact_household_household_name']) {
           if ($rowNum == 0) {
-            $priviousHousehold = $value;
+            $previousHousehold = $value;
           }
           else {
-            if ($priviousHousehold == $value) {
+            if ($previousHousehold == $value) {
               $flagHousehold = 1;
-              $priviousHousehold = $value;
+              $previousHousehold = $value;
             }
             else {
               $flagHousehold = 0;
-              $priviousHousehold = $value;
+              $previousHousehold = $value;
             }
           }
 
@@ -460,16 +486,16 @@ class CRM_Report_Form_Contribute_HouseholdSummary extends CRM_Report_Form {
       ) {
         if ($value = $row['civicrm_contact_id']) {
           if ($rowNum == 0) {
-            $priviousContact = $value;
+            $previousContact = $value;
           }
           else {
-            if ($priviousContact == $value) {
+            if ($previousContact == $value) {
               $flagContact = 1;
-              $priviousContact = $value;
+              $previousContact = $value;
             }
             else {
               $flagContact = 0;
-              $priviousContact = $value;
+              $previousContact = $value;
             }
           }
 
diff --git a/civicrm/CRM/Report/Form/Contribute/Summary.php b/civicrm/CRM/Report/Form/Contribute/Summary.php
index 32b51586568df681d3bd23b4c47fd09360c1e149..dfedb6043bca823d957c4a18bcc38d64c2047b8e 100644
--- a/civicrm/CRM/Report/Form/Contribute/Summary.php
+++ b/civicrm/CRM/Report/Form/Contribute/Summary.php
@@ -481,11 +481,7 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form {
     $errors = $self->customDataFormRule($fields, $ignoreFields);
 
     if (empty($fields['fields']['total_amount'])) {
-      foreach ([
-        'total_count_value',
-        'total_sum_value',
-        'total_avg_value',
-      ] as $val) {
+      foreach (['total_count_value', 'total_sum_value', 'total_avg_value'] as $val) {
         if (!empty($fields[$val])) {
           $errors[$val] = ts("Please select the Amount Statistics");
         }
diff --git a/civicrm/CRM/Report/Form/Contribute/TopDonor.php b/civicrm/CRM/Report/Form/Contribute/TopDonor.php
index 6d2f7beb754a2cd5661c4f6aef77421246b195db..3ad31bee78fa75b4625c19f5e9a5eff43fbd6cc1 100644
--- a/civicrm/CRM/Report/Form/Contribute/TopDonor.php
+++ b/civicrm/CRM/Report/Form/Contribute/TopDonor.php
@@ -37,6 +37,16 @@ class CRM_Report_Form_Contribute_TopDonor extends CRM_Report_Form {
 
   public $_drilldownReport = ['contribute/detail' => 'Link to Detail Report'];
 
+  /**
+   * @var string
+   */
+  protected $_outerCluase = '';
+
+  /**
+   * @var string
+   */
+  protected $_groupLimit = '';
+
   /**
    */
   public function __construct() {
@@ -216,11 +226,7 @@ class CRM_Report_Form_Contribute_TopDonor extends CRM_Report_Form {
     $op = $fields['total_range_op'] ?? NULL;
     $val = $fields['total_range_value'] ?? NULL;
 
-    if (!in_array($op, [
-      'eq',
-      'lte',
-    ])
-    ) {
+    if (!in_array($op, ['eq', 'lte'])) {
       $errors['total_range_op'] = ts("Please select 'Is equal to' OR 'Is Less than or equal to' operator");
     }
 
@@ -247,7 +253,7 @@ class CRM_Report_Form_Contribute_TopDonor extends CRM_Report_Form {
 
   public function where() {
     $clauses = [];
-    $this->_tempClause = $this->_outerCluase = $this->_groupLimit = '';
+    $this->_outerCluase = $this->_groupLimit = '';
     foreach ($this->_columns as $tableName => $table) {
       if (array_key_exists('filters', $table)) {
         foreach ($table['filters'] as $fieldName => $field) {
diff --git a/civicrm/CRM/Report/Form/Mailing/Detail.php b/civicrm/CRM/Report/Form/Mailing/Detail.php
index 52df57c7a7d0a9f39746fdac5191743d4c8e65fc..045e18b79bfbc9d97754ee8022dae7f68755c9a2 100644
--- a/civicrm/CRM/Report/Form/Mailing/Detail.php
+++ b/civicrm/CRM/Report/Form/Mailing/Detail.php
@@ -271,12 +271,7 @@ class CRM_Report_Form_Mailing_Detail extends CRM_Report_Form {
           if (!empty($field['required']) ||
             !empty($this->_params['fields'][$fieldName])
           ) {
-            if (in_array($fieldName, [
-              'unsubscribe_id',
-              'optout_id',
-              'forward_id',
-              'reply_id',
-            ])) {
+            if (in_array($fieldName, ['unsubscribe_id', 'optout_id', 'forward_id', 'reply_id'])) {
               $select[] = "IF({$field['dbAlias']} IS NULL, 'No', 'Yes') as {$tableName}_{$fieldName}";
               $this->_columnHeaders["{$tableName}_{$fieldName}"]['type'] = $field['type'] ?? NULL;
               $this->_columnHeaders["{$tableName}_{$fieldName}"]['no_display'] = $field['no_display'] ?? NULL;
diff --git a/civicrm/CRM/Report/Form/Mailing/Summary.php b/civicrm/CRM/Report/Form/Mailing/Summary.php
index 7125920631a5ad9728175397c5c0db8cb2b77ebc..d1f4cc08f8bea51efae3d3865039f491269dad77 100644
--- a/civicrm/CRM/Report/Form/Mailing/Summary.php
+++ b/civicrm/CRM/Report/Form/Mailing/Summary.php
@@ -82,6 +82,11 @@ class CRM_Report_Form_Mailing_Summary extends CRM_Report_Form {
           'type' => CRM_Utils_Type::T_STRING,
           'operator' => 'like',
         ],
+        'is_archived' => [
+          'name' => 'is_archived',
+          'title' => ts('Is archived?'),
+          'type' => CRM_Utils_Type::T_BOOLEAN,
+        ],
       ],
       'order_bys' => [
         'mailing_name' => [
diff --git a/civicrm/CRM/Report/Form/Member/Detail.php b/civicrm/CRM/Report/Form/Member/Detail.php
index 748b644f964ed28d3ca140c58ab8a232a11ec2d8..39807bf23be00deca04116b161831ba3a1a2062c 100644
--- a/civicrm/CRM/Report/Form/Member/Detail.php
+++ b/civicrm/CRM/Report/Form/Member/Detail.php
@@ -16,7 +16,7 @@
  */
 class CRM_Report_Form_Member_Detail extends CRM_Report_Form {
 
-  protected $_summary = NULL;
+  protected $_summary;
 
   protected $_customGroupExtends = [
     'Membership',
@@ -27,7 +27,7 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form {
     'Organization',
   ];
 
-  protected $_customGroupGroupBy = FALSE;
+  protected $_customGroupGroupBy;
 
   /**
    * This report has not been optimised for group filtering.
@@ -90,7 +90,7 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form {
             'title' => ts('Primary/Inherited?'),
             'default' => TRUE,
           ],
-          'join_date' => [
+          'membership_join_date' => [
             'title' => ts('Member Since'),
             'default' => TRUE,
           ],
@@ -197,13 +197,13 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form {
           'financial_type_id' => [
             'title' => ts('Financial Type'),
             'operatorType' => CRM_Report_Form::OP_MULTISELECT,
-            'options' => CRM_Contribute_PseudoConstant::financialType(),
+            'options' => CRM_Contribute_BAO_Contribution::buildOptions('financial_type_id', 'search'),
             'type' => CRM_Utils_Type::T_INT,
           ],
           'payment_instrument_id' => [
             'title' => ts('Payment Type'),
             'operatorType' => CRM_Report_Form::OP_MULTISELECT,
-            'options' => CRM_Contribute_PseudoConstant::paymentInstrument(),
+            'options' => CRM_Contribute_BAO_Contribution::buildOptions('payment_instrument_id', 'search'),
             'type' => CRM_Utils_Type::T_INT,
           ],
           'currency' => [
@@ -270,7 +270,7 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form {
     parent::__construct();
   }
 
-  public function preProcess() {
+  public function preProcess(): void {
     $this->assign('reportTitle', ts('Membership Detail Report'));
     parent::preProcess();
   }
@@ -316,7 +316,7 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form {
                  ON ({$this->_aliases['civicrm_membership']}.id = cmp.membership_id";
       $this->_from .= $groupedBy ? "
                  AND cmp.id = (SELECT MAX(id) FROM civicrm_membership_payment WHERE civicrm_membership_payment.membership_id = {$this->_aliases['civicrm_membership']}.id))"
-                 : ")";
+                 : ')';
       $this->_from .= "
              LEFT JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']}
                  ON cmp.contribution_id={$this->_aliases['civicrm_contribution']}.id\n";
@@ -397,7 +397,7 @@ HERESQL;
     }
   }
 
-  public function getOperationPair($type = 'string', $fieldName = NULL) {
+  public function getOperationPair($type = 'string', $fieldName = NULL): array {
     //re-name IS NULL/IS NOT NULL for clarity
     if ($fieldName === 'owner_membership_id') {
       $result = [];
@@ -468,12 +468,12 @@ HERESQL;
         $rows[$rowNum]['civicrm_contact_sort_name'] &&
         array_key_exists('civicrm_contact_id', $row)
       ) {
-        $url = CRM_Utils_System::url("civicrm/contact/view",
+        $url = CRM_Utils_System::url('civicrm/contact/view',
           'reset=1&cid=' . $row['civicrm_contact_id'],
           $this->_absoluteUrl
         );
         $rows[$rowNum]['civicrm_contact_sort_name_link'] = $url;
-        $rows[$rowNum]['civicrm_contact_sort_name_hover'] = ts("View Contact Summary for this Contact.");
+        $rows[$rowNum]['civicrm_contact_sort_name_hover'] = ts('View Contact Summary for this Contact.');
         $entryFound = TRUE;
       }
 
diff --git a/civicrm/CRM/Report/Form/Membership/Summary.php b/civicrm/CRM/Report/Form/Membership/Summary.php
index 68fc16695cf57f866d5578c00bd42f0350278192..9ce592b5d9dbdacae5583fd7db02dc39bb75db48 100644
--- a/civicrm/CRM/Report/Form/Membership/Summary.php
+++ b/civicrm/CRM/Report/Form/Membership/Summary.php
@@ -319,11 +319,7 @@ LEFT  JOIN civicrm_contribution  {$this->_aliases['civicrm_contribution']}
     $this->assign('statistics', $this->statistics($rows));
 
     if (!empty($this->_params['charts'])) {
-      foreach ([
-        'receive_date',
-        $this->_interval,
-        'value',
-      ] as $ignore) {
+      foreach (['receive_date', $this->_interval, 'value'] as $ignore) {
         unset($graphRows[$ignore][$count - 1]);
       }
 
diff --git a/civicrm/CRM/Report/Form/Pledge/Pbnp.php b/civicrm/CRM/Report/Form/Pledge/Pbnp.php
index e0e6f9f1175f882977dc14e592ef4e2417893c6a..bcf3381045f0195b3f8ca4a190f2aa84fbb272d2 100644
--- a/civicrm/CRM/Report/Form/Pledge/Pbnp.php
+++ b/civicrm/CRM/Report/Form/Pledge/Pbnp.php
@@ -198,11 +198,7 @@ class CRM_Report_Form_Pledge_Pbnp extends CRM_Report_Form {
 
     $allStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
     $pendingStatus = array_search('Pending', $allStatus);
-    foreach ([
-      'Pending',
-      'In Progress',
-      'Overdue',
-    ] as $statusKey) {
+    foreach (['Pending', 'In Progress', 'Overdue'] as $statusKey) {
       if ($key = CRM_Utils_Array::key($statusKey, $allStatus)) {
         $unpaidStatus[] = $key;
       }
diff --git a/civicrm/CRM/Report/Page/Instance.php b/civicrm/CRM/Report/Page/Instance.php
index a2dfca995ec952f770780ab47805cdcb08812191..3bb97b45594a4486a4b9a59a8812eac8f2d9c594 100644
--- a/civicrm/CRM/Report/Page/Instance.php
+++ b/civicrm/CRM/Report/Page/Instance.php
@@ -58,7 +58,7 @@ class CRM_Report_Page_Instance extends CRM_Core_Page {
       $templateInfo['name'] = $reportClass;
     }
 
-    if (strstr($templateInfo['name'], '_Form') || !is_null($reportClass)) {
+    if (str_contains($templateInfo['name'], '_Form') || !is_null($reportClass)) {
       $instanceInfo = [];
       CRM_Report_BAO_ReportInstance::retrieve(['id' => $instanceId], $instanceInfo);
 
diff --git a/civicrm/CRM/Report/Page/Report.php b/civicrm/CRM/Report/Page/Report.php
index 25c75264e3147caf588e0a1f1fafd5a1f1dd79a8..e0924d22838b5ac37ba13a87f81f30a3492e2a9c 100644
--- a/civicrm/CRM/Report/Page/Report.php
+++ b/civicrm/CRM/Report/Page/Report.php
@@ -44,7 +44,7 @@ class CRM_Report_Page_Report extends CRM_Core_Page {
       $templateInfo['name'] = $reportClass;
     }
 
-    if (strstr(CRM_Utils_Array::value('name', $templateInfo), '_Form') || !is_null($reportClass)) {
+    if (str_contains($templateInfo['name'] ?? '', '_Form') || !is_null($reportClass)) {
       CRM_Utils_System::setTitle(ts('%1 - Template', [1 => $templateInfo['label']]));
       $this->assign('reportTitle', $templateInfo['label']);
 
diff --git a/civicrm/CRM/Report/Utils/Get.php b/civicrm/CRM/Report/Utils/Get.php
index 58ce4ed313e5772ab09977a7abd997fc69a5f9ee..34f29f2d385a3aeac11462e8ee1f20d9a70069a8 100644
--- a/civicrm/CRM/Report/Utils/Get.php
+++ b/civicrm/CRM/Report/Utils/Get.php
@@ -190,10 +190,7 @@ class CRM_Report_Utils_Get {
    */
   public static function processChart(&$defaults) {
     $chartType = $_GET["charts"] ?? NULL;
-    if (in_array($chartType, [
-      'barChart',
-      'pieChart',
-    ])) {
+    if (in_array($chartType, ['barChart', 'pieChart'])) {
       $defaults["charts"] = $chartType;
     }
   }
diff --git a/civicrm/CRM/Report/Utils/Report.php b/civicrm/CRM/Report/Utils/Report.php
index 2f91c687b88caf8d9e26b613a7d957c1613f3247..33e5f7342903e7c054cf26a09302ec57c8bcee85 100644
--- a/civicrm/CRM/Report/Utils/Report.php
+++ b/civicrm/CRM/Report/Utils/Report.php
@@ -403,7 +403,7 @@ WHERE  inst.report_id = %1";
       $templateInfo = CRM_Core_OptionGroup::getRowValues('report_template', $optionVal, 'value');
       $obj = new CRM_Report_Page_Instance();
       $is_error = 0;
-      if (strstr(CRM_Utils_Array::value('name', $templateInfo), '_Form')) {
+      if (str_contains($templateInfo['name'] ?? '', '_Form')) {
         $instanceInfo = [];
         CRM_Report_BAO_ReportInstance::retrieve(['id' => $instanceId], $instanceInfo);
 
diff --git a/civicrm/CRM/SMS/Form/Group.php b/civicrm/CRM/SMS/Form/Group.php
index 782abef8463e981af47f3fd0d9c5fad3ac508d5b..897ea179c46a33344739f79fbb4009790483124b 100644
--- a/civicrm/CRM/SMS/Form/Group.php
+++ b/civicrm/CRM/SMS/Form/Group.php
@@ -170,12 +170,7 @@ class CRM_SMS_Form_Group extends CRM_Contact_Form_Task {
 
     $groups = [];
 
-    foreach ([
-      'name',
-      'group_id',
-      'is_sms',
-      'sms_provider_id',
-    ] as $n) {
+    foreach (['name', 'group_id', 'is_sms', 'sms_provider_id'] as $n) {
       if (!empty($values[$n])) {
         $params[$n] = $values[$n];
         if ($n == 'sms_provider_id') {
@@ -237,10 +232,7 @@ class CRM_SMS_Form_Group extends CRM_Contact_Form_Task {
       $mailingTableName = CRM_Mailing_BAO_Mailing::getTableName();
 
       // delete previous includes/excludes, if mailing already existed
-      foreach ([
-        'groups',
-        'mailings',
-      ] as $entity) {
+      foreach (['groups', 'mailings'] as $entity) {
         $mg = new CRM_Mailing_DAO_MailingGroup();
         $mg->mailing_id = $ids['mailing_id'];
         $mg->entity_table = ($entity == 'groups') ? $groupTableName : $mailingTableName;
diff --git a/civicrm/CRM/SMS/Page/Provider.php b/civicrm/CRM/SMS/Page/Provider.php
index cea624e2a1b0ed0f7205012e3ef781c8dc620412..0024d45e2914ec64e8a5feddfb678864e8b5d878 100644
--- a/civicrm/CRM/SMS/Page/Provider.php
+++ b/civicrm/CRM/SMS/Page/Provider.php
@@ -52,13 +52,6 @@ class CRM_SMS_Page_Provider extends CRM_Core_Page_Basic {
     ];
     CRM_Utils_System::appendBreadCrumb($breadCrumb);
 
-    $this->_id = CRM_Utils_Request::retrieve('id', 'String',
-      $this, FALSE, 0
-    );
-    $this->_action = CRM_Utils_Request::retrieve('action', 'String',
-      $this, FALSE, 0
-    );
-
     return parent::run();
   }
 
diff --git a/civicrm/CRM/UF/Form/Field.php b/civicrm/CRM/UF/Form/Field.php
index 053e61c13a26e70b620293d71cda15fe6c8e1429..04a6a0ae3a60c195abf04d94c92396faf97ab2e2 100644
--- a/civicrm/CRM/UF/Form/Field.php
+++ b/civicrm/CRM/UF/Form/Field.php
@@ -578,12 +578,7 @@ class CRM_UF_Form_Field extends CRM_Core_Form {
    *   List of errors to be posted back to the form.
    */
   public static function formRuleSubType($fieldType, $groupType, &$errors) {
-    if (in_array($fieldType, [
-      'Participant',
-      'Contribution',
-      'Membership',
-      'Activity',
-    ])) {
+    if (in_array($fieldType, ['Participant', 'Contribution', 'Membership', 'Activity'])) {
       $individualSubTypes = CRM_Contact_BAO_ContactType::subTypes('Individual');
       foreach ($groupType as $value) {
         if (!in_array($value, $individualSubTypes) &&
@@ -744,12 +739,7 @@ class CRM_UF_Form_Field extends CRM_Core_Form {
       $errors['field_name'] = ts('Please select a field name');
     }
 
-    if ($in_selector && in_array($entityName, [
-      'Contribution',
-      'Participant',
-      'Membership',
-      'Activity',
-    ])
+    if ($in_selector && in_array($entityName, ['Contribution', 'Participant', 'Membership', 'Activity'])
     ) {
       $errors['in_selector'] = ts("'Results Column' cannot be checked for %1 fields.", [1 => $entityName]);
     }
@@ -979,10 +969,8 @@ class CRM_UF_Form_Field extends CRM_Core_Form {
   protected function setMessageIfCountryNotAboveState($fieldName, $locationTypeID, $weight, $ufGroupID) {
     $message = ts('For best results, the Country field should precede the State-Province field in your Profile form. You can use the up and down arrows on field listing page for this profile to change the order of these fields or manually edit weight for Country/State-Province Field.');
 
-    if (in_array($fieldName, [
-      'country',
-      'state_province',
-    ]) && count(CRM_Core_Config::singleton()->countryLimit) > 1
+    if (in_array($fieldName, ['country', 'state_province']) &&
+      count(CRM_Core_Config::singleton()->countryLimit) > 1
     ) {
       // get state or country field weight if exists
       $ufFieldDAO = new CRM_Core_DAO_UFField();
diff --git a/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php b/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php
index 22ae1f1098a7e11c4d0468b9b116f3380325ae90..25a286982e4a283ff505686fd2cbb1a48b4dfc8d 100644
--- a/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php
+++ b/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php
@@ -368,6 +368,15 @@ class CRM_Upgrade_Incremental_MessageTemplates {
           ['name' => 'event_offline_receipt', 'type' => 'subject'],
         ],
       ],
+      [
+        'version' => '5.69.alpha1',
+        'upgrade_descriptor' => ts('Significant changes to the template and available variables. Text version is discontinued'),
+        'templates' => [
+          ['name' => 'membership_online_receipt', 'type' => 'text'],
+          ['name' => 'membership_online_receipt', 'type' => 'html'],
+          ['name' => 'membership_online_receipt', 'type' => 'subject'],
+        ],
+      ],
     ];
   }
 
@@ -519,10 +528,10 @@ class CRM_Upgrade_Incremental_MessageTemplates {
   /**
    * Update message templates.
    */
-  public function updateTemplates() {
+  public function updateTemplates(): void {
     $templates = $this->getTemplatesToUpdate();
     foreach ($templates as $template) {
-      $workFlowID = CRM_Core_DAO::singleValueQuery("SELECT MAX(id) as id FROM civicrm_option_value WHERE name = %1", [
+      $workFlowID = CRM_Core_DAO::singleValueQuery('SELECT MAX(id) as id FROM civicrm_option_value WHERE name = %1', [
         1 => [$template['name'], 'String'],
       ]);
       $content = file_get_contents(\Civi::paths()->getPath('[civicrm.root]/xml/templates/message_templates/' . $template['name'] . '_' . $template['type'] . '.tpl'));
diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyNine.php b/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyNine.php
new file mode 100644
index 0000000000000000000000000000000000000000..9d6dee7f5d348d3201f67bc25df105d6f959abbf
--- /dev/null
+++ b/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyNine.php
@@ -0,0 +1,42 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ * Upgrade logic for the 5.69.x series.
+ *
+ * Each minor version in the series is handled by either a `5.69.x.mysql.tpl` file,
+ * or a function in this class named `upgrade_5_69_x`.
+ * If only a .tpl file exists for a version, it will be run automatically.
+ * If the function exists, it must explicitly add the 'runSql' task if there is a corresponding .mysql.tpl.
+ *
+ * This class may also implement `setPreUpgradeMessage()` and `setPostUpgradeMessage()` functions.
+ */
+class CRM_Upgrade_Incremental_php_FiveSixtyNine extends CRM_Upgrade_Incremental_Base {
+
+  /**
+   * Upgrade step; adds tasks including 'runSql'.
+   *
+   * @param string $rev
+   *   The version number matching this function name
+   */
+  public function upgrade_5_69_alpha1($rev): void {
+    $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev);
+    $this->addTask('Add is_show_calendar_links column to Event table', 'addColumn', 'civicrm_event', 'is_show_calendar_links',
+      'tinyint NOT NULL DEFAULT 1 COMMENT "If true, calendar links are shown for this event"');
+    $this->addTask('fix crmDate for installs that existed pre-5.43 - start date',
+      'updatePrintLabelToken', 'event.start_date|crmDate:"%B %E%f}"', 'event.start_date|crmDate:\\\"%B %E%f\\\"}"', $rev
+    );
+    $this->addTask('fix crmDate for installs that existed pre-5.43 - end date',
+      'updatePrintLabelToken', 'event.end_date|crmDate:"%B %E%f}"', 'event.end_date|crmDate:\\\"%B %E%f\\\"}"', $rev
+    );
+  }
+
+}
diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.69.alpha1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.69.alpha1.mysql.tpl
new file mode 100644
index 0000000000000000000000000000000000000000..ef02c7c6417ebf0ea67eaf779115ecb14874d11e
--- /dev/null
+++ b/civicrm/CRM/Upgrade/Incremental/sql/5.69.alpha1.mysql.tpl
@@ -0,0 +1,12 @@
+{* file to handle db changes in 5.69.alpha1 during upgrade *}
+-- Fix default for any custom fields of data-type float to be NULL rather than empty string --
+UPDATE civicrm_custom_field SET default_value = NULL WHERE default_value = '' AND data_type = 'Float';
+
+-- Add missing provinces for Zambia
+SELECT @country_id := id FROM civicrm_country WHERE name = 'Zambia';
+INSERT IGNORE INTO `civicrm_state_province` (`country_id`, `abbreviation`, `name`) VALUES (@country_id, 'C', 'Central');
+INSERT IGNORE INTO `civicrm_state_province` (`country_id`, `abbreviation`, `name`) VALUES (@country_id, 'E', 'Eastern');
+INSERT IGNORE INTO `civicrm_state_province` (`country_id`, `abbreviation`, `name`) VALUES (@country_id, 'M', 'Muchinga');
+INSERT IGNORE INTO `civicrm_state_province` (`country_id`, `abbreviation`, `name`) VALUES (@country_id, 'N', 'Northern');
+INSERT IGNORE INTO `civicrm_state_province` (`country_id`, `abbreviation`, `name`) VALUES (@country_id, 'S', 'Southern');
+INSERT IGNORE INTO `civicrm_state_province` (`country_id`, `abbreviation`, `name`) VALUES (@country_id, 'W', 'Western');
diff --git a/civicrm/CRM/Utils/Address.php b/civicrm/CRM/Utils/Address.php
index aa0703e518be23373d03daef1459ad3fab4510a4..2b79d40a599bc00fa777718797b5509ed2ebd09c 100644
--- a/civicrm/CRM/Utils/Address.php
+++ b/civicrm/CRM/Utils/Address.php
@@ -451,17 +451,17 @@ class CRM_Utils_Address {
    * Extract the billing fields from the form submission and format them for display.
    *
    * @param array $params
-   * @param int $billingLocationTypeID
    *
    * @return string
    */
-  public static function getFormattedBillingAddressFieldsFromParameters($params, $billingLocationTypeID) {
+  public static function getFormattedBillingAddressFieldsFromParameters(array $params): string {
+    $billingLocationTypeID = CRM_Core_BAO_LocationType::getBilling();
     $addressParts = [
-      "street_address" => "billing_street_address-{$billingLocationTypeID}",
-      "city" => "billing_city-{$billingLocationTypeID}",
-      "postal_code" => "billing_postal_code-{$billingLocationTypeID}",
-      "state_province" => "state_province-{$billingLocationTypeID}",
-      "country" => "country-{$billingLocationTypeID}",
+      'street_address' => "billing_street_address-{$billingLocationTypeID}",
+      'city' => "billing_city-{$billingLocationTypeID}",
+      'postal_code' => "billing_postal_code-{$billingLocationTypeID}",
+      'state_province' => "state_province-{$billingLocationTypeID}",
+      'country' => "country-{$billingLocationTypeID}",
     ];
 
     $addressFields = [];
@@ -478,12 +478,12 @@ class CRM_Utils_Address {
           $value = $params[$alternateName];
         }
       }
-      if (is_numeric($value) && ($name == 'state_province' || $name == 'country')) {
-        if ($name == 'state_province') {
+      if (is_numeric($value) && ($name === 'state_province' || $name === 'country')) {
+        if ($name === 'state_province') {
           $addressFields[$name] = CRM_Core_PseudoConstant::stateProvinceAbbreviation($value);
           $addressFields[$name . '_name'] = CRM_Core_PseudoConstant::stateProvince($value);
         }
-        if ($name == 'country') {
+        if ($name === 'country') {
           $addressFields[$name] = CRM_Core_PseudoConstant::countryIsoCode($value);
         }
       }
@@ -491,7 +491,7 @@ class CRM_Utils_Address {
         $addressFields[$name] = $value;
       }
     }
-    return CRM_Utils_Address::format($addressFields);
+    return (string) CRM_Utils_Address::format($addressFields);
   }
 
   /**
diff --git a/civicrm/CRM/Utils/Cache.php b/civicrm/CRM/Utils/Cache.php
index c35c23fe7d6a2ebb93f4035ac79563cae5434522..bb4bf4560b7bef048a64ed30031cae902a4d1171 100644
--- a/civicrm/CRM/Utils/Cache.php
+++ b/civicrm/CRM/Utils/Cache.php
@@ -168,6 +168,7 @@ class CRM_Utils_Cache {
   public static function create($params = []) {
     $types = (array) $params['type'];
 
+    // FIXME: When would name ever be empty?
     if (!empty($params['name'])) {
       $params['name'] = self::cleanKey($params['name']);
     }
@@ -183,26 +184,30 @@ class CRM_Utils_Cache {
             if (!empty($params['withArray'])) {
               $cache = $params['withArray'] === 'fast' ? new CRM_Utils_Cache_FastArrayDecorator($cache) : new CRM_Utils_Cache_ArrayDecorator($cache);
             }
-            return $cache;
+            break 2;
           }
           break;
 
         case 'SqlGroup':
           if (defined('CIVICRM_DSN') && CIVICRM_DSN) {
-            return new CRM_Utils_Cache_SqlGroup([
+            $cache = new CRM_Utils_Cache_SqlGroup([
               'group' => $params['name'],
               'prefetch' => $params['prefetch'] ?? FALSE,
             ]);
+            break 2;
           }
           break;
 
         case 'Arraycache':
         case 'ArrayCache':
-          return new CRM_Utils_Cache_ArrayCache([]);
+          $cache = new CRM_Utils_Cache_ArrayCache([]);
+          break 2;
 
       }
     }
-
+    if (isset($cache)) {
+      return new CRM_Utils_Cache_CacheWrapper($cache, $params['name'] ?? NULL);
+    }
     throw new CRM_Core_Exception("Failed to instantiate cache. No supported cache type found. " . print_r($params, 1));
   }
 
diff --git a/civicrm/CRM/Utils/Cache/CacheWrapper.php b/civicrm/CRM/Utils/Cache/CacheWrapper.php
new file mode 100644
index 0000000000000000000000000000000000000000..82e7e47c82ee3917c610c9163fa87a8fcf03e4c7
--- /dev/null
+++ b/civicrm/CRM/Utils/Cache/CacheWrapper.php
@@ -0,0 +1,106 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC https://civicrm.org/licensing
+ */
+
+/**
+ */
+class CRM_Utils_Cache_CacheWrapper implements CRM_Utils_Cache_Interface {
+
+  /**
+   * @var string
+   */
+  private $cacheName;
+
+  /**
+   * @var CRM_Utils_Cache_Interface
+   */
+  private $delegate;
+
+  /**
+   * @param \CRM_Utils_Cache_Interface $delegate
+   * @param string $cacheName
+   */
+  public function __construct(\CRM_Utils_Cache_Interface $delegate, $cacheName) {
+    $this->delegate = $delegate;
+    $this->cacheName = $cacheName;
+  }
+
+  public function getMultiple($keys, $default = NULL) {
+    return $this->delegate->getMultiple($keys, $default);
+  }
+
+  public function setMultiple($values, $ttl = NULL) {
+    return $this->delegate->setMultiple($values, $ttl);
+  }
+
+  public function deleteMultiple($keys) {
+    $this->dispatchClearEvent($keys);
+    return $this->delegate->deleteMultiple($keys);
+  }
+
+  public function set($key, $value, $ttl = NULL) {
+    return $this->delegate->set($key, $value, $ttl);
+  }
+
+  public function get($key, $default = NULL) {
+    return $this->delegate->get($key, $default);
+  }
+
+  public function delete($key) {
+    $this->dispatchClearEvent([$key]);
+    return $this->delegate->delete($key);
+  }
+
+  /**
+   * @deprecated
+   */
+  public function flush() {
+    return $this->clear();
+  }
+
+  public function clear() {
+    $this->dispatchClearEvent();
+    return $this->delegate->clear();
+  }
+
+  public function has($key) {
+    return $this->delegate->has($key);
+  }
+
+  /**
+   * @param string $key
+   * @return int|null
+   */
+  public function getExpires($key) {
+    if (method_exists($this->delegate, 'getExpires')) {
+      return $this->delegate->getExpires($key);
+    }
+    return NULL;
+  }
+
+  private function dispatchClearEvent($keys = NULL) {
+    // FIXME: When would name ever be empty?
+    if ($this->cacheName) {
+      $hookParams = [
+        'cacheName' => $this->cacheName,
+        'items' => $keys,
+      ];
+      $event = \Civi\Core\Event\GenericHookEvent::create($hookParams);
+      Civi::dispatcher()->dispatch('civi.cache.clear', $event);
+    }
+  }
+
+}
diff --git a/civicrm/CRM/Utils/Cache/SqlGroup.php b/civicrm/CRM/Utils/Cache/SqlGroup.php
index 97df20cb12745b62569389eeb68e0f375c2297f4..dbc24d8772f0f18dba7ad006c29dc07b60feb709 100644
--- a/civicrm/CRM/Utils/Cache/SqlGroup.php
+++ b/civicrm/CRM/Utils/Cache/SqlGroup.php
@@ -30,7 +30,7 @@ class CRM_Utils_Cache_SqlGroup implements CRM_Utils_Cache_Interface {
   use CRM_Utils_Cache_NaiveMultipleTrait;
 
   /**
-   * The host name of the memcached server.
+   * Name of the cache group.
    *
    * @var string
    */
diff --git a/civicrm/CRM/Utils/Chart.php b/civicrm/CRM/Utils/Chart.php
index ff74cf8fbfdfe6564921801b0597874e17989e43..516f1d9211d73b9a3978123281e17da29e126cc5 100644
--- a/civicrm/CRM/Utils/Chart.php
+++ b/civicrm/CRM/Utils/Chart.php
@@ -196,11 +196,7 @@ class CRM_Utils_Chart {
     $chartData['yname'] = $rows['yname'] ?? NULL;
 
     // carry some chart params if pass.
-    foreach ([
-      'xSize',
-      'ySize',
-      'divName',
-    ] as $f) {
+    foreach (['xSize', 'ySize', 'divName'] as $f) {
       if (!empty($rows[$f])) {
         $chartData[$f] = $rows[$f];
       }
@@ -236,11 +232,7 @@ class CRM_Utils_Chart {
     }
 
     // carry some chart params if pass.
-    foreach ([
-      'xSize',
-      'ySize',
-      'divName',
-    ] as $f) {
+    foreach (['xSize', 'ySize', 'divName'] as $f) {
       if (!empty($rows[$f])) {
         $chartData[$f] = $rows[$f];
       }
diff --git a/civicrm/CRM/Utils/Check/Component/Cms.php b/civicrm/CRM/Utils/Check/Component/Cms.php
index 1c4c7a41dd237ee0b001bfe395d3590dff7116eb..68e737c4639f9779f310554a6396fdc6542456ae 100644
--- a/civicrm/CRM/Utils/Check/Component/Cms.php
+++ b/civicrm/CRM/Utils/Check/Component/Cms.php
@@ -16,6 +16,45 @@
  */
 class CRM_Utils_Check_Component_Cms extends CRM_Utils_Check_Component {
 
+  /**
+   * For sites running from Composer, ensure public assets have been correctly installed.
+   *
+   * @return CRM_Utils_Check_Message[]
+   */
+  public static function checkPublicAssets(): array {
+    $checks = [];
+    $assetDir = $GLOBALS['civicrm_asset_map']['civicrm/civicrm-core']['dest'] ?? NULL;
+    // No asset directory so this is not a composer-based install
+    if (!$assetDir) {
+      return [];
+    }
+    $errorMsg = NULL;
+    $versionFile = $assetDir . '/js/version.json';
+    if (!file_exists($versionFile)) {
+      $errorMsg = ts('Assets missing from public web directory.');
+    }
+    else {
+      $currentVersion = CRM_Utils_System::version();
+      $assetVersion = json_decode(file_get_contents($versionFile), TRUE);
+      if ($assetVersion !== $currentVersion) {
+        $errorMsg = ts('Wrong version of assets in public web directory: expected %1 but found %2.', [1 => $currentVersion, 2 => $assetVersion]);
+      }
+    }
+    if ($errorMsg) {
+      $checks[] = new CRM_Utils_Check_Message(
+        __FUNCTION__,
+        "$errorMsg " .
+          ts('Use the command %1 to resolve.', [1 => '<code>composer civicrm:publish</code>']) .
+          ' ' .
+          CRM_Utils_System::docURL2('sysadmin/upgrade/drupal8/#additional-cleanup'),
+        ts('Public Assets Not Published'),
+        \Psr\Log\LogLevel::ERROR,
+        'fa-code'
+      );
+    }
+    return $checks;
+  }
+
   /**
    * For sites running in WordPress, make sure the configured base page exists.
    *
@@ -161,4 +200,31 @@ class CRM_Utils_Check_Component_Cms extends CRM_Utils_Check_Component {
     return (int) ($basePage->post_status == 'publish');
   }
 
+  /**
+   * Check if we created unique index on civicrm_uf_match (uf_id,domain_id)
+   *
+   * @return CRM_Utils_Check_Message[]
+   */
+  public static function checkUfMatchUnique(): array {
+    $checks = [];
+
+    if (CRM_Core_BAO_UFMatch::tryToAddUniqueIndexOnUfId()) {
+      // Already done. Success!
+      return $checks;
+    }
+
+    // Your DB has multiple uf_match records! Bad
+    $checks[] = new CRM_Utils_Check_Message(
+      __FUNCTION__,
+      ts('You have multiple records with the same uf_id in civicrm_uf_match. You need to manually fix this in the database so that uf_id is unique') .
+      ' ' .
+      CRM_Utils_System::docURL2('sysadmin/upgrade/todo/#todo'),
+      ts('Duplicate records in UFMatch'),
+      \Psr\Log\LogLevel::ERROR,
+      'fa-database'
+    );
+
+    return $checks;
+  }
+
 }
diff --git a/civicrm/CRM/Utils/Check/Component/Env.php b/civicrm/CRM/Utils/Check/Component/Env.php
index f0a88a71624ae612c9e892e4ea6bab6da85e1708..d37a0ce6cb9db4764a1d52b6089cfe4621d2057c 100644
--- a/civicrm/CRM/Utils/Check/Component/Env.php
+++ b/civicrm/CRM/Utils/Check/Component/Env.php
@@ -1127,4 +1127,54 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component {
     return $messages;
   }
 
+  public function checkForMultipleL10NDirs() {
+    $messages = [];
+    $dirs = [];
+
+    // This is what civi thinks is the current l10n path.
+    // Even if the site is currently en_US, we still want to do this check
+    // since they could change the language later.
+    $current_l10n = self::normalizePath(\Civi::Paths()->getPath('[civicrm.l10n]/'));
+    if (is_dir($current_l10n)) {
+      // use array keys instead of values to automatically dedupe paths
+      $dirs[$current_l10n] = 1;
+    }
+
+    // check the traditional path under civicrm_root
+    $traditional = self::normalizePath(\Civi::Paths()->getPath('[civicrm.root]/l10n'));
+    if (is_dir($traditional)) {
+      $dirs[$traditional] = 1;
+    }
+
+    $private = self::normalizePath(\Civi::Paths()->getPath('[civicrm.private]/l10n'));
+    if (is_dir($private)) {
+      $dirs[$private] = 1;
+    }
+
+    // @todo where else to check? CIVICRM_L10N_BASEDIR is covered by [civicrm.l10n] above.
+
+    if (count($dirs) > 1) {
+      $dirlist = '';
+      foreach (array_keys($dirs) as $dir) {
+        $dirlist .= '<li>' . htmlspecialchars($dir) . '</li>';
+      }
+      $messages[] = new CRM_Utils_Check_Message(
+        __FUNCTION__,
+        ts('There are multiple l10n directories, listed below. The one that appears to be in use is %1. You may wish to remove the others to avoid confusion when updating translation files.', [1 => $current_l10n])
+          . '<p><ul>' . $dirlist . '</ul></p>',
+        ts('Multiple l10n Directories'),
+        \Psr\Log\LogLevel::WARNING,
+        'fa-files-o'
+      );
+    }
+    return $messages;
+  }
+
+  /**
+   * Avoid issues with trailing slashes and mixed separators on windows.
+   */
+  private static function normalizePath($path) {
+    return rtrim(str_replace(DIRECTORY_SEPARATOR, '/', $path), '/');
+  }
+
 }
diff --git a/civicrm/CRM/Utils/Check/Component/LocationTypes.php b/civicrm/CRM/Utils/Check/Component/LocationTypes.php
new file mode 100644
index 0000000000000000000000000000000000000000..1a6cf3460bb1e453906627e5a35b5e8316947c1a
--- /dev/null
+++ b/civicrm/CRM/Utils/Check/Component/LocationTypes.php
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+use Psr\Log\LogLevel;
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC https://civicrm.org/licensing
+ */
+class CRM_Utils_Check_Component_LocationTypes extends CRM_Utils_Check_Component {
+
+  /**
+   * Display warning about invalid priceFields
+   *
+   * @return CRM_Utils_Check_Message[]
+   * @throws \CRM_Core_Exception
+   */
+  public function checkPriceFields(): array {
+    $messages = [];
+    if (!CRM_Core_DAO::singleValueQuery('SELECT id FROM civicrm_location_type WHERE is_active = 1 AND is_default = 1')) {
+      $url = CRM_Utils_System::url('civicrm/admin/locationType', [
+        'reset' => 1,
+      ]);
+      $msg = ts('Your site default location type does not exist or is disabled.')
+        . " <a href='$url'>" . ts('Configure location types') . '</a>';
+      $messages[] = new CRM_Utils_Check_Message(
+        __FUNCTION__,
+        $msg,
+        ts('Location Type Misconfiguration'),
+        LogLevel::ERROR,
+        'fa-lock'
+      );
+    }
+    return $messages;
+  }
+
+}
diff --git a/civicrm/CRM/Utils/Check/Component/PriceFields.php b/civicrm/CRM/Utils/Check/Component/PriceFields.php
index b73cc4839365e5ae4d2ff163b529420907b1dfe0..3a3e8da93ff5f6e16f60df804e058ff0125c5646 100644
--- a/civicrm/CRM/Utils/Check/Component/PriceFields.php
+++ b/civicrm/CRM/Utils/Check/Component/PriceFields.php
@@ -10,6 +10,8 @@
  +--------------------------------------------------------------------+
  */
 
+use Psr\Log\LogLevel;
+
 /**
  *
  * @package CRM
@@ -18,15 +20,27 @@
 class CRM_Utils_Check_Component_PriceFields extends CRM_Utils_Check_Component {
 
   /**
-   * Display warning about invalid priceFields
+   * Display warning about invalid priceFields.
+   *
    * @return CRM_Utils_Check_Message[]
    */
-  public function checkPriceFields() {
+  public function checkPriceFields(): array {
     $sql = "SELECT DISTINCT ps.title as ps_title, ps.id as ps_id, psf.label as psf_label
       FROM civicrm_price_set ps
       INNER JOIN civicrm_price_field psf ON psf.price_set_id = ps.id
       INNER JOIN civicrm_price_field_value pfv ON pfv.price_field_id = psf.id
       LEFT JOIN civicrm_financial_type cft ON cft.id = pfv.financial_type_id
+      INNER JOIN civicrm_price_set_entity pse ON entity_table = 'civicrm_contribution_page' AND ps.id = pse.price_set_id
+      INNER JOIN civicrm_contribution_page cp ON cp.id = pse.entity_id AND cp.is_active = 1
+      WHERE cft.id IS NULL OR cft.is_active = 0
+      UNION
+      SELECT DISTINCT ps.title as ps_title, ps.id as ps_id, psf.label as psf_label
+      FROM civicrm_price_set ps
+      INNER JOIN civicrm_price_field psf ON psf.price_set_id = ps.id
+      INNER JOIN civicrm_price_field_value pfv ON pfv.price_field_id = psf.id
+      LEFT JOIN civicrm_financial_type cft ON cft.id = pfv.financial_type_id
+      INNER JOIN civicrm_price_set_entity pse ON entity_table = 'civicrm_event' AND ps.id = pse.price_set_id
+      INNER JOIN civicrm_event ce ON ce.id = pse.entity_id AND ce.is_active = 1
       WHERE cft.id IS NULL OR cft.is_active = 0";
     $dao = CRM_Core_DAO::executeQuery($sql);
     $count = 0;
@@ -51,11 +65,64 @@ class CRM_Utils_Check_Component_PriceFields extends CRM_Utils_Check_Component {
         __FUNCTION__,
        $msg,
        ts('Invalid Price Fields'),
-       \Psr\Log\LogLevel::WARNING,
+       LogLevel::WARNING,
        'fa-lock'
       );
     }
     return $messages;
   }
 
+  /**
+   * Display warning about invalid priceFields.
+   *
+   * @return CRM_Utils_Check_Message[]
+   */
+  public function checkPriceFieldDeductibility(): array {
+    $sql = "SELECT DISTINCT ps.title as ps_title, ps.id as ps_id, psf.label as psf_label
+      FROM civicrm_price_set ps
+      INNER JOIN civicrm_price_field psf ON psf.price_set_id = ps.id
+      INNER JOIN civicrm_price_field_value pfv ON pfv.price_field_id = psf.id
+      LEFT JOIN civicrm_financial_type cft ON cft.id = pfv.financial_type_id
+      INNER JOIN civicrm_price_set_entity pse ON entity_table = 'civicrm_contribution_page' AND ps.id = pse.price_set_id
+      INNER JOIN civicrm_contribution_page cp ON cp.id = pse.entity_id AND cp.is_active = 1
+      WHERE pfv.non_deductible_amount > 0 AND cft.is_deductible = 0
+      UNION
+      SELECT DISTINCT ps.title as ps_title, ps.id as ps_id, psf.label as psf_label
+      FROM civicrm_price_set ps
+      INNER JOIN civicrm_price_field psf ON psf.price_set_id = ps.id
+      INNER JOIN civicrm_price_field_value pfv ON pfv.price_field_id = psf.id
+      LEFT JOIN civicrm_financial_type cft ON cft.id = pfv.financial_type_id
+      INNER JOIN civicrm_price_set_entity pse ON entity_table = 'civicrm_event' AND ps.id = pse.price_set_id
+      INNER JOIN civicrm_event ce ON ce.id = pse.entity_id AND ce.is_active = 1
+      WHERE pfv.non_deductible_amount > 0 AND cft.is_deductible = 0";
+    $dao = CRM_Core_DAO::executeQuery($sql);
+    $count = 0;
+    $html = '';
+    $messages = [];
+    while ($dao->fetch()) {
+      $count++;
+      $url = CRM_Utils_System::url('civicrm/admin/price/field', [
+        'reset' => 1,
+        'action' => 'browse',
+        'sid' => $dao->ps_id,
+      ]);
+      $html .= "<tr><td>$dao->ps_title</td><td>$dao->psf_label</td><td><a href='$url'>" . ts('View Price Set Fields') . '</a></td></tr>';
+    }
+    if ($count > 0) {
+      $msg = '<p>' . ts('The following Price Set Fields have options with non_deductible amounts but financial types that are not configured to be deductible.') . '<p>'
+        . '<p><table><thead><tr><th>' . ts('Price Set') . '</th><th>' . ts('Price Set Field') . '</th><th>' . ts('Action') . '</th>'
+        . '</tr></thead><tbody>'
+        . $html
+        . '</tbody></table></p>';
+      $messages[] = new CRM_Utils_Check_Message(
+        __FUNCTION__,
+        $msg,
+        ts('Invalid Price Fields'),
+        LogLevel::WARNING,
+        'fa-lock'
+      );
+    }
+    return $messages;
+  }
+
 }
diff --git a/civicrm/CRM/Utils/Check/Component/Smarty.php b/civicrm/CRM/Utils/Check/Component/Smarty.php
new file mode 100644
index 0000000000000000000000000000000000000000..8e742c97d203591907d28422c9f6e5bf0e4e6eb6
--- /dev/null
+++ b/civicrm/CRM/Utils/Check/Component/Smarty.php
@@ -0,0 +1,52 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+use Psr\Log\LogLevel;
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC https://civicrm.org/licensing
+ */
+class CRM_Utils_Check_Component_Smarty extends CRM_Utils_Check_Component {
+
+  /**
+   * Check if Smarty3 has been enabled.
+   *
+   * @return CRM_Utils_Check_Message[]
+   */
+  public function checkSmarty3(): array {
+    $p = function($text) {
+      return '<p>' . $text . '</p>';
+    };
+
+    $messages = [];
+    if (!defined('CIVICRM_SMARTY3_AUTOLOAD_PATH')) {
+      $smartyPath = \Civi::paths()->getPath('[civicrm.packages]/smarty3/vendor/autoload.php');
+      $messages[] = new CRM_Utils_Check_Message(
+        __FUNCTION__,
+        $p(ts('CiviCRM is updating a major library (<em>Smarty</em>) to improve performance and security. In CiviCRM v5.69, the update is optional, but you should try it now.'))
+        . $p(ts('To apply the update, add this statement to <code>civicrm.settings.php</code>:'))
+        . sprintf("<pre>  define('CIVICRM_SMARTY3_AUTOLOAD_PATH',\n    %s);</pre>", htmlentities(var_export($smartyPath, 1)))
+        . $p('Some extensions may not work yet with Smarty v3. If you encounter problems, then simply remove the statement.')
+        . $p(ts('Upcoming versions will standardize on Smarty v3. CiviCRM <a %1>v5.69-ESR</a> will provide extended support for Smarty v2. To learn more and discuss, see the <a %2>Smarty transition page</a>.', [
+          1 => 'target="_blank" href="' . htmlentities('https://civicrm.org/esr') . '"',
+          2 => 'target="_blank" href="' . htmlentities('https://civicrm.org/redirect/smarty-v3') . '"',
+        ])),
+        ts('Smarty Update (v2 => v3)'),
+        LogLevel::WARNING,
+        'fa-lock'
+      );
+    }
+    return $messages;
+  }
+
+}
diff --git a/civicrm/CRM/Utils/File.php b/civicrm/CRM/Utils/File.php
index e9d97505306ad5f482e982f6f9d176167019141b..1c3ecdd54e23d25631e46882f4c50e6d9abee47d 100644
--- a/civicrm/CRM/Utils/File.php
+++ b/civicrm/CRM/Utils/File.php
@@ -217,11 +217,7 @@ class CRM_Utils_File {
 
     $written = fwrite($file, $contents);
     $closed = fclose($file);
-    if ($written === FALSE or !$closed) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return !($written === FALSE or !$closed);
   }
 
   /**
@@ -1160,4 +1156,23 @@ HTACCESS;
     return $is_dir;
   }
 
+  /**
+   * Get the maximum file size permitted for upload.
+   *
+   * This function contains logic to check the server setting if none
+   * is configured. It is unclear if this is still relevant but perhaps it is no
+   * harm-no-foul.
+   *
+   * @return int
+   *   Size in mega-bytes.
+   */
+  public static function getMaxFileSize(): int {
+    $maxFileSizeMegaBytes = \Civi::settings()->get('maxFileSize');
+    //Fetch maxFileSizeMegaBytes from php_ini when $config->maxFileSize is set to "no limit".
+    if (empty($maxFileSizeMegaBytes)) {
+      $maxFileSizeMegaBytes = round((CRM_Utils_Number::formatUnitSize(ini_get('upload_max_filesize')) / (1024 * 1024)), 2);
+    }
+    return $maxFileSizeMegaBytes;
+  }
+
 }
diff --git a/civicrm/CRM/Utils/Number.php b/civicrm/CRM/Utils/Number.php
index da5db035c5aa7cea21aa844f09560cb924d31ebd..2edf8c3a60a8e19e49e4241955a16602b06ea770 100644
--- a/civicrm/CRM/Utils/Number.php
+++ b/civicrm/CRM/Utils/Number.php
@@ -30,7 +30,7 @@ class CRM_Utils_Number {
    * @link https://dev.mysql.com/doc/refman/5.1/en/fixed-point-types.html
    */
   public static function createRandomDecimal($precision) {
-    list ($sigFigs, $decFigs) = $precision;
+    [$sigFigs, $decFigs] = $precision;
     $rand = rand(0, pow(10, $sigFigs) - 1);
     return $rand / pow(10, $decFigs);
   }
@@ -47,7 +47,7 @@ class CRM_Utils_Number {
    * @link https://dev.mysql.com/doc/refman/5.1/en/fixed-point-types.html
    */
   public static function createTruncatedDecimal($keyValue, $precision) {
-    list ($sigFigs, $decFigs) = $precision;
+    [$sigFigs, $decFigs] = $precision;
     $sign = ($keyValue < 0) ? '-1' : 1;
     // ex: -123.456 ==> 123456
     $val = str_replace('.', '', abs($keyValue));
@@ -66,14 +66,13 @@ class CRM_Utils_Number {
   }
 
   /**
-   * Some kind of numbery-looky-printy thing.
+   * Convert a file size value from the formats allowed in php_ini to the number of bytes.
    *
    * @param string $size
-   * @param bool $checkForPostMax
    *
    * @return int
    */
-  public static function formatUnitSize($size, $checkForPostMax = FALSE) {
+  public static function formatUnitSize($size): int {
     if ($size) {
       $last = strtolower($size[strlen($size) - 1]);
       $size = (int) $size;
@@ -87,23 +86,24 @@ class CRM_Utils_Number {
         case 'k':
           $size *= 1024;
       }
-
-      if ($checkForPostMax) {
-        $maxImportFileSize = self::formatUnitSize(ini_get('upload_max_filesize'));
-        $postMaxSize = self::formatUnitSize(ini_get('post_max_size'));
-        if ($maxImportFileSize > $postMaxSize && $postMaxSize == $size) {
-          CRM_Core_Session::setStatus(ts("Note: Upload max filesize ('upload_max_filesize') should not exceed Post max size ('post_max_size') as defined in PHP.ini, please check with your system administrator."), ts("Warning"), "alert");
-        }
-        // respect php.ini upload_max_filesize
-        if ($size > $maxImportFileSize && $size !== $postMaxSize) {
-          $size = $maxImportFileSize;
-          CRM_Core_Session::setStatus(ts("Note: Please verify your configuration for Maximum File Size (in MB) <a href='%1'>Administrator >> System Settings >> Misc</a>. It should support 'upload_max_size' as defined in PHP.ini.Please check with your system administrator.", [1 => CRM_Utils_System::url('civicrm/admin/setting/misc', 'reset=1')]), ts("Warning"), "alert");
-        }
-      }
       return $size;
     }
   }
 
+  /**
+   * Get the maximum size permitted for a file upload.
+   *
+   * @return float
+   */
+  public static function getMaximumFileUploadSize(): float {
+    $uploadFileSize = \CRM_Utils_Number::formatUnitSize(\Civi::settings()->get('maxFileSize') . 'm', TRUE);
+    //Fetch uploadFileSize from php_ini when $config->maxFileSize is set to "no limit".
+    if (empty($uploadFileSize)) {
+      $uploadFileSize = \CRM_Utils_Number::formatUnitSize(ini_get('upload_max_filesize'), TRUE);
+    }
+    return round(($uploadFileSize / (1024 * 1024)), 2);
+  }
+
   /**
    * Format number for display according to the current or supplied locale.
    *
diff --git a/civicrm/CRM/Utils/PDF/Label.php b/civicrm/CRM/Utils/PDF/Label.php
index c0b5d02b97eee1130d432293db36b0cee653a106..9e52dcf1db2c05f2ad36ca64f8525f4544db9bd9 100644
--- a/civicrm/CRM/Utils/PDF/Label.php
+++ b/civicrm/CRM/Utils/PDF/Label.php
@@ -140,6 +140,20 @@ class CRM_Utils_PDF_Label extends TCPDF {
    */
   public $countY = 0;
 
+  /**
+   * Custom method for generating label, called against $this->generatorObject
+   *
+   * @var string|null
+   */
+  protected $generatorMethod = NULL;
+
+  /**
+   * Custom object used for generating label, used alongside $this->generatorMethod
+   *
+   * @var object
+   */
+  protected $generatorObject;
+
   /**
    * Constructor.
    *
diff --git a/civicrm/CRM/Utils/PDF/Utils.php b/civicrm/CRM/Utils/PDF/Utils.php
index 400988f31ea0ac43fa8fd73d17c6740013286c87..847af31e82da51a26617d8023b43e82883928976 100644
--- a/civicrm/CRM/Utils/PDF/Utils.php
+++ b/civicrm/CRM/Utils/PDF/Utils.php
@@ -121,8 +121,8 @@ class CRM_Utils_PDF_Utils {
   public static function _html2pdf_dompdf($paper_size, $orientation, $html, $output, $fileName) {
     $options = self::getDompdfOptions();
     $dompdf = new DOMPDF($options);
-    $dompdf->set_paper($paper_size, $orientation);
-    $dompdf->load_html($html);
+    $dompdf->setPaper($paper_size, $orientation);
+    $dompdf->loadHtml($html);
     $dompdf->render();
 
     if ($output) {
@@ -258,8 +258,35 @@ class CRM_Utils_PDF_Utils {
         $settings[$setting] = $value;
       }
     }
+
+    // core#4791 - Set cache dir to prevent files being generated in font dir
+    $cacheDir = self::getCacheDir($settings);
+    if ($cacheDir !== "") {
+      $settings['font_cache'] = $cacheDir;
+    }
     $options->set($settings);
     return $options;
   }
 
+  /**
+   * Get location of cache folder.
+   *
+   * @param array $settings
+   * @return string
+   */
+  private static function getCacheDir(array $settings): string {
+    // Use subfolder of custom font dir if it is writable
+    if (isset($settings['font_dir']) && is_writable($settings['font_dir'])) {
+      $cacheDir = $settings['font_dir'] . DIRECTORY_SEPARATOR . 'font_cache';
+    }
+    else {
+      $cacheDir = Civi::paths()->getPath('[civicrm.files]/upload/font_cache');
+    }
+    // Try to create dir if it doesn't exist or return empty string
+    if ((!is_dir($cacheDir)) && (!mkdir($cacheDir))) {
+      $cacheDir = "";
+    }
+    return $cacheDir;
+  }
+
 }
diff --git a/civicrm/CRM/Utils/REST.php b/civicrm/CRM/Utils/REST.php
index f6a119c59def431de7c6a068dcdc0706b93b21eb..6d245cc74678d1c3e0e0101d009bede14a3551ce 100644
--- a/civicrm/CRM/Utils/REST.php
+++ b/civicrm/CRM/Utils/REST.php
@@ -656,11 +656,7 @@ class CRM_Utils_REST {
       // <header> Browsers often retain list of credentials and re-send automatically.
     ];
 
-    if (!empty($authx) && in_array($authx['flow'], $allowFlows)) {
-      return TRUE;
-    }
-
-    return FALSE;
+    return (!empty($authx) && in_array($authx['flow'], $allowFlows));
   }
 
 }
diff --git a/civicrm/CRM/Utils/Rule.php b/civicrm/CRM/Utils/Rule.php
index df620d1637bd6917b7763cb051f2a2b0b51f1acc..07ed44798ccc6aa232e6c8ae6e6acb0d5222532e 100644
--- a/civicrm/CRM/Utils/Rule.php
+++ b/civicrm/CRM/Utils/Rule.php
@@ -36,11 +36,7 @@ class CRM_Utils_Rule {
     }
 
     // Make sure it include valid characters, alpha numeric and underscores
-    if (!preg_match('/^\w[\w\s\'\&\,\$\#\-\.\"\?\!]+$/i', $str)) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return (bool) preg_match('/^\w[\w\s\'\&\,\$\#\-\.\"\?\!]+$/i', $str);
   }
 
   /**
@@ -64,11 +60,7 @@ class CRM_Utils_Rule {
     }
 
     // make sure it includes valid characters, alpha numeric and underscores
-    if (!preg_match('/^[\w]+$/i', $str)) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return (bool) preg_match('/^[\w]+$/i', $str);
   }
 
   /**
@@ -92,11 +84,8 @@ class CRM_Utils_Rule {
     //   * Composed of alphanumeric chars, underscore and hyphens.
     //   * Maximum length of 64 chars.
     //   * Optionally surrounded by backticks, in which case spaces also OK.
-    if (!preg_match('/^((`[-\w ]{1,64}`|[-\w]{1,64})\.)?(`[-\w ]{1,64}`|[-\w]{1,64})$/i', $str)) {
-      return FALSE;
-    }
+    return (bool) preg_match('/^((`[-\w ]{1,64}`|[-\w]{1,64})\.)?(`[-\w ]{1,64}`|[-\w]{1,64})$/i', $str);
 
-    return TRUE;
   }
 
   /**
@@ -108,11 +97,7 @@ class CRM_Utils_Rule {
    * @return bool
    */
   public static function mysqlOrderByDirection($str) {
-    if (!preg_match('/^(asc|desc)$/i', $str)) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return (bool) preg_match('/^(asc|desc)$/i', $str);
   }
 
   /**
@@ -163,11 +148,7 @@ class CRM_Utils_Rule {
 
     // make sure it includes valid characters, alpha numeric and underscores
     // added (. and ,) option (CRM-1336)
-    if (!preg_match('/^[\w\s\.\,]+$/i', $str)) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return (bool) preg_match('/^[\w\s\.\,]+$/i', $str);
   }
 
   /**
@@ -200,11 +181,7 @@ class CRM_Utils_Rule {
     }
 
     // make sure it includes valid characters, alpha numeric and underscores
-    if (!preg_match('/^[\w\s\%\'\&\,\$\#]+$/i', $query)) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return (bool) preg_match('/^[\w\s\%\'\&\,\$\#]+$/i', $query);
   }
 
   /**
diff --git a/civicrm/CRM/Utils/System.php b/civicrm/CRM/Utils/System.php
index f3359d58a0b28568095dcf308357b9590e3016c4..35643cb0f63844cdbb11ee53038a5ec05a5f87d4 100644
--- a/civicrm/CRM/Utils/System.php
+++ b/civicrm/CRM/Utils/System.php
@@ -126,7 +126,7 @@ class CRM_Utils_System {
       $qs = explode('&', str_replace('&amp;', '&', $_SERVER['QUERY_STRING']));
       for ($i = 0, $cnt = count($qs); $i < $cnt; $i++) {
         // check first if exist a pair
-        if (strstr($qs[$i], '=') !== FALSE) {
+        if (str_contains($qs[$i], '=')) {
           [$name, $value] = explode('=', $qs[$i]);
           if ($name != $urlVar) {
             $name = rawurldecode($name);
@@ -260,20 +260,20 @@ class CRM_Utils_System {
     $query = self::makeQueryString($query);
 
     // Legacy handling for when the system passes around html escaped strings
-    if (strstr($query, '&amp;')) {
+    if (str_contains($query, '&amp;')) {
       $query = html_entity_decode($query);
     }
 
     // Extract fragment from path or query if munged together
-    if ($query && strstr($query, '#')) {
+    if ($query && str_contains($query, '#')) {
       [$path, $fragment] = explode('#', $query);
     }
-    if ($path && strstr($path, '#')) {
+    if ($path && str_contains($path, '#')) {
       [$path, $fragment] = explode('#', $path);
     }
 
     // Extract query from path if munged together
-    if ($path && strstr($path, '?')) {
+    if ($path && str_contains($path, '?')) {
       [$path, $extraQuery] = explode('?', $path);
       $query = $extraQuery . ($query ? "&$query" : '');
     }
@@ -493,7 +493,7 @@ class CRM_Utils_System {
 
     if ($referer && !empty($names)) {
       foreach ($names as $name) {
-        if (strstr($referer, $name)) {
+        if (str_contains($referer, $name)) {
           $url = $referer;
           break;
         }
@@ -1290,7 +1290,7 @@ class CRM_Utils_System {
     // convert ipV6 to ipV4
     if ($strictIPV4) {
       // this converts 'IPV4 mapped IPV6 address' to IPV4
-      if (filter_var($address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) && strstr($address, '::ffff:')) {
+      if (filter_var($address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) && str_contains($address, '::ffff:')) {
         $address = ltrim($address, '::ffff:');
       }
     }
diff --git a/civicrm/CRM/Utils/System/Base.php b/civicrm/CRM/Utils/System/Base.php
index 4f213081468b4890a8769f244f42fc17ce6fe9fb..8559f220b204ab7cdf1c72bcf3d1f3dcf4f9fc8e 100644
--- a/civicrm/CRM/Utils/System/Base.php
+++ b/civicrm/CRM/Utils/System/Base.php
@@ -108,12 +108,12 @@ abstract class CRM_Utils_System_Base {
    *   The url to post the form.
    */
   public function postURL($action) {
-    $config = CRM_Core_Config::singleton();
     if (!empty($action)) {
       return $action;
     }
 
-    return $this->url(CRM_Utils_Array::value($config->userFrameworkURLVar, $_GET),
+    $current_path = CRM_Utils_System::currentPath();
+    return $this->url($current_path,
       NULL, TRUE, NULL, FALSE
     );
   }
@@ -261,11 +261,11 @@ abstract class CRM_Utils_System_Base {
   /**
    * Load user into session.
    *
-   * @param obj $user
+   * @param string $username
    *
    * @return bool
    */
-  public function loadUser($user) {
+  public function loadUser($username) {
     return TRUE;
   }
 
diff --git a/civicrm/CRM/Utils/System/Drupal8.php b/civicrm/CRM/Utils/System/Drupal8.php
index 2ddb21bb5009b5b457d0a629739cf0cdc292c032..73cd9a270a121021be706ff2988dfa2cee34e081 100644
--- a/civicrm/CRM/Utils/System/Drupal8.php
+++ b/civicrm/CRM/Utils/System/Drupal8.php
@@ -944,7 +944,11 @@ class CRM_Utils_System_Drupal8 extends CRM_Utils_System_DrupalBase {
    * @inheritdoc
    */
   public function ipAddress():?string {
-    return class_exists('Drupal') ? \Drupal::request()->getClientIp() : ($_SERVER['REMOTE_ADDR'] ?? NULL);
+    // dev/core#4756 fallback if checking before CMS bootstrap
+    if (!class_exists('Drupal') || !\Drupal::hasContainer()) {
+      return ($_SERVER['REMOTE_ADDR'] ?? NULL);
+    }
+    return \Drupal::request()->getClientIp();
   }
 
   /**
diff --git a/civicrm/CRM/Utils/System/Joomla.php b/civicrm/CRM/Utils/System/Joomla.php
index d61d3f4a325862544cd51bb4946ddfa5e84c3d4e..d118206b933fc36ba6406b1aae5029fa7cdf9e1f 100644
--- a/civicrm/CRM/Utils/System/Joomla.php
+++ b/civicrm/CRM/Utils/System/Joomla.php
@@ -88,6 +88,8 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
     $register = $model->register($values);
 
     $ufID = JUserHelper::getUserId($values['username']);
+    JUserHelper::addUserToGroup($ufID, $userType);
+
     return $ufID;
   }
 
diff --git a/civicrm/CRM/Utils/System/Standalone.php b/civicrm/CRM/Utils/System/Standalone.php
index 1a5c7902e7464f908376acc165c3be27e3281f96..18f5b7bfc7e6933dd94d9c50d4802b09ff01f80e 100644
--- a/civicrm/CRM/Utils/System/Standalone.php
+++ b/civicrm/CRM/Utils/System/Standalone.php
@@ -35,16 +35,15 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base {
     return !class_exists(\Civi\Standalone\Security::class);
   }
 
-  /**
-   * Start a new session.
-   */
-  public function sessionStart() {
-    parent::sessionStart();
-    if ($this->missingStandaloneExtension()) {
-      // Provide a fake contact and user ID, otherwise we don't get a menu.
-      $session = CRM_Core_Session::singleton();
-      $session->set('userID', 1);
-      $session->set('ufID', 1);
+  public function initialize() {
+    parent::initialize();
+    // Initialize the session if it looks like there might be one.
+    // Case 1: user sends no session cookie: do NOT start the session. May be anon access that does not require session data. Good for caching.
+    // Case 2: user sends a session cookie: start the session, so we can access data like lcMessages for localization (which occurs early in the boot process).
+    // Case 3: user sends a session cookie but it's invalid: start the session, it will be empty and a new cookie will be sent.
+    if (isset($_COOKIE['PHPSESSID'])) {
+      // Note: passing $isRead = FALSE in the arguments will cause the session to be started.
+      CRM_Core_Session::singleton()->initialize(FALSE);
     }
   }
 
@@ -206,10 +205,10 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base {
   ) {
     $fragment = $fragment ? ('#' . $fragment) : '';
     if ($absolute) {
-      return Civi::paths()->getUrl("[cms.root]/{$path}?{$query}$fragment");
+      return Civi::paths()->getUrl("[cms.root]/{$path}?{$query}$fragment", 'absolute');
     }
     else {
-      return "/{$path}?{$query}$fragment";
+      return Civi::paths()->getUrl("[cms.root]/{$path}?{$query}$fragment");
     }
   }
 
@@ -314,15 +313,13 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base {
 
     if (!isset($runOnce)) {
       $runOnce = TRUE;
-      return TRUE;
     }
-
-    $root = rtrim($this->cmsRootPath(), '/' . DIRECTORY_SEPARATOR);
-    if (empty($root) || !is_dir($root) || !chdir($root)) {
-      return FALSE;
+    else {
+      return TRUE;
     }
 
-    require_once $root . '/../vendor/autoload.php'; /* assumes $root to be the _web_ root path, not the project root path. */
+    global $civicrm_paths;
+    require_once $civicrm_paths['civicrm.vendor']['path'] . '/autoload.php';
 
     // seems like we've bootstrapped drupal
     $config = CRM_Core_Config::singleton();
@@ -353,7 +350,7 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base {
       // if given username we expect a correct password.
       $user = $security->loadUserByName($params['name']);
       if ($user) {
-        if (!$security->checkPassword($params['pass'], $user['password'] ?? '')) {
+        if (!$security->checkPassword($params['pass'], $user['hashed_password'] ?? '')) {
           return FALSE;
         }
       }
@@ -390,7 +387,7 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base {
     }
 
     return [
-      'url' => CRM_Utils_File::addTrailingSlash('', '/'),
+      'url' => CRM_Utils_File::addTrailingSlash(CIVICRM_UF_BASEURL, '/') . '/core/',
       'path' => CRM_Utils_File::addTrailingSlash($civicrm_root),
     ];
   }
@@ -484,18 +481,6 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base {
     CRM_Core_Session::setStatus('', $message, 'info');
   }
 
-  /**
-   * Function to return current language.
-   *
-   * @return string
-   */
-  public function getCurrentLanguage() {
-    if ($this->missingStandaloneExtension()) {
-      return NULL;
-    }
-    return Security::singleton()->getCurrentLanguage();
-  }
-
   /**
    * I don't know why this needs to be here? Does it even?
    *
@@ -555,6 +540,13 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base {
    */
   public function getTimeZoneString() {
     $timezone = date_default_timezone_get();
+    $userId = Security::singleton()->getLoggedInUfID();
+    if ($userId) {
+      $user = Security::singleton()->loadUserByID($userId);
+      if ($user && !empty($user['timezone'])) {
+        $timezone = $user['timezone'];
+      }
+    }
     return $timezone;
   }
 
diff --git a/civicrm/CRM/Utils/Token.php b/civicrm/CRM/Utils/Token.php
index b7373b897a2214099c4fc714cc5055fcdf27e2d9..05088221607843de17854d00df770bb3da99a067 100644
--- a/civicrm/CRM/Utils/Token.php
+++ b/civicrm/CRM/Utils/Token.php
@@ -1135,11 +1135,7 @@ class CRM_Utils_Token {
         }
 
         // special case for greeting replacement
-        foreach ([
-          'email_greeting',
-          'postal_greeting',
-          'addressee',
-        ] as $val) {
+        foreach (['email_greeting', 'postal_greeting', 'addressee'] as $val) {
           if (!empty($contactDetails[$contactID][$val])) {
             $contactDetails[$contactID][$val] = $contactDetails[$contactID]["{$val}_display"];
           }
@@ -1258,11 +1254,7 @@ class CRM_Utils_Token {
   public static function flattenTokens(&$tokens) {
     $flattenTokens = [];
 
-    foreach ([
-      'html',
-      'text',
-      'subject',
-    ] as $prop) {
+    foreach (['html', 'text', 'subject'] as $prop) {
       if (!isset($tokens[$prop])) {
         continue;
       }
@@ -1762,17 +1754,26 @@ class CRM_Utils_Token {
       'WorkFlowMessageTemplates' => [
         'contribution_invoice_receipt' => [
           '$display_name' => 'contact.display_name',
+          '$dataArray' => ts('found within $taxBreakDown'),
         ],
         'contribution_online_receipt' => [
           '$contributeMode' => ts('no longer available / relevant'),
           '$first_name' => 'contact.first_name',
           '$last_name' => 'contact.last_name',
           '$displayName' => 'contact.display_name',
+          '$dataArray' => ts('found within $taxBreakDown'),
         ],
         'membership_offline_receipt' => [
           // receipt_text_renewal appears to be long gone.
           'receipt_text_renewal' => 'receipt_text',
           '$isAmountZero' => ts('no longer available / relevant'),
+          '$dataArray' => ts('found within $taxBreakDown'),
+        ],
+        'membership_online_receipt' => [
+          '$dataArray' => ts('found within $taxBreakDown'),
+          '$mem_start_date' => 'membership.start_date',
+          '$mem_end_date' => 'membership.end_date',
+          '$mem_join_date' => 'membership.join_date',
         ],
         'event_offline_receipt' => [
           '$contributeMode' => ts('no longer available / relevant'),
@@ -1800,6 +1801,7 @@ class CRM_Utils_Token {
         ],
         'event_online_receipt' => [
           '`$participant.id`' => 'participant.id',
+          '$dataArray' => ts('found within $taxBreakDown'),
         ],
         'pledge_acknowledgement' => [
           '$domain' => ts('no longer available / relevant'),
diff --git a/civicrm/Civi/Angular/Manager.php b/civicrm/Civi/Angular/Manager.php
index 0478345fd90a1d7087137933ad99c197be092ba7..ce88ed4707b2bfc0149b2bf43ba5d21c2c7d0db5 100644
--- a/civicrm/Civi/Angular/Manager.php
+++ b/civicrm/Civi/Angular/Manager.php
@@ -14,29 +14,13 @@ class Manager {
   protected $res = NULL;
 
   /**
-   * Modules.
+   * Static cache of html partials.
    *
-   * @var array|null
-   *   Each item has some combination of these keys:
-   *   - ext: string
-   *     The Civi extension which defines the Angular module.
-   *   - js: array(string $relativeFilePath)
-   *     List of JS files (relative to the extension).
-   *   - css: array(string $relativeFilePath)
-   *     List of CSS files (relative to the extension).
-   *   - partials: array(string $relativeFilePath)
-   *     A list of partial-HTML folders (relative to the extension).
-   *     This will be mapped to "~/moduleName" by crmResource.
-   *   - settings: array(string $key => mixed $value)
-   *     List of settings to preload.
-   *   - settingsFactory: callable
-   *     Callback function to fetch settings.
-   *   - permissions: array
-   *     List of permissions to make available client-side
-   *   - requires: array
-   *     List of other modules required
+   * Stashing it here because it's too big to store in SqlCache
+   * FIXME: So that probably means we shouldn't be storing in memory either!
+   * @var array
    */
-  protected $modules = NULL;
+  private $partials = [];
 
   /**
    * @var \CRM_Utils_Cache_Interface
@@ -68,7 +52,7 @@ class Manager {
    */
   public function clear() {
     $this->cache->clear();
-    $this->modules = NULL;
+    $this->partials = [];
     $this->changeSets = NULL;
     // Force-refresh assetBuilder files
     \Civi::container()->get('asset_builder')->clear(FALSE);
@@ -93,45 +77,22 @@ class Manager {
    *     List of settings to preload.
    */
   public function getModules() {
-    if ($this->modules === NULL) {
-      $config = \CRM_Core_Config::singleton();
-      global $civicrm_root;
-
-      // Note: It would be nice to just glob("$civicrm_root/ang/*.ang.php"), but at time
-      // of writing CiviMail and CiviCase have special conditionals.
-
-      $angularModules = [];
-      $angularModules['angularFileUpload'] = include "$civicrm_root/ang/angularFileUpload.ang.php";
-      $angularModules['checklist-model'] = include "$civicrm_root/ang/checklist-model.ang.php";
-      $angularModules['crmApp'] = include "$civicrm_root/ang/crmApp.ang.php";
-      $angularModules['crmAttachment'] = include "$civicrm_root/ang/crmAttachment.ang.php";
-      $angularModules['crmAutosave'] = include "$civicrm_root/ang/crmAutosave.ang.php";
-      $angularModules['crmCxn'] = include "$civicrm_root/ang/crmCxn.ang.php";
-      $angularModules['crmDialog'] = include "$civicrm_root/ang/crmDialog.ang.php";
-      $angularModules['crmMonaco'] = include "$civicrm_root/ang/crmMonaco.ang.php";
-      $angularModules['crmResource'] = include "$civicrm_root/ang/crmResource.ang.php";
-      $angularModules['crmRouteBinder'] = include "$civicrm_root/ang/crmRouteBinder.ang.php";
-      $angularModules['crmUi'] = include "$civicrm_root/ang/crmUi.ang.php";
-      $angularModules['crmUtil'] = include "$civicrm_root/ang/crmUtil.ang.php";
-      $angularModules['dialogService'] = include "$civicrm_root/ang/dialogService.ang.php";
-      $angularModules['jsonFormatter'] = include "$civicrm_root/ang/jsonFormatter.ang.php";
-      $angularModules['ngRoute'] = include "$civicrm_root/ang/ngRoute.ang.php";
-      $angularModules['ngSanitize'] = include "$civicrm_root/ang/ngSanitize.ang.php";
-      $angularModules['ui.bootstrap'] = include "$civicrm_root/ang/ui.bootstrap.ang.php";
-      $angularModules['ui.sortable'] = include "$civicrm_root/ang/ui.sortable.ang.php";
-      $angularModules['unsavedChanges'] = include "$civicrm_root/ang/unsavedChanges.ang.php";
-      $angularModules['crmQueueMonitor'] = include "$civicrm_root/ang/crmQueueMonitor.ang.php";
-      $angularModules['crmStatusPage'] = include "$civicrm_root/ang/crmStatusPage.ang.php";
-      $angularModules['exportui'] = include "$civicrm_root/ang/exportui.ang.php";
-      $angularModules['api4Explorer'] = include "$civicrm_root/ang/api4Explorer.ang.php";
-      $angularModules['api4'] = include "$civicrm_root/ang/api4.ang.php";
-      $angularModules['crmDashboard'] = include "$civicrm_root/ang/crmDashboard.ang.php";
-      $angularModules['crmD3'] = include "$civicrm_root/ang/crmD3.ang.php";
-
-      foreach (\CRM_Core_Component::getEnabledComponents() as $component) {
-        $angularModules = array_merge($angularModules, $component->getAngularModules());
+    $moduleNames = $this->cache->get('moduleNames');
+    $angularModules = [];
+    // Cache not set, fetch fresh list of modules and store in cache
+    if (!$moduleNames) {
+      // Load all modules from CiviCRM core
+      $files = (array) glob(\Civi::paths()->getPath('[civicrm.root]/ang/*.ang.php'));
+      foreach ($files as $file) {
+        $name = basename($file, '.ang.php');
+        $module = include $file;
+        $module['ext'] = 'civicrm';
+        $angularModules[$name] = $module;
       }
+
+      // Load all modules from extensions
       \CRM_Utils_Hook::angularModules($angularModules);
+
       foreach ($angularModules as $module => $info) {
         // Merge in defaults
         $angularModules[$module] += ['basePages' => ['civicrm/a']];
@@ -150,17 +111,26 @@ class Manager {
           }
         }
       }
-      $this->modules = $this->resolvePatterns($angularModules);
+      $angularModules = $this->resolvePatterns($angularModules);
+      $this->cache->set('moduleNames', array_keys($angularModules));
+      foreach ($angularModules as $moduleName => $moduleInfo) {
+        $this->cache->set("module $moduleName", $moduleInfo);
+      }
+    }
+    // Rehydrate modules from cache
+    else {
+      foreach ($moduleNames as $moduleName) {
+        $angularModules[$moduleName] = $this->cache->get("module $moduleName");
+      }
     }
 
-    return $this->modules;
+    return $angularModules;
   }
 
   /**
    * Get the descriptor for an Angular module.
    *
-   * @param string $name
-   *   Module name.
+   * @param string $moduleName
    * @return array
    *   Details about the module:
    *   - ext: string, the name of the Civi extension which defines the module
@@ -169,12 +139,12 @@ class Manager {
    *   - partials: array(string $relativeFilePath).
    * @throws \Exception
    */
-  public function getModule($name) {
-    $modules = $this->getModules();
-    if (!isset($modules[$name])) {
+  public function getModule($moduleName) {
+    $module = $this->cache->get("module $moduleName") ?? $this->getModules()[$moduleName] ?? NULL;
+    if (!isset($module)) {
       throw new \Exception("Unrecognized Angular module");
     }
-    return $modules[$name];
+    return $module;
   }
 
   /**
@@ -292,13 +262,10 @@ class Manager {
    *   Invalid partials configuration.
    */
   public function getPartials($name) {
-    $cacheKey = "angular-partials_$name";
-    $cacheValue = $this->cache->get($cacheKey);
-    if ($cacheValue === NULL) {
-      $cacheValue = ChangeSet::applyResourceFilters($this->getChangeSets(), 'partials', $this->getRawPartials($name));
-      $this->cache->set($cacheKey, $cacheValue);
+    if (!isset($this->partials[$name])) {
+      $this->partials[$name] = ChangeSet::applyResourceFilters($this->getChangeSets(), 'partials', $this->getRawPartials($name));
     }
-    return $cacheValue;
+    return $this->partials[$name];
   }
 
   /**
diff --git a/civicrm/Civi/Api4/Action/Entity/GetLinks.php b/civicrm/Civi/Api4/Action/Entity/GetLinks.php
index 3408fea35be52113567bf5f1ca100d51a036dcf8..e05d66de1eab8e66c59fdf75c601bb307140421e 100644
--- a/civicrm/Civi/Api4/Action/Entity/GetLinks.php
+++ b/civicrm/Civi/Api4/Action/Entity/GetLinks.php
@@ -36,7 +36,7 @@ class GetLinks extends \Civi\Api4\Generic\BasicGetAction {
           'links' => [],
         ];
         foreach ($table->getTableLinks() as $link) {
-          if (!$link->isDeprecated()) {
+          if (!$link->isDeprecatedBy()) {
             $item['links'][] = $link->toArray();
           }
         }
diff --git a/civicrm/Civi/Api4/CustomValue.php b/civicrm/Civi/Api4/CustomValue.php
index 4201d3397afd7c7a0840a1e76ba8f32ec8db1082..1b99edc821700e4a9402a10c842c80ed12fd028d 100644
--- a/civicrm/Civi/Api4/CustomValue.php
+++ b/civicrm/Civi/Api4/CustomValue.php
@@ -26,6 +26,17 @@ namespace Civi\Api4;
  */
 class CustomValue {
 
+  /**
+   * @param string $customGroup
+   * @param bool $checkPermissions
+   * @return \Civi\Api4\Generic\AutocompleteAction
+   * @throws \API_Exception
+   */
+  public static function autocomplete(string $customGroup, $checkPermissions = TRUE) {
+    return (new \Civi\Api4\Generic\AutocompleteAction("Custom_$customGroup", __FUNCTION__))
+      ->setCheckPermissions($checkPermissions);
+  }
+
   /**
    * @param string $customGroup
    * @param bool $checkPermissions
diff --git a/civicrm/Civi/Api4/Generic/AutocompleteAction.php b/civicrm/Civi/Api4/Generic/AutocompleteAction.php
index 183043e3a851a063f218e0f6bc2f6d627c8896fd..3f2642ed7f6a5c986b5c57e508b1153308ac4c02 100644
--- a/civicrm/Civi/Api4/Generic/AutocompleteAction.php
+++ b/civicrm/Civi/Api4/Generic/AutocompleteAction.php
@@ -36,6 +36,7 @@ use Civi\Core\Event\GenericHookEvent;
  */
 class AutocompleteAction extends AbstractAction {
   use Traits\SavedSearchInspectorTrait;
+  use Traits\GetSetValueTrait;
 
   /**
    * Autocomplete search input for search mode
@@ -88,6 +89,17 @@ class AutocompleteAction extends AbstractAction {
    */
   protected $key;
 
+  /**
+   * Known entity values.
+   *
+   * Value will be populated by the form based on data entered at the time.
+   * They can be used by hooks for contextual filtering.
+   *
+   * Format: [fieldName => value][]
+   * @var array
+   */
+  protected $values = [];
+
   /**
    * Search conditions that will be automatically added to the WHERE or HAVING clauses
    *
@@ -169,6 +181,8 @@ class AutocompleteAction extends AbstractAction {
       // For subsequent pages when searching by id, subtract the "extra" first page
       elseif ($searchById && $this->page > 1) {
         $this->page -= 1;
+        // Record with that id was already returned on page one so exclude it from subsequent pages
+        $this->savedSearch['api_params']['where'][] = [$primaryKeys[0], '!=', $this->input];
       }
       // If first line uses a rewrite, search on those fields too
       if (!$initialSearchById && !empty($this->display['settings']['columns'][0]['rewrite'])) {
diff --git a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php
index 07ba072000fb13ce67b624b3e79b56bb55178db1..7b606a85dac3677cf1ddf7b2a4efe11364b27a50 100644
--- a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php
+++ b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php
@@ -333,6 +333,7 @@ class BasicGetFieldsAction extends BasicGetAction {
           'Select' => ts('Select'),
           'Text' => ts('Single-Line Text'),
           'TextArea' => ts('Multi-Line Text'),
+          'Url' => ts('URL'),
         ],
       ],
       [
diff --git a/civicrm/Civi/Api4/Mapping.php b/civicrm/Civi/Api4/Mapping.php
index 697c22a96e54d49940256d822835f4897716f335..0dfc1513904e701f3457b23334fac16e6bb678d9 100644
--- a/civicrm/Civi/Api4/Mapping.php
+++ b/civicrm/Civi/Api4/Mapping.php
@@ -15,7 +15,7 @@ namespace Civi\Api4;
  *
  * This is a collection of MappingFields, for reuse in import, export, etc.
  *
- * @searchable none
+ * @searchable secondary
  * @since 5.19
  * @package Civi\Api4
  */
diff --git a/civicrm/templates/CRM/common/localNav.tpl b/civicrm/Civi/Api4/PreferencesDate.php
similarity index 58%
rename from civicrm/templates/CRM/common/localNav.tpl
rename to civicrm/Civi/Api4/PreferencesDate.php
index 48ea55ecceeb0a648a14bef07ae45eb747d7cb63..4a260488ced5c9d524b335ae9a80a94e6381c6d5 100644
--- a/civicrm/templates/CRM/common/localNav.tpl
+++ b/civicrm/Civi/Api4/PreferencesDate.php
@@ -1,4 +1,6 @@
-{*
+<?php
+
+/*
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC. All rights reserved.                        |
  |                                                                    |
@@ -6,13 +8,24 @@
  | permitted exceptions and without any warranty. For full license    |
  | and copyright information, see https://civicrm.org/licensing       |
  +--------------------------------------------------------------------+
-*}
-{* Displays local tasks (secondary menu) for any pages that have them *}
-<div class="tabs">
-    <ul class="tabs primary">
-    {foreach from=$localTasks item=task}
-        <li {if $task.class}class="{$task.class}"{/if}><a href="{$task.url}" {if $task.class}class="{$task.class}"{/if}>{$task.title}</a></li>
-    {/foreach}
-   </ul>
-</div>
-<br class="clear" />
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC https://civicrm.org/licensing
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * PreferencesDate entity.
+ *
+ * @since 5.69
+ * @searchable secondary
+ * @package Civi\Api4
+ */
+class PreferencesDate extends Generic\DAOEntity {
+
+}
diff --git a/civicrm/Civi/Api4/Provider.php b/civicrm/Civi/Api4/Provider.php
new file mode 100644
index 0000000000000000000000000000000000000000..37db8db64735a797dcdd5d67c4d9ff8734878eb6
--- /dev/null
+++ b/civicrm/Civi/Api4/Provider.php
@@ -0,0 +1,24 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+namespace Civi\Api4;
+
+/**
+ * Provider entity.
+ *
+ * SMS Provider.
+ *
+ * @searchable secondary
+ * @since 5.69
+ * @package Civi\Api4
+ */
+class Provider extends Generic\DAOEntity {
+
+}
diff --git a/civicrm/Civi/Api4/Query/Api4SelectQuery.php b/civicrm/Civi/Api4/Query/Api4SelectQuery.php
index 8887bc18348fee24e977d6d8037deee7d6d380cf..d6681de88d34d325f0733b4cda92fcf07829dabe 100644
--- a/civicrm/Civi/Api4/Query/Api4SelectQuery.php
+++ b/civicrm/Civi/Api4/Query/Api4SelectQuery.php
@@ -833,9 +833,9 @@ class Api4SelectQuery extends Api4Query {
             return;
           }
         }
-        if ($link->isDeprecated()) {
+        if ($link->isDeprecatedBy()) {
           $deprecatedAlias = $link->getAlias();
-          \CRM_Core_Error::deprecatedWarning("Deprecated join alias '$deprecatedAlias' used in APIv4 get. Should be changed to '{$deprecatedAlias}_id'");
+          \CRM_Core_Error::deprecatedWarning("Deprecated join alias '$deprecatedAlias' used in APIv4 {$this->getEntity()} join to $joinEntity. Should be changed to '{$link->isDeprecatedBy()}'.");
         }
         $virtualField = $link->getSerialize();
         $baseTableAlias = $joinTreeNode['#table_alias'];
diff --git a/civicrm/Civi/Api4/Query/SqlFunction.php b/civicrm/Civi/Api4/Query/SqlFunction.php
index 44a0b097d595118e0e3c2c766f73eee286a2c557..6a901ad22aad1c48527e43824b54290a5480434c 100644
--- a/civicrm/Civi/Api4/Query/SqlFunction.php
+++ b/civicrm/Civi/Api4/Query/SqlFunction.php
@@ -118,6 +118,13 @@ abstract class SqlFunction extends SqlExpression {
     if (static::$dataType) {
       $dataType = static::$dataType;
     }
+    elseif (static::$category === self::CATEGORY_AGGREGATE) {
+      $exprArgs = $this->getArgs();
+      // If the first expression is a SqlFunction/SqlEquation, allow it to control the aggregate dataType
+      if (method_exists($exprArgs[0]['expr'][0], 'formatOutputValue')) {
+        $exprArgs[0]['expr'][0]->formatOutputValue($dataType, $values, $key);
+      }
+    }
     if (isset($values[$key]) && $this->suffix && $this->suffix !== 'id') {
       $dataType = 'String';
       $value =& $values[$key];
@@ -162,7 +169,7 @@ abstract class SqlFunction extends SqlExpression {
    * @return string
    */
   protected function renderExpression(string $output): string {
-    return $this->getName() . '(' . $output . ')';
+    return $this->getName() . "($output)";
   }
 
   /**
diff --git a/civicrm/Civi/Api4/Query/SqlFunctionGROUP_FIRST.php b/civicrm/Civi/Api4/Query/SqlFunctionGROUP_FIRST.php
new file mode 100644
index 0000000000000000000000000000000000000000..4fa363ad7ee542d01339ca4d7d4c087567671c39
--- /dev/null
+++ b/civicrm/Civi/Api4/Query/SqlFunctionGROUP_FIRST.php
@@ -0,0 +1,66 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Query;
+
+/**
+ * Sql function returns the first item in a GROUP_CONCAT set (per the ORDER_BY param)
+ * @since 5.69
+ */
+class SqlFunctionGROUP_FIRST extends SqlFunction {
+
+  public $supportsExpansion = TRUE;
+
+  protected static $category = self::CATEGORY_AGGREGATE;
+
+  protected static function params(): array {
+    return [
+      [
+        'max_expr' => 1,
+        'must_be' => ['SqlField', 'SqlFunction', 'SqlEquation'],
+        'optional' => FALSE,
+      ],
+      [
+        'name' => 'ORDER BY',
+        'label' => ts('Order by'),
+        'max_expr' => 1,
+        'flag_after' => ['ASC' => ts('Ascending'), 'DESC' => ts('Descending')],
+        'must_be' => ['SqlField'],
+        'optional' => TRUE,
+      ],
+    ];
+  }
+
+  /**
+   * @return string
+   */
+  public static function getTitle(): string {
+    return ts('First');
+  }
+
+  /**
+   * @return string
+   */
+  public static function getDescription(): string {
+    return ts('First value in the grouping.');
+  }
+
+  /**
+   * Render the final expression
+   * @param string $output
+   * @return string
+   */
+  protected function renderExpression(string $output): string {
+    $sep = \CRM_Core_DAO::VALUE_SEPARATOR;
+    return "SUBSTRING_INDEX(GROUP_CONCAT($output SEPARATOR '$sep'), '$sep', 1)";
+  }
+
+}
diff --git a/civicrm/Civi/Api4/Queue.php b/civicrm/Civi/Api4/Queue.php
index 3339d066294da4515822431c591cd9dfbc7728e5..bdfd2d0a3b92fcb3f63bb334ec44a3ba8381755a 100644
--- a/civicrm/Civi/Api4/Queue.php
+++ b/civicrm/Civi/Api4/Queue.php
@@ -20,7 +20,7 @@ use Civi\Api4\Action\Queue\Run;
  * Registering a queue in this table (and setting `is_auto=1`) can
  * allow it to execute tasks automatically in the background.
  *
- * @searchable none
+ * @searchable secondary
  * @since 5.47
  * @package Civi\Api4
  */
diff --git a/civicrm/Civi/Api4/Service/Autocomplete/CustomValueAutocompleteProvider.php b/civicrm/Civi/Api4/Service/Autocomplete/CustomValueAutocompleteProvider.php
new file mode 100644
index 0000000000000000000000000000000000000000..a799696edd6521194990cdad3bbd3e8df980b988
--- /dev/null
+++ b/civicrm/Civi/Api4/Service/Autocomplete/CustomValueAutocompleteProvider.php
@@ -0,0 +1,76 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Service\Autocomplete;
+
+use Civi\Api4\Utils\CoreUtil;
+use Civi\Core\Event\GenericHookEvent;
+use Civi\Core\HookInterface;
+
+/**
+ * @service
+ * @internal
+ */
+class CustomValueAutocompleteProvider extends \Civi\Core\Service\AutoService implements HookInterface {
+
+  /**
+   * Provide default SearchDisplay for autocompletes of multi-record custom values
+   *
+   * @param \Civi\Core\Event\GenericHookEvent $e
+   */
+  public static function on_civi_search_defaultDisplay(GenericHookEvent $e) {
+    if ($e->display['settings'] || $e->display['type'] !== 'autocomplete' || !str_starts_with($e->savedSearch['api_entity'], 'Custom_')) {
+      return;
+    }
+    $customGroupName = explode('_', $e->savedSearch['api_entity'], 2)[1];
+
+    // Custom groups could contain any fields & we have no idea what's in them
+    // but this is just the default display and can be overridden.
+    // Our best guess for a "title" is the first text field in the group
+    $titleField = \Civi\Api4\CustomValue::getFields('Multi_Stuff', FALSE)
+      ->addWhere('data_type', '=', 'String')
+      ->addWhere('input_type', '=', 'Text')
+      ->execute()->first()['name'] ?? NULL;
+
+    // Include search label of parent entity (e.g. `entity_id.sort_name` for Contact custom groups)
+    $customGroupExtends = \CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $customGroupName, 'extends', 'name');
+    $extendsLabelField = CoreUtil::getInfoItem($customGroupExtends, 'search_fields')[0] ?? NULL;
+
+    if (!$extendsLabelField && !$titleField) {
+      // Got nothing, fall back to the default which displays id only.
+      return;
+    }
+
+    $mainColumn = [
+      'type' => 'field',
+      'key' => $titleField ?? "entity_id.$extendsLabelField",
+    ];
+    if ($titleField && $extendsLabelField) {
+      $mainColumn['rewrite'] = "[entity_id.$extendsLabelField] - [$titleField]";
+    }
+
+    $e->display['settings'] = [
+      'sort' => [
+        [$mainColumn['key'], 'ASC'],
+      ],
+      'columns' => [
+        $mainColumn,
+        [
+          'type' => 'field',
+          'key' => 'id',
+          'rewrite' => '#[id]',
+        ],
+      ],
+    ];
+  }
+
+}
diff --git a/civicrm/Civi/Api4/Service/Autocomplete/EntityAutocompleteProvider.php b/civicrm/Civi/Api4/Service/Autocomplete/EntityAutocompleteProvider.php
index 652cb4c2a0be86ce79e2679da38bfa6e5cd02bfd..943cdad2b1cbd100ad411421a5b05b15a360ffa4 100644
--- a/civicrm/Civi/Api4/Service/Autocomplete/EntityAutocompleteProvider.php
+++ b/civicrm/Civi/Api4/Service/Autocomplete/EntityAutocompleteProvider.php
@@ -22,7 +22,7 @@ use Civi\Core\HookInterface;
 class EntityAutocompleteProvider extends \Civi\Core\Service\AutoService implements HookInterface {
 
   /**
-   * Provide default SearchDisplay for ContactType autocompletes
+   * Provide default SearchDisplay for autocompletes of API Entity names
    *
    * @param \Civi\Core\Event\GenericHookEvent $e
    */
diff --git a/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php b/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php
index 80ed04b6e80f6fdd8faf1429c79e725f39485ba4..5005e4338404439c137fa36f6ab262b62b21c7cd 100644
--- a/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php
+++ b/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php
@@ -78,7 +78,7 @@ class Joinable {
   /**
    * @var bool
    */
-  protected $deprecated = FALSE;
+  protected $deprecatedBy = FALSE;
 
   /**
    * @param $targetTable
@@ -282,17 +282,16 @@ class Joinable {
   /**
    * @return bool
    */
-  public function isDeprecated() {
-    return $this->deprecated;
+  public function isDeprecatedBy() {
+    return $this->deprecatedBy;
   }
 
   /**
-   * @param bool $deprecated
-   *
+   * @param string|null $deprecatedBy
    * @return $this
    */
-  public function setDeprecated(bool $deprecated = TRUE) {
-    $this->deprecated = $deprecated;
+  public function setDeprecatedBy(string $deprecatedBy = NULL) {
+    $this->deprecatedBy = $deprecatedBy ?? $this->alias . '_id';
     return $this;
   }
 
diff --git a/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php b/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php
index beb5862c6b6ac42fd45b48375c2ecdce17d74f08..49a1c2642a92a08e08150ea0a88c73296cbffbf1 100644
--- a/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php
+++ b/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php
@@ -127,6 +127,15 @@ class SchemaMapBuilder extends AutoService {
       $customTable = $map->getTableByName($tableName);
       if (!$customTable) {
         $customTable = new Table($tableName);
+        // Add entity_id join from multi-record custom group to the
+        if (!empty($fieldData->is_multiple)) {
+          $newJoin = new Joinable($baseTable->getName(), $customInfo['column'], 'entity_id');
+          $customTable->addTableLink('entity_id', $newJoin);
+          // Deprecated "contact" join name
+          $oldJoin = new Joinable($baseTable->getName(), $customInfo['column'], AllCoreTables::convertEntityNameToLower($entityName));
+          $oldJoin->setDeprecatedBy('entity_id');
+          $customTable->addTableLink('entity_id', $oldJoin);
+        }
       }
 
       $map->addTable($customTable);
@@ -136,12 +145,6 @@ class SchemaMapBuilder extends AutoService {
       $links[$alias]['isMultiple'] = !empty($fieldData->is_multiple);
       $links[$alias]['columns'][$fieldData->name] = $fieldData->column_name;
 
-      // Add backreference
-      if (!empty($fieldData->is_multiple)) {
-        $joinable = new Joinable($baseTable->getName(), $customInfo['column'], AllCoreTables::convertEntityNameToLower($entityName));
-        $customTable->addTableLink('entity_id', $joinable);
-      }
-
       if ($fieldData->data_type === 'EntityReference' && isset($fieldData->fk_entity)) {
         $targetTable = self::getTableName($fieldData->fk_entity);
         $joinable = new Joinable($targetTable, 'id', $fieldData->name);
diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/IsCurrentFieldSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/IsCurrentFieldSpecProvider.php
index 29ce637ad8f33c638f17abd2cdc7f7b16fda3790..afe41cbe412a28a57c41ea496032a33a0732d4f1 100644
--- a/civicrm/Civi/Api4/Service/Spec/Provider/IsCurrentFieldSpecProvider.php
+++ b/civicrm/Civi/Api4/Service/Spec/Provider/IsCurrentFieldSpecProvider.php
@@ -81,9 +81,8 @@ class IsCurrentFieldSpecProvider extends \Civi\Core\Service\AutoService implemen
     $startDate = substr_replace($field['sql_name'], 'start_date', -11, -1);
     $endDate = substr_replace($field['sql_name'], 'end_date', -11, -1);
     $isActive = substr_replace($field['sql_name'], 'is_active', -11, -1);
-    $todayStart = date('Ymd', strtotime('now'));
-    $todayEnd = date('Ymd', strtotime('now'));
-    return "IF($isActive = 1 AND ($startDate <= '$todayStart' OR $startDate IS NULL) AND ($endDate >= '$todayEnd' OR $endDate IS NULL), '1', '0')";
+    $today = date('Ymd');
+    return "IF($isActive = 1 AND ($startDate <= '$today' OR $startDate IS NULL) AND ($endDate >= '$today' OR $endDate IS NULL), '1', '0')";
   }
 
   /**
@@ -95,8 +94,8 @@ class IsCurrentFieldSpecProvider extends \Civi\Core\Service\AutoService implemen
    */
   public static function renderNonExpiredSql(array $field): string {
     $endDate = substr_replace($field['sql_name'], 'expires_date', -11, -1);
-    $todayEnd = date('Ymd');
-    return "IF($endDate >= '$todayEnd' OR $endDate IS NULL, 1, 0)";
+    $today = date('Ymd');
+    return "IF($endDate >= '$today' OR $endDate IS NULL, 1, 0)";
   }
 
 }
diff --git a/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php b/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php
index 73bcd7a6cf56959fd880d63fff40aefa68057122..47506d54aa5b87dae47f433ded52fbafa5f103e4 100644
--- a/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php
+++ b/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php
@@ -320,9 +320,12 @@ class SpecFormatter {
       $inputAttrs['maxlength'] = (int) $data['maxlength'];
     }
     if ($inputType == 'TextArea') {
-      foreach (['rows', 'cols', 'note_rows', 'note_cols'] as $prop) {
+      foreach (['rows', 'cols', 'note_rows', 'note_columns'] as $prop) {
         if (!empty($data[$prop])) {
-          $inputAttrs[str_replace('note_', '', $prop)] = (int) $data[$prop];
+          $key = str_replace('note_', '', $prop);
+          // per @colemanw https://github.com/civicrm/civicrm-core/pull/28388#issuecomment-1835717428
+          $key = str_replace('columns', 'cols', $key);
+          $inputAttrs[$key] = (int) $data[$prop];
         }
       }
     }
diff --git a/civicrm/Civi/Api4/Utils/CoreUtil.php b/civicrm/Civi/Api4/Utils/CoreUtil.php
index ad7415ee2e656557273c32ee5884ae7fe5e1a932..7a1e4493d973d37354e6dd29735d6fd9c6a4e095 100644
--- a/civicrm/Civi/Api4/Utils/CoreUtil.php
+++ b/civicrm/Civi/Api4/Utils/CoreUtil.php
@@ -240,6 +240,7 @@ class CoreUtil {
    */
   public static function checkAccessRecord(AbstractAction $apiRequest, array $record, int $userID = NULL): ?bool {
     $userID = $userID ?? \CRM_Core_Session::getLoggedInContactID() ?? 0;
+    $idField = self::getIdFieldName($apiRequest->getEntityName());
 
     // Super-admins always have access to everything
     if (\CRM_Core_Permission::check('all CiviCRM permissions and ACLs', $userID)) {
@@ -250,7 +251,7 @@ class CoreUtil {
     // It's a cheap trick and not as efficient as not running the query at all,
     // but BAO::checkAccess doesn't consistently check permissions for the "get" action.
     if (is_a($apiRequest, '\Civi\Api4\Generic\AbstractGetAction')) {
-      return (bool) $apiRequest->addSelect('id')->addWhere('id', '=', $record['id'])->execute()->count();
+      return (bool) $apiRequest->addSelect($idField)->addWhere($idField, '=', $record[$idField])->execute()->count();
     }
 
     $event = new \Civi\Api4\Event\AuthorizeRecordEvent($apiRequest, $record, $userID);
diff --git a/civicrm/Civi/Api4/Utils/FormattingUtil.php b/civicrm/Civi/Api4/Utils/FormattingUtil.php
index ba93b4a2787599899fb0f92f37b39ea2ebb701ac..2aba6212f2107339126e7a1afd66685bfa6c5a80 100644
--- a/civicrm/Civi/Api4/Utils/FormattingUtil.php
+++ b/civicrm/Civi/Api4/Utils/FormattingUtil.php
@@ -425,7 +425,10 @@ class FormattingUtil {
    *   Path at which these fields are found, e.g. "address.contact."
    * @return array
    */
-  public static function contactFieldsToRemove($contactType, $prefix) {
+  public static function contactFieldsToRemove($contactType, $prefix): array {
+    if (!$contactType || !is_string($contactType)) {
+      return [];
+    }
     if (!isset(\Civi::$statics[__CLASS__][__FUNCTION__][$contactType])) {
       \Civi::$statics[__CLASS__][__FUNCTION__][$contactType] = [];
       foreach (\CRM_Contact_DAO_Contact::fields() as $field) {
diff --git a/civicrm/Civi/Core/Container.php b/civicrm/Civi/Core/Container.php
index bbe0527653001260fda51f2678b9c351d08762b9..8ea153495cf0322d04e053a47a2be0775d17434e 100644
--- a/civicrm/Civi/Core/Container.php
+++ b/civicrm/Civi/Core/Container.php
@@ -364,6 +364,11 @@ class Container {
         []
       ))->addTag('kernel.event_subscriber')->setPublic(TRUE);
     }
+    $container->setDefinition("crm_financial_trxn_tokens", new Definition(
+      'CRM_Financial_FinancialTrxnTokens',
+      []
+    ))->addTag('kernel.event_subscriber')->setPublic(TRUE);
+
     $container->setDefinition('civi_token_impliedcontext', new Definition(
       'Civi\Token\ImpliedContextSubscriber',
       []
@@ -427,7 +432,14 @@ class Container {
    * @return \Civi\Angular\Manager
    */
   public function createAngularManager() {
-    return new \Civi\Angular\Manager(\CRM_Core_Resources::singleton());
+    $moduleEnvId = md5(\CRM_Core_Config_Runtime::getId());
+    $angCache = \CRM_Utils_Cache::create([
+      'name' => substr('angular_' . $moduleEnvId, 0, 32),
+      'type' => ['*memory*', 'SqlGroup', 'ArrayCache'],
+      'withArray' => 'fast',
+      'prefetch' => TRUE,
+    ]);
+    return new \Civi\Angular\Manager(\CRM_Core_Resources::singleton(), $angCache);
   }
 
   /**
diff --git a/civicrm/Civi/Crypto/CryptoJwt.php b/civicrm/Civi/Crypto/CryptoJwt.php
index 95598241185cc1654f2177a411dfa29315426fd3..bbc989ce2062f3add24e9cc0d8b3b39c76d92c94 100644
--- a/civicrm/Civi/Crypto/CryptoJwt.php
+++ b/civicrm/Civi/Crypto/CryptoJwt.php
@@ -13,6 +13,7 @@ namespace Civi\Crypto;
 
 use Civi\Crypto\Exception\CryptoException;
 use Firebase\JWT\JWT;
+use Firebase\JWT\Key;
 
 /**
  * The "Crypto JWT" service supports a token format suitable for
@@ -59,6 +60,10 @@ class CryptoJwt {
    * @throws CryptoException
    */
   public function decode($token, $keyTag = 'SIGN') {
+    $useKeyObj = version_compare(\Composer\InstalledVersions::getVersion('firebase/php-jwt'), '6', '>=');
+    if (!$useKeyObj) {
+      \CRM_Core_Error::deprecatedWarning('Using deprecated version of firebase/php-jwt. Upgrade to 6.x+.');
+    }
     $keyRows = $this->getRegistry()->findKeysByTag($keyTag);
 
     // We want to call JWT::decode(), but there's a slight mismatch -- the
@@ -73,13 +78,13 @@ class CryptoJwt {
     foreach ($keyRows as $key) {
       if ($alg = $this->suiteToAlg($key['suite'])) {
         // Currently, registry only has symmetric keys in $key['key']. For public key-pairs, might need to change.
-        $keysByAlg[$alg][$key['id']] = $key['key'];
+        $keysByAlg[$alg][$key['id']] = ($useKeyObj ? new Key($key['key'], $alg) : $key['key']);
       }
     }
 
     foreach ($keysByAlg as $alg => $keys) {
       try {
-        return (array) JWT::decode($token, $keys, [$alg]);
+        return ($useKeyObj ? (array) JWT::decode($token, $keys) : (array) JWT::decode($token, $keys, [$alg]));
       }
       catch (\UnexpectedValueException $e) {
         // Depending on the error, we might able to try other algos
diff --git a/civicrm/Civi/Import/DataSource/DataSourceInterface.php b/civicrm/Civi/Import/DataSource/DataSourceInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..b79ddc04b0afcc6a1557bd95732d128cab01d0b7
--- /dev/null
+++ b/civicrm/Civi/Import/DataSource/DataSourceInterface.php
@@ -0,0 +1,131 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Import\DataSource;
+
+/**
+ * Objects that implement the DataSource interface can be used in CiviCRM imports.
+ */
+interface DataSourceInterface {
+
+  /**
+   * Determine if the current user has access to this data source.
+   *
+   * @return bool
+   */
+  public function checkPermission(): bool;
+
+  /**
+   * Provides information about the data source.
+   *
+   * @return array
+   *   Description of this data source, including:
+   *   - title: string, translated, required
+   *   - permissions: array, optional
+   */
+  public function getInfo(): array;
+
+  /**
+   * This is function is called by the form object to get the DataSource's form snippet.
+   *
+   * It should add all fields necessary to get the data uploaded to the temporary table in the DB.
+   *
+   * @param \CRM_Import_Forms $form
+   */
+  public function buildQuickForm(\CRM_Import_Forms $form): void;
+
+  /**
+   * Get array array of field names that may be submitted for this data source.
+   *
+   * The quick form for the datasource is added by ajax - meaning that QuickForm
+   * does not see them as part of the form. However, any fields listed in this array
+   * will be taken from the `$_POST` and stored to the UserJob under metadata->submitted_values.
+   *
+   * @return array
+   */
+  public function getSubmittableFields(): array;
+
+  /**
+   * Initialize the datasource, based on the submitted values stored in the user job.
+   *
+   * Generally this will include transferring the data to a database table.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function initialize(): void;
+
+  /**
+   * Purge any datasource related assets when the datasource is dropped.
+   *
+   * This is the datasource's chance to delete any tables etc that it created
+   * which will now not be used.
+   *
+   * @param array $newParams
+   *   If the dataSource is being updated to another variant of the same
+   *   class (eg. the csv upload was set to no column headers and they
+   *   have resubmitted WITH skipColumnHeader (first row is a header) then
+   *   the dataSource is still CSV and the params for the new instance
+   *   are passed in. When changing from csv to SQL (for example) newParams is
+   *   empty.
+   *
+   * @return array
+   *   The details to update the DataSource key in the userJob metadata to.
+   *   Generally and empty array but it the datasource decided (for example)
+   *   that the table it created earlier is still consistent with the new params
+   *   then it might decided not to drop the table and would want to retain
+   *   some metadata.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function purge(array $newParams = []) :array;
+
+  /**
+   * Get an array of column headers, if any.
+   *
+   * This is presented to the user in the MapField screen so
+   * that can see what fields they are mapping.
+   *
+   * @return array
+   * @throws \CRM_Core_Exception
+   */
+  public function getColumnHeaders(): array;
+
+  /**
+   * @param int $limit
+   *
+   * @return self
+   */
+  public function setLimit(int $limit): self;
+
+  /**
+   * Set the statuses to be retrieved.
+   *
+   * @param array $statuses
+   *
+   * @return self
+   */
+  public function setStatuses(array $statuses): self;
+
+  /**
+   * Get rows as an array.
+   *
+   * The array has all values.
+   *
+   * @param bool $nonAssociative
+   *   Return as a non-associative array?
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function getRows(bool $nonAssociative = TRUE): array;
+
+}
diff --git a/civicrm/Civi/Import/DataSource/DataSourceTrait.php b/civicrm/Civi/Import/DataSource/DataSourceTrait.php
new file mode 100644
index 0000000000000000000000000000000000000000..2fa8b142fe8e40cd1650c3a7bcade2ce319df757
--- /dev/null
+++ b/civicrm/Civi/Import/DataSource/DataSourceTrait.php
@@ -0,0 +1,289 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Import\DataSource;
+
+use Civi\Api4\UserJob;
+
+/**
+ * Provides all the helpers to add a datasource easily.
+ */
+trait DataSourceTrait {
+
+  /**
+   * User job id.
+   *
+   * This is the primary key of the civicrm_user_job table which is used to
+   * track the import.
+   *
+   * @var int
+   */
+  protected $userJobID;
+
+  /**
+   * User job details.
+   *
+   * This is the relevant row from civicrm_user_job.
+   *
+   * @var array
+   */
+  protected $userJob;
+
+  /**
+   * Class constructor.
+   *
+   * @param int|null $userJobID
+   */
+  public function __construct(int $userJobID = NULL) {
+    if ($userJobID) {
+      $this->setUserJobID($userJobID);
+    }
+  }
+
+  /**
+   * Get the ID of the user job being acted on.
+   *
+   * @return int|null
+   */
+  public function getUserJobID(): ?int {
+    return $this->userJobID;
+  }
+
+  /**
+   * Set user job ID.
+   *
+   * @param int $userJobID
+   */
+  public function setUserJobID(int $userJobID): void {
+    $this->userJobID = $userJobID;
+  }
+
+  /**
+   * Determine if the current user has access to this data source.
+   *
+   * @return bool
+   */
+  public function checkPermission(): bool {
+    $info = $this->getInfo();
+    return empty($info['permissions']) || \CRM_Core_Permission::check($info['permissions']);
+  }
+
+  /**
+   * Purge any datasource related assets when the datasource is dropped.
+   *
+   * This is the datasource's chance to delete any tables etc that it created
+   * which will now not be used.
+   *
+   * @param array $newParams
+   *   If the dataSource is being updated to another variant of the same
+   *   class (eg. the csv upload was set to no column headers and they
+   *   have resubmitted WITH skipColumnHeader (first row is a header) then
+   *   the dataSource is still CSV and the params for the new instance
+   *   are passed in. When changing from csv to SQL (for example) newParams is
+   *   empty.
+   *
+   * @return array
+   *   The details to update the DataSource key in the userJob metadata to.
+   *   Generally and empty array but it the datasource decided (for example)
+   *   that the table it created earlier is still consistent with the new params
+   *   then it might decided not to drop the table and would want to retain
+   *   some metadata.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function purge(array $newParams = []) :array {
+    // The old name is still stored...
+    $oldTableName = $this->getTableName();
+    if ($oldTableName) {
+      \CRM_Core_DAO::executeQuery('DROP TABLE IF EXISTS ' . $oldTableName);
+    }
+    return [];
+  }
+
+  /**
+   * Update the data stored in the User Job about the Data Source.
+   *
+   * @param array $data
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  protected function updateUserJobDataSource(array $data): void {
+    $this->updateUserJobMetadata('DataSource', $data);
+  }
+
+  /**
+   * Update the UserJob Metadata.
+   *
+   * @param string $key
+   * @param array $data
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  private function updateUserJobMetadata(string $key, array $data): void {
+    $metaData = array_merge(
+      $this->getUserJob()['metadata'],
+      [$key => $data]
+    );
+    UserJob::update(FALSE)
+      ->addWhere('id', '=', $this->getUserJobID())
+      ->setValues(['metadata' => $metaData])
+      ->execute();
+    $this->userJob['metadata'] = $metaData;
+  }
+
+  /**
+   * Get an array of column headers, if any.
+   *
+   * This is presented to the user in the MapField screen so
+   * that can see what fields they are mapping.
+   *
+   * @return array
+   * @throws \CRM_Core_Exception
+   */
+  public function getColumnHeaders(): array {
+    return $this->getUserJob()['metadata']['DataSource']['column_headers'];
+  }
+
+  /**
+   * Get User Job.
+   *
+   * API call to retrieve the userJob row.
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getUserJob(): array {
+    if (!$this->userJob) {
+      $this->userJob = UserJob::get()
+        ->addWhere('id', '=', $this->getUserJobID())
+        ->execute()
+        ->first();
+    }
+    return $this->userJob;
+  }
+
+  /**
+   * Get submitted value.
+   *
+   * Get a value submitted on the form.
+   *
+   * @return mixed
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getSubmittedValue(string $valueName) {
+    return $this->getUserJob()['metadata']['submitted_values'][$valueName];
+  }
+
+  /**
+   * Get column names from the headers - munging to lower case etc.
+   *
+   * @param array $headers
+   *
+   * @return array
+   */
+  protected function getColumnNamesFromHeaders(array $headers): array {
+    $strtolower = function_exists('mb_strtolower') ? 'mb_strtolower' : 'strtolower';
+    $columns = array_map($strtolower, $headers);
+    $columns = array_map('trim', $columns);
+    $columns = str_replace(' ', '_', $columns);
+    $columns = preg_replace('/[^a-z_]/', '', $columns);
+
+    // need to truncate values per mysql field name length limits
+    // mysql allows 64, but we need to account for appending colKey
+    // CRM-9079
+    foreach ($columns as &$colName) {
+      if (strlen($colName) > 58) {
+        $colName = substr($colName, 0, 58);
+      }
+    }
+    $hasDuplicateColumnName = count($columns) !== count(array_unique($columns));
+    if ($hasDuplicateColumnName || in_array('', $columns, TRUE)) {
+      foreach ($columns as $colKey => & $colName) {
+        if (!$colName) {
+          $colName = "col_$colKey";
+        }
+        elseif ($hasDuplicateColumnName) {
+          $colName .= "_$colKey";
+        }
+      }
+    }
+
+    // CRM-4881: we need to quote column names, as they may be MySQL reserved words
+    foreach ($columns as & $column) {
+      $column = "`$column`";
+    }
+    return $columns;
+  }
+
+  /**
+   * Get suitable column names for when no header row is in use.
+   *
+   * The result is an array like 'column_1', column_2'. SQL columns
+   * cannot start with a number.
+   *
+   * @param array $row
+   *
+   * @return array
+   */
+  protected function getColumnNamesForUnnamedColumns(array $row): array {
+    $columns = [];
+    foreach ($row as $i => $_) {
+      $columns[] = "column_$i";
+    }
+    return $columns;
+  }
+
+  /**
+   *
+   * @param array $columns
+   *
+   * @return string
+   *   Temp table name.
+   *
+   * @throws \Civi\Core\Exception\DBQueryException
+   */
+  protected function createTempTableFromColumns(array $columns): string {
+    $table = \CRM_Utils_SQL_TempTable::build()->setDurable();
+    $tableName = $table->getName();
+    \CRM_Core_DAO::executeQuery("DROP TABLE IF EXISTS $tableName");
+    $table->createWithColumns(implode(' text, ', $columns) . ' text');
+    return $tableName;
+  }
+
+  /**
+   * Trim non-breaking spaces in a multibyte-safe way.
+   * See also dev/core#2127 - avoid breaking strings ending in à or any other
+   * unicode character sharing the same 0xA0 byte as a non-breaking space.
+   *
+   * @param string $string
+   * @return string The trimmed string
+   */
+  public static function trimNonBreakingSpaces(string $string): string {
+    $encoding = mb_detect_encoding($string, NULL, TRUE);
+    if ($encoding === FALSE) {
+      // This could mean a couple things. One is that the string is
+      // ASCII-encoded but contains a non-breaking space, which causes
+      // php to fail to detect the encoding. So let's just do what we
+      // did before which works in that situation and is at least no
+      // worse in other situations.
+      return trim($string, chr(0xC2) . chr(0xA0));
+    }
+    if ($encoding !== 'UTF-8') {
+      $string = mb_convert_encoding($string, 'UTF-8', [$encoding]);
+    }
+    return preg_replace("/^(\u{a0})+|(\u{a0})+$/", '', $string);
+  }
+
+}
diff --git a/civicrm/Civi/Test/CiviTestListener.php b/civicrm/Civi/Test/CiviTestListener.php
index fbd6fd88785a48eff21bb134cc5a75b92152e64c..2fa0627d9f2778f3e19acbc77547b02b83916403 100644
--- a/civicrm/Civi/Test/CiviTestListener.php
+++ b/civicrm/Civi/Test/CiviTestListener.php
@@ -38,6 +38,11 @@ else {
      */
     private $tx;
 
+    /**
+     * @var \CRM_Core_TemporaryErrorScope|null
+     */
+    public $errorScope;
+
     public function startTestSuite(\PHPUnit\Framework\TestSuite $suite) {
       $byInterface = $this->indexTestsByInterface($suite->tests());
       $this->validateGroups($byInterface);
diff --git a/civicrm/Civi/Test/ContributionPageTestTrait.php b/civicrm/Civi/Test/ContributionPageTestTrait.php
index d20bc0863fb2631cfc04ac39fc823551c60ed7c7..1c386681afd9846dcefeb91855a4bb4225075023 100644
--- a/civicrm/Civi/Test/ContributionPageTestTrait.php
+++ b/civicrm/Civi/Test/ContributionPageTestTrait.php
@@ -11,6 +11,11 @@
 
 namespace Civi\Test;
 
+use Civi\API\EntityLookupTrait;
+use Civi\Api4\UFField;
+use Civi\Api4\UFGroup;
+use Civi\Api4\UFJoin;
+
 /**
  * Helper for event tests.
  *
@@ -29,12 +34,13 @@ namespace Civi\Test;
  */
 trait ContributionPageTestTrait {
   use EntityTrait;
+  use EntityLookupTrait;
 
   /**
    * Create a contribution page for test purposes.
    *
-   * Only call this directly for unpaid contribution pages.
-   * Otherwise use contributionPageCreatePaid.
+   * Generally this function is not called directly -
+   * use contributionPageCreatePaid.
    *
    * @param array $contributionPageValues
    * @param string $identifier
@@ -52,10 +58,19 @@ trait ContributionPageTestTrait {
       'pay_later_text' => 'Send Money Now',
     ];
     $contributionPageValues += $contributionPageDefaults;
-    return $this->createTestEntity('ContributionPage', $contributionPageValues, $identifier);
+    $return = $this->createTestEntity('ContributionPage', $contributionPageValues, $identifier);
+    $this->define('ContributionPage', 'ContributionPage_' . $identifier, $return);
+    $this->addProfilesToContributionPage();
+    return $return;
   }
 
   /**
+   * Create a paid contribution page.
+   *
+   * This function ensures that the page has pay later configured, unless specified as false
+   * and that there is a payment_processor configured, unless the key payment_processor
+   * is already set.
+   *
    * @param array $contributionPageValues
    * @param array $priceSetParameters
    *   Currently if 'id' is passed in then no update is made, but this could change
@@ -65,6 +80,23 @@ trait ContributionPageTestTrait {
    */
   public function contributionPageCreatePaid(array $contributionPageValues, array $priceSetParameters = [], string $identifier = 'ContributionPage'): array {
     $contributionPageValues['is_monetary'] = TRUE;
+    $contributionPageValues += ['is_pay_later' => TRUE, 'pay_later_text' => 'Send check by mail'];
+    if (!array_key_exists('payment_processor', $contributionPageValues)) {
+      $this->createTestEntity('PaymentProcessor', [
+        'name' => 'dummy',
+        'label' => 'Dummy',
+        'payment_processor_type_id:name' => 'Dummy',
+        'frontend_title' => 'Dummy Front end',
+      ], 'dummy');
+      $this->createTestEntity('PaymentProcessor', [
+        'name' => 'dummy',
+        'label' => 'Dummy Test',
+        'payment_processor_type_id:name' => 'Dummy',
+        'frontend_title' => 'Dummy Front end (test)',
+        'is_test' => TRUE,
+      ], 'dummy_test');
+      $contributionPageValues['payment_processor'] = [$this->ids['PaymentProcessor']['dummy']];
+    }
     $contributionPageResult = $this->contributionPageCreate($contributionPageValues, $identifier);
     $priceSetParameters += [
       'title' => 'Price Set',
@@ -85,6 +117,40 @@ trait ContributionPageTestTrait {
       'entity_id' => $contributionPageResult['id'],
       'price_set_id' => $this->ids['PriceSet'][$identifier],
     ]);
+    $this->createTestEntity('Product', [
+      'name' => '5_dollars',
+      'description' => '5 dollars worth of monopoly money',
+      'options' => 'White, Black, Green',
+      'price' => 1,
+      'is_active' => TRUE,
+      'min_contribution' => 5,
+      'cost' => .05,
+    ], '5_dollars');
+    $this->createTestEntity('Product', [
+      'name' => '10_dollars',
+      'description' => '10 dollars worth of monopoly money',
+      'options' => 'White, Black, Green',
+      'price' => 2,
+      'is_active' => TRUE,
+      'min_contribution' => 10,
+      'cost' => .05,
+    ], '10_dollars');
+    $this->createTestEntity('Premium', [
+      'entity_id' => $this->getContributionPageID($identifier),
+      'entity_table' => 'civicrm_contribution_page',
+      'premiums_intro_title' => 'Get free monopoly money with your donation',
+      'premiums_active' => TRUE,
+    ], $identifier);
+    $this->createTestEntity('PremiumsProduct', [
+      'premiums_id' => $this->ids['Premium'][$identifier],
+      'product_id' => $this->ids['Product']['5_dollars'],
+      'weight' => 1,
+    ]);
+    $this->createTestEntity('PremiumsProduct', [
+      'premiums_id' => $this->ids['Premium'][$identifier],
+      'product_id' => $this->ids['Product']['10_dollars'],
+      'weight' => 2,
+    ]);
     return $contributionPageResult;
   }
 
@@ -110,4 +176,334 @@ trait ContributionPageTestTrait {
     return 0;
   }
 
+  /**
+   * Set up a contribution page with a complex price set.
+   *
+   * The created price set has 5 fields using a mixture of financial type 1 & 2, 3 which are created.
+   *
+   * More fields may be added.
+   *
+   * - Radio field (key= 'radio_field') with 3 options ('20_dollars','10_dollars','free'), financial type ID is 'first'
+   * - Select field (key= 'select_field') with 2 options ('40_dollars','30_dollars'), financial type ID is 'second'
+   * - Text field ('text_field_16.95') with amount = 16.95 - ie if qty is 2 then amount is 33.90, financial type ID is 'second'
+   * - Text field ('text_field_2.95') with amount = 2.95 - ie if qty is 2 then amount is 5.90, financial type ID is 'second'
+   * - Text field ('text_field') with amount = 1 - ie if qty is 2 then amount is 2, financial type ID is 'first'
+   * - CheckBox field ('check_box') with amount = 55,  financial type ID is 'third'
+   *
+   * @param array $contributionPageParameters
+   * @param array $priceSetParameters
+   */
+  public function contributionPageWithPriceSetCreate(array $contributionPageParameters = [], array $priceSetParameters = []): void {
+    $this->contributionPageCreatePaid($contributionPageParameters, $priceSetParameters);
+    $priceSetID = $this->ids['PriceSet']['ContributionPage'];
+    $this->createTestEntity('FinancialType', ['name' => 'Financial Type 1'], 'first');
+    $this->createTestEntity('FinancialType', ['name' => 'Financial Type 2'], 'second');
+    $this->createTestEntity('FinancialType', ['name' => 'Financial Type 3'], 'third');
+    $priceField = $this->createTestEntity('PriceField', [
+      'price_set_id' => $priceSetID,
+      'label' => 'Financial Type 1, radio field',
+      'html_type' => 'Radio',
+      'name' => 'radio_field',
+    ], 'radio_field');
+    $this->createTestEntity('PriceFieldValue', [
+      'price_field_id' => $this->ids['PriceField']['radio_field'],
+      'label' => 'Twenty dollars',
+      'financial_type_id:name' => 'Financial Type 1',
+      'amount' => 20,
+      'non_deductible_amount' => 15,
+    ], '20_dollars');
+    $this->createTestEntity('PriceFieldValue', [
+      'price_field_id' => $priceField['id'],
+      'label' => '10 dollars',
+      'financial_type_id:name' => 'Financial Type 1',
+      'amount' => 10,
+      'non_deductible_amount' => 5,
+    ], '10_dollars');
+
+    $this->createTestEntity('PriceFieldValue', [
+      'price_field_id' => $priceField['id'],
+      'label' => 'Free',
+      'financial_type_id:name' => 'Financial Type 1',
+      'amount' => 0,
+      'non_deductible_amount' => 0,
+      'name' => 'free',
+    ], 'free')['id'];
+
+    $this->createTestEntity('PriceField', [
+      'price_set_id' => $priceSetID,
+      'label' => 'Financial Type 2, select field',
+      'html_type' => 'Select',
+      'name' => 'select_field',
+    ], 'select_field');
+
+    $this->createTestEntity('PriceFieldValue', [
+      'price_field_id' => $this->ids['PriceField']['select_field'],
+      'label' => 'Forty dollars',
+      'financial_type_id:name' => 'Financial Type 2',
+      'amount' => 40,
+      'non_deductible_amount' => 5,
+    ], '40_dollars');
+
+    $this->createTestEntity('PriceFieldValue', [
+      'price_field_id' => $this->ids['PriceField']['select_field'],
+      'label' => 'Thirty dollars',
+      'financial_type_id:name' => 'Financial Type 2',
+      'amount' => 30,
+      'non_deductible_amount' => 5,
+    ], '30_dollars');
+
+    $this->createTestEntity('PriceField', [
+      'price_set_id' => $priceSetID,
+      'label' => 'Quantity * 16.95',
+      'html_type' => 'Text',
+      'name' => 'text_field_16.95',
+    ], 'text_field_16.95');
+
+    $this->createTestEntity('PriceFieldValue', [
+      'price_field_id' => $this->ids['PriceField']['text_field_16.95'],
+      'label' => 'Quantity * 16.95',
+      'financial_type_id:name' => 'Financial Type 2',
+      'amount' => '16.95',
+      'name' => 'text_field_16.95',
+    ], 'text_field_16.95');
+
+    $this->createTestEntity('PriceField', [
+      'price_set_id' => $priceSetID,
+      'label' => '2.95 text field',
+      'name' => 'text_field_2.95',
+      'html_type' => 'Text',
+    ], 'text_field_2.95');
+
+    $this->createTestEntity('PriceFieldValue', [
+      'price_field_id' => $this->ids['PriceField']['text_field_2.95'],
+      'label' => 'Quantity * 2.95',
+      'name' => 'text_field_2.95',
+      'financial_type_id:name' => 'Financial Type 2',
+      'amount' => '2.95',
+    ], 'text_field_2.95');
+
+    $this->createTestEntity('PriceField', [
+      'price_set_id' => $priceSetID,
+      'label' => 'Checkbox',
+      'name' => 'check_box',
+      'html_type' => 'CheckBox',
+    ], 'check_box');
+    $this->createTestEntity('PriceFieldValue', [
+      'price_field_id' => $this->ids['PriceField']['check_box'],
+      'label' => 'CheckBox, 55 donation',
+      'financial_type_id:name' => 'Financial Type 3',
+      'amount' => 55,
+      'name' => 'check_box',
+    ], 'check_box');
+  }
+
+  /**
+   * Set up a contribution page configured with quick config.
+   *
+   * The created price set has up to 3 fields.
+   *
+   * - Radio field (key = 'contribution_amount') with 3 options ('contribution_amount_25','contribution_amount_15','contribution_amount_0'), financial type ID matches the page financial type.
+   * - Text field ('other_amount') with amount = 1 - ie if qty is 2 then amount is 2, financial type ID matches the page financial type.
+   * - Radio field (key = 'membership_amount') with one option per enabled membership type (General will be created if not exists).
+   *
+   * @param array $contributionPageParameters
+   * @param array $priceSetParameters
+   * @param bool $isSeparatePayment
+   * @param bool $membershipAmountField
+   *  - use false to suppress the creation of this field.
+   * @param bool $contributionAmountField
+   * - use false to suppress the creation of this field.
+   * @param bool $otherAmountField
+   * - use false to suppress the creation of this field.
+   * @param string $identifier
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   */
+  public function contributionPageQuickConfigCreate(array $contributionPageParameters = [], array $priceSetParameters = [], bool $isSeparatePayment = FALSE, bool $membershipAmountField = TRUE, bool $contributionAmountField = TRUE, bool $otherAmountField = TRUE, string $identifier = 'QuickConfig'): void {
+    $this->contributionPageCreatePaid($contributionPageParameters, $priceSetParameters, $identifier);
+    $priceSetID = $this->ids['PriceSet']['QuickConfig'];
+    if ($membershipAmountField !== FALSE) {
+      $priceField = $this->createTestEntity('PriceField', [
+        'price_set_id' => $priceSetID,
+        'label' => 'Membership Amount',
+        'html_type' => 'Radio',
+        'name' => 'membership_amount',
+      ], 'membership_amount');
+      $membershipTypes = \CRM_Member_BAO_MembershipType::getAllMembershipTypes();
+      if (empty($membershipTypes)) {
+        $this->createTestEntity('MembershipType', [
+          'name' => 'General',
+          'duration_unit' => 'year',
+          'duration_interval' => 1,
+          'period_type' => 'rolling',
+          'member_of_contact_id' => \CRM_Core_BAO_Domain::getDomain()->contact_id,
+          'domain_id' => 1,
+          'financial_type_id:name' => 'Member Dues',
+          'is_active' => 1,
+          'sequential' => 1,
+          'minimum_fee' => 100,
+          'visibility' => 'Public',
+        ]);
+        $membershipTypes = \CRM_Member_BAO_MembershipType::getAllMembershipTypes();
+      }
+      foreach ($membershipTypes as $membershipType) {
+        $name = 'membership_' . strtolower($membershipType['name']);
+        $this->createTestEntity('PriceFieldValue', [
+          'name' => 'membership_' . $name,
+          'label' => 'Membership Amount',
+          'amount' => $membershipType['minimum_fee'],
+          'financial_type_id:name' => 'Member Dues',
+          'format.only_id' => TRUE,
+          'membership_type_id' => $membershipType['id'],
+          'price_field_id' => $priceField['id'],
+        ], $name);
+      }
+      $this->createTestEntity('MembershipBlock', [
+        'entity_id' => $this->getContributionPageID(),
+        'entity_table' => 'civicrm_contribution_page',
+        'is_required' => TRUE,
+        'is_active' => TRUE,
+        'is_separate_payment' => $isSeparatePayment,
+        'membership_type_default' => reset($this->ids['MembershipType']),
+        'membership_types' => array_fill_keys(array_keys($membershipTypes), 1),
+      ]);
+    }
+    if ($contributionAmountField !== FALSE) {
+      $priceField = $this->createTestEntity('PriceField', [
+        'price_set_id' => $priceSetID,
+        'label' => 'Contribution Amount',
+        'html_type' => 'Radio',
+        'name' => 'contribution_amount',
+      ], 'contribution_amount');
+      $this->createTestEntity('PriceFieldValue', [
+        'price_field_id' => $priceField['id'],
+        'label' => 'Fifteen',
+        'name' => 'contribution_amount_15',
+        'amount' => 15,
+        'non_deductible_amount' => 0,
+        'financial_type_id' => $this->lookup('ContributionPage_' . $identifier, 'financial_type_id'),
+      ], 'contribution_amount_15');
+      $this->createTestEntity('PriceFieldValue', [
+        'price_field_id' => $priceField['id'],
+        'label' => 'Twenty Five',
+        'name' => 'contribution_amount_25',
+        'amount' => 25,
+        'non_deductible_amount' => 0,
+        'financial_type_id' => $this->lookup('ContributionPage_' . $identifier, 'financial_type_id'),
+      ], 'contribution_amount_25');
+      $this->createTestEntity('PriceFieldValue', [
+        'price_field_id' => $priceField['id'],
+        'label' => 'Nothing',
+        'name' => 'contribution_amount_0',
+        'amount' => 0,
+        'non_deductible_amount' => 0,
+        'financial_type_id' => $this->lookup('ContributionPage_' . $identifier, 'financial_type_id'),
+      ], 'contribution_amount_0');
+    }
+    if ($otherAmountField !== FALSE) {
+      $priceField = $this->createTestEntity('PriceField', [
+        'price_set_id' => $priceSetID,
+        'label' => 'Other Amount',
+        'html_type' => 'Text',
+        'name' => 'other_amount',
+      ], 'other_amount');
+      $this->createTestEntity('PriceFieldValue', [
+        'price_field_id' => $priceField['id'],
+        'label' => 'Other Amount',
+        'name' => 'other_amount',
+        'amount' => 1,
+        'non_deductible_amount' => 0,
+        'financial_type_id' => $this->lookup('ContributionPage_' . $identifier, 'financial_type_id'),
+      ], 'other_amount');
+    }
+  }
+
+  /**
+   * Add profiles to the event.
+   *
+   * This function is designed to reflect the
+   * normal use case where events do have profiles.
+   *
+   * Note if any classes do not want profiles, or want something different,
+   * the thinking is they should override this. Once that arises we can review
+   * making it protected rather than private & checking we are happy with the
+   * signature.
+   *
+   * @param string $identifier
+   */
+  private function addProfilesToContributionPage(string $identifier = 'ContributionPage'): void {
+    $profiles = [
+      ['name' => '_pre', 'title' => 'Page Pre Profile', 'weight' => 1, 'fields' => ['email']],
+      ['name' => '_post', 'title' => 'Page Post Profile', 'weight' => 2, 'fields' => ['first_name', 'last_name']],
+    ];
+    foreach ($profiles as $profile) {
+      $this->createContributionPageProfile($profile, $identifier);
+    }
+  }
+
+  /**
+   * Create a profile attached to an event.
+   *
+   * @param array $profile
+   * @param string $identifier
+   */
+  private function createContributionPageProfile(array $profile, string $identifier): void {
+    $profileName = $identifier . $profile['name'];
+    $profileIdentifier = $profileName;
+    try {
+      $this->setTestEntity('UFGroup', UFGroup::create(FALSE)->setValues([
+        'group_type' => 'Individual,Contact',
+        'name' => $profileName,
+        'title' => $profile['title'],
+        'frontend_title' => 'Public ' . $profile['title'],
+      ])->execute()->first(),
+        $profileIdentifier);
+    }
+    catch (\CRM_Core_Exception $e) {
+      $this->fail('UF group creation failed for ' . $profileName . ' with error ' . $e->getMessage());
+    }
+    foreach ($profile['fields'] as $field) {
+      $this->setTestEntity('UFField', UFField::create(FALSE)
+        ->setValues([
+          'uf_group_id:name' => $profileName,
+          'field_name' => $field,
+          'label' => $field,
+        ])
+        ->execute()
+        ->first(), $field . '_' . $profileIdentifier);
+    }
+    try {
+      $this->setTestEntity('UFJoin', UFJoin::create(FALSE)->setValues([
+        'module' => 'CiviContribute',
+        'uf_group_id:name' => $profileName,
+        'entity_id' => $this->getContributionPageID($identifier),
+      ])->execute()->first(), $profileIdentifier);
+    }
+    catch (\CRM_Core_Exception $e) {
+      $this->fail('UF join creation failed for UF Group ' . $profileName . ' with error ' . $e->getMessage());
+    }
+  }
+
+  /**
+   * Get suitable values for submitting the contribution form with a billing block.
+   *
+   * @param string $processorIdentifier
+   *
+   * @return array
+   */
+  protected function getBillingSubmitValues(string $processorIdentifier = 'dummy'): array {
+    // @todo determine the fields from the processor.
+    return [
+      'billing_first_name' => 'Dave',
+      'billing_middle_name' => 'Joseph',
+      'billing_last_name' => 'Wong',
+      'email-' . \CRM_Core_BAO_LocationType::getBilling() => 'dave@example.com',
+      'payment_processor_id' => $this->ids['PaymentProcessor'][$processorIdentifier],
+      'credit_card_number' => '4111111111111111',
+      'credit_card_type' => 'Visa',
+      'credit_card_exp_date' => ['M' => 9, 'Y' => 2040],
+      'cvv2' => 123,
+    ];
+  }
+
 }
diff --git a/civicrm/Civi/Test/FormTrait.php b/civicrm/Civi/Test/FormTrait.php
index a194768c156366d103f6f667021c4d4925608839..757085ae1b022e4616946cdc5578d0dd760289ae 100644
--- a/civicrm/Civi/Test/FormTrait.php
+++ b/civicrm/Civi/Test/FormTrait.php
@@ -57,6 +57,18 @@ trait FormTrait {
     }
   }
 
+  /**
+   * Assert that the sent mail included the supplied strings.
+   *
+   * @param array $strings
+   * @param int $mailIndex
+   */
+  protected function assertMailSentNotContainStrings(array $strings, int $mailIndex = 0): void {
+    foreach ($strings as $string) {
+      $this->assertMailSentNotContainingString($string, $mailIndex);
+    }
+  }
+
   /**
    * Assert that the sent mail included the supplied string.
    *
@@ -65,7 +77,38 @@ trait FormTrait {
    */
   protected function assertMailSentContainingString(string $string, int $mailIndex = 0): void {
     $mail = $this->form->getMail()[$mailIndex];
-    $this->assertStringContainsString($string, $mail['body']);
+    $this->assertStringContainsString(preg_replace('/\s+/', '', $string), preg_replace('/\s+/', '', $mail['body']), 'String not found: ' . $string . "\n" . $mail['body']);
+  }
+
+  /**
+   * Assert that the sent mail included the supplied string.
+   *
+   * @param string $string
+   * @param int $mailIndex
+   */
+  protected function assertMailSentNotContainingString(string $string, int $mailIndex = 0): void {
+    $mail = $this->form->getMail()[$mailIndex];
+    $this->assertStringNotContainsString(preg_replace('/\s+/', '', $string), preg_replace('/\s+/', '', $mail['body']));
+  }
+
+  /**
+   * Assert that the sent mail included the supplied string.
+   *
+   * @param string $string
+   * @param int $mailIndex
+   */
+  protected function assertMailSentContainingHeaderString(string $string, int $mailIndex = 0): void {
+    $mail = $this->form->getMail()[$mailIndex];
+    $this->assertStringContainsString($string, $mail['headers']);
+  }
+
+  /**
+   * Assert the right number of mails were sent.
+   *
+   * @param int $count
+   */
+  protected function assertMailSentCount(int $count): void {
+    $this->assertCount($count, $this->form->getMail());
   }
 
   /**
diff --git a/civicrm/Civi/Test/FormWrapper.php b/civicrm/Civi/Test/FormWrapper.php
index e20b031061e8328967b4bae74f107f17ddc8f653..ac13407d346cb36f562959da442d81cac3224612 100644
--- a/civicrm/Civi/Test/FormWrapper.php
+++ b/civicrm/Civi/Test/FormWrapper.php
@@ -107,6 +107,7 @@ class FormWrapper {
    * @return \Civi\Test\FormWrapper
    */
   public function processForm(int $state = self::SUBMITTED): self {
+    \CRM_Core_Smarty::singleton()->pushScope([]);
     if ($state > self::CONSTRUCTED) {
       $this->form->preProcess();
     }
@@ -119,7 +120,8 @@ class FormWrapper {
     if ($state > self::VALIDATED) {
       $this->postProcess();
     }
-    $this->templateVariables = $this->form->get_template_vars();
+    $this->templateVariables = \CRM_Core_Smarty::singleton()->get_template_vars();
+    \CRM_Core_Smarty::singleton()->popScope([]);
     return $this;
   }
 
@@ -161,7 +163,7 @@ class FormWrapper {
    */
   public function __call(string $name, array $arguments) {
     if (!empty(ReflectionUtils::getCodeDocs((new \ReflectionMethod($this->form, $name)), 'Method')['api'])) {
-      return call_user_func([$this->form, $name], $arguments);
+      return call_user_func_array([$this->form, $name], $arguments);
     }
     throw new \CRM_Core_Exception($name . ' method not supported for external use');
   }
@@ -377,4 +379,16 @@ class FormWrapper {
     throw new \CRM_Core_Exception('Deprecation should have been triggered');
   }
 
+  /**
+   * @param string $name
+   * @param mixed $value
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function checkTemplateVariable(string $name, $value): void {
+    if ($this->templateVariables[$name] !== $value) {
+      throw new \CRM_Core_Exception("Template variable $name not set to " . print_r($value, TRUE) . ' actual value: ' . print_r($this->templateVariables[$name], TRUE));
+    }
+  }
+
 }
diff --git a/civicrm/Civi/Test/Legacy/CiviTestListener.php b/civicrm/Civi/Test/Legacy/CiviTestListener.php
index 4889da722b90cba322a2ffdda2e384cd4f481238..f1cbbe0dcf04913f75eec7a54a5927fb18187128 100644
--- a/civicrm/Civi/Test/Legacy/CiviTestListener.php
+++ b/civicrm/Civi/Test/Legacy/CiviTestListener.php
@@ -28,6 +28,11 @@ class CiviTestListener extends \PHPUnit_Framework_BaseTestListener {
    */
   private $tx;
 
+  /**
+   * @var \CRM_Core_TemporaryErrorScope|null
+   */
+  public $errorScope;
+
   public function startTestSuite(\PHPUnit_Framework_TestSuite $suite) {
     $byInterface = $this->indexTestsByInterface($suite->tests());
     $this->validateGroups($byInterface);
diff --git a/civicrm/Civi/Token/TokenCompatSubscriber.php b/civicrm/Civi/Token/TokenCompatSubscriber.php
index 2dd0f9e1ef0182ae07c13af9a2a11902808b1353..9c81b9180ed1398063c6f5ecfce4914dcac00612 100644
--- a/civicrm/Civi/Token/TokenCompatSubscriber.php
+++ b/civicrm/Civi/Token/TokenCompatSubscriber.php
@@ -68,10 +68,24 @@ class TokenCompatSubscriber implements EventSubscriberInterface {
 
     // This removes the pattern used in greetings of having bits of text that
     // depend on the tokens around them - ie '{first_name}{ }{last_name}
-    // has an extra construct '{ }' which will resolve as a space if the
-    // tokens on either side are resolved to 'something'
-    $e->string = preg_replace('/\\\\|\{(\s*)?\}/', ' ', $e->string);
-
+    // has an extra construct '{ }' which will resolve what is inside the {} if the
+    // tokens on either side are resolved to 'something' (ie there is some sort of
+    // non whitespace character after the string.
+    // Accepted variants of { } are {`} {|} {,} {`} {*} {-} {(} {)}
+    // In each case any amount of preceding or trailing whitespace is acceptable.
+    // The accepted variants list contains known or suspected real world usages.
+    // Regex is to capture  { followed by 0 or more white spaces followed by
+    // a white space or one of , ` ~  ( ) - * |
+    // followed by 0 or more white spaces
+    // followed by }
+    // the captured string is followed by 1 or more non-white spaces.
+    // If it is repeated it will be replaced by the first input -
+    // ie { }{ } will be replaced by the content of the latter token.
+    // Check testGenerateDisplayNameCustomFormats for test cover.
+    $e->string = preg_replace('/\\\\|{(\s*(\s|,|`|~|\(|\)|-|\*|\|)*\s*)?\}}*(?=[^{\s])/', '$1', $e->string);
+    // Now do a another pass, removing any remaining instances (which will get rid of any that were not
+    // followed by something).
+    $e->string = preg_replace('/\\\\|' . '\{(\s*(\s|,|`|~|\(|\)|-|\*|\|)*\s?)?\}/', '', $e->string);
     if ($useSmarty) {
       $smartyVars = [];
       foreach ($e->context['smartyTokenAlias'] ?? [] as $smartyName => $tokenName) {
diff --git a/civicrm/Civi/WorkflowMessage/GenericWorkflowMessage.php b/civicrm/Civi/WorkflowMessage/GenericWorkflowMessage.php
index b2e7148e1959c8682568d5c39c506b5a6dbb8add..1dff695b1bc3d4c4ee4171a99062bee06ae26e17 100644
--- a/civicrm/Civi/WorkflowMessage/GenericWorkflowMessage.php
+++ b/civicrm/Civi/WorkflowMessage/GenericWorkflowMessage.php
@@ -26,6 +26,8 @@ use Civi\WorkflowMessage\Traits\TemplateTrait;
  * @method int|null getContactID()
  * @method $this setContact(array|null $contact)
  * @method array|null getContact()
+ * @method $this setUserEnteredText(string $text)
+ * @method $this setUserEnteredHTML(string $html)
  *
  * @support template-only
  * GenericWorkflowMessage should aim for "full" support, but it's prudent to keep
@@ -117,4 +119,30 @@ class GenericWorkflowMessage implements WorkflowMessageInterface {
     $export['smartyTokenAlias']['taxTerm'] = 'domain.tax_term';
   }
 
+  /**
+   * Additional text to include in the receipt.
+   *
+   * @var string
+   *
+   * @scope tplParams as userTextPlain
+   */
+  protected $userEnteredText;
+
+  /**
+   * Additional html to include in the receipt.
+   *
+   * @var string
+   *
+   * @scope tplParams as userText
+   */
+  protected $userEnteredHTML;
+
+  public function getUserEnteredText(): ?string {
+    return $this->userEnteredText ?: ($this->userEnteredHTML ? \CRM_Utils_String::htmlToText($this->userEnteredHTML) : NULL);
+  }
+
+  public function getUserEnteredHTML(): ?string {
+    return \CRM_Utils_String::purifyHTML($this->userEnteredHTML ?: ($this->userEnteredText ? nl2br($this->userEnteredText) : ''));
+  }
+
 }
diff --git a/civicrm/Civi/WorkflowMessage/Traits/TemplateTrait.php b/civicrm/Civi/WorkflowMessage/Traits/TemplateTrait.php
index 73d6f4127277b05ba07ebda90116fbaf0fa1e0bd..2d881193e302a97ff15e99c9f38a33b9b655a61b 100644
--- a/civicrm/Civi/WorkflowMessage/Traits/TemplateTrait.php
+++ b/civicrm/Civi/WorkflowMessage/Traits/TemplateTrait.php
@@ -13,6 +13,7 @@ namespace Civi\WorkflowMessage\Traits;
 
 use Civi\Api4\Contact;
 use Civi\Api4\MessageTemplate;
+use CRM_Core_Exception;
 
 /**
  * @method getTemplate(): ?array
diff --git a/civicrm/ang/crmUi.js b/civicrm/ang/crmUi.js
index 811fd8101ba04162e619cdfc290827266c790e75..8bc3229ed2182f36a75cfe5da99fab143f068ed6 100644
--- a/civicrm/ang/crmUi.js
+++ b/civicrm/ang/crmUi.js
@@ -787,7 +787,7 @@
           this.$onChanges = function() {
             // Timeout is to wait for `placeholder="{{ ts(...) }}"` to be resolved
             $timeout(function() {
-              $element.crmAutocomplete(ctrl.entity, ctrl.crmAutocompleteParams, {
+              $element.crmAutocomplete(ctrl.entity, ctrl.crmAutocompleteParams || {}, {
                 multiple: ctrl.multi,
                 // Only auto-open if there are no static options
                 minimumInputLength: ctrl.autoOpen && _.isEmpty(ctrl.staticOptions) ? 0 : 1,
diff --git a/civicrm/api/v3/Activity.php b/civicrm/api/v3/Activity.php
index 0c4f19e5b93ebda50d9c21da3c59b0f765dc535f..597732a9eaa5856d380673ae15dca8f0e6e045cd 100644
--- a/civicrm/api/v3/Activity.php
+++ b/civicrm/api/v3/Activity.php
@@ -265,11 +265,7 @@ function civicrm_api3_activity_get($params) {
 function _civicrm_activity_get_handleSourceContactNameOrderBy(&$params, &$options, $sql) {
   $sourceContactID = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_ActivityContact', 'record_type_id', 'Activity Source');
   if (!empty($options['sort'])
-    && in_array($options['sort'], [
-      'source_contact_name',
-      'source_contact_name desc',
-      'source_contact_name asc',
-    ])) {
+    && in_array($options['sort'], ['source_contact_name', 'source_contact_name desc', 'source_contact_name asc'])) {
     $order = substr($options['sort'], -4) === 'desc' ? 'desc' : 'asc';
     $sql->join(
       'source_contact',
@@ -340,12 +336,14 @@ function _civicrm_api3_activity_get_extraFilters(&$params, &$sql) {
       'join' => '!joinType civicrm_entity_file !alias ON (!alias.entity_table = "civicrm_activity" AND !alias.entity_id = a.id)',
       'column' => 'file_id',
     ],
-    'case_id' => [
+  ];
+  if (\CRM_Core_Component::isEnabled('CiviCase')) {
+    $rels['case_id'] = [
       'subquery' => 'a.id IN (SELECT activity_id FROM civicrm_case_activity WHERE !clause)',
       'join' => '!joinType civicrm_case_activity !alias ON (!alias.activity_id = a.id)',
       'column' => 'case_id',
-    ],
-  ];
+    ];
+  }
   foreach ($rels as $filter => $relSpec) {
     if (!empty($params[$filter])) {
       if (!is_array($params[$filter])) {
diff --git a/civicrm/api/v3/Contribution.php b/civicrm/api/v3/Contribution.php
index 8f95f781fe9be041d9f982a0d745e7ba9f69f9e9..14cf3e72aed5485dfda2975ff47a630992f89bda 100644
--- a/civicrm/api/v3/Contribution.php
+++ b/civicrm/api/v3/Contribution.php
@@ -401,8 +401,15 @@ function civicrm_api3_contribution_sendconfirmation($params) {
     'receipt_text',
     'pay_later_receipt',
     'payment_processor_id',
+    'model',
   ];
   $input = array_intersect_key($params, array_flip($allowedParams));
+  if (!isset($input['model'])) {
+    $input['model'] = [
+      // Pass through legacy receipt_text.
+      'userEnteredText' => $input['tplParams']['receipt_text'] ?? NULL,
+    ];
+  }
   CRM_Contribute_BAO_Contribution::sendMail($input, [], $params['id']);
   return [];
 }
diff --git a/civicrm/api/v3/CustomValue.php b/civicrm/api/v3/CustomValue.php
index 40feb5c6d557587a08421dc96ad74f8c1a912b52..bd77a64e4c27452f66197918f71dcbbccff9daff 100644
--- a/civicrm/api/v3/CustomValue.php
+++ b/civicrm/api/v3/CustomValue.php
@@ -122,7 +122,7 @@ function civicrm_api3_custom_value_get($params) {
     'entityID' => $params['entity_id'],
     'entityType' => $params['entity_table'] ?? '',
   ];
-  if (strstr($getParams['entityType'], 'civicrm_')) {
+  if (str_contains($getParams['entityType'], 'civicrm_')) {
     $getParams['entityType'] = ucfirst(substr($getParams['entityType'], 8));
   }
   unset($params['entity_id'], $params['entity_table']);
diff --git a/civicrm/api/v3/Mailing.php b/civicrm/api/v3/Mailing.php
index c26d6b02e56c1b53de5412bfdded8cda581403de..cad9e17039b5df01062ff8a1100d5fecebb59f4c 100644
--- a/civicrm/api/v3/Mailing.php
+++ b/civicrm/api/v3/Mailing.php
@@ -117,24 +117,6 @@ function _civicrm_api3_mailing_gettokens_spec(&$params) {
  *   Array of parameters determined by getfields.
  */
 function _civicrm_api3_mailing_create_spec(&$params) {
-  $params['created_id']['api.default'] = 'user_contact_id';
-
-  $params['override_verp']['api.default'] = !CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'track_civimail_replies');
-  $params['visibility']['api.default'] = 'Public Pages';
-  $params['dedupe_email']['api.default'] = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'dedupe_email_default');
-
-  $params['forward_replies']['api.default'] = FALSE;
-  $params['auto_responder']['api.default'] = FALSE;
-  $params['open_tracking']['api.default'] = Civi::settings()->get('open_tracking_default');
-  $params['url_tracking']['api.default'] = Civi::settings()->get('url_tracking_default');
-
-  $params['header_id']['api.default'] = CRM_Mailing_PseudoConstant::defaultComponent('Header', '');
-  $params['footer_id']['api.default'] = CRM_Mailing_PseudoConstant::defaultComponent('Footer', '');
-  $params['optout_id']['api.default'] = CRM_Mailing_PseudoConstant::defaultComponent('OptOut', '');
-  $params['reply_id']['api.default'] = CRM_Mailing_PseudoConstant::defaultComponent('Reply', '');
-  $params['resubscribe_id']['api.default'] = CRM_Mailing_PseudoConstant::defaultComponent('Resubscribe', '');
-  $params['unsubscribe_id']['api.default'] = CRM_Mailing_PseudoConstant::defaultComponent('Unsubscribe', '');
-  $params['mailing_type']['api.default'] = 'standalone';
   $defaultAddress = CRM_Core_BAO_Domain::getNameAndEmail(TRUE, TRUE);
   foreach ($defaultAddress as $value) {
     if (preg_match('/"(.*)" <(.*)>/', $value, $match)) {
diff --git a/civicrm/api/v3/MessageTemplate.php b/civicrm/api/v3/MessageTemplate.php
index 08c281f295a614539db2f370f04c002c24224c5b..d2683efbc13a5f4335356bc5f2edb219cedcf130 100644
--- a/civicrm/api/v3/MessageTemplate.php
+++ b/civicrm/api/v3/MessageTemplate.php
@@ -107,6 +107,12 @@ function civicrm_api3_message_template_send($params) {
       unset($params[$field]);
     }
   }
+  if (!isset($params['model'])) {
+    $params['model'] = [
+      // Pass through legacy receipt_text.
+      'userEnteredText' => $params['tplParams']['receipt_text'] ?? NULL,
+    ];
+  }
   if (empty($params['messageTemplateID'])) {
     if (empty($params['workflow'])) {
       // Can't use civicrm_api3_verify_mandatory for this because it would give the wrong field names
diff --git a/civicrm/api/v3/utils.php b/civicrm/api/v3/utils.php
index 189b6efdd60aa8dbf64db54092799c15f206984c..f5a7e89b818cf736ce09cf1af830bb4c99362bde 100644
--- a/civicrm/api/v3/utils.php
+++ b/civicrm/api/v3/utils.php
@@ -637,7 +637,7 @@ function _civicrm_api3_dao_set_filter(&$dao, $params, $unique = TRUE, $extraSql
 
   //accept filters like filter.activity_date_time_high
   // std is now 'filters' => ..
-  if (strstr(implode(',', array_keys($params)), 'filter')) {
+  if (str_contains(implode(',', array_keys($params)), 'filter')) {
     if (isset($params['filters']) && is_array($params['filters'])) {
       foreach ($params['filters'] as $paramkey => $paramvalue) {
         _civicrm_api3_apply_filters_to_dao($paramkey, $paramvalue, $dao);
@@ -645,7 +645,7 @@ function _civicrm_api3_dao_set_filter(&$dao, $params, $unique = TRUE, $extraSql
     }
     else {
       foreach ($params as $paramkey => $paramvalue) {
-        if (strstr($paramkey, 'filter')) {
+        if (str_contains($paramkey, 'filter')) {
           _civicrm_api3_apply_filters_to_dao(substr($paramkey, 7), $paramvalue, $dao);
         }
       }
@@ -723,11 +723,11 @@ function _civicrm_api3_dao_set_filter(&$dao, $params, $unique = TRUE, $extraSql
  *   DAO object.
  */
 function _civicrm_api3_apply_filters_to_dao($filterField, $filterValue, &$dao) {
-  if (strstr($filterField, 'high')) {
+  if (str_contains($filterField, 'high')) {
     $fieldName = substr($filterField, 0, -5);
     $dao->whereAdd("($fieldName <= $filterValue )");
   }
-  if (strstr($filterField, 'low')) {
+  if (str_contains($filterField, 'low')) {
     $fieldName = substr($filterField, 0, -4);
     $dao->whereAdd("($fieldName >= $filterValue )");
   }
@@ -2489,7 +2489,7 @@ function _civicrm_api3_field_value_check(&$params, $fieldName, $type = NULL) {
 
   if (!empty($fieldValue) && is_array($fieldValue) &&
     (array_search(key($fieldValue), CRM_Core_DAO::acceptedSQLOperators()) ||
-      $type == 'String' && strstr(key($fieldValue), 'EMPTY'))
+      $type == 'String' && str_contains(key($fieldValue), 'EMPTY'))
   ) {
     $op = key($fieldValue);
     $fieldValue = $fieldValue[$op] ?? NULL;
diff --git a/civicrm/bin/ContributionProcessor.php b/civicrm/bin/ContributionProcessor.php
index 00b3776e0b3ed038f94ce38bdc4f58f653e7e3bc..6dddb07a9bc3c76957acaa89eba16f0c99fa9a7c 100644
--- a/civicrm/bin/ContributionProcessor.php
+++ b/civicrm/bin/ContributionProcessor.php
@@ -450,11 +450,7 @@ class CiviContributeProcessor {
     }
 
     $contribution = CRM_Contribute_BAO_Contribution::create($params);
-    if (!$contribution->id) {
-      return FALSE;
-    }
-
-    return TRUE;
+    return (bool) $contribution->id;
   }
 
   /**
diff --git a/civicrm/civicrm-version.php b/civicrm/civicrm-version.php
index 1ef579a3470df2b131059db3d627f094d4e04e2d..8f91eca79805e0e76f39d8da5164df9d50b855a9 100644
--- a/civicrm/civicrm-version.php
+++ b/civicrm/civicrm-version.php
@@ -1,7 +1,7 @@
 <?php
 /** @deprecated */
 function civicrmVersion( ) {
-  return array( 'version'  => '5.68.1',
+  return array( 'version'  => '5.69.0',
                 'cms'      => 'Wordpress',
                 'revision' => '' );
 }
diff --git a/civicrm/composer.json b/civicrm/composer.json
index 80d4125b6a400c1e8287b84e3f580ecd87a33da8..e4bbc19350689c2ddeb750cf7fb457aaad2b7747 100644
--- a/civicrm/composer.json
+++ b/civicrm/composer.json
@@ -53,7 +53,7 @@
     "php": "~7.3 || ~8",
     "composer-runtime-api": "~2.0",
     "dompdf/dompdf" : "~2.0.4",
-    "firebase/php-jwt": ">=3 <6",
+    "firebase/php-jwt": ">=3 <7",
     "rubobaquero/phpquery": "^0.9.15",
     "symfony/config": "~4.4 || ~6.0",
     "symfony/polyfill-iconv": "~1.0",
diff --git a/civicrm/composer.lock b/civicrm/composer.lock
index bcf9dffb0eafc2a2efe751ea3f823cf457e12836..40f817de664dd7dc547b7ac8d3edf5f3904afef9 100644
--- a/civicrm/composer.lock
+++ b/civicrm/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "d3d022bba1ca31f64298436418e2c630",
+    "content-hash": "160673a90ce1ebd1845eb3d7d4320a33",
     "packages": [
         {
             "name": "adrienrn/php-mimetyper",
@@ -610,23 +610,32 @@
         },
         {
             "name": "firebase/php-jwt",
-            "version": "v5.2.1",
+            "version": "v6.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/firebase/php-jwt.git",
-                "reference": "f42c9110abe98dd6cfe9053c49bc86acc70b2d23"
+                "reference": "4dd1e007f22a927ac77da5a3fbb067b42d3bc224"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/firebase/php-jwt/zipball/f42c9110abe98dd6cfe9053c49bc86acc70b2d23",
-                "reference": "f42c9110abe98dd6cfe9053c49bc86acc70b2d23",
+                "url": "https://api.github.com/repos/firebase/php-jwt/zipball/4dd1e007f22a927ac77da5a3fbb067b42d3bc224",
+                "reference": "4dd1e007f22a927ac77da5a3fbb067b42d3bc224",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.0"
+                "php": "^7.1||^8.0"
             },
             "require-dev": {
-                "phpunit/phpunit": ">=4.8 <=9"
+                "guzzlehttp/guzzle": "^6.5||^7.4",
+                "phpspec/prophecy-phpunit": "^1.1",
+                "phpunit/phpunit": "^7.5||^9.5",
+                "psr/cache": "^1.0||^2.0",
+                "psr/http-client": "^1.0",
+                "psr/http-factory": "^1.0"
+            },
+            "suggest": {
+                "ext-sodium": "Support EdDSA (Ed25519) signatures",
+                "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present"
             },
             "type": "library",
             "autoload": {
@@ -658,43 +667,52 @@
             ],
             "support": {
                 "issues": "https://github.com/firebase/php-jwt/issues",
-                "source": "https://github.com/firebase/php-jwt/tree/v5.2.1"
+                "source": "https://github.com/firebase/php-jwt/tree/v6.4.0"
             },
-            "time": "2021-02-12T00:02:00+00:00"
+            "time": "2023-02-09T21:01:23+00:00"
         },
         {
             "name": "guzzlehttp/guzzle",
-            "version": "6.5.8",
+            "version": "7.6.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981"
+                "reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981",
-                "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/8444a2bacf1960bc6a2b62ed86b8e72e11eebe51",
+                "reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51",
                 "shasum": ""
             },
             "require": {
                 "ext-json": "*",
-                "guzzlehttp/promises": "^1.0",
-                "guzzlehttp/psr7": "^1.9",
-                "php": ">=5.5",
-                "symfony/polyfill-intl-idn": "^1.17"
+                "guzzlehttp/promises": "^1.5",
+                "guzzlehttp/psr7": "^1.9.1 || ^2.4.5",
+                "php": "^7.2.5 || ^8.0",
+                "psr/http-client": "^1.0",
+                "symfony/deprecation-contracts": "^2.2 || ^3.0"
+            },
+            "provide": {
+                "psr/http-client-implementation": "1.0"
             },
             "require-dev": {
+                "bamarni/composer-bin-plugin": "^1.8.1",
                 "ext-curl": "*",
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-                "psr/log": "^1.1"
+                "php-http/client-integration-tests": "^3.0",
+                "phpunit/phpunit": "^8.5.29 || ^9.5.23",
+                "psr/log": "^1.1 || ^2.0 || ^3.0"
             },
             "suggest": {
+                "ext-curl": "Required for CURL handler support",
+                "ext-intl": "Required for Internationalized Domain Name (IDN) support",
                 "psr/log": "Required for using the Log middleware"
             },
             "type": "library",
             "extra": {
-                "branch-alias": {
-                    "dev-master": "6.5-dev"
+                "bamarni-bin": {
+                    "bin-links": true,
+                    "forward-command": false
                 }
             },
             "autoload": {
@@ -747,19 +765,20 @@
                 }
             ],
             "description": "Guzzle is a PHP HTTP client library",
-            "homepage": "http://guzzlephp.org/",
             "keywords": [
                 "client",
                 "curl",
                 "framework",
                 "http",
                 "http client",
+                "psr-18",
+                "psr-7",
                 "rest",
                 "web service"
             ],
             "support": {
                 "issues": "https://github.com/guzzle/guzzle/issues",
-                "source": "https://github.com/guzzle/guzzle/tree/6.5.8"
+                "source": "https://github.com/guzzle/guzzle/tree/7.6.1"
             },
             "funding": [
                 {
@@ -775,7 +794,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-06-20T22:16:07+00:00"
+            "time": "2023-05-15T20:43:01+00:00"
         },
         {
             "name": "guzzlehttp/promises",
@@ -3590,6 +3609,73 @@
             ],
             "time": "2022-06-22T15:01:38+00:00"
         },
+        {
+            "name": "symfony/deprecation-contracts",
+            "version": "v2.5.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/deprecation-contracts.git",
+                "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
+                "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "2.5-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "function.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "A generic function and convention to trigger deprecation notices",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-01-02T09:53:40+00:00"
+        },
         {
             "name": "symfony/event-dispatcher",
             "version": "v4.4.42",
@@ -4043,177 +4129,6 @@
             ],
             "time": "2022-11-03T14:55:06+00:00"
         },
-        {
-            "name": "symfony/polyfill-intl-idn",
-            "version": "v1.27.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-idn.git",
-                "reference": "639084e360537a19f9ee352433b84ce831f3d2da"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da",
-                "reference": "639084e360537a19f9ee352433b84ce831f3d2da",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1",
-                "symfony/polyfill-intl-normalizer": "^1.10",
-                "symfony/polyfill-php72": "^1.10"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Idn\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Laurent Bassin",
-                    "email": "laurent@bassin.info"
-                },
-                {
-                    "name": "Trevor Rowbotham",
-                    "email": "trevor.rowbotham@pm.me"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "idn",
-                "intl",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2022-11-03T14:55:06+00:00"
-        },
-        {
-            "name": "symfony/polyfill-intl-normalizer",
-            "version": "v1.27.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
-                "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6",
-                "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for intl's Normalizer class and related functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "intl",
-                "normalizer",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2022-11-03T14:55:06+00:00"
-        },
         {
             "name": "symfony/polyfill-mbstring",
             "version": "v1.27.0",
diff --git a/civicrm/css/backdrop.css b/civicrm/css/backdrop.css
index 89243bf5ceee44face2d3050c7120338fd840623..286232774dc2c70892d40a2956d7f8ccbaf95a67 100644
--- a/civicrm/css/backdrop.css
+++ b/civicrm/css/backdrop.css
@@ -57,3 +57,16 @@
 .crm-container.ui-dialog .ui-dialog-titlebar-close .ui-icon.fa-compress::before {
   content: "\f066";
 }
+
+/* Resets details/summary appearance for accordions */
+
+.crm-container details {
+  border: 0 solid transparent;
+  background-color: inherit;
+  padding: 0;
+  margin: inherit;
+}
+.crm-container details summary span {
+  color: inherit;
+  font-size: inherit;
+}
diff --git a/civicrm/css/civicrm.css b/civicrm/css/civicrm.css
index 0cbaa014e48c67bc5959272651fef5baa5071731..956e5ca804730214fd5a4d938eb427b69e4e1d38 100644
--- a/civicrm/css/civicrm.css
+++ b/civicrm/css/civicrm.css
@@ -2194,6 +2194,19 @@ div.crm-master-accordion-header a.helpicon {
 
 /* Specific types of headers */
 
+.crm-container summary { /* default summary setting*/
+  display: list-item;
+  list-style: none;
+  cursor: pointer;
+  font-size: 1rem;
+  padding: 0.5rem;
+  font-weight: bold;
+}
+
+.crm-container summary::-webkit-details-marker { /* Safari fix to remove summary icon */
+  display: none;
+}
+
 #crm-container .widget-content .crm-accordion-header {
   background-color: #efefe5;
   color: #080808;
@@ -2205,24 +2218,37 @@ div.crm-master-accordion-header a.helpicon {
   color: #3e3e3e;
 }
 
-.crm-container .crm-accordion-header {
+.crm-container details .crm-accordion-body {
+  display: block; /* Fix for old JS trying to hide crm-accordion-body */
+}
+
+.crm-container .crm-accordion-header,
+.crm-container .collapsed .crm-accordion-header,
+.crm-container .crm-accordion-bold > summary,
+.crm-container details > .crm-accordion-header { /* applies civi's default accordion header to summary & .crm-accrdion-bold */
   color: #f5f6f1;
   font-weight: normal;
   padding: 4px 8px;
   background-color: #5d677b;
-  border-radius: 4px 4px 0 0;
+  border-radius: 4px;
 }
 
-.crm-container .collapsed .crm-accordion-header {
-  border-radius: 4px;
+.crm-container div.crm-accordion-header,
+.crm-container details[open] > .crm-accordion-header,
+.crm-container .crm-accordion-bold[open] > summary { /* open version of that */
+  border-radius: 4px 4px 0 0;
 }
 
-.crm-container .crm-accordion-header.active {
+.crm-container .crm-accordion-header.active,
+.crm-container .crm-accordion-bold > summary.active { /* active version of that */
   font-weight: bold;
   background-color: #3e3e3e;
 }
 
-.crm-container .crm-accordion-header:hover {
+.crm-container .crm-accordion-header:hover,
+.crm-container .crm-accordion-header:focus,
+.crm-container .crm-accordion-bold > summary:hover,
+.crm-container .crm-accordion-bold > summary:focus { /* hover version of that */
   background-color: #2f2f2e;
 }
 
@@ -2230,33 +2256,43 @@ div.crm-master-accordion-header a.helpicon {
   background-color: #e8e8de;
 }
 
-.crm-container .crm-accordion-wrapper .crm-master-accordion-header {
+.crm-container .crm-accordion-wrapper .crm-master-accordion-header,
+.crm-container .crm-accordion-light > summary { /* adds a utility class to match civi's transparent accordion header style */
   background-color: transparent;
+  font-weight: normal;
   color: #3e3e3e;
-}
-
-.crm-container .crm-accordion-wrapper .crm-master-accordion-header {
-  font-size: 16px;
+  font-size: 1rem;
 }
 
 .crm-container .crm-master-accordion-header.crm-accordion-header:hover,
-.crm-container .crm-collapsible .collapsible-title:hover {
+.crm-container .crm-accordion-light > summary:hover,
+.crm-container .crm-collapsible .collapsible-title:hover,
+.crm-container .crm-master-accordion-header.crm-accordion-header:focus,
+.crm-container .crm-accordion-light > summary:focus,
+.crm-container .crm-collapsible .collapsible-title:focus { /* hover state for this */
   color: #121a2d;
 }
 
-.crm-container .collapsed .crm-accordion-body,
+.crm-container div.collapsed .crm-accordion-body,
+.crm-container fieldset.collapsed .crm-accordion-body,
 .crm-container .crm-collapsible.collapsed .collapsible-title + * {
   display: none;
 }
 
+.crm-container details details {
+  padding: 0 0.25rem; /* adds padding for nested accordions */
+}
+
 /* Collapse icon */
 
 /* General icon settings for all collapsible things */
-.crm-container .crm-accordion-header:before,
+.crm-container div.crm-accordion-header:before,
+.crm-container .collapsed div.crm-accordion-header:before,
 .crm-container .crm-collapsible .collapsible-title:before,
 .crm-container span.collapsed:before,
 .crm-container a.collapsed:before,
-.crm-container .crm-expand-row:before {
+.crm-container .crm-expand-row:before,
+.crm-container details > summary:before {
   font-family: "FontAwesome";
   display: inline-block;
   width: 1em;
@@ -2264,28 +2300,21 @@ div.crm-master-accordion-header a.helpicon {
   font-size: 13px;
 }
 
-/* Collapsed icon */
-.crm-container .collapsed .crm-accordion-header:before,
-.crm-container .crm-collapsible.collapsed .collapsible-title:before,
-.crm-container span.collapsed:before,
-.crm-container a.collapsed:before,
-.crm-container .crm-expand-row:before {
-  content: "\f0da";
-}
-
 /* Expanded icon */
-.crm-container .crm-accordion-header:before,
+.crm-container div.crm-accordion-header:before,
 .crm-container .crm-collapsible .collapsible-title:before,
 .crm-container span.expanded:before,
 .crm-container a.expanded:before,
-.crm-container .crm-expand-row.expanded:before {
+.crm-container .crm-expand-row.expanded:before,
+.crm-container details[open] > summary:before {
   font-family: "FontAwesome";
   content: "\f0d7";
 }
 
 /* Accordion bodies */
 
-.crm-container .crm-accordion-body {
+.crm-container .crm-accordion-wrapper .crm-accordion-body,
+.crm-container details.crm-accordion-bold .crm-accordion-body {
   border-radius: 0 0 4px 4px;
   border: 1px solid #70716b;
   border-top: 0;
@@ -2296,13 +2325,15 @@ div.crm-master-accordion-header a.helpicon {
   border-color: #e8e8de;
 }
 
-.crm-container .crm-master-accordion-header+.crm-accordion-body {
+.crm-container .crm-master-accordion-header+.crm-accordion-body,
+.crm-accordion-wrapper.crm-accordion-light {
   border: none;
   padding: 0;
 }
 
 #crm-container .widget-content .crm-accordion-body,
-.crm-container .crm-accordion-body.padded {
+.crm-container .crm-accordion-body.padded,
+.crm-container details.padded {
   padding-left: .5em;
   padding-right: .5em;
 }
@@ -3932,3 +3963,20 @@ span.crm-status-icon {
 .dedupe-rules-dialog label > * {
   margin-left: 30px;
 }
+
+/* Standalone-only styles. A minimal set to make it usable out-of-the-box. */
+html.crm-standalone body {
+  --sa-font-family: sans-serif;
+  --roundness: 3px;
+  --error-colour: #a00;
+  --warning-colour: #fbb862;
+  --success-colour: #86c66c;
+  --label-colour: #464354;
+  --background-colour: rgb(242,242,237);
+  --box-padding: 1.6rem;
+  --box-background: #fff;
+  margin: 0;
+  padding: 0;
+  font-family: var(--sa-font-family);
+  background-color: var(--background-colour);
+}
diff --git a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminInjector.php b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminInjector.php
index 62484420828732f6fc9d323481153b0e34c5dd98..bc146467948d146304f417897f62a7cc2483806c 100644
--- a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminInjector.php
+++ b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminInjector.php
@@ -11,6 +11,8 @@
 
 namespace Civi\AfformAdmin;
 
+use Civi\Api4\Afform;
+use Civi\Api4\SavedSearch;
 use Civi\Core\Service\AutoSubscriber;
 use CRM_Afform_ExtensionUtil as E;
 
@@ -36,14 +38,58 @@ class AfformAdminInjector extends AutoSubscriber {
     $changeSet = \Civi\Angular\ChangeSet::create('afformAdmin')
       ->alterHtml(';\\.aff\\.html$;', function($doc, $path) {
         try {
-          $moduleName = basename($path, '.aff.html');
-          // If the user has "administer CiviCRM", inject edit link
+          // If the user has "administer CiviCRM", inject gear menu with edit links
           if (\CRM_Core_Permission::check('administer CiviCRM')) {
-            $url = \CRM_Utils_System::url('civicrm/admin/afform', NULL, FALSE, '/edit/' . $moduleName, TRUE);
-            // Append link to afform directive element (using loop but there should be only one)
-            foreach (pq('af-form[ctrl]', $doc) as $afForm) {
-              pq($afForm)->append('<a href="' . $url . '" target="_blank" class="af-admin-edit-form-link"><i class="crm-i fa-gear"></i> ' . E::ts('Edit Form') . '</a>');
+            $afform = Afform::get()
+              ->addWhere('module_name', '=', basename($path, '.aff.html'))
+              ->addSelect('name', 'search_displays', 'title')
+              ->execute()->single();
+            // Create a link to edit the form, plus all embedded SavedSearches
+            $links = [
+              [
+                'url' => \CRM_Utils_System::url('civicrm/admin/afform', NULL, FALSE, "/edit/{$afform['name']}", TRUE),
+                'text' => E::ts('Edit %1 in FormBuilder', [1 => "<em>{$afform['title']}</em>"]),
+                'icon' => 'fa-pencil',
+              ],
+            ];
+            if ($afform['search_displays']) {
+              $searchNames = [];
+              foreach ($afform['search_displays'] as $searchAndDisplayName) {
+                $searchNames[] = explode('.', $searchAndDisplayName)[0];
+              }
+              $savedSearches = SavedSearch::get()
+                ->addWhere('name', 'IN', $searchNames)
+                ->addSelect('id', 'label')
+                ->execute();
+              foreach ($savedSearches as $savedSearch) {
+                $links[] = [
+                  'url' => \CRM_Utils_System::url('civicrm/admin/search', NULL, FALSE, "/edit/{$savedSearch['id']}", TRUE),
+                  'text' => E::ts('Edit %1 in SearchKit', [1 => "<em>{$savedSearch['label']}</em>"]),
+                  'icon' => 'fa-search-plus',
+                ];
+              }
             }
+            $linksMarkup = '';
+            foreach ($links as $link) {
+              $linksMarkup .= <<<HTML
+                <li>
+                  <a href="{$link['url']}" target="_blank">
+                    <i class="crm-i fa-fw {$link['icon']}"></i> {$link['text']}
+                  </a>
+                </li>
+              HTML;
+            }
+            $editMenu = <<<HTML
+              <div class="pull-right btn-group af-admin-edit-form-link">
+                <button type="button" class="btn dropdown-toggle btn-sm" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                  <i class="crm-i fa-gear"></i> <span class="caret"></span>
+                </button>
+                <ul class="dropdown-menu">$linksMarkup</ul>
+              </div>
+            HTML;
+            // Append link to end of afform markup so it has the highest z-index and is clickable.
+            // afCore.css will control placement at the top of the form.
+            pq($doc)->append($editMenu);
           }
         }
         catch (\Exception $e) {
diff --git a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php
index e1516a21e644b887b5c4481227274fd14ca3e27f..2c3fcc75ce5939af19f3f04a51fab508225e14ae 100644
--- a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php
+++ b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php
@@ -239,6 +239,7 @@ class AfformAdminMeta {
             'class' => 'af-button btn btn-primary',
             'crm-icon' => 'fa-check',
             'ng-click' => 'afform.submit()',
+            'ng-if' => 'afform.showSubmitButton',
             '#children' => [
               ['#text' => E::ts('Submit')],
             ],
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor.ang.php b/civicrm/ext/afform/admin/ang/afGuiEditor.ang.php
index f2953b222e0c382b43ab5015656d0b6357162225..1104e92ab98fafb9da6eb57ba8e2669a56bf12de 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor.ang.php
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor.ang.php
@@ -8,7 +8,7 @@ return [
   ],
   'css' => ['ang/afGuiEditor.css'],
   'partials' => ['ang/afGuiEditor'],
-  'requires' => ['crmUi', 'crmUtil', 'dialogService', 'api4', 'crmMonaco', 'ui.sortable'],
+  'requires' => ['crmUi', 'crmUtil', 'crmDialog', 'api4', 'crmMonaco', 'ui.sortable'],
   'settingsFactory' => ['Civi\AfformAdmin\AfformAdminMeta', 'getMetadata'],
   'basePages' => [],
   'exports' => [
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor.css b/civicrm/ext/afform/admin/ang/afGuiEditor.css
index 3081736bd40ff865a880fe7e4e8d700c6351731d..82b87a66fb6cc01c2941f2755ef3adae79180503 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor.css
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor.css
@@ -610,3 +610,101 @@ body.af-gui-dragging {
   border: 2px solid #0071bd;
   min-height: 30px;
 }
+
+/* Rules for Conditional dialog */
+#bootstrap-theme.af-gui-conditional-dialog fieldset {
+  padding: 6px;
+  border-top: 1px solid lightgrey;
+  margin-top: 10px;
+  margin-bottom: 10px;
+  position: relative;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog fieldset fieldset {
+  padding-top: 0;
+  border-left: 1px solid lightgrey;
+  border-right: 1px solid lightgrey;
+  border-bottom: 1px solid lightgrey;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog fieldset legend {
+  background-color: white;
+  font-size: 13px;
+  margin: 0;
+  width: auto;
+  border: 0 none;
+  padding: 2px 5px;
+  text-transform: none;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog af-gui-clause > .btn-group {
+  position: absolute;
+  right: 0;
+  top: 0;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog fieldset div.api4-input {
+  margin-bottom: 10px;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog fieldset div.api4-input.ui-sortable-helper {
+  background-color: rgba(255, 255, 255, .9);
+}
+
+#bootstrap-theme.af-gui-conditional-dialog fieldset div.api4-input.ui-sortable-helper {
+  background-color: rgba(255, 255, 255, .9);
+}
+
+#bootstrap-theme.af-gui-conditional-dialog .api4-clause-fieldset fieldset {
+  float: right;
+  width: calc(100% - 58px);
+  margin-top: -8px;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog .api4-clause-fieldset.api4-sorting fieldset .api4-clause-group-sortable {
+  min-height: 3.5em;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog legend[ng-click] {
+  cursor: pointer;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog .api4-input-group {
+  display: inline-block;
+}
+
+#bootstrap-theme i.crm-i.af-gui-conditional-dialog-move-icon {
+  opacity: .5;
+}
+#bootstrap-theme .crm-draggable:hover > i.crm-i.af-gui-conditional-dialog-move-icon,
+#bootstrap-theme .crm-draggable:hover > * > i.crm-i.af-gui-conditional-dialog-move-icon {
+  opacity: 1;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog .api4-clause-badge {
+  width: 55px;
+  display: inline-block;
+  cursor: move;
+}
+#bootstrap-theme.af-gui-conditional-dialog .api4-clause-badge .badge {
+  opacity: .5;
+  position: relative;
+}
+#bootstrap-theme.af-gui-conditional-dialog .api4-clause-badge .caret {
+  margin: 0;
+}
+/* Icon only shown while dragging */
+#bootstrap-theme.af-gui-conditional-dialog .api4-clause-badge .crm-i {
+  display: none;
+  padding: 0 6px;
+}
+#bootstrap-theme.af-gui-conditional-dialog .ui-sortable-helper .api4-clause-badge .badge span {
+  display: none;
+}
+#bootstrap-theme.af-gui-conditional-dialog .ui-sortable-helper .api4-clause-badge .crm-i {
+  display: inline-block;
+}
+
+#bootstrap-theme.af-gui-conditional-dialog .api4-operator {
+  width: 110px;
+}
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor.js b/civicrm/ext/afform/admin/ang/afGuiEditor.js
index 6b52f6228d27c233bb49b09039f61065aab4ec34..c93ca01cfab9798d2d54a345c2eab948797b074e 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor.js
@@ -210,6 +210,29 @@
           return indexBy ? _.indexBy(items, indexBy) : items;
         },
 
+        // Recursively searches part of a form and returns all elements matching predicate
+        // Will recurse into block elements
+        // Will stop recursing when it encounters an element matching 'exclude'
+        getFormElements: function getFormElements(collection, predicate, exclude) {
+          var childMatches = [],
+            items = _.filter(collection, predicate),
+            isExcluded = exclude ? (_.isFunction(exclude) ? exclude : _.matches(exclude)) : _.constant(false);
+          function isIncluded(item) {
+            return !isExcluded(item);
+          }
+          _.each(_.filter(collection, isIncluded), function(item) {
+            if (_.isPlainObject(item) && item['#children']) {
+              childMatches = getFormElements(item['#children'], predicate, exclude);
+            } else if (item['#tag'] && item['#tag'] in CRM.afGuiEditor.blocks) {
+              childMatches = getFormElements(CRM.afGuiEditor.blocks[item['#tag']].layout, predicate, exclude);
+            }
+            if (childMatches.length) {
+              Array.prototype.push.apply(items, childMatches);
+            }
+          });
+          return items;
+        },
+
         // Applies _.remove() to an item and its children
         removeRecursive: function removeRecursive(collection, removeParams) {
           _.remove(collection, removeParams);
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiClause.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiClause.component.js
new file mode 100644
index 0000000000000000000000000000000000000000..8424579c83bf4260660b98dc92b0d1cfdb09e10b
--- /dev/null
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiClause.component.js
@@ -0,0 +1,78 @@
+(function(angular, $, _) {
+  "use strict";
+
+  angular.module('afGuiEditor').component('afGuiClause', {
+    bindings: {
+      fields: '<',
+      fieldDefns: '<',
+      clauses: '<',
+      skip: '<',
+      op: '@',
+      label: '@',
+      hideLabel: '@',
+      placeholder: '<',
+      deleteGroup: '&'
+    },
+    templateUrl: '~/afGuiEditor/afGuiClause.html',
+    controller: function ($scope, $element) {
+      var ts = $scope.ts = CRM.ts('org.civicrm.afform_admin'),
+        ctrl = this,
+        meta = {};
+      this.conjunctions = {AND: ts('And'), OR: ts('Or'), NOT: ts('Not')};
+      this.sortOptions = {
+        axis: 'y',
+        connectWith: '.api4-clause-group-sortable',
+        containment: $element.closest('.api4-clause-fieldset'),
+        over: onSortOver,
+        start: onSort,
+        stop: onSort
+      };
+
+      this.$onInit = function() {
+        ctrl.hasParent = !!$element.attr('delete-group');
+      };
+
+      this.getField = function(expr) {
+        return ctrl.fieldDefns[expr];
+      };
+
+      this.addGroup = function(op) {
+        ctrl.clauses.push([op, []]);
+      };
+
+      function onSort(event, ui) {
+        $($element).closest('.api4-clause-fieldset').toggleClass('api4-sorting', event.type === 'sortstart');
+        $('.api4-input.form-inline').css('margin-left', '');
+      }
+
+      // Indent clause while dragging between nested groups
+      function onSortOver(event, ui) {
+        var offset = 0;
+        if (ui.sender) {
+          offset = $(ui.placeholder).offset().left - $(ui.sender).offset().left;
+        }
+        $('.api4-input.form-inline.ui-sortable-helper').css('margin-left', '' + offset + 'px');
+      }
+
+      this.addClause = function(value) {
+        if (value) {
+          var newIndex = ctrl.clauses.length;
+          ctrl.clauses.push([value, '=', '""']);
+        }
+      };
+
+      this.deleteRow = function(index) {
+        ctrl.clauses.splice(index, 1);
+      };
+
+      // Remove empty values
+      this.changeClauseField = function(clause, index) {
+        if (clause[0] === '') {
+          ctrl.deleteRow(index);
+        }
+      };
+
+    }
+  });
+
+})(angular, CRM.$, CRM._);
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiClause.html b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiClause.html
new file mode 100644
index 0000000000000000000000000000000000000000..2aa86d6c09e2bee5adf054c6966ee9488e7d0e4c
--- /dev/null
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiClause.html
@@ -0,0 +1,43 @@
+<legend ng-if="!$ctrl.hideLabel">{{ $ctrl.label || ts('%1 group', {1: $ctrl.conjunctions[$ctrl.op]}) }}</legend>
+<div class="btn-group btn-group-xs" ng-if=":: $ctrl.hasParent">
+  <button type="button" class="btn btn-danger-outline" ng-click="$ctrl.deleteGroup()" title="{{:: ts('Remove group') }}">
+    <i class="crm-i fa-trash" aria-hidden="true"></i>
+  </button>
+</div>
+<div class="api4-clause-group-sortable" ng-model="$ctrl.clauses" ui-sortable="$ctrl.sortOptions">
+  <div class="api4-input form-inline clearfix" ng-repeat="(index, clause) in $ctrl.clauses" ng-class="{hiddenElement: index &lt; ($ctrl.skip || 0)}">
+    <div ng-if="index &gt;= ($ctrl.skip || 0)">
+      <div class="api4-clause-badge" title="{{:: ts('Drag to reposition') }}">
+        <span class="badge badge-info">
+          <span ng-if="index === ($ctrl.skip || 0) && !$ctrl.hasParent">{{ $ctrl.label }}</span>
+          <span ng-if="index &gt; ($ctrl.skip || 0) || $ctrl.hasParent">{{ $ctrl.conjunctions[$ctrl.op] }}</span>
+          <i class="crm-i fa-arrows" aria-hidden="true"></i>
+        </span>
+      </div>
+      <div ng-if="!$ctrl.conjunctions[clause[0]]" class="api4-input-group">
+        <input class="form-control collapsible-optgroups" ng-model="clause[0]" crm-ui-select="{data: $ctrl.fields, allowClear: true, placeholder: 'Field'}" ng-change="$ctrl.changeClauseField(clause, index)" />
+        <af-gui-condition clause="clause" field="$ctrl.getField(clause[0])" offset="1" format="$ctrl.format" class="form-group"></af-gui-condition>
+      </div>
+      <fieldset class="clearfix" ng-if="$ctrl.conjunctions[clause[0]]">
+        <af-gui-clause clauses="clause[1]" fields="$ctrl.fields" field-defns="$ctrl.fieldDefns" op="{{ clause[0] }}" delete-group="$ctrl.deleteRow(index)"></af-gui-clause>
+      </fieldset>
+    </div>
+  </div>
+</div>
+<div class="api4-input form-inline">
+  <div class="api4-clause-badge">
+    <div class="btn-group btn-group-xs" title="{{ $ctrl.hasParent ? ts('Add a subgroup of clauses') : ts('Add a group of clauses') }}">
+      <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+        {{ $ctrl.conjunctions[$ctrl.op] }} <span class="caret"></span>
+      </button>
+      <ul class="dropdown-menu api4-add-where-group-menu">
+        <li ng-repeat="(con, label) in $ctrl.conjunctions" ng-show="$ctrl.op !== con">
+          <a href ng-click="$ctrl.addGroup(con)">{{ label }}</a>
+        </li>
+      </ul>
+    </div>
+  </div>
+  <input class="form-control collapsible-optgroups"
+         on-crm-ui-select="$ctrl.addClause(selection)"
+         crm-ui-select="{data: $ctrl.fields, placeholder: $ctrl.placeholder || ts('Select field')}" >
+</div>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiCondition.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiCondition.component.js
new file mode 100644
index 0000000000000000000000000000000000000000..15045f5b7e69d050b88de47190c52e743a077081
--- /dev/null
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiCondition.component.js
@@ -0,0 +1,100 @@
+(function(angular, $, _) {
+  "use strict";
+
+  angular.module('afGuiEditor').component('afGuiCondition', {
+    bindings: {
+      field: '<',
+      clause: '<',
+      format: '<',
+      optionKey: '<',
+      offset: '<'
+    },
+    templateUrl: '~/afGuiEditor/afGuiCondition.html',
+    controller: function ($scope) {
+      var ts = $scope.ts = CRM.ts('org.civicrm.afform_admin'),
+        ctrl = this;
+      this.operators = [
+        {
+          "key": "==",
+          "value": "=",
+        },
+        {
+          "key": "!=",
+          "value": "≠",
+        },
+        {
+          "key": ">",
+          "value": ">",
+        },
+        {
+          "key": "<",
+          "value": "<",
+        },
+        {
+          "key": ">=",
+          "value": "≥",
+        },
+        {
+          "key": "<=",
+          "value": "≤",
+        }
+      ];
+
+      this.$onInit = function() {
+        $scope.$watch('$ctrl.field', updateOperators);
+      };
+
+      function getOperator() {
+        return ctrl.clause[ctrl.offset];
+      }
+
+      function setOperator(op) {
+        if (op !== getOperator()) {
+          ctrl.clause[ctrl.offset] = op;
+          ctrl.changeClauseOperator();
+        }
+      }
+
+      function getValue() {
+        return JSON.parse(ctrl.clause[1 + ctrl.offset]);
+      }
+
+      function setValue(val) {
+        ctrl.clause[1 + ctrl.offset] = JSON.stringify(val);
+      }
+
+      // Getter/setter for use with ng-model
+      this.getSetOperator = function(op) {
+        if (arguments.length) {
+          setOperator(op);
+        }
+        return getOperator();
+      };
+
+      // Getter/setter for use with ng-model
+      this.getSetValue = function(val) {
+        if (arguments.length) {
+          setValue(val);
+        }
+        return getValue();
+      };
+
+      // Return a list of operators allowed for the current field
+      this.getOperators = function() {
+        return ctrl.operators;
+      };
+
+      // Ensures clause is using an operator that is allowed for the field
+      function updateOperators() {
+        if ((!getOperator() || !_.includes(_.pluck(ctrl.getOperators(), 'key'), getOperator()))) {
+          setOperator(ctrl.getOperators()[0].key);
+        }
+      }
+
+      this.changeClauseOperator = function() {
+      };
+
+    }
+  });
+
+})(angular, CRM.$, CRM._);
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiCondition.html b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiCondition.html
new file mode 100644
index 0000000000000000000000000000000000000000..8ce63c5aca2a2051c497e34b37968de4aa9c21cd
--- /dev/null
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiCondition.html
@@ -0,0 +1,2 @@
+<select class="form-control api4-operator" ng-model="$ctrl.getSetOperator" ng-if="$ctrl.getOperators().length > 1" ng-model-options="{getterSetter: true}" ng-options="o.key as o.value for o in $ctrl.getOperators()" ng-change="$ctrl.changeClauseOperator()" ></select>
+<input af-gui-field-value="$ctrl.field" ng-model="$ctrl.getSetValue" ng-model-options="{getterSetter: true}" class="form-control"></input>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiConditionalDialog.ctrl.js b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiConditionalDialog.ctrl.js
new file mode 100644
index 0000000000000000000000000000000000000000..cd9893f0012e487ed92925ba05ce58514d0f3cad
--- /dev/null
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiConditionalDialog.ctrl.js
@@ -0,0 +1,62 @@
+// https://civicrm.org/licensing
+(function(angular, $, _) {
+  "use strict";
+
+  angular.module('afGuiEditor').controller('AfGuiConditionalDialog', function($scope, $parse, afGui, dialogService) {
+    var ts = $scope.ts = CRM.ts('org.civicrm.afform_admin'),
+      ctrl = $scope.$ctrl = this;
+    this.node = $scope.model.node;
+    this.editor = $scope.model.editor;
+    this.conditions = parseConditions();
+    loadAllFields();
+
+    this.save = function() {
+      if (!ctrl.conditions.length) {
+        delete ctrl.node['af-if'];
+      } else {
+        ctrl.node['af-if'] = '(' + JSON.stringify(ctrl.conditions).replace(/"/g, '&quot;') + ')';
+      }
+      dialogService.close('afformGuiConditionalDialog');
+    };
+
+    function parseConditions() {
+      if (!ctrl.node['af-if']) {
+        return [];
+      }
+      var ngIf = _.trim(ctrl.node['af-if'].replace(/&quot;/g, '"'));
+      if (!_.startsWith(ngIf, '(')) {
+        return [];
+      }
+      return $parse(ngIf.slice(1, -1))();
+    }
+
+    function loadAllFields() {
+      ctrl.fieldSelector = [];
+      ctrl.fieldDefns = {};
+      _.each(ctrl.editor.getEntities(), function(entity) {
+        var entityFields = ctrl.editor.getEntityFields(entity.name),
+          items = _.transform(entityFields.fields, function(items, field) {
+            var key = entity.name + "[0][fields][" + field.name + "]";
+            ctrl.fieldDefns[key] = field;
+            items.push({id: key, text: field.label});
+          });
+        _.each(entityFields.joins, function(join) {
+          items.push({
+            text: afGui.getEntity(join.entity).label,
+            children: _.transform(join.fields, function(items, field) {
+              var key = entity.name + "[0][joins][" + join.entity + "][0][" + field.name + "]";
+              ctrl.fieldDefns[key] = field;
+              items.push({id: key, text: field.label});
+            })
+          });
+        });
+        ctrl.fieldSelector.push({
+          text: entity.label,
+          children: items
+        });
+      });
+    }
+
+  });
+
+})(angular, CRM.$, CRM._);
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiConditionalDialog.html b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiConditionalDialog.html
new file mode 100644
index 0000000000000000000000000000000000000000..e03f87cc13e3f220ef367478b1f393cc9f8e7e73
--- /dev/null
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiConditionalDialog.html
@@ -0,0 +1,7 @@
+<div id="bootstrap-theme" class="af-gui-conditional-dialog" crm-dialog="afformGuiConditionalDialog" ng-controller="AfGuiConditionalDialog">
+  <form class="api4-clause-fieldset" ng-if="$ctrl.fieldSelector.length">
+    <label>{{:: ts('Element will be shown if') }}</label>
+    <af-gui-clause clauses="$ctrl.conditions" fields="$ctrl.fieldSelector" field-defns="$ctrl.fieldDefns" op="AND" label="{{:: ts('If') }}" hide-label="true"></af-gui-clause>
+  </form>
+  <crm-dialog-button text="ts('Apply Changes')" icons="{primary: 'fa-check'}" on-click="$ctrl.save()" />
+</div>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js
index d2279c950f66b06f1183f0d50de5973b3044abfe..de4b1a2c892d109195bb47c803f3aca3159b279e 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js
@@ -18,7 +18,7 @@
       mode: '@'
     },
     controllerAs: 'editor',
-    controller: function($scope, crmApi4, afGui, $parse, $timeout, $location) {
+    controller: function($scope, crmApi4, afGui, $parse, $timeout) {
       var ts = $scope.ts = CRM.ts('org.civicrm.afform_admin');
 
       this.afform = null;
@@ -328,6 +328,7 @@
         return editor.afform;
       };
 
+      // Get all entities or a filtered list
       this.getEntities = function(filter) {
         return filter ? _.filter($scope.entities, filter) : _.toArray($scope.entities);
       };
@@ -351,6 +352,44 @@
         }
       };
 
+      // Gets complete field defn, merging values from the field with default values
+      function fillFieldDefn(entityType, field) {
+        var spec = _.cloneDeep(afGui.getField(entityType, field.name));
+        return _.merge(spec, field.defn || {});
+      }
+
+      // Get all fields on the form for a particular entity
+      this.getEntityFields = function(entityName) {
+        var fieldsets = afGui.findRecursive(editor.layout['#children'], {'af-fieldset': entityName}),
+          entityType = editor.getEntity(entityName).type,
+          entityFields = {fields: [], joins: []},
+          isJoin = function(item) {
+            return _.isPlainObject(item) && ('af-join' in item);
+          };
+        _.each(fieldsets, function(fieldset) {
+          _.each(afGui.getFormElements(fieldset['#children'], {'#tag': 'af-field'}, isJoin), function(field) {
+            if (field.name) {
+              entityFields.fields.push(fillFieldDefn(entityType, field));
+            }
+          });
+          _.each(afGui.getFormElements(fieldset['#children'], isJoin), function(join) {
+            var joinFields = [];
+            _.each(afGui.getFormElements(join['#children'], {'#tag': 'af-field'}), function(field) {
+              if (field.name) {
+                joinFields.push(fillFieldDefn(join['af-join'], field));
+              }
+            });
+            if (joinFields.length) {
+              entityFields.joins.push({
+                entity: join['af-join'],
+                fields: joinFields
+              });
+            }
+          });
+        });
+        return entityFields;
+      };
+
       this.toggleNavigation = function() {
         if (editor.afform.navigation) {
           editor.afform.navigation = null;
@@ -364,6 +403,23 @@
         }
       };
 
+      this.toggleManualProcessing = function() {
+        if (editor.afform.manual_processing) {
+          editor.afform.manual_processing = null;
+        } else {
+          editor.afform.create_submission = true;
+        }
+      };
+
+      this.toggleEmailVerification = function() {
+        if (editor.afform.allow_verification_by_email) {
+          editor.afform.allow_verification_by_email = null;
+        } else {
+          editor.afform.create_submission = true;
+          editor.afform.manual_processing = true;
+        }
+      };
+
       function loadNavigationMenu() {
         if ('navigationMenu' in editor) {
           return;
@@ -576,6 +632,10 @@
         var afform = JSON.parse(angular.toJson(editor.afform));
         // This might be set to undefined by validation
         afform.server_route = afform.server_route || '';
+        // create submission is required if email confirmation is selected.
+        if (afform.manual_processing || afform.allow_verification_by_email) {
+          afform.create_submission = true;
+        }
         $scope.saving = true;
         crmApi4('Afform', 'save', {formatWhitespace: true, records: [afform]})
           .then(function (data) {
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiFieldValue.directive.js b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiFieldValue.directive.js
index 3f3d0c728252aa603b5a0c042f511865715f0a57..bf2e9b0a30853be3b1ae3f5b9597980b361d521c 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiFieldValue.directive.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiFieldValue.directive.js
@@ -10,7 +10,7 @@
       },
       require: {
         ngModel: 'ngModel',
-        editor: '^^afGuiEditor'
+        editor: '?^^afGuiEditor'
       },
       controller: function ($element, $timeout) {
         var ts = CRM.ts('org.civicrm.afform_admin'),
@@ -41,7 +41,7 @@
               if (field.fk_entity === 'Contact' && (!filters.contact_type || filters.contact_type === 'Individual')) {
                 options.push('user_contact_id');
               }
-              _.each(ctrl.editor.getEntities({type: field.fk_entity}), function(entity) {
+              _.each(ctrl.editor ? ctrl.editor.getEntities({type: field.fk_entity}) : [], function(entity) {
                 // Check if field filters match entity data (e.g. contact_type)
                 var filtersMatch = true;
                 _.each(filters, function(value, key) {
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiMenuItemCollapsible.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiMenuItemCollapsible.component.js
index 0beec12e19e625670803e65c073f630ea6da1cf0..b7dd93694d504d2edf4609227dc9cff6e8c4640e 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiMenuItemCollapsible.component.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiMenuItemCollapsible.component.js
@@ -12,28 +12,15 @@
       var ts = $scope.ts = CRM.ts('org.civicrm.afform_admin'),
         ctrl = this;
 
-      this.isCollapsible = function() {
-        return afGui.hasClass(ctrl.node, 'af-collapsible');
-      };
-
       this.isCollapsed = function() {
-        return afGui.hasClass(ctrl.node, 'af-collapsible af-collapsed');
-      };
-
-      this.toggleCollapsible = function() {
-        // Node must have a title to be collapsible
-        if (ctrl.isCollapsible() || !ctrl.node['af-title']) {
-          afGui.modifyClasses(ctrl.node, 'af-collapsible af-collapsed');
-        } else {
-          afGui.modifyClasses(ctrl.node, null, 'af-collapsible');
-        }
+        return !('open' in ctrl.node);
       };
 
       this.toggleCollapsed = function() {
         if (ctrl.isCollapsed()) {
-          afGui.modifyClasses(ctrl.node, 'af-collapsed');
+          ctrl.node.open = '';
         } else {
-          afGui.modifyClasses(ctrl.node, null, 'af-collapsed');
+          delete ctrl.node.open;
         }
       };
 
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiMenuItemCollapsible.html b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiMenuItemCollapsible.html
index da105691c9efbb0a0509518fab746278db53ec62..8752bcc21003ff2790f8b188dcc60965454eb79c 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiMenuItemCollapsible.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiMenuItemCollapsible.html
@@ -1,8 +1,4 @@
-<label ng-class="{disabled: !$ctrl.node['af-title']}" ng-click="$ctrl.toggleCollapsible(); $event.stopPropagation();" title="{{ $ctrl.node['af-title'] ? ts('Allow user to collapse this to only show title') : ts('Must have a title to be collapsible') }}">
-  <i class="crm-i fa-{{ $ctrl.isCollapsible() ? 'check-' : '' }}square-o"></i>
-  {{:: ts('Collapsible') }}
+<label ng-click="$ctrl.toggleCollapsed(); $event.stopPropagation();">
+  <i class="crm-i fa{{ $ctrl.isCollapsed() ? '-check' : '' }}-square-o"></i>
+  {{:: ts('Collapsed') }}
 </label>
-<a href ng-click="$ctrl.toggleCollapsed(); $event.stopPropagation();" class="btn btn-sm btn-default" ng-class="{invisible: !$ctrl.isCollapsible()}">
-  <i class="crm-i fa-caret-{{ $ctrl.isCollapsed() ? 'right' : 'down' }}"></i>
-  {{ $ctrl.isCollapsed() ? ts('Closed') : ts('Open') }}
-</a>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html b/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html
index b439b4c81621c6e6af7f12eaef4b775804ef5336..eb7c8e8e19988c1360e653b857c1e2e46c9bf053 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html
@@ -122,20 +122,39 @@
     </p>
 
     <div ng-if="editor.afform.submit_enabled">
-
       <div class="form-group">
         <label>
-          <input type="checkbox" ng-model="editor.afform.create_submission" >
+          <input type="checkbox" ng-model="editor.afform.create_submission" ng-class="{'disabled': !!editor.afform.require_email_confirmation}">
           {{:: ts('Log Submissions') }}
         </label>
         <p class="help-block">{{:: ts('Keep a log of the date, time, user, and items saved by each form submission.') }}</p>
       </div>
 
-      <div class="form-inline" ng-if="editor.afform.create_submission">
+      <div class="form-group" ng-if="editor.afform.create_submission">
         <label for="submit_limit">{{:: ts('Maximum Submissions') }}</label>
         <input type="number" min="1" step="1" id="submit_limit" ng-model="editor.afform.submit_limit" placeholder="{{:: ts('Unlimited') }}">
       </div>
 
+      <div class="form-group">
+        <label>
+          <input type="checkbox" ng-model="editor.afform.manual_processing" ng-click="editor.toggleManualProcessing()" ng-class="{'disabled': !!editor.afform.allow_verification_by_email}">
+          {{:: ts('Verify submission before processing') }}
+        </label>
+        <p class="help-block">{{:: ts('The data will need to be processed manually using Form Submission action.') }}</p>
+      </div>
+
+      <div class="form-group" ng-if="!!editor.afform.manual_processing">
+        <label>
+          <input type="checkbox" ng-model="editor.afform.allow_verification_by_email" ng-click="editor.toggleEmailVerification()">
+          {{:: ts('Allow verification by email') }}
+        </label>
+        <p class="help-block">{{:: ts('The data can be processed via email verification. Email field should be included in the form for this functionality.') }}</p>
+        <div class="form-inline" ng-if="editor.afform.allow_verification_by_email">
+          <label>{{:: ts('Email template') }}</label>
+          <input class="form-control" crm-autocomplete="'MessageTemplate'" id="afform_email_confirmation_template_id" ng-model="editor.afform.email_confirmation_template_id" auto-open="true" placeholder="{{:: ts('- select -') }}">
+        </div>
+      </div>
+
       <div class="form-group" ng-class="{'has-error': !!config_form.redirect.$error.pattern}">
         <label for="af_config_redirect">
           {{:: ts('Post-Submit Page') }}
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiButton-menu.html b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiButton-menu.html
index d121b827d61cd21e4d3639a92feaff48069b9c3e..b6eec51f47e28fe639a76960f41af1b70b512532 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiButton-menu.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiButton-menu.html
@@ -6,5 +6,7 @@
     </select>
   </div>
 </li>
+<li af-gui-conditional-menu="$ctrl.node" ng-if="$ctrl.editor.getEntities().length"></li>
+
 <li role="separator" class="divider"></li>
 <li><a href ng-click="$ctrl.deleteThis()"><span class="text-danger"><i class="crm-i fa-trash"></i> {{:: ts('Delete this button') }}</span></a></li>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiButton.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiButton.component.js
index a6bca1b5674a808eeee13d0cda201fb4dd83fed8..9ce9a1135abacd22473f75bdc43416248a572b71 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiButton.component.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiButton.component.js
@@ -8,6 +8,9 @@
       node: '=',
       deleteThis: '&'
     },
+    require: {
+      editor: '^^afGuiEditor',
+    },
     controller: function($scope, afGui) {
       var ts = $scope.ts = CRM.ts('org.civicrm.afform_admin'),
         ctrl = this;
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiConditionalMenu.directive.js b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiConditionalMenu.directive.js
new file mode 100644
index 0000000000000000000000000000000000000000..f02de0fe4347593b3afe2cfbfc78330aa7a1adc9
--- /dev/null
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiConditionalMenu.directive.js
@@ -0,0 +1,18 @@
+(function(angular, $, _) {
+  angular.module('afGuiEditor').directive('afGuiConditionalMenu', function() {
+    return {
+      restrict: 'A',
+      templateUrl: '~/afGuiEditor/elements/afGuiConditionalMenu.html',
+      require: {
+        editor: '^^afGuiEditor'
+      },
+      bindToController: {
+        node: '<afGuiConditionalMenu'
+      },
+      controller: function($scope) {
+        var ts = CRM.ts('org.civicrm.afform_admin'),
+          ctrl = this;
+      }
+    };
+  });
+})(angular, CRM.$, CRM._);
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiConditionalMenu.html b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiConditionalMenu.html
new file mode 100644
index 0000000000000000000000000000000000000000..ede354ffd66e775ffa17ba890a82d1e5234d6428
--- /dev/null
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiConditionalMenu.html
@@ -0,0 +1,9 @@
+<a href crm-dialog-popup="afformGuiConditionalDialog" popup-tpl="~/afGuiEditor/afGuiConditionalDialog.html" popup-data="{editor: $ctrl.editor, node: $ctrl.node}" title="{{:: ts('Conditional Rules') }}">
+  <i ng-class="{disabled: !$ctrl.node['af-if'] || !$ctrl.node['af-if'].length}" class="crm-i fa-code-fork"></i>
+  <span ng-if="!$ctrl.node['af-if'].length">
+    {{:: ts('Add Conditional Rules') }}
+  </span>
+  <strong ng-if="$ctrl.node['af-if'].length">
+    {{:: ts('Edit Conditional Rules') }}
+  </strong>
+</a>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer-menu.html b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer-menu.html
index 00b75cff271769ddabcdb31e3034d79589d78eb7..b8cd2eec62390e28278662a5c3176759cb71c1a6 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer-menu.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer-menu.html
@@ -8,6 +8,7 @@
     </select>
   </div>
 </li>
+<li><af-gui-menu-item-collapsible ng-if="!block && $ctrl.node['#tag'] === 'details'" node="$ctrl.node" class="af-gui-field-select-in-dropdown form-inline"></af-gui-menu-item-collapsible></li>
 <li ng-if="isRepeatable()" ng-click="$event.stopPropagation()">
   <div class="af-gui-field-select-in-dropdown form-inline">
     <label ng-click="$ctrl.toggleRepeat()">
@@ -30,9 +31,10 @@
     </div>
   </div>
 </li>
-<li><af-gui-menu-item-collapsible ng-if="!block" node="$ctrl.node" class="af-gui-field-select-in-dropdown form-inline"></af-gui-menu-item-collapsible></li>
 <li><af-gui-menu-item-style node="$ctrl.node"></af-gui-menu-item-style></li>
 <li><af-gui-menu-item-border node="$ctrl.node"></af-gui-menu-item-border></li>
 <li><af-gui-menu-item-background node="$ctrl.node"></af-gui-menu-item-background></li>
+<li af-gui-conditional-menu="$ctrl.node" ng-if="$ctrl.editor.getEntities().length"></li>
+
 <li role="separator" class="divider"></li>
 <li><a href ng-click="$ctrl.deleteThis()"><span class="text-danger"><i class="crm-i fa-trash"></i> {{ !block ? ts('Remove container') : ts('Remove block') }}</span></a></li>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer.component.js
index 9853d7fbe98bb5c6bc49b1eccabd09a0171eb34f..ed782602408c36b79942d07604525289f882c3e3 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer.component.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer.component.js
@@ -99,7 +99,8 @@
 
       $scope.tags = {
         div: ts('Container'),
-        fieldset: ts('Fieldset')
+        fieldset: ts('Fieldset'),
+        details: ts('Collapsible')
       };
 
       // Block settings
@@ -139,9 +140,10 @@
       };
 
       this.getCollapsibleIcon = function() {
-        if (afGui.hasClass(ctrl.node, 'af-collapsible')) {
-          return afGui.hasClass(ctrl.node, 'af-collapsed') ? 'fa-caret-right' : 'fa-caret-down';
+        if (ctrl.node['#tag'] === 'details') {
+          return 'open' in ctrl.node ? 'fa-caret-down' : 'fa-caret-right';
         }
+        return '';
       };
 
       // Sets min value for af-repeat as a string, returns it as an int
@@ -369,8 +371,6 @@
             ctrl.node['af-title'] = value;
           } else {
             delete ctrl.node['af-title'];
-            // With no title, cannot be collapsible
-            afGui.modifyClasses(ctrl.node, 'af-collapsible af-collapsed');
           }
         }
         return ctrl.node['af-title'];
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html
index ea4c90169380a3207d3d77e39ccce8b1a8efe811..804f7f985e57d1b0284f1f19404ba6fd0f18ddc4 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html
@@ -61,7 +61,15 @@
     {{:: ts('Default value') }}
   </a>
 </li>
-<li ng-if="$ctrl.hasDefaultValue">
+<li ng-if="$ctrl.fieldDefn.input_type === 'Date' && $ctrl.hasDefaultValue">
+  <div ng-click="setDefaultDateType(); $event.stopPropagation(); $event.target.blur();" class="af-gui-field-select-in-dropdown form-inline">
+    <select class="form-control" ng-model="getSet('default_date_type')" ng-model-options="{getterSetter: true}">
+      <option value="fixed">{{:: ts('Pick Date') }}</option>
+      <option value="now">{{:: ts('Now') }}</option>
+    </select>
+  </div>
+</li>
+<li ng-if="$ctrl.hasDefaultValue && $ctrl.defaultDateType !== 'now'">
   <form ng-click="$event.stopPropagation()" class="af-gui-field-select-in-dropdown form-inline">
     <input class="form-control" af-gui-field-value="$ctrl.fieldDefn" ng-model="getSet('afform_default')" ng-model-options="{getterSetter: true}" >
   </form>
@@ -84,6 +92,7 @@
     {{:: ts('Post help text') }}
   </a>
 </li>
+
 <li role="separator" class="divider" ng-if="$ctrl.canBeRange() || $ctrl.canBeMultiple()"></li>
 <li ng-if="$ctrl.canBeMultiple()" ng-click="$event.stopPropagation()">
   <a href ng-click="toggleMultiple()" title="{{:: ts('Search multiple values') }}">
@@ -113,6 +122,9 @@
     </select>
   </div>
 </li>
+
+<li af-gui-conditional-menu="$ctrl.node" ng-if="$ctrl.editor.getEntities().length"></li>
+
 <li role="separator" class="divider" ng-if="hasOptions()"></li>
 <li ng-if="hasOptions()" ng-click="$event.stopPropagation()">
   <a href ng-click="resetOptions()" title="{{:: ts('Reset the option list for this field') }}">
@@ -126,6 +138,7 @@
     {{:: ts('Customize options') }}
   </a>
 </li>
+
 <li role="separator" class="divider"></li>
 <li>
   <a href ng-click="$ctrl.deleteThis()" title="{{:: ts('Remove field from form') }}">
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js
index 9e94963cf5aa085d0739b8cfc79a3eb2a792edf1..475becbd8be70e9d292b3d06ba1d2af0c400f04a 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js
@@ -66,6 +66,14 @@
           this.searchOperators = _.pick(this.searchOperators, ctrl.fieldDefn.operators);
         }
         setDateOptions();
+
+        if (ctrl.getDefn().input_type == 'Date') {
+          if (!getSet('default_date_type')) {
+            ctrl.defaultDateType = getSet('default_date_type', 'fixed');
+          } else {
+            ctrl.defaultDateType = getSet("default_date_type");
+          }
+        }
       };
 
       this.getFkEntity = function() {
@@ -280,6 +288,10 @@
         }
       };
 
+      $scope.setDefaultDateType = function() {
+        ctrl.defaultDateType = getSet('default_date_type');
+      };
+
       $scope.defaultValueContains = function(val) {
         val = '' + val;
         var defaultVal = getSet('afform_default');
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiMarkup-menu.html b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiMarkup-menu.html
index 6537d36de844649ec08504589ca1cbf27428b694..23910e4fd4ca0f614b67f59e1e3db1d26df42664 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiMarkup-menu.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiMarkup-menu.html
@@ -1,9 +1,12 @@
 <li>
   <a href ng-click="edit()">{{:: ts('Edit content') }}</a>
 </li>
+
 <li role="separator" class="divider"></li>
 <li><af-gui-menu-item-border node="$ctrl.node"></af-gui-menu-item-border></li>
 <li><af-gui-menu-item-background node="$ctrl.node"></af-gui-menu-item-background></li>
+<li af-gui-conditional-menu="$ctrl.node" ng-if="$ctrl.editor.getEntities().length"></li>
+
 <li role="separator" class="divider"></li>
 <li>
   <a href ng-click="$ctrl.deleteThis()"><span class="text-danger"><i class="crm-i fa-trash"></i> {{:: ts('Delete this content') }}</span></a>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiMarkup.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiMarkup.component.js
index 8a7ace51f66f74701f29c10e0fc340613c171616..e0970ba76e48de45e79ec0768e6008e60ab25c3d 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiMarkup.component.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiMarkup.component.js
@@ -10,6 +10,9 @@
       node: '=',
       deleteThis: '&'
     },
+    require: {
+      editor: '^^afGuiEditor',
+    },
     controller: function($scope, $sce, $timeout) {
       var ts = $scope.ts = CRM.ts('org.civicrm.afform_admin'),
         ctrl = this;
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiSearchContainer-menu.html b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiSearchContainer-menu.html
index 088e4bd712d6e678c84278e5738598cc54a8744a..9d172571b40bf31199560d76fdcaf0b5c196aead 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiSearchContainer-menu.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiSearchContainer-menu.html
@@ -6,7 +6,7 @@
     </select>
   </div>
 </li>
-<li><af-gui-menu-item-collapsible node="$ctrl.node" class="af-gui-field-select-in-dropdown form-inline"></af-gui-menu-item-collapsible></li>
+<li><af-gui-menu-item-collapsible ng-if="$ctrl.node['#tag'] === 'details'" node="$ctrl.node" class="af-gui-field-select-in-dropdown form-inline"></af-gui-menu-item-collapsible></li>
 <li><af-gui-menu-item-style node="$ctrl.node"></af-gui-menu-item-style></li>
 <li><af-gui-menu-item-border node="$ctrl.node"></af-gui-menu-item-border></li>
 <li><af-gui-menu-item-background node="$ctrl.node"></af-gui-menu-item-background></li>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiText-menu.html b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiText-menu.html
index 06170c5068c609231bb656aa2be4fab52280ed57..0bb6cf0b1b1d7c26ddab40a8ace1c0908dd4260c 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiText-menu.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiText-menu.html
@@ -23,6 +23,8 @@
     </select>
   </div>
 </li>
+<li af-gui-conditional-menu="$ctrl.node" ng-if="$ctrl.editor.getEntities().length"></li>
+
 <li role="separator" class="divider"></li>
 <li>
   <a href ng-click="$ctrl.deleteThis()"><span class="text-danger"><i class="crm-i fa-trash"></i> {{:: ts('Delete this text') }}</span></a>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiText.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiText.component.js
index baa50d0408279572b05458b6962a878e92ae0027..a623d864da16e6bce0664b29cdf345a4389d8fa1 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiText.component.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiText.component.js
@@ -8,6 +8,9 @@
       node: '=',
       deleteThis: '&'
     },
+    require: {
+      editor: '^^afGuiEditor',
+    },
     controller: function($scope, afGui) {
       var ts = $scope.ts = CRM.ts('org.civicrm.afform_admin'),
         ctrl = this;
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Date.html b/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Date.html
index 9d956452cd81d057f7cbf2acf20d44de92285994..3f69eb5e89bffde73440534913cb7d49d56cc083 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Date.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Date.html
@@ -2,7 +2,6 @@
   <div class="form-group" ng-repeat="i in $ctrl.getRangeElements('Date')">
     <span class="af-field-range-sep" ng-if="i">-</span>
     <input autocomplete="off" class="form-control crm-form-date crm-placeholder-icon" placeholder="&#xF073" ng-model="getSet('input_attrs.placeholder' + i)" ng-model-options="$ctrl.editor.debounceWithGetterSetter" type="text" title="{{:: ts('Click to add placeholder text') }}" />
-    <span class="addon fa fa-calendar"></span>
     <input autocomplete="off" ng-if="getProp('input_attrs.time')" placeholder="&#xF017" class="form-control crm-form-time crm-placeholder-icon" ng-model="getSet('input_attrs.timePlaceholder' + i)" ng-model-options="$ctrl.editor.debounceWithGetterSetter" type="text" title="{{:: ts('Click to add placeholder text') }}" />
   </div>
 </div>
diff --git a/civicrm/ext/afform/admin/info.xml b/civicrm/ext/afform/admin/info.xml
index d64d84c9a6462544f6da154147a990d47199f4b8..13d0bbf6a41c986ec8763df52d21c0a41b854992 100644
--- a/civicrm/ext/afform/admin/info.xml
+++ b/civicrm/ext/afform/admin/info.xml
@@ -12,11 +12,11 @@
     <url desc="Chat">https://chat.civicrm.org/civicrm/channels/dev-afform</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>beta</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>FormBuilder provides a UI to administer and edit forms. It is an optional admin tool and not required for the forms to function.</comments>
   <requires>
diff --git a/civicrm/ext/afform/admin/managed/FormSubmissionSavedSearch.mgd.php b/civicrm/ext/afform/admin/managed/FormSubmissionSavedSearch.mgd.php
index 6f80f032b990e83ee4032aac01e43030c8d528f3..2a69737dc32a6c164c90c07edb16826568508a45 100644
--- a/civicrm/ext/afform/admin/managed/FormSubmissionSavedSearch.mgd.php
+++ b/civicrm/ext/afform/admin/managed/FormSubmissionSavedSearch.mgd.php
@@ -7,8 +7,8 @@ return [
   [
     'name' => 'AfAdmin_Submission_List',
     'entity' => 'SavedSearch',
+    'cleanup' => 'always',
     'update' => 'unmodified',
-    'cleanup' => 'unused',
     'params' => [
       'version' => 4,
       'values' => [
@@ -24,8 +24,11 @@ return [
             'id',
             'contact_id.display_name',
             'submission_date',
+            'status_id:label',
           ],
         ],
+        'expires_date' => NULL,
+        'description' => NULL,
       ],
       'match' => [
         'name',
@@ -35,8 +38,8 @@ return [
   [
     'name' => 'AfAdmin_Submission_List_Display',
     'entity' => 'SearchDisplay',
+    'cleanup' => 'always',
     'update' => 'unmodified',
-    'cleanup' => 'unused',
     'params' => [
       'version' => 4,
       'values' => [
@@ -44,8 +47,6 @@ return [
         'label' => E::ts('Form Submissions Table'),
         'saved_search_id.name' => 'AfAdmin_Submission_List',
         'type' => 'table',
-        'actions' => TRUE,
-        'acl_bypass' => FALSE,
         'settings' => [
           'actions' => TRUE,
           'limit' => 50,
@@ -93,6 +94,48 @@ return [
               'label' => E::ts('Submission Date/Time'),
               'sortable' => TRUE,
             ],
+            [
+              'type' => 'field',
+              'key' => 'status_id:label',
+              'dataType' => 'Integer',
+              'label' => E::ts('Submission Status'),
+              'sortable' => TRUE,
+            ],
+            [
+              'size' => 'btn-xs',
+              'links' => [
+                [
+                  'entity' => 'AfformSubmission',
+                  'action' => 'view',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-external-link',
+                  'text' => E::ts('View'),
+                  'style' => 'default',
+                  'path' => '',
+                  'task' => '',
+                  'condition' => [],
+                ],
+                [
+                  'path' => '',
+                  'icon' => 'fa-check-square-o',
+                  'text' => E::ts('Process'),
+                  'style' => 'default',
+                  'condition' => [
+                    'status_id:label',
+                    '=',
+                    'Pending',
+                  ],
+                  'task' => 'process',
+                  'entity' => 'AfformSubmission',
+                  'action' => '',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                ],
+              ],
+              'type' => 'buttons',
+              'alignment' => '',
+            ],
           ],
           'sort' => [
             [
@@ -100,7 +143,9 @@ return [
               'ASC',
             ],
           ],
+          'placeholder' => 5,
         ],
+        'acl_bypass' => FALSE,
       ],
       'match' => [
         'name',
diff --git a/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php b/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php
index 427c255b5f59756b79c3e3feacfdab7af11f9abc..b965765c5770d961b2679c7519cceed9d2ec561c 100644
--- a/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php
+++ b/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php
@@ -129,54 +129,50 @@ class CRM_Afform_AfformScanner {
   }
 
   /**
-   * Get the effective metadata for a form.
+   * Get metadata and optionally the layout for a file-based Afform.
    *
    * @param string $name
    *   Ex: 'afformViewIndividual'
-   * @return array
-   *   An array with some mix of the following keys: name, title, description, server_route, requires, is_public.
-   *   NOTE: This is only data available in *.aff.json. It does *NOT* include layout.
-   *   Ex: [
-   *     'name' => 'afformViewIndividual',
-   *     'title' => 'View an individual contact',
-   *     'server_route' => 'civicrm/view-individual',
-   *     'requires' => ['afform'],
-   *   ]
+   * @param bool $getLayout
+   *   Whether to fetch 'layout' from the related html file.
+   * @return array|null
+   *   An array with some mix of the keys supported by getFields
+   * @see \Civi\Api4\Afform::getFields
    */
-  public function getMeta(string $name): ?array {
-    // FIXME error checking
-
-    $defaults = [
-      'requires' => [],
-      'title' => '',
-      'description' => '',
-      'is_public' => FALSE,
-      'permission' => ['access CiviCRM'],
-      'type' => 'system',
-    ];
+  public function getMeta(string $name, bool $getLayout = FALSE): ?array {
     $defn = [];
+    $mtime = NULL;
 
-    // If there is a local file it will be json - read from that first
     $jsonFile = $this->findFilePath($name, self::METADATA_JSON);
+    $htmlFile = $this->findFilePath($name, self::LAYOUT_FILE);
+
+    // Meta file can be either php or json format.
+    // Json takes priority because local overrides are always saved in that format.
     if ($jsonFile !== NULL) {
       $defn = json_decode(file_get_contents($jsonFile), 1);
+      $mtime = filemtime($jsonFile);
     }
     // Extensions may provide afform definitions in php files
     else {
       $phpFile = $this->findFilePath($name, self::METADATA_PHP);
       if ($phpFile !== NULL) {
         $defn = include $phpFile;
+        $mtime = filemtime($phpFile);
       }
     }
-    // A form must have at least a layout file (if no metadata file, just use defaults)
-    if (!$defn && !$this->findFilePath($name, self::LAYOUT_FILE)) {
-      return NULL;
+    if ($htmlFile !== NULL) {
+      $mtime = max($mtime, filemtime($htmlFile));
+      if ($getLayout) {
+        // If the defn file included a layout, the html file overrides
+        $defn['layout'] = file_get_contents($htmlFile);
+      }
     }
-    $defn = array_merge($defaults, $defn, ['name' => $name]);
-    // Previous revisions of GUI allowed permission==''. array_merge() doesn't catch all forms of missing-ness.
-    if (empty($defn['permission'])) {
-      $defn['permission'] = $defaults['permission'];
+    // All 3 files don't exist!
+    elseif (!$defn) {
+      return NULL;
     }
+    $defn['name'] = $name;
+    $defn['modified_date'] = date('Y-m-d H:i:s', $mtime);
     return $defn;
   }
 
@@ -198,13 +194,10 @@ class CRM_Afform_AfformScanner {
   }
 
   /**
-   * @param string $formName
-   *   Ex: 'view-individual'
-   * @return string|NULL
-   *   Ex: '<em>Hello world!</em>'
-   *   NULL if no layout exists
+   * @deprecated unused function
    */
   public function getLayout($formName) {
+    CRM_Core_Error::deprecatedFunctionWarning('APIv4');
     $filePath = $this->findFilePath($formName, self::LAYOUT_FILE);
     return $filePath === NULL ? NULL : file_get_contents($filePath);
   }
@@ -214,7 +207,7 @@ class CRM_Afform_AfformScanner {
    *
    * @return array
    *   A list of all forms, keyed by form name.
-   *   NOTE: This is only data available in metadata files. It does *NOT* include layout.
+   *   NOTE: This is only data available in *.aff.(json|php) files. It does *NOT* include layout.
    *   Ex: ['afformViewIndividual' => ['title' => 'View an individual contact', ...]]
    */
   public function getMetas(): array {
diff --git a/civicrm/ext/afform/core/CRM/Afform/ArrayHtml.php b/civicrm/ext/afform/core/CRM/Afform/ArrayHtml.php
index 307e16b0982180b36827745f162a7c247ec7fb22..6c942b2ecc4fa9dbca5e93f61fb4c456433de0e5 100644
--- a/civicrm/ext/afform/core/CRM/Afform/ArrayHtml.php
+++ b/civicrm/ext/afform/core/CRM/Afform/ArrayHtml.php
@@ -199,7 +199,12 @@ class CRM_Afform_ArrayHtml {
 
     $doc = new DOMDocument();
     $doc->preserveWhiteSpace = !$this->formatWhitespace;
-    @$doc->loadHTML("<?xml encoding=\"utf-8\" ?><html><body>$html</body></html>");
+    // Angular/js isn't fussy about arbitrary tags but libxml is for html data, so ignore errors.
+    // See also Civi\Afform\Symbols::scan()
+    $oldErrorStatus = libxml_use_internal_errors(TRUE);
+    $doc->loadHTML("<?xml encoding=\"utf-8\" ?><html><body>$html</body></html>");
+    libxml_clear_errors();
+    libxml_use_internal_errors($oldErrorStatus);
 
     // FIXME: Validate expected number of child nodes
 
diff --git a/civicrm/ext/afform/core/CRM/Afform/DAO/AfformSubmission.php b/civicrm/ext/afform/core/CRM/Afform/DAO/AfformSubmission.php
index 4a9a953969f4e4091e804be6ebac61b24140f290..55c6f36e31b1f6088b483fae7c33ea131d624f50 100644
--- a/civicrm/ext/afform/core/CRM/Afform/DAO/AfformSubmission.php
+++ b/civicrm/ext/afform/core/CRM/Afform/DAO/AfformSubmission.php
@@ -6,7 +6,7 @@
  *
  * Generated from org.civicrm.afform/xml/schema/CRM/Afform/AfformSubmission.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a617b263eb7f1a2fcb6fb259c62d6fba)
+ * (GenCodeChecksum:68e301b8eb1d4ca755e3eb3b614ee2ff)
  */
 use CRM_Afform_ExtensionUtil as E;
 
@@ -31,6 +31,15 @@ class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO {
    */
   public static $_log = TRUE;
 
+  /**
+   * Paths for accessing this entity in the UI.
+   *
+   * @var string[]
+   */
+  protected static $_paths = [
+    'view' => '[afform_name:url]#?sid=[id]',
+  ];
+
   /**
    * Unique Submission ID
    *
diff --git a/civicrm/ext/afform/core/CRM/Afform/Page/Verify.php b/civicrm/ext/afform/core/CRM/Afform/Page/Verify.php
new file mode 100644
index 0000000000000000000000000000000000000000..ca8e87bcacc888ce0860390086fe9507ee142bd4
--- /dev/null
+++ b/civicrm/ext/afform/core/CRM/Afform/Page/Verify.php
@@ -0,0 +1,49 @@
+<?php
+
+class CRM_Afform_Page_Verify extends CRM_Core_Page {
+
+  public function run() {
+    $verified = FALSE;
+    $this->assign('error_message', '');
+
+    $token = CRM_Utils_Request::retrieve('token', 'String', $this, TRUE, NULL, 'GET');
+
+    try {
+      $decodedToken = \Civi::service('crypto.jwt')->decode($token);
+      $sid = $decodedToken['submissionId'] ?? NULL;
+    }
+    catch (\Civi\Crypto\Exception\CryptoException $e) {
+      if (str_contains($e->getMessage(), 'ExpiredException')) {
+        $this->assign('error_message', ts('Token expired.'));
+      }
+      else {
+        $this->assign('error_message', ts('An error occurred when processing the token.'));
+        \Civi::log()->warning(
+          __CLASS__ . ' cannot process a token due to a crypto exception.',
+          ['exception' => $e]);
+      }
+    }
+
+    if (!empty($sid)) {
+      // check submission status
+      $afformSubmissionData = \Civi\Api4\AfformSubmission::get(FALSE)
+        ->addSelect('afform_name', 'status_id:name')
+        ->addWhere('id', '=', $sid)
+        ->execute()->first();
+
+      if (!empty($afformSubmissionData) && $afformSubmissionData['status_id:name'] === 'Pending') {
+        \Civi\Api4\Afform::process(FALSE)
+          ->setName($afformSubmissionData['afform_name'])
+          ->setSubmissionId($sid)
+          ->execute();
+
+        $verified = TRUE;
+      }
+    }
+
+    $this->assign('verified', $verified);
+
+    parent::run();
+  }
+
+}
diff --git a/civicrm/ext/afform/core/Civi/Afform/AngularDependencyMapper.php b/civicrm/ext/afform/core/Civi/Afform/AngularDependencyMapper.php
index 692ad8aebf89477df0971732defa875729a888ee..889e318e7588b9b8f997fac43feb5e22b25c319c 100644
--- a/civicrm/ext/afform/core/Civi/Afform/AngularDependencyMapper.php
+++ b/civicrm/ext/afform/core/Civi/Afform/AngularDependencyMapper.php
@@ -18,89 +18,37 @@ namespace Civi\Afform;
 class AngularDependencyMapper {
 
   /**
-   * Scan the list of Angular modules and inject automatic-requirements.
+   * @var array{attr: array, el: array}
+   */
+  private $revMap;
+
+  public function __construct(array $angularModules) {
+    $this->revMap = $this->getRevMap($angularModules);
+  }
+
+  /**
+   * Adds angular dependencies based on the html contents of an afform.
    *
    * TLDR: if an afform uses element "<other-el/>", and if another module defines
    * `$angularModules['otherMod']['exports']['el'][0] === 'other-el'`, then
    * the 'otherMod' is automatically required.
    *
-   * @param \Civi\Core\Event\GenericHookEvent $e
+   * @param array $afform
    * @see CRM_Utils_Hook::angularModules()
    */
-  public static function autoReq($e) {
-    /** @var \CRM_Afform_AfformScanner $scanner */
-    $scanner = \Civi::service('afform_scanner');
-    $moduleEnvId = md5(\CRM_Core_Config_Runtime::getId() . implode(',', array_keys($e->angularModules)));
-    $depCache = \CRM_Utils_Cache::create([
-      'name' => 'afdep_' . substr($moduleEnvId, 0, 32 - 6),
-      'type' => ['*memory*', 'SqlGroup', 'ArrayCache'],
-      'withArray' => 'fast',
-      'prefetch' => TRUE,
-    ]);
-    $depCacheTtl = 2 * 60 * 60;
-
-    $revMap = self::reverseDeps($e->angularModules);
-
-    $formNames = array_keys($scanner->findFilePaths());
-    foreach ($formNames as $formName) {
-      $angModule = _afform_angular_module_name($formName, 'camel');
-      $cacheLine = $depCache->get($formName, NULL);
-
-      $jFile = $scanner->findFilePath($formName, 'aff.json');
-      $hFile = $scanner->findFilePath($formName, 'aff.html');
-
-      if (!$hFile) {
-        \Civi::log()->warning("Missing html file for Afform: '$jFile'");
-        continue;
-      }
-      $jStat = $jFile ? stat($jFile) : FALSE;
-      $hStat = stat($hFile);
-
-      if ($cacheLine === NULL) {
-        $needsUpdate = TRUE;
-      }
-      elseif ($jStat !== FALSE && $jStat['size'] !== $cacheLine['js']) {
-        $needsUpdate = TRUE;
-      }
-      elseif ($jStat !== FALSE && $jStat['mtime'] > $cacheLine['jm']) {
-        $needsUpdate = TRUE;
-      }
-      elseif ($hStat !== FALSE && $hStat['size'] !== $cacheLine['hs']) {
-        $needsUpdate = TRUE;
-      }
-      elseif ($hStat !== FALSE && $hStat['mtime'] > $cacheLine['hm']) {
-        $needsUpdate = TRUE;
-      }
-      else {
-        $needsUpdate = FALSE;
-      }
-
-      if ($needsUpdate) {
-        $cacheLine = [
-          'js' => $jStat['size'] ?? NULL,
-          'jm' => $jStat['mtime'] ?? NULL,
-          'hs' => $hStat['size'] ?? NULL,
-          'hm' => $hStat['mtime'] ?? NULL,
-          'r' => array_values(array_unique(array_merge(
-            [\CRM_Afform_AfformScanner::DEFAULT_REQUIRES],
-            $e->angularModules[$angModule]['requires'] ?? [],
-            self::reverseDepsFind(file_get_contents($hFile), $revMap)
-          ))),
-        ];
-        $depCache->set($formName, $cacheLine, $depCacheTtl);
-      }
-
-      $e->angularModules[$angModule]['requires'] = $cacheLine['r'];
-    }
+  public function autoReq(array $afform) {
+    $afform['requires'][] = \CRM_Afform_AfformScanner::DEFAULT_REQUIRES;
+    $dependencies = empty($afform['layout']) ? [] : $this->reverseDepsFind($afform['layout']);
+    return array_values(array_unique(array_merge($afform['requires'], $dependencies)));
   }
 
   /**
-   * @param $angularModules
-   * @return array
-   *   'attr': array(string $attrName => string $angModuleName)
-   *   'el': array(string $elementName => string $angModuleName)
+   * @param array $angularModules
+   * @return array{attr: array, el: array}
+   *   'attr': [string $attrName => string $angModuleName]
+   *   'el': [string $elementName => string $angModuleName]
    */
-  private static function reverseDeps($angularModules):array {
+  private function getRevMap(array $angularModules): array {
     $revMap = ['attr' => [], 'el' => []];
     foreach (array_keys($angularModules) as $module) {
       if (!isset($angularModules[$module]['exports'])) {
@@ -120,15 +68,13 @@ class AngularDependencyMapper {
 
   /**
    * @param string $html
-   * @param array $revMap
-   *   The reverse-dependencies map from reverseDeps().
    * @return array
    */
-  private static function reverseDepsFind($html, $revMap):array {
+  private function reverseDepsFind(string $html): array {
     $symbols = \Civi\Afform\Symbols::scan($html);
-    $elems = array_intersect_key($revMap['el'], $symbols->elements);
-    $attrs = array_intersect_key($revMap['attr'], $symbols->attributes);
-    return array_values(array_unique(array_merge($elems, $attrs)));
+    $elems = array_intersect_key($this->revMap['el'], $symbols->elements);
+    $attrs = array_intersect_key($this->revMap['attr'], $symbols->attributes);
+    return array_merge($elems, $attrs);
   }
 
 }
diff --git a/civicrm/ext/afform/core/Civi/Afform/Event/AfformEntitySortEvent.php b/civicrm/ext/afform/core/Civi/Afform/Event/AfformEntitySortEvent.php
index 38f01a6d78ffbbd69b701b91e1af0cb82754731b..57d5fe4aed26468b2d8f631943d795992ebabc43 100644
--- a/civicrm/ext/afform/core/Civi/Afform/Event/AfformEntitySortEvent.php
+++ b/civicrm/ext/afform/core/Civi/Afform/Event/AfformEntitySortEvent.php
@@ -29,7 +29,7 @@ class AfformEntitySortEvent extends AfformBaseEvent {
     $sorter = new FixedArraySort();
     $formEntities = array_keys($this->getFormDataModel()->getEntities());
     foreach ($formEntities as $entityName) {
-      // Add all dependencies that are the valid name of another entitiy
+      // Add all dependencies that are the valid name of another entity
       $dependencies = array_intersect($this->dependencies[$entityName] ?? [], $formEntities);
       $sorter->add($entityName, $dependencies);
     }
diff --git a/civicrm/ext/afform/core/Civi/Afform/Event/AfformEventEntityTrait.php b/civicrm/ext/afform/core/Civi/Afform/Event/AfformEventEntityTrait.php
index c48849a4345d9babfa32e822aec8f3148cb6fa17..864e98c6a3001779ece1afcda1b29eb36435fe0d 100644
--- a/civicrm/ext/afform/core/Civi/Afform/Event/AfformEventEntityTrait.php
+++ b/civicrm/ext/afform/core/Civi/Afform/Event/AfformEventEntityTrait.php
@@ -105,7 +105,7 @@ trait AfformEventEntityTrait {
    */
   public function setJoinIds($index, $joinEntity, $joinIds) {
     $idField = CoreUtil::getIdFieldName($joinEntity);
-    $this->entityIds[$this->entityName][$index]['_joins'][$joinEntity] = \CRM_Utils_Array::filterColumns($joinIds, [$idField]);
+    $this->entityIds[$this->entityName][$index]['joins'][$joinEntity] = \CRM_Utils_Array::filterColumns($joinIds, [$idField]);
     return $this;
   }
 
diff --git a/civicrm/ext/afform/core/Civi/Afform/Event/AfformSubmitEvent.php b/civicrm/ext/afform/core/Civi/Afform/Event/AfformSubmitEvent.php
index 522cf21900a7e97f0dcc0f11a779dc7e63c4ff51..548126ce71154dd3252eab444f29b5fcbe47d976 100644
--- a/civicrm/ext/afform/core/Civi/Afform/Event/AfformSubmitEvent.php
+++ b/civicrm/ext/afform/core/Civi/Afform/Event/AfformSubmitEvent.php
@@ -2,7 +2,7 @@
 namespace Civi\Afform\Event;
 
 use Civi\Afform\FormDataModel;
-use Civi\Api4\Action\Afform\Submit;
+use Civi\Api4\Action\Afform\AbstractProcessor;
 
 /**
  * Handle submission of an "<af-form>" entity (or set of entities in the case of `<af-repeat>`).
@@ -34,13 +34,13 @@ class AfformSubmitEvent extends AfformBaseEvent {
    *
    * @param array $afform
    * @param \Civi\Afform\FormDataModel $formDataModel
-   * @param \Civi\Api4\Action\Afform\Submit $apiRequest
+   * @param \Civi\Api4\Action\Afform\AbstractProcessor $apiRequest
    * @param array $records
    * @param string $entityType
    * @param string $entityName
    * @param array $entityIds
    */
-  public function __construct(array $afform, FormDataModel $formDataModel, Submit $apiRequest, &$records, string $entityType, string $entityName, array &$entityIds) {
+  public function __construct(array $afform, FormDataModel $formDataModel, AbstractProcessor $apiRequest, &$records, string $entityType, string $entityName, array &$entityIds) {
     parent::__construct($afform, $formDataModel, $apiRequest);
     $this->records =& $records;
     $this->entityType = $entityType;
diff --git a/civicrm/ext/afform/core/Civi/Afform/Tokens.php b/civicrm/ext/afform/core/Civi/Afform/Tokens.php
index 8e4e120c33505e98309323d038a5cf8a86b5b49f..c7b901f94428ec334765f7652d85365d714df4cd 100644
--- a/civicrm/ext/afform/core/Civi/Afform/Tokens.php
+++ b/civicrm/ext/afform/core/Civi/Afform/Tokens.php
@@ -36,6 +36,8 @@ class Tokens extends AutoService implements EventSubscriberInterface {
       'hook_civicrm_alterMailContent' => 'applyCkeditorWorkaround',
       'hook_civicrm_tokens' => 'hook_civicrm_tokens',
       'hook_civicrm_tokenValues' => 'hook_civicrm_tokenValues',
+      'civi.token.list' => 'listTokens',
+      'civi.token.eval' => 'evaluateTokens',
     ];
   }
 
@@ -103,70 +105,72 @@ class Tokens extends AutoService implements EventSubscriberInterface {
       }
     }
     catch (CryptoException $ex) {
-      \Civi::log()->warning('Civi\Afform\LegacyTokens cannot generate tokens due to crypto exception.', ['exception' => $ex]);
+      \Civi::log()->warning(__CLASS__ . ' cannot generate tokens due to a crypto exception.',
+        ['exception' => $ex]);
     }
   }
 
-  ///**
-  // * Expose tokens for use in UI.
-  // *
-  // * @param \Civi\Token\Event\TokenRegisterEvent $e
-  // */
-  //public static function onRegister(\Civi\Token\Event\TokenRegisterEvent $e) {
-  //  $tokenForms = static::getTokenForms();
-  //  foreach ($tokenForms as $tokenName => $afform) {
-  //    $e->register([
-  //      'entity' => 'afform',
-  //      'field' => $tokenName . 'Url',
-  //      'label' => E::ts('View Form: %1 (URL)', [1 => $afform['title'] ?? $afform['name']]),
-  //    ]);
-  //    $e->register([
-  //      'entity' => 'afform',
-  //      'field' => $tokenName . 'Link',
-  //      'label' => E::ts('View Form: %1 (Full Hyperlink)', [1 => $afform['title'] ?? $afform['name']]),
-  //    ]);
-  //  }
-  //}
-
-  ///**
-  // * Substitute any tokens of the form `{afform.myFormUrl}` or `{afform.myFormLink}` with actual values.
-  // *
-  // * @param \Civi\Token\Event\TokenValueEvent $e
-  // */
-  //public static function onEvaluate(\Civi\Token\Event\TokenValueEvent $e) {
-  //  $activeTokens = $e->getTokenProcessor()->getMessageTokens();
-  //  if (empty($activeTokens['afform'])) {
-  //    return;
-  //  }
-  //
-  //  $tokenForms = static::getTokenForms();
-  //  foreach ($tokenForms as $formName => $afform) {
-  //    if (!array_intersect($activeTokens['afform'], ["{$formName}Url", "{$formName}Link"])) {
-  //      continue;
-  //    }
-  //
-  //    if (empty($afform['server_route'])) {
-  //      \Civi::log()
-  //        ->warning('Civi\Afform\Tokens: Cannot generate link for {formName} -- missing server_route', [
-  //          'formName' => $formName,
-  //        ]);
-  //      continue;
-  //    }
-  //
-  //    foreach ($e->getRows() as $row) {
-  //      /** @var \Civi\Token\TokenRow $row */
-  //      try {
-  //        $url = self::createUrl($afform, $row->context['contactId']);
-  //        $row->format('text/plain')->tokens('afform', "{$formName}Url", $url);
-  //        $row->format('text/html')->tokens('afform', "{$formName}Link",
-  //          sprintf('<a href="%s">%s</a>', htmlentities($url), htmlentities($afform['title'] ?? $afform['name'])));
-  //      }
-  //      catch (CryptoException $e) {
-  //        \Civi::log()->warning('Civi\Afform\Tokens cannot generate tokens due to crypto exception.', ['exception' => $e]);
-  //      }
-  //    }
-  //  }
-  //}
+  public static function listTokens(\Civi\Token\Event\TokenRegisterEvent $e) {
+    // this tokens should be available only in contact context i.e. in Message Templates (add/edit)
+    if (!in_array('contactId', $e->getTokenProcessor()->getContextValues('schema')[0])) {
+      return;
+    }
+
+    $e->entity('afformSubmission')
+      ->register('validateSubmissionUrl', E::ts('Validate Submission URL'))
+      ->register('validateSubmissionLink', E::ts('Validate Submission (Full Hyperlink)'));
+  }
+
+  public static function evaluateTokens(\Civi\Token\Event\TokenValueEvent $e) {
+    $messageTokens = $e->getTokenProcessor()->getMessageTokens();
+    if (empty($messageTokens['afformSubmission'])) {
+      return;
+    }
+
+    // If these tokens are being used, there will only be a single "row".
+    // The relevant context is on the TokenProcessor itself, not the row.
+    $context = $e->getTokenProcessor()->context;
+    $sid = $context['validateAfformSubmission']['submissionId'] ?? NULL;
+    if (empty($sid)) {
+      return;
+    }
+
+    /** @var \Civi\Token\TokenRow $row */
+    $url = self::generateEmailVerificationUrl($sid);
+    $link = sprintf(
+      '<a href="%s">%s</a>', htmlentities($url),
+      htmlentities(ts('verify your email address')));
+
+    foreach ($e->getRows() as $row) {
+      $row->format('text/plain')->tokens('afformSubmission', 'validateSubmissionUrl', $url);
+      $row->format('text/html')->tokens('afformSubmission', 'validateSubmissionLink', $link);
+    }
+  }
+
+  private static function generateEmailVerificationUrl(int $submissionId): string {
+    // 10 minutes
+    $expires = \CRM_Utils_Time::time() + (10 * 60);
+
+    try {
+      /** @var \Civi\Crypto\CryptoJwt $jwt */
+      $jwt = \Civi::service('crypto.jwt');
+
+      $token = $jwt->encode([
+        'exp' => $expires,
+        // Note: Scope is not the same as "authx" scope. "Authx" tokens are user-login tokens. This one is a more limited access token.
+        'scope' => 'afformVerifyEmail',
+        'submissionId' => $submissionId,
+      ]);
+    }
+    catch (CryptoException $exception) {
+      \Civi::log()->warning(
+        'Civi\Afform\LegacyTokens cannot generate tokens due to crypto exception.',
+        ['exception' => $exception]);
+    }
+
+    return \CRM_Utils_System::url('civicrm/afform/submission/verify',
+      ['token' => $token], TRUE, NULL, FALSE, TRUE);
+  }
 
   /**
    * Get a list of forms that have token support enabled.
diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php
index fc4ad6a32fb18d42a25df6a7932401881b1adc31..da392f4933eb575e884eca85fc3161873c12976f 100644
--- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php
+++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php
@@ -4,6 +4,7 @@ namespace Civi\Api4\Action\Afform;
 
 use Civi\Afform\Event\AfformEntitySortEvent;
 use Civi\Afform\Event\AfformPrefillEvent;
+use Civi\Afform\Event\AfformSubmitEvent;
 use Civi\Afform\FormDataModel;
 use Civi\API\Exception\UnauthorizedException;
 use Civi\Api4\Generic\Result;
@@ -49,7 +50,7 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
    * Each key in the array corresponds to the name of an entity,
    * and the value is an array of arrays
    * (because of `<af-repeat>` all entities are treated as if they may be multi)
-   * E.g. $entityIds['Individual1'] = [['id' => 1, '_joins' => ['Email' => [['id' => 1], ['id' => 2]]];
+   * E.g. $entityIds['Individual1'] = [['id' => 1, 'joins' => ['Email' => [['id' => 1], ['id' => 2]]];
    *
    * @var array
    */
@@ -63,12 +64,15 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
    */
   public function _run(Result $result) {
     $this->_afform = civicrm_api4('Afform', 'get', [
-      'where' => [['name', '=', $this->name], ['submit_currently_open', '=', TRUE]],
+      'select' => ['*', 'submit_currently_open'],
+      'where' => [['name', '=', $this->name]],
     ])->first();
+    // Either the form doesn't exist or user lacks permission
     if (!$this->_afform) {
-      // Either the form doesn't exist, user lacks permission,
-      // or submit_currently_open = false.
-      throw new UnauthorizedException(E::ts('You do not have permission to submit this form'));
+      throw new UnauthorizedException(E::ts('You do not have permission to submit this form'), ['show_detailed_error' => TRUE]);
+    }
+    if (empty($this->_afform['submit_currently_open'])) {
+      throw new UnauthorizedException(E::ts('This form is not currently open for submissions.'), ['show_detailed_error' => TRUE]);
     }
     $this->_formDataModel = new FormDataModel($this->_afform['layout']);
     $this->loadEntities();
@@ -82,6 +86,13 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
     $sorter = new AfformEntitySortEvent($this->_afform, $this->_formDataModel, $this);
     \Civi::dispatcher()->dispatch('civi.afform.sort.prefill', $sorter);
     $sortedEntities = $sorter->getSortedEnties();
+
+    // if submission id is passed then we should display the submission data
+    if (!empty($this->args['sid'])) {
+      $this->prePopulateSubmissionData($sortedEntities);
+      return;
+    }
+
     foreach ($sortedEntities as $entityName) {
       $entity = $this->_formDataModel->getEntity($entityName);
       $this->_entityIds[$entityName] = [];
@@ -101,6 +112,32 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
     }
   }
 
+  /**
+   * Load the data from submission table
+   */
+  protected function prePopulateSubmissionData($sortedEntities) {
+    // if submission id is passed then get the data from submission
+    // we should prepopulate only pending submissions
+    $afformSubmissionData = \Civi\Api4\AfformSubmission::get(FALSE)
+      ->addSelect('data')
+      ->addWhere('id', '=', $this->args['sid'])
+      ->addWhere('afform_name', '=', $this->name)
+      ->execute()->first();
+
+    // do nothing and return early
+    if (empty($afformSubmissionData)) {
+      return;
+    }
+
+    foreach ($sortedEntities as $entityName) {
+      foreach ($afformSubmissionData['data'] as $entity => $data) {
+        if ($entity == $entityName) {
+          $this->_entityValues[$entityName] = $data;
+        }
+      }
+    }
+  }
+
   /**
    * Fetch all data needed to display a given entity on this form
    *
@@ -132,7 +169,7 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
     foreach ($ids as $index => $id) {
       $this->_entityIds[$entity['name']][$index] = [
         $idField => isset($result[$id]) ? $id : NULL,
-        '_joins' => [],
+        'joins' => [],
       ];
       if (isset($result[$id])) {
         $data = ['fields' => $result[$id]];
@@ -143,7 +180,7 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
             'limit' => !empty($join['af-repeat']) ? $join['max'] ?? 0 : 1,
             'orderBy' => self::getEntityField($joinEntity, 'is_primary') ? ['is_primary' => 'DESC'] : [],
           ]));
-          $this->_entityIds[$entity['name']][$index]['_joins'][$joinEntity] = \CRM_Utils_Array::filterColumns($data['joins'][$joinEntity], [$joinIdField]);
+          $this->_entityIds[$entity['name']][$index]['joins'][$joinEntity] = \CRM_Utils_Array::filterColumns($data['joins'][$joinEntity], [$joinIdField]);
         }
         $this->_entityValues[$entity['name']][$index] = $data;
       }
@@ -300,4 +337,118 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
     return $this;
   }
 
+  /**
+   * Replace Entity reference fields with the id of the referenced entity.
+   * @param string $entityName
+   * @param $records
+   */
+  protected function replaceReferences($entityName, $records) {
+    $entityNames = array_diff(array_keys($this->_entityIds), [$entityName]);
+    $entityType = $this->_formDataModel->getEntity($entityName)['type'];
+    foreach ($records as $key => $record) {
+      foreach ($record['fields'] as $field => $value) {
+        if (array_intersect($entityNames, (array) $value) && $this->getEntityField($entityType, $field)['input_type'] === 'EntityRef') {
+          if (is_array($value)) {
+            foreach ($value as $i => $val) {
+              if (in_array($val, $entityNames, TRUE)) {
+                $refIds = array_filter(array_column($this->_entityIds[$val], 'id'));
+                array_splice($records[$key]['fields'][$field], $i, 1, $refIds);
+              }
+            }
+          }
+          else {
+            $records[$key]['fields'][$field] = $this->_entityIds[$value][0]['id'] ?? NULL;
+          }
+        }
+      }
+    }
+    return $records;
+  }
+
+  /**
+   * @param array $records
+   * @param string $entityName
+   */
+  protected function fillIdFields(array &$records, string $entityName): void {
+    foreach ($records as $index => &$record) {
+      if (empty($record['fields']['id']) && !empty($this->_entityIds[$entityName][$index]['id'])) {
+        $record['fields']['id'] = $this->_entityIds[$entityName][$index]['id'];
+      }
+    }
+  }
+
+  /**
+   * Recursively add entity IDs to the values.
+   */
+  protected function combineValuesAndIds($values, $ids, $isJoin = FALSE) {
+    $combined = [];
+    $values += array_fill_keys(array_keys($ids), []);
+    foreach ($values as $name => $value) {
+      foreach ($value as $idx => $val) {
+        $idData = $ids[$name][$idx] ?? [];
+        if (!$isJoin) {
+          $idData['joins'] = $this->combineValuesAndIds($val['joins'] ?? [], $idData['joins'] ?? [], TRUE);
+        }
+        // $item = array_merge($isJoin ? $val : ($val['fields'] ?? []), $idData);
+        $item = array_merge(($val ?? []), $idData);
+        $combined[$name][$idx] = $item;
+      }
+    }
+    return $combined;
+  }
+
+  /**
+   * Preprocess submitted values
+   */
+  public function preprocessSubmittedValues(array $submittedValues) {
+    $entityValues = [];
+    foreach ($this->_formDataModel->getEntities() as $entityName => $entity) {
+      $entityValues[$entityName] = [];
+      // Gather submitted field values from $values['fields'] and sub-entities from $values['joins']
+      foreach ($submittedValues[$entityName] ?? [] as $values) {
+        // Only accept values from fields on the form
+        $values['fields'] = array_intersect_key($values['fields'] ?? [], $entity['fields']);
+        // Only accept joins set on the form
+        $values['joins'] = array_intersect_key($values['joins'] ?? [], $entity['joins']);
+        foreach ($values['joins'] as $joinEntity => &$joinValues) {
+          // Enforce the limit set by join[max]
+          $joinValues = array_slice($joinValues, 0, $entity['joins'][$joinEntity]['max'] ?? NULL);
+          foreach ($joinValues as $index => $vals) {
+            // Only accept values from join fields on the form
+            $joinValues[$index] = array_intersect_key($vals, $entity['joins'][$joinEntity]['fields'] ?? []);
+            // Merge in pre-set data
+            $joinValues[$index] = array_merge($joinValues[$index], $entity['joins'][$joinEntity]['data'] ?? []);
+          }
+        }
+        $entityValues[$entityName][] = $values;
+      }
+      if (!empty($entity['data'])) {
+        // If no submitted values but data exists, fill the minimum number of records
+        for ($index = 0; $index < $entity['min']; $index++) {
+          $entityValues[$entityName][$index] = $entityValues[$entityName][$index] ?? ['fields' => []];
+        }
+        // Predetermined values override submitted values
+        foreach ($entityValues[$entityName] as $index => $vals) {
+          $entityValues[$entityName][$index]['fields'] = $entity['data'] + $vals['fields'];
+        }
+      }
+    }
+
+    return $entityValues;
+  }
+
+  /**
+   * Process form data
+   */
+  public function processFormData(array $entityValues) {
+    $entityWeights = \Civi\Afform\Utils::getEntityWeights($this->_formDataModel->getEntities(), $entityValues);
+    foreach ($entityWeights as $entityName) {
+      $entityType = $this->_formDataModel->getEntity($entityName)['type'];
+      $records = $this->replaceReferences($entityName, $entityValues[$entityName]);
+      $this->fillIdFields($records, $entityName);
+      $event = new AfformSubmitEvent($this->_afform, $this->_formDataModel, $this, $records, $entityType, $entityName, $this->_entityIds);
+      \Civi::dispatcher()->dispatch('civi.afform.submit', $event);
+    }
+  }
+
 }
diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php
index 9559b619aeceb52d50acdd0377efadbf63d0e72d..a309fd55107f9ac10457d8252c971f100f921b54 100644
--- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php
+++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php
@@ -16,19 +16,22 @@ class Get extends \Civi\Api4\Generic\BasicGetAction {
   use \Civi\Api4\Utils\AfformFormatTrait;
 
   public function getRecords() {
+    $afforms = [];
+
     /** @var \CRM_Afform_AfformScanner $scanner */
     $scanner = \Civi::service('afform_scanner');
+
+    // Optimization: only fetch extra data if requested
     $getComputed = $this->_isFieldSelected('has_local', 'has_base', 'base_module');
     $getLayout = $this->_isFieldSelected('layout');
     $getSearchDisplays = $this->_isFieldSelected('search_displays');
-    $afforms = [];
-
-    // This helps optimize lookups by file/module/directive name
+    // To optimize lookups by file/module/directive name
     $getNames = array_filter([
       'name' => $this->_itemsToGet('name'),
       'module_name' => $this->_itemsToGet('module_name'),
       'directive_name' => $this->_itemsToGet('directive_name'),
     ]);
+    // To optimize lookups by type
     $getTypes = $this->_itemsToGet('type');
 
     $names = $getNames['name'] ?? array_keys($scanner->findFilePaths());
@@ -40,22 +43,12 @@ class Get extends \Civi\Api4\Generic\BasicGetAction {
     \Civi::dispatcher()->dispatch('civi.afform.get', $event);
     // Set defaults for Afforms supplied by hook
     foreach ($hookForms as $afform) {
-      $name = $afform['name'];
-      $afform += [
-        'has_base' => TRUE,
-        'type' => 'form',
-      ];
-      // afCore and af would normally get required by AngularDependencyMapper but that only works on file-based afforms
-      $afform['requires'] = array_unique(array_merge(['afCore', 'af'], $afform['requires'] ?? []));
-      if (!in_array($name, $names)) {
-        $names[] = $name;
-      }
-      $afforms[$name] = $afform;
+      $names[] = $afform['name'];
+      $afform['has_base'] = TRUE;
+      $afforms[$afform['name']] = $afform;
     }
 
-    if ($this->checkPermissions) {
-      $names = array_filter($names, [$this, 'checkPermission']);
-    }
+    $names = array_unique($names);
 
     foreach ($names as $name) {
       $info = [
@@ -66,29 +59,35 @@ class Get extends \Civi\Api4\Generic\BasicGetAction {
       // Skip if afform does not match requested name
       foreach ($getNames as $key => $names) {
         if (!in_array($info[$key], $names)) {
+          unset($afforms[$name]);
           continue 2;
         }
       }
-      $record = $scanner->getMeta($name);
+      $record = $scanner->getMeta($name, $getLayout || $getSearchDisplays);
       // Skip if afform does not exist or is not of requested type(s)
       if (
         (!$record && !isset($afforms[$name])) ||
         ($getTypes && isset($record['type']) && !in_array($record['type'], $getTypes, TRUE))
       ) {
+        unset($afforms[$name]);
         continue;
       }
       $afforms[$name] = array_merge($afforms[$name] ?? [], $record ?? [], $info);
-      if ($getComputed) {
-        $scanner->addComputedFields($afforms[$name]);
-      }
       if (isset($afforms[$name]['permission']) && is_string($afforms[$name]['permission'])) {
         $afforms[$name]['permission'] = explode(',', $afforms[$name]['permission']);
       }
-      if ($getLayout || $getSearchDisplays) {
-        // Autogenerated layouts will already be in values but can be overridden; scanner takes priority
-        $afforms[$name]['layout'] = $scanner->getLayout($name) ?? $afforms[$name]['layout'] ?? '';
+      // No permissions specified, set default.
+      if (empty($afforms[$name]['permission'])) {
+        $afforms[$name]['permission'] = ['access CiviCRM'];
       }
-      if ($getSearchDisplays) {
+      if (!$this->checkPermission($afforms[$name])) {
+        unset($afforms[$name]);
+        continue;
+      }
+      if ($getComputed) {
+        $scanner->addComputedFields($afforms[$name]);
+      }
+      if ($getSearchDisplays && !empty($afforms[$name]['layout'])) {
         $afforms[$name]['search_displays'] = $this->getSearchDisplays($afforms[$name]['layout']);
       }
       if (!isset($afforms[$name]['placement']) && $this->_isFieldSelected('placement')) {
@@ -98,7 +97,7 @@ class Get extends \Civi\Api4\Generic\BasicGetAction {
 
     if ($getLayout && $this->layoutFormat !== 'html') {
       foreach ($afforms as $name => $record) {
-        $afforms[$name]['layout'] = $this->convertHtmlToOutput($record['layout']);
+        $afforms[$name]['layout'] = isset($record['layout']) ? $this->convertHtmlToOutput($record['layout']) : NULL;
       }
     }
 
@@ -124,8 +123,14 @@ class Get extends \Civi\Api4\Generic\BasicGetAction {
    *
    * @return bool
    */
-  protected function checkPermission($name) {
-    return \CRM_Core_Permission::check("@afform:$name");
+  protected function checkPermission($afform) {
+    if (!$this->checkPermissions) {
+      return TRUE;
+    }
+    if (($afform['permission_operator'] ?? NULL) === 'OR') {
+      $afform['permission'] = [$afform['permission']];
+    }
+    return \CRM_Core_Permission::check($afform['permission']);
   }
 
   /**
diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Process.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Process.php
new file mode 100644
index 0000000000000000000000000000000000000000..2b679b208276eb28cfcb5aeeaa03d8514276ae56
--- /dev/null
+++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Process.php
@@ -0,0 +1,52 @@
+<?php
+
+namespace Civi\Api4\Action\Afform;
+
+use Civi\Api4\AfformSubmission;
+
+/**
+ * Class Process
+ * @package Civi/Api4/Action/Afform
+ */
+class Process extends AbstractProcessor {
+
+  /**
+   * Submission id
+   * @var int
+   * @required
+   */
+  protected $submissionId;
+
+  protected function processForm() {
+    // get the submitted data
+    $afformSubmissionData = AfformSubmission::get(FALSE)
+      ->addSelect('data')
+      ->addWhere('id', '=', $this->submissionId)
+      ->addWhere('status_id:name', '=', 'Pending')
+      ->execute()->first();
+
+    // return early if nothing to process
+    if (empty($afformSubmissionData)) {
+      return [];
+    }
+
+    // preprocess submitted values
+    $entityValues = $this->preprocessSubmittedValues($afformSubmissionData['data']);
+
+    // process and save various enities
+    $this->processFormData($entityValues);
+
+    // combine ids with existing data
+    $submissionData = $this->combineValuesAndIds($afformSubmissionData['data'], $this->_entityIds);
+
+    // Update submission record with entity IDs.
+    AfformSubmission::update(FALSE)
+      ->addWhere('id', '=', $this->submissionId)
+      ->addValue('data', $submissionData)
+      ->addValue('status_id:name', 'Processed')
+      ->execute();
+
+    return $this->_entityIds;
+  }
+
+}
diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php
index 1bde2e3ff2ccf7da24e9bb9397737f297a588a91..a6024dd0504a7c12eff1acf1f92f90404184108c 100644
--- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php
+++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php
@@ -29,37 +29,21 @@ class Submit extends AbstractProcessor {
   protected $values;
 
   protected function processForm() {
-    // Preprocess submitted values
-    $entityValues = [];
-    foreach ($this->_formDataModel->getEntities() as $entityName => $entity) {
-      $entityValues[$entityName] = [];
-      // Gather submitted field values from $values['fields'] and sub-entities from $values['joins']
-      foreach ($this->values[$entityName] ?? [] as $values) {
-        // Only accept values from fields on the form
-        $values['fields'] = array_intersect_key($values['fields'] ?? [], $entity['fields']);
-        // Only accept joins set on the form
-        $values['joins'] = array_intersect_key($values['joins'] ?? [], $entity['joins']);
-        foreach ($values['joins'] as $joinEntity => &$joinValues) {
-          // Enforce the limit set by join[max]
-          $joinValues = array_slice($joinValues, 0, $entity['joins'][$joinEntity]['max'] ?? NULL);
-          foreach ($joinValues as $index => $vals) {
-            // Only accept values from join fields on the form
-            $joinValues[$index] = array_intersect_key($vals, $entity['joins'][$joinEntity]['fields'] ?? []);
-            // Merge in pre-set data
-            $joinValues[$index] = array_merge($joinValues[$index], $entity['joins'][$joinEntity]['data'] ?? []);
-          }
-        }
-        $entityValues[$entityName][] = $values;
-      }
-      if (!empty($entity['data'])) {
-        // If no submitted values but data exists, fill the minimum number of records
-        for ($index = 0; $index < $entity['min']; $index++) {
-          $entityValues[$entityName][$index] = $entityValues[$entityName][$index] ?? ['fields' => []];
-        }
-        // Predetermined values override submitted values
-        foreach ($entityValues[$entityName] as $index => $vals) {
-          $entityValues[$entityName][$index]['fields'] = $entity['data'] + $vals['fields'];
-        }
+    // preprocess submitted values
+    $entityValues = $this->preprocessSubmittedValues($this->values);
+
+    // get the submission information if we have submission id.
+    // currently we don't support processing of already processed forms
+    // return validation error in those cases
+    if (!empty($this->args['sid'])) {
+      $afformSubmissionData = \Civi\Api4\AfformSubmission::get(FALSE)
+        ->addWhere('id', '=', $this->args['sid'])
+        ->addWhere('afform_name', '=', $this->name)
+        ->addWhere('status_id:name', '=', 'Processed')
+        ->execute()->count();
+
+      if ($afformSubmissionData > 0) {
+        throw new \CRM_Core_Exception(ts('Submission is already processed.'));
       }
     }
 
@@ -73,30 +57,42 @@ class Submit extends AbstractProcessor {
     }
 
     // Save submission record
-    if (!empty($this->_afform['create_submission'])) {
+    $status = 'Processed';
+    if (!empty($this->_afform['create_submission']) && empty($this->args['sid'])) {
+      if (!empty($this->_afform['manual_processing'])) {
+        $status = 'Pending';
+      }
+
       $submission = AfformSubmission::create(FALSE)
         ->addValue('contact_id', \CRM_Core_Session::getLoggedInContactID())
         ->addValue('afform_name', $this->name)
         ->addValue('data', $this->getValues())
+        ->addValue('status_id:name', $status)
         ->execute()->first();
     }
 
-    // Call submit handlers
-    $entityWeights = \Civi\Afform\Utils::getEntityWeights($this->_formDataModel->getEntities(), $entityValues);
-    foreach ($entityWeights as $entityName) {
-      $entityType = $this->_formDataModel->getEntity($entityName)['type'];
-      $records = $this->replaceReferences($entityName, $entityValues[$entityName]);
-      $this->fillIdFields($records, $entityName);
-      $event = new AfformSubmitEvent($this->_afform, $this->_formDataModel, $this, $records, $entityType, $entityName, $this->_entityIds);
-      \Civi::dispatcher()->dispatch('civi.afform.submit', $event);
+    // let's not save the data in other CiviCRM table if manual verification is needed.
+    if (!empty($this->_afform['manual_processing']) && empty($this->args['sid'])) {
+      // check for verification email
+      $this->processVerficationEmail($submission['id']);
+      return [];
     }
 
+    // process and save various enities
+    $this->processFormData($entityValues);
+
     $submissionData = $this->combineValuesAndIds($this->getValues(), $this->_entityIds);
     // Update submission record with entity IDs.
     if (!empty($this->_afform['create_submission'])) {
+      $submissionId = $submission['id'];
+      if (!empty($this->args['sid'])) {
+        $submissionId = $this->args['sid'];
+      }
+
       AfformSubmission::update(FALSE)
-        ->addWhere('id', '=', $submission['id'])
+        ->addWhere('id', '=', $submissionId)
         ->addValue('data', $submissionData)
+        ->addValue('status_id:name', $status)
         ->execute();
     }
 
@@ -106,25 +102,6 @@ class Submit extends AbstractProcessor {
     ];
   }
 
-  /**
-   * Recursively add entity IDs to the values.
-   */
-  protected function combineValuesAndIds($values, $ids, $isJoin = FALSE) {
-    $combined = [];
-    $values += array_fill_keys(array_keys($ids), []);
-    foreach ($values as $name => $value) {
-      foreach ($value as $idx => $val) {
-        $idData = $ids[$name][$idx] ?? [];
-        if (!$isJoin) {
-          $idData['_joins'] = $this->combineValuesAndIds($val['joins'] ?? [], $idData['_joins'] ?? [], TRUE);
-        }
-        $item = array_merge($isJoin ? $val : ($val['fields'] ?? []), $idData);
-        $combined[$name][$idx] = $item;
-      }
-    }
-    return $combined;
-  }
-
   /**
    * Validate required field values
    *
@@ -251,34 +228,6 @@ class Submit extends AbstractProcessor {
     return NULL;
   }
 
-  /**
-   * Replace Entity reference fields with the id of the referenced entity.
-   * @param string $entityName
-   * @param $records
-   */
-  private function replaceReferences($entityName, $records) {
-    $entityNames = array_diff(array_keys($this->_entityIds), [$entityName]);
-    $entityType = $this->_formDataModel->getEntity($entityName)['type'];
-    foreach ($records as $key => $record) {
-      foreach ($record['fields'] as $field => $value) {
-        if (array_intersect($entityNames, (array) $value) && $this->getEntityField($entityType, $field)['input_type'] === 'EntityRef') {
-          if (is_array($value)) {
-            foreach ($value as $i => $val) {
-              if (in_array($val, $entityNames, TRUE)) {
-                $refIds = array_filter(array_column($this->_entityIds[$val], 'id'));
-                array_splice($records[$key]['fields'][$field], $i, 1, $refIds);
-              }
-            }
-          }
-          else {
-            $records[$key]['fields'][$field] = $this->_entityIds[$value][0]['id'] ?? NULL;
-          }
-        }
-      }
-    }
-    return $records;
-  }
-
   /**
    * Check if contact(s) meet the minimum requirements to be created (name and/or email).
    *
@@ -501,18 +450,6 @@ class Submit extends AbstractProcessor {
     return $this;
   }
 
-  /**
-   * @param array $records
-   * @param string $entityName
-   */
-  private function fillIdFields(array &$records, string $entityName): void {
-    foreach ($records as $index => &$record) {
-      if (empty($record['fields']['id']) && !empty($this->_entityIds[$entityName][$index]['id'])) {
-        $record['fields']['id'] = $this->_entityIds[$entityName][$index]['id'];
-      }
-    }
-  }
-
   /**
    * Generates token returned from submit action
    *
@@ -534,4 +471,70 @@ class Submit extends AbstractProcessor {
     ]);
   }
 
+  /**
+   * Function to send the verification email if configured
+   *
+   * @param int $submissionId
+   *
+   * @return void
+   */
+  private function processVerficationEmail(int $submissionId):void {
+    // check if email verification configured and message template is set
+    if (empty($this->_afform['allow_verification_by_email']) || empty($this->_afform['email_confirmation_template_id'])) {
+      return;
+    }
+
+    $emailValue = '';
+    $submittedValues = $this->getValues();
+    foreach ($this->_formDataModel->getEntities() as $entityName => $entity) {
+      foreach ($submittedValues[$entityName] ?? [] as $values) {
+        $values['joins'] = array_intersect_key($values['joins'] ?? [], $entity['joins']);
+        foreach ($values['joins'] as $joinEntity => &$joinValues) {
+          if ($joinEntity === 'Email') {
+            foreach ($joinValues as $fld => $val) {
+              if (!empty($val['email'])) {
+                $emailValue = $val['email'];
+                break;
+              }
+            }
+          }
+        }
+      }
+    }
+
+    // processing sending of email only if email field exists in the form
+    if (!empty($emailValue)) {
+      $this->sendEmail($emailValue, $submissionId);
+    }
+  }
+
+  /**
+   * Function to send email
+   *
+   * @param string $emailAddress
+   * @param int $submissionId
+   *
+   * @return void
+   */
+  private function sendEmail(string $emailAddress, int $submissionId) {
+    // get domain email address
+    [$domainEmailName, $domainEmailAddress] = \CRM_Core_BAO_Domain::getNameAndEmail();
+
+    $tokenContext = [
+      'validateAfformSubmission' => [
+        'submissionId' => $submissionId,
+      ],
+    ];
+
+    // send email
+    $emailParams = [
+      'messageTemplateID' => $this->_afform['email_confirmation_template_id'],
+      'from' => "$domainEmailName <" . $domainEmailAddress . ">",
+      'toEmail' => $emailAddress,
+      'tokenContext' => $tokenContext,
+    ];
+
+    \CRM_Core_BAO_MessageTemplate::sendTemplate($emailParams);
+  }
+
 }
diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/SubmitFile.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/SubmitFile.php
index 3ccfdd9ff5030bc67ba7e59680bdec4f65723379..05218b3d532373cfe2f34787c342faea0685b392 100644
--- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/SubmitFile.php
+++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/SubmitFile.php
@@ -70,7 +70,7 @@ class SubmitFile extends AbstractProcessor {
     $joinIndex = (int) $this->joinIndex;
     $idField = CoreUtil::getIdFieldName($apiEntity);
     if ($this->joinEntity) {
-      $entityId = $this->_entityIds[$this->modelName][$entityIndex]['_joins'][$this->joinEntity][$joinIndex][$idField] ?? NULL;
+      $entityId = $this->_entityIds[$this->modelName][$entityIndex]['joins'][$this->joinEntity][$joinIndex][$idField] ?? NULL;
     }
     else {
       $entityId = $this->_entityIds[$this->modelName][$entityIndex][$idField] ?? NULL;
diff --git a/civicrm/ext/afform/core/Civi/Api4/Afform.php b/civicrm/ext/afform/core/Civi/Api4/Afform.php
index 214ed88e5a6c7b6c501b10ed5c803eac42f550d1..0484f05330ac005d16cf61738e651a1916d2b2e8 100644
--- a/civicrm/ext/afform/core/Civi/Api4/Afform.php
+++ b/civicrm/ext/afform/core/Civi/Api4/Afform.php
@@ -98,6 +98,15 @@ class Afform extends Generic\AbstractEntity {
       ->setCheckPermissions($checkPermissions);
   }
 
+  /**
+   * @param bool $checkPermissions
+   * @return Action\Afform\Process
+   */
+  public static function process($checkPermissions = TRUE) {
+    return (new Action\Afform\Process('Afform', __FUNCTION__))
+      ->setCheckPermissions($checkPermissions);
+  }
+
   /**
    * @param bool $checkPermissions
    * @return Action\Afform\SubmitFile
@@ -231,6 +240,18 @@ class Afform extends Generic\AbstractEntity {
           'title' => E::ts('Log Submissions'),
           'data_type' => 'Boolean',
         ],
+        [
+          'name' => 'manual_processing',
+          'data_type' => 'Boolean',
+        ],
+        [
+          'name' => 'allow_verification_by_email',
+          'data_type' => 'Boolean',
+        ],
+        [
+          'name' => 'email_confirmation_template_id',
+          'data_type' => 'Integer',
+        ],
         [
           'name' => 'navigation',
           'title' => E::ts('Navigation Menu'),
@@ -243,6 +264,12 @@ class Afform extends Generic\AbstractEntity {
           'data_type' => 'Array',
           'description' => 'HTML form layout; format is controlled by layoutFormat param',
         ],
+        [
+          'name' => 'modified_date',
+          'title' => E::ts('Date Modified'),
+          'data_type' => 'Timestamp',
+          'readonly' => TRUE,
+        ],
       ];
       // Calculated fields returned by get action
       if ($self->getAction() === 'get') {
diff --git a/civicrm/ext/afform/core/afform.php b/civicrm/ext/afform/core/afform.php
index e0ecada9c99c677d020c31388753ed1d09059974..79d4cdc24c3c1e8c3a33e9af845a0785ecc91721 100644
--- a/civicrm/ext/afform/core/afform.php
+++ b/civicrm/ext/afform/core/afform.php
@@ -54,7 +54,7 @@ function afform_civicrm_config(&$config) {
   $dispatcher->addListener('civi.afform.submit', ['\Civi\Api4\Action\Afform\Submit', 'processGenericEntity'], 0);
   $dispatcher->addListener('civi.afform.submit', ['\Civi\Api4\Action\Afform\Submit', 'preprocessContact'], 10);
   $dispatcher->addListener('civi.afform.submit', ['\Civi\Api4\Action\Afform\Submit', 'processRelationships'], 1);
-  $dispatcher->addListener('hook_civicrm_angularModules', ['\Civi\Afform\AngularDependencyMapper', 'autoReq'], -1000);
+  $dispatcher->addListener('hook_civicrm_angularModules', '_afform_hook_civicrm_angularModules', -1000);
   $dispatcher->addListener('hook_civicrm_alterAngular', ['\Civi\Afform\AfformMetadataInjector', 'preprocess']);
   $dispatcher->addListener('hook_civicrm_check', ['\Civi\Afform\StatusChecks', 'hook_civicrm_check']);
   $dispatcher->addListener('civi.afform.get', ['\Civi\Api4\Action\Afform\Get', 'getCustomGroupBlocks']);
@@ -135,7 +135,7 @@ function afform_civicrm_managed(&$entities, $modules) {
         'values' => [
           'name' => $afform['name'],
           'label' => $afform['navigation']['label'] ?: $afform['title'],
-          'permission' => $afform['permission'],
+          'permission' => (array) (empty($afform['permission']) ? 'access CiviCRM' : $afform['permission']),
           'permission_operator' => $afform['permission_operator'] ?? 'AND',
           'weight' => $afform['navigation']['weight'] ?? 0,
           'url' => $afform['server_route'],
@@ -301,17 +301,22 @@ function _afform_get_contact_types(array $mixedTypes): array {
 }
 
 /**
- * Implements hook_civicrm_angularModules().
+ * Late-listener for Angular modules: adds all Afforms and their dependencies.
  *
- * Generate a list of Afform Angular modules.
+ * Must run last so that all other modules are present for reverse-dependency mapping.
+ *
+ * @implements CRM_Utils_Hook::angularModules
+ * @param \Civi\Core\Event\GenericHookEvent $e
  */
-function afform_civicrm_angularModules(&$angularModules) {
+function _afform_hook_civicrm_angularModules($e) {
   $afforms = \Civi\Api4\Afform::get(FALSE)
-    ->setSelect(['name', 'requires', 'module_name', 'directive_name'])
+    ->setSelect(['name', 'requires', 'module_name', 'directive_name', 'layout'])
+    ->setLayoutFormat('html')
     ->execute();
 
+  // 1st pass, add each Afform as angular module
   foreach ($afforms as $afform) {
-    $angularModules[$afform['module_name']] = [
+    $e->angularModules[$afform['module_name']] = [
       'ext' => E::LONG_NAME,
       'js' => ['assetBuilder://afform.js?name=' . urlencode($afform['name'])],
       'requires' => $afform['requires'],
@@ -325,6 +330,12 @@ function afform_civicrm_angularModules(&$angularModules) {
       ],
     ];
   }
+
+  // 2nd pass, now that all Angular modules are declared, add reverse dependencies
+  $dependencyMapper = new \Civi\Afform\AngularDependencyMapper($e->angularModules);
+  foreach ($afforms as $afform) {
+    $e->angularModules[$afform['module_name']]['requires'] = $dependencyMapper->autoReq($afform);
+  }
 }
 
 /**
@@ -402,7 +413,7 @@ function afform_civicrm_alterMenu(&$items) {
         'page_callback' => 'CRM_Afform_Page_AfformBase',
         'page_arguments' => 'afform=' . urlencode($name),
         'access_arguments' => [["@afform:$name"], 'and'],
-        'is_public' => $meta['is_public'],
+        'is_public' => $meta['is_public'] ?? FALSE,
       ];
     }
   }
@@ -433,31 +444,18 @@ function afform_civicrm_permission(&$permissions) {
  * @see CRM_Utils_Hook::permission_check()
  */
 function afform_civicrm_permission_check($permission, &$granted, $contactId) {
-  if ($permission[0] !== '@') {
+  if (!str_starts_with($permission, '@afform:') || strlen($permission) < 9) {
     // Micro-optimization - this function may get hit a lot.
     return;
   }
-
-  if (preg_match('/^@afform:(.*)/', $permission, $m)) {
-    $name = $m[1];
-
-    $afform = \Civi\Api4\Afform::get(FALSE)
-      ->addWhere('name', '=', $name)
-      ->addSelect('permission', 'permission_operator')
-      ->execute()
-      ->first();
-    // No permissions found... this shouldn't happen but just in case, set default.
-    if ($afform && empty($afform['permission'])) {
-      $afform['permission'] = ['access CiviCRM'];
-    }
-    if ($afform) {
-      $check = (array) $afform['permission'];
-      if ($afform['permission_operator'] === 'OR') {
-        $check = [$check];
-      }
-      $granted = CRM_Core_Permission::check($check, $contactId);
-    }
-  }
+  [, $name] = explode(':', $permission, 2);
+  // Delegate permission check to APIv4
+  $check = \Civi\Api4\Afform::checkAccess()
+    ->addValue('name', $name)
+    ->setAction('get')
+    ->execute()
+    ->first();
+  $granted = $check['access'];
 }
 
 /**
@@ -647,3 +645,16 @@ function afform_shortcode_content($content, $atts, $args, $context) {
   }
   return $content;
 }
+
+/**
+ * Implements hook_civicrm_searchKitTasks().
+ *
+ */
+function afform_civicrm_searchKitTasks(array &$tasks, bool $checkPermissions, ?int $userID) {
+  $tasks['AfformSubmission']['process'] = [
+    'module' => 'afSearchTasks',
+    'title' => E::ts('Process Submissions'),
+    'icon' => 'fa-check-square-o',
+    'uiDialog' => ['templateUrl' => '~/afSearchTasks/afformSubmissionProcessTask.html'],
+  ];
+}
diff --git a/civicrm/ext/afform/core/ang/af/afField.component.js b/civicrm/ext/afform/core/ang/af/afField.component.js
index 60223ed607eb877a5950c4bd05b58a4bbfe9304b..c8c56c6e72148d6eb537551fcad79404be07b4ba 100644
--- a/civicrm/ext/afform/core/ang/af/afField.component.js
+++ b/civicrm/ext/afform/core/ang/af/afField.component.js
@@ -123,6 +123,10 @@
           else if (ctrl.afFieldset.getStoredValue(ctrl.fieldName) !== undefined) {
             setValue(ctrl.afFieldset.getStoredValue(ctrl.fieldName));
           }
+          else if ('default_date_type' in ctrl.defn && ctrl.defn.default_date_type === 'now') {
+            let currentDate = new Date();
+            setValue(currentDate.toISOString().split('T')[0]);
+          }
           // Set default value based on field defn
           else if ('afform_default' in ctrl.defn) {
             setValue(ctrl.defn.afform_default);
diff --git a/civicrm/ext/afform/core/ang/af/afForm.component.js b/civicrm/ext/afform/core/ang/af/afForm.component.js
index e06b79dff0aa869d106961484a53587cff85a649..40f6dee472de6702d34f9da3276a32a5fd678b49 100644
--- a/civicrm/ext/afform/core/ang/af/afForm.component.js
+++ b/civicrm/ext/afform/core/ang/af/afForm.component.js
@@ -68,6 +68,11 @@
         if (toLoad) {
           crmApi4('Afform', 'prefill', params)
             .then((result) => {
+              // In some cases (noticed on Wordpress) the response header incorrectly outputs success when there's an error.
+              if (result.error_message) {
+                disableForm(result.error_message);
+                return;
+              }
               result.forEach((item) => {
                 // Use _.each() because item.values could be cast as an object if array keys are not sequential
                 _.each(item.values, (values, index) => {
@@ -77,12 +82,7 @@
                 });
               });
             }, (error) => {
-              if (error.status === 403) {
-                // Permission denied
-                disableForm();
-              } else {
-                // Unknown server error. What to do?
-              }
+              disableForm(error.error_message);
             });
         }
         // Clear existing contact selection
@@ -93,8 +93,17 @@
           angular.merge(data[selectedEntity][selectedIndex].fields, _.cloneDeep(schema[selectedEntity].data || {}));
           data[selectedEntity][selectedIndex].joins = {};
         }
+
+        ctrl.showSubmitButton = displaySubmitButton(args);
       };
 
+      function displaySubmitButton(args) {
+        if (args.sid && args.sid.length > 0) {
+          return false;
+        }
+        return true;
+      }
+
       // Used when submitting file fields
       this.fileUploader = new FileUploader({
         url: CRM.url('civicrm/ajax/api4/Afform/submitFile'),
@@ -106,6 +115,36 @@
         }
       });
 
+      // Handle the logic for conditional fields
+      this.checkConditions = function(conditions, op) {
+        op = op || 'AND';
+        // OR and AND have the opposite behavior so the logic is inverted
+        // NOT works identically to OR but gets flipped at the end
+        var ret = op === 'AND',
+          flip = !ret;
+        _.each(conditions, function(clause) {
+          // Recurse into nested group
+          if (_.isArray(clause[1])) {
+            if (ctrl.checkConditions(clause[1], clause[0]) === flip) {
+              ret = flip;
+            }
+          } else {
+            // Angular can't handle expressions with quotes inside brackets, so they are omitted
+            // Here we add them back to make valid js
+            _.each(clause, function(expr, idx) {
+              if (_.isString(expr) && expr.charAt(0) !== '"') {
+                clause[idx] = expr.replace(/\[/g, "['").replace(/]/g, "']");
+              }
+            });
+            var parser = $parse(clause.join(' '));
+            if (parser(data) === flip) {
+              ret = flip;
+            }
+          }
+        });
+        return op === 'NOT' ? !ret : ret;
+      };
+
       // Called after form is submitted and files are uploaded
       function postProcess() {
         var metaData = ctrl.getFormMeta(),
@@ -162,11 +201,11 @@
         return valid;
       }
 
-      function disableForm() {
-        CRM.alert(ts('This form is not currently open for submissions.'), ts('Sorry'), 'error');
+      function disableForm(errorMsg) {
         $('af-form[ng-form="' + ctrl.getFormMeta().name + '"]')
           .addClass('disabled')
           .find('button[ng-click="afform.submit()"]').prop('disabled', true);
+        CRM.alert(errorMsg, ts('Sorry'), 'error');
       }
 
       this.submit = function() {
diff --git a/civicrm/ext/afform/core/ang/af/afIf.directive.js b/civicrm/ext/afform/core/ang/af/afIf.directive.js
new file mode 100644
index 0000000000000000000000000000000000000000..7ed4a3473bebaaf171176b3e12f8504e5beffff7
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/af/afIf.directive.js
@@ -0,0 +1,80 @@
+(function(angular, $, _) {
+  // A modified version of ngIf to use afform.checkConditions
+  angular.module('af').directive('afIf', function($compile, $animate, $parse) {
+    return {
+      multiElement: true,
+      transclude: 'element',
+      priority: 601,
+      terminal: true,
+      restrict: 'A',
+      require: ['^^afForm'],
+      $$tlb: true,
+      link: function($scope, $element, $attr, ctrl, $transclude) {
+        var block, childScope, previousElements;
+
+        function watcher() {
+          var conditions = $parse($attr.afIf)();
+          return ctrl[0].checkConditions(conditions);
+        }
+
+        $scope.$watch(watcher, function(value) {
+          if (value) {
+            if (!childScope) {
+              $transclude(function(clone, newScope) {
+                childScope = newScope;
+                clone[clone.length++] = $compile.$$createComment('end afIf', $attr.afIf);
+                // Note: We only need the first/last node of the cloned nodes.
+                // However, we need to keep the reference to the jqlite wrapper as it might be changed later
+                // by a directive with templateUrl when its template arrives.
+                block = {
+                  clone: clone
+                };
+                $animate.enter(clone, $element.parent(), $element);
+              });
+            }
+          } else {
+            if (previousElements) {
+              previousElements.remove();
+              previousElements = null;
+            }
+            if (childScope) {
+              childScope.$destroy();
+              childScope = null;
+            }
+            if (block) {
+              previousElements = getBlockNodes(block.clone);
+              $animate.leave(previousElements).done(function(response) {
+                if (response !== false) previousElements = null;
+              });
+              block = null;
+            }
+          }
+        });
+      }
+    };
+  });
+
+  /**
+   * Return the DOM siblings between the first and last node in the given array.
+   * @param {Array} array like object
+   * @returns {Array} the inputted object or a jqLite collection containing the nodes
+   */
+  function getBlockNodes(nodes) {
+    // TODO(perf): update `nodes` instead of creating a new object?
+    var node = nodes[0];
+    var endNode = nodes[nodes.length - 1];
+    var blockNodes;
+
+    for (var i = 1; node !== endNode && (node = node.nextSibling); i++) {
+      if (blockNodes || nodes[i] !== node) {
+        if (!blockNodes) {
+          blockNodes = $(slice.call(nodes, 0, i));
+        }
+        blockNodes.push(node);
+      }
+    }
+
+    return blockNodes || nodes;
+  }
+
+})(angular, CRM.$, CRM._);
diff --git a/civicrm/ext/afform/core/ang/af/afTitle.directive.js b/civicrm/ext/afform/core/ang/af/afTitle.directive.js
index b74a2abe72248343962bde95255347249c4a6c1d..9e369bc3da76270f47b83b3aaba5f8768910f5c4 100644
--- a/civicrm/ext/afform/core/ang/af/afTitle.directive.js
+++ b/civicrm/ext/afform/core/ang/af/afTitle.directive.js
@@ -10,15 +10,16 @@
         var ctrl = this;
 
         $scope.$watch(function() {return ctrl.title;}, function(text) {
-          var tag = $element.is('fieldset') ? 'legend' : 'h4',
-            $title = $element.children(tag + '.af-title');
+          let tag = 'h4';
+          if ($element.is('fieldset')) {
+            tag = 'legend';
+          }
+          if ($element.is('details')) {
+            tag = 'summary';
+          }
+          let $title = $element.children(tag + '.af-title');
           if (!$title.length) {
             $title = $('<' + tag + ' class="af-title" />').prependTo($element);
-            if ($element.hasClass('af-collapsible')) {
-              $title.click(function() {
-                $element.toggleClass('af-collapsed');
-              });
-            }
           }
           $title.text(text);
         });
diff --git a/civicrm/ext/afform/core/ang/af/fields/EntityRef.html b/civicrm/ext/afform/core/ang/af/fields/EntityRef.html
index cd415943b9784fd369e8e2828af6c6c43e61e917..28bd70cf829121b0053eca8167b4abde99b79938 100644
--- a/civicrm/ext/afform/core/ang/af/fields/EntityRef.html
+++ b/civicrm/ext/afform/core/ang/af/fields/EntityRef.html
@@ -5,7 +5,7 @@
        ng-model="getSetSelect"
        ng-model-options="{getterSetter: true}"
        crm-autocomplete="$ctrl.defn.fk_entity"
-       crm-autocomplete-params="{formName: 'afform:' + $ctrl.afFieldset.getFormName(), fieldName: $ctrl.afFieldset.getName() + ':' + $ctrl.fieldName}"
+       crm-autocomplete-params="{formName: 'afform:' + $ctrl.afFieldset.getFormName(), fieldName: $ctrl.afFieldset.getName() + ':' + $ctrl.fieldName, values: dataProvider.getFieldData()}"
        multi="$ctrl.defn.input_attrs.multiple"
        auto-open="$ctrl.defn.input_attrs.autoOpen"
        quick-add="$ctrl.defn.input_attrs.quickAdd"
diff --git a/civicrm/ext/afform/core/ang/af/fields/TextArea.html b/civicrm/ext/afform/core/ang/af/fields/TextArea.html
index cfb9942fd0d86c198a916d32b4c0d9168ca9177a..06c1314a40123b3ee4379e28279c292c8417c9b3 100644
--- a/civicrm/ext/afform/core/ang/af/fields/TextArea.html
+++ b/civicrm/ext/afform/core/ang/af/fields/TextArea.html
@@ -1 +1 @@
-<textarea class="crm-form-textarea" id="{{:: fieldId }}" ng-required="$ctrl.defn.required" ng-model="getSetValue" ng-model-options="{getterSetter: true}" ></textarea>
+<textarea class="crm-form-textarea" id="{{:: fieldId }}" rows="{{:: $ctrl.defn.input_attrs.rows || 4 }}" cols="{{:: $ctrl.defn.input_attrs.cols || 60 }}" ng-required="$ctrl.defn.required" ng-model="getSetValue" ng-model-options="{getterSetter: true}" ></textarea>
diff --git a/civicrm/ext/afform/core/ang/af/fields/Url.html b/civicrm/ext/afform/core/ang/af/fields/Url.html
new file mode 100644
index 0000000000000000000000000000000000000000..d6e49b35627eb5aa722c3555e493ef79a9a3a771
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/af/fields/Url.html
@@ -0,0 +1,6 @@
+<input ng-if=":: !$ctrl.defn.search_range" class="form-control" type="url" ng-required="$ctrl.defn.required" id="{{:: fieldId }}" ng-model="getSetValue" ng-model-options="{getterSetter: true}" placeholder="{{:: $ctrl.defn.input_attrs.placeholder }}" >
+<div ng-if=":: $ctrl.defn.search_range" class="form-inline">
+  <input class="form-control" type="url" id="{{:: fieldId }}" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]['>=']" placeholder="{{:: $ctrl.defn.input_attrs.placeholder }}" >
+  <span class="af-field-range-sep">-</span>
+  <input class="form-control" type="url" id="{{:: fieldId }}2" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]['<=']" placeholder="{{:: $ctrl.defn.input_attrs.placeholder2 }}" >
+</div>
diff --git a/civicrm/ext/afform/core/ang/afCore.css b/civicrm/ext/afform/core/ang/afCore.css
index d7dae0164c6ff59fd756aec3ce6e980589915a05..86c4d09b6ce6c1935f63ef9e5bd088df1ba5b691 100644
--- a/civicrm/ext/afform/core/ang/afCore.css
+++ b/civicrm/ext/afform/core/ang/afCore.css
@@ -26,6 +26,7 @@ a.af-api4-action-idle {
   width: 100%;
 }
 
+.afform-directive,
 af-form {
   display: block;
   position: relative;
@@ -45,23 +46,6 @@ af-form {
   right: 0;
 }
 
-/* Collapsible containers */
-.af-collapsible > .af-title {
-  cursor: pointer;
-}
-.af-collapsible > .af-title:before {
-  font-family: "FontAwesome";
-  display: inline-block;
-  width: 1em;
-  content: "\f0d7";
-}
-.af-collapsible.af-collapsed > .af-title:before {
-  content: "\f0da";
-}
-.af-collapsible.af-collapsed > .af-title ~ * {
-  display: none !important;
-}
-
 /* Card style */
 #bootstrap-theme .af-container-style-pane {
   background-color: white;
@@ -82,17 +66,15 @@ af-form {
   margin-top: 0;
   margin-bottom: 10px;
 }
-#bootstrap-theme .af-container-style-pane.af-collapsed > .af-title {
-  margin-bottom: 0;
-}
 
 /* Admin edit links */
-af-form a.af-admin-edit-form-link {
-  position: absolute;
+.afform-directive .af-admin-edit-form-link {
+  position: absolute !important;
   right: 0;
   top: 0;
-  display: none;
+  opacity: .5;
 }
-af-form:hover a.af-admin-edit-form-link {
-  display: block;
+.afform-directive .af-admin-edit-form-link.open,
+.afform-directive:hover .af-admin-edit-form-link {
+  opacity: 1;
 }
diff --git a/civicrm/ext/afform/core/ang/afCore.js b/civicrm/ext/afform/core/ang/afCore.js
index a1dc17aa2284a70f76274613c83c7eaedd121648..3eb7abf0cf84e346c70d8312d0a12e3cff51d725 100644
--- a/civicrm/ext/afform/core/ang/afCore.js
+++ b/civicrm/ext/afform/core/ang/afCore.js
@@ -17,6 +17,8 @@
           $scope.crmUiAlert = crmUiAlert;
           $scope.crmUrl = CRM.url;
 
+          $el.addClass('afform-directive');
+
           // Afforms do not use routing, but some forms get input from search params
           var dialog = $el.closest('.ui-dialog-content');
           if (!dialog.length) {
diff --git a/civicrm/ext/afform/core/ang/afSearchTasks.ang.php b/civicrm/ext/afform/core/ang/afSearchTasks.ang.php
new file mode 100644
index 0000000000000000000000000000000000000000..e15b7b61fd554c52e65a50dc7f303a330cbe561b
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afSearchTasks.ang.php
@@ -0,0 +1,14 @@
+<?php
+// This file declares an Angular module which can be autoloaded
+return [
+  'js' => [
+    'ang/afSearchTasks.module.js',
+    'ang/afSearchTasks/*.js',
+    'ang/afSearchTasks/*/*.js',
+  ],
+  'partials' => [
+    'ang/afSearchTasks',
+  ],
+  'css' => [],
+  'requires' => [],
+];
diff --git a/civicrm/ext/afform/core/ang/afSearchTasks.module.js b/civicrm/ext/afform/core/ang/afSearchTasks.module.js
new file mode 100644
index 0000000000000000000000000000000000000000..35a07ee44841be4bd40f29ad130ee7e156928c37
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afSearchTasks.module.js
@@ -0,0 +1,7 @@
+(function(angular, $, _) {
+  "use strict";
+
+  // Declare module
+  angular.module('afSearchTasks', CRM.angRequires('afSearchTasks'));
+
+})(angular, CRM.$, CRM._);
diff --git a/civicrm/ext/afform/core/ang/afSearchTasks/afformSubmissionProcessTask.ctrl..js b/civicrm/ext/afform/core/ang/afSearchTasks/afformSubmissionProcessTask.ctrl..js
new file mode 100644
index 0000000000000000000000000000000000000000..8ad6d9e3b157c1d7b4983c16248167f3516f0c9e
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afSearchTasks/afformSubmissionProcessTask.ctrl..js
@@ -0,0 +1,59 @@
+(function(angular, $, _) {
+  "use strict";
+
+  angular.module('afSearchTasks').controller('afformSubmissionProcessTask', function ($scope, $timeout, crmApi4, searchTaskBaseTrait) {
+    var ts = $scope.ts = CRM.ts('org.civicrm.afform'),
+      // Combine this controller with model properties (ids, entity, entityInfo) and searchTaskBaseTrait
+      ctrl = angular.extend(this, $scope.model, searchTaskBaseTrait);
+
+    this.entityTitle = this.getEntityTitle();
+    this.afformName = '';
+
+    this.getAfformName = function(id) {
+      crmApi4('AfformSubmission', 'get', {
+        select: ["afform_name"],
+        where: [["id", "=", id]],
+      }).then(function(afformSubmissions) {
+        ctrl.afformName = afformSubmissions[0].afform_name;
+      }, function(error) {
+        ctrl.onError();
+      });
+    };
+
+    this.processData = function() {
+      _.each(ctrl.ids, function(id) {
+        ctrl.start();
+        crmApi4('Afform', 'process', {
+          submissionId: id,
+          name: ctrl.afformName
+        }).then(function(result) {
+        }, function(failure) {
+          ctrl.onError();
+        });
+      });
+
+      ctrl.onSuccess();
+    };
+
+    this.save = function() {
+      // get the afform name
+      ctrl.getAfformName(ctrl.ids[0]);
+
+      $timeout(function() {
+        ctrl.processData();
+      },500);
+
+    };
+
+    this.onSuccess = function() {
+      CRM.alert(ts('Successfully processed %1 %2.', {1: ctrl.ids.length, 2: ctrl.entityTitle}), ts('Saved'), 'success');
+      this.close();
+    };
+
+    this.onError = function() {
+      CRM.alert(ts('An error occurred while attempting to process %1 %2.', {1: ctrl.ids.length, 2: ctrl.entityTitle}), ts('Error'), 'error');
+      this.cancel();
+    };
+
+  });
+})(angular, CRM.$, CRM._);
diff --git a/civicrm/ext/afform/core/ang/afSearchTasks/afformSubmissionProcessTask.html b/civicrm/ext/afform/core/ang/afSearchTasks/afformSubmissionProcessTask.html
new file mode 100644
index 0000000000000000000000000000000000000000..8c341266910c5b425d6c0fb64e7181c96fb96db8
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afSearchTasks/afformSubmissionProcessTask.html
@@ -0,0 +1,7 @@
+<div id="bootstrap-theme" crm-dialog="crmSearchTask">
+  <form name="afformSubmissionProcessTaskForm" ng-controller="afformSubmissionProcessTask as $ctrl">
+    <p><strong>{{:: ts('Process the %1 selected %2 submission(s):', {1: model.ids.length, 2: $ctrl.entityTitle}) }}</strong></p>
+    <crm-dialog-button text="ts('Cancel')" icons="{primary: 'fa-times'}" on-click="$ctrl.cancel()" disabled="$ctrl.run" ></crm-dialog-button>
+    <crm-dialog-button text="ts('Process submission(s)')" icons="{primary: $ctrl.run ? 'fa-spin fa-spinner' : 'fa-check'}" on-click="$ctrl.save()" disabled="$ctrl.run || !afformSubmissionProcessTaskForm.$valid" ></crm-dialog-button>
+  </form>
+</div>
diff --git a/civicrm/ext/afform/core/ang/afblockContactAddress.aff.json b/civicrm/ext/afform/core/ang/afblockContactAddress.aff.json
deleted file mode 100644
index 0a0e209345f744cfc3cf3cc52c8bad9fadff2e52..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/core/ang/afblockContactAddress.aff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "title": "Contact Address(es)",
-  "type": "block",
-  "entity_type": "Contact",
-  "join_entity": "Address"
-}
diff --git a/civicrm/ext/afform/core/ang/afblockContactAddress.aff.php b/civicrm/ext/afform/core/ang/afblockContactAddress.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..aa4c5957d473cf7e0c65b92acb75dc5f765abb93
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockContactAddress.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'title' => ts('Contact Address(es)'),
+  'type' => 'block',
+  'entity_type' => 'Contact',
+  'join_entity' => 'Address',
+];
diff --git a/civicrm/ext/afform/core/ang/afblockContactEmail.aff.json b/civicrm/ext/afform/core/ang/afblockContactEmail.aff.json
deleted file mode 100644
index 6ddb66f259498c578b17ce3d69059f7705619b34..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/core/ang/afblockContactEmail.aff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "title": "Contact Email(s)",
-  "type": "block",
-  "entity_type": "Contact",
-  "join_entity": "Email"
-}
diff --git a/civicrm/ext/afform/core/ang/afblockContactEmail.aff.php b/civicrm/ext/afform/core/ang/afblockContactEmail.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..a299946658e590534e0ba3093a91180b35a8cc41
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockContactEmail.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'title' => ts('Contact Email(s)'),
+  'type' => 'block',
+  'entity_type' => 'Contact',
+  'join_entity' => 'Email',
+];
diff --git a/civicrm/ext/afform/core/ang/afblockContactIM.aff.json b/civicrm/ext/afform/core/ang/afblockContactIM.aff.json
deleted file mode 100644
index 953d1a09d13d6a84350536cd53a8d8e2f656a008..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/core/ang/afblockContactIM.aff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "title": "Contact IM(s)",
-  "type": "block",
-  "entity_type": "Contact",
-  "join_entity": "IM"
-}
diff --git a/civicrm/ext/afform/core/ang/afblockContactIM.aff.php b/civicrm/ext/afform/core/ang/afblockContactIM.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..1d91ae64cf4ce01a5993a2ca5f8d47ead9a371b4
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockContactIM.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'title' => ts('Contact IM(s)'),
+  'type' => 'block',
+  'entity_type' => 'Contact',
+  'join_entity' => 'IM',
+];
diff --git a/civicrm/ext/afform/core/ang/afblockContactNote.aff.json b/civicrm/ext/afform/core/ang/afblockContactNote.aff.json
deleted file mode 100644
index b3412870a7362710c6c9ae8fb516fc4f74e2bc9f..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/core/ang/afblockContactNote.aff.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "title": "Contact Note(s)",
-    "type": "block",
-    "entity_type": "Contact",
-    "join_entity": "Note"
-  }
-  
\ No newline at end of file
diff --git a/civicrm/ext/afform/core/ang/afblockContactNote.aff.php b/civicrm/ext/afform/core/ang/afblockContactNote.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..6ad8421dc761647fc741a1436f816cd6b1ba84a0
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockContactNote.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'title' => ts('Contact Note(s)'),
+  'type' => 'block',
+  'entity_type' => 'Contact',
+  'join_entity' => 'Note',
+];
diff --git a/civicrm/ext/afform/core/ang/afblockContactPhone.aff.json b/civicrm/ext/afform/core/ang/afblockContactPhone.aff.json
deleted file mode 100644
index c66eae8b24f24e1c907a526855a0e34d456f6bf0..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/core/ang/afblockContactPhone.aff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "title": "Contact Phone(s)",
-  "type": "block",
-  "entity_type": "Contact",
-  "join_entity": "Phone"
-}
diff --git a/civicrm/ext/afform/core/ang/afblockContactPhone.aff.php b/civicrm/ext/afform/core/ang/afblockContactPhone.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..62067e40ce436d13f46d9a2eb072eb2dd3d1da13
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockContactPhone.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'title' => ts('Contact Phone(s)'),
+  'type' => 'block',
+  'entity_type' => 'Contact',
+  'join_entity' => 'Phone',
+];
diff --git a/civicrm/ext/afform/core/ang/afblockContactWebsite.aff.json b/civicrm/ext/afform/core/ang/afblockContactWebsite.aff.json
deleted file mode 100644
index 89288fcfd09db84ee6080dc667cec936092b942a..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/core/ang/afblockContactWebsite.aff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "title": "Contact Website(s)",
-  "type": "block",
-  "entity_type": "Contact",
-  "join_entity": "Website"
-}
diff --git a/civicrm/ext/afform/core/ang/afblockContactWebsite.aff.php b/civicrm/ext/afform/core/ang/afblockContactWebsite.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..5a01dd983a488615ef186af62e3ebf347d186062
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockContactWebsite.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'title' => ts('Contact Website(s)'),
+  'type' => 'block',
+  'entity_type' => 'Contact',
+  'join_entity' => 'Website',
+];
diff --git a/civicrm/ext/afform/core/ang/afblockNameHousehold.aff.json b/civicrm/ext/afform/core/ang/afblockNameHousehold.aff.json
deleted file mode 100644
index dd665a10ccc4b78d236783438201a63091a7c600..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/core/ang/afblockNameHousehold.aff.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "title": "Household Name",
-  "type": "block",
-  "entity_type": "Household"
-}
diff --git a/civicrm/ext/afform/core/ang/afblockNameHousehold.aff.php b/civicrm/ext/afform/core/ang/afblockNameHousehold.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..ab157bd6b761ecb16a1ac349fc7147c95e32a7f3
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockNameHousehold.aff.php
@@ -0,0 +1,6 @@
+<?php
+return [
+  'title' => ts('Household Name'),
+  'type' => 'block',
+  'entity_type' => 'Household',
+];
diff --git a/civicrm/ext/afform/core/ang/afblockNameIndividual.aff.json b/civicrm/ext/afform/core/ang/afblockNameIndividual.aff.json
deleted file mode 100644
index 1cafdc4be66e1bfef04fe461936c2f32034b60da..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/core/ang/afblockNameIndividual.aff.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "title": "Individual Name",
-  "type": "block",
-  "entity_type": "Individual"
-}
diff --git a/civicrm/ext/afform/core/ang/afblockNameIndividual.aff.php b/civicrm/ext/afform/core/ang/afblockNameIndividual.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..772e597a7afd7868e9a6d747d7d070a4672c12af
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockNameIndividual.aff.php
@@ -0,0 +1,6 @@
+<?php
+return [
+  'title' => ts('Individual Name'),
+  'type' => 'block',
+  'entity_type' => 'Individual',
+];
diff --git a/civicrm/ext/afform/core/ang/afblockNameOrganization.aff.json b/civicrm/ext/afform/core/ang/afblockNameOrganization.aff.json
deleted file mode 100644
index ca44304b5d4fe2a93439801eed886007131da246..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/core/ang/afblockNameOrganization.aff.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "title": "Organization Name",
-  "type": "block",
-  "entity_type": "Organization"
-}
diff --git a/civicrm/ext/afform/core/ang/afblockNameOrganization.aff.php b/civicrm/ext/afform/core/ang/afblockNameOrganization.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..9ed7f39a936bac656bf5e89ea2bab50800593209
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/afblockNameOrganization.aff.php
@@ -0,0 +1,6 @@
+<?php
+return [
+  'title' => ts('Organization Name'),
+  'type' => 'block',
+  'entity_type' => 'Organization',
+];
diff --git a/civicrm/ext/afform/core/info.xml b/civicrm/ext/afform/core/info.xml
index 831e680fb91f2e8e147d2f4c0048e05aa9f9cfa1..537f2056b5590b625b38270e361adc36cc443945 100644
--- a/civicrm/ext/afform/core/info.xml
+++ b/civicrm/ext/afform/core/info.xml
@@ -12,10 +12,10 @@
     <url desc="Chat">https://chat.civicrm.org/civicrm/channels/dev-afform</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <develStage>stable</develStage>
   <tags>
@@ -39,6 +39,7 @@
     <mixin>scan-classes@1.0.0</mixin>
     <mixin>smarty-v2@1.0.1</mixin>
     <mixin>entity-types-php@1.0.0</mixin>
+    <mixin>menu-xml@1.0.0</mixin>
   </mixins>
   <upgrader>CRM_Afform_Upgrader</upgrader>
 </extension>
diff --git a/civicrm/ext/afform/core/templates/CRM/Afform/Page/Verify.tpl b/civicrm/ext/afform/core/templates/CRM/Afform/Page/Verify.tpl
new file mode 100644
index 0000000000000000000000000000000000000000..885bbbee22c930c7629b2a17daa8e5defdba06ac
--- /dev/null
+++ b/civicrm/ext/afform/core/templates/CRM/Afform/Page/Verify.tpl
@@ -0,0 +1,6 @@
+{if $verified}
+  {ts}Thank you. Your email was verified successfully and your submission was processed.{/ts}
+{else}
+  {ts}Sorry, unable to verify your submission.{/ts}
+  {$error_message}
+{/if}
diff --git a/civicrm/ext/afform/core/tests/phpunit/CRM/Afform/PageTest.php b/civicrm/ext/afform/core/tests/phpunit/CRM/Afform/PageTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..d0053b514701a3589ccd5b3933de0ef15f4f549d
--- /dev/null
+++ b/civicrm/ext/afform/core/tests/phpunit/CRM/Afform/PageTest.php
@@ -0,0 +1,50 @@
+<?php
+
+use Civi\Test\HeadlessInterface;
+use Civi\Test\TransactionalInterface;
+
+/**
+ * @group headless
+ */
+class CRM_Afform_PageTest extends \PHPUnit\Framework\TestCase implements HeadlessInterface, TransactionalInterface {
+
+  public function setUpHeadless() {
+    return \Civi\Test::headless()
+      ->installMe(__DIR__)
+      ->apply();
+  }
+
+  public function testNotesTab(): void {
+    // temporarily be more error-y
+    set_error_handler(
+      function(int $errno, string $errstr, string $errfile, int $errline) {
+        throw new \ErrorException($errstr);
+      },
+      E_ALL
+    );
+    $errorToThrow = NULL;
+    try {
+      $result = \Civi\Api4\SearchDisplay::run()
+        ->setReturn('page:1')
+        ->setSavedSearch('Contact_Summary_Notes')
+        ->setDisplay('Contact_Summary_Notes_Tab')
+        ->setAfform('afsearchTabNote')
+        ->setFilters([
+          'entity_id' => 1,
+          'entity_table' => 'civicrm_contact',
+        ])->execute();
+      $this->assertNotEmpty($result->toolbar[0]);
+    }
+    catch (\ErrorException $e) {
+      $errorToThrow = $e;
+    }
+    finally {
+      // make sure to remove our handler no matter what happens
+      restore_error_handler();
+    }
+    if ($errorToThrow) {
+      throw $errorToThrow;
+    }
+  }
+
+}
diff --git a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetTest.php b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetTest.php
index fa5766e857bd03cf5419ebe97adda40ac6cb8ebf..2478ea0695d2953faee8ae4c584c42fe02074ffc 100644
--- a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetTest.php
+++ b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetTest.php
@@ -34,6 +34,10 @@ class AfformGetTest extends \PHPUnit\Framework\TestCase implements HeadlessInter
     $this->assertEquals($this->formName, $result['name']);
     $this->assertArrayNotHasKey('directive_name', $result);
     $this->assertArrayNotHasKey('has_base', $result);
+    // Check modified date is reasonable
+    $this->assertGreaterThan('2023-01-01 12:00:00', $result['modified_date']);
+    // Hopefully this test won't need updating for the next 2000 years or so...
+    $this->assertLessThan('4000-01-01 12:00:00', $result['modified_date']);
 
     // Select * should also return regular fields only
     $result = Afform::get()
diff --git a/civicrm/ext/afform/core/xml/Menu/afform.xml b/civicrm/ext/afform/core/xml/Menu/afform.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6486fdfa65c18181d7bfbc63da50ad0e708f216e
--- /dev/null
+++ b/civicrm/ext/afform/core/xml/Menu/afform.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="iso-8859-1" ?>
+<menu>
+  <item>
+    <title>Form Submission</title>
+    <path>civicrm/afform/submission/verify</path>
+    <page_callback>CRM_Afform_Page_Verify</page_callback>
+    <access_callback>1</access_callback>
+    <is_public>true</is_public>
+  </item>
+</menu>
diff --git a/civicrm/ext/afform/core/xml/schema/CRM/Afform/AfformSubmission.xml b/civicrm/ext/afform/core/xml/schema/CRM/Afform/AfformSubmission.xml
index 70c12a67831b2334259b44eecd92551e18d8d297..24c7ea7d70b8b85f0ae4b4de7c454525509ac864 100644
--- a/civicrm/ext/afform/core/xml/schema/CRM/Afform/AfformSubmission.xml
+++ b/civicrm/ext/afform/core/xml/schema/CRM/Afform/AfformSubmission.xml
@@ -7,7 +7,9 @@
   <comment>Recorded form submissions</comment>
   <title>FormBuilder Submission</title>
   <log>true</log>
-
+  <paths>
+    <view>[afform_name:url]#?sid=[id]</view>
+  </paths>
   <field>
     <name>id</name>
     <title>Form Submission ID</title>
diff --git a/civicrm/ext/afform/html/ang/afHtmlAdmin.aff.json b/civicrm/ext/afform/html/ang/afHtmlAdmin.aff.json
deleted file mode 100644
index 4feaa980aa9d227da641c8ca687b4bc7f6ca3948..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/html/ang/afHtmlAdmin.aff.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "title": "Afform HTML Administration",
-  "server_route": "civicrm/admin/afform-html",
-  "permission": "administer CiviCRM"
-}
diff --git a/civicrm/ext/afform/html/ang/afHtmlAdmin.aff.php b/civicrm/ext/afform/html/ang/afHtmlAdmin.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..9ca9fff78e99fbcd922d56a407b277d6d21ebdbe
--- /dev/null
+++ b/civicrm/ext/afform/html/ang/afHtmlAdmin.aff.php
@@ -0,0 +1,6 @@
+<?php
+return [
+  'title' => ts('Afform HTML Administration'),
+  'server_route' => 'civicrm/admin/afform-html',
+  'permission' => 'administer CiviCRM',
+];
diff --git a/civicrm/ext/afform/html/info.xml b/civicrm/ext/afform/html/info.xml
index bba3589ed912f672f4738332d645391b977083df..5bf88214d4a4798f2d954f85a1d9af6e1c36e8f0 100644
--- a/civicrm/ext/afform/html/info.xml
+++ b/civicrm/ext/afform/html/info.xml
@@ -12,11 +12,11 @@
     <url desc="Chat">https://chat.civicrm.org/civicrm/channels/dev-afform</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>alpha</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <requires>
     <ext>org.civicrm.afform</ext>
diff --git a/civicrm/ext/afform/mock/ang/afex.aff.json b/civicrm/ext/afform/mock/ang/afex.aff.json
deleted file mode 100644
index e0dc03664d14394649fcda695fe922a1cbbe258a..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/mock/ang/afex.aff.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "server_route": "civicrm/afex",
-  "requires":["mockFoo", "mockBareFile", "af"]
-}
diff --git a/civicrm/ext/afform/mock/ang/afex.aff.php b/civicrm/ext/afform/mock/ang/afex.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..4e3a8e3e00e4d7c8ea7e886585ed7785bfc1413d
--- /dev/null
+++ b/civicrm/ext/afform/mock/ang/afex.aff.php
@@ -0,0 +1,5 @@
+<?php
+return [
+  'server_route' => 'civicrm/afex',
+  'requires' => ['mockFoo', 'mockBareFile', 'af'],
+];
diff --git a/civicrm/ext/afform/mock/ang/mock-weird-name.aff.json b/civicrm/ext/afform/mock/ang/mock-weird-name.aff.json
deleted file mode 100644
index f047ea604f7072128f3e779b54271508ccf2ab51..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/mock/ang/mock-weird-name.aff.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "title": "Weird Name"
-}
diff --git a/civicrm/ext/afform/mock/ang/mock-weird-name.aff.php b/civicrm/ext/afform/mock/ang/mock-weird-name.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..744d2aa75d7cea4665fac19d88e2f54bb87fdc66
--- /dev/null
+++ b/civicrm/ext/afform/mock/ang/mock-weird-name.aff.php
@@ -0,0 +1,4 @@
+<?php
+return [
+  'title' => ts('Weird Name'),
+];
diff --git a/civicrm/ext/afform/mock/ang/mockFoo.aff.json b/civicrm/ext/afform/mock/ang/mockFoo.aff.json
deleted file mode 100644
index 0967ef424bce6791893e9a57bb952f80fd536e93..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/mock/ang/mockFoo.aff.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/civicrm/ext/afform/mock/ang/mockFoo.aff.php b/civicrm/ext/afform/mock/ang/mockFoo.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..881ab67d036d4900e0c6aef94f47961fe0c03b5a
--- /dev/null
+++ b/civicrm/ext/afform/mock/ang/mockFoo.aff.php
@@ -0,0 +1,2 @@
+<?php
+return [];
diff --git a/civicrm/ext/afform/mock/ang/mockPage.aff.json b/civicrm/ext/afform/mock/ang/mockPage.aff.json
deleted file mode 100644
index b8ba11b526011cea6044a647887480bce76c438c..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/mock/ang/mockPage.aff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "server_route": "civicrm/mock-page",
-  "requires": ["mockBespoke"],
-  "permission": "access Foobar",
-  "is_dashlet": true
-}
diff --git a/civicrm/ext/afform/mock/ang/mockPage.aff.php b/civicrm/ext/afform/mock/ang/mockPage.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..bca133b0fc003d77f80c9240d73923a2c7c4af89
--- /dev/null
+++ b/civicrm/ext/afform/mock/ang/mockPage.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'server_route' => 'civicrm/mock-page',
+  'requires' => ['mockBespoke'],
+  'permission' => 'access Foobar',
+  'is_dashlet' => TRUE,
+];
diff --git a/civicrm/ext/afform/mock/ang/mockPublicForm.aff.json b/civicrm/ext/afform/mock/ang/mockPublicForm.aff.json
deleted file mode 100644
index eb221305eeec01a787ae46d3b1ad794cab6a93e2..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/mock/ang/mockPublicForm.aff.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "type": "form",
-  "title": "My public form",
-  "server_route": "civicrm/mock-public-form",
-  "permission": "*always allow*",
-  "is_token": true
-}
diff --git a/civicrm/ext/afform/mock/ang/mockPublicForm.aff.php b/civicrm/ext/afform/mock/ang/mockPublicForm.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..533d45e7015563983f041e8bc8716d96c53e58d1
--- /dev/null
+++ b/civicrm/ext/afform/mock/ang/mockPublicForm.aff.php
@@ -0,0 +1,8 @@
+<?php
+return [
+  'type' => 'form',
+  'title' => ts('My public form'),
+  'server_route' => 'civicrm/mock-public-form',
+  'permission' => '*always allow*',
+  'is_token' => TRUE,
+];
diff --git a/civicrm/ext/afform/mock/ang/testAfform.aff.json b/civicrm/ext/afform/mock/ang/testAfform.aff.json
deleted file mode 100644
index 6c8684eee761f6dd35620c8d58f50ffaee14ff74..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/mock/ang/testAfform.aff.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "server_route": "civicrm/test-afform",
-  "title": "This is a test"
-}
diff --git a/civicrm/ext/afform/mock/ang/testAfform.aff.php b/civicrm/ext/afform/mock/ang/testAfform.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..906d9b68a431dbc563adeaeb49f383dc4fa3225c
--- /dev/null
+++ b/civicrm/ext/afform/mock/ang/testAfform.aff.php
@@ -0,0 +1,5 @@
+<?php
+return [
+  'server_route' => 'civicrm/test-afform',
+  'title' => ts('This is a test'),
+];
diff --git a/civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.json b/civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.json
deleted file mode 100644
index cefad3d1fda2f64075b6f5956ae32d637e6b8081..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "type": "search",
-    "title": "TestContactEmailForm",
-    "server_route": "",
-    "permission": "access CiviCRM"
-}
diff --git a/civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.php b/civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..d0816ecb8fa8d4604516d6d8790941a3a0716405
--- /dev/null
+++ b/civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'type' => 'search',
+  'title' => ts('TestContactEmailForm'),
+  'server_route' => '',
+  'permission' => 'access CiviCRM',
+];
diff --git a/civicrm/ext/afform/mock/ang/testMultipleSearchForm.aff.json b/civicrm/ext/afform/mock/ang/testMultipleSearchForm.aff.json
deleted file mode 100644
index 609e0f5033cfbe93bfcdec2429521fc9eed382d1..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/mock/ang/testMultipleSearchForm.aff.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "type": "search",
-    "title": "TestMultipleSearchForm",
-    "server_route": "",
-    "permission": "access CiviCRM"
-}
diff --git a/civicrm/ext/afform/mock/ang/testMultipleSearchForm.aff.php b/civicrm/ext/afform/mock/ang/testMultipleSearchForm.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..c9973881304b5a2164289b6d4cb7d93d1ec6269c
--- /dev/null
+++ b/civicrm/ext/afform/mock/ang/testMultipleSearchForm.aff.php
@@ -0,0 +1,7 @@
+<?php
+return [
+  'type' => 'search',
+  'title' => ts('TestMultipleSearchForm'),
+  'server_route' => '',
+  'permission' => 'access CiviCRM',
+];
diff --git a/civicrm/ext/afform/mock/info.xml b/civicrm/ext/afform/mock/info.xml
index 3de31089d805c0926b808fb48cea72c4744aaacb..9ec8d87590477031e4cfe4c6785480695b4d3501 100644
--- a/civicrm/ext/afform/mock/info.xml
+++ b/civicrm/ext/afform/mock/info.xml
@@ -11,14 +11,14 @@
   <urls>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>alpha</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <requires>
     <ext>org.civicrm.afform</ext>
diff --git a/civicrm/ext/afform/mock/phpunit.xml.dist b/civicrm/ext/afform/mock/phpunit.xml.dist
index 1f804252c562da890f8670f7810964be2cac9ad0..ea391745fa9f582494ad0d5c02a786788a191636 100644
--- a/civicrm/ext/afform/mock/phpunit.xml.dist
+++ b/civicrm/ext/afform/mock/phpunit.xml.dist
@@ -1,30 +1,15 @@
 <?xml version="1.0"?>
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"
-         backupGlobals="false"
-         backupStaticAttributes="false"
-         colors="true"
-         convertErrorsToExceptions="true"
-         convertNoticesToExceptions="true"
-         convertWarningsToExceptions="true"
-         convertDeprecationsToExceptions="true"
-         processIsolation="false"
-         stopOnFailure="false"
-         bootstrap="tests/phpunit/bootstrap.php"
-         cacheResult="false">
-  <coverage>
-    <include>
-      <directory suffix=".php">./</directory>
-    </include>
-  </coverage>
+<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" cacheResult="false" bootstrap="tests/phpunit/bootstrap.php">
   <testsuites>
     <testsuite name="My Test Suite">
       <directory>./tests/phpunit</directory>
     </testsuite>
-    <testsuite name="form-tests">
-      <directory suffix=".test.php">./ang</directory>
-    </testsuite>
   </testsuites>
+  <filter>
+    <whitelist>
+      <directory suffix=".php">./</directory>
+    </whitelist>
+  </filter>
   <listeners>
     <listener class="Civi\Test\CiviTestListener">
       <arguments/>
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformAutocompleteUsageTest.php
similarity index 95%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformAutocompleteUsageTest.php
index 54c721ef669107e1db3a809579a56d7a53b36022..a56ae183f559e76fc8d7a96f9890fa85ecd5ac3e 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformAutocompleteUsageTest.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Api4\Afform;
 use Civi\Api4\Contact;
@@ -13,7 +14,7 @@ use Civi\Api4\SavedSearch;
  *
  * @group headless
  */
-class api_v4_AfformAutocompleteUsageTest extends api_v4_AfformUsageTestCase {
+class AfformAutocompleteUsageTest extends AfformUsageTestCase {
 
   /**
    * Ensure that Afform restricts autocomplete results when it's set to use a SavedSearch
@@ -33,7 +34,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     // Saved search for filtering
@@ -95,7 +96,7 @@ EOHTML;
         ->execute();
       $this->fail();
     }
-    catch (CRM_Core_Exception $e) {
+    catch (\CRM_Core_Exception $e) {
       $this->assertEquals('Validation Error', $e->getMessage());
     }
 
@@ -163,7 +164,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $result = Contact::autocomplete()
@@ -195,7 +196,7 @@ EOHTML;
         ->execute();
       $this->fail();
     }
-    catch (CRM_Core_Exception $e) {
+    catch (\CRM_Core_Exception $e) {
       $this->assertEquals('Validation Error', $e->getMessage());
     }
 
@@ -257,7 +258,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $result = Contact::autocomplete()
@@ -293,7 +294,7 @@ EOHTML;
         ->execute();
       $this->fail();
     }
-    catch (CRM_Core_Exception $e) {
+    catch (\CRM_Core_Exception $e) {
       $this->assertEquals('Validation Error', $e->getMessage());
     }
 
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformContactUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformContactUsageTest.php
similarity index 84%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformContactUsageTest.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformContactUsageTest.php
index b3f8c6307553e756f7f07d88e0424ca3df11e256..06733ad126a20de90bbc2afe6a6bfb557ad9dac0 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformContactUsageTest.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformContactUsageTest.php
@@ -1,13 +1,16 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Api4\Afform;
+use Civi\Api4\AfformSubmission;
+use Civi\Api4\Contact;
 
 /**
- * Test case for Afform.prefill and Afform.submit.
+ * Test case for Afform.checkAccess, Afform.prefill and Afform.submit.
  *
  * @group headless
  */
-class api_v4_AfformContactUsageTest extends api_v4_AfformUsageTestCase {
+class AfformContactUsageTest extends AfformUsageTestCase {
 
   public static function setUpBeforeClass(): void {
     parent::setUpBeforeClass();
@@ -80,11 +83,11 @@ EOHTML;
   public function testAboutMeAllowed(): void {
     $this->useValues([
       'layout' => self::$layouts['aboutMe'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $cid = $this->createLoggedInUser();
-    CRM_Core_Config::singleton()->userPermissionTemp = new CRM_Core_Permission_Temp();
+    \CRM_Core_Config::singleton()->userPermissionTemp = new \CRM_Core_Permission_Temp();
 
     // Autofill form with current user. See `Civi\Afform\Behavior\ContactAutofill`
     $prefill = Afform::prefill()
@@ -103,7 +106,7 @@ EOHTML;
       ->setValues(['me' => $submission])
       ->execute();
 
-    $contact = Civi\Api4\Contact::get(FALSE)->addWhere('id', '=', $cid)->execute()->first();
+    $contact = Contact::get(FALSE)->addWhere('id', '=', $cid)->execute()->first();
     $this->assertEquals('Firsty', $contact['first_name']);
     $this->assertEquals('Lasty', $contact['last_name']);
   }
@@ -111,7 +114,7 @@ EOHTML;
   public function testChainSelect(): void {
     $this->useValues([
       'layout' => self::$layouts['aboutMe'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     // Get states for USA
@@ -120,7 +123,7 @@ EOHTML;
       ->setModelName('me')
       ->setFieldName('state_province_id')
       ->setJoinEntity('Address')
-      ->setValues(['country_id' => CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Country', 'United States', 'id', 'name')])
+      ->setValues(['country_id' => \CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Country', 'United States', 'id', 'name')])
       ->execute();
     $this->assertEquals('Alabama', $result[0]['label']);
 
@@ -130,7 +133,7 @@ EOHTML;
       ->setModelName('me')
       ->setFieldName('state_province_id')
       ->setJoinEntity('Address')
-      ->setValues(['country_id' => CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Country', 'United Kingdom', 'id', 'name')])
+      ->setValues(['country_id' => \CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Country', 'United Kingdom', 'id', 'name')])
       ->execute();
     $this->assertEquals('Aberdeen City', $result[0]['label']);
   }
@@ -138,7 +141,7 @@ EOHTML;
   public function testCheckEntityReferenceFieldsReplacement(): void {
     $this->useValues([
       'layout' => self::$layouts['registerSite'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
       'create_submission' => TRUE,
     ]);
 
@@ -170,17 +173,17 @@ EOHTML;
       ->setValues($values)
       ->execute();
 
-    $submission = Civi\Api4\AfformSubmission::get(FALSE)
+    $submission = AfformSubmission::get(FALSE)
       ->addOrderBy('id', 'DESC')
       ->execute()->first();
 
     $this->assertEquals($this->formName, $submission['afform_name']);
     $this->assertIsInt($submission['data']['Activity1'][0]['id']);
-    $this->assertEquals('Individual1', $submission['data']['Activity1'][0]['subject']);
+    $this->assertEquals('Individual1', $submission['data']['Activity1'][0]['fields']['subject']);
     $this->assertIsInt($submission['data']['Individual1'][0]['id']);
-    $this->assertEquals($firstName, $submission['data']['Individual1'][0]['first_name']);
-    $this->assertEquals('site', $submission['data']['Individual1'][0]['last_name']);
-    $this->assertEquals('This field is set in the data array', $submission['data']['Individual1'][0]['source']);
+    $this->assertEquals($firstName, $submission['data']['Individual1'][0]['fields']['first_name']);
+    $this->assertEquals('site', $submission['data']['Individual1'][0]['fields']['last_name']);
+    $this->assertEquals('This field is set in the data array', $submission['data']['Individual1'][0]['fields']['source']);
 
     // Check that Activity was submitted correctly.
     $activity = \Civi\Api4\Activity::get(FALSE)
@@ -198,14 +201,39 @@ EOHTML;
     $this->callAPISuccessGetSingle('ActivityContact', ['contact_id' => $contact['id'], 'activity_id' => $activity['id']]);
   }
 
+  public function testCheckAccess(): void {
+    $this->useValues([
+      'layout' => self::$layouts['aboutMe'],
+      'permission' => ['access CiviCRM'],
+    ]);
+    $this->createLoggedInUser();
+    \CRM_Core_Config::singleton()->userPermissionTemp = NULL;
+    \CRM_Core_Config::singleton()->userPermissionClass->permissions = [
+      'access Contact Dashboard',
+    ];
+    $check = Afform::checkAccess()
+      ->addValue('name', $this->formName)
+      ->setAction('get')
+      ->execute()->first();
+    $this->assertFalse($check['access']);
+    \CRM_Core_Config::singleton()->userPermissionClass->permissions = [
+      'access CiviCRM',
+    ];
+    $check = Afform::checkAccess()
+      ->addValue('name', $this->formName)
+      ->setAction('get')
+      ->execute()->first();
+    $this->assertTrue($check['access']);
+  }
+
   public function testAboutMeForbidden(): void {
     $this->useValues([
       'layout' => self::$layouts['aboutMe'],
-      'permission' => CRM_Core_Permission::ALWAYS_DENY_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_DENY_PERMISSION,
     ]);
 
     $this->createLoggedInUser();
-    CRM_Core_Config::singleton()->userPermissionTemp = new CRM_Core_Permission_Temp();
+    \CRM_Core_Config::singleton()->userPermissionTemp = new \CRM_Core_Permission_Temp();
 
     try {
       Afform::prefill()
@@ -237,7 +265,7 @@ EOHTML;
   public function testEmployerReference(): void {
     $this->useValues([
       'layout' => self::$layouts['employer'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $firstName = uniqid(__FUNCTION__);
@@ -278,7 +306,7 @@ EOHTML;
   public function testEmptyEmployerReference(): void {
     $this->useValues([
       'layout' => self::$layouts['employer'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $firstName = uniqid(__FUNCTION__);
@@ -317,12 +345,12 @@ EOHTML;
     $this->useValues([
       'layout' => self::$layouts['employer'],
       'create_submission' => TRUE,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $individualEmail = uniqid('individual@') . '.test';
     $orgEmail = uniqid('org@') . '.test';
-    $locationType = CRM_Core_BAO_LocationType::getDefault()->id;
+    $locationType = \CRM_Core_BAO_LocationType::getDefault()->id;
     $values = [
       'Individual1' => [
         [
@@ -364,12 +392,12 @@ EOHTML;
       ->execute()->single();
     $this->assertEquals($contact['id'], $submission['data']['Individual1'][0]['id']);
     $this->assertEquals($contact['org.id'], $submission['data']['Organization1'][0]['id']);
-    $this->assertEquals('Organization1', $submission['data']['Individual1'][0]['employer_id']);
-    $this->assertEquals($contact['email_primary'], $submission['data']['Individual1'][0]['_joins']['Email'][0]['id']);
-    $this->assertEquals($individualEmail, $submission['data']['Individual1'][0]['_joins']['Email'][0]['email']);
-    $this->assertEquals($locationType, $submission['data']['Individual1'][0]['_joins']['Email'][0]['location_type_id']);
-    $this->assertEquals($orgEmail, $submission['data']['Organization1'][0]['_joins']['Email'][0]['email']);
-    $this->assertEquals($locationType, $submission['data']['Organization1'][0]['_joins']['Email'][0]['location_type_id']);
+    $this->assertEquals('Organization1', $submission['data']['Individual1'][0]['fields']['employer_id']);
+    $this->assertEquals($contact['email_primary'], $submission['data']['Individual1'][0]['joins']['Email'][0]['id']);
+    $this->assertEquals($individualEmail, $submission['data']['Individual1'][0]['joins']['Email'][0]['email']);
+    $this->assertEquals($locationType, $submission['data']['Individual1'][0]['joins']['Email'][0]['location_type_id']);
+    $this->assertEquals($orgEmail, $submission['data']['Organization1'][0]['joins']['Email'][0]['email']);
+    $this->assertEquals($locationType, $submission['data']['Organization1'][0]['joins']['Email'][0]['location_type_id']);
   }
 
   public function testDedupeIndividual(): void {
@@ -388,7 +416,7 @@ EOHTML;
 EOHTML;
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $lastName = uniqid(__FUNCTION__);
@@ -398,7 +426,7 @@ EOHTML;
       ->addValue('email_primary.email', '123@example.com')
       ->execute()->single();
 
-    $locationType = CRM_Core_BAO_LocationType::getDefault()->id;
+    $locationType = \CRM_Core_BAO_LocationType::getDefault()->id;
     $values = [
       'Individual1' => [
         [
@@ -430,7 +458,7 @@ EOHTML;
   public function testFormValidationEntityFields(): void {
     $this->useValues([
       'layout' => self::$layouts['updateInfo'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $values = [
@@ -466,7 +494,7 @@ EOHTML;
   public function testFormValidationEntityJoinFields(): void {
     $this->useValues([
       'layout' => self::$layouts['updateInfo'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $values = [
@@ -501,13 +529,13 @@ EOHTML;
   public function testSubmissionLimit() {
     $this->useValues([
       'layout' => self::$layouts['aboutMe'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
       'create_submission' => TRUE,
       'submit_limit' => 3,
     ]);
 
     $cid = $this->createLoggedInUser();
-    CRM_Core_Config::singleton()->userPermissionTemp = new CRM_Core_Permission_Temp();
+    \CRM_Core_Config::singleton()->userPermissionTemp = new \CRM_Core_Permission_Temp();
 
     $submitValues = [
       ['fields' => ['first_name' => 'Firsty', 'last_name' => 'Lasty']],
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformCustomFieldUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformCustomFieldUsageTest.php
similarity index 95%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformCustomFieldUsageTest.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformCustomFieldUsageTest.php
index f572a35c35aee1817a311495ad991d74421e5232..b33fec68494229dd82e6415f171f383d3ecb3593 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformCustomFieldUsageTest.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformCustomFieldUsageTest.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Api4\Afform;
 use Civi\Api4\Contact;
@@ -10,7 +11,7 @@ use Civi\Api4\CustomGroup;
  *
  * @group headless
  */
-class api_v4_AfformCustomFieldUsageTest extends api_v4_AfformUsageTestCase {
+class AfformCustomFieldUsageTest extends AfformUsageTestCase {
 
   public static function setUpBeforeClass(): void {
     parent::setUpBeforeClass();
@@ -68,7 +69,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => self::$layouts['customMulti'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
     $firstName = uniqid(__FUNCTION__);
     $values = [
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformFileUploadTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformFileUploadTest.php
similarity index 97%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformFileUploadTest.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformFileUploadTest.php
index cd5115112270f50a042b5f6c2b1763ba0e056ca6..0f7e665cfa6f93b430c3e0384f3985049b2eb1a0 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformFileUploadTest.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformFileUploadTest.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 /**
  * Test case for Afform.prefill and Afform.submit.
@@ -13,7 +14,7 @@ use Civi\Api4\CustomGroup;
 
 require_once __DIR__ . '/AfformTestCase.php';
 require_once __DIR__ . '/AfformUsageTestCase.php';
-class api_v4_AfformFileUploadTest extends api_v4_AfformUsageTestCase {
+class AfformFileUploadTest extends AfformUsageTestCase {
 
   public static function setUpBeforeClass(): void {
     parent::setUpBeforeClass();
@@ -74,7 +75,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => self::$layouts['customFiles'],
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $lastName = uniqid(__FUNCTION__);
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformPrefillUsageTest.php
similarity index 96%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformPrefillUsageTest.php
index f99602750fed95edb9610e59685d73c33b1e0759..32dd6403274c5665ba0aec802c96d93645dfb8ae 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformPrefillUsageTest.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Api4\Afform;
 
@@ -7,7 +8,7 @@ use Civi\Api4\Afform;
  *
  * @group headless
  */
-class api_v4_AfformPrefillUsageTest extends api_v4_AfformUsageTestCase {
+class AfformPrefillUsageTest extends AfformUsageTestCase {
   use \Civi\Test\Api4TestTrait;
 
   /**
@@ -35,7 +36,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $cid = $this->saveTestRecords('Contact', [
@@ -120,7 +121,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $uid = $this->createLoggedInUser();
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRelationshipUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformRelationshipUsageTest.php
similarity index 96%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRelationshipUsageTest.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformRelationshipUsageTest.php
index 1d6a07b8fa782fe85832d0c8cab9998b9cae1333..36b6d83fb403943dc731fb5bbaea60ff5fc93dec 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRelationshipUsageTest.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformRelationshipUsageTest.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Api4\Afform;
 use Civi\Api4\Contact;
@@ -10,7 +11,7 @@ use Civi\Api4\RelationshipType;
  *
  * @group headless
  */
-class api_v4_AfformRelationshipUsageTest extends api_v4_AfformUsageTestCase {
+class AfformRelationshipUsageTest extends AfformUsageTestCase {
 
   /**
    * Tests creating a relationship between multiple contacts
@@ -34,7 +35,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $lastName = uniqid(__FUNCTION__);
@@ -91,7 +92,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $types = [
@@ -162,7 +163,7 @@ EOHTML;
 
     $this->useValues([
       'layout' => $layout,
-      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+      'permission' => \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
     ]);
 
     $contact = Contact::save(FALSE)
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRoutingTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformRoutingTest.php
similarity index 78%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRoutingTest.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformRoutingTest.php
index 01118ef23ed9ae8af9b563b9764f572e678fdcf3..28f49ea12babdbaba1e1b248f4b498a2345002f1 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRoutingTest.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformRoutingTest.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Api4\Afform;
 
@@ -6,7 +7,7 @@ use Civi\Api4\Afform;
  * Ensure that the routes created by Afform are working.
  * @group e2e
  */
-class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \Civi\Test\EndToEndInterface {
+class AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \Civi\Test\EndToEndInterface {
 
   protected $formName = 'mockPage';
 
@@ -35,7 +36,7 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C
   public function testChangingPermissions(): void {
     $http = new \GuzzleHttp\Client(['http_errors' => FALSE]);
     $url = function ($path, $query = NULL) {
-      return CRM_Utils_System::url($path, $query, TRUE, NULL, FALSE);
+      return \CRM_Utils_System::url($path, $query, TRUE, NULL, FALSE);
     };
 
     $result = $http->get($url('civicrm/mock-page'));
@@ -44,7 +45,7 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C
     Afform::update()
       ->setCheckPermissions(FALSE)
       ->addWhere('name', '=', $this->formName)
-      ->addValue('permission', CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION)
+      ->addValue('permission', \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION)
       ->execute();
 
     $result = $http->get($url('civicrm/mock-page'));
@@ -54,13 +55,13 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C
   public function testChangingPath(): void {
     $http = new \GuzzleHttp\Client(['http_errors' => FALSE]);
     $url = function ($path, $query = NULL) {
-      return CRM_Utils_System::url($path, $query, TRUE, NULL, FALSE);
+      return \CRM_Utils_System::url($path, $query, TRUE, NULL, FALSE);
     };
 
     Afform::update()
       ->setCheckPermissions(FALSE)
       ->addWhere('name', '=', $this->formName)
-      ->addValue('permission', CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION)
+      ->addValue('permission', \CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION)
       ->execute();
 
     $this->assertOpensPage($http->get($url('civicrm/mock-page')), 'mock-page');
@@ -77,10 +78,10 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C
   }
 
   /**
-   * @param $result
+   * @param \Psr\Http\Message\ResponseInterface $result
    * @param string $directive
    */
-  private function assertNotAuthorized(Psr\Http\Message\ResponseInterface $result, $directive) {
+  private function assertNotAuthorized(\Psr\Http\Message\ResponseInterface $result, string $directive) {
     $contents = $result->getBody()->getContents();
     $this->assertEquals(403, $result->getStatusCode());
     $this->assertMatchesRegularExpression(';You are not authorized to access;', $contents);
@@ -88,11 +89,11 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C
   }
 
   /**
-   * @param $result
+   * @param \Psr\Http\Message\ResponseInterface $result
    * @param string $directive
    *   The name of the directive which auto-opens.
    */
-  private function assertOpensPage(Psr\Http\Message\ResponseInterface $result, $directive) {
+  private function assertOpensPage(\Psr\Http\Message\ResponseInterface $result, string $directive) {
     $contents = $result->getBody()->getContents();
     $this->assertEquals(200, $result->getStatusCode());
     $this->assertDoesNotMatchRegularExpression(';You are not authorized to access;', $contents);
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformTest.php
similarity index 94%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformTest.php
index a408249e51d538e47f5b608ac223a69ddbd62fc3..4d6b9bfba58c16dc5718318fabd1397769f3ca96 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformTest.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Api4\Afform;
 use Civi\Api4\Dashboard;
@@ -8,7 +9,7 @@ use Civi\Api4\Dashboard;
  * This is a generic test class implemented with PHPUnit.
  * @group headless
  */
-class api_v4_AfformTest extends api_v4_AfformTestCase {
+class AfformTest extends AfformTestCase {
   use \Civi\Test\Api3TestTrait;
   use \Civi\Test\ContactTestTrait;
 
@@ -131,7 +132,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
   public function getFormatExamples() {
     $ex = [];
     $formats = ['html', 'shallow', 'deep'];
-    foreach (glob(__DIR__ . '/formatExamples/*.php') as $exampleFile) {
+    foreach (glob(__DIR__ . '/../formatExamples/*.php') as $exampleFile) {
       $example = require $exampleFile;
       if (isset($example['deep'])) {
         foreach ($formats as $updateFormat) {
@@ -227,7 +228,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
 
   public function getWhitespaceExamples() {
     $ex = [];
-    foreach (glob(__DIR__ . '/formatExamples/*.php') as $exampleFile) {
+    foreach (glob(__DIR__ . '/../formatExamples/*.php') as $exampleFile) {
       $example = require $exampleFile;
       if (isset($example['pretty'])) {
         $ex[] = ['mockBareFile', $example, $exampleFile];
@@ -278,9 +279,10 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
 
     // The default mockPage has 1 explicit requirement + 2 automatic requirements.
     Afform::revert()->addWhere('name', '=', $formName)->execute();
-    $angModule = Civi::service('angular')->getModule($formName);
-    $this->assertEquals(['afCore', 'mockBespoke', 'mockBareFile', 'mockFoo'], $angModule['requires']);
+    $angModule = \Civi::service('angular')->getModule($formName);
+    sort($angModule['requires']);
     $storedRequires = Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute();
+    $this->assertEquals(['afCore', 'mockBareFile', 'mockBespoke', 'mockFoo'], $angModule['requires']);
     $this->assertEquals(['mockBespoke'], $storedRequires[0]['requires']);
 
     // Knock down to 1 explicit + 1 automatic.
@@ -289,9 +291,10 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
       ->setLayoutFormat('html')
       ->setValues(['layout' => '<div>The bare file says "<mock-bare-file/>"</div>'])
       ->execute();
-    $angModule = Civi::service('angular')->getModule($formName);
-    $this->assertEquals(['afCore', 'mockBespoke', 'mockBareFile'], $angModule['requires']);
+    $angModule = \Civi::service('angular')->getModule($formName);
+    sort($angModule['requires']);
     $storedRequires = Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute();
+    $this->assertEquals(['afCore', 'mockBareFile', 'mockBespoke'], $angModule['requires']);
     $this->assertEquals(['mockBespoke'], $storedRequires[0]['requires']);
 
     // Remove the last explict and implicit requirements.
@@ -303,14 +306,15 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
         'requires' => [],
       ])
       ->execute();
-    $angModule = Civi::service('angular')->getModule($formName);
+    $angModule = \Civi::service('angular')->getModule($formName);
     $this->assertEquals(['afCore'], $angModule['requires']);
     $storedRequires = Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute();
     $this->assertEquals([], $storedRequires[0]['requires']);
 
     Afform::revert()->addWhere('name', '=', $formName)->execute();
-    $angModule = Civi::service('angular')->getModule($formName);
-    $this->assertEquals(['afCore', 'mockBespoke', 'mockBareFile', 'mockFoo'], $angModule['requires']);
+    $angModule = \Civi::service('angular')->getModule($formName);
+    sort($angModule['requires']);
+    $this->assertEquals(['afCore', 'mockBareFile', 'mockBespoke', 'mockFoo'], $angModule['requires']);
   }
 
 }
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTestCase.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformTestCase.php
similarity index 66%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTestCase.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformTestCase.php
index 43b174e4152e6ca715534474b80a6ddb32924f39..8951f5e05cd48cdd93c842966babdfb9e57914e9 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTestCase.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformTestCase.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Test\HeadlessInterface;
 use Civi\Test\TransactionalInterface;
@@ -6,7 +7,7 @@ use Civi\Test\TransactionalInterface;
 /**
  * Base class for Afform API tests.
  */
-abstract class api_v4_AfformTestCase extends \PHPUnit\Framework\TestCase implements HeadlessInterface, TransactionalInterface {
+abstract class AfformTestCase extends \PHPUnit\Framework\TestCase implements HeadlessInterface, TransactionalInterface {
 
   /**
    * Civi\Test has many helpers, like install(), uninstall(), sql(), and sqlFile().
@@ -23,8 +24,8 @@ abstract class api_v4_AfformTestCase extends \PHPUnit\Framework\TestCase impleme
    */
   public function setUp(): void {
     parent::setUp();
-    CRM_Core_Config::singleton()->userPermissionTemp = new CRM_Core_Permission_Temp();
-    CRM_Core_Config::singleton()->userPermissionTemp->grant('administer CiviCRM');
+    \CRM_Core_Config::singleton()->userPermissionTemp = new \CRM_Core_Permission_Temp();
+    \CRM_Core_Config::singleton()->userPermissionTemp->grant('administer CiviCRM');
   }
 
 }
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformUsageTestCase.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformUsageTestCase.php
similarity index 91%
rename from civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformUsageTestCase.php
rename to civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformUsageTestCase.php
index 2e9b7b30bc7e35de8eb766323b22ceaa92790e8a..7d86d1ea70f0445924ad3f903dc8dc4d772b5112 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformUsageTestCase.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/Afform/AfformUsageTestCase.php
@@ -1,4 +1,5 @@
 <?php
+namespace api\v4\Afform;
 
 use Civi\Api4\Afform;
 
@@ -7,7 +8,7 @@ use Civi\Api4\Afform;
  *
  * @group headless
  */
-abstract class api_v4_AfformUsageTestCase extends api_v4_AfformTestCase {
+abstract class AfformUsageTestCase extends AfformTestCase {
   use \Civi\Test\Api3TestTrait;
   use \Civi\Test\ContactTestTrait;
 
diff --git a/civicrm/ext/afform/mock/tests/phpunit/bootstrap.php b/civicrm/ext/afform/mock/tests/phpunit/bootstrap.php
index 5fd2c5bf3ffb26c90945b65fa580b7df99456638..eaa8379442aaf86398def1c7ed2dc251c8d2755a 100644
--- a/civicrm/ext/afform/mock/tests/phpunit/bootstrap.php
+++ b/civicrm/ext/afform/mock/tests/phpunit/bootstrap.php
@@ -1,19 +1,18 @@
 <?php
 
 ini_set('memory_limit', '2G');
+
 // phpcs:disable
 eval(cv('php:boot --level=classloader', 'phpcode'));
 // phpcs:enable
-
 // Allow autoloading of PHPUnit helper classes in this extension.
-foreach ([__DIR__] as $dir) {
-  $loader = new \Composer\Autoload\ClassLoader();
-  $loader->add('CRM_', $dir);
-  $loader->add('Civi\\', $dir);
-  $loader->add('api_', $dir);
-  $loader->add('api\\', $dir);
-  $loader->register();
-}
+$loader = new \Composer\Autoload\ClassLoader();
+$loader->add('CRM_', [__DIR__ . '/../..', __DIR__]);
+$loader->addPsr4('Civi\\', [__DIR__ . '/../../Civi', __DIR__ . '/Civi']);
+$loader->add('api_', [__DIR__ . '/../..', __DIR__]);
+$loader->addPsr4('api\\', [__DIR__ . '/../../api', __DIR__ . '/api']);
+
+$loader->register();
 
 /**
  * Call the "cv" command.
@@ -22,16 +21,17 @@ foreach ([__DIR__] as $dir) {
  *   The rest of the command to send.
  * @param string $decode
  *   Ex: 'json' or 'phpcode'.
- * @return string
+ * @return mixed
  *   Response output (if the command executed normally).
+ *   For 'raw' or 'phpcode', this will be a string. For 'json', it could be any JSON value.
  * @throws \RuntimeException
  *   If the command terminates abnormally.
  */
-function cv($cmd, $decode = 'json') {
+function cv(string $cmd, string $decode = 'json') {
   $cmd = 'cv ' . $cmd;
-  $descriptorSpec = [0 => ["pipe", "r"], 1 => ["pipe", "w"], 2 => STDERR];
+  $descriptorSpec = [0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => STDERR];
   $oldOutput = getenv('CV_OUTPUT');
-  putenv("CV_OUTPUT=json");
+  putenv('CV_OUTPUT=json');
 
   // Execute `cv` in the original folder. This is a work-around for
   // phpunit/codeception, which seem to manipulate PWD.
@@ -51,7 +51,7 @@ function cv($cmd, $decode = 'json') {
 
     case 'phpcode':
       // If the last output is /*PHPCODE*/, then we managed to complete execution.
-      if (substr(trim($result), 0, 12) !== "/*BEGINPHP*/" || substr(trim($result), -10) !== "/*ENDPHP*/") {
+      if (substr(trim($result), 0, 12) !== '/*BEGINPHP*/' || substr(trim($result), -10) !== '/*ENDPHP*/') {
         throw new \RuntimeException("Command failed ($cmd):\n$result");
       }
       return $result;
diff --git a/civicrm/ext/authx/Civi/Authx/Joomla.php b/civicrm/ext/authx/Civi/Authx/Joomla.php
index 51b9f4d1bc91362fc8bc1f268fc9a5f002289c1d..094132b242aec146d5ead47af841ecd16e91efd0 100644
--- a/civicrm/ext/authx/Civi/Authx/Joomla.php
+++ b/civicrm/ext/authx/Civi/Authx/Joomla.php
@@ -81,7 +81,6 @@ class Joomla implements AuthxInterface {
     // In any event, this work-around passes `AllFlowsTest::testMultipleStateless`.
 
     \JFactory::getSession()->destroy();
-    \JFactory::getSession()->setHandler(new \CRM_Utils_FakeJoomlaSession('CIVISCRIPT'));
     $user = new \JUser($userId);
     $session = \JFactory::getSession();
     $session->set('user', $user);
diff --git a/civicrm/ext/authx/info.xml b/civicrm/ext/authx/info.xml
index 36b1865e747d556ecf0b0b547f452ea5ab27e3e9..09efb7740873aa06525f546f4c92f678033b078e 100644
--- a/civicrm/ext/authx/info.xml
+++ b/civicrm/ext/authx/info.xml
@@ -14,14 +14,14 @@
     <url desc="Issues">https://lab.civicrm.org/dev/core/-/issues</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>mgmt:required</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>AuthX enables remote applications to connect to CiviCRM. Use it to enable and disable different forms of authentication (such as username-password, API key, and/or JWT).</comments>
   <classloader>
diff --git a/civicrm/ext/authx/tests/phpunit/Civi/Authx/AbstractFlowsTest.php b/civicrm/ext/authx/tests/phpunit/Civi/Authx/AbstractFlowsTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..63482574936d551c44ef5f896629d0c943689ac7
--- /dev/null
+++ b/civicrm/ext/authx/tests/phpunit/Civi/Authx/AbstractFlowsTest.php
@@ -0,0 +1,387 @@
+<?php
+
+namespace Civi\Authx;
+
+use Civi\Test\EndToEndInterface;
+use Civi\Test\HttpTestTrait;
+use GuzzleHttp\Psr7\AppendStream;
+use GuzzleHttp\Psr7\Request;
+use GuzzleHttp\Psr7\Uri;
+use Psr\Http\Message\ResponseInterface;
+use function GuzzleHttp\Psr7\stream_for;
+
+class AbstractFlowsTest extends \PHPUnit\Framework\TestCase implements EndToEndInterface {
+
+  use HttpTestTrait;
+
+  /**
+   * Backup copy of the original settings.
+   *
+   * @var array
+   */
+  protected $settingsBackup;
+
+  /**
+   * List of CMS-dependent quirks that should be ignored during testing.
+   * @var array
+   */
+  protected $quirks = [];
+
+  public static function setUpBeforeClass(): void {
+    \Civi\Test::e2e()
+      ->installMe(__DIR__)
+      ->callback(
+        function() {
+          \CRM_Utils_System::synchronizeUsers();
+        },
+        'synchronizeUsers'
+      )
+      ->apply();
+  }
+
+  public function setUp(): void {
+    $this->quirks = $this->findQuirks();
+
+    parent::setUp();
+    $this->settingsBackup = [];
+    foreach (\Civi\Authx\Meta::getFlowTypes() as $flowType) {
+      foreach (["authx_{$flowType}_cred", "authx_{$flowType}_user", "authx_guards"] as $setting) {
+        $this->settingsBackup[$setting] = \Civi::settings()->get($setting);
+      }
+    }
+
+    \Civi::settings()->set('authx_guards', []);
+  }
+
+  public function tearDown(): void {
+    foreach ($this->settingsBackup as $setting => $value) {
+      \Civi::settings()->set($setting, $value);
+    }
+    parent::tearDown();
+  }
+
+  public function getCredTypes() {
+    $exs = [];
+    $exs[] = ['pass'];
+    $exs[] = ['api_key'];
+    $exs[] = ['jwt'];
+    return $exs;
+  }
+
+  public function getFlowTypes() {
+    $exs = [];
+    $exs[] = ['param'];
+    $exs[] = ['header'];
+    $exs[] = ['xheader'];
+    return $exs;
+  }
+
+  /**
+   * Apply authentication options to a prepared HTTP request.
+   *
+   * @param \Psr\Http\Message\RequestInterface $request
+   *   The original HTTP request (without any authentication options).
+   * @param string $credType
+   *   Ex: 'pass', 'jwt', 'api_key'
+   * @param string $flowType
+   *   Ex: 'param', 'header', 'xheader'
+   * @param int $cid
+   *   Authenticate as a specific contact (contact ID#).
+   * @return \Psr\Http\Message\RequestInterface
+   *   The new HTTP request (with authentication options).
+   */
+  protected function applyAuth($request, $credType, $flowType, $cid) {
+    $credFunc = 'cred' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $credType));
+    $flowFunc = 'auth' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $flowType));
+    return $this->$flowFunc($request, $this->$credFunc($cid));
+  }
+
+  // ------------------------------------------------
+  // Library: Base requests
+
+  /**
+   * Make an AJAX request with info about the current contact.
+   *
+   * @return \GuzzleHttp\Psr7\Request
+   */
+  public function requestMyContact() {
+    $p = (['where' => [['id', '=', 'user_contact_id']]]);
+    $uri = (new Uri('civicrm/authx/id'))
+      ->withQuery('params=' . urlencode(json_encode($p)));
+    $req = new Request('GET', $uri);
+    return $req;
+  }
+
+  /**
+   * Assert the AJAX response provided the expected contact.
+   *
+   * @param int $cid
+   *   The expected contact ID
+   * @param int|null $uid
+   *   The expected user ID
+   * @param string $credType
+   * @param string $flow
+   * @param \Psr\Http\Message\ResponseInterface $response
+   */
+  public function assertMyContact($cid, $uid, $credType, $flow, ResponseInterface $response): void {
+    $this->assertContentType('application/json', $response);
+    $this->assertStatusCode(200, $response);
+    $j = json_decode((string) $response->getBody(), 1);
+    $formattedFailure = $this->formatFailure($response);
+    $this->assertEquals($cid, $j['contact_id'], "Response did not give expected contact ID\n" . $formattedFailure);
+    $this->assertEquals($uid, $j['user_id'], "Response did not give expected user ID\n" . $formattedFailure);
+    if ($flow !== NULL) {
+      $this->assertEquals($flow, $j['flow'], "Response did not give expected flow type\n" . $formattedFailure);
+    }
+    if ($credType !== NULL) {
+      $this->assertEquals($credType, $j['cred'], "Response did not give expected cred type\n" . $formattedFailure);
+    }
+  }
+
+  /**
+   * Assert the AJAX request provided empty contact information
+   *
+   * @param \Psr\Http\Message\ResponseInterface $response
+   * @param string $additionalMessage
+   */
+  public function assertAnonymousContact(ResponseInterface $response, $additionalMessage = ''): void {
+    $formattedFailure = $this->formatFailure($response);
+    $this->assertContentType('application/json', $response);
+    $this->assertStatusCode(200, $response);
+    $j = json_decode((string) $response->getBody(), 1);
+    if (json_last_error() !== JSON_ERROR_NONE || empty($j)) {
+      $this->fail('Malformed JSON' . $formattedFailure);
+    }
+    $this->assertTrue(array_key_exists('contact_id', $j) && $j['contact_id'] === NULL, 'contact_id should be null' . $formattedFailure . ' ' . $additionalMessage);
+    $this->assertTrue(array_key_exists('user_id', $j) && $j['user_id'] === NULL, 'user_id should be null' . $formattedFailure . ' ' . $additionalMessage);
+  }
+
+  /**
+   * Assert that the $response indicates the user cannot view the dashboard.
+   *
+   * @param \Psr\Http\Message\ResponseInterface $response
+   */
+  public function assertDashboardUnauthorized($response = NULL): void {
+    $response = $this->resolveResponse($response);
+    if (!in_array('authErrorShowsForm', $this->quirks)) {
+      $this->assertStatusCode(403, $response);
+    }
+    $this->assertFalse(
+      (bool) preg_match(';crm-dashboard-groups;', (string) $response->getBody()),
+      'Response should not contain a dashboard' . $this->formatFailure($response)
+    );
+  }
+
+  public function assertDashboardOk($response = NULL): void {
+    $response = $this->resolveResponse($response);
+    $this->assertStatusCode(200, $response);
+    $this->assertContentType('text/html', $response);
+    // If the first two assertions pass but the next fails, then... perhaps the
+    // local site permissions are wrong?
+    $this->assertTrue(
+      (bool) preg_match(';crm-dashboard-groups;', (string) $response->getBody()),
+      'Response should contain a dashboard' . $this->formatFailure($response)
+    );
+  }
+
+  // ------------------------------------------------
+  // Library: Flow functions
+
+  /**
+   * Add query parameter ("&_authx=<CRED>").
+   *
+   * @param \GuzzleHttp\Psr7\Request $request
+   * @param string $cred
+   *   The credential add to the request (e.g. "Basic ASDF==" or "Bearer FDSA").
+   * @return \GuzzleHttp\Psr7\Request
+   */
+  public function authParam(Request $request, $cred) {
+    $query = $request->getUri()->getQuery();
+    return $request->withUri(
+      $request->getUri()->withQuery($query . '&_authx=' . urlencode($cred))
+    );
+  }
+
+  /**
+   * Add query parameter ("&_authx=<CRED>&_authxSes=1").
+   *
+   * @param \GuzzleHttp\Psr7\Request $request
+   * @param string $cred
+   *   The credential add to the request (e.g. "Basic ASDF==" or "Bearer FDSA").
+   * @return \GuzzleHttp\Psr7\Request
+   */
+  public function authAuto(Request $request, $cred) {
+    $query = $request->getUri()->getQuery();
+    return $request->withUri(
+      $request->getUri()->withQuery($query . '&_authx=' . urlencode($cred) . '&_authxSes=1')
+    );
+  }
+
+  public function authLogin(Request $request, $cred) {
+    return $request->withMethod('POST')
+      ->withBody(new AppendStream([
+        stream_for('_authx=' . urlencode($cred) . '&'),
+        $request->getBody(),
+      ]));
+  }
+
+  public function authHeader(Request $request, $cred) {
+    return $request->withHeader('Authorization', $cred);
+  }
+
+  public function authXHeader(Request $request, $cred) {
+    return $request->withHeader('X-Civi-Auth', $cred);
+  }
+
+  public function authNone(Request $request, $cred) {
+    return $request;
+  }
+
+  // ------------------------------------------------
+  // Library: Credential functions
+
+  /**
+   * @param int $cid
+   * @return string
+   *   The credential add to the request (e.g. "Basic ASDF==" or "Bearer FDSA").
+   */
+  public function credPass($cid) {
+    if ($cid === $this->getDemoCID()) {
+      return 'Basic ' . base64_encode($GLOBALS['_CV']['DEMO_USER'] . ':' . $GLOBALS['_CV']['DEMO_PASS']);
+    }
+    else {
+      $this->fail("This test does have the password the requested contact.");
+    }
+  }
+
+  public function credApikey($cid) {
+    $api_key = md5(\random_bytes(16));
+    \civicrm_api3('Contact', 'create', [
+      'id' => $cid,
+      'api_key' => $api_key,
+    ]);
+    return 'Bearer ' . $api_key;
+  }
+
+  public function credJwt($cid, $expired = FALSE) {
+    if (empty(\Civi::service('crypto.registry')->findKeysByTag('SIGN'))) {
+      $this->markTestIncomplete('Cannot test JWT. No CIVICRM_SIGN_KEYS are defined.');
+    }
+    $token = \Civi::service('crypto.jwt')->encode([
+      'exp' => $expired ? time() - 60 * 60 : time() + 60 * 60,
+      'sub' => "cid:$cid",
+      'scope' => 'authx',
+    ]);
+    return 'Bearer ' . $token;
+  }
+
+  public function credNone($cid) {
+    return NULL;
+  }
+
+  /**
+   * Assert that a request was not authenticated.
+   *
+   * @param string $mode
+   *   Expect that the  'prohibited' or 'anon'
+   * @param \Psr\Http\Message\ResponseInterface $response
+   */
+  protected function assertNotAuthenticated(string $mode, $response) {
+    switch ($mode) {
+      case 'anon':
+        $this->assertAnonymousContact($response);
+        break;
+
+      case 'prohibit':
+        $this->assertFailedDueToProhibition($response);
+        break;
+
+      default:
+        throw new \RuntimeException("Invalid option: mode=$mode");
+    }
+  }
+
+  /**
+   * @param \Psr\Http\Message\ResponseInterface $response
+   */
+  protected function assertFailedDueToProhibition($response): void {
+    $this->assertBodyRegexp(';HTTP 401;', $response);
+    $this->assertContentType('text/plain', $response);
+    if (!in_array('sendsExcessCookies', $this->quirks)) {
+      $this->assertNoCookies($response);
+    }
+    $this->assertStatusCode(401, $response);
+
+  }
+
+  /**
+   * @param \Psr\Http\Message\ResponseInterface $response
+   */
+  protected function assertNoCookies($response = NULL) {
+    $response = $this->resolveResponse($response);
+    $this->assertEmpty(
+      preg_grep('/Set-Cookie/i', array_keys($response->getHeaders())),
+      'Response should not have cookies' . $this->formatFailure($response)
+    );
+    return $this;
+  }
+
+  /**
+   * @param \Psr\Http\Message\ResponseInterface $response
+   */
+  protected function assertHasCookies($response = NULL) {
+    $response = $this->resolveResponse($response);
+    $this->assertNotEmpty(
+      preg_grep('/Set-Cookie/i', array_keys($response->getHeaders())),
+      'Response should have cookies' . $this->formatFailure($response)
+    );
+    return $this;
+  }
+
+  /**
+   * @return int
+   * @throws \CRM_Core_Exception
+   */
+  protected function getDemoCID(): int {
+    if (!isset(\Civi::$statics[__CLASS__]['demoId'])) {
+      \Civi::$statics[__CLASS__]['demoId'] = (int) \civicrm_api3('Contact', 'getvalue', [
+        'id' => '@user:' . $GLOBALS['_CV']['DEMO_USER'],
+        'return' => 'id',
+      ]);
+    }
+    return \Civi::$statics[__CLASS__]['demoId'];
+  }
+
+  protected function getDemoUID(): int {
+    return \CRM_Core_Config::singleton()->userSystem->getUfId($GLOBALS['_CV']['DEMO_USER']);
+  }
+
+  public function getLebowskiCID() {
+    if (!isset(\Civi::$statics[__CLASS__]['lebowskiCID'])) {
+      $contact = \civicrm_api3('Contact', 'create', [
+        'contact_type' => 'Individual',
+        'first_name' => 'Jeffrey',
+        'last_name' => 'Lebowski',
+        'external_identifier' => __CLASS__,
+        'options' => [
+          'match' => 'external_identifier',
+        ],
+      ]);
+      \Civi::$statics[__CLASS__]['lebowskiCID'] = $contact['id'];
+    }
+    return \Civi::$statics[__CLASS__]['lebowskiCID'];
+  }
+
+  /**
+   * @return array|string[]
+   */
+  protected function findQuirks(): array {
+    $quirks = [
+      'Joomla' => ['sendsExcessCookies', 'authErrorShowsForm'],
+      'WordPress' => ['sendsExcessCookies'],
+      'Standalone' => ['sendsExcessCookies'],
+    ];
+    return $quirks[CIVICRM_UF] ?? [];
+  }
+
+}
diff --git a/civicrm/ext/authx/tests/phpunit/Civi/Authx/AllFlowsTest.php b/civicrm/ext/authx/tests/phpunit/Civi/Authx/AllFlowsTest.php
deleted file mode 100644
index f02d9872113dcb1170d9c2c56017135a6c970204..0000000000000000000000000000000000000000
--- a/civicrm/ext/authx/tests/phpunit/Civi/Authx/AllFlowsTest.php
+++ /dev/null
@@ -1,943 +0,0 @@
-<?php
-
-namespace Civi\Authx;
-
-use Civi\Pipe\BasicPipeClient;
-use Civi\Pipe\JsonRpcMethodException;
-use Civi\Test\HttpTestTrait;
-use CRM_Authx_ExtensionUtil as E;
-use Civi\Test\EndToEndInterface;
-use GuzzleHttp\Cookie\CookieJar;
-use GuzzleHttp\Psr7\AppendStream;
-use GuzzleHttp\Psr7\Request;
-use GuzzleHttp\Psr7\Uri;
-use Psr\Http\Message\ResponseInterface;
-use function GuzzleHttp\Psr7\stream_for;
-
-/**
- * This is a matrix-style test which assesses all supported permutations of
- *
- * @group e2e
- */
-class AllFlowsTest extends \PHPUnit\Framework\TestCase implements EndToEndInterface {
-
-  use HttpTestTrait;
-
-  /**
-   * Backup copy of the original settings.
-   *
-   * @var array
-   */
-  protected $settingsBackup;
-
-  /**
-   * List of CMS-dependent quirks that should be ignored during testing.
-   * @var array
-   */
-  protected $quirks = [];
-
-  public static function setUpBeforeClass(): void {
-    \Civi\Test::e2e()
-      ->installMe(__DIR__)
-      ->callback(
-        function() {
-          \CRM_Utils_System::synchronizeUsers();
-        },
-        'synchronizeUsers'
-      )
-      ->apply();
-  }
-
-  public function setUp(): void {
-    $quirks = [
-      'Joomla' => ['sendsExcessCookies', 'authErrorShowsForm'],
-      'WordPress' => ['sendsExcessCookies'],
-    ];
-    $this->quirks = $quirks[CIVICRM_UF] ?? [];
-
-    parent::setUp();
-    $this->settingsBackup = [];
-    foreach (\Civi\Authx\Meta::getFlowTypes() as $flowType) {
-      foreach (["authx_{$flowType}_cred", "authx_{$flowType}_user", "authx_guards"] as $setting) {
-        $this->settingsBackup[$setting] = \Civi::settings()->get($setting);
-      }
-    }
-
-    \Civi::settings()->set('authx_guards', []);
-  }
-
-  public function tearDown(): void {
-    foreach ($this->settingsBackup as $setting => $value) {
-      \Civi::settings()->set($setting, $value);
-    }
-    parent::tearDown();
-  }
-
-  public function getStatelessExamples() {
-    $exs = [];
-    $exs[] = ['pass', 'param'];
-    $exs[] = ['pass', 'header'];
-    $exs[] = ['pass', 'xheader'];
-    $exs[] = ['api_key', 'param'];
-    $exs[] = ['api_key', 'header'];
-    $exs[] = ['api_key', 'xheader'];
-    $exs[] = ['jwt', 'param'];
-    $exs[] = ['jwt', 'header'];
-    $exs[] = ['jwt', 'xheader'];
-    return $exs;
-  }
-
-  public function getCredTypes() {
-    $exs = [];
-    $exs[] = ['pass'];
-    $exs[] = ['api_key'];
-    $exs[] = ['jwt'];
-    return $exs;
-  }
-
-  public function getFlowTypes() {
-    $exs = [];
-    $exs[] = ['param'];
-    $exs[] = ['header'];
-    $exs[] = ['xheader'];
-    return $exs;
-  }
-
-  public function testAnonymous(): void {
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->requestMyContact();
-    $response = $http->send($request);
-    $this->assertAnonymousContact($response);
-  }
-
-  /**
-   * Send a request using a stateless protocol. Assert that identities are setup correctly.
-   *
-   * @param string $credType
-   *   The type of credential to put in the `Authorization:` header.
-   * @param string $flowType
-   *   The "flow" determines how the credential is added on top of the base-request (e.g. adding a parameter or header).
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   * @dataProvider getStatelessExamples
-   */
-  public function testStatelessContactOnly($credType, $flowType): void {
-    if ($credType === 'pass') {
-      $this->assertTrue(TRUE, 'No need to test password credentials with non-user contacts');
-      return;
-    }
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getLebowskiCID());
-
-    // Phase 1: Request fails if this credential type is not enabled
-    \Civi::settings()->set("authx_{$flowType}_cred", []);
-    $response = $http->send($request);
-    $this->assertNotAuthenticated($flowType === 'header' ? 'anon' : 'prohibit', $response);
-
-    // Phase 2: Request succeeds if this credential type is enabled
-    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
-    $response = $http->send($request);
-    $this->assertMyContact($this->getLebowskiCID(), NULL, $credType, $flowType, $response);
-    if (!in_array('sendsExcessCookies', $this->quirks)) {
-      $this->assertNoCookies($response);
-    }
-  }
-
-  /**
-   * Send a request using a stateless protocol. Assert that identities are setup correctly.
-   *
-   * @param string $credType
-   *   The type of credential to put in the `Authorization:` header.
-   * @param string $flowType
-   *   The "flow" determines how the credential is added on top of the base-request (e.g. adding a parameter or header).
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   * @dataProvider getStatelessExamples
-   */
-  public function testStatelessUserContact($credType, $flowType): void {
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getDemoCID());
-
-    // Phase 1: Request fails if this credential type is not enabled
-    \Civi::settings()->set("authx_{$flowType}_cred", []);
-    $response = $http->send($request);
-    $this->assertNotAuthenticated($flowType === 'header' ? 'anon' : 'prohibit', $response);
-
-    // Phase 2: Request succeeds if this credential type is enabled
-    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
-    $response = $http->send($request);
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
-    if (!in_array('sendsExcessCookies', $this->quirks)) {
-      $this->assertNoCookies($response);
-    }
-  }
-
-  /**
-   * Send a request using a jwt that can't be decoded at all. Assert that it fails
-   *
-   * @param string $flowType
-   *   The "flow" determines how the credential is added on top of the base-request (e.g. adding a parameter or header).
-   *
-   * @dataProvider getFlowTypes
-   */
-  public function testInvalidJwt($flowType): void {
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-
-    $cred = $this->credJwt('Bearer thisisnotavalidjwt');
-
-    $flowFunc = 'auth' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $flowType));
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->$flowFunc($this->requestMyContact(), $cred);
-
-    \Civi::settings()->set("authx_{$flowType}_cred", ['jwt']);
-    $response = $http->send($request);
-    $this->assertNotAuthenticated('prohibit', $response);
-  }
-
-  /**
-   * Send a request using a jwt that has expired. Assert that it fails
-   *
-   * @param string $flowType
-   *   The "flow" determines how the credential is added on top of the base-request (e.g. adding a parameter or header).
-   *
-   * @dataProvider getFlowTypes
-   */
-  public function testExpiredJwt($flowType): void {
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-
-    $cred = $this->credJwt($this->getDemoCID(), TRUE);
-    $flowFunc = 'auth' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $flowType));
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->$flowFunc($this->requestMyContact(), $cred);
-
-    \Civi::settings()->set("authx_{$flowType}_cred", ['jwt']);
-    $response = $http->send($request);
-    $this->assertNotAuthenticated('prohibit', $response);
-  }
-
-  /**
-   * The setting "authx_guard" may be used to require (or not require) the site_key.
-   *
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   */
-  public function testStatelessGuardSiteKey() {
-    if (!defined('CIVICRM_SITE_KEY')) {
-      $this->markTestIncomplete("Cannot run test without CIVICRM_SITE_KEY");
-    }
-
-    [$credType, $flowType] = ['pass', 'header'];
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
-
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getDemoCID());
-
-    // Request OK. Policy requires site_key, and we have one.
-    \Civi::settings()->set("authx_guards", ['site_key']);
-    $response = $http->send($request->withHeader('X-Civi-Key', CIVICRM_SITE_KEY));
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
-
-    // Request OK. Policy does not require site_key, and we do not have one
-    \Civi::settings()->set("authx_guards", []);
-    $response = $http->send($request);
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
-
-    // Request fails. Policy requires site_key, but we don't have the wrong value.
-    \Civi::settings()->set("authx_guards", ['site_key']);
-    $response = $http->send($request->withHeader('X-Civi-Key', 'not-the-site-key'));
-    $this->assertFailedDueToProhibition($response);
-
-    // Request fails. Policy requires site_key, but we don't have one.
-    \Civi::settings()->set("authx_guards", ['site_key']);
-    $response = $http->send($request);
-    $this->assertFailedDueToProhibition($response);
-  }
-
-  /**
-   * The login flow allows you use 'civicrm/authx/login' and 'civicrm/authx/logout'
-   * to setup/teardown a session.
-   *
-   * @param string $credType
-   *   The type of credential to put in the login request.
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   * @dataProvider getCredTypes
-   */
-  public function testStatefulLoginAllowed($credType): void {
-    $flowType = 'login';
-    $credFunc = 'cred' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $credType));
-
-    // Phase 1: Some pages are not accessible.
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-    $http->get('civicrm/user');
-    $this->assertDashboardUnauthorized();
-
-    // Phase 2: Request succeeds if this credential type is enabled
-    $cookieJar = new CookieJar();
-    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
-    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
-    $response = $http->post('civicrm/authx/login', [
-      'form_params' => ['_authx' => $this->$credFunc($this->getDemoCID())],
-    ]);
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
-    $this->assertHasCookies($response);
-
-    // Phase 3: We can use cookies to request other pages
-    $response = $http->get('civicrm/authx/id');
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
-    $response = $http->get('civicrm/user');
-    $this->assertDashboardOk();
-
-    // Phase 4: After logout, requests should fail.
-    $oldCookies = clone $cookieJar;
-    $http->get('civicrm/authx/logout');
-    $this->assertStatusCode(200);
-    $http->get('civicrm/user');
-    $this->assertDashboardUnauthorized();
-
-    $httpHaxor = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $oldCookies]);
-    $httpHaxor->get('civicrm/user');
-    $this->assertDashboardUnauthorized();
-  }
-
-  /**
-   * The login flow 'civicrm/authx/login' may be prohibited by policy.
-   *
-   * @param string $credType
-   *   The type of credential to put in the login request.
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   * @dataProvider getCredTypes
-   */
-  public function testStatefulLoginProhibited($credType): void {
-    $flowType = 'login';
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-    $credFunc = 'cred' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $credType));
-
-    \Civi::settings()->set("authx_{$flowType}_cred", []);
-    $response = $http->post('civicrm/authx/login', [
-      'form_params' => ['_authx' => $this->$credFunc($this->getDemoCID())],
-    ]);
-    $this->assertFailedDueToProhibition($response);
-  }
-
-  /**
-   * The auto-login flow allows you to request a specific page with specific
-   * credentials. The new session is setup, and the page is displayed.
-   *
-   * @param string $credType
-   *   The type of credential to put in the login request.
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   * @dataProvider getCredTypes
-   */
-  public function testStatefulAutoAllowed($credType): void {
-    $flowType = 'auto';
-    $cookieJar = new CookieJar();
-    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
-
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getDemoCID());
-
-    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
-    $this->assertEquals(0, $cookieJar->count());
-    $response = $http->send($request);
-    $this->assertTrue($cookieJar->count() >= 1);
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
-
-    // FIXME: Assert that re-using cookies yields correct result.
-  }
-
-  /**
-   * The auto-login flow allows you to request a specific page with specific
-   * credentials. The new session is setup, and the page is displayed.
-   *
-   * @param string $credType
-   *   The type of credential to put in the login request.
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   * @dataProvider getCredTypes
-   */
-  public function testStatefulAutoProhibited($credType): void {
-    $flowType = 'auto';
-    $cookieJar = new CookieJar();
-    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
-
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getDemoCID());
-
-    \Civi::settings()->set("authx_{$flowType}_cred", []);
-    $response = $http->send($request);
-    $this->assertFailedDueToProhibition($response);
-  }
-
-  /**
-   * Create a session for $demoCID. Within the session, make a single
-   * stateless request as $lebowskiCID.
-   *
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   */
-  public function testStatefulStatelessOverlap(): void {
-    \Civi::settings()->set("authx_login_cred", ['api_key']);
-    \Civi::settings()->set("authx_header_cred", ['api_key']);
-
-    $cookieJar = new CookieJar();
-    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
-
-    // Phase 1: Login, create a session.
-    $response = $http->post('civicrm/authx/login', [
-      'form_params' => ['_authx' => $this->credApikey($this->getDemoCID())],
-    ]);
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'api_key', 'login', $response);
-    $this->assertHasCookies($response);
-    $response = $http->get('civicrm/authx/id');
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'api_key', 'login', $response);
-
-    // Phase 2: Make a single, stateless request with different creds
-    /** @var \Psr\Http\Message\RequestInterface $request */
-    $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getLebowskiCID());
-    $response = $http->send($request);
-    $this->assertFailedDueToProhibition($response);
-    // The following assertion merely identifies current behavior. If you can get it working generally, then huzza.
-    $this->assertBodyRegexp(';Session already active;', $response);
-    // $this->assertMyContact($this->getLebowskiCID(), NULL, $response);
-    // $this->assertNoCookies($response);
-
-    // Phase 3: Original session is still valid
-    $response = $http->get('civicrm/authx/id');
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'api_key', 'login', $response);
-  }
-
-  /**
-   * Suppose a deployment has two layers of authorization:
-   *
-   * (1) a generic/site-wide HTTP restriction (perhaps enforced by a reverse proxy)
-   * (2) anything/everything else (CMS/login-form/parameter/X-Civi-Auth stuff).
-   *
-   * Layer (1) has an `Authorization:` header that should be ignored by `authx`.
-   *
-   * This test submits both layer (1) and layer (2) credentials and ensures that authx respects
-   * the layer (2).
-   */
-  public function testIgnoredHeaderAuthorization() {
-    // We may submit some other credential - it will be used.
-    $flowType = 'param';
-    $credType = 'api_key';
-
-    \Civi::settings()->set("authx_header_cred", []);
-    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
-
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-
-    // We submit both the irrelevant `Authorization:` and the relevant `?_authx=...` (DemoCID).
-    $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getLebowskiCID());
-    $request = $this->applyAuth($request, $credType, $flowType, $this->getDemoCID());
-    // $request = $request->withAddedHeader('Authorization', $irrelevantAuthorization);
-    $response = $http->send($request);
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
-    if (!in_array('sendsExcessCookies', $this->quirks)) {
-      $this->assertNoCookies($response);
-    }
-  }
-
-  /**
-   * Similar to testIgnoredHeaderAuthorization(), but the Civi/CMS user is anonymous.
-   */
-  public function testIgnoredHeaderAuthorization_anon() {
-    $http = $this->createGuzzle(['http_errors' => FALSE]);
-
-    /** @var \Psr\Http\Message\RequestInterface $request */
-
-    // Variant 1: The `Authorization:` header is ignored (even if the content is totally fake/inauthentic).
-    \Civi::settings()->set("authx_header_cred", []);
-    $request = $this->requestMyContact()->withAddedHeader('Authorization', 'Basic ' . base64_encode("not:real"));
-    $response = $http->send($request);
-    $this->assertAnonymousContact($response);
-
-    // Variant 2: The `Authorization:` header is ignored (even if the content is sorta-real-ish for LebowskiCID).
-    \Civi::settings()->set("authx_header_cred", []);
-    $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getLebowskiCID());
-    $response = $http->send($request);
-    $this->assertAnonymousContact($response);
-  }
-
-  /**
-   * This consumer intends to make stateless requests with a handful of different identities,
-   * but their browser happens to be cookie-enabled. Ensure that identities do not leak between requests.
-   *
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   */
-  public function testMultipleStateless(): void {
-    \Civi::settings()->set("authx_header_cred", ['api_key']);
-    $cookieJar = new CookieJar();
-    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
-
-    /** @var \Psr\Http\Message\RequestInterface $request */
-
-    // Alternate calls among (A)nonymous, (D)emo, and (L)ebowski
-    $planSteps = 'LADA LDLD DDLLAA';
-    $actualSteps = '';
-
-    for ($i = 0; $i < strlen($planSteps); $i++) {
-      switch ($planSteps[$i]) {
-        case 'L':
-          $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getLebowskiCID());
-          $response = $http->send($request);
-          $this->assertMyContact($this->getLebowskiCID(), NULL, 'api_key', 'header', $response, 'Expected Lebowski in step #' . $i);
-          $actualSteps .= 'L';
-          break;
-
-        case 'A':
-          $request = $this->requestMyContact();
-          $response = $http->send($request);
-          $this->assertAnonymousContact($response, 'Expected Anonymous Contact in step #' . $i);
-          $actualSteps .= 'A';
-          break;
-
-        case 'D':
-          $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getDemoCID());
-          $response = $http->send($request);
-          $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'api_key', 'header', $response, 'Expected demo in step #' . $i);
-          $actualSteps .= 'D';
-          break;
-
-        case ' ':
-          $actualSteps .= ' ';
-          break;
-
-        default:
-          $this->fail('Unrecognized step #' . $i);
-      }
-    }
-
-    $this->assertEquals($actualSteps, $planSteps);
-  }
-
-  /**
-   * Civi's test suite includes middleware that will add JWT tokens to outgoing requests.
-   *
-   * This test tries a few permutations with different principals ("demo", "Lebowski"),
-   * different identifier fields (authx_user, authx_contact_id), and different
-   * flows (param/header/xheader).
-   *
-   * @throws \CRM_Core_Exception
-   * @throws \GuzzleHttp\Exception\GuzzleException
-   */
-  public function testJwtMiddleware() {
-    \Civi::settings()->revert("authx_param_cred");
-
-    // HTTP GET with a specific user. Choose flow automatically.
-    $response = $this->createGuzzle()->get('civicrm/authx/id', [
-      'authx_user' => $GLOBALS['_CV']['DEMO_USER'],
-    ]);
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'jwt', 'param', $response);
-
-    // HTTP GET with a specific contact. Choose flow automatically.
-    $response = $this->createGuzzle()->get('civicrm/authx/id', [
-      'authx_contact_id' => $this->getDemoCID(),
-    ]);
-    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'jwt', 'param', $response);
-
-    // HTTP POST with a specific contact. Per-client default.
-    $response = $this->createGuzzle([
-      'authx_contact_id' => $this->getLebowskiCID(),
-    ])->post('civicrm/authx/id');
-    $this->assertMyContact($this->getLebowskiCID(), NULL, 'jwt', 'param', $response);
-
-    // Using explicit flow options...
-    foreach (['param', 'xheader', 'header'] as $flowType) {
-      \Civi::settings()->set("authx_{$flowType}_cred", ['jwt']);
-      $response = $this->createGuzzle()->get('civicrm/authx/id', [
-        'authx_contact_id' => $this->getDemoCID(),
-        'authx_flow' => $flowType,
-      ]);
-      $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'jwt', $flowType, $response);
-    }
-  }
-
-  /**
-   * The internal API `authx_login()` should be used by background services to set the active user.
-   *
-   * To test this, we call `cv ev 'authx_login(...);'` and check the resulting identity.
-   *
-   * @throws \CRM_Core_Exception
-   */
-  public function testCliServiceLogin() {
-    $withCv = function($phpStmt) {
-      $cmd = strtr('cv ev -v @PHP', ['@PHP' => escapeshellarg($phpStmt)]);
-      exec($cmd, $output, $val);
-      $fullOutput = implode("\n", $output);
-      $this->assertEquals(0, $val, "Command returned error ($cmd) ($val):\n\"$fullOutput\"");
-      return json_decode($fullOutput, TRUE);
-    };
-
-    $principals = [
-      'contactId' => $this->getDemoCID(),
-      'userId' => $this->getDemoUID(),
-      'user' => $GLOBALS['_CV']['DEMO_USER'],
-    ];
-    foreach ($principals as $principalField => $principalValue) {
-      $msg = "Logged in with $principalField=$principalValue. We should see this user as authenticated.";
-
-      $loginArgs = ['principal' => [$principalField => $principalValue]];
-      $report = $withCv(sprintf('return authx_login(%s);', var_export($loginArgs, 1)));
-      $this->assertEquals($this->getDemoCID(), $report['contactId'], $msg);
-      $this->assertEquals($this->getDemoUID(), $report['userId'], $msg);
-      $this->assertEquals('script', $report['flow'], $msg);
-      $this->assertEquals('assigned', $report['credType'], $msg);
-      $this->assertEquals(FALSE, $report['useSession'], $msg);
-    }
-
-    $invalidPrincipals = [
-      ['contactId', 999999, AuthxException::CLASS, ';Contact ID 999999 is invalid;'],
-      ['userId', 999999, AuthxException::CLASS, ';Cannot login. Failed to determine contact ID.;'],
-      ['user', 'randuser' . mt_rand(0, 32767), AuthxException::CLASS, ';Must specify principal with valid user, userId, or contactId;'],
-    ];
-    foreach ($invalidPrincipals as $invalidPrincipal) {
-      [$principalField, $principalValue, $expectExceptionClass, $expectExceptionMessage] = $invalidPrincipal;
-
-      $loginArgs = ['principal' => [$principalField => $principalValue]];
-      $report = $withCv(sprintf('try { return authx_login(%s); } catch (Exception $e) { return [get_class($e), $e->getMessage()]; }', var_export($loginArgs, 1)));
-      $this->assertTrue(isset($report[0], $report[1]), "authx_login() should fail with invalid credentials ($principalField=>$principalValue). Received array: " . json_encode($report));
-      $this->assertMatchesRegularExpression($expectExceptionMessage, $report[1], "Invalid principal ($principalField=>$principalValue) should generate exception.");
-      $this->assertEquals($expectExceptionClass, $report[0], "Invalid principal ($principalField=>$principalValue) should generate exception.");
-    }
-  }
-
-  public function testCliPipeTrustedLogin() {
-    $rpc = new BasicPipeClient('cv ev \'Civi::pipe("tl");\'');
-    $this->assertEquals('trusted', $rpc->getWelcome()['t']);
-    $this->assertEquals(['login'], $rpc->getWelcome()['l']);
-
-    $login = $rpc->call('login', ['userId' => $this->getDemoUID()]);
-    $this->assertEquals($this->getDemoCID(), $login['contactId']);
-    $this->assertEquals($this->getDemoUID(), $login['userId']);
-
-    $me = $rpc->call('api3', ['Contact', 'get', ['id' => 'user_contact_id', 'sequential' => TRUE]]);
-    $this->assertEquals($this->getDemoCID(), $me['values'][0]['contact_id']);
-  }
-
-  public function testCliPipeUntrustedLogin() {
-    $rpc = new BasicPipeClient('cv ev \'Civi::pipe("ul");\'');
-    $this->assertEquals('untrusted', $rpc->getWelcome()['u']);
-    $this->assertEquals(['login'], $rpc->getWelcome()['l']);
-
-    try {
-      $rpc->call('login', ['userId' => $this->getDemoUID()]);
-      $this->fail('Untrusted sessions should require authentication credentials');
-    }
-    catch (JsonRpcMethodException $e) {
-      $this->assertMatchesRegularExpression(';not trusted;', $e->getMessage());
-    }
-
-    $login = $rpc->call('login', ['cred' => $this->credJwt($this->getDemoCID())]);
-    $this->assertEquals($this->getDemoCID(), $login['contactId']);
-    $this->assertEquals($this->getDemoUID(), $login['userId']);
-
-    $me = $rpc->call('api3', ['Contact', 'get', ['id' => 'user_contact_id', 'sequential' => TRUE]]);
-    $this->assertEquals($this->getDemoCID(), $me['values'][0]['contact_id']);
-  }
-
-  /**
-   * Filter a request, applying the given authentication options
-   *
-   * @param \Psr\Http\Message\RequestInterface $request
-   * @param string $credType
-   *   Ex: 'pass', 'jwt', 'api_key'
-   * @param string $flowType
-   *   Ex: 'param', 'header', 'xheader'
-   * @param int $cid
-   * @return \Psr\Http\Message\RequestInterface
-   */
-  protected function applyAuth($request, $credType, $flowType, $cid) {
-    $credFunc = 'cred' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $credType));
-    $flowFunc = 'auth' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $flowType));
-    return $this->$flowFunc($request, $this->$credFunc($cid));
-  }
-
-  // ------------------------------------------------
-  // Library: Base requests
-
-  /**
-   * Make an AJAX request with info about the current contact.
-   *
-   * @return \GuzzleHttp\Psr7\Request
-   */
-  public function requestMyContact() {
-    $p = (['where' => [['id', '=', 'user_contact_id']]]);
-    $uri = (new Uri('civicrm/authx/id'))
-      ->withQuery('params=' . urlencode(json_encode($p)));
-    $req = new Request('GET', $uri);
-    return $req;
-  }
-
-  /**
-   * Assert the AJAX request provided the expected contact.
-   *
-   * @param int $cid
-   *   The expected contact ID
-   * @param int|null $uid
-   *   The expected user ID
-   * @param string $credType
-   * @param string $flow
-   * @param \Psr\Http\Message\ResponseInterface $response
-   */
-  public function assertMyContact($cid, $uid, $credType, $flow, ResponseInterface $response): void {
-    $this->assertContentType('application/json', $response);
-    $this->assertStatusCode(200, $response);
-    $j = json_decode((string) $response->getBody(), 1);
-    $formattedFailure = $this->formatFailure($response);
-    $this->assertEquals($cid, $j['contact_id'], "Response did not give expected contact ID\n" . $formattedFailure);
-    $this->assertEquals($uid, $j['user_id'], "Response did not give expected user ID\n" . $formattedFailure);
-    if ($flow !== NULL) {
-      $this->assertEquals($flow, $j['flow'], "Response did not give expected flow type\n" . $formattedFailure);
-    }
-    if ($credType !== NULL) {
-      $this->assertEquals($credType, $j['cred'], "Response did not give expected cred type\n" . $formattedFailure);
-    }
-  }
-
-  /**
-   * Assert the AJAX request provided empty contact information
-   *
-   * @param \Psr\Http\Message\ResponseInterface $response
-   * @param string $additionalMessage
-   */
-  public function assertAnonymousContact(ResponseInterface $response, $additionalMessage = ''): void {
-    $formattedFailure = $this->formatFailure($response);
-    $this->assertContentType('application/json', $response);
-    $this->assertStatusCode(200, $response);
-    $j = json_decode((string) $response->getBody(), 1);
-    if (json_last_error() !== JSON_ERROR_NONE || empty($j)) {
-      $this->fail('Malformed JSON' . $formattedFailure);
-    }
-    $this->assertTrue(array_key_exists('contact_id', $j) && $j['contact_id'] === NULL, 'contact_id should be null' . $formattedFailure . ' ' . $additionalMessage);
-    $this->assertTrue(array_key_exists('user_id', $j) && $j['user_id'] === NULL, 'user_id should be null' . $formattedFailure . ' ' . $additionalMessage);
-  }
-
-  /**
-   * Assert that the $response indicates the user cannot view the dashboard.
-   *
-   * @param \Psr\Http\Message\ResponseInterface $response
-   */
-  public function assertDashboardUnauthorized($response = NULL): void {
-    $response = $this->resolveResponse($response);
-    if (!in_array('authErrorShowsForm', $this->quirks)) {
-      $this->assertStatusCode(403, $response);
-    }
-    $this->assertFalse(
-      (bool) preg_match(';crm-dashboard-groups;', (string) $response->getBody()),
-      'Response should not contain a dashboard' . $this->formatFailure($response)
-    );
-  }
-
-  public function assertDashboardOk($response = NULL): void {
-    $response = $this->resolveResponse($response);
-    $this->assertStatusCode(200, $response);
-    $this->assertContentType('text/html', $response);
-    // If the first two assertions pass but the next fails, then... perhaps the
-    // local site permissions are wrong?
-    $this->assertTrue(
-      (bool) preg_match(';crm-dashboard-groups;', (string) $response->getBody()),
-      'Response should contain a dashboard' . $this->formatFailure($response)
-    );
-  }
-
-  // ------------------------------------------------
-  // Library: Flow functions
-
-  /**
-   * Add query parameter ("&_authx=<CRED>").
-   *
-   * @param \GuzzleHttp\Psr7\Request $request
-   * @param string $cred
-   *   The credential add to the request (e.g. "Basic ASDF==" or "Bearer FDSA").
-   * @return \GuzzleHttp\Psr7\Request
-   */
-  public function authParam(Request $request, $cred) {
-    $query = $request->getUri()->getQuery();
-    return $request->withUri(
-      $request->getUri()->withQuery($query . '&_authx=' . urlencode($cred))
-    );
-  }
-
-  /**
-   * Add query parameter ("&_authx=<CRED>&_authxSes=1").
-   *
-   * @param \GuzzleHttp\Psr7\Request $request
-   * @param string $cred
-   *   The credential add to the request (e.g. "Basic ASDF==" or "Bearer FDSA").
-   * @return \GuzzleHttp\Psr7\Request
-   */
-  public function authAuto(Request $request, $cred) {
-    $query = $request->getUri()->getQuery();
-    return $request->withUri(
-      $request->getUri()->withQuery($query . '&_authx=' . urlencode($cred) . '&_authxSes=1')
-    );
-  }
-
-  public function authLogin(Request $request, $cred) {
-    return $request->withMethod('POST')
-      ->withBody(new AppendStream([
-        stream_for('_authx=' . urlencode($cred) . '&'),
-        $request->getBody(),
-      ]));
-  }
-
-  public function authHeader(Request $request, $cred) {
-    return $request->withHeader('Authorization', $cred);
-  }
-
-  public function authXHeader(Request $request, $cred) {
-    return $request->withHeader('X-Civi-Auth', $cred);
-  }
-
-  public function authNone(Request $request, $cred) {
-    return $request;
-  }
-
-  // ------------------------------------------------
-  // Library: Credential functions
-
-  /**
-   * @param int $cid
-   * @return string
-   *   The credential add to the request (e.g. "Basic ASDF==" or "Bearer FDSA").
-   */
-  public function credPass($cid) {
-    if ($cid === $this->getDemoCID()) {
-      return 'Basic ' . base64_encode($GLOBALS['_CV']['DEMO_USER'] . ':' . $GLOBALS['_CV']['DEMO_PASS']);
-    }
-    else {
-      $this->fail("This test does have the password the requested contact.");
-    }
-  }
-
-  public function credApikey($cid) {
-    $api_key = md5(\random_bytes(16));
-    \civicrm_api3('Contact', 'create', [
-      'id' => $cid,
-      'api_key' => $api_key,
-    ]);
-    return 'Bearer ' . $api_key;
-  }
-
-  public function credJwt($cid, $expired = FALSE) {
-    if (empty(\Civi::service('crypto.registry')->findKeysByTag('SIGN'))) {
-      $this->markTestIncomplete('Cannot test JWT. No CIVICRM_SIGN_KEYS are defined.');
-    }
-    $token = \Civi::service('crypto.jwt')->encode([
-      'exp' => $expired ? time() - 60 * 60 : time() + 60 * 60,
-      'sub' => "cid:$cid",
-      'scope' => 'authx',
-    ]);
-    return 'Bearer ' . $token;
-  }
-
-  public function credNone($cid) {
-    return NULL;
-  }
-
-  /**
-   * Assert that a request was not authenticated.
-   *
-   * @param string $mode
-   *   Expect that the  'prohibited' or 'anon'
-   * @param \Psr\Http\Message\ResponseInterface $response
-   */
-  private function assertNotAuthenticated(string $mode, $response) {
-    switch ($mode) {
-      case 'anon':
-        $this->assertAnonymousContact($response);
-        break;
-
-      case 'prohibit':
-        $this->assertFailedDueToProhibition($response);
-        break;
-
-      default:
-        throw new \RuntimeException("Invalid option: mode=$mode");
-    }
-  }
-
-  /**
-   * @param \Psr\Http\Message\ResponseInterface $response
-   */
-  private function assertFailedDueToProhibition($response): void {
-    $this->assertBodyRegexp(';HTTP 401;', $response);
-    $this->assertContentType('text/plain', $response);
-    if (!in_array('sendsExcessCookies', $this->quirks)) {
-      $this->assertNoCookies($response);
-    }
-    $this->assertStatusCode(401, $response);
-
-  }
-
-  /**
-   * @param \Psr\Http\Message\ResponseInterface $response
-   */
-  private function assertNoCookies($response = NULL) {
-    $response = $this->resolveResponse($response);
-    $this->assertEmpty(
-      preg_grep('/Set-Cookie/i', array_keys($response->getHeaders())),
-      'Response should not have cookies' . $this->formatFailure($response)
-    );
-    return $this;
-  }
-
-  /**
-   * @param \Psr\Http\Message\ResponseInterface $response
-   */
-  private function assertHasCookies($response = NULL) {
-    $response = $this->resolveResponse($response);
-    $this->assertNotEmpty(
-      preg_grep('/Set-Cookie/i', array_keys($response->getHeaders())),
-      'Response should have cookies' . $this->formatFailure($response)
-    );
-    return $this;
-  }
-
-  /**
-   * @return int
-   * @throws \CRM_Core_Exception
-   */
-  private function getDemoCID(): int {
-    if (!isset(\Civi::$statics[__CLASS__]['demoId'])) {
-      \Civi::$statics[__CLASS__]['demoId'] = (int) \civicrm_api3('Contact', 'getvalue', [
-        'id' => '@user:' . $GLOBALS['_CV']['DEMO_USER'],
-        'return' => 'id',
-      ]);
-    }
-    return \Civi::$statics[__CLASS__]['demoId'];
-  }
-
-  private function getDemoUID(): int {
-    return \CRM_Core_Config::singleton()->userSystem->getUfId($GLOBALS['_CV']['DEMO_USER']);
-  }
-
-  public function getLebowskiCID() {
-    if (!isset(\Civi::$statics[__CLASS__]['lebowskiCID'])) {
-      $contact = \civicrm_api3('Contact', 'create', [
-        'contact_type' => 'Individual',
-        'first_name' => 'Jeffrey',
-        'last_name' => 'Lebowski',
-        'external_identifier' => __CLASS__,
-        'options' => [
-          'match' => 'external_identifier',
-        ],
-      ]);
-      \Civi::$statics[__CLASS__]['lebowskiCID'] = $contact['id'];
-    }
-    return \Civi::$statics[__CLASS__]['lebowskiCID'];
-  }
-
-}
diff --git a/civicrm/ext/authx/tests/phpunit/Civi/Authx/CustomFlowsTest.php b/civicrm/ext/authx/tests/phpunit/Civi/Authx/CustomFlowsTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..2521d658e3aed7b561a61ebfdfa5fddc0b8e9715
--- /dev/null
+++ b/civicrm/ext/authx/tests/phpunit/Civi/Authx/CustomFlowsTest.php
@@ -0,0 +1,102 @@
+<?php
+
+namespace Civi\Authx;
+
+use Civi\Pipe\BasicPipeClient;
+use Civi\Pipe\JsonRpcMethodException;
+
+/**
+ * Send requests using customizable flows. These don't use standard HTTP requests.
+ * Instead, they may involve authentication by external/third-party agents.
+ *
+ * The APIs `authx_login()` and `Civi::pipe()` should be focal points for customized
+ * flows. To test them, we run them in separate subprocesses (`cv ev ...`)
+ *
+ * @group e2e
+ */
+class CustomFlowsTest extends AbstractFlowsTest {
+
+  /**
+   * The internal API `authx_login()` should be used by background services to set the active user.
+   *
+   * To test this, we call `cv ev 'authx_login(...);'` and check the resulting identity.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function testCliServiceLogin() {
+    $withCv = function($phpStmt) {
+      $cmd = strtr('cv ev -v @PHP', ['@PHP' => escapeshellarg($phpStmt)]);
+      exec($cmd, $output, $val);
+      $fullOutput = implode("\n", $output);
+      $this->assertEquals(0, $val, "Command returned error ($cmd) ($val):\n\"$fullOutput\"");
+      return json_decode($fullOutput, TRUE);
+    };
+
+    $principals = [
+      'contactId' => $this->getDemoCID(),
+      'userId' => $this->getDemoUID(),
+      'user' => $GLOBALS['_CV']['DEMO_USER'],
+    ];
+    foreach ($principals as $principalField => $principalValue) {
+      $msg = "Logged in with $principalField=$principalValue. We should see this user as authenticated.";
+
+      $loginArgs = ['principal' => [$principalField => $principalValue]];
+      $report = $withCv(sprintf('return authx_login(%s);', var_export($loginArgs, 1)));
+      $this->assertEquals($this->getDemoCID(), $report['contactId'], $msg);
+      $this->assertEquals($this->getDemoUID(), $report['userId'], $msg);
+      $this->assertEquals('script', $report['flow'], $msg);
+      $this->assertEquals('assigned', $report['credType'], $msg);
+      $this->assertEquals(FALSE, $report['useSession'], $msg);
+    }
+
+    $invalidPrincipals = [
+      ['contactId', 999999, AuthxException::CLASS, ';Contact ID 999999 is invalid;'],
+      ['userId', 999999, AuthxException::CLASS, ';Cannot login. Failed to determine contact ID.;'],
+      ['user', 'randuser' . mt_rand(0, 32767), AuthxException::CLASS, ';Must specify principal with valid user, userId, or contactId;'],
+    ];
+    foreach ($invalidPrincipals as $invalidPrincipal) {
+      [$principalField, $principalValue, $expectExceptionClass, $expectExceptionMessage] = $invalidPrincipal;
+
+      $loginArgs = ['principal' => [$principalField => $principalValue]];
+      $report = $withCv(sprintf('try { return authx_login(%s); } catch (Exception $e) { return [get_class($e), $e->getMessage()]; }', var_export($loginArgs, 1)));
+      $this->assertTrue(isset($report[0], $report[1]), "authx_login() should fail with invalid credentials ($principalField=>$principalValue). Received array: " . json_encode($report));
+      $this->assertMatchesRegularExpression($expectExceptionMessage, $report[1], "Invalid principal ($principalField=>$principalValue) should generate exception.");
+      $this->assertEquals($expectExceptionClass, $report[0], "Invalid principal ($principalField=>$principalValue) should generate exception.");
+    }
+  }
+
+  public function testCliPipeTrustedLogin() {
+    $rpc = new BasicPipeClient('cv ev \'Civi::pipe("tl");\'');
+    $this->assertEquals('trusted', $rpc->getWelcome()['t']);
+    $this->assertEquals(['login'], $rpc->getWelcome()['l']);
+
+    $login = $rpc->call('login', ['userId' => $this->getDemoUID()]);
+    $this->assertEquals($this->getDemoCID(), $login['contactId']);
+    $this->assertEquals($this->getDemoUID(), $login['userId']);
+
+    $me = $rpc->call('api3', ['Contact', 'get', ['id' => 'user_contact_id', 'sequential' => TRUE]]);
+    $this->assertEquals($this->getDemoCID(), $me['values'][0]['contact_id']);
+  }
+
+  public function testCliPipeUntrustedLogin() {
+    $rpc = new BasicPipeClient('cv ev \'Civi::pipe("ul");\'');
+    $this->assertEquals('untrusted', $rpc->getWelcome()['u']);
+    $this->assertEquals(['login'], $rpc->getWelcome()['l']);
+
+    try {
+      $rpc->call('login', ['userId' => $this->getDemoUID()]);
+      $this->fail('Untrusted sessions should require authentication credentials');
+    }
+    catch (JsonRpcMethodException $e) {
+      $this->assertMatchesRegularExpression(';not trusted;', $e->getMessage());
+    }
+
+    $login = $rpc->call('login', ['cred' => $this->credJwt($this->getDemoCID())]);
+    $this->assertEquals($this->getDemoCID(), $login['contactId']);
+    $this->assertEquals($this->getDemoUID(), $login['userId']);
+
+    $me = $rpc->call('api3', ['Contact', 'get', ['id' => 'user_contact_id', 'sequential' => TRUE]]);
+    $this->assertEquals($this->getDemoCID(), $me['values'][0]['contact_id']);
+  }
+
+}
diff --git a/civicrm/ext/authx/tests/phpunit/Civi/Authx/JwtCredsTest.php b/civicrm/ext/authx/tests/phpunit/Civi/Authx/JwtCredsTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..701f9c60f57a8c789806a49cb5f23cf8045c40b0
--- /dev/null
+++ b/civicrm/ext/authx/tests/phpunit/Civi/Authx/JwtCredsTest.php
@@ -0,0 +1,97 @@
+<?php
+
+namespace Civi\Authx;
+
+/**
+ * Check that JWT credentials work in the expected ways.
+ *
+ * @group e2e
+ */
+class JwtCredsTest extends AbstractFlowsTest {
+
+  /**
+   * Send a request using a jwt that can't be decoded at all. Assert that it fails
+   *
+   * @param string $flowType
+   *   The "flow" determines how the credential is added on top of the base-request (e.g. adding a parameter or header).
+   *
+   * @dataProvider getFlowTypes
+   */
+  public function testInvalidJwt($flowType): void {
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+
+    $cred = $this->credJwt('Bearer thisisnotavalidjwt');
+
+    $flowFunc = 'auth' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $flowType));
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->$flowFunc($this->requestMyContact(), $cred);
+
+    \Civi::settings()->set("authx_{$flowType}_cred", ['jwt']);
+    $response = $http->send($request);
+    $this->assertNotAuthenticated('prohibit', $response);
+  }
+
+  /**
+   * Send a request using a jwt that has expired. Assert that it fails
+   *
+   * @param string $flowType
+   *   The "flow" determines how the credential is added on top of the base-request (e.g. adding a parameter or header).
+   *
+   * @dataProvider getFlowTypes
+   */
+  public function testExpiredJwt($flowType): void {
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+
+    $cred = $this->credJwt($this->getDemoCID(), TRUE);
+    $flowFunc = 'auth' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $flowType));
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->$flowFunc($this->requestMyContact(), $cred);
+
+    \Civi::settings()->set("authx_{$flowType}_cred", ['jwt']);
+    $response = $http->send($request);
+    $this->assertNotAuthenticated('prohibit', $response);
+  }
+
+  /**
+   * Civi's test suite includes middleware that will add JWT tokens to outgoing requests.
+   *
+   * This test tries a few permutations with different principals ("demo", "Lebowski"),
+   * different identifier fields (authx_user, authx_contact_id), and different
+   * flows (param/header/xheader).
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   */
+  public function testJwtMiddleware() {
+    \Civi::settings()->revert("authx_param_cred");
+
+    // HTTP GET with a specific user. Choose flow automatically.
+    $response = $this->createGuzzle()->get('civicrm/authx/id', [
+      'authx_user' => $GLOBALS['_CV']['DEMO_USER'],
+    ]);
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'jwt', 'param', $response);
+
+    // HTTP GET with a specific contact. Choose flow automatically.
+    $response = $this->createGuzzle()->get('civicrm/authx/id', [
+      'authx_contact_id' => $this->getDemoCID(),
+    ]);
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'jwt', 'param', $response);
+
+    // HTTP POST with a specific contact. Per-client default.
+    $response = $this->createGuzzle([
+      'authx_contact_id' => $this->getLebowskiCID(),
+    ])->post('civicrm/authx/id');
+    $this->assertMyContact($this->getLebowskiCID(), NULL, 'jwt', 'param', $response);
+
+    // Using explicit flow options...
+    foreach (['param', 'xheader', 'header'] as $flowType) {
+      \Civi::settings()->set("authx_{$flowType}_cred", ['jwt']);
+      $response = $this->createGuzzle()->get('civicrm/authx/id', [
+        'authx_contact_id' => $this->getDemoCID(),
+        'authx_flow' => $flowType,
+      ]);
+      $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'jwt', $flowType, $response);
+    }
+  }
+
+}
diff --git a/civicrm/ext/authx/tests/phpunit/Civi/Authx/MixedFlowsTest.php b/civicrm/ext/authx/tests/phpunit/Civi/Authx/MixedFlowsTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..5df227de2b44b79c887eecc35507168c06d2d8bd
--- /dev/null
+++ b/civicrm/ext/authx/tests/phpunit/Civi/Authx/MixedFlowsTest.php
@@ -0,0 +1,166 @@
+<?php
+
+namespace Civi\Authx;
+
+use GuzzleHttp\Cookie\CookieJar;
+
+/**
+ * In the MixedFlowsTest, we assume that the basic flows work -- then step out to another level.
+ * What happens when different authentication behaviors get mixed-up/criss-crossed?
+ * For example:
+ *
+ * - What happens if you send several stateless requests as different users -- without realizing
+ *   that your HTTP client is actually tracking cookies? Are they truly stateless?
+ * - What happens if you send a mix of stateless and stateful requests for different users?
+ * - What happens if you mix `Authorization:` headers for authx with `Authorization:`
+ *   headers for another layer (HTTPD/CMS/proxy)?
+ *
+ * @group e2e
+ */
+class MixedFlowsTest extends AbstractFlowsTest {
+
+  /**
+   * Create a session for $demoCID. Within the session, make a single
+   * stateless request as $lebowskiCID.
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   */
+  public function testStatefulStatelessOverlap(): void {
+    \Civi::settings()->set("authx_login_cred", ['api_key']);
+    \Civi::settings()->set("authx_header_cred", ['api_key']);
+
+    $cookieJar = new CookieJar();
+    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
+
+    // Phase 1: Login, create a session.
+    $response = $http->post('civicrm/authx/login', [
+      'form_params' => ['_authx' => $this->credApikey($this->getDemoCID())],
+    ]);
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'api_key', 'login', $response);
+    $this->assertHasCookies($response);
+    $response = $http->get('civicrm/authx/id');
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'api_key', 'login', $response);
+
+    // Phase 2: Make a single, stateless request with different creds
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getLebowskiCID());
+    $response = $http->send($request);
+    $this->assertFailedDueToProhibition($response);
+    // The following assertion merely identifies current behavior. If you can get it working generally, then huzza.
+    $this->assertBodyRegexp(';Session already active;', $response);
+    // $this->assertMyContact($this->getLebowskiCID(), NULL, $response);
+    // $this->assertNoCookies($response);
+
+    // Phase 3: Original session is still valid
+    $response = $http->get('civicrm/authx/id');
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'api_key', 'login', $response);
+  }
+
+  /**
+   * This consumer intends to make stateless requests with a handful of different identities,
+   * but their browser happens to be cookie-enabled. Ensure that identities do not leak between requests.
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   */
+  public function testMultipleStateless(): void {
+    \Civi::settings()->set("authx_header_cred", ['api_key']);
+    $cookieJar = new CookieJar();
+    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
+
+    /** @var \Psr\Http\Message\RequestInterface $request */
+
+    // Alternate calls among (A)nonymous, (D)emo, and (L)ebowski
+    $planSteps = 'LADA LDLD DDLLAA';
+    $actualSteps = '';
+
+    for ($i = 0; $i < strlen($planSteps); $i++) {
+      switch ($planSteps[$i]) {
+        case 'L':
+          $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getLebowskiCID());
+          $response = $http->send($request);
+          $this->assertMyContact($this->getLebowskiCID(), NULL, 'api_key', 'header', $response, 'Expected Lebowski in step #' . $i);
+          $actualSteps .= 'L';
+          break;
+
+        case 'A':
+          $request = $this->requestMyContact();
+          $response = $http->send($request);
+          $this->assertAnonymousContact($response, 'Expected Anonymous Contact in step #' . $i);
+          $actualSteps .= 'A';
+          break;
+
+        case 'D':
+          $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getDemoCID());
+          $response = $http->send($request);
+          $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), 'api_key', 'header', $response, 'Expected demo in step #' . $i);
+          $actualSteps .= 'D';
+          break;
+
+        case ' ':
+          $actualSteps .= ' ';
+          break;
+
+        default:
+          $this->fail('Unrecognized step #' . $i);
+      }
+    }
+
+    $this->assertEquals($actualSteps, $planSteps);
+  }
+
+  /**
+   * Suppose a deployment has two layers of authorization:
+   *
+   * (1) a generic/site-wide HTTP restriction (perhaps enforced by a reverse proxy)
+   * (2) anything/everything else (CMS/login-form/parameter/X-Civi-Auth stuff).
+   *
+   * Layer (1) has an `Authorization:` header that should be ignored by `authx`.
+   *
+   * This test submits both layer (1) and layer (2) credentials and ensures that authx respects
+   * the layer (2).
+   */
+  public function testIgnoredHeaderAuthorization() {
+    // We may submit some other credential - it will be used.
+    $flowType = 'param';
+    $credType = 'api_key';
+
+    \Civi::settings()->set("authx_header_cred", []);
+    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
+
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+
+    // We submit both the irrelevant `Authorization:` and the relevant `?_authx=...` (DemoCID).
+    $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getLebowskiCID());
+    $request = $this->applyAuth($request, $credType, $flowType, $this->getDemoCID());
+    // $request = $request->withAddedHeader('Authorization', $irrelevantAuthorization);
+    $response = $http->send($request);
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
+    if (!in_array('sendsExcessCookies', $this->quirks)) {
+      $this->assertNoCookies($response);
+    }
+  }
+
+  /**
+   * Similar to testIgnoredHeaderAuthorization(), but the Civi/CMS user is anonymous.
+   */
+  public function testIgnoredHeaderAuthorization_anon() {
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+
+    /** @var \Psr\Http\Message\RequestInterface $request */
+
+    // Variant 1: The `Authorization:` header is ignored (even if the content is totally fake/inauthentic).
+    \Civi::settings()->set("authx_header_cred", []);
+    $request = $this->requestMyContact()->withAddedHeader('Authorization', 'Basic ' . base64_encode("not:real"));
+    $response = $http->send($request);
+    $this->assertAnonymousContact($response);
+
+    // Variant 2: The `Authorization:` header is ignored (even if the content is sorta-real-ish for LebowskiCID).
+    \Civi::settings()->set("authx_header_cred", []);
+    $request = $this->applyAuth($this->requestMyContact(), 'api_key', 'header', $this->getLebowskiCID());
+    $response = $http->send($request);
+    $this->assertAnonymousContact($response);
+  }
+
+}
diff --git a/civicrm/ext/authx/tests/phpunit/Civi/Authx/StatefulFlowsTest.php b/civicrm/ext/authx/tests/phpunit/Civi/Authx/StatefulFlowsTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..ec00197b9b459f65f47871f585bb311055e3293d
--- /dev/null
+++ b/civicrm/ext/authx/tests/phpunit/Civi/Authx/StatefulFlowsTest.php
@@ -0,0 +1,132 @@
+<?php
+
+namespace Civi\Authx;
+
+use GuzzleHttp\Cookie\CookieJar;
+
+/**
+ * Send requests using stateful authentication mechanisms (such as `login`).
+ *
+ * @group e2e
+ */
+class StatefulFlowsTest extends AbstractFlowsTest {
+
+  /**
+   * The login flow allows you use 'civicrm/authx/login' and 'civicrm/authx/logout'
+   * to setup/teardown a session.
+   *
+   * @param string $credType
+   *   The type of credential to put in the login request.
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   * @dataProvider getCredTypes
+   */
+  public function testStatefulLoginAllowed($credType): void {
+    $flowType = 'login';
+    $credFunc = 'cred' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $credType));
+
+    // Phase 1: Some pages are not accessible.
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+    $http->get('civicrm/user');
+    $this->assertDashboardUnauthorized();
+
+    // Phase 2: Request succeeds if this credential type is enabled
+    $cookieJar = new CookieJar();
+    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
+    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
+    $response = $http->post('civicrm/authx/login', [
+      'form_params' => ['_authx' => $this->$credFunc($this->getDemoCID())],
+    ]);
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
+    $this->assertHasCookies($response);
+
+    // Phase 3: We can use cookies to request other pages
+    $response = $http->get('civicrm/authx/id');
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
+    $response = $http->get('civicrm/user');
+    $this->assertDashboardOk();
+
+    // Phase 4: After logout, requests should fail.
+    $oldCookies = clone $cookieJar;
+    $http->get('civicrm/authx/logout');
+    $this->assertStatusCode(200);
+    $http->get('civicrm/user');
+    $this->assertDashboardUnauthorized();
+
+    $httpHaxor = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $oldCookies]);
+    $httpHaxor->get('civicrm/user');
+    $this->assertDashboardUnauthorized();
+  }
+
+  /**
+   * The login flow 'civicrm/authx/login' may be prohibited by policy.
+   *
+   * @param string $credType
+   *   The type of credential to put in the login request.
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   * @dataProvider getCredTypes
+   */
+  public function testStatefulLoginProhibited($credType): void {
+    $flowType = 'login';
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+    $credFunc = 'cred' . ucfirst(preg_replace(';[^a-zA-Z0-9];', '', $credType));
+
+    \Civi::settings()->set("authx_{$flowType}_cred", []);
+    $response = $http->post('civicrm/authx/login', [
+      'form_params' => ['_authx' => $this->$credFunc($this->getDemoCID())],
+    ]);
+    $this->assertFailedDueToProhibition($response);
+  }
+
+  /**
+   * The auto-login flow allows you to request a specific page with specific
+   * credentials. The new session is setup, and the page is displayed.
+   *
+   * @param string $credType
+   *   The type of credential to put in the login request.
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   * @dataProvider getCredTypes
+   */
+  public function testStatefulAutoAllowed($credType): void {
+    $flowType = 'auto';
+    $cookieJar = new CookieJar();
+    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
+
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getDemoCID());
+
+    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
+    $this->assertEquals(0, $cookieJar->count());
+    $response = $http->send($request);
+    $this->assertTrue($cookieJar->count() >= 1);
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
+
+    // FIXME: Assert that re-using cookies yields correct result.
+  }
+
+  /**
+   * The auto-login flow allows you to request a specific page with specific
+   * credentials. The new session is setup, and the page is displayed.
+   *
+   * @param string $credType
+   *   The type of credential to put in the login request.
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   * @dataProvider getCredTypes
+   */
+  public function testStatefulAutoProhibited($credType): void {
+    $flowType = 'auto';
+    $cookieJar = new CookieJar();
+    $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => $cookieJar]);
+
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getDemoCID());
+
+    \Civi::settings()->set("authx_{$flowType}_cred", []);
+    $response = $http->send($request);
+    $this->assertFailedDueToProhibition($response);
+  }
+
+}
diff --git a/civicrm/ext/authx/tests/phpunit/Civi/Authx/StatelessFlowsTest.php b/civicrm/ext/authx/tests/phpunit/Civi/Authx/StatelessFlowsTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..0e3bf8b54008aec698233daf2c7be6fccaa15111
--- /dev/null
+++ b/civicrm/ext/authx/tests/phpunit/Civi/Authx/StatelessFlowsTest.php
@@ -0,0 +1,141 @@
+<?php
+
+namespace Civi\Authx;
+
+/**
+ * Send requests using stateless authentication mechanisms (such as `header`, `xheader`, and
+ * `param`).
+ *
+ * @group e2e
+ */
+class StatelessFlowsTest extends AbstractFlowsTest {
+
+  public function getStatelessExamples() {
+    $exs = [];
+    $exs[] = ['pass', 'param'];
+    $exs[] = ['pass', 'header'];
+    $exs[] = ['pass', 'xheader'];
+    $exs[] = ['api_key', 'param'];
+    $exs[] = ['api_key', 'header'];
+    $exs[] = ['api_key', 'xheader'];
+    $exs[] = ['jwt', 'param'];
+    $exs[] = ['jwt', 'header'];
+    $exs[] = ['jwt', 'xheader'];
+    return $exs;
+  }
+
+  public function testAnonymous(): void {
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->requestMyContact();
+    $response = $http->send($request);
+    $this->assertAnonymousContact($response);
+  }
+
+  /**
+   * Send a request using a stateless protocol. Assert that identities are setup correctly.
+   *
+   * @param string $credType
+   *   The type of credential to put in the `Authorization:` header.
+   * @param string $flowType
+   *   The "flow" determines how the credential is added on top of the base-request (e.g. adding a parameter or header).
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   * @dataProvider getStatelessExamples
+   */
+  public function testStatelessContactOnly($credType, $flowType): void {
+    if ($credType === 'pass') {
+      $this->assertTrue(TRUE, 'No need to test password credentials with non-user contacts');
+      return;
+    }
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getLebowskiCID());
+
+    // Phase 1: Request fails if this credential type is not enabled
+    \Civi::settings()->set("authx_{$flowType}_cred", []);
+    $response = $http->send($request);
+    $this->assertNotAuthenticated($flowType === 'header' ? 'anon' : 'prohibit', $response);
+
+    // Phase 2: Request succeeds if this credential type is enabled
+    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
+    $response = $http->send($request);
+    $this->assertMyContact($this->getLebowskiCID(), NULL, $credType, $flowType, $response);
+    if (!in_array('sendsExcessCookies', $this->quirks)) {
+      $this->assertNoCookies($response);
+    }
+  }
+
+  /**
+   * Send a request using a stateless protocol. Assert that identities are setup correctly.
+   *
+   * @param string $credType
+   *   The type of credential to put in the `Authorization:` header.
+   * @param string $flowType
+   *   The "flow" determines how the credential is added on top of the base-request (e.g. adding a parameter or header).
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   * @dataProvider getStatelessExamples
+   */
+  public function testStatelessUserContact($credType, $flowType): void {
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getDemoCID());
+
+    // Phase 1: Request fails if this credential type is not enabled
+    \Civi::settings()->set("authx_{$flowType}_cred", []);
+    $response = $http->send($request);
+    $this->assertNotAuthenticated($flowType === 'header' ? 'anon' : 'prohibit', $response);
+
+    // Phase 2: Request succeeds if this credential type is enabled
+    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
+    $response = $http->send($request);
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
+    if (!in_array('sendsExcessCookies', $this->quirks)) {
+      $this->assertNoCookies($response);
+    }
+  }
+
+  /**
+   * The setting "authx_guard" may be used to require (or not require) the site_key.
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \GuzzleHttp\Exception\GuzzleException
+   */
+  public function testStatelessGuardSiteKey() {
+    if (!defined('CIVICRM_SITE_KEY')) {
+      $this->markTestIncomplete("Cannot run test without CIVICRM_SITE_KEY");
+    }
+
+    [$credType, $flowType] = ['pass', 'header'];
+    $http = $this->createGuzzle(['http_errors' => FALSE]);
+    \Civi::settings()->set("authx_{$flowType}_cred", [$credType]);
+
+    /** @var \Psr\Http\Message\RequestInterface $request */
+    $request = $this->applyAuth($this->requestMyContact(), $credType, $flowType, $this->getDemoCID());
+
+    // Request OK. Policy requires site_key, and we have one.
+    \Civi::settings()->set("authx_guards", ['site_key']);
+    $response = $http->send($request->withHeader('X-Civi-Key', CIVICRM_SITE_KEY));
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
+
+    // Request OK. Policy does not require site_key, and we do not have one
+    \Civi::settings()->set("authx_guards", []);
+    $response = $http->send($request);
+    $this->assertMyContact($this->getDemoCID(), $this->getDemoUID(), $credType, $flowType, $response);
+
+    // Request fails. Policy requires site_key, but we don't have the wrong value.
+    \Civi::settings()->set("authx_guards", ['site_key']);
+    $response = $http->send($request->withHeader('X-Civi-Key', 'not-the-site-key'));
+    $this->assertFailedDueToProhibition($response);
+
+    // Request fails. Policy requires site_key, but we don't have one.
+    \Civi::settings()->set("authx_guards", ['site_key']);
+    $response = $http->send($request);
+    $this->assertFailedDueToProhibition($response);
+  }
+
+}
diff --git a/civicrm/ext/civi_campaign/info.xml b/civicrm/ext/civi_campaign/info.xml
index 0cc2591e2adb385faab597c9e08c16a3c787ce76..2e101018318c7595f8f5b6d136ea1662a15ac20c 100644
--- a/civicrm/ext/civi_campaign/info.xml
+++ b/civicrm/ext/civi_campaign/info.xml
@@ -12,14 +12,14 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/campaign/what-is-civicampaign/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Core Component</comments>
   <upgrader>CRM_Extension_Upgrader_Component</upgrader>
diff --git a/civicrm/ang/crmCaseType.ang.php b/civicrm/ext/civi_case/ang/crmCaseType.ang.php
similarity index 60%
rename from civicrm/ang/crmCaseType.ang.php
rename to civicrm/ext/civi_case/ang/crmCaseType.ang.php
index 62ba2a55c378a15d85091cff40fb3f73b3c52640..3cb411ac77a0d075caf04f24de91c28880d286c6 100644
--- a/civicrm/ang/crmCaseType.ang.php
+++ b/civicrm/ext/civi_case/ang/crmCaseType.ang.php
@@ -1,9 +1,7 @@
 <?php
-// This file declares an Angular module which can be autoloaded
-// ODDITY: This only loads if CiviCase is active.
+// This file declares crmCaseType Angular module.
 
 return [
-  'ext' => 'civicrm',
   'js' => ['ang/crmCaseType.js'],
   'css' => ['ang/crmCaseType.css'],
   'partials' => ['ang/crmCaseType'],
diff --git a/civicrm/ang/crmCaseType.css b/civicrm/ext/civi_case/ang/crmCaseType.css
similarity index 100%
rename from civicrm/ang/crmCaseType.css
rename to civicrm/ext/civi_case/ang/crmCaseType.css
diff --git a/civicrm/ang/crmCaseType.js b/civicrm/ext/civi_case/ang/crmCaseType.js
similarity index 100%
rename from civicrm/ang/crmCaseType.js
rename to civicrm/ext/civi_case/ang/crmCaseType.js
diff --git a/civicrm/ang/crmCaseType/activityTypesTable.html b/civicrm/ext/civi_case/ang/crmCaseType/activityTypesTable.html
similarity index 100%
rename from civicrm/ang/crmCaseType/activityTypesTable.html
rename to civicrm/ext/civi_case/ang/crmCaseType/activityTypesTable.html
diff --git a/civicrm/ang/crmCaseType/caseTypeDetails.html b/civicrm/ext/civi_case/ang/crmCaseType/caseTypeDetails.html
similarity index 100%
rename from civicrm/ang/crmCaseType/caseTypeDetails.html
rename to civicrm/ext/civi_case/ang/crmCaseType/caseTypeDetails.html
diff --git a/civicrm/ang/crmCaseType/edit.html b/civicrm/ext/civi_case/ang/crmCaseType/edit.html
similarity index 100%
rename from civicrm/ang/crmCaseType/edit.html
rename to civicrm/ext/civi_case/ang/crmCaseType/edit.html
diff --git a/civicrm/ang/crmCaseType/list.html b/civicrm/ext/civi_case/ang/crmCaseType/list.html
similarity index 100%
rename from civicrm/ang/crmCaseType/list.html
rename to civicrm/ext/civi_case/ang/crmCaseType/list.html
diff --git a/civicrm/ang/crmCaseType/rolesTable.html b/civicrm/ext/civi_case/ang/crmCaseType/rolesTable.html
similarity index 100%
rename from civicrm/ang/crmCaseType/rolesTable.html
rename to civicrm/ext/civi_case/ang/crmCaseType/rolesTable.html
diff --git a/civicrm/ang/crmCaseType/sequenceTable.html b/civicrm/ext/civi_case/ang/crmCaseType/sequenceTable.html
similarity index 100%
rename from civicrm/ang/crmCaseType/sequenceTable.html
rename to civicrm/ext/civi_case/ang/crmCaseType/sequenceTable.html
diff --git a/civicrm/ang/crmCaseType/statusTable.html b/civicrm/ext/civi_case/ang/crmCaseType/statusTable.html
similarity index 100%
rename from civicrm/ang/crmCaseType/statusTable.html
rename to civicrm/ext/civi_case/ang/crmCaseType/statusTable.html
diff --git a/civicrm/ang/crmCaseType/timelineTable.html b/civicrm/ext/civi_case/ang/crmCaseType/timelineTable.html
similarity index 100%
rename from civicrm/ang/crmCaseType/timelineTable.html
rename to civicrm/ext/civi_case/ang/crmCaseType/timelineTable.html
diff --git a/civicrm/ext/civi_case/info.xml b/civicrm/ext/civi_case/info.xml
index 9f0fca3b2a736b4aa442f742635878413bc10d6d..ad6a96c5fd9aab3bcae6416c4d95f42e662eb842 100644
--- a/civicrm/ext/civi_case/info.xml
+++ b/civicrm/ext/civi_case/info.xml
@@ -12,14 +12,14 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/case-management/what-is-civicase/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Core Component</comments>
   <upgrader>CRM_Extension_Upgrader_Component</upgrader>
@@ -28,6 +28,7 @@
     <psr4 prefix="Civi\" path="Civi"/>
   </classloader>
   <mixins>
+    <mixin>ang-php@1.0.0</mixin>
     <mixin>scan-classes@1.0.0</mixin>
   </mixins>
   <civix>
diff --git a/civicrm/ext/civi_contribute/Civi/Api4/Premium.php b/civicrm/ext/civi_contribute/Civi/Api4/Premium.php
new file mode 100644
index 0000000000000000000000000000000000000000..2957c76350c5a3767963679cc4cbca4f8d53de0b
--- /dev/null
+++ b/civicrm/ext/civi_contribute/Civi/Api4/Premium.php
@@ -0,0 +1,23 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4;
+
+/**
+ * Premiums Product entity.
+ *
+ * @since 5.69
+ * @package Civi\Api4
+ */
+class Premium extends Generic\DAOEntity {
+
+}
diff --git a/civicrm/ext/civi_contribute/Civi/Api4/PremiumsProduct.php b/civicrm/ext/civi_contribute/Civi/Api4/PremiumsProduct.php
new file mode 100644
index 0000000000000000000000000000000000000000..0824491eebb567dc18fb430477dd23f916f1522c
--- /dev/null
+++ b/civicrm/ext/civi_contribute/Civi/Api4/PremiumsProduct.php
@@ -0,0 +1,23 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4;
+
+/**
+ * Premiums Product entity.
+ *
+ * @since 5.69
+ * @package Civi\Api4
+ */
+class PremiumsProduct extends Generic\DAOEntity {
+
+}
diff --git a/civicrm/ext/civi_contribute/info.xml b/civicrm/ext/civi_contribute/info.xml
index b616f14fb2f6ba37321dac3f66e42ea08e354607..1bc6bdb83db4dee7add823b3e3e81843bee1e9f2 100644
--- a/civicrm/ext/civi_contribute/info.xml
+++ b/civicrm/ext/civi_contribute/info.xml
@@ -12,14 +12,14 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/contributions/what-is-civicontribute/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Core Component</comments>
   <upgrader>CRM_Extension_Upgrader_Component</upgrader>
diff --git a/civicrm/ext/civi_event/info.xml b/civicrm/ext/civi_event/info.xml
index b0058f13758ea6f1bef82d43d13b798dd70ed86a..41927d6e43b791e90f5a29c25b775cece63edef4 100644
--- a/civicrm/ext/civi_event/info.xml
+++ b/civicrm/ext/civi_event/info.xml
@@ -12,14 +12,14 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/events/what-is-civievent</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Core Component</comments>
   <upgrader>CRM_Extension_Upgrader_Component</upgrader>
diff --git a/civicrm/ext/civi_mail/Civi/Api4/MailingComponent.php b/civicrm/ext/civi_mail/Civi/Api4/MailingComponent.php
new file mode 100644
index 0000000000000000000000000000000000000000..51920b362759c8b9738440079d733a9181e285ea
--- /dev/null
+++ b/civicrm/ext/civi_mail/Civi/Api4/MailingComponent.php
@@ -0,0 +1,21 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+namespace Civi\Api4;
+
+/**
+ * MailingComponent
+ *
+ * @searchable secondary
+ * @since 5.69
+ * @package Civi\Api4
+ */
+class MailingComponent extends Generic\DAOEntity {
+}
diff --git a/civicrm/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.json b/civicrm/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.json
deleted file mode 100644
index fc0020cc18744d22e34aafa0da42bb7196d9dd28..0000000000000000000000000000000000000000
--- a/civicrm/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "type": "search",
-    "title": "Email Bounce History",
-    "icon": "fa-list-alt",
-    "server_route": "civicrm/contact/view/bounces",
-    "permission": "access CiviCRM"
-}
diff --git a/civicrm/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.php b/civicrm/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..c77aa044a2cd9a3a6d2382696bd13a44051b5ced
--- /dev/null
+++ b/civicrm/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.php
@@ -0,0 +1,8 @@
+<?php
+return [
+  'type' => 'search',
+  'title' => ts('Email Bounce History'),
+  'icon' => 'fa-list-alt',
+  'server_route' => 'civicrm/contact/view/bounces',
+  'permission' => 'access CiviCRM',
+];
diff --git a/civicrm/ang/crmMailing.ang.php b/civicrm/ext/civi_mail/ang/crmMailing.ang.php
similarity index 80%
rename from civicrm/ang/crmMailing.ang.php
rename to civicrm/ext/civi_mail/ang/crmMailing.ang.php
index e93dca1272074d07c8c9c317cd599b437190739f..b4f93c346fdf3d189cf0502c877ca38b33dc62e8 100644
--- a/civicrm/ang/crmMailing.ang.php
+++ b/civicrm/ext/civi_mail/ang/crmMailing.ang.php
@@ -1,9 +1,7 @@
 <?php
-// This file declares an Angular module which can be autoloaded
-// ODDITY: Only loads if you have CiviMail permissions.
+// This file declares crmMailing Angular module.
 
 return [
-  'ext' => 'civicrm',
   'js' => [
     'ang/crmMailing.js',
     'ang/crmMailing/*.js',
diff --git a/civicrm/ang/crmMailing.css b/civicrm/ext/civi_mail/ang/crmMailing.css
similarity index 100%
rename from civicrm/ang/crmMailing.css
rename to civicrm/ext/civi_mail/ang/crmMailing.css
diff --git a/civicrm/ang/crmMailing.js b/civicrm/ext/civi_mail/ang/crmMailing.js
similarity index 100%
rename from civicrm/ang/crmMailing.js
rename to civicrm/ext/civi_mail/ang/crmMailing.js
diff --git a/civicrm/ang/crmMailing/BlockApprove.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockApprove.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockApprove.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockApprove.html
diff --git a/civicrm/ang/crmMailing/BlockApprove.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockApprove.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockApprove.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockApprove.js
diff --git a/civicrm/ang/crmMailing/BlockHeaderFooter.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockHeaderFooter.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockHeaderFooter.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockHeaderFooter.html
diff --git a/civicrm/ang/crmMailing/BlockHeaderFooter.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockHeaderFooter.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockHeaderFooter.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockHeaderFooter.js
diff --git a/civicrm/ang/crmMailing/BlockMailing.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockMailing.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockMailing.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockMailing.html
diff --git a/civicrm/ang/crmMailing/BlockMailing.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockMailing.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockMailing.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockMailing.js
diff --git a/civicrm/ang/crmMailing/BlockPreview.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockPreview.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockPreview.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockPreview.html
diff --git a/civicrm/ang/crmMailing/BlockPreview.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockPreview.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockPreview.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockPreview.js
diff --git a/civicrm/ang/crmMailing/BlockPublication.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockPublication.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockPublication.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockPublication.html
diff --git a/civicrm/ang/crmMailing/BlockPublication.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockPublication.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockPublication.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockPublication.js
diff --git a/civicrm/ang/crmMailing/BlockRecipients.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockRecipients.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockRecipients.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockRecipients.html
diff --git a/civicrm/ang/crmMailing/BlockRecipients.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockRecipients.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockRecipients.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockRecipients.js
diff --git a/civicrm/ang/crmMailing/BlockRecipientsMultiline.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockRecipientsMultiline.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockRecipientsMultiline.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockRecipientsMultiline.html
diff --git a/civicrm/ang/crmMailing/BlockRecipientsMultiline.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockRecipientsMultiline.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockRecipientsMultiline.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockRecipientsMultiline.js
diff --git a/civicrm/ang/crmMailing/BlockResponses.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockResponses.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockResponses.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockResponses.html
diff --git a/civicrm/ang/crmMailing/BlockResponses.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockResponses.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockResponses.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockResponses.js
diff --git a/civicrm/ang/crmMailing/BlockReview.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockReview.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockReview.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockReview.html
diff --git a/civicrm/ang/crmMailing/BlockReview.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockReview.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockReview.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockReview.js
diff --git a/civicrm/ang/crmMailing/BlockSchedule.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockSchedule.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockSchedule.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockSchedule.html
diff --git a/civicrm/ang/crmMailing/BlockSchedule.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockSchedule.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockSchedule.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockSchedule.js
diff --git a/civicrm/ang/crmMailing/BlockSummary.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockSummary.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockSummary.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockSummary.html
diff --git a/civicrm/ang/crmMailing/BlockSummary.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockSummary.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockSummary.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockSummary.js
diff --git a/civicrm/ang/crmMailing/BlockTemplates.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockTemplates.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockTemplates.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockTemplates.html
diff --git a/civicrm/ang/crmMailing/BlockTemplates.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockTemplates.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockTemplates.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockTemplates.js
diff --git a/civicrm/ang/crmMailing/BlockTracking.html b/civicrm/ext/civi_mail/ang/crmMailing/BlockTracking.html
similarity index 100%
rename from civicrm/ang/crmMailing/BlockTracking.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockTracking.html
diff --git a/civicrm/ang/crmMailing/BlockTracking.js b/civicrm/ext/civi_mail/ang/crmMailing/BlockTracking.js
similarity index 100%
rename from civicrm/ang/crmMailing/BlockTracking.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BlockTracking.js
diff --git a/civicrm/ang/crmMailing/BodyHtml.html b/civicrm/ext/civi_mail/ang/crmMailing/BodyHtml.html
similarity index 100%
rename from civicrm/ang/crmMailing/BodyHtml.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BodyHtml.html
diff --git a/civicrm/ang/crmMailing/BodyHtml.js b/civicrm/ext/civi_mail/ang/crmMailing/BodyHtml.js
similarity index 100%
rename from civicrm/ang/crmMailing/BodyHtml.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BodyHtml.js
diff --git a/civicrm/ang/crmMailing/BodyText.html b/civicrm/ext/civi_mail/ang/crmMailing/BodyText.html
similarity index 100%
rename from civicrm/ang/crmMailing/BodyText.html
rename to civicrm/ext/civi_mail/ang/crmMailing/BodyText.html
diff --git a/civicrm/ang/crmMailing/BodyText.js b/civicrm/ext/civi_mail/ang/crmMailing/BodyText.js
similarity index 100%
rename from civicrm/ang/crmMailing/BodyText.js
rename to civicrm/ext/civi_mail/ang/crmMailing/BodyText.js
diff --git a/civicrm/ang/crmMailing/CreateMailingCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/CreateMailingCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/CreateMailingCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/CreateMailingCtrl.js
diff --git a/civicrm/ang/crmMailing/EditMailingCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/EditMailingCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl.js
diff --git a/civicrm/ang/crmMailing/EditMailingCtrl/2step.html b/civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/2step.html
similarity index 100%
rename from civicrm/ang/crmMailing/EditMailingCtrl/2step.html
rename to civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/2step.html
diff --git a/civicrm/ang/crmMailing/EditMailingCtrl/base.html b/civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/base.html
similarity index 100%
rename from civicrm/ang/crmMailing/EditMailingCtrl/base.html
rename to civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/base.html
diff --git a/civicrm/ang/crmMailing/EditMailingCtrl/unified.html b/civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/unified.html
similarity index 100%
rename from civicrm/ang/crmMailing/EditMailingCtrl/unified.html
rename to civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/unified.html
diff --git a/civicrm/ang/crmMailing/EditMailingCtrl/unified2.html b/civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/unified2.html
similarity index 100%
rename from civicrm/ang/crmMailing/EditMailingCtrl/unified2.html
rename to civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/unified2.html
diff --git a/civicrm/ang/crmMailing/EditMailingCtrl/wizard.html b/civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/wizard.html
similarity index 100%
rename from civicrm/ang/crmMailing/EditMailingCtrl/wizard.html
rename to civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/wizard.html
diff --git a/civicrm/ang/crmMailing/EditMailingCtrl/workflow.html b/civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/workflow.html
similarity index 100%
rename from civicrm/ang/crmMailing/EditMailingCtrl/workflow.html
rename to civicrm/ext/civi_mail/ang/crmMailing/EditMailingCtrl/workflow.html
diff --git a/civicrm/ang/crmMailing/EditRecipCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/EditRecipCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/EditRecipCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/EditRecipCtrl.js
diff --git a/civicrm/ang/crmMailing/EditRecipOptionsDialogCtrl.html b/civicrm/ext/civi_mail/ang/crmMailing/EditRecipOptionsDialogCtrl.html
similarity index 100%
rename from civicrm/ang/crmMailing/EditRecipOptionsDialogCtrl.html
rename to civicrm/ext/civi_mail/ang/crmMailing/EditRecipOptionsDialogCtrl.html
diff --git a/civicrm/ang/crmMailing/EditRecipOptionsDialogCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/EditRecipOptionsDialogCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/EditRecipOptionsDialogCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/EditRecipOptionsDialogCtrl.js
diff --git a/civicrm/ang/crmMailing/EditUnsubGroupCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/EditUnsubGroupCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/EditUnsubGroupCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/EditUnsubGroupCtrl.js
diff --git a/civicrm/ang/crmMailing/EmailAddrCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/EmailAddrCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/EmailAddrCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/EmailAddrCtrl.js
diff --git a/civicrm/ang/crmMailing/EmailBodyCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/EmailBodyCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/EmailBodyCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/EmailBodyCtrl.js
diff --git a/civicrm/ang/crmMailing/EmailBodyCtrl/tokenAlert.html b/civicrm/ext/civi_mail/ang/crmMailing/EmailBodyCtrl/tokenAlert.html
similarity index 100%
rename from civicrm/ang/crmMailing/EmailBodyCtrl/tokenAlert.html
rename to civicrm/ext/civi_mail/ang/crmMailing/EmailBodyCtrl/tokenAlert.html
diff --git a/civicrm/ang/crmMailing/FromAddress.js b/civicrm/ext/civi_mail/ang/crmMailing/FromAddress.js
similarity index 100%
rename from civicrm/ang/crmMailing/FromAddress.js
rename to civicrm/ext/civi_mail/ang/crmMailing/FromAddress.js
diff --git a/civicrm/ang/crmMailing/ListMailingsCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/ListMailingsCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/ListMailingsCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/ListMailingsCtrl.js
diff --git a/civicrm/ang/crmMailing/MsgTemplateCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/MsgTemplateCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/MsgTemplateCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/MsgTemplateCtrl.js
diff --git a/civicrm/ang/crmMailing/PreviewComponentCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/PreviewComponentCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewComponentCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewComponentCtrl.js
diff --git a/civicrm/ang/crmMailing/PreviewComponentDialogCtrl.html b/civicrm/ext/civi_mail/ang/crmMailing/PreviewComponentDialogCtrl.html
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewComponentDialogCtrl.html
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewComponentDialogCtrl.html
diff --git a/civicrm/ang/crmMailing/PreviewComponentDialogCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/PreviewComponentDialogCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewComponentDialogCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewComponentDialogCtrl.js
diff --git a/civicrm/ang/crmMailing/PreviewMailingDialogCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/PreviewMailingDialogCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewMailingDialogCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewMailingDialogCtrl.js
diff --git a/civicrm/ang/crmMailing/PreviewMgr/full.html b/civicrm/ext/civi_mail/ang/crmMailing/PreviewMgr/full.html
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewMgr/full.html
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewMgr/full.html
diff --git a/civicrm/ang/crmMailing/PreviewMgr/html.html b/civicrm/ext/civi_mail/ang/crmMailing/PreviewMgr/html.html
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewMgr/html.html
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewMgr/html.html
diff --git a/civicrm/ang/crmMailing/PreviewMgr/text.html b/civicrm/ext/civi_mail/ang/crmMailing/PreviewMgr/text.html
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewMgr/text.html
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewMgr/text.html
diff --git a/civicrm/ang/crmMailing/PreviewRecipCtrl.html b/civicrm/ext/civi_mail/ang/crmMailing/PreviewRecipCtrl.html
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewRecipCtrl.html
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewRecipCtrl.html
diff --git a/civicrm/ang/crmMailing/PreviewRecipCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/PreviewRecipCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/PreviewRecipCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/PreviewRecipCtrl.js
diff --git a/civicrm/ang/crmMailing/RadioDate.js b/civicrm/ext/civi_mail/ang/crmMailing/RadioDate.js
similarity index 100%
rename from civicrm/ang/crmMailing/RadioDate.js
rename to civicrm/ext/civi_mail/ang/crmMailing/RadioDate.js
diff --git a/civicrm/ang/crmMailing/ReviewBool.js b/civicrm/ext/civi_mail/ang/crmMailing/ReviewBool.js
similarity index 100%
rename from civicrm/ang/crmMailing/ReviewBool.js
rename to civicrm/ext/civi_mail/ang/crmMailing/ReviewBool.js
diff --git a/civicrm/ang/crmMailing/SaveMsgTemplateDialogCtrl.html b/civicrm/ext/civi_mail/ang/crmMailing/SaveMsgTemplateDialogCtrl.html
similarity index 100%
rename from civicrm/ang/crmMailing/SaveMsgTemplateDialogCtrl.html
rename to civicrm/ext/civi_mail/ang/crmMailing/SaveMsgTemplateDialogCtrl.html
diff --git a/civicrm/ang/crmMailing/SaveMsgTemplateDialogCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/SaveMsgTemplateDialogCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/SaveMsgTemplateDialogCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/SaveMsgTemplateDialogCtrl.js
diff --git a/civicrm/ang/crmMailing/Templates.js b/civicrm/ext/civi_mail/ang/crmMailing/Templates.js
similarity index 100%
rename from civicrm/ang/crmMailing/Templates.js
rename to civicrm/ext/civi_mail/ang/crmMailing/Templates.js
diff --git a/civicrm/ang/crmMailing/Token.js b/civicrm/ext/civi_mail/ang/crmMailing/Token.js
similarity index 100%
rename from civicrm/ang/crmMailing/Token.js
rename to civicrm/ext/civi_mail/ang/crmMailing/Token.js
diff --git a/civicrm/ang/crmMailing/ViewRecipCtrl.js b/civicrm/ext/civi_mail/ang/crmMailing/ViewRecipCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailing/ViewRecipCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailing/ViewRecipCtrl.js
diff --git a/civicrm/ang/crmMailing/crmMailingRecipientsAutocomplete.component.js b/civicrm/ext/civi_mail/ang/crmMailing/crmMailingRecipientsAutocomplete.component.js
similarity index 100%
rename from civicrm/ang/crmMailing/crmMailingRecipientsAutocomplete.component.js
rename to civicrm/ext/civi_mail/ang/crmMailing/crmMailingRecipientsAutocomplete.component.js
diff --git a/civicrm/ang/crmMailing/services.js b/civicrm/ext/civi_mail/ang/crmMailing/services.js
similarity index 100%
rename from civicrm/ang/crmMailing/services.js
rename to civicrm/ext/civi_mail/ang/crmMailing/services.js
diff --git a/civicrm/ang/crmMailingAB.ang.php b/civicrm/ext/civi_mail/ang/crmMailingAB.ang.php
similarity index 67%
rename from civicrm/ang/crmMailingAB.ang.php
rename to civicrm/ext/civi_mail/ang/crmMailingAB.ang.php
index 38fd42d2c5e2191f8a2d51e0037b08e69f9ad63d..cc26cd4345a0e33ac8b6bf5e1d349853ede70143 100644
--- a/civicrm/ang/crmMailingAB.ang.php
+++ b/civicrm/ext/civi_mail/ang/crmMailingAB.ang.php
@@ -1,9 +1,7 @@
 <?php
-// This file declares an Angular module which can be autoloaded
-// ODDITY: Only loads if you have CiviMail permissions.
+// This file declares crmMailingAB Angular module.
 
 return [
-  'ext' => 'civicrm',
   'js' => [
     'ang/crmMailingAB.js',
     'ang/crmMailingAB/*.js',
diff --git a/civicrm/ang/crmMailingAB.css b/civicrm/ext/civi_mail/ang/crmMailingAB.css
similarity index 100%
rename from civicrm/ang/crmMailingAB.css
rename to civicrm/ext/civi_mail/ang/crmMailingAB.css
diff --git a/civicrm/ang/crmMailingAB.js b/civicrm/ext/civi_mail/ang/crmMailingAB.js
similarity index 100%
rename from civicrm/ang/crmMailingAB.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB.js
diff --git a/civicrm/ang/crmMailingAB/BlockMailing.html b/civicrm/ext/civi_mail/ang/crmMailingAB/BlockMailing.html
similarity index 100%
rename from civicrm/ang/crmMailingAB/BlockMailing.html
rename to civicrm/ext/civi_mail/ang/crmMailingAB/BlockMailing.html
diff --git a/civicrm/ang/crmMailingAB/BlockMailing.js b/civicrm/ext/civi_mail/ang/crmMailingAB/BlockMailing.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/BlockMailing.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/BlockMailing.js
diff --git a/civicrm/ang/crmMailingAB/BlockSetup.html b/civicrm/ext/civi_mail/ang/crmMailingAB/BlockSetup.html
similarity index 100%
rename from civicrm/ang/crmMailingAB/BlockSetup.html
rename to civicrm/ext/civi_mail/ang/crmMailingAB/BlockSetup.html
diff --git a/civicrm/ang/crmMailingAB/BlockSetup.js b/civicrm/ext/civi_mail/ang/crmMailingAB/BlockSetup.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/BlockSetup.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/BlockSetup.js
diff --git a/civicrm/ang/crmMailingAB/EditCtrl.js b/civicrm/ext/civi_mail/ang/crmMailingAB/EditCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/EditCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/EditCtrl.js
diff --git a/civicrm/ang/crmMailingAB/EditCtrl/edit.html b/civicrm/ext/civi_mail/ang/crmMailingAB/EditCtrl/edit.html
similarity index 100%
rename from civicrm/ang/crmMailingAB/EditCtrl/edit.html
rename to civicrm/ext/civi_mail/ang/crmMailingAB/EditCtrl/edit.html
diff --git a/civicrm/ang/crmMailingAB/EditCtrl/main.html b/civicrm/ext/civi_mail/ang/crmMailingAB/EditCtrl/main.html
similarity index 100%
rename from civicrm/ang/crmMailingAB/EditCtrl/main.html
rename to civicrm/ext/civi_mail/ang/crmMailingAB/EditCtrl/main.html
diff --git a/civicrm/ang/crmMailingAB/EditCtrl/report.html b/civicrm/ext/civi_mail/ang/crmMailingAB/EditCtrl/report.html
similarity index 100%
rename from civicrm/ang/crmMailingAB/EditCtrl/report.html
rename to civicrm/ext/civi_mail/ang/crmMailingAB/EditCtrl/report.html
diff --git a/civicrm/ang/crmMailingAB/ListCtrl.html b/civicrm/ext/civi_mail/ang/crmMailingAB/ListCtrl.html
similarity index 100%
rename from civicrm/ang/crmMailingAB/ListCtrl.html
rename to civicrm/ext/civi_mail/ang/crmMailingAB/ListCtrl.html
diff --git a/civicrm/ang/crmMailingAB/ListCtrl.js b/civicrm/ext/civi_mail/ang/crmMailingAB/ListCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/ListCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/ListCtrl.js
diff --git a/civicrm/ang/crmMailingAB/NewCtrl.js b/civicrm/ext/civi_mail/ang/crmMailingAB/NewCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/NewCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/NewCtrl.js
diff --git a/civicrm/ang/crmMailingAB/ReportCtrl.js b/civicrm/ext/civi_mail/ang/crmMailingAB/ReportCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/ReportCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/ReportCtrl.js
diff --git a/civicrm/ang/crmMailingAB/Slider.html b/civicrm/ext/civi_mail/ang/crmMailingAB/Slider.html
similarity index 100%
rename from civicrm/ang/crmMailingAB/Slider.html
rename to civicrm/ext/civi_mail/ang/crmMailingAB/Slider.html
diff --git a/civicrm/ang/crmMailingAB/Slider.js b/civicrm/ext/civi_mail/ang/crmMailingAB/Slider.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/Slider.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/Slider.js
diff --git a/civicrm/ang/crmMailingAB/Stats.js b/civicrm/ext/civi_mail/ang/crmMailingAB/Stats.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/Stats.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/Stats.js
diff --git a/civicrm/ang/crmMailingAB/WinnerDialogCtrl.html b/civicrm/ext/civi_mail/ang/crmMailingAB/WinnerDialogCtrl.html
similarity index 100%
rename from civicrm/ang/crmMailingAB/WinnerDialogCtrl.html
rename to civicrm/ext/civi_mail/ang/crmMailingAB/WinnerDialogCtrl.html
diff --git a/civicrm/ang/crmMailingAB/WinnerDialogCtrl.js b/civicrm/ext/civi_mail/ang/crmMailingAB/WinnerDialogCtrl.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/WinnerDialogCtrl.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/WinnerDialogCtrl.js
diff --git a/civicrm/ang/crmMailingAB/services.js b/civicrm/ext/civi_mail/ang/crmMailingAB/services.js
similarity index 100%
rename from civicrm/ang/crmMailingAB/services.js
rename to civicrm/ext/civi_mail/ang/crmMailingAB/services.js
diff --git a/civicrm/ext/civi_mail/info.xml b/civicrm/ext/civi_mail/info.xml
index 86977a7bbfc02899ccdd9f3d80ceb01f8ae4ec38..e223d8cc9510e1bce23f30e667d41a29b9220bd0 100644
--- a/civicrm/ext/civi_mail/info.xml
+++ b/civicrm/ext/civi_mail/info.xml
@@ -12,14 +12,14 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/email/what-is-civimail/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Core Component</comments>
   <upgrader>CRM_Extension_Upgrader_Component</upgrader>
@@ -28,6 +28,7 @@
     <psr4 prefix="Civi\" path="Civi"/>
   </classloader>
   <mixins>
+    <mixin>ang-php@1.0.0</mixin>
     <mixin>scan-classes@1.0.0</mixin>
     <mixin>mgd-php@1.0.0</mixin>
   </mixins>
diff --git a/civicrm/ext/civi_member/Civi/Api4/MembershipLog.php b/civicrm/ext/civi_member/Civi/Api4/MembershipLog.php
new file mode 100644
index 0000000000000000000000000000000000000000..011489dc638c35304ee8ef3f4e1551497b552604
--- /dev/null
+++ b/civicrm/ext/civi_member/Civi/Api4/MembershipLog.php
@@ -0,0 +1,25 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+namespace Civi\Api4;
+
+use Civi\Api4\Generic\DAOEntity;
+use Civi\Api4\Generic\Traits\ReadOnlyEntity;
+
+/**
+ * MembershipLog entity.
+ *
+ * @since 5.69
+ * @package Civi\Api4
+ */
+class MembershipLog extends DAOEntity {
+  use ReadOnlyEntity;
+
+}
diff --git a/civicrm/ext/civi_member/Civi/Api4/Service/Spec/Provider/MembershipStatusGetSpecProvider.php b/civicrm/ext/civi_member/Civi/Api4/Service/Spec/Provider/MembershipStatusGetSpecProvider.php
new file mode 100644
index 0000000000000000000000000000000000000000..666103020d82a9594dd68e86e3e23357e1767c1f
--- /dev/null
+++ b/civicrm/ext/civi_member/Civi/Api4/Service/Spec/Provider/MembershipStatusGetSpecProvider.php
@@ -0,0 +1,72 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Query\Api4SelectQuery;
+use Civi\Api4\Service\Spec\FieldSpec;
+use Civi\Api4\Service\Spec\RequestSpec;
+use Civi\Core\Service\AutoService;
+
+/**
+ * @service
+ * @internal
+ */
+class MembershipStatusGetSpecProvider extends AutoService implements Generic\SpecProviderInterface {
+
+  /**
+   * @param \Civi\Api4\Service\Spec\RequestSpec $spec
+   */
+  public function modifySpec(RequestSpec $spec): void {
+    $spec->addFieldSpec(new FieldSpec('is_new', 'Membership', 'Integer'));
+    $field = (new FieldSpec('is_new', 'Membership', 'Boolean'))
+      ->setTitle(ts('Is new membership status'))
+      ->setDescription(ts('Is this the status for new members'))
+      ->setInputType('Number')
+      ->setType('Extra')
+      ->setColumnName('id')
+      ->setSqlRenderer([__CLASS__, 'isNewMembership']);
+    $spec->addFieldSpec($field);
+  }
+
+  /**
+   * When does this apply.
+   *
+   * @param string $entity
+   * @param string $action
+   *
+   * @return bool
+   */
+  public function applies(string $entity, string $action): bool {
+    return $entity === 'MembershipStatus' && $action === 'get';
+  }
+
+  /**
+   * Determine if the membership status is the status used for new memberships.
+   *
+   * @param array $fieldSpec
+   * @param \Civi\Api4\Query\Api4SelectQuery $query
+   * return string
+   *
+   * @return string
+   * @throws \CRM_Core_Exception
+   * @noinspection PhpUnusedParameterInspection
+   */
+  public static function isNewMembership(array $fieldSpec, Api4SelectQuery $query): string {
+    $newID = \CRM_Member_BAO_MembershipStatus::getNewMembershipTypeID();
+    if ($newID) {
+      return "IF ({$fieldSpec['sql_name']} = $newID, 1, 0)";
+    }
+    return '0';
+  }
+
+}
diff --git a/civicrm/ext/civi_member/info.xml b/civicrm/ext/civi_member/info.xml
index e766940f9a351061730f043b2e7eb22529fe1ce8..b282360c4f2060bcd7740da6650b05735c3f0605 100644
--- a/civicrm/ext/civi_member/info.xml
+++ b/civicrm/ext/civi_member/info.xml
@@ -12,14 +12,14 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/membership/what-is-civimember/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Core Component</comments>
   <upgrader>CRM_Extension_Upgrader_Component</upgrader>
diff --git a/civicrm/ext/civi_pledge/info.xml b/civicrm/ext/civi_pledge/info.xml
index 9a8b08d08cb631222b3cf4d63cf3c69b3c257fbd..c3e6c8acc027a024caa02651968e08919145046e 100644
--- a/civicrm/ext/civi_pledge/info.xml
+++ b/civicrm/ext/civi_pledge/info.xml
@@ -12,14 +12,14 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/pledges/what-is-civipledge/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Core Component</comments>
   <upgrader>CRM_Extension_Upgrader_Component</upgrader>
diff --git a/civicrm/ext/civi_report/info.xml b/civicrm/ext/civi_report/info.xml
index e3f2a46abbc4e824d901277fcd03d30b4a2381de..0562cc54a1d7902375ceb597f7464b246e73f244 100644
--- a/civicrm/ext/civi_report/info.xml
+++ b/civicrm/ext/civi_report/info.xml
@@ -12,14 +12,14 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/reporting/what-is-civireport/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Core Component</comments>
   <upgrader>CRM_Extension_Upgrader_Component</upgrader>
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchCiviCRMQueues.aff.html b/civicrm/ext/civicrm_admin_ui/ang/afsearchCiviCRMQueues.aff.html
new file mode 100644
index 0000000000000000000000000000000000000000..2043d35357e45d02a07ebe3473b3bc021bc93b12
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchCiviCRMQueues.aff.html
@@ -0,0 +1,5 @@
+<div af-fieldset="">
+  <af-field name="name" defn="{required: false, input_attrs: {}}" />
+  <af-field name="status" defn="{input_type: 'Select', input_attrs: {multiple: true}}" />
+  <crm-search-display-table search-name="Queues" display-name="Queues_Table_1"></crm-search-display-table>
+</div>
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchCiviCRMQueues.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchCiviCRMQueues.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..1991f4d09bf6997b354ffc9583f534110420c88b
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchCiviCRMQueues.aff.php
@@ -0,0 +1,12 @@
+<?php
+use CRM_CivicrmAdminUi_ExtensionUtil as E;
+
+return [
+  'type' => 'search',
+  'title' => E::ts('CiviCRM Queues'),
+  'icon' => 'fa-list-alt',
+  'server_route' => 'civicrm/admin/queue',
+  'permission' => ['administer queues'],
+  'placement' => [],
+  'permission_operator' => "AND",
+];
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchHeadersFootersAndAutomatedMessages.aff.html b/civicrm/ext/civicrm_admin_ui/ang/afsearchHeadersFootersAndAutomatedMessages.aff.html
new file mode 100644
index 0000000000000000000000000000000000000000..e4208fb6974a093e0d1cc89d2b64fbd752b3c05f
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchHeadersFootersAndAutomatedMessages.aff.html
@@ -0,0 +1,3 @@
+<div af-fieldset="">
+  <crm-search-display-table search-name="Headers_Footers_and_Automated_Messages" display-name="Headers_Footers_and_Automated_Messages_Table_1"></crm-search-display-table>
+</div>
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchHeadersFootersAndAutomatedMessages.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchHeadersFootersAndAutomatedMessages.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..0fc31c7885df1acdcddb480cf5dacf208764ba63
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchHeadersFootersAndAutomatedMessages.aff.php
@@ -0,0 +1,14 @@
+<?php
+use CRM_CivicrmAdminUi_ExtensionUtil as E;
+
+return [
+  'type' => 'search',
+  'title' => E::ts('Headers, Footers, and Automated Messages'),
+  'icon' => 'fa-list-alt',
+  'server_route' => 'civicrm/admin/component',
+  'permission' => [
+    'access CiviCRM',
+    'access CiviMail',
+  ],
+  'modified_date' => '2023-12-04 10:53:21',
+];
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchImportExportMappings.aff.html b/civicrm/ext/civicrm_admin_ui/ang/afsearchImportExportMappings.aff.html
new file mode 100644
index 0000000000000000000000000000000000000000..49829fcb1141b460255edfc92376e88c2f70ec7f
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchImportExportMappings.aff.html
@@ -0,0 +1,7 @@
+<div class="af-markup">
+  <div class="help">{{:: ts('Saved mappings allow you to easily run the same import or export job multiple times. Mappings are created and updated as part of an Import or Export task. This screen allows you to rename or delete existing mappings.') }}</div>
+
+</div>
+<div af-fieldset="">
+  <crm-search-display-table search-name="Import_Export_Mappings" display-name="Import_Export_Mappings"></crm-search-display-table>
+</div>
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchImportExportMappings.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchImportExportMappings.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..602fb02314029453d7a960130915d1008c71874c
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchImportExportMappings.aff.php
@@ -0,0 +1,13 @@
+<?php
+use CRM_CivicrmAdminUi_ExtensionUtil as E;
+
+return [
+  'title' => E::ts('Import/Export Mappings'),
+  'permission' => [
+    'administer CiviCRM',
+  ],
+  'type' => 'search',
+  'icon' => 'fa-list-alt',
+  'server_route' => 'civicrm/admin/mapping',
+  'permission_operator' => 'AND',
+];
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchSettingsDatePreferences.aff.html b/civicrm/ext/civicrm_admin_ui/ang/afsearchSettingsDatePreferences.aff.html
new file mode 100644
index 0000000000000000000000000000000000000000..56bf9151f02a546451dec94c8ba6d140b184eaf8
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchSettingsDatePreferences.aff.html
@@ -0,0 +1,7 @@
+<div af-fieldset="">
+  <div class="af-markup">
+    <div class="help">{{:: ts('Changing the parameters here affects the input and display for specific fields types. Setting the default date format for the entire site is a Localisation setting.') }} <a ng-href="{{:: crmUrl('civicrm/admin/setting/date?action=reset=1') }}">{{:: ts('See Administer > Localization > Date Formats.') }}</a></div>
+
+  </div>
+  <crm-search-display-table search-name="Settings_Date_Preferences" display-name="Settings_Date_Preferences"></crm-search-display-table>
+</div>
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchSettingsDatePreferences.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchSettingsDatePreferences.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..195a02ec7b512043633401c2566d08772c4aaa42
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchSettingsDatePreferences.aff.php
@@ -0,0 +1,13 @@
+<?php
+use CRM_CivicrmAdminUi_ExtensionUtil as E;
+
+return [
+  'title' => E::ts('Settings - Date Preferences'),
+  'permission' => [
+    'administer CiviCRM',
+  ],
+  'type' => 'search',
+  'icon' => 'fa-list-alt',
+  'server_route' => 'civicrm/admin/setting/preferences/date',
+  'permission_operator' => 'AND',
+];
diff --git a/civicrm/ext/civicrm_admin_ui/info.xml b/civicrm/ext/civicrm_admin_ui/info.xml
index 353ba929a3b2e0ee4bea3cf121e013076d8f0615..75c329c3f2dd342c71dd152f655789793095b186 100644
--- a/civicrm/ext/civicrm_admin_ui/info.xml
+++ b/civicrm/ext/civicrm_admin_ui/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">https://lab.civicrm.org/dev/core/-/issues</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>beta</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <requires>
     <ext>org.civicrm.search_kit</ext>
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_ACL_Roles.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_ACL_Roles.mgd.php
index bd8af2a789f5e0967b8ee2eddec52fc644a20f12..de475f50ba99b2becd04f311449c797722200bcf 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_ACL_Roles.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_ACL_Roles.mgd.php
@@ -66,6 +66,7 @@ return [
         'saved_search_id.name' => 'ACL_Roles',
         'type' => 'table',
         'settings' => [
+          'actions' => TRUE,
           'description' => NULL,
           'sort' => [],
           'limit' => 50,
@@ -161,11 +162,11 @@ return [
                   'condition' => [],
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
-          'actions' => FALSE,
           'classes' => [
             'table',
             'table-striped',
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Assigned_Financial_Accounts.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Assigned_Financial_Accounts.mgd.php
index 54401dfa355fd876522a0de1db46d218eef77af5..a1d89053de2732a22dd58011f7a27339be352618 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Assigned_Financial_Accounts.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Assigned_Financial_Accounts.mgd.php
@@ -64,7 +64,7 @@ return [
         'saved_search_id.name' => 'Administer_Assigned_Financial_Accounts',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -152,7 +152,8 @@ return [
                   'target' => 'crm-popup',
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Contact_Types.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Contact_Types.mgd.php
index 315d6bcc23564efb11a219fe9bc9903afadec97a..30ab389b28906f06a020dcbe6370918cfbca4ce4 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Contact_Types.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Contact_Types.mgd.php
@@ -50,7 +50,7 @@ return [
         'saved_search_id.name' => 'Administer_Contact_Types',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -113,7 +113,10 @@ return [
               'editable' => TRUE,
             ],
             [
+              'text' => '',
+              'style' => 'default',
               'size' => 'btn-xs',
+              'icon' => 'fa-bars',
               'links' => [
                 [
                   'entity' => 'ContactType',
@@ -141,7 +144,7 @@ return [
                   ],
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
               'alignment' => 'text-right',
             ],
           ],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Fields.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Fields.mgd.php
index 6d784e714b74a0444d37bbd49aa6e0873395f9cd..67766d00cb10ea3f554ebf6d668cff7e5985e68b 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Fields.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Fields.mgd.php
@@ -55,7 +55,7 @@ return [
         'saved_search_id.name' => 'Administer_Custom_Fields',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -113,7 +113,10 @@ return [
               'editable' => TRUE,
             ],
             [
+              'text' => '',
+              'style' => 'default',
               'size' => 'btn-xs',
+              'icon' => 'fa-bars',
               'links' => [
                 [
                   'entity' => 'CustomField',
@@ -121,28 +124,18 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-pencil',
-                  'text' => E::ts('Edit Field'),
+                  'text' => E::ts('Edit'),
                   'style' => 'default',
                   'path' => '',
                   'condition' => [],
                 ],
-              ],
-              'type' => 'buttons',
-              'alignment' => 'text-right',
-            ],
-            [
-              'text' => '',
-              'style' => 'default',
-              'size' => 'btn-xs',
-              'icon' => 'fa-bars',
-              'links' => [
                 [
                   'entity' => 'CustomField',
                   'action' => 'preview',
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-eye',
-                  'text' => E::ts('Preview Field'),
+                  'text' => E::ts('Preview'),
                   'style' => 'default',
                   'path' => '',
                   'condition' => [],
@@ -166,7 +159,7 @@ return [
                   'entity' => 'CustomField',
                   'target' => 'crm-popup',
                   'icon' => 'fa-toggle-on',
-                  'text' => E::ts('Enable Field'),
+                  'text' => E::ts('Enable'),
                   'style' => 'default',
                   'condition' => ['is_active', '=', FALSE],
                 ],
@@ -175,7 +168,7 @@ return [
                   'entity' => 'CustomField',
                   'target' => 'crm-popup',
                   'icon' => 'fa-toggle-off',
-                  'text' => E::ts('Disable Field'),
+                  'text' => E::ts('Disable'),
                   'style' => 'default',
                   'condition' => ['is_active', '=', TRUE],
                 ],
@@ -185,7 +178,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-random',
-                  'text' => E::ts('Move Field'),
+                  'text' => E::ts('Move'),
                   'style' => 'default',
                   'path' => '',
                   'condition' => [],
@@ -196,7 +189,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-trash',
-                  'text' => E::ts('Delete Field'),
+                  'text' => E::ts('Delete'),
                   'style' => 'danger',
                   'path' => '',
                   'condition' => [],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Groups.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Groups.mgd.php
index 28d95458c44ae2ee50a7fd5af89a16ed5017ee0f..0263e16db23ab31394f9bb922614799c87360398 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Groups.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Groups.mgd.php
@@ -68,7 +68,7 @@ return [
         'saved_search_id.name' => 'Administer_Custom_Groups',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -167,7 +167,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-eye',
-                  'text' => E::ts('Preview Group'),
+                  'text' => E::ts('Preview'),
                   'style' => 'default',
                   'path' => '',
                   'condition' => [],
@@ -196,7 +196,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-trash',
-                  'text' => E::ts('Delete Group'),
+                  'text' => E::ts('Delete'),
                   'style' => 'danger',
                   'path' => '',
                   'condition' => [],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Accounts.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Accounts.mgd.php
index 037272055b0edb43e2df09f72e557e11768ace17..db86a63bec95887e84fe52a17e51aadafd587ba1 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Accounts.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Accounts.mgd.php
@@ -56,7 +56,7 @@ return [
         'saved_search_id.name' => 'Administer_Financial_Accounts',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -184,7 +184,8 @@ return [
                   'condition' => ['is_reserved', '=', FALSE],
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Types.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Types.mgd.php
index fb1c1f5149e09f6f552c661a314844da5428318f..55ddd2f99122cc52ba6d361f64c5111069869c81 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Types.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Types.mgd.php
@@ -72,7 +72,7 @@ return [
         'saved_search_id.name' => 'Administer_Financial_Types',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -151,6 +151,13 @@ return [
                   'join' => '',
                   'target' => '',
                 ],
+              ],
+              'type' => 'buttons',
+              'alignment' => 'text-right',
+            ],
+            [
+              'size' => 'btn-xs',
+              'links' => [
                 [
                   'icon' => 'fa-pencil',
                   'text' => E::ts('Edit'),
@@ -190,7 +197,8 @@ return [
                   'target' => 'crm-popup',
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Location_Types.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Location_Types.mgd.php
index de21d6709c3dcd06308e9fc830dd1fed30aab676..f0f1ebc698cfd837cf34bb02009799497c1b02b2 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Location_Types.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Location_Types.mgd.php
@@ -54,7 +54,7 @@ return [
         'saved_search_id.name' => 'Administer_Location_Types',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -168,7 +168,8 @@ return [
                   ],
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Manage_Group.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Manage_Group.mgd.php
index 989a90f3ab1b2133b83d82e06067227059761f6d..a6995d89e02111176485eeac16d0074020a8eac2 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Manage_Group.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Manage_Group.mgd.php
@@ -59,6 +59,11 @@ return [
                 '=',
                 '"Added"',
               ],
+              [
+                'Group_GroupContact_Contact_01.is_deleted',
+                '=',
+                FALSE,
+              ],
             ],
           ],
           'having' => [],
@@ -225,7 +230,7 @@ return [
                   'target' => 'crm-popup',
                 ],
               ],
-              'type' => 'links',
+              'type' => 'buttons',
               'alignment' => 'text-right',
             ],
             [
@@ -258,7 +263,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-trash',
-                  'text' => E::ts('Remove Group'),
+                  'text' => E::ts('Delete'),
                   'style' => 'danger',
                   'path' => '',
                   'condition' => [],
@@ -268,7 +273,7 @@ return [
               'alignment' => 'text-right',
             ],
           ],
-          'actions' => FALSE,
+          'actions' => TRUE,
           'classes' => [
             'table',
             'table-striped',
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Payment_Processors.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Payment_Processors.mgd.php
index 5d77af6ea6b8c7e6ef0a7e9e51a68e565cc57beb..3252597f0b664aceb3bafa05084d61849a67eee6 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Payment_Processors.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Payment_Processors.mgd.php
@@ -79,7 +79,7 @@ return [
         'saved_search_id.name' => 'Administer_Payment_Processors',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -208,7 +208,8 @@ return [
                   'condition' => [],
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_ProfileFields.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_ProfileFields.mgd.php
index 9e542201f1c4ea1d4784abff7a108e23dbc31c48..4247f52154ae87de417f081439f2571481d34791 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_ProfileFields.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_ProfileFields.mgd.php
@@ -55,7 +55,7 @@ return [
         'saved_search_id.name' => 'Profile_Fields',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -185,7 +185,8 @@ return [
                   'condition' => [],
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Profiles.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Profiles.mgd.php
index c866616fca2076e8b01eb4f7749c167401635e6b..f068b18699a994975748a913adfa85f356c427b3 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Profiles.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Profiles.mgd.php
@@ -68,7 +68,7 @@ return [
         'saved_search_id.name' => 'User_defined_Profiles',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Relationship_Types.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Relationship_Types.mgd.php
index 543637452e7cb2dff07d2445fdb0c88e8633d7c1..39fda6f5135d362d0fcc041e08cc370f94cd380f 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Relationship_Types.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Relationship_Types.mgd.php
@@ -52,7 +52,7 @@ return [
         'saved_search_id.name' => 'Administer_Relationship_Types',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -159,7 +159,8 @@ return [
                   'condition' => [],
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Scheduled_Reminders.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Scheduled_Reminders.mgd.php
index 899c01af35c2d17fa94c11437c196cd0324399c0..ae1d1bcefbdd45291b9eb07a11989de8c677f73e 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Scheduled_Reminders.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Scheduled_Reminders.mgd.php
@@ -177,11 +177,12 @@ return [
                   'condition' => [],
                 ],
               ],
-              'type' => 'buttons',
+              'type' => 'menu',
+              'icon' => 'fa-bars',
               'alignment' => 'text-right',
             ],
           ],
-          'actions' => FALSE,
+          'actions' => TRUE,
           'classes' => [
             'table',
             'table-striped',
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Headers_Footers_and_Automated_Messages.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Headers_Footers_and_Automated_Messages.mgd.php
new file mode 100644
index 0000000000000000000000000000000000000000..efa3d7005fd062ad3829e356620418c149ebab8f
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Headers_Footers_and_Automated_Messages.mgd.php
@@ -0,0 +1,220 @@
+<?php
+use CRM_CivicrmAdminUi_ExtensionUtil as E;
+
+return [
+  [
+    'name' => 'SavedSearch_Headers_Footers_and_Automated_Messages',
+    'entity' => 'SavedSearch',
+    'cleanup' => 'unused',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Headers_Footers_and_Automated_Messages',
+        'label' => E::ts('Headers, Footers, and Automated Messages'),
+        'api_entity' => 'MailingComponent',
+        'api_params' => [
+          'version' => 4,
+          'select' => [
+            'name',
+            'component_type:label',
+            'subject',
+            'body_html',
+            'body_text',
+            'is_default',
+            'is_active',
+          ],
+          'orderBy' => [],
+          'where' => [],
+          'groupBy' => [],
+          'join' => [],
+          'having' => [],
+        ],
+      ],
+      'match' => [
+        'name',
+      ],
+    ],
+  ],
+  [
+    'name' => 'SavedSearch_Headers_Footers_and_Automated_Messages_SearchDisplay_Headers_Footers_and_Automated_Messages_Table_1',
+    'entity' => 'SearchDisplay',
+    'cleanup' => 'unused',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Headers_Footers_and_Automated_Messages_Table_1',
+        'label' => E::ts('Headers, Footers, and Automated Messages'),
+        'saved_search_id.name' => 'Headers_Footers_and_Automated_Messages',
+        'type' => 'table',
+        'settings' => [
+          'description' => NULL,
+          'sort' => [
+            [
+              'component_type',
+              'ASC',
+            ],
+          ],
+          'limit' => 50,
+          'pager' => [],
+          'placeholder' => 5,
+          'columns' => [
+            [
+              'type' => 'field',
+              'key' => 'name',
+              'dataType' => 'String',
+              'label' => E::ts('Name'),
+              'sortable' => FALSE,
+              'editable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'component_type:label',
+              'dataType' => 'String',
+              'label' => E::ts('Type'),
+              'sortable' => FALSE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'subject',
+              'dataType' => 'String',
+              'label' => E::ts('Subject'),
+              'sortable' => FALSE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'body_html',
+              'dataType' => 'Text',
+              'label' => E::ts('Body HTML'),
+              'sortable' => FALSE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'body_text',
+              'dataType' => 'Text',
+              'label' => E::ts('Body Text'),
+              'sortable' => FALSE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'is_default',
+              'dataType' => 'Boolean',
+              'label' => E::ts('Default?'),
+              'sortable' => FALSE,
+              'rewrite' => '[none]',
+              'title' => NULL,
+              'icons' => [
+                [
+                  'icon' => 'fa-check',
+                  'side' => 'left',
+                  'if' => [
+                    'is_default',
+                    '=',
+                    TRUE,
+                  ],
+                ],
+              ],
+            ],
+            [
+              'type' => 'field',
+              'key' => 'is_active',
+              'dataType' => 'Boolean',
+              'label' => E::ts('Enabled?'),
+              'sortable' => FALSE,
+              'icons' => [],
+              'rewrite' => '',
+            ],
+            [
+              'links' => [
+                [
+                  'entity' => 'MailingComponent',
+                  'action' => 'update',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => '',
+                  'text' => E::ts('Edit'),
+                  'style' => 'default',
+                  'path' => '',
+                  'task' => '',
+                  'condition' => [],
+                ],
+                [
+                  'task' => 'disable',
+                  'entity' => 'MailingComponent',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => '',
+                  'text' => E::ts('Disable'),
+                  'style' => 'default',
+                  'path' => '',
+                  'action' => '',
+                  'condition' => [
+                    'is_active',
+                    '=',
+                    TRUE,
+                  ],
+                ],
+                [
+                  'task' => 'enable',
+                  'entity' => 'MailingComponent',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => '',
+                  'text' => E::ts('Enable'),
+                  'style' => 'default',
+                  'path' => '',
+                  'action' => '',
+                  'condition' => [
+                    'is_active',
+                    '=',
+                    FALSE,
+                  ],
+                ],
+              ],
+              'type' => 'links',
+              'alignment' => 'text-right',
+            ],
+          ],
+          'actions' => FALSE,
+          'classes' => [
+            'table-striped',
+            'table',
+          ],
+          'toolbar' => [
+            [
+              'action' => 'add',
+              'entity' => 'MailingComponent',
+              'text' => E::ts('Add Mailing Component'),
+              'icon' => 'fa-plus',
+              'style' => 'primary',
+              'target' => 'crm-popup',
+              'join' => '',
+              'path' => '',
+              'task' => '',
+              'condition' => [
+                'check user permission',
+                '=',
+                [
+                  'access CiviMail',
+                ],
+              ],
+            ],
+          ],
+          'cssRules' => [
+            [
+              'disabled',
+              'is_active',
+              '=',
+              FALSE,
+            ],
+          ],
+        ],
+      ],
+      'match' => [
+        'saved_search_id',
+        'name',
+      ],
+    ],
+  ],
+];
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Import_Export_Mappings.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Import_Export_Mappings.mgd.php
new file mode 100644
index 0000000000000000000000000000000000000000..88eea065fe59685d561c35c94fc3948557d7ad89
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Import_Export_Mappings.mgd.php
@@ -0,0 +1,149 @@
+<?php
+use CRM_CivicrmAdminUi_ExtensionUtil as E;
+
+return [
+  [
+    'name' => 'SavedSearch_Import_Export_Mappings',
+    'entity' => 'SavedSearch',
+    'cleanup' => 'unused',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Import_Export_Mappings',
+        'label' => E::ts('Import/Export Mappings'),
+        'api_entity' => 'Mapping',
+        'api_params' => [
+          'version' => 4,
+          'select' => [
+            'name',
+            'description',
+            'mapping_type_id:label',
+            'id',
+          ],
+          'orderBy' => [],
+          'where' => [
+            [
+              'mapping_type_id:name',
+              '!=',
+              'Search Builder',
+            ],
+          ],
+          'groupBy' => [],
+          'join' => [],
+          'having' => [],
+        ],
+      ],
+      'match' => [
+        'name',
+      ],
+    ],
+  ],
+  [
+    'name' => 'SavedSearch_Import_Export_Mappings_SearchDisplay_Import_Export_Mappings',
+    'entity' => 'SearchDisplay',
+    'cleanup' => 'unused',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Import_Export_Mappings',
+        'label' => E::ts('Import/Export Mappings'),
+        'saved_search_id.name' => 'Import_Export_Mappings',
+        'type' => 'table',
+        'settings' => [
+          'description' => NULL,
+          'sort' => [
+            [
+              'mapping_type_id:label',
+              'ASC',
+            ],
+            [
+              'name',
+              'ASC',
+            ],
+          ],
+          'limit' => 50,
+          'pager' => [],
+          'placeholder' => 5,
+          'columns' => [
+            [
+              'type' => 'field',
+              'key' => 'id',
+              'dataType' => 'Integer',
+              'label' => E::ts('ID'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'name',
+              'dataType' => 'String',
+              'label' => E::ts('Name'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'mapping_type_id:label',
+              'dataType' => 'Integer',
+              'label' => E::ts('Mapping Type'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'description',
+              'dataType' => 'String',
+              'label' => E::ts('Description'),
+              'sortable' => TRUE,
+            ],
+            [
+              'text' => '',
+              'style' => 'default',
+              'size' => 'btn-xs',
+              'icon' => 'fa-bars',
+              'links' => [
+                [
+                  'path' => '',
+                  'icon' => 'fa-pencil',
+                  'text' => E::ts('Edit'),
+                  'style' => 'default',
+                  'condition' => [],
+                  'task' => '',
+                  'entity' => 'Mapping',
+                  'action' => 'update',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                ],
+                [
+                  'task' => 'delete',
+                  'entity' => 'Mapping',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-trash',
+                  'text' => E::ts('Delete'),
+                  'style' => 'danger',
+                  'path' => '',
+                  'action' => '',
+                  'condition' => [],
+                ],
+              ],
+              'type' => 'menu',
+              'alignment' => 'text-right',
+            ],
+          ],
+          'actions' => [
+            'delete',
+            'update',
+          ],
+          'classes' => [
+            'table',
+            'table-striped',
+          ],
+        ],
+      ],
+      'match' => [
+        'name',
+        'saved_search_id',
+      ],
+    ],
+  ],
+];
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_ACLs.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_ACLs.mgd.php
index 22a541bf5b4b79919213bf48f31a07bc31d691cc..9bfa13c8cdfe4327b7ead5bd31c6b0a25a037ca9 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_ACLs.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_ACLs.mgd.php
@@ -56,6 +56,7 @@ return [
         'saved_search_id.name' => 'Manage_ACLs',
         'type' => 'table',
         'settings' => [
+          'actions' => TRUE,
           'description' => NULL,
           'sort' => [
             [
@@ -136,7 +137,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-pencil',
-                  'text' => E::ts('Edit ACL'),
+                  'text' => E::ts('Edit'),
                   'style' => 'default',
                   'path' => '',
                   'condition' => [],
@@ -165,7 +166,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-trash',
-                  'text' => E::ts('Delete ACL'),
+                  'text' => E::ts('Delete'),
                   'style' => 'danger',
                   'path' => '',
                   'condition' => [],
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php
index 9b8d0ddfd6376718817c7c4100a9e389ea4d950c..e5e60cfd97b6b914b23048572941d26f81abaa15 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php
@@ -51,7 +51,7 @@ return [
         'saved_search_id.name' => 'Manage_Contribution_Pages',
         'type' => 'table',
         'settings' => [
-          'actions' => FALSE,
+          'actions' => TRUE,
           'limit' => 50,
           'classes' => [
             'table',
@@ -145,7 +145,7 @@ return [
                   'entity' => '',
                   'action' => '',
                   'join' => '',
-                  'target' => '',
+                  'target' => '_blank',
                   'icon' => 'fa-external-link',
                   'text' => E::ts('Live Page'),
                   'style' => 'default',
@@ -156,7 +156,7 @@ return [
                   'entity' => '',
                   'action' => '',
                   'join' => '',
-                  'target' => '',
+                  'target' => '_blank',
                   'icon' => 'fa-external-link',
                   'text' => E::ts('Test-drive'),
                   'style' => 'default',
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Mail_Accounts.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Mail_Accounts.mgd.php
index d1119fd2aaa5853c706cdce7556025d3398c27ad..f25c8702f212be0664334afabb0dfaf2c6e3433b 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Mail_Accounts.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Mail_Accounts.mgd.php
@@ -59,6 +59,7 @@ return [
         'saved_search_id.name' => 'Mail_Accounts',
         'type' => 'table',
         'settings' => [
+          'actions' => TRUE,
           'description' => NULL,
           'sort' => [],
           'limit' => 50,
@@ -173,7 +174,6 @@ return [
               'alignment' => 'text-right',
             ],
           ],
-          'actions' => FALSE,
           'classes' => [
             'table',
             'table-striped',
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Scheduled_Jobs.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Scheduled_Jobs.mgd.php
index 261b8f6967605c7bddae9d8457345784082c7609..fa4c89d963e2b2c732b07cb15d2ccca98a951433 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Scheduled_Jobs.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Scheduled_Jobs.mgd.php
@@ -56,6 +56,7 @@ return [
         'saved_search_id.name' => 'Scheduled_Jobs',
         'type' => 'table',
         'settings' => [
+          'actions' => TRUE,
           'description' => NULL,
           'sort' => [
             [
@@ -187,7 +188,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-pencil',
-                  'text' => E::ts('Edit Job'),
+                  'text' => E::ts('Edit'),
                   'style' => 'default',
                   'path' => '',
                   'condition' => [],
@@ -227,7 +228,7 @@ return [
                   'join' => '',
                   'target' => 'crm-popup',
                   'icon' => 'fa-trash',
-                  'text' => E::ts('Delete Job'),
+                  'text' => E::ts('Delete'),
                   'style' => 'danger',
                   'path' => '',
                   'condition' => [],
@@ -237,7 +238,6 @@ return [
               'alignment' => 'text-right',
             ],
           ],
-          'actions' => FALSE,
           'classes' => [
             'table',
             'table-striped',
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Queues.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Queues.mgd.php
new file mode 100644
index 0000000000000000000000000000000000000000..f0b1cc758998e80a75a604951e21f4e272b71ef6
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Queues.mgd.php
@@ -0,0 +1,100 @@
+<?php
+
+use CRM_CivicrmAdminUi_ExtensionUtil as E;
+
+return [
+  [
+    'name' => 'SavedSearch_Queues',
+    'entity' => 'SavedSearch',
+    'cleanup' => 'always',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Queues',
+        'label' => E::ts('Queues'),
+        'api_entity' => 'Queue',
+        'api_params' => [
+          'version' => 4,
+          'select' => [
+            'id',
+            'name',
+            'type:label',
+            'status:label',
+          ],
+          'orderBy' => [],
+          'where' => [],
+          'groupBy' => [],
+          'join' => [],
+          'having' => [],
+        ],
+      ],
+      'match' => [
+        'name',
+      ],
+    ],
+  ],
+  [
+    'name' => 'SavedSearch_Queues_SearchDisplay_Queues_Table_1',
+    'entity' => 'SearchDisplay',
+    'cleanup' => 'always',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Queues_Table_1',
+        'label' => E::ts('Queues'),
+        'saved_search_id.name' => 'Queues',
+        'type' => 'table',
+        'settings' => [
+          'description' => NULL,
+          'sort' => [],
+          'limit' => 50,
+          'pager' => [],
+          'placeholder' => 5,
+          'columns' => [
+            [
+              'type' => 'field',
+              'key' => 'id',
+              'dataType' => 'Integer',
+              'label' => E::ts('System Queue ID'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'name',
+              'dataType' => 'String',
+              'label' => E::ts('Name'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'type:label',
+              'dataType' => 'String',
+              'label' => E::ts('Type'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'status:label',
+              'dataType' => 'String',
+              'label' => E::ts('Status'),
+              'sortable' => TRUE,
+              'rewrite' => '',
+              'editable' => TRUE,
+            ],
+          ],
+          'actions' => FALSE,
+          'classes' => [
+            'table',
+            'table-striped',
+          ],
+        ],
+      ],
+      'match' => [
+        'saved_search_id',
+        'name',
+      ],
+    ],
+  ],
+];
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Scheduled_Jobs_Log.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Scheduled_Jobs_Log.mgd.php
index dc47e1ce49916c5fbad9c9c39114cc7ef28fc56a..655a7d160111c29c55f477b4f52b8e7f96f146e7 100644
--- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Scheduled_Jobs_Log.mgd.php
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Scheduled_Jobs_Log.mgd.php
@@ -53,6 +53,7 @@ return [
         'saved_search_id.name' => 'Scheduled_Jobs_Log',
         'type' => 'table',
         'settings' => [
+          'actions' => TRUE,
           'description' => NULL,
           'sort' => [
             [
@@ -88,7 +89,6 @@ return [
               'rewrite' => '<b>' . E::ts("Summary:") . '</b> [description]<br><b>' . E::ts("Details:") . '</b><pre>[data]</pre>',
             ],
           ],
-          'actions' => FALSE,
           'classes' => [
             'table',
             'table-striped',
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Settings_Date_Preferences.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Settings_Date_Preferences.mgd.php
new file mode 100644
index 0000000000000000000000000000000000000000..5b4bb413b1d72f2811d4c3db4f37e41378e22ee4
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Settings_Date_Preferences.mgd.php
@@ -0,0 +1,130 @@
+<?php
+use CRM_CivicrmAdminUi_ExtensionUtil as E;
+
+return [
+  [
+    'name' => 'SavedSearch_Settings_Date_Preferences',
+    'entity' => 'SavedSearch',
+    'cleanup' => 'unused',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Settings_Date_Preferences',
+        'label' => E::ts('Settings - Date Preferences'),
+        'api_entity' => 'PreferencesDate',
+        'api_params' => [
+          'version' => 4,
+          'select' => [
+            'name',
+            'description',
+            'date_format',
+            'start',
+            'end',
+          ],
+          'orderBy' => [],
+          'where' => [],
+          'groupBy' => [],
+          'join' => [],
+          'having' => [],
+        ],
+      ],
+      'match' => [
+        'name',
+      ],
+    ],
+  ],
+  [
+    'name' => 'SavedSearch_Settings_Date_Preferences_SearchDisplay_Settings_Date_Preferences',
+    'entity' => 'SearchDisplay',
+    'cleanup' => 'unused',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Settings_Date_Preferences',
+        'label' => E::ts('Settings - Date Preferences'),
+        'saved_search_id.name' => 'Settings_Date_Preferences',
+        'type' => 'table',
+        'settings' => [
+          'description' => NULL,
+          'sort' => [
+            [
+              'name',
+              'ASC',
+            ],
+          ],
+          'limit' => 50,
+          'pager' => [],
+          'placeholder' => 5,
+          'columns' => [
+            [
+              'type' => 'field',
+              'key' => 'name',
+              'dataType' => 'String',
+              'label' => E::ts('Date Class'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'description',
+              'dataType' => 'String',
+              'label' => E::ts('Description'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'date_format',
+              'dataType' => 'String',
+              'label' => E::ts('Date Format'),
+              'sortable' => TRUE,
+              'rewrite' => '',
+              'empty_value' => 'Default',
+            ],
+            [
+              'type' => 'field',
+              'key' => 'start',
+              'dataType' => 'Integer',
+              'label' => E::ts('Start Offset'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'end',
+              'dataType' => 'Integer',
+              'label' => E::ts('End Offset'),
+              'sortable' => TRUE,
+            ],
+            [
+              'links' => [
+                [
+                  'entity' => 'PreferencesDate',
+                  'action' => 'update',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-pencil',
+                  'text' => '',
+                  'style' => 'default',
+                  'path' => '',
+                  'task' => '',
+                  'condition' => [],
+                ],
+              ],
+              'type' => 'links',
+              'alignment' => 'text-right',
+            ],
+          ],
+          'actions' => FALSE,
+          'classes' => [
+            'table',
+            'table-striped',
+          ],
+        ],
+      ],
+      'match' => [
+        'name',
+        'saved_search_id',
+      ],
+    ],
+  ],
+];
diff --git a/civicrm/ext/civicrm_search_ui/ang/afsearchFindContributions.aff.html b/civicrm/ext/civicrm_search_ui/ang/afsearchFindContributions.aff.html
index dac443abb7431b9d0a66d0e8dc96a7bcdbdff425..d9ada15c74b2cb2aadfbf17aefb4deff6d38dd91 100644
--- a/civicrm/ext/civicrm_search_ui/ang/afsearchFindContributions.aff.html
+++ b/civicrm/ext/civicrm_search_ui/ang/afsearchFindContributions.aff.html
@@ -1,13 +1,13 @@
 <div af-fieldset="">
   <p class="af-text">This is intended as a replacement for the Find Contributions page.&nbsp; Please provide feedback at https://lab.civicrm.org/dev/core/-/issues/4440</p>
-  <div class="af-container af-layout-inline af-collapsible" af-title="Contact Filters">
+  <details class="af-container af-layout-inline" open af-title="Contact Filters">
     <af-field name="Contribution_Contact_contact_id_01.display_name,Contribution_Contact_contact_id_01.sort_name,Contribution_Contact_contact_id_01.email_primary.email" defn="{label: 'Name or Email', input_type: 'Text'}" />
     <af-field name="Contribution_Contact_contact_id_01.tags" defn="{input_attrs: {multiple: true}}" />
     <af-field name="Contribution_Contact_contact_id_01.groups" defn="{input_attrs: {multiple: true}}" />
     <af-field name="Contribution_Contact_contact_id_01.contact_type" defn="{input_attrs: {multiple: true}}" />
     <af-field name="Contribution_Contact_contact_id_01.is_deleted" defn="{required: false, label: 'Search in Trash (deleted contacts)'}" />
-  </div>
-  <div class="af-container af-layout-inline af-collapsible" af-title="Common Filters">
+  </details>
+  <details class="af-container af-layout-inline" open af-title="Common Filters">
     <af-field name="receive_date" defn="{input_type: 'Select', search_range: true, options: [{id: '{}', label: 'Choose Date Range'}, {id: 'this.day', label: 'Today'}, {id: 'this.week', label: 'This week'}, {id: 'this.month', label: 'This calendar month'}, {id: 'this.quarter', label: 'This quarter'}, {id: 'this.fiscal_year', label: 'This fiscal year'}, {id: 'this.year', label: 'This calendar year'}, {id: 'previous.day', label: 'Yesterday'}, {id: 'previous.week', label: 'Previous week'}, {id: 'previous.month', label: 'Previous calendar month'}, {id: 'previous.quarter', label: 'Previous quarter'}, {id: 'previous.fiscal_year', label: 'Previous fiscal year'}, {id: 'previous.year', label: 'Previous calendar year'}, {id: 'ending.week', label: 'Last 7 days including today'}, {id: 'ending_30.day', label: 'Last 30 days including today'}, {id: 'ending_60.day', label: 'Last 60 days including today'}, {id: 'ending_90.day', label: 'Last 90 days including today'}, {id: 'ending.year', label: 'Last 12 months including today'}, {id: 'ending_2.year', label: 'Last 2 years including today'}, {id: 'ending_3.year', label: 'Last 3 years including today'}, {id: 'starting.day', label: 'Tomorrow'}, {id: 'next.week', label: 'Next week'}, {id: 'next.month', label: 'Next calendar month'}, {id: 'next.quarter', label: 'Next quarter'}, {id: 'next.fiscal_year', label: 'Next fiscal year'}, {id: 'next.year', label: 'Next calendar year'}, {id: 'starting.week', label: 'Next 7 days including today'}, {id: 'starting.month', label: 'Next 30 days including today'}, {id: 'starting_2.month', label: 'Next 60 days including today'}, {id: 'starting.quarter', label: 'Next 90 days including today'}, {id: 'starting.year', label: 'Next 12 months including today'}, {id: 'current.week', label: 'Current week to-date'}, {id: 'current.month', label: 'Current calendar month to-date'}, {id: 'current.quarter', label: 'Current quarter to-date'}, {id: 'current.year', label: 'Current calendar year to-date'}, {id: 'earlier.day', label: 'To end of yesterday'}, {id: 'earlier.week', label: 'To end of previous week'}, {id: 'earlier.month', label: 'To end of previous calendar month'}, {id: 'earlier.quarter', label: 'To end of previous quarter'}, {id: 'earlier.year', label: 'To end of previous calendar year'}, {id: 'greater.day', label: 'From start of current day'}, {id: 'greater.week', label: 'From start of current week'}, {id: 'greater.month', label: 'From start of current calendar month'}, {id: 'greater.quarter', label: 'From start of current quarter'}, {id: 'greater.year', label: 'From start of current calendar year'}, {id: 'less.week', label: 'To end of current week'}, {id: 'less.month', label: 'To end of current calendar month'}, {id: 'less.quarter', label: 'To end of current quarter'}, {id: 'less.year', label: 'To end of current calendar year'}, {id: 'previous_2.day', label: 'Previous 2 days'}, {id: 'previous_2.week', label: 'Previous 2 weeks'}, {id: 'previous_2.month', label: 'Previous 2 calendar months'}, {id: 'previous_2.quarter', label: 'Previous 2 quarters'}, {id: 'previous_2.year', label: 'Previous 2 calendar years'}, {id: 'previous_2.fiscal_year', label: 'Previous 2 fiscal years'}, {id: 'previous_before.day', label: 'Day prior to yesterday'}, {id: 'previous_before.week', label: 'Week prior to previous week'}, {id: 'previous_before.month', label: 'Month prior to previous calendar month'}, {id: 'previous_before.quarter', label: 'Quarter prior to previous quarter'}, {id: 'previous_before.year', label: 'Year prior to previous calendar year'}, {id: 'previous_before.fiscal_year', label: 'Fiscal year prior to previous fiscal year'}, {id: 'greater_previous.week', label: 'From end of previous week'}, {id: 'greater_previous.month', label: 'From end of previous calendar month'}, {id: 'greater_previous.quarter', label: 'From end of previous quarter'}, {id: 'greater_previous.year', label: 'From end of previous calendar year'}], input_attrs: {}}" />
     <af-field name="total_amount" defn="{required: false, input_attrs: {}, input_type: 'Number', search_range: true, label: 'Total Amount (min, max)'}" />
     <af-field name="contribution_status_id" defn="{input_attrs: {multiple: true}, afform_default: ['1']}" />
@@ -16,8 +16,8 @@
     <af-field name="contribution_page_id" defn="{input_attrs: {multiple: true}}" />
     <af-field name="source" />
     <af-field name="id" defn="{required: false, input_attrs: {}}" />
-  </div>
-  <div class="af-container af-layout-inline af-collapsible af-collapsed" af-title="Yes/No">
+  </details>
+  <div class="af-container af-layout-inline" af-title="Yes/No">
     <af-field name="ISNULL_thankyou_date" defn="{input_type: 'Radio', search_operator: '!=', label: 'Thank-you Sent?'}" />
     <af-field name="ISNULL_receipt_date" defn="{input_type: 'Radio', search_operator: '!=', label: 'Receipt Sent?'}" />
     <af-field name="is_pay_later" defn="{required: false, input_type: 'Radio', label: 'Contribution is Pay Later?'}" />
@@ -25,22 +25,22 @@
     <af-field name="is_template" defn="{required: false, input_type: 'Radio', afform_default: '0', label: 'Contribution is a Template?'}" />
     <af-field name="ISNULL_contribution_recur_id" defn="{input_type: 'Radio', search_operator: '!=', label: 'Contribution is Recurring?'}" />
   </div>
-  <div class="af-container af-layout-inline af-collapsible af-collapsed" af-title="Less Common Filters">
+  <details class="af-container af-layout-inline" af-title="Less Common Filters">
     <af-field name="invoice_number" defn="{search_operator: 'IS EMPTY', input_attrs: {}, input_type: 'Number'}" />
     <af-field name="trxn_id" />
     <af-field name="cancel_date" defn="{input_type: 'Select', search_range: true, options: [{id: '{}', label: 'Choose Date Range'}, {id: 'this.day', label: 'Today'}, {id: 'this.week', label: 'This week'}, {id: 'this.month', label: 'This calendar month'}, {id: 'this.quarter', label: 'This quarter'}, {id: 'this.fiscal_year', label: 'This fiscal year'}, {id: 'this.year', label: 'This calendar year'}, {id: 'previous.day', label: 'Yesterday'}, {id: 'previous.week', label: 'Previous week'}, {id: 'previous.month', label: 'Previous calendar month'}, {id: 'previous.quarter', label: 'Previous quarter'}, {id: 'previous.fiscal_year', label: 'Previous fiscal year'}, {id: 'previous.year', label: 'Previous calendar year'}, {id: 'ending.week', label: 'Last 7 days including today'}, {id: 'ending_30.day', label: 'Last 30 days including today'}, {id: 'ending_60.day', label: 'Last 60 days including today'}, {id: 'ending_90.day', label: 'Last 90 days including today'}, {id: 'ending.year', label: 'Last 12 months including today'}, {id: 'ending_2.year', label: 'Last 2 years including today'}, {id: 'ending_3.year', label: 'Last 3 years including today'}, {id: 'starting.day', label: 'Tomorrow'}, {id: 'next.week', label: 'Next week'}, {id: 'next.month', label: 'Next calendar month'}, {id: 'next.quarter', label: 'Next quarter'}, {id: 'next.fiscal_year', label: 'Next fiscal year'}, {id: 'next.year', label: 'Next calendar year'}, {id: 'starting.week', label: 'Next 7 days including today'}, {id: 'starting.month', label: 'Next 30 days including today'}, {id: 'starting_2.month', label: 'Next 60 days including today'}, {id: 'starting.quarter', label: 'Next 90 days including today'}, {id: 'starting.year', label: 'Next 12 months including today'}, {id: 'current.week', label: 'Current week to-date'}, {id: 'current.month', label: 'Current calendar month to-date'}, {id: 'current.quarter', label: 'Current quarter to-date'}, {id: 'current.year', label: 'Current calendar year to-date'}, {id: 'earlier.day', label: 'To end of yesterday'}, {id: 'earlier.week', label: 'To end of previous week'}, {id: 'earlier.month', label: 'To end of previous calendar month'}, {id: 'earlier.quarter', label: 'To end of previous quarter'}, {id: 'earlier.year', label: 'To end of previous calendar year'}, {id: 'greater.day', label: 'From start of current day'}, {id: 'greater.week', label: 'From start of current week'}, {id: 'greater.month', label: 'From start of current calendar month'}, {id: 'greater.quarter', label: 'From start of current quarter'}, {id: 'greater.year', label: 'From start of current calendar year'}, {id: 'less.week', label: 'To end of current week'}, {id: 'less.month', label: 'To end of current calendar month'}, {id: 'less.quarter', label: 'To end of current quarter'}, {id: 'less.year', label: 'To end of current calendar year'}, {id: 'previous_2.day', label: 'Previous 2 days'}, {id: 'previous_2.week', label: 'Previous 2 weeks'}, {id: 'previous_2.month', label: 'Previous 2 calendar months'}, {id: 'previous_2.quarter', label: 'Previous 2 quarters'}, {id: 'previous_2.year', label: 'Previous 2 calendar years'}, {id: 'previous_2.fiscal_year', label: 'Previous 2 fiscal years'}, {id: 'previous_before.day', label: 'Day prior to yesterday'}, {id: 'previous_before.week', label: 'Week prior to previous week'}, {id: 'previous_before.month', label: 'Month prior to previous calendar month'}, {id: 'previous_before.quarter', label: 'Quarter prior to previous quarter'}, {id: 'previous_before.year', label: 'Year prior to previous calendar year'}, {id: 'previous_before.fiscal_year', label: 'Fiscal year prior to previous fiscal year'}, {id: 'greater_previous.week', label: 'From end of previous week'}, {id: 'greater_previous.month', label: 'From end of previous calendar month'}, {id: 'greater_previous.quarter', label: 'From end of previous quarter'}, {id: 'greater_previous.year', label: 'From end of previous calendar year'}], input_attrs: {}, afform_default: '{}'}" />
     <af-field name="cancel_reason" />
     <af-field name="payment_instrument_id" defn="{input_attrs: {multiple: true}}" />
-  </div>
-  <div class="af-container af-collapsible af-layout-inline af-collapsed" af-title="Soft Credit">
-    <legend class="af-text">Dev note:&nbsp; several options currently - need to understand soft credits better! &nbsp;</legend>
+  </details>
+  <details class="af-container af-layout-inline" af-title="Soft Credit">
+    <!-- Dev note: several options currently - need to understand soft credits better!-->
     <af-field name="Contribution_ContributionSoft_contribution_id_01.id" />
-  </div>
-  <div class="af-container af-collapsible af-layout-inline af-collapsed" af-title="PCP">
-    <legend class="af-text">Dev note: want this as page name select. &nbsp; Does anyone use PCP's???</legend>
+  </details>
+  <details class="af-container af-layout-inline" af-title="PCP">
+    <!-- Dev note: want this as page name select. Does anyone use PCP's???-->
     <af-field name="Contribution_ContributionSoft_contribution_id_01_ContributionSoft_PCP_pcp_id_01.id" />
     <af-field name="Contribution_ContributionSoft_contribution_id_01_ContributionSoft_PCP_pcp_id_01.is_honor_roll" defn="{label: 'Honor Roll?'}" />
-  </div>
+  </details>
   <div class="af-container" af-title="Summary">
     <crm-search-display-table search-name="Find_Contributions_totals" display-name="Find_Contributions_totals_Table_1"></crm-search-display-table>
   </div>
diff --git a/civicrm/ext/civicrm_search_ui/ang/afsearchLabelFormat.aff.html b/civicrm/ext/civicrm_search_ui/ang/afsearchLabelFormat.aff.html
new file mode 100644
index 0000000000000000000000000000000000000000..e66ad293501a5937a6fc2643be7cda149053098c
--- /dev/null
+++ b/civicrm/ext/civicrm_search_ui/ang/afsearchLabelFormat.aff.html
@@ -0,0 +1,14 @@
+<div af-fieldset="">
+  <div class="af-markup">
+    
+    
+    <div class="help">
+    <div>{{:: ts('You can configure one or more Label Formats for your CiviCRM installation. Label Formats are used when creating mailing labels.')}}<br/>
+{{:: ts('You can change which fields are printed on each label in')}} <a href="/civicrm/admin/setting/preferences/address?reset=1">{{:: ts('Address Settings')}}</a>.</div>
+    </div>
+
+  
+  
+  </div>
+  <crm-search-display-table search-name="label_format" display-name="label_format_Table_1"></crm-search-display-table>
+</div>
diff --git a/civicrm/ext/civicrm_search_ui/ang/afsearchLabelFormat.aff.php b/civicrm/ext/civicrm_search_ui/ang/afsearchLabelFormat.aff.php
new file mode 100644
index 0000000000000000000000000000000000000000..88742dfb1b29bd3df89470f6892bfa182dca1150
--- /dev/null
+++ b/civicrm/ext/civicrm_search_ui/ang/afsearchLabelFormat.aff.php
@@ -0,0 +1,14 @@
+<?php
+use CRM_CivicrmSearchUi_ExtensionUtil as E;
+
+return [
+  'type' => 'search',
+  'title' => E::ts('Label Formats'),
+  'description' => E::ts('Label Formats'),
+  'icon' => 'fa-list-alt',
+  'server_route' => 'civicrm/searchkit_ui/admin/labelFormats',
+  'permission' => [
+    'administer CiviCRM',
+  ],
+  'modified_date' => '2023-12-06 18:52:54',
+];
diff --git a/civicrm/ext/civicrm_search_ui/info.xml b/civicrm/ext/civicrm_search_ui/info.xml
index 9298c5c6ab27dc2288454c34943e839417bc6d67..141872cf6a0d24d3fe3af9afe7cce73b1cd283d5 100644
--- a/civicrm/ext/civicrm_search_ui/info.xml
+++ b/civicrm/ext/civicrm_search_ui/info.xml
@@ -14,15 +14,15 @@
     <url desc="Support">https://lab.civicrm.org/dev/core/-/issues</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>alpha</develStage>
   <requires>
     <ext>org.civicrm.search_kit</ext>
     <ext>org.civicrm.afform</ext>
   </requires>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Replacement SearchKit/FormBuilder pages for core Search pages.</comments>
   <classloader>
diff --git a/civicrm/ext/civicrm_search_ui/managed/SavedSearch_label_format.mgd.php b/civicrm/ext/civicrm_search_ui/managed/SavedSearch_label_format.mgd.php
new file mode 100644
index 0000000000000000000000000000000000000000..0a225004fbf95fea5d92898828bfad38e6649ad3
--- /dev/null
+++ b/civicrm/ext/civicrm_search_ui/managed/SavedSearch_label_format.mgd.php
@@ -0,0 +1,190 @@
+<?php
+use CRM_CivicrmSearchUi_ExtensionUtil as E;
+
+return [
+  [
+    'name' => 'SavedSearch_label_format',
+    'entity' => 'SavedSearch',
+    'cleanup' => 'unused',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'label_format',
+        'label' => E::ts('label format'),
+        'api_entity' => 'OptionGroup',
+        'api_params' => [
+          'version' => 4,
+          'select' => [
+            'OptionGroup_OptionValue_option_group_id_01.label',
+            'title',
+            'description',
+            'is_reserved',
+            'OptionGroup_OptionValue_option_group_id_01.grouping',
+            'OptionGroup_OptionValue_option_group_id_01.is_default',
+          ],
+          'orderBy' => [],
+          'where' => [
+            [
+              'name',
+              'IN',
+              [
+                'label_format',
+                'name_badge',
+              ],
+            ],
+          ],
+          'groupBy' => [],
+          'join' => [
+            [
+              'OptionValue AS OptionGroup_OptionValue_option_group_id_01',
+              'LEFT',
+              [
+                'id',
+                '=',
+                'OptionGroup_OptionValue_option_group_id_01.option_group_id',
+              ],
+            ],
+          ],
+          'having' => [],
+        ],
+      ],
+      'match' => [
+        'name',
+      ],
+    ],
+  ],
+  [
+    'name' => 'SavedSearch_label_format_SearchDisplay_label_format_Table_1',
+    'entity' => 'SearchDisplay',
+    'cleanup' => 'unused',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'label_format_Table_1',
+        'label' => E::ts('label format Table 1'),
+        'saved_search_id.name' => 'label_format',
+        'type' => 'table',
+        'settings' => [
+          'description' => '',
+          'sort' => [],
+          'limit' => 50,
+          'pager' => [
+            'show_count' => FALSE,
+            'expose_limit' => FALSE,
+            'hide_single' => TRUE,
+          ],
+          'placeholder' => 5,
+          'columns' => [
+            [
+              'type' => 'field',
+              'key' => 'OptionGroup_OptionValue_option_group_id_01.label',
+              'dataType' => 'String',
+              'label' => E::ts('Name'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'title',
+              'dataType' => 'String',
+              'label' => E::ts('Used for'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'OptionGroup_OptionValue_option_group_id_01.grouping',
+              'dataType' => 'String',
+              'label' => E::ts('Grouping'),
+              'sortable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'OptionGroup_OptionValue_option_group_id_01.is_default',
+              'dataType' => 'Boolean',
+              'label' => E::ts('Default'),
+              'sortable' => TRUE,
+              'rewrite' => '{ }',
+              'icons' => [
+                [
+                  'icon' => 'fa-check',
+                  'side' => 'left',
+                  'if' => [
+                    'OptionGroup_OptionValue_option_group_id_01.is_default',
+                    '=',
+                    TRUE,
+                  ],
+                ],
+              ],
+            ],
+            [
+              'type' => 'field',
+              'key' => 'is_reserved',
+              'dataType' => 'Boolean',
+              'label' => E::ts('Reserved'),
+              'sortable' => TRUE,
+            ],
+            [
+              'text' => '',
+              'style' => 'default',
+              'size' => 'btn-xs',
+              'icon' => 'fa-bars',
+              'links' => [
+                [
+                  'entity' => '',
+                  'action' => '',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-pencil',
+                  'text' => E::ts('Edit'),
+                  'style' => 'default',
+                  'path' => 'civicrm/admin/labelFormats/edit?action=update&id=[OptionGroup_OptionValue_option_group_id_01.id]&group=[name]&reset=1',
+                  'task' => '',
+                  'condition' => [],
+                ],
+                [
+                  'path' => 'civicrm/admin/labelFormats/edit?action=copy&id=[OptionGroup_OptionValue_option_group_id_01.id]&group=[name]&reset=1',
+                  'icon' => 'fa-clone',
+                  'text' => E::ts('Copy'),
+                  'style' => 'default',
+                  'condition' => [],
+                  'task' => '',
+                  'entity' => '',
+                  'action' => '',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                ],
+              ],
+              'type' => 'menu',
+              'alignment' => 'text-right',
+            ],
+          ],
+          'actions' => FALSE,
+          'classes' => [
+            'table',
+            'table-striped',
+          ],
+          'toolbar' => [
+            [
+              'action' => '',
+              'entity' => '',
+              'text' => E::ts('Add Label Format'),
+              'icon' => '',
+              'style' => 'default',
+              'target' => 'crm-popup',
+              'join' => '',
+              'path' => 'civicrm/admin/labelFormats/edit?action=add&reset=1',
+              'task' => '',
+              'condition' => [],
+            ],
+          ],
+          'headerCount' => FALSE,
+        ],
+      ],
+      'match' => [
+        'saved_search_id',
+        'name',
+      ],
+    ],
+  ],
+];
diff --git a/civicrm/ext/civigrant/CRM/Grant/BAO/Query.php b/civicrm/ext/civigrant/CRM/Grant/BAO/Query.php
index 22c8eb741faa95fcb752eadfa9c143aa26f7bc9a..977d64d5b41ab2045bd7ef8fac7d4724b084f1d0 100644
--- a/civicrm/ext/civigrant/CRM/Grant/BAO/Query.php
+++ b/civicrm/ext/civigrant/CRM/Grant/BAO/Query.php
@@ -183,7 +183,7 @@ class CRM_Grant_BAO_Query extends CRM_Contact_BAO_Query_Interface {
       case 'grant_status_id':
       case 'grant_status':
 
-        if (strstr($name, 'type')) {
+        if (str_contains($name, 'type')) {
           $name = 'grant_type_id';
           $label = E::ts('Grant Type(s)');
         }
diff --git a/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php b/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php
index 9217a0ccbc49349bac306a22c66d90e2e5737255..85df01e9b5442f545699147c426e156ab9d97295 100644
--- a/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php
+++ b/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php
@@ -16,23 +16,19 @@
  */
 
 /**
- * This class generates form components for processing a Grant
- *
+ * Not a real form: displays a grant in view mode.
+ * Fixme: Just use a frozen form instead of this ballyhoo
  */
 class CRM_Grant_Form_GrantView extends CRM_Core_Form {
 
   /**
-   * Set variables up before form is built.
-   *
    * @return void
    */
   public function preProcess() {
-    $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this);
-    $context = CRM_Utils_Request::retrieve('context', 'Alphanumeric', $this);
-    $this->assign('context', $context);
-
+    $params = [
+      'id' => CRM_Utils_Request::retrieve('id', 'Positive', $this, TRUE),
+    ];
     $values = [];
-    $params['id'] = $this->_id;
     CRM_Grant_BAO_Grant::retrieve($params, $values);
     $grantType = CRM_Core_PseudoConstant::get('CRM_Grant_DAO_Grant', 'grant_type_id');
     $grantStatus = CRM_Core_PseudoConstant::get('CRM_Grant_DAO_Grant', 'status_id');
@@ -56,17 +52,14 @@ class CRM_Grant_Form_GrantView extends CRM_Core_Form {
     $displayName = CRM_Contact_BAO_Contact::displayName($values['contact_id']);
     $this->assign('displayName', $displayName);
 
-    if (isset($this->_id)) {
-      $noteDAO = new CRM_Core_BAO_Note();
-      $noteDAO->entity_table = 'civicrm_grant';
-      $noteDAO->entity_id = $this->_id;
-      if ($noteDAO->find(TRUE)) {
-        $this->_noteId = $noteDAO->id;
-      }
+    $noteDAO = new CRM_Core_BAO_Note();
+    $noteDAO->entity_table = 'civicrm_grant';
+    $noteDAO->entity_id = $values['id'];
+    if ($noteDAO->find(TRUE)) {
+      $this->assign('note', CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Note', $noteDAO->id, 'note'));
     }
-
-    if (isset($this->_noteId)) {
-      $this->assign('note', CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Note', $this->_noteId, 'note'));
+    else {
+      $this->assign('note', '');
     }
 
     // add Grant to Recent Items
@@ -96,15 +89,14 @@ class CRM_Grant_Form_GrantView extends CRM_Core_Form {
       $recentOther
     );
 
-    $attachment = CRM_Core_BAO_File::attachmentInfo('civicrm_grant', $this->_id);
+    $attachment = CRM_Core_BAO_File::attachmentInfo('civicrm_grant', $values['id']);
     $this->assign('attachment', $attachment);
 
-    $grantType = CRM_Core_DAO::getFieldValue("CRM_Grant_DAO_Grant", $this->_id, "grant_type_id");
-    $groupTree = CRM_Core_BAO_CustomGroup::getTree("Grant", NULL, $this->_id, 0, $grantType, NULL,
+    $groupTree = CRM_Core_BAO_CustomGroup::getTree("Grant", NULL, $values['id'], 0, $values['grant_type_id'], NULL,
       TRUE, NULL, FALSE, CRM_Core_Permission::VIEW);
-    CRM_Core_BAO_CustomGroup::buildCustomDataView($this, $groupTree, FALSE, NULL, NULL, NULL, $this->_id);
+    CRM_Core_BAO_CustomGroup::buildCustomDataView($this, $groupTree, FALSE, NULL, NULL, NULL, $values['id']);
 
-    $this->assign('id', $this->_id);
+    $this->assign('id', $values['id']);
 
     $this->setPageTitle(ts('Grant'));
   }
@@ -115,14 +107,6 @@ class CRM_Grant_Form_GrantView extends CRM_Core_Form {
    * @return void
    */
   public function buildQuickForm() {
-    $this->addButtons([
-      [
-        'type' => 'cancel',
-        'name' => ts('Done'),
-        'spacing' => '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;',
-        'isDefault' => TRUE,
-      ],
-    ]);
   }
 
 }
diff --git a/civicrm/ext/civigrant/CRM/Report/Form/Grant/Statistics.php b/civicrm/ext/civigrant/CRM/Report/Form/Grant/Statistics.php
index 4c537404127cdcbcb0526b53cabccf080bdbe5b3..0ea5e629eaa62169082772b50a9ac7f59ec532b9 100644
--- a/civicrm/ext/civigrant/CRM/Report/Form/Grant/Statistics.php
+++ b/civicrm/ext/civigrant/CRM/Report/Form/Grant/Statistics.php
@@ -421,7 +421,7 @@ SELECT COUNT({$this->_aliases['civicrm_grant']}.id) as count ,
       }
 
       foreach ($values as $customField => $customValue) {
-        if (strstr($customField, 'civicrm_value_')) {
+        if (str_contains($customField, 'civicrm_value_')) {
           $customFieldTitle = $this->_columnHeaders[$customField]['title'] ?? NULL;
           $customGroupTitle = explode('_custom', strstr($customField, 'civicrm_value_'));
           $customGroupTitle = $this->_columns[$customGroupTitle[0]]['group_title'];
diff --git a/civicrm/ext/civigrant/info.xml b/civicrm/ext/civigrant/info.xml
index 51dea4e4cd18fd7ff964bbca9701d7239c8a9966..178dff9e5990e11431405406b5f6f5e258c23ed7 100644
--- a/civicrm/ext/civigrant/info.xml
+++ b/civicrm/ext/civigrant/info.xml
@@ -12,11 +12,11 @@
     <url desc="Documentation">https://docs.civicrm.org/user/en/latest/grants/what-is-civigrant/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>CiviGrant was originally a core component before migrating to an extension</comments>
   <requires>
diff --git a/civicrm/ext/civigrant/templates/CRM/Grant/Form/GrantView.tpl b/civicrm/ext/civigrant/templates/CRM/Grant/Form/GrantView.tpl
index f826193c9456da31ddb9b009c59eda92675ef3e5..370d09d10c958992a5db9072058419fd6dc14a3f 100644
--- a/civicrm/ext/civigrant/templates/CRM/Grant/Form/GrantView.tpl
+++ b/civicrm/ext/civigrant/templates/CRM/Grant/Form/GrantView.tpl
@@ -31,11 +31,11 @@
     {include file="CRM/Custom/Page/CustomDataView.tpl"}
     <div class="crm-submit-buttons">
         {if call_user_func(array('CRM_Core_Permission','check'), 'edit grants')}
-            {assign var='urlParams' value="reset=1&id=$id&cid=$contactId&action=update"}
+            {assign var='urlParams' value="reset=1&id=$id&action=update"}
             <a class="button" href="{crmURL p='civicrm/grant/add' q=$urlParams}" accesskey="e"><span><i class="crm-i fa-pencil" aria-hidden="true"></i> {ts}Edit{/ts}</span></a>
         {/if}
         {if call_user_func(array('CRM_Core_Permission','check'), 'delete in CiviGrant')}
-            {assign var='urlParams' value="reset=1&id=$id&cid=$contactId&action=delete"}
+            {assign var='urlParams' value="reset=1&id=$id&action=delete"}
             <a class="button" href="{crmURL p='civicrm/grant/add' q=$urlParams}"><span><i class="crm-i fa-trash" aria-hidden="true"></i> {ts}Delete{/ts}</span></a>
         {/if}
     </div>
diff --git a/civicrm/ext/civiimport/Civi/Import/DataSource/Spreadsheet.php b/civicrm/ext/civiimport/Civi/Import/DataSource/Spreadsheet.php
new file mode 100644
index 0000000000000000000000000000000000000000..ad4c89cce63b27c410d54f32206828dacfbe3789
--- /dev/null
+++ b/civicrm/ext/civiimport/Civi/Import/DataSource/Spreadsheet.php
@@ -0,0 +1,182 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Import\DataSource;
+
+use PhpOffice\PhpSpreadsheet\IOFactory;
+use PhpOffice\PhpSpreadsheet\Reader\Exception as ReaderException;
+
+/**
+ * Objects that implement the DataSource interface can be used in CiviCRM imports.
+ */
+class Spreadsheet extends \CRM_Import_DataSource implements DataSourceInterface {
+  use DataSourceTrait;
+  protected const NUM_ROWS_TO_INSERT = 100;
+
+  /**
+   * Provides information about the data source.
+   *
+   * @return array
+   *   collection of info about this data source
+   */
+  public function getInfo(): array {
+    return [
+      'title' => ts('Spreadsheet (xlsx, odt)'),
+      'template' => 'CRM/Import/DataSource/Spreadsheet.tpl',
+    ];
+  }
+
+  /**
+   * This is function is called by the form object to get the DataSource's form
+   * snippet.
+   *
+   * It should add all fields necessary to get the data
+   * uploaded to the temporary table in the DB.
+   *
+   * @param \CRM_Contact_Import_Form_DataSource|\CRM_Import_Form_DataSourceConfig $form
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function buildQuickForm(\CRM_Import_Forms $form): void {
+    if (\CRM_Utils_Request::retrieveValue('user_job_id', 'Integer')) {
+      $this->setUserJobID(\CRM_Utils_Request::retrieveValue('user_job_id', 'Integer'));
+    }
+    $form->add('hidden', 'hidden_dataSource', 'CRM_Import_DataSource_Spreadsheet');
+    $form->addElement('checkbox', 'isFirstRowHeader', ts('First row contains column headers'));
+
+    $maxFileSizeMegaBytes = \CRM_Utils_File::getMaxFileSize();
+    $maxFileSizeBytes = $maxFileSizeMegaBytes * 1024 * 1024;
+    $form->assign('uploadSize', $maxFileSizeMegaBytes);
+    $form->add('File', 'uploadFile', ts('Import Data File'), NULL, TRUE);
+    $form->setMaxFileSize($maxFileSizeBytes);
+    $form->addRule('uploadFile', ts('File size should be less than %1 MBytes (%2 bytes)', [
+      1 => $maxFileSizeMegaBytes,
+      2 => $maxFileSizeBytes,
+    ]), 'maxfilesize', $maxFileSizeBytes);
+    $form->registerRule('spreadsheet', 'callback', 'isValidSpreadsheet', __CLASS__);
+    $form->addRule('uploadFile', ts('The file must be of type ODS (LibreOffice), XLSX (Excel).'), 'spreadsheet');
+
+    $form->setDataSourceDefaults($this->getDefaultValues());
+  }
+
+  /**
+   * Is the value in the uploaded file field a valid spreadsheet.
+   *
+   * @param array $file
+   *
+   * @return bool
+   *
+   * @noinspection PhpUnused
+   */
+  public static function isValidSpreadsheet(array $file): bool {
+    $file_type = IOFactory::identify($file['tmp_name']);
+    return in_array($file_type, ['Xlsx', 'Ods']);
+  }
+
+  /**
+   * Get default values for excel dataSource fields.
+   *
+   * @return array
+   */
+  public function getDefaultValues(): array {
+    return [
+      'isFirstRowHeader' => 1,
+    ];
+  }
+
+  /**
+   * Get array array of field names that may be submitted for this data source.
+   *
+   * The quick form for the datasource is added by ajax - meaning that QuickForm
+   * does not see them as part of the form. However, any fields listed in this array
+   * will be taken from the `$_POST` and stored to the UserJob under the DataSource key.
+   *
+   * @return array
+   */
+  public function getSubmittableFields(): array {
+    return ['isFirstRowHeader', 'uploadFile'];
+  }
+
+  /**
+   * Initialize the datasource, based on the submitted values stored in the user job.
+   *
+   * Generally this will include transferring the data to a database table.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function initialize(): void {
+    try {
+      $result = $this->uploadToTable();
+      $this->updateUserJobDataSource([
+        'table_name' => $result['import_table_name'],
+        'column_headers' => $result['column_headers'],
+        'number_of_columns' => $result['number_of_columns'],
+      ]);
+    }
+    catch (ReaderException $e) {
+      throw new \CRM_Core_Exception(ts('Spreadsheet not loaded.') . '' . $e->getMessage());
+    }
+  }
+
+  /**
+   * @throws \CRM_Core_Exception
+   * @throws \Civi\Core\Exception\DBQueryException
+   * @throws \PhpOffice\PhpSpreadsheet\Reader\Exception
+   */
+  private function uploadToTable(): array {
+
+    $file_type = IOFactory::identify($this->getSubmittedValue('uploadFile')['name']);
+    $objReader = IOFactory::createReader($file_type);
+    $objReader->setReadDataOnly(TRUE);
+
+    $objPHPExcel = $objReader->load($this->getSubmittedValue('uploadFile')['name']);
+    $dataRows = $objPHPExcel->getActiveSheet()->toArray(NULL, TRUE, TRUE, TRUE);
+
+    // Remove the header
+    if ($this->getSubmittedValue('isFirstRowHeader')) {
+      $headers = array_values(array_shift($dataRows));
+      $columnHeaders = $headers;
+      $columns = $this->getColumnNamesFromHeaders($headers);
+    }
+    else {
+      $columns = $this->getColumnNamesForUnnamedColumns(array_values($dataRows[1]));
+      $columnHeaders = $columns;
+    }
+
+    $tableName = $this->createTempTableFromColumns($columns);
+    $numColumns = count($columns);
+    // Re-key data using the headers
+    $sql = [];
+    foreach ($dataRows as $row) {
+      // CRM-17859 Trim non-breaking spaces from columns.
+      $row = array_map([__CLASS__, 'trimNonBreakingSpaces'], $row);
+      $row = array_map(['CRM_Core_DAO', 'escapeString'], $row);
+      $sql[] = "('" . implode("', '", $row) . "')";
+
+      if (count($sql) >= self::NUM_ROWS_TO_INSERT) {
+        \CRM_Core_DAO::executeQuery("INSERT IGNORE INTO $tableName VALUES " . implode(', ', $sql));
+        $sql = [];
+      }
+    }
+
+    if (!empty($sql)) {
+      \CRM_Core_DAO::executeQuery("INSERT IGNORE INTO $tableName VALUES " . implode(', ', $sql));
+    }
+    $this->addTrackingFieldsToTable($tableName);
+
+    return [
+      'import_table_name' => $tableName,
+      'number_of_columns' => $numColumns,
+      'column_headers' => $columnHeaders,
+    ];
+  }
+
+}
diff --git a/civicrm/ext/civiimport/info.xml b/civicrm/ext/civiimport/info.xml
index 5b713ff9c52f524db806a0ae643b7209abe29f44..59acd8ac47781c495565faef256c1dd87324ec18 100644
--- a/civicrm/ext/civiimport/info.xml
+++ b/civicrm/ext/civiimport/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">http://civicrm.org</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>alpha</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>This extension contains import functionality which was previously in CiviCRM Core. If you use the import functionality it is recommended to enable this extension.</comments>
   <requires>
diff --git a/civicrm/ext/civiimport/templates/CRM/Import/DataSource/Spreadsheet.tpl b/civicrm/ext/civiimport/templates/CRM/Import/DataSource/Spreadsheet.tpl
new file mode 100644
index 0000000000000000000000000000000000000000..11f365940735326b45dbe9076d89591ceb101648
--- /dev/null
+++ b/civicrm/ext/civiimport/templates/CRM/Import/DataSource/Spreadsheet.tpl
@@ -0,0 +1,27 @@
+{*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+*}
+<h3>{ts}Upload Spreadsheet{/ts}</h3>
+
+<table class="form-layout">
+  <tr>
+    <td class="label">{$form.uploadFile.label}</td>
+    <td>{$form.uploadFile.html}<br />
+      <div class="description">
+          {ts}The file must be of type ODS (LibreOffice), XLSX (Excel) or CSV.{/ts}<br />
+          {ts 1=$uploadSize}Maximum Upload File Size: %1 MB{/ts}
+      </div>
+    </td>
+  </tr>
+  <tr>
+    <td></td>
+    <td>{$form.isFirstRowHeader.html} {$form.isFirstRowHeader.label}</td>
+  </tr>
+</table>
+
diff --git a/civicrm/ext/ckeditor4/info.xml b/civicrm/ext/ckeditor4/info.xml
index 08db56a95027a0118469ccfa8c2f5b191dc1c06d..8c152e4022d0bcad0943de3f0ba45b30b8ef66f1 100644
--- a/civicrm/ext/ckeditor4/info.xml
+++ b/civicrm/ext/ckeditor4/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">https://github.com/civicrm/civicrm-core/</url>
     <url desc="Licensing">https://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>This is the version of CKEditor that originally shipped with CiviCRM core</comments>
   <classloader>
diff --git a/civicrm/ext/contributioncancelactions/info.xml b/civicrm/ext/contributioncancelactions/info.xml
index 9817a3518c639e2d1c5972c6ab5c942d6292e0b0..ec6467f51d7ada4c484973bd806ac26ba0077465 100644
--- a/civicrm/ext/contributioncancelactions/info.xml
+++ b/civicrm/ext/contributioncancelactions/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">http://civicrm.org</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>This code has been moved from core to a separate extension in 5.32. Note that if you disable it failed or cancelled contributions will not cause related memberships and participant records to be updated</comments>
   <classloader>
diff --git a/civicrm/ext/elavon/info.xml b/civicrm/ext/elavon/info.xml
index 8ceee27585ef7c4c223c06cf6da534551b0698dc..67ad2183076c54e63a4976728bfa240365a5d8de 100644
--- a/civicrm/ext/elavon/info.xml
+++ b/civicrm/ext/elavon/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">https://lab.civicrm.org</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments/>
   <classloader>
diff --git a/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/Payment.php b/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/Payment.php
index ba283646d69de66f12d24c94d4de55e30fc8b425..0adf8b1d6e8470b71734e92989d6ffdbd4b5a432 100644
--- a/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/Payment.php
+++ b/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/Payment.php
@@ -162,8 +162,6 @@ class CRM_Event_Cart_Form_Checkout_Payment extends CRM_Event_Cart_Form_Cart {
           ) {
             $this->_paymentProcessor = $paymentProcessorDetail;
             $this->assign('paymentProcessor', $this->_paymentProcessor);
-            // Setting this is a bit of a legacy overhang.
-            $this->_paymentObject = $paymentProcessorDetail['object'];
           }
         }
         // It's not clear why we set this on the form.
@@ -250,10 +248,7 @@ class CRM_Event_Cart_Form_Checkout_Payment extends CRM_Event_Cart_Form_Cart {
       else {
         $cost = $event_price_values['amount'];
       }
-      // @todo - stop setting amount level in this function & call the CRM_Price_BAO_PriceSet::getAmountLevel
-      // function to get correct amount level consistently. Remove setting of the amount level in
-      // CRM_Price_BAO_PriceSet::processAmount. Extend the unit tests in CRM_Price_BAO_PriceSetTest
-      // to cover all variants.
+      // @todo - stop setting amount level in this function - use $this->order->getAmountLevel()
       $amount_level = $event_price_values['amount_level'];
       $price_details[$price_set_id] = $price_set_amount;
     }
diff --git a/civicrm/ext/eventcart/CRM/Event/Cart/Form/MerParticipant.php b/civicrm/ext/eventcart/CRM/Event/Cart/Form/MerParticipant.php
index 6a4d5c07d8c9289d1075e31503858f64451e0c2e..08c8867ec37ced74cde640d6081a87f444c56f91 100644
--- a/civicrm/ext/eventcart/CRM/Event/Cart/Form/MerParticipant.php
+++ b/civicrm/ext/eventcart/CRM/Event/Cart/Form/MerParticipant.php
@@ -34,7 +34,7 @@ class CRM_Event_Cart_Form_MerParticipant extends CRM_Core_Form {
     foreach ($custom_fields_post as $key => $field) {
       CRM_Core_BAO_UFGroup::buildProfile($form, $field, CRM_Profile_Form::MODE_CREATE, $this->participant->id);
     }
-    $custom = CRM_Utils_Array::value('custom', $form->getTemplate()->_tpl_vars, []);
+    $custom = $form->get_template_vars()['custom'] ?? [];
     $form->assign('custom', array_merge($custom, [
       $this->html_field_name('customPre') => $custom_fields_pre,
       $this->html_field_name('customPost') => $custom_fields_post,
diff --git a/civicrm/ext/eventcart/info.xml b/civicrm/ext/eventcart/info.xml
index 18a5617c89b4874b4368ca88280135d5833b287a..3353259cef177edf448d2fd62378b8c1377a4aa7 100644
--- a/civicrm/ext/eventcart/info.xml
+++ b/civicrm/ext/eventcart/info.xml
@@ -12,14 +12,14 @@
     <url desc="Main Extension Page">https://github.com/civicrm/civicrm-core/tree/master/ext/eventcart</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <classloader>
     <psr0 prefix="CRM_" path="."/>
diff --git a/civicrm/ext/ewaysingle/info.xml b/civicrm/ext/ewaysingle/info.xml
index 56239b8cbc416894dd67c4e8967fdfc14617a81d..306c26308f5c35c1d5732b5bb529adba51a9c1c7 100644
--- a/civicrm/ext/ewaysingle/info.xml
+++ b/civicrm/ext/ewaysingle/info.xml
@@ -14,14 +14,14 @@
     <url desc="Support">https://github.com/civicrm/civicrm-core/blob/master/ext/ewaysingle</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>This is an extension to contain the eWAY Single Currency Payment Processor</comments>
   <classloader>
diff --git a/civicrm/ext/financialacls/financialacls.php b/civicrm/ext/financialacls/financialacls.php
index 334105d92ebefcf4cc0d372d57480fd2368e3cb2..da20a0922f2fd37263e4539dd1ad5622848873ef 100644
--- a/civicrm/ext/financialacls/financialacls.php
+++ b/civicrm/ext/financialacls/financialacls.php
@@ -57,12 +57,13 @@ function financialacls_civicrm_pre($op, $objectName, $id, &$params) {
   if (!financialacls_is_acl_limiting_enabled()) {
     return;
   }
-  if ($objectName === 'LineItem' && !empty($params['check_permissions'])) {
+  if (in_array($objectName, ['LineItem', 'Product'], TRUE) && !empty($params['check_permissions'])) {
+    if (empty($params['financial_type_id']) && !empty($params['id'])) {
+      $dao = CRM_Core_DAO_AllCoreTables::getFullName($objectName);
+      $params['financial_type_id'] = CRM_Core_DAO::getFieldValue($dao, $params['id'], 'financial_type_id');
+    }
     $operationMap = ['delete' => CRM_Core_Action::DELETE, 'edit' => CRM_Core_Action::UPDATE, 'create' => CRM_Core_Action::ADD];
     CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($types, $operationMap[$op]);
-    if (empty($params['financial_type_id'])) {
-      $params['financial_type_id'] = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_LineItem', $params['id'], 'financial_type_id');
-    }
     if (!array_key_exists($params['financial_type_id'], $types)) {
       throw new CRM_Core_Exception('You do not have permission to ' . $op . ' this line item');
     }
@@ -93,6 +94,7 @@ function financialacls_civicrm_selectWhereClause($entity, &$clauses) {
     case 'MembershipType':
     case 'ContributionRecur':
     case 'Contribution':
+    case 'Product':
       $clauses['financial_type_id'][] = _financialacls_civicrm_get_type_clause();
       break;
 
@@ -173,7 +175,7 @@ function _financialacls_civicrm_get_accessible_financial_types(): array {
  *
  * @return string
  *
- * @throws \CRM_Core_Exception
+ * @noinspection PhpUnhandledExceptionInspection
  */
 function _financialacls_civicrm_get_membership_type_clause(): string {
   $financialTypes = _financialacls_civicrm_get_accessible_financial_types();
diff --git a/civicrm/ext/financialacls/info.xml b/civicrm/ext/financialacls/info.xml
index 68d7ed87fbb91c93d9da2912e7b1b09de18040e8..08579fc7de533ee5ca27e27f4dd624f6291ee746 100644
--- a/civicrm/ext/financialacls/info.xml
+++ b/civicrm/ext/financialacls/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">http://FIXME</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <tags>
     <tag>mgmt:hidden</tag>
@@ -31,6 +31,9 @@
   <mixins>
     <mixin>setting-php@1.0.0</mixin>
   </mixins>
+  <requires>
+    <ext>civi_contribute</ext>
+  </requires>
   <civix>
     <namespace>CRM/Financialacls</namespace>
     <format>23.02.1</format>
diff --git a/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/BaseTestClass.php b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/BaseTestClass.php
index 8aea3973245a7ebabe280eaf5de8f295d8d5b6e8..894db1f311ef4949df035465feddbd99dc5e113c 100644
--- a/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/BaseTestClass.php
+++ b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/BaseTestClass.php
@@ -7,6 +7,7 @@ use Civi\Api4\FinancialType;
 use Civi\Api4\PriceField;
 use Civi\Api4\PriceFieldValue;
 use Civi\Api4\PriceSet;
+use Civi\Api4\Product;
 use Civi\Test;
 use Civi\Test\CiviEnvBuilder;
 use Civi\Test\HeadlessInterface;
@@ -49,6 +50,7 @@ class BaseTestClass extends TestCase implements HeadlessInterface, HookInterface
   public function tearDown(): void {
     Contribution::delete(FALSE)->addWhere('id', '>', 0)->execute();
     FinancialType::delete(FALSE)->addWhere('name', 'LIKE', '%test%')->execute();
+    Product::delete(FALSE)->addWhere('name', '=', '10_dollars')->execute();
     $this->cleanupPriceSets();
   }
 
diff --git a/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/ProductTest.php b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/ProductTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..07c28362b726ee946decbf216c5718bf4e9157bf
--- /dev/null
+++ b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/ProductTest.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace Civi\Financialacls;
+
+require_once 'BaseTestClass.php';
+
+/**
+ * @group headless
+ */
+class ProductTest extends BaseTestClass {
+
+  /**
+   * Test api applies permissions on line item actions (delete & get).
+   *
+   * @dataProvider versionThreeAndFour
+   */
+  public function testProductApiPermissions($version): void {
+    $this->createTestEntity('Product', [
+      'name' => '10_dollars',
+      'description' => '10 dollars worth of monopoly money',
+      'options' => 'White, Black, Green',
+      'price' => 2,
+      'min_contribution' => 10,
+      'cost' => .05,
+      'financial_type_id:name' => 'Member Dues',
+    ], '10_dollars');
+    $this->_apiversion = $version;
+    $this->setupLoggedInUserWithLimitedFinancialTypeAccess();
+    $products = $this->callAPISuccess('Product', 'get', ['sequential' => TRUE])['values'];
+    $this->assertCount(1, $products);
+    $this->callAPISuccessGetCount('Product', ['check_permissions' => TRUE], 0);
+    $this->callAPIFailure('Product', 'Delete', ['check_permissions' => TRUE, 'id' => $products[0]['id']]);
+    $this->callAPISuccess('Product', 'Delete', ['check_permissions' => FALSE, 'id' => $products[0]['id']]);
+  }
+
+}
diff --git a/civicrm/ext/flexmailer/info.xml b/civicrm/ext/flexmailer/info.xml
index ba6f1de750a16d9b78e6a3a06f8e0d309e0354c3..d2037aba3dd954b28f61b746c6ff52be5428444d 100644
--- a/civicrm/ext/flexmailer/info.xml
+++ b/civicrm/ext/flexmailer/info.xml
@@ -14,8 +14,8 @@
     <url desc="Support">http://civicrm.stackexchange.com/</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <comments>
     FlexMailer is an email delivery engine which replaces the internal guts
@@ -23,7 +23,7 @@
     to provide richer email features.
   </comments>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <tags>
     <tag>mgmt:required</tag>
diff --git a/civicrm/ext/flexmailer/src/Listener/DefaultSender.php b/civicrm/ext/flexmailer/src/Listener/DefaultSender.php
index d09386ff1156662c903a228ae0ed5b9ff56fb58c..0d0a9e2f0997c1e292b0d98aa8546a13662fc9bb 100644
--- a/civicrm/ext/flexmailer/src/Listener/DefaultSender.php
+++ b/civicrm/ext/flexmailer/src/Listener/DefaultSender.php
@@ -167,15 +167,15 @@ class DefaultSender extends BaseListener {
       return FALSE;
     }
 
-    if (strpos($message, 'Failed to set sender') !== FALSE) {
+    if (str_contains($message, 'Failed to set sender')) {
       return TRUE;
     }
 
-    if (strpos($message, 'Failed to add recipient') !== FALSE) {
+    if (str_contains($message, 'Failed to add recipient')) {
       return TRUE;
     }
 
-    if (strpos($message, 'Failed to send data') !== FALSE) {
+    if (str_contains($message, 'Failed to send data')) {
       return TRUE;
     }
 
diff --git a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/Listener/SimpleFilterTest.php b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/Listener/SimpleFilterTest.php
index 7ae2774f42e6cdb10b71ead41a9cc80547d872b2..531f662cfe979c995c6cef0b6a18bf6ab760fae7 100644
--- a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/Listener/SimpleFilterTest.php
+++ b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/Listener/SimpleFilterTest.php
@@ -49,10 +49,7 @@ class SimpleFilterTest extends \CiviUnitTestCase {
     SimpleFilter::byValue($e, 'text', function ($value, $t, $e) use ($test) {
       $test->assertInstanceOf('Civi\FlexMailer\FlexMailerTask', $t);
       $test->assertInstanceOf('Civi\FlexMailer\Event\ComposeBatchEvent', $e);
-      $test->assertTrue(in_array($value, [
-        'eat more cheese',
-        'eat more ice cream',
-      ]));
+      $test->assertTrue(in_array($value, ['eat more cheese', 'eat more ice cream']));
       return preg_replace('/more/', 'thoughtfully considered quantities of', $value);
     });
 
diff --git a/civicrm/ext/greenwich/dist/bootstrap3.css b/civicrm/ext/greenwich/dist/bootstrap3.css
index 6378b6ac51dd53c71abe39434486dbb9966e2a40..2e71c62d236c73462b9b52deadc105551cf715d3 100644
--- a/civicrm/ext/greenwich/dist/bootstrap3.css
+++ b/civicrm/ext/greenwich/dist/bootstrap3.css
@@ -7294,6 +7294,10 @@
 	font-weight: normal;
 }
 
+#bootstrap-theme summary {
+	display: list-item;
+}
+
 #bootstrap-theme .form-control .select2-choice {
 	border: 0;
 	border-radius: 2px;
diff --git a/civicrm/ext/greenwich/dist/bootstrap3.min.css b/civicrm/ext/greenwich/dist/bootstrap3.min.css
index d59a5e99c2ac208b3539bd34022c8f9b5d468f75..3e65fa6aaec52d617bcdd54857bdf25df40d3643 100644
--- a/civicrm/ext/greenwich/dist/bootstrap3.min.css
+++ b/civicrm/ext/greenwich/dist/bootstrap3.min.css
@@ -1 +1 @@
-@charset "UTF-8";#bootstrap-theme html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}#bootstrap-theme body{margin:0}#bootstrap-theme article,#bootstrap-theme aside,#bootstrap-theme details,#bootstrap-theme figcaption,#bootstrap-theme figure,#bootstrap-theme footer,#bootstrap-theme header,#bootstrap-theme hgroup,#bootstrap-theme main,#bootstrap-theme menu,#bootstrap-theme nav,#bootstrap-theme section,#bootstrap-theme summary{display:block}#bootstrap-theme audio,#bootstrap-theme canvas,#bootstrap-theme progress,#bootstrap-theme video{display:inline-block;vertical-align:baseline}#bootstrap-theme audio:not([controls]){display:none;height:0}#bootstrap-theme [hidden],#bootstrap-theme template{display:none}#bootstrap-theme a{background-color:transparent}#bootstrap-theme a:active,#bootstrap-theme a:hover{outline:0}#bootstrap-theme abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}#bootstrap-theme b,#bootstrap-theme strong{font-weight:700}#bootstrap-theme dfn{font-style:italic}#bootstrap-theme h1{font-size:2em;margin:.67em 0}#bootstrap-theme mark{background:#ff0;color:#000}#bootstrap-theme small{font-size:80%}#bootstrap-theme sub,#bootstrap-theme sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}#bootstrap-theme sup{top:-.5em}#bootstrap-theme sub{bottom:-.25em}#bootstrap-theme img{border:0}#bootstrap-theme svg:not(:root){overflow:hidden}#bootstrap-theme figure{margin:1em 40px}#bootstrap-theme hr{box-sizing:content-box;height:0}#bootstrap-theme pre{overflow:auto}#bootstrap-theme code,#bootstrap-theme kbd,#bootstrap-theme pre,#bootstrap-theme samp{font-family:monospace,monospace;font-size:1em}#bootstrap-theme button,#bootstrap-theme input,#bootstrap-theme optgroup,#bootstrap-theme select,#bootstrap-theme textarea{color:inherit;font:inherit;margin:0}#bootstrap-theme button{overflow:visible}#bootstrap-theme button,#bootstrap-theme select{text-transform:none}#bootstrap-theme button,#bootstrap-theme html input[type=button],#bootstrap-theme input[type=reset],#bootstrap-theme input[type=submit]{-webkit-appearance:button;cursor:pointer}#bootstrap-theme button[disabled],#bootstrap-theme html input[disabled]{cursor:default}#bootstrap-theme button::-moz-focus-inner,#bootstrap-theme input::-moz-focus-inner{border:0;padding:0}#bootstrap-theme input{line-height:normal}#bootstrap-theme input[type=checkbox],#bootstrap-theme input[type=radio]{box-sizing:border-box;padding:0}#bootstrap-theme input[type=number]::-webkit-inner-spin-button,#bootstrap-theme input[type=number]::-webkit-outer-spin-button{height:auto}#bootstrap-theme input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}#bootstrap-theme input[type=search]::-webkit-search-cancel-button,#bootstrap-theme input[type=search]::-webkit-search-decoration{-webkit-appearance:none}#bootstrap-theme fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}#bootstrap-theme legend{border:0;padding:0}#bootstrap-theme textarea{overflow:auto}#bootstrap-theme optgroup{font-weight:700}#bootstrap-theme table{border-collapse:collapse;border-spacing:0}#bootstrap-theme td,#bootstrap-theme th{padding:0}@media print{#bootstrap-theme *,#bootstrap-theme *:before,#bootstrap-theme *:after{color:#000 !important;text-shadow:none !important;background:0 0 !important;box-shadow:none !important}#bootstrap-theme a,#bootstrap-theme a:visited{text-decoration:underline}#bootstrap-theme a[href]:after{content:" (" attr(href) ")"}#bootstrap-theme abbr[title]:after{content:" (" attr(title) ")"}#bootstrap-theme a[href^="#"]:after,#bootstrap-theme a[href^="javascript:"]:after{content:""}#bootstrap-theme pre,#bootstrap-theme blockquote{border:1px solid #999;page-break-inside:avoid}#bootstrap-theme thead{display:table-header-group}#bootstrap-theme tr,#bootstrap-theme img{page-break-inside:avoid}#bootstrap-theme img{max-width:100% !important}#bootstrap-theme p,#bootstrap-theme h2,#bootstrap-theme h3{orphans:3;widows:3}#bootstrap-theme h2,#bootstrap-theme h3{page-break-after:avoid}#bootstrap-theme .navbar{display:none}#bootstrap-theme .btn>.caret,#bootstrap-theme .dropup>.btn>.caret{border-top-color:#000 !important}#bootstrap-theme .label{border:1px solid #000}#bootstrap-theme .table{border-collapse:collapse !important}#bootstrap-theme .table td,#bootstrap-theme .table th{background-color:#fff !important}#bootstrap-theme .table-bordered th,#bootstrap-theme .table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:"Glyphicons Halflings";src:url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.eot");src:url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2") format("woff2"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.woff") format("woff"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf") format("truetype"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}#bootstrap-theme .glyphicon{position:relative;top:1px;display:inline-block;font-family:"Glyphicons Halflings";font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#bootstrap-theme .glyphicon-asterisk:before{content:"*"}#bootstrap-theme .glyphicon-plus:before{content:"+"}#bootstrap-theme .glyphicon-euro:before,#bootstrap-theme .glyphicon-eur:before{content:"€"}#bootstrap-theme .glyphicon-minus:before{content:"−"}#bootstrap-theme .glyphicon-cloud:before{content:"☁"}#bootstrap-theme .glyphicon-envelope:before{content:"✉"}#bootstrap-theme .glyphicon-pencil:before{content:"✏"}#bootstrap-theme .glyphicon-glass:before{content:""}#bootstrap-theme .glyphicon-music:before{content:""}#bootstrap-theme .glyphicon-search:before{content:""}#bootstrap-theme .glyphicon-heart:before{content:""}#bootstrap-theme .glyphicon-star:before{content:""}#bootstrap-theme .glyphicon-star-empty:before{content:""}#bootstrap-theme .glyphicon-user:before{content:""}#bootstrap-theme .glyphicon-film:before{content:""}#bootstrap-theme .glyphicon-th-large:before{content:""}#bootstrap-theme .glyphicon-th:before{content:""}#bootstrap-theme .glyphicon-th-list:before{content:""}#bootstrap-theme .glyphicon-ok:before{content:""}#bootstrap-theme .glyphicon-remove:before{content:""}#bootstrap-theme .glyphicon-zoom-in:before{content:""}#bootstrap-theme .glyphicon-zoom-out:before{content:""}#bootstrap-theme .glyphicon-off:before{content:""}#bootstrap-theme .glyphicon-signal:before{content:""}#bootstrap-theme .glyphicon-cog:before{content:""}#bootstrap-theme .glyphicon-trash:before{content:""}#bootstrap-theme .glyphicon-home:before{content:""}#bootstrap-theme .glyphicon-file:before{content:""}#bootstrap-theme .glyphicon-time:before{content:""}#bootstrap-theme .glyphicon-road:before{content:""}#bootstrap-theme .glyphicon-download-alt:before{content:""}#bootstrap-theme .glyphicon-download:before{content:""}#bootstrap-theme .glyphicon-upload:before{content:""}#bootstrap-theme .glyphicon-inbox:before{content:""}#bootstrap-theme .glyphicon-play-circle:before{content:""}#bootstrap-theme .glyphicon-repeat:before{content:""}#bootstrap-theme .glyphicon-refresh:before{content:""}#bootstrap-theme .glyphicon-list-alt:before{content:""}#bootstrap-theme .glyphicon-lock:before{content:""}#bootstrap-theme .glyphicon-flag:before{content:""}#bootstrap-theme .glyphicon-headphones:before{content:""}#bootstrap-theme .glyphicon-volume-off:before{content:""}#bootstrap-theme .glyphicon-volume-down:before{content:""}#bootstrap-theme .glyphicon-volume-up:before{content:""}#bootstrap-theme .glyphicon-qrcode:before{content:""}#bootstrap-theme .glyphicon-barcode:before{content:""}#bootstrap-theme .glyphicon-tag:before{content:""}#bootstrap-theme .glyphicon-tags:before{content:""}#bootstrap-theme .glyphicon-book:before{content:""}#bootstrap-theme .glyphicon-bookmark:before{content:""}#bootstrap-theme .glyphicon-print:before{content:""}#bootstrap-theme .glyphicon-camera:before{content:""}#bootstrap-theme .glyphicon-font:before{content:""}#bootstrap-theme .glyphicon-bold:before{content:""}#bootstrap-theme .glyphicon-italic:before{content:""}#bootstrap-theme .glyphicon-text-height:before{content:""}#bootstrap-theme .glyphicon-text-width:before{content:""}#bootstrap-theme .glyphicon-align-left:before{content:""}#bootstrap-theme .glyphicon-align-center:before{content:""}#bootstrap-theme .glyphicon-align-right:before{content:""}#bootstrap-theme .glyphicon-align-justify:before{content:""}#bootstrap-theme .glyphicon-list:before{content:""}#bootstrap-theme .glyphicon-indent-left:before{content:""}#bootstrap-theme .glyphicon-indent-right:before{content:""}#bootstrap-theme .glyphicon-facetime-video:before{content:""}#bootstrap-theme .glyphicon-picture:before{content:""}#bootstrap-theme .glyphicon-map-marker:before{content:""}#bootstrap-theme .glyphicon-adjust:before{content:""}#bootstrap-theme .glyphicon-tint:before{content:""}#bootstrap-theme .glyphicon-edit:before{content:""}#bootstrap-theme .glyphicon-share:before{content:""}#bootstrap-theme .glyphicon-check:before{content:""}#bootstrap-theme .glyphicon-move:before{content:""}#bootstrap-theme .glyphicon-step-backward:before{content:""}#bootstrap-theme .glyphicon-fast-backward:before{content:""}#bootstrap-theme .glyphicon-backward:before{content:""}#bootstrap-theme .glyphicon-play:before{content:""}#bootstrap-theme .glyphicon-pause:before{content:""}#bootstrap-theme .glyphicon-stop:before{content:""}#bootstrap-theme .glyphicon-forward:before{content:""}#bootstrap-theme .glyphicon-fast-forward:before{content:""}#bootstrap-theme .glyphicon-step-forward:before{content:""}#bootstrap-theme .glyphicon-eject:before{content:""}#bootstrap-theme .glyphicon-chevron-left:before{content:""}#bootstrap-theme .glyphicon-chevron-right:before{content:""}#bootstrap-theme .glyphicon-plus-sign:before{content:""}#bootstrap-theme .glyphicon-minus-sign:before{content:""}#bootstrap-theme .glyphicon-remove-sign:before{content:""}#bootstrap-theme .glyphicon-ok-sign:before{content:""}#bootstrap-theme .glyphicon-question-sign:before{content:""}#bootstrap-theme .glyphicon-info-sign:before{content:""}#bootstrap-theme .glyphicon-screenshot:before{content:""}#bootstrap-theme .glyphicon-remove-circle:before{content:""}#bootstrap-theme .glyphicon-ok-circle:before{content:""}#bootstrap-theme .glyphicon-ban-circle:before{content:""}#bootstrap-theme .glyphicon-arrow-left:before{content:""}#bootstrap-theme .glyphicon-arrow-right:before{content:""}#bootstrap-theme .glyphicon-arrow-up:before{content:""}#bootstrap-theme .glyphicon-arrow-down:before{content:""}#bootstrap-theme .glyphicon-share-alt:before{content:""}#bootstrap-theme .glyphicon-resize-full:before{content:""}#bootstrap-theme .glyphicon-resize-small:before{content:""}#bootstrap-theme .glyphicon-exclamation-sign:before{content:""}#bootstrap-theme .glyphicon-gift:before{content:""}#bootstrap-theme .glyphicon-leaf:before{content:""}#bootstrap-theme .glyphicon-fire:before{content:""}#bootstrap-theme .glyphicon-eye-open:before{content:""}#bootstrap-theme .glyphicon-eye-close:before{content:""}#bootstrap-theme .glyphicon-warning-sign:before{content:""}#bootstrap-theme .glyphicon-plane:before{content:""}#bootstrap-theme .glyphicon-calendar:before{content:""}#bootstrap-theme .glyphicon-random:before{content:""}#bootstrap-theme .glyphicon-comment:before{content:""}#bootstrap-theme .glyphicon-magnet:before{content:""}#bootstrap-theme .glyphicon-chevron-up:before{content:""}#bootstrap-theme .glyphicon-chevron-down:before{content:""}#bootstrap-theme .glyphicon-retweet:before{content:""}#bootstrap-theme .glyphicon-shopping-cart:before{content:""}#bootstrap-theme .glyphicon-folder-close:before{content:""}#bootstrap-theme .glyphicon-folder-open:before{content:""}#bootstrap-theme .glyphicon-resize-vertical:before{content:""}#bootstrap-theme .glyphicon-resize-horizontal:before{content:""}#bootstrap-theme .glyphicon-hdd:before{content:""}#bootstrap-theme .glyphicon-bullhorn:before{content:""}#bootstrap-theme .glyphicon-bell:before{content:""}#bootstrap-theme .glyphicon-certificate:before{content:""}#bootstrap-theme .glyphicon-thumbs-up:before{content:""}#bootstrap-theme .glyphicon-thumbs-down:before{content:""}#bootstrap-theme .glyphicon-hand-right:before{content:""}#bootstrap-theme .glyphicon-hand-left:before{content:""}#bootstrap-theme .glyphicon-hand-up:before{content:""}#bootstrap-theme .glyphicon-hand-down:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-right:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-left:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-up:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-down:before{content:""}#bootstrap-theme .glyphicon-globe:before{content:""}#bootstrap-theme .glyphicon-wrench:before{content:""}#bootstrap-theme .glyphicon-tasks:before{content:""}#bootstrap-theme .glyphicon-filter:before{content:""}#bootstrap-theme .glyphicon-briefcase:before{content:""}#bootstrap-theme .glyphicon-fullscreen:before{content:""}#bootstrap-theme .glyphicon-dashboard:before{content:""}#bootstrap-theme .glyphicon-paperclip:before{content:""}#bootstrap-theme .glyphicon-heart-empty:before{content:""}#bootstrap-theme .glyphicon-link:before{content:""}#bootstrap-theme .glyphicon-phone:before{content:""}#bootstrap-theme .glyphicon-pushpin:before{content:""}#bootstrap-theme .glyphicon-usd:before{content:""}#bootstrap-theme .glyphicon-gbp:before{content:""}#bootstrap-theme .glyphicon-sort:before{content:""}#bootstrap-theme .glyphicon-sort-by-alphabet:before{content:""}#bootstrap-theme .glyphicon-sort-by-alphabet-alt:before{content:""}#bootstrap-theme .glyphicon-sort-by-order:before{content:""}#bootstrap-theme .glyphicon-sort-by-order-alt:before{content:""}#bootstrap-theme .glyphicon-sort-by-attributes:before{content:""}#bootstrap-theme .glyphicon-sort-by-attributes-alt:before{content:""}#bootstrap-theme .glyphicon-unchecked:before{content:""}#bootstrap-theme .glyphicon-expand:before{content:""}#bootstrap-theme .glyphicon-collapse-down:before{content:""}#bootstrap-theme .glyphicon-collapse-up:before{content:""}#bootstrap-theme .glyphicon-log-in:before{content:""}#bootstrap-theme .glyphicon-flash:before{content:""}#bootstrap-theme .glyphicon-log-out:before{content:""}#bootstrap-theme .glyphicon-new-window:before{content:""}#bootstrap-theme .glyphicon-record:before{content:""}#bootstrap-theme .glyphicon-save:before{content:""}#bootstrap-theme .glyphicon-open:before{content:""}#bootstrap-theme .glyphicon-saved:before{content:""}#bootstrap-theme .glyphicon-import:before{content:""}#bootstrap-theme .glyphicon-export:before{content:""}#bootstrap-theme .glyphicon-send:before{content:""}#bootstrap-theme .glyphicon-floppy-disk:before{content:""}#bootstrap-theme .glyphicon-floppy-saved:before{content:""}#bootstrap-theme .glyphicon-floppy-remove:before{content:""}#bootstrap-theme .glyphicon-floppy-save:before{content:""}#bootstrap-theme .glyphicon-floppy-open:before{content:""}#bootstrap-theme .glyphicon-credit-card:before{content:""}#bootstrap-theme .glyphicon-transfer:before{content:""}#bootstrap-theme .glyphicon-cutlery:before{content:""}#bootstrap-theme .glyphicon-header:before{content:""}#bootstrap-theme .glyphicon-compressed:before{content:""}#bootstrap-theme .glyphicon-earphone:before{content:""}#bootstrap-theme .glyphicon-phone-alt:before{content:""}#bootstrap-theme .glyphicon-tower:before{content:""}#bootstrap-theme .glyphicon-stats:before{content:""}#bootstrap-theme .glyphicon-sd-video:before{content:""}#bootstrap-theme .glyphicon-hd-video:before{content:""}#bootstrap-theme .glyphicon-subtitles:before{content:""}#bootstrap-theme .glyphicon-sound-stereo:before{content:""}#bootstrap-theme .glyphicon-sound-dolby:before{content:""}#bootstrap-theme .glyphicon-sound-5-1:before{content:""}#bootstrap-theme .glyphicon-sound-6-1:before{content:""}#bootstrap-theme .glyphicon-sound-7-1:before{content:""}#bootstrap-theme .glyphicon-copyright-mark:before{content:""}#bootstrap-theme .glyphicon-registration-mark:before{content:""}#bootstrap-theme .glyphicon-cloud-download:before{content:""}#bootstrap-theme .glyphicon-cloud-upload:before{content:""}#bootstrap-theme .glyphicon-tree-conifer:before{content:""}#bootstrap-theme .glyphicon-tree-deciduous:before{content:""}#bootstrap-theme .glyphicon-cd:before{content:""}#bootstrap-theme .glyphicon-save-file:before{content:""}#bootstrap-theme .glyphicon-open-file:before{content:""}#bootstrap-theme .glyphicon-level-up:before{content:""}#bootstrap-theme .glyphicon-copy:before{content:""}#bootstrap-theme .glyphicon-paste:before{content:""}#bootstrap-theme .glyphicon-alert:before{content:""}#bootstrap-theme .glyphicon-equalizer:before{content:""}#bootstrap-theme .glyphicon-king:before{content:""}#bootstrap-theme .glyphicon-queen:before{content:""}#bootstrap-theme .glyphicon-pawn:before{content:""}#bootstrap-theme .glyphicon-bishop:before{content:""}#bootstrap-theme .glyphicon-knight:before{content:""}#bootstrap-theme .glyphicon-baby-formula:before{content:""}#bootstrap-theme .glyphicon-tent:before{content:"⛺"}#bootstrap-theme .glyphicon-blackboard:before{content:""}#bootstrap-theme .glyphicon-bed:before{content:""}#bootstrap-theme .glyphicon-apple:before{content:""}#bootstrap-theme .glyphicon-erase:before{content:""}#bootstrap-theme .glyphicon-hourglass:before{content:"⌛"}#bootstrap-theme .glyphicon-lamp:before{content:""}#bootstrap-theme .glyphicon-duplicate:before{content:""}#bootstrap-theme .glyphicon-piggy-bank:before{content:""}#bootstrap-theme .glyphicon-scissors:before{content:""}#bootstrap-theme .glyphicon-bitcoin:before{content:""}#bootstrap-theme .glyphicon-btc:before{content:""}#bootstrap-theme .glyphicon-xbt:before{content:""}#bootstrap-theme .glyphicon-yen:before{content:"¥"}#bootstrap-theme .glyphicon-jpy:before{content:"¥"}#bootstrap-theme .glyphicon-ruble:before{content:"₽"}#bootstrap-theme .glyphicon-rub:before{content:"₽"}#bootstrap-theme .glyphicon-scale:before{content:""}#bootstrap-theme .glyphicon-ice-lolly:before{content:""}#bootstrap-theme .glyphicon-ice-lolly-tasted:before{content:""}#bootstrap-theme .glyphicon-education:before{content:""}#bootstrap-theme .glyphicon-option-horizontal:before{content:""}#bootstrap-theme .glyphicon-option-vertical:before{content:""}#bootstrap-theme .glyphicon-menu-hamburger:before{content:""}#bootstrap-theme .glyphicon-modal-window:before{content:""}#bootstrap-theme .glyphicon-oil:before{content:""}#bootstrap-theme .glyphicon-grain:before{content:""}#bootstrap-theme .glyphicon-sunglasses:before{content:""}#bootstrap-theme .glyphicon-text-size:before{content:""}#bootstrap-theme .glyphicon-text-color:before{content:""}#bootstrap-theme .glyphicon-text-background:before{content:""}#bootstrap-theme .glyphicon-object-align-top:before{content:""}#bootstrap-theme .glyphicon-object-align-bottom:before{content:""}#bootstrap-theme .glyphicon-object-align-horizontal:before{content:""}#bootstrap-theme .glyphicon-object-align-left:before{content:""}#bootstrap-theme .glyphicon-object-align-vertical:before{content:""}#bootstrap-theme .glyphicon-object-align-right:before{content:""}#bootstrap-theme .glyphicon-triangle-right:before{content:""}#bootstrap-theme .glyphicon-triangle-left:before{content:""}#bootstrap-theme .glyphicon-triangle-bottom:before{content:""}#bootstrap-theme .glyphicon-triangle-top:before{content:""}#bootstrap-theme .glyphicon-console:before{content:""}#bootstrap-theme .glyphicon-superscript:before{content:""}#bootstrap-theme .glyphicon-subscript:before{content:""}#bootstrap-theme .glyphicon-menu-left:before{content:""}#bootstrap-theme .glyphicon-menu-right:before{content:""}#bootstrap-theme .glyphicon-menu-down:before{content:""}#bootstrap-theme .glyphicon-menu-up:before{content:""}#bootstrap-theme *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bootstrap-theme *:before,#bootstrap-theme *:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bootstrap-theme html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}#bootstrap-theme body{font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff}#bootstrap-theme input,#bootstrap-theme button,#bootstrap-theme select,#bootstrap-theme textarea{font-family:inherit;font-size:inherit;line-height:inherit}#bootstrap-theme a{color:#2786c2;text-decoration:none}#bootstrap-theme a:hover,#bootstrap-theme a:focus{color:#1a5a82;text-decoration:underline}#bootstrap-theme a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme figure{margin:0}#bootstrap-theme img{vertical-align:middle}#bootstrap-theme .img-responsive{display:block;max-width:100%;height:auto}#bootstrap-theme .img-rounded{border-radius:6px}#bootstrap-theme .img-thumbnail{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}#bootstrap-theme .img-circle{border-radius:50%}#bootstrap-theme hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}#bootstrap-theme .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}#bootstrap-theme .sr-only-focusable:active,#bootstrap-theme .sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}#bootstrap-theme [role=button]{cursor:pointer}#bootstrap-theme h1,#bootstrap-theme h2,#bootstrap-theme h3,#bootstrap-theme h4,#bootstrap-theme h5,#bootstrap-theme h6,#bootstrap-theme .h1,#bootstrap-theme .h2,#bootstrap-theme .h3,#bootstrap-theme .h4,#bootstrap-theme .h5,#bootstrap-theme .h6{font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:#000}#bootstrap-theme h1 small,#bootstrap-theme h1 .small,#bootstrap-theme h2 small,#bootstrap-theme h2 .small,#bootstrap-theme h3 small,#bootstrap-theme h3 .small,#bootstrap-theme h4 small,#bootstrap-theme h4 .small,#bootstrap-theme h5 small,#bootstrap-theme h5 .small,#bootstrap-theme h6 small,#bootstrap-theme h6 .small,#bootstrap-theme .h1 small,#bootstrap-theme .h1 .small,#bootstrap-theme .h2 small,#bootstrap-theme .h2 .small,#bootstrap-theme .h3 small,#bootstrap-theme .h3 .small,#bootstrap-theme .h4 small,#bootstrap-theme .h4 .small,#bootstrap-theme .h5 small,#bootstrap-theme .h5 .small,#bootstrap-theme .h6 small,#bootstrap-theme .h6 .small{font-weight:400;line-height:1;color:#999}#bootstrap-theme h1,#bootstrap-theme .h1,#bootstrap-theme h2,#bootstrap-theme .h2,#bootstrap-theme h3,#bootstrap-theme .h3{margin-top:20px;margin-bottom:10px}#bootstrap-theme h1 small,#bootstrap-theme h1 .small,#bootstrap-theme .h1 small,#bootstrap-theme .h1 .small,#bootstrap-theme h2 small,#bootstrap-theme h2 .small,#bootstrap-theme .h2 small,#bootstrap-theme .h2 .small,#bootstrap-theme h3 small,#bootstrap-theme h3 .small,#bootstrap-theme .h3 small,#bootstrap-theme .h3 .small{font-size:65%}#bootstrap-theme h4,#bootstrap-theme .h4,#bootstrap-theme h5,#bootstrap-theme .h5,#bootstrap-theme h6,#bootstrap-theme .h6{margin-top:10px;margin-bottom:10px}#bootstrap-theme h4 small,#bootstrap-theme h4 .small,#bootstrap-theme .h4 small,#bootstrap-theme .h4 .small,#bootstrap-theme h5 small,#bootstrap-theme h5 .small,#bootstrap-theme .h5 small,#bootstrap-theme .h5 .small,#bootstrap-theme h6 small,#bootstrap-theme h6 .small,#bootstrap-theme .h6 small,#bootstrap-theme .h6 .small{font-size:75%}#bootstrap-theme h1,#bootstrap-theme .h1{font-size:36px}#bootstrap-theme h2,#bootstrap-theme .h2{font-size:30px}#bootstrap-theme h3,#bootstrap-theme .h3{font-size:24px}#bootstrap-theme h4,#bootstrap-theme .h4{font-size:18px}#bootstrap-theme h5,#bootstrap-theme .h5{font-size:14px}#bootstrap-theme h6,#bootstrap-theme .h6{font-size:12px}#bootstrap-theme p{margin:0 0 10px}#bootstrap-theme .lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){#bootstrap-theme .lead{font-size:21px}}#bootstrap-theme small,#bootstrap-theme .small{font-size:85%}#bootstrap-theme mark,#bootstrap-theme .mark{padding:.2em;background-color:#fcf8e3}#bootstrap-theme .text-left{text-align:left}#bootstrap-theme .text-right{text-align:right}#bootstrap-theme .text-center{text-align:center}#bootstrap-theme .text-justify{text-align:justify}#bootstrap-theme .text-nowrap{white-space:nowrap}#bootstrap-theme .text-lowercase{text-transform:lowercase}#bootstrap-theme .text-uppercase,#bootstrap-theme .initialism{text-transform:uppercase}#bootstrap-theme .text-capitalize{text-transform:capitalize}#bootstrap-theme .text-muted{color:#999}#bootstrap-theme .text-primary{color:#000}#bootstrap-theme a.text-primary:hover,#bootstrap-theme a.text-primary:focus{color:#000}#bootstrap-theme .text-success{color:#468847}#bootstrap-theme a.text-success:hover,#bootstrap-theme a.text-success:focus{color:#356635}#bootstrap-theme .text-info{color:#3a87ad}#bootstrap-theme a.text-info:hover,#bootstrap-theme a.text-info:focus{color:#2d6987}#bootstrap-theme .text-warning{color:#c09853}#bootstrap-theme a.text-warning:hover,#bootstrap-theme a.text-warning:focus{color:#a47e3c}#bootstrap-theme .text-danger{color:#b94a48}#bootstrap-theme a.text-danger:hover,#bootstrap-theme a.text-danger:focus{color:#953b39}#bootstrap-theme .bg-primary{color:#fff}#bootstrap-theme .bg-primary{background-color:#000}#bootstrap-theme a.bg-primary:hover,#bootstrap-theme a.bg-primary:focus{background-color:#000}#bootstrap-theme .bg-success{background-color:#dff0d8}#bootstrap-theme a.bg-success:hover,#bootstrap-theme a.bg-success:focus{background-color:#c1e2b3}#bootstrap-theme .bg-info{background-color:#d9edf7}#bootstrap-theme a.bg-info:hover,#bootstrap-theme a.bg-info:focus{background-color:#afd9ee}#bootstrap-theme .bg-warning{background-color:#fcf8e3}#bootstrap-theme a.bg-warning:hover,#bootstrap-theme a.bg-warning:focus{background-color:#f7ecb5}#bootstrap-theme .bg-danger{background-color:#f2dede}#bootstrap-theme a.bg-danger:hover,#bootstrap-theme a.bg-danger:focus{background-color:#e4b9b9}#bootstrap-theme .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}#bootstrap-theme ul,#bootstrap-theme ol{margin-top:0;margin-bottom:10px}#bootstrap-theme ul ul,#bootstrap-theme ul ol,#bootstrap-theme ol ul,#bootstrap-theme ol ol{margin-bottom:0}#bootstrap-theme .list-unstyled{padding-left:0;list-style:none}#bootstrap-theme .list-inline{padding-left:0;list-style:none;margin-left:-5px}#bootstrap-theme .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}#bootstrap-theme dl{margin-top:0;margin-bottom:20px}#bootstrap-theme dt,#bootstrap-theme dd{line-height:1.428571429}#bootstrap-theme dt{font-weight:700}#bootstrap-theme dd{margin-left:0}#bootstrap-theme .dl-horizontal dd:before,#bootstrap-theme .dl-horizontal dd:after{display:table;content:" "}#bootstrap-theme .dl-horizontal dd:after{clear:both}@media (min-width:768px){#bootstrap-theme .dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#bootstrap-theme .dl-horizontal dd{margin-left:180px}}#bootstrap-theme abbr[title],#bootstrap-theme abbr[data-original-title]{cursor:help}#bootstrap-theme .initialism{font-size:90%}#bootstrap-theme blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}#bootstrap-theme blockquote p:last-child,#bootstrap-theme blockquote ul:last-child,#bootstrap-theme blockquote ol:last-child{margin-bottom:0}#bootstrap-theme blockquote footer,#bootstrap-theme blockquote small,#bootstrap-theme blockquote .small{display:block;font-size:80%;line-height:1.428571429;color:#999}#bootstrap-theme blockquote footer:before,#bootstrap-theme blockquote small:before,#bootstrap-theme blockquote .small:before{content:"— "}#bootstrap-theme .blockquote-reverse,#bootstrap-theme blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}#bootstrap-theme .blockquote-reverse footer:before,#bootstrap-theme .blockquote-reverse small:before,#bootstrap-theme .blockquote-reverse .small:before,#bootstrap-theme blockquote.pull-right footer:before,#bootstrap-theme blockquote.pull-right small:before,#bootstrap-theme blockquote.pull-right .small:before{content:""}#bootstrap-theme .blockquote-reverse footer:after,#bootstrap-theme .blockquote-reverse small:after,#bootstrap-theme .blockquote-reverse .small:after,#bootstrap-theme blockquote.pull-right footer:after,#bootstrap-theme blockquote.pull-right small:after,#bootstrap-theme blockquote.pull-right .small:after{content:" —"}#bootstrap-theme address{margin-bottom:20px;font-style:normal;line-height:1.428571429}#bootstrap-theme code,#bootstrap-theme kbd,#bootstrap-theme pre,#bootstrap-theme samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}#bootstrap-theme code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}#bootstrap-theme kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}#bootstrap-theme kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}#bootstrap-theme pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;-ms-word-break:break-all;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}#bootstrap-theme pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}#bootstrap-theme .pre-scrollable{max-height:340px;overflow-y:scroll}#bootstrap-theme .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}#bootstrap-theme .container:before,#bootstrap-theme .container:after{display:table;content:" "}#bootstrap-theme .container:after{clear:both}@media (min-width:768px){#bootstrap-theme .container{width:750px}}@media (min-width:992px){#bootstrap-theme .container{width:970px}}@media (min-width:1200px){#bootstrap-theme .container{width:1170px}}#bootstrap-theme .container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}#bootstrap-theme .container-fluid:before,#bootstrap-theme .container-fluid:after{display:table;content:" "}#bootstrap-theme .container-fluid:after{clear:both}#bootstrap-theme .row{margin-right:-15px;margin-left:-15px}#bootstrap-theme .row:before,#bootstrap-theme .row:after{display:table;content:" "}#bootstrap-theme .row:after{clear:both}#bootstrap-theme .row-no-gutters{margin-right:0;margin-left:0}#bootstrap-theme .row-no-gutters [class*=col-]{padding-right:0;padding-left:0}#bootstrap-theme .col-xs-1,#bootstrap-theme .col-sm-1,#bootstrap-theme .col-md-1,#bootstrap-theme .col-lg-1,#bootstrap-theme .col-xs-2,#bootstrap-theme .col-sm-2,#bootstrap-theme .col-md-2,#bootstrap-theme .col-lg-2,#bootstrap-theme .col-xs-3,#bootstrap-theme .col-sm-3,#bootstrap-theme .col-md-3,#bootstrap-theme .col-lg-3,#bootstrap-theme .col-xs-4,#bootstrap-theme .col-sm-4,#bootstrap-theme .col-md-4,#bootstrap-theme .col-lg-4,#bootstrap-theme .col-xs-5,#bootstrap-theme .col-sm-5,#bootstrap-theme .col-md-5,#bootstrap-theme .col-lg-5,#bootstrap-theme .col-xs-6,#bootstrap-theme .col-sm-6,#bootstrap-theme .col-md-6,#bootstrap-theme .col-lg-6,#bootstrap-theme .col-xs-7,#bootstrap-theme .col-sm-7,#bootstrap-theme .col-md-7,#bootstrap-theme .col-lg-7,#bootstrap-theme .col-xs-8,#bootstrap-theme .col-sm-8,#bootstrap-theme .col-md-8,#bootstrap-theme .col-lg-8,#bootstrap-theme .col-xs-9,#bootstrap-theme .col-sm-9,#bootstrap-theme .col-md-9,#bootstrap-theme .col-lg-9,#bootstrap-theme .col-xs-10,#bootstrap-theme .col-sm-10,#bootstrap-theme .col-md-10,#bootstrap-theme .col-lg-10,#bootstrap-theme .col-xs-11,#bootstrap-theme .col-sm-11,#bootstrap-theme .col-md-11,#bootstrap-theme .col-lg-11,#bootstrap-theme .col-xs-12,#bootstrap-theme .col-sm-12,#bootstrap-theme .col-md-12,#bootstrap-theme .col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}#bootstrap-theme .col-xs-1,#bootstrap-theme .col-xs-2,#bootstrap-theme .col-xs-3,#bootstrap-theme .col-xs-4,#bootstrap-theme .col-xs-5,#bootstrap-theme .col-xs-6,#bootstrap-theme .col-xs-7,#bootstrap-theme .col-xs-8,#bootstrap-theme .col-xs-9,#bootstrap-theme .col-xs-10,#bootstrap-theme .col-xs-11,#bootstrap-theme .col-xs-12{float:left}#bootstrap-theme .col-xs-1{width:8.3333333333%}#bootstrap-theme .col-xs-2{width:16.6666666667%}#bootstrap-theme .col-xs-3{width:25%}#bootstrap-theme .col-xs-4{width:33.3333333333%}#bootstrap-theme .col-xs-5{width:41.6666666667%}#bootstrap-theme .col-xs-6{width:50%}#bootstrap-theme .col-xs-7{width:58.3333333333%}#bootstrap-theme .col-xs-8{width:66.6666666667%}#bootstrap-theme .col-xs-9{width:75%}#bootstrap-theme .col-xs-10{width:83.3333333333%}#bootstrap-theme .col-xs-11{width:91.6666666667%}#bootstrap-theme .col-xs-12{width:100%}#bootstrap-theme .col-xs-pull-0{right:auto}#bootstrap-theme .col-xs-pull-1{right:8.3333333333%}#bootstrap-theme .col-xs-pull-2{right:16.6666666667%}#bootstrap-theme .col-xs-pull-3{right:25%}#bootstrap-theme .col-xs-pull-4{right:33.3333333333%}#bootstrap-theme .col-xs-pull-5{right:41.6666666667%}#bootstrap-theme .col-xs-pull-6{right:50%}#bootstrap-theme .col-xs-pull-7{right:58.3333333333%}#bootstrap-theme .col-xs-pull-8{right:66.6666666667%}#bootstrap-theme .col-xs-pull-9{right:75%}#bootstrap-theme .col-xs-pull-10{right:83.3333333333%}#bootstrap-theme .col-xs-pull-11{right:91.6666666667%}#bootstrap-theme .col-xs-pull-12{right:100%}#bootstrap-theme .col-xs-push-0{left:auto}#bootstrap-theme .col-xs-push-1{left:8.3333333333%}#bootstrap-theme .col-xs-push-2{left:16.6666666667%}#bootstrap-theme .col-xs-push-3{left:25%}#bootstrap-theme .col-xs-push-4{left:33.3333333333%}#bootstrap-theme .col-xs-push-5{left:41.6666666667%}#bootstrap-theme .col-xs-push-6{left:50%}#bootstrap-theme .col-xs-push-7{left:58.3333333333%}#bootstrap-theme .col-xs-push-8{left:66.6666666667%}#bootstrap-theme .col-xs-push-9{left:75%}#bootstrap-theme .col-xs-push-10{left:83.3333333333%}#bootstrap-theme .col-xs-push-11{left:91.6666666667%}#bootstrap-theme .col-xs-push-12{left:100%}#bootstrap-theme .col-xs-offset-0{margin-left:0}#bootstrap-theme .col-xs-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-xs-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-xs-offset-3{margin-left:25%}#bootstrap-theme .col-xs-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-xs-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-xs-offset-6{margin-left:50%}#bootstrap-theme .col-xs-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-xs-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-xs-offset-9{margin-left:75%}#bootstrap-theme .col-xs-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-xs-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-xs-offset-12{margin-left:100%}@media (min-width:768px){#bootstrap-theme .col-sm-1,#bootstrap-theme .col-sm-2,#bootstrap-theme .col-sm-3,#bootstrap-theme .col-sm-4,#bootstrap-theme .col-sm-5,#bootstrap-theme .col-sm-6,#bootstrap-theme .col-sm-7,#bootstrap-theme .col-sm-8,#bootstrap-theme .col-sm-9,#bootstrap-theme .col-sm-10,#bootstrap-theme .col-sm-11,#bootstrap-theme .col-sm-12{float:left}#bootstrap-theme .col-sm-1{width:8.3333333333%}#bootstrap-theme .col-sm-2{width:16.6666666667%}#bootstrap-theme .col-sm-3{width:25%}#bootstrap-theme .col-sm-4{width:33.3333333333%}#bootstrap-theme .col-sm-5{width:41.6666666667%}#bootstrap-theme .col-sm-6{width:50%}#bootstrap-theme .col-sm-7{width:58.3333333333%}#bootstrap-theme .col-sm-8{width:66.6666666667%}#bootstrap-theme .col-sm-9{width:75%}#bootstrap-theme .col-sm-10{width:83.3333333333%}#bootstrap-theme .col-sm-11{width:91.6666666667%}#bootstrap-theme .col-sm-12{width:100%}#bootstrap-theme .col-sm-pull-0{right:auto}#bootstrap-theme .col-sm-pull-1{right:8.3333333333%}#bootstrap-theme .col-sm-pull-2{right:16.6666666667%}#bootstrap-theme .col-sm-pull-3{right:25%}#bootstrap-theme .col-sm-pull-4{right:33.3333333333%}#bootstrap-theme .col-sm-pull-5{right:41.6666666667%}#bootstrap-theme .col-sm-pull-6{right:50%}#bootstrap-theme .col-sm-pull-7{right:58.3333333333%}#bootstrap-theme .col-sm-pull-8{right:66.6666666667%}#bootstrap-theme .col-sm-pull-9{right:75%}#bootstrap-theme .col-sm-pull-10{right:83.3333333333%}#bootstrap-theme .col-sm-pull-11{right:91.6666666667%}#bootstrap-theme .col-sm-pull-12{right:100%}#bootstrap-theme .col-sm-push-0{left:auto}#bootstrap-theme .col-sm-push-1{left:8.3333333333%}#bootstrap-theme .col-sm-push-2{left:16.6666666667%}#bootstrap-theme .col-sm-push-3{left:25%}#bootstrap-theme .col-sm-push-4{left:33.3333333333%}#bootstrap-theme .col-sm-push-5{left:41.6666666667%}#bootstrap-theme .col-sm-push-6{left:50%}#bootstrap-theme .col-sm-push-7{left:58.3333333333%}#bootstrap-theme .col-sm-push-8{left:66.6666666667%}#bootstrap-theme .col-sm-push-9{left:75%}#bootstrap-theme .col-sm-push-10{left:83.3333333333%}#bootstrap-theme .col-sm-push-11{left:91.6666666667%}#bootstrap-theme .col-sm-push-12{left:100%}#bootstrap-theme .col-sm-offset-0{margin-left:0}#bootstrap-theme .col-sm-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-sm-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-sm-offset-3{margin-left:25%}#bootstrap-theme .col-sm-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-sm-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-sm-offset-6{margin-left:50%}#bootstrap-theme .col-sm-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-sm-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-sm-offset-9{margin-left:75%}#bootstrap-theme .col-sm-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-sm-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-sm-offset-12{margin-left:100%}}@media (min-width:992px){#bootstrap-theme .col-md-1,#bootstrap-theme .col-md-2,#bootstrap-theme .col-md-3,#bootstrap-theme .col-md-4,#bootstrap-theme .col-md-5,#bootstrap-theme .col-md-6,#bootstrap-theme .col-md-7,#bootstrap-theme .col-md-8,#bootstrap-theme .col-md-9,#bootstrap-theme .col-md-10,#bootstrap-theme .col-md-11,#bootstrap-theme .col-md-12{float:left}#bootstrap-theme .col-md-1{width:8.3333333333%}#bootstrap-theme .col-md-2{width:16.6666666667%}#bootstrap-theme .col-md-3{width:25%}#bootstrap-theme .col-md-4{width:33.3333333333%}#bootstrap-theme .col-md-5{width:41.6666666667%}#bootstrap-theme .col-md-6{width:50%}#bootstrap-theme .col-md-7{width:58.3333333333%}#bootstrap-theme .col-md-8{width:66.6666666667%}#bootstrap-theme .col-md-9{width:75%}#bootstrap-theme .col-md-10{width:83.3333333333%}#bootstrap-theme .col-md-11{width:91.6666666667%}#bootstrap-theme .col-md-12{width:100%}#bootstrap-theme .col-md-pull-0{right:auto}#bootstrap-theme .col-md-pull-1{right:8.3333333333%}#bootstrap-theme .col-md-pull-2{right:16.6666666667%}#bootstrap-theme .col-md-pull-3{right:25%}#bootstrap-theme .col-md-pull-4{right:33.3333333333%}#bootstrap-theme .col-md-pull-5{right:41.6666666667%}#bootstrap-theme .col-md-pull-6{right:50%}#bootstrap-theme .col-md-pull-7{right:58.3333333333%}#bootstrap-theme .col-md-pull-8{right:66.6666666667%}#bootstrap-theme .col-md-pull-9{right:75%}#bootstrap-theme .col-md-pull-10{right:83.3333333333%}#bootstrap-theme .col-md-pull-11{right:91.6666666667%}#bootstrap-theme .col-md-pull-12{right:100%}#bootstrap-theme .col-md-push-0{left:auto}#bootstrap-theme .col-md-push-1{left:8.3333333333%}#bootstrap-theme .col-md-push-2{left:16.6666666667%}#bootstrap-theme .col-md-push-3{left:25%}#bootstrap-theme .col-md-push-4{left:33.3333333333%}#bootstrap-theme .col-md-push-5{left:41.6666666667%}#bootstrap-theme .col-md-push-6{left:50%}#bootstrap-theme .col-md-push-7{left:58.3333333333%}#bootstrap-theme .col-md-push-8{left:66.6666666667%}#bootstrap-theme .col-md-push-9{left:75%}#bootstrap-theme .col-md-push-10{left:83.3333333333%}#bootstrap-theme .col-md-push-11{left:91.6666666667%}#bootstrap-theme .col-md-push-12{left:100%}#bootstrap-theme .col-md-offset-0{margin-left:0}#bootstrap-theme .col-md-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-md-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-md-offset-3{margin-left:25%}#bootstrap-theme .col-md-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-md-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-md-offset-6{margin-left:50%}#bootstrap-theme .col-md-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-md-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-md-offset-9{margin-left:75%}#bootstrap-theme .col-md-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-md-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-md-offset-12{margin-left:100%}}@media (min-width:1200px){#bootstrap-theme .col-lg-1,#bootstrap-theme .col-lg-2,#bootstrap-theme .col-lg-3,#bootstrap-theme .col-lg-4,#bootstrap-theme .col-lg-5,#bootstrap-theme .col-lg-6,#bootstrap-theme .col-lg-7,#bootstrap-theme .col-lg-8,#bootstrap-theme .col-lg-9,#bootstrap-theme .col-lg-10,#bootstrap-theme .col-lg-11,#bootstrap-theme .col-lg-12{float:left}#bootstrap-theme .col-lg-1{width:8.3333333333%}#bootstrap-theme .col-lg-2{width:16.6666666667%}#bootstrap-theme .col-lg-3{width:25%}#bootstrap-theme .col-lg-4{width:33.3333333333%}#bootstrap-theme .col-lg-5{width:41.6666666667%}#bootstrap-theme .col-lg-6{width:50%}#bootstrap-theme .col-lg-7{width:58.3333333333%}#bootstrap-theme .col-lg-8{width:66.6666666667%}#bootstrap-theme .col-lg-9{width:75%}#bootstrap-theme .col-lg-10{width:83.3333333333%}#bootstrap-theme .col-lg-11{width:91.6666666667%}#bootstrap-theme .col-lg-12{width:100%}#bootstrap-theme .col-lg-pull-0{right:auto}#bootstrap-theme .col-lg-pull-1{right:8.3333333333%}#bootstrap-theme .col-lg-pull-2{right:16.6666666667%}#bootstrap-theme .col-lg-pull-3{right:25%}#bootstrap-theme .col-lg-pull-4{right:33.3333333333%}#bootstrap-theme .col-lg-pull-5{right:41.6666666667%}#bootstrap-theme .col-lg-pull-6{right:50%}#bootstrap-theme .col-lg-pull-7{right:58.3333333333%}#bootstrap-theme .col-lg-pull-8{right:66.6666666667%}#bootstrap-theme .col-lg-pull-9{right:75%}#bootstrap-theme .col-lg-pull-10{right:83.3333333333%}#bootstrap-theme .col-lg-pull-11{right:91.6666666667%}#bootstrap-theme .col-lg-pull-12{right:100%}#bootstrap-theme .col-lg-push-0{left:auto}#bootstrap-theme .col-lg-push-1{left:8.3333333333%}#bootstrap-theme .col-lg-push-2{left:16.6666666667%}#bootstrap-theme .col-lg-push-3{left:25%}#bootstrap-theme .col-lg-push-4{left:33.3333333333%}#bootstrap-theme .col-lg-push-5{left:41.6666666667%}#bootstrap-theme .col-lg-push-6{left:50%}#bootstrap-theme .col-lg-push-7{left:58.3333333333%}#bootstrap-theme .col-lg-push-8{left:66.6666666667%}#bootstrap-theme .col-lg-push-9{left:75%}#bootstrap-theme .col-lg-push-10{left:83.3333333333%}#bootstrap-theme .col-lg-push-11{left:91.6666666667%}#bootstrap-theme .col-lg-push-12{left:100%}#bootstrap-theme .col-lg-offset-0{margin-left:0}#bootstrap-theme .col-lg-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-lg-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-lg-offset-3{margin-left:25%}#bootstrap-theme .col-lg-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-lg-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-lg-offset-6{margin-left:50%}#bootstrap-theme .col-lg-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-lg-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-lg-offset-9{margin-left:75%}#bootstrap-theme .col-lg-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-lg-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-lg-offset-12{margin-left:100%}}#bootstrap-theme table{background-color:transparent}#bootstrap-theme table col[class*=col-]{position:static;display:table-column;float:none}#bootstrap-theme table td[class*=col-],#bootstrap-theme table th[class*=col-]{position:static;display:table-cell;float:none}#bootstrap-theme caption{padding-top:8px;padding-bottom:8px;color:#999;text-align:left}#bootstrap-theme th{text-align:left}#bootstrap-theme .table{width:100%;max-width:100%;margin-bottom:20px}#bootstrap-theme .table>thead>tr>th,#bootstrap-theme .table>thead>tr>td,#bootstrap-theme .table>tbody>tr>th,#bootstrap-theme .table>tbody>tr>td,#bootstrap-theme .table>tfoot>tr>th,#bootstrap-theme .table>tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}#bootstrap-theme .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}#bootstrap-theme .table>caption+thead>tr:first-child>th,#bootstrap-theme .table>caption+thead>tr:first-child>td,#bootstrap-theme .table>colgroup+thead>tr:first-child>th,#bootstrap-theme .table>colgroup+thead>tr:first-child>td,#bootstrap-theme .table>thead:first-child>tr:first-child>th,#bootstrap-theme .table>thead:first-child>tr:first-child>td{border-top:0}#bootstrap-theme .table>tbody+tbody{border-top:2px solid #ddd}#bootstrap-theme .table .table{background-color:#fff}#bootstrap-theme .table-condensed>thead>tr>th,#bootstrap-theme .table-condensed>thead>tr>td,#bootstrap-theme .table-condensed>tbody>tr>th,#bootstrap-theme .table-condensed>tbody>tr>td,#bootstrap-theme .table-condensed>tfoot>tr>th,#bootstrap-theme .table-condensed>tfoot>tr>td{padding:5px}#bootstrap-theme .table-bordered{border:1px solid #ddd}#bootstrap-theme .table-bordered>thead>tr>th,#bootstrap-theme .table-bordered>thead>tr>td,#bootstrap-theme .table-bordered>tbody>tr>th,#bootstrap-theme .table-bordered>tbody>tr>td,#bootstrap-theme .table-bordered>tfoot>tr>th,#bootstrap-theme .table-bordered>tfoot>tr>td{border:1px solid #ddd}#bootstrap-theme .table-bordered>thead>tr>th,#bootstrap-theme .table-bordered>thead>tr>td{border-bottom-width:2px}#bootstrap-theme .table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}#bootstrap-theme .table-hover>tbody>tr:hover{background-color:#f5f5f5}#bootstrap-theme .table>thead>tr>td.active,#bootstrap-theme .table>thead>tr>th.active,#bootstrap-theme .table>thead>tr.active>td,#bootstrap-theme .table>thead>tr.active>th,#bootstrap-theme .table>tbody>tr>td.active,#bootstrap-theme .table>tbody>tr>th.active,#bootstrap-theme .table>tbody>tr.active>td,#bootstrap-theme .table>tbody>tr.active>th,#bootstrap-theme .table>tfoot>tr>td.active,#bootstrap-theme .table>tfoot>tr>th.active,#bootstrap-theme .table>tfoot>tr.active>td,#bootstrap-theme .table>tfoot>tr.active>th{background-color:#f5f5f5}#bootstrap-theme .table-hover>tbody>tr>td.active:hover,#bootstrap-theme .table-hover>tbody>tr>th.active:hover,#bootstrap-theme .table-hover>tbody>tr.active:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.active,#bootstrap-theme .table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}#bootstrap-theme .table>thead>tr>td.success,#bootstrap-theme .table>thead>tr>th.success,#bootstrap-theme .table>thead>tr.success>td,#bootstrap-theme .table>thead>tr.success>th,#bootstrap-theme .table>tbody>tr>td.success,#bootstrap-theme .table>tbody>tr>th.success,#bootstrap-theme .table>tbody>tr.success>td,#bootstrap-theme .table>tbody>tr.success>th,#bootstrap-theme .table>tfoot>tr>td.success,#bootstrap-theme .table>tfoot>tr>th.success,#bootstrap-theme .table>tfoot>tr.success>td,#bootstrap-theme .table>tfoot>tr.success>th{background-color:#dff0d8}#bootstrap-theme .table-hover>tbody>tr>td.success:hover,#bootstrap-theme .table-hover>tbody>tr>th.success:hover,#bootstrap-theme .table-hover>tbody>tr.success:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.success,#bootstrap-theme .table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}#bootstrap-theme .table>thead>tr>td.info,#bootstrap-theme .table>thead>tr>th.info,#bootstrap-theme .table>thead>tr.info>td,#bootstrap-theme .table>thead>tr.info>th,#bootstrap-theme .table>tbody>tr>td.info,#bootstrap-theme .table>tbody>tr>th.info,#bootstrap-theme .table>tbody>tr.info>td,#bootstrap-theme .table>tbody>tr.info>th,#bootstrap-theme .table>tfoot>tr>td.info,#bootstrap-theme .table>tfoot>tr>th.info,#bootstrap-theme .table>tfoot>tr.info>td,#bootstrap-theme .table>tfoot>tr.info>th{background-color:#d9edf7}#bootstrap-theme .table-hover>tbody>tr>td.info:hover,#bootstrap-theme .table-hover>tbody>tr>th.info:hover,#bootstrap-theme .table-hover>tbody>tr.info:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.info,#bootstrap-theme .table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}#bootstrap-theme .table>thead>tr>td.warning,#bootstrap-theme .table>thead>tr>th.warning,#bootstrap-theme .table>thead>tr.warning>td,#bootstrap-theme .table>thead>tr.warning>th,#bootstrap-theme .table>tbody>tr>td.warning,#bootstrap-theme .table>tbody>tr>th.warning,#bootstrap-theme .table>tbody>tr.warning>td,#bootstrap-theme .table>tbody>tr.warning>th,#bootstrap-theme .table>tfoot>tr>td.warning,#bootstrap-theme .table>tfoot>tr>th.warning,#bootstrap-theme .table>tfoot>tr.warning>td,#bootstrap-theme .table>tfoot>tr.warning>th{background-color:#fcf8e3}#bootstrap-theme .table-hover>tbody>tr>td.warning:hover,#bootstrap-theme .table-hover>tbody>tr>th.warning:hover,#bootstrap-theme .table-hover>tbody>tr.warning:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.warning,#bootstrap-theme .table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}#bootstrap-theme .table>thead>tr>td.danger,#bootstrap-theme .table>thead>tr>th.danger,#bootstrap-theme .table>thead>tr.danger>td,#bootstrap-theme .table>thead>tr.danger>th,#bootstrap-theme .table>tbody>tr>td.danger,#bootstrap-theme .table>tbody>tr>th.danger,#bootstrap-theme .table>tbody>tr.danger>td,#bootstrap-theme .table>tbody>tr.danger>th,#bootstrap-theme .table>tfoot>tr>td.danger,#bootstrap-theme .table>tfoot>tr>th.danger,#bootstrap-theme .table>tfoot>tr.danger>td,#bootstrap-theme .table>tfoot>tr.danger>th{background-color:#f2dede}#bootstrap-theme .table-hover>tbody>tr>td.danger:hover,#bootstrap-theme .table-hover>tbody>tr>th.danger:hover,#bootstrap-theme .table-hover>tbody>tr.danger:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.danger,#bootstrap-theme .table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}#bootstrap-theme .table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){#bootstrap-theme .table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}#bootstrap-theme .table-responsive>.table{margin-bottom:0}#bootstrap-theme .table-responsive>.table>thead>tr>th,#bootstrap-theme .table-responsive>.table>thead>tr>td,#bootstrap-theme .table-responsive>.table>tbody>tr>th,#bootstrap-theme .table-responsive>.table>tbody>tr>td,#bootstrap-theme .table-responsive>.table>tfoot>tr>th,#bootstrap-theme .table-responsive>.table>tfoot>tr>td{white-space:nowrap}#bootstrap-theme .table-responsive>.table-bordered{border:0}#bootstrap-theme .table-responsive>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}#bootstrap-theme .table-responsive>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}#bootstrap-theme .table-responsive>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr:last-child>th,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}#bootstrap-theme fieldset{min-width:0;padding:0;margin:0;border:0}#bootstrap-theme legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#555;border:0;border-bottom:1px solid #e5e5e5}#bootstrap-theme label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}#bootstrap-theme input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}#bootstrap-theme input[type=radio],#bootstrap-theme input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}#bootstrap-theme input[type=radio][disabled],#bootstrap-theme input[type=radio].disabled,fieldset[disabled] #bootstrap-theme input[type=radio],#bootstrap-theme input[type=checkbox][disabled],#bootstrap-theme input[type=checkbox].disabled,fieldset[disabled] #bootstrap-theme input[type=checkbox]{cursor:not-allowed}#bootstrap-theme input[type=file]{display:block}#bootstrap-theme input[type=range]{display:block;width:100%}#bootstrap-theme select[multiple],#bootstrap-theme select[size]{height:auto}#bootstrap-theme input[type=file]:focus,#bootstrap-theme input[type=radio]:focus,#bootstrap-theme input[type=checkbox]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme output{display:block;padding-top:5px;font-size:14px;line-height:1.428571429;color:#555}#bootstrap-theme .form-control{display:block;width:100%;height:30px;padding:4px 8px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}#bootstrap-theme .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}#bootstrap-theme .form-control::-moz-placeholder{color:#999;opacity:1}#bootstrap-theme .form-control:-ms-input-placeholder{color:#999}#bootstrap-theme .form-control::-webkit-input-placeholder{color:#999}#bootstrap-theme .form-control::-ms-expand{background-color:transparent;border:0}#bootstrap-theme .form-control[disabled],#bootstrap-theme .form-control[readonly],fieldset[disabled] #bootstrap-theme .form-control{background-color:#eee;opacity:1}#bootstrap-theme .form-control[disabled],fieldset[disabled] #bootstrap-theme .form-control{cursor:not-allowed}#bootstrap-theme textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){#bootstrap-theme input[type=date].form-control,#bootstrap-theme input[type=time].form-control,#bootstrap-theme input[type=datetime-local].form-control,#bootstrap-theme input[type=month].form-control{line-height:30px}#bootstrap-theme input[type=date].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=date],#bootstrap-theme .input-group-sm>input.input-group-addon[type=date],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=date],.input-group-sm #bootstrap-theme input[type=date],#bootstrap-theme input[type=time].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=time],#bootstrap-theme .input-group-sm>input.input-group-addon[type=time],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=time],.input-group-sm #bootstrap-theme input[type=time],#bootstrap-theme input[type=datetime-local].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=datetime-local],#bootstrap-theme .input-group-sm>input.input-group-addon[type=datetime-local],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=datetime-local],.input-group-sm #bootstrap-theme input[type=datetime-local],#bootstrap-theme input[type=month].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=month],#bootstrap-theme .input-group-sm>input.input-group-addon[type=month],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=month],.input-group-sm #bootstrap-theme input[type=month]{line-height:30px}#bootstrap-theme input[type=date].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=date],#bootstrap-theme .input-group-lg>input.input-group-addon[type=date],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=date],.input-group-lg #bootstrap-theme input[type=date],#bootstrap-theme input[type=time].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=time],#bootstrap-theme .input-group-lg>input.input-group-addon[type=time],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=time],.input-group-lg #bootstrap-theme input[type=time],#bootstrap-theme input[type=datetime-local].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=datetime-local],#bootstrap-theme .input-group-lg>input.input-group-addon[type=datetime-local],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=datetime-local],.input-group-lg #bootstrap-theme input[type=datetime-local],#bootstrap-theme input[type=month].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=month],#bootstrap-theme .input-group-lg>input.input-group-addon[type=month],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=month],.input-group-lg #bootstrap-theme input[type=month]{line-height:54px}}#bootstrap-theme .form-group{margin-bottom:15px}#bootstrap-theme .radio,#bootstrap-theme .checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}#bootstrap-theme .radio.disabled label,fieldset[disabled] #bootstrap-theme .radio label,#bootstrap-theme .checkbox.disabled label,fieldset[disabled] #bootstrap-theme .checkbox label{cursor:not-allowed}#bootstrap-theme .radio label,#bootstrap-theme .checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}#bootstrap-theme .radio input[type=radio],#bootstrap-theme .radio-inline input[type=radio],#bootstrap-theme .checkbox input[type=checkbox],#bootstrap-theme .checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}#bootstrap-theme .radio+.radio,#bootstrap-theme .checkbox+.checkbox{margin-top:-5px}#bootstrap-theme .radio-inline,#bootstrap-theme .checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}#bootstrap-theme .radio-inline.disabled,fieldset[disabled] #bootstrap-theme .radio-inline,#bootstrap-theme .checkbox-inline.disabled,fieldset[disabled] #bootstrap-theme .checkbox-inline{cursor:not-allowed}#bootstrap-theme .radio-inline+.radio-inline,#bootstrap-theme .checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}#bootstrap-theme .form-control-static{min-height:34px;padding-top:5px;padding-bottom:5px;margin-bottom:0}#bootstrap-theme .form-control-static.input-lg,#bootstrap-theme .input-group-lg>.form-control-static.form-control,#bootstrap-theme .input-group-lg>.form-control-static.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.form-control-static.btn,#bootstrap-theme .form-control-static.input-sm,#bootstrap-theme .input-group-sm>.form-control-static.form-control,#bootstrap-theme .input-group-sm>.form-control-static.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}#bootstrap-theme .input-sm,#bootstrap-theme .input-group-sm>.form-control,#bootstrap-theme .input-group-sm>.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme select.input-sm,#bootstrap-theme .input-group-sm>select.form-control,#bootstrap-theme .input-group-sm>select.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>select.btn{height:30px;line-height:30px}#bootstrap-theme textarea.input-sm,#bootstrap-theme .input-group-sm>textarea.form-control,#bootstrap-theme .input-group-sm>textarea.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>textarea.btn,#bootstrap-theme select[multiple].input-sm,#bootstrap-theme .input-group-sm>select.form-control[multiple],#bootstrap-theme .input-group-sm>select.input-group-addon[multiple],#bootstrap-theme .input-group-sm>.input-group-btn>select.btn[multiple]{height:auto}#bootstrap-theme .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .form-group-sm select.form-control{height:30px;line-height:30px}#bootstrap-theme .form-group-sm textarea.form-control,#bootstrap-theme .form-group-sm select[multiple].form-control{height:auto}#bootstrap-theme .form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}#bootstrap-theme .input-lg,#bootstrap-theme .input-group-lg>.form-control,#bootstrap-theme .input-group-lg>.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.btn{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme select.input-lg,#bootstrap-theme .input-group-lg>select.form-control,#bootstrap-theme .input-group-lg>select.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>select.btn{height:54px;line-height:54px}#bootstrap-theme textarea.input-lg,#bootstrap-theme .input-group-lg>textarea.form-control,#bootstrap-theme .input-group-lg>textarea.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>textarea.btn,#bootstrap-theme select[multiple].input-lg,#bootstrap-theme .input-group-lg>select.form-control[multiple],#bootstrap-theme .input-group-lg>select.input-group-addon[multiple],#bootstrap-theme .input-group-lg>.input-group-btn>select.btn[multiple]{height:auto}#bootstrap-theme .form-group-lg .form-control{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme .form-group-lg select.form-control{height:54px;line-height:54px}#bootstrap-theme .form-group-lg textarea.form-control,#bootstrap-theme .form-group-lg select[multiple].form-control{height:auto}#bootstrap-theme .form-group-lg .form-control-static{height:54px;min-height:38px;padding:15px 16px;font-size:18px;line-height:1.3333333}#bootstrap-theme .has-feedback{position:relative}#bootstrap-theme .has-feedback .form-control{padding-right:37.5px}#bootstrap-theme .form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:30px;height:30px;line-height:30px;text-align:center;pointer-events:none}#bootstrap-theme .input-lg+.form-control-feedback,#bootstrap-theme .input-group-lg>.form-control+.form-control-feedback,#bootstrap-theme .input-group-lg>.input-group-addon+.form-control-feedback,#bootstrap-theme .input-group-lg>.input-group-btn>.btn+.form-control-feedback,#bootstrap-theme .input-group-lg+.form-control-feedback,#bootstrap-theme .form-group-lg .form-control+.form-control-feedback{width:54px;height:54px;line-height:54px}#bootstrap-theme .input-sm+.form-control-feedback,#bootstrap-theme .input-group-sm>.form-control+.form-control-feedback,#bootstrap-theme .input-group-sm>.input-group-addon+.form-control-feedback,#bootstrap-theme .input-group-sm>.input-group-btn>.btn+.form-control-feedback,#bootstrap-theme .input-group-sm+.form-control-feedback,#bootstrap-theme .form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}#bootstrap-theme .has-success .help-block,#bootstrap-theme .has-success .control-label,#bootstrap-theme .has-success .radio,#bootstrap-theme .has-success .checkbox,#bootstrap-theme .has-success .radio-inline,#bootstrap-theme .has-success .checkbox-inline,#bootstrap-theme .has-success.radio label,#bootstrap-theme .has-success.checkbox label,#bootstrap-theme .has-success.radio-inline label,#bootstrap-theme .has-success.checkbox-inline label{color:#468847}#bootstrap-theme .has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b}#bootstrap-theme .has-success .input-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}#bootstrap-theme .has-success .form-control-feedback{color:#468847}#bootstrap-theme .has-warning .help-block,#bootstrap-theme .has-warning .control-label,#bootstrap-theme .has-warning .radio,#bootstrap-theme .has-warning .checkbox,#bootstrap-theme .has-warning .radio-inline,#bootstrap-theme .has-warning .checkbox-inline,#bootstrap-theme .has-warning.radio label,#bootstrap-theme .has-warning.checkbox label,#bootstrap-theme .has-warning.radio-inline label,#bootstrap-theme .has-warning.checkbox-inline label{color:#c09853}#bootstrap-theme .has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e}#bootstrap-theme .has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}#bootstrap-theme .has-warning .form-control-feedback{color:#c09853}#bootstrap-theme .has-error .help-block,#bootstrap-theme .has-error .control-label,#bootstrap-theme .has-error .radio,#bootstrap-theme .has-error .checkbox,#bootstrap-theme .has-error .radio-inline,#bootstrap-theme .has-error .checkbox-inline,#bootstrap-theme .has-error.radio label,#bootstrap-theme .has-error.checkbox label,#bootstrap-theme .has-error.radio-inline label,#bootstrap-theme .has-error.checkbox-inline label{color:#b94a48}#bootstrap-theme .has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392}#bootstrap-theme .has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}#bootstrap-theme .has-error .form-control-feedback{color:#b94a48}#bootstrap-theme .has-feedback label~.form-control-feedback{top:25px}#bootstrap-theme .has-feedback label.sr-only~.form-control-feedback{top:0}#bootstrap-theme .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#959595}@media (min-width:768px){#bootstrap-theme .form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}#bootstrap-theme .form-inline .form-control-static{display:inline-block}#bootstrap-theme .form-inline .input-group{display:inline-table;vertical-align:middle}#bootstrap-theme .form-inline .input-group .input-group-addon,#bootstrap-theme .form-inline .input-group .input-group-btn,#bootstrap-theme .form-inline .input-group .form-control{width:auto}#bootstrap-theme .form-inline .input-group>.form-control{width:100%}#bootstrap-theme .form-inline .control-label{margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .radio,#bootstrap-theme .form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .radio label,#bootstrap-theme .form-inline .checkbox label{padding-left:0}#bootstrap-theme .form-inline .radio input[type=radio],#bootstrap-theme .form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}#bootstrap-theme .form-inline .has-feedback .form-control-feedback{top:0}}#bootstrap-theme .form-horizontal .radio,#bootstrap-theme .form-horizontal .checkbox,#bootstrap-theme .form-horizontal .radio-inline,#bootstrap-theme .form-horizontal .checkbox-inline{padding-top:5px;margin-top:0;margin-bottom:0}#bootstrap-theme .form-horizontal .radio,#bootstrap-theme .form-horizontal .checkbox{min-height:25px}#bootstrap-theme .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}#bootstrap-theme .form-horizontal .form-group:before,#bootstrap-theme .form-horizontal .form-group:after{display:table;content:" "}#bootstrap-theme .form-horizontal .form-group:after{clear:both}@media (min-width:768px){#bootstrap-theme .form-horizontal .control-label{padding-top:5px;margin-bottom:0;text-align:right}}#bootstrap-theme .form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){#bootstrap-theme .form-horizontal .form-group-lg .control-label{padding-top:15px;font-size:18px}}@media (min-width:768px){#bootstrap-theme .form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}#bootstrap-theme .btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:4px 8px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#bootstrap-theme .btn:focus,#bootstrap-theme .btn.focus,#bootstrap-theme .btn:active:focus,#bootstrap-theme .btn:active.focus,#bootstrap-theme .btn.active:focus,#bootstrap-theme .btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme .btn:hover,#bootstrap-theme .btn:focus,#bootstrap-theme .btn.focus{color:#fff;text-decoration:none}#bootstrap-theme .btn:active,#bootstrap-theme .btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bootstrap-theme .btn.disabled,#bootstrap-theme .btn[disabled],fieldset[disabled] #bootstrap-theme .btn{cursor:not-allowed;-webkit-filter:alpha(opacity=65);filter:alpha(opacity=65);opacity:.65;-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme a.btn.disabled,fieldset[disabled] #bootstrap-theme a.btn{pointer-events:none}#bootstrap-theme .btn-default{color:#fff;background-color:#70716b;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:focus,#bootstrap-theme .btn-default.focus{color:#fff;background-color:#565752;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:hover{color:#fff;background-color:#565752;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:active,#bootstrap-theme .btn-default.active,.open>#bootstrap-theme .btn-default.dropdown-toggle{color:#fff;background-color:#565752;background-image:none;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:active:hover,#bootstrap-theme .btn-default:active:focus,#bootstrap-theme .btn-default:active.focus,#bootstrap-theme .btn-default.active:hover,#bootstrap-theme .btn-default.active:focus,#bootstrap-theme .btn-default.active.focus,.open>#bootstrap-theme .btn-default.dropdown-toggle:hover,.open>#bootstrap-theme .btn-default.dropdown-toggle:focus,.open>#bootstrap-theme .btn-default.dropdown-toggle.focus{color:#fff;background-color:#444441;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default.disabled:hover,#bootstrap-theme .btn-default.disabled:focus,#bootstrap-theme .btn-default.disabled.focus,#bootstrap-theme .btn-default[disabled]:hover,#bootstrap-theme .btn-default[disabled]:focus,#bootstrap-theme .btn-default[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-default:hover,fieldset[disabled] #bootstrap-theme .btn-default:focus,fieldset[disabled] #bootstrap-theme .btn-default.focus{background-color:#70716b;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default .badge{color:#70716b;background-color:#fff}#bootstrap-theme .btn-primary{color:#fff;background-color:#70716b;border-color:#70716b}#bootstrap-theme .btn-primary:focus,#bootstrap-theme .btn-primary.focus{color:#fff;background-color:#565752;border-color:#2f302d}#bootstrap-theme .btn-primary:hover{color:#fff;background-color:#565752;border-color:#51524d}#bootstrap-theme .btn-primary:active,#bootstrap-theme .btn-primary.active,.open>#bootstrap-theme .btn-primary.dropdown-toggle{color:#fff;background-color:#565752;background-image:none;border-color:#51524d}#bootstrap-theme .btn-primary:active:hover,#bootstrap-theme .btn-primary:active:focus,#bootstrap-theme .btn-primary:active.focus,#bootstrap-theme .btn-primary.active:hover,#bootstrap-theme .btn-primary.active:focus,#bootstrap-theme .btn-primary.active.focus,.open>#bootstrap-theme .btn-primary.dropdown-toggle:hover,.open>#bootstrap-theme .btn-primary.dropdown-toggle:focus,.open>#bootstrap-theme .btn-primary.dropdown-toggle.focus{color:#fff;background-color:#444441;border-color:#2f302d}#bootstrap-theme .btn-primary.disabled:hover,#bootstrap-theme .btn-primary.disabled:focus,#bootstrap-theme .btn-primary.disabled.focus,#bootstrap-theme .btn-primary[disabled]:hover,#bootstrap-theme .btn-primary[disabled]:focus,#bootstrap-theme .btn-primary[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-primary:hover,fieldset[disabled] #bootstrap-theme .btn-primary:focus,fieldset[disabled] #bootstrap-theme .btn-primary.focus{background-color:#70716b;border-color:#70716b}#bootstrap-theme .btn-primary .badge{color:#70716b;background-color:#fff}#bootstrap-theme .btn-success{color:#fff;background-color:#73a839;border-color:#73a839}#bootstrap-theme .btn-success:focus,#bootstrap-theme .btn-success.focus{color:#fff;background-color:#59822c;border-color:#324919}#bootstrap-theme .btn-success:hover{color:#fff;background-color:#59822c;border-color:#547a29}#bootstrap-theme .btn-success:active,#bootstrap-theme .btn-success.active,.open>#bootstrap-theme .btn-success.dropdown-toggle{color:#fff;background-color:#59822c;background-image:none;border-color:#547a29}#bootstrap-theme .btn-success:active:hover,#bootstrap-theme .btn-success:active:focus,#bootstrap-theme .btn-success:active.focus,#bootstrap-theme .btn-success.active:hover,#bootstrap-theme .btn-success.active:focus,#bootstrap-theme .btn-success.active.focus,.open>#bootstrap-theme .btn-success.dropdown-toggle:hover,.open>#bootstrap-theme .btn-success.dropdown-toggle:focus,.open>#bootstrap-theme .btn-success.dropdown-toggle.focus{color:#fff;background-color:#476723;border-color:#324919}#bootstrap-theme .btn-success.disabled:hover,#bootstrap-theme .btn-success.disabled:focus,#bootstrap-theme .btn-success.disabled.focus,#bootstrap-theme .btn-success[disabled]:hover,#bootstrap-theme .btn-success[disabled]:focus,#bootstrap-theme .btn-success[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-success:hover,fieldset[disabled] #bootstrap-theme .btn-success:focus,fieldset[disabled] #bootstrap-theme .btn-success.focus{background-color:#73a839;border-color:#73a839}#bootstrap-theme .btn-success .badge{color:#73a839;background-color:#fff}#bootstrap-theme .btn-info{color:#fff;background-color:#cde8fe;border-color:#cde8fe}#bootstrap-theme .btn-info:focus,#bootstrap-theme .btn-info.focus{color:#fff;background-color:#9bd1fd;border-color:#50affc}#bootstrap-theme .btn-info:hover{color:#fff;background-color:#9bd1fd;border-color:#91ccfd}#bootstrap-theme .btn-info:active,#bootstrap-theme .btn-info.active,.open>#bootstrap-theme .btn-info.dropdown-toggle{color:#fff;background-color:#9bd1fd;background-image:none;border-color:#91ccfd}#bootstrap-theme .btn-info:active:hover,#bootstrap-theme .btn-info:active:focus,#bootstrap-theme .btn-info:active.focus,#bootstrap-theme .btn-info.active:hover,#bootstrap-theme .btn-info.active:focus,#bootstrap-theme .btn-info.active.focus,.open>#bootstrap-theme .btn-info.dropdown-toggle:hover,.open>#bootstrap-theme .btn-info.dropdown-toggle:focus,.open>#bootstrap-theme .btn-info.dropdown-toggle.focus{color:#fff;background-color:#78c1fc;border-color:#50affc}#bootstrap-theme .btn-info.disabled:hover,#bootstrap-theme .btn-info.disabled:focus,#bootstrap-theme .btn-info.disabled.focus,#bootstrap-theme .btn-info[disabled]:hover,#bootstrap-theme .btn-info[disabled]:focus,#bootstrap-theme .btn-info[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-info:hover,fieldset[disabled] #bootstrap-theme .btn-info:focus,fieldset[disabled] #bootstrap-theme .btn-info.focus{background-color:#cde8fe;border-color:#cde8fe}#bootstrap-theme .btn-info .badge{color:#cde8fe;background-color:#fff}#bootstrap-theme .btn-warning{color:#fff;background-color:#dd5600;border-color:#dd5600}#bootstrap-theme .btn-warning:focus,#bootstrap-theme .btn-warning.focus{color:#fff;background-color:#aa4200;border-color:#5e2400}#bootstrap-theme .btn-warning:hover{color:#fff;background-color:#aa4200;border-color:#a03e00}#bootstrap-theme .btn-warning:active,#bootstrap-theme .btn-warning.active,.open>#bootstrap-theme .btn-warning.dropdown-toggle{color:#fff;background-color:#aa4200;background-image:none;border-color:#a03e00}#bootstrap-theme .btn-warning:active:hover,#bootstrap-theme .btn-warning:active:focus,#bootstrap-theme .btn-warning:active.focus,#bootstrap-theme .btn-warning.active:hover,#bootstrap-theme .btn-warning.active:focus,#bootstrap-theme .btn-warning.active.focus,.open>#bootstrap-theme .btn-warning.dropdown-toggle:hover,.open>#bootstrap-theme .btn-warning.dropdown-toggle:focus,.open>#bootstrap-theme .btn-warning.dropdown-toggle.focus{color:#fff;background-color:#863400;border-color:#5e2400}#bootstrap-theme .btn-warning.disabled:hover,#bootstrap-theme .btn-warning.disabled:focus,#bootstrap-theme .btn-warning.disabled.focus,#bootstrap-theme .btn-warning[disabled]:hover,#bootstrap-theme .btn-warning[disabled]:focus,#bootstrap-theme .btn-warning[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-warning:hover,fieldset[disabled] #bootstrap-theme .btn-warning:focus,fieldset[disabled] #bootstrap-theme .btn-warning.focus{background-color:#dd5600;border-color:#dd5600}#bootstrap-theme .btn-warning .badge{color:#dd5600;background-color:#fff}#bootstrap-theme .btn-danger{color:#fff;background-color:#c71c22;border-color:#c71c22}#bootstrap-theme .btn-danger:focus,#bootstrap-theme .btn-danger.focus{color:#fff;background-color:#9a161a;border-color:#570c0f}#bootstrap-theme .btn-danger:hover{color:#fff;background-color:#9a161a;border-color:#911419}#bootstrap-theme .btn-danger:active,#bootstrap-theme .btn-danger.active,.open>#bootstrap-theme .btn-danger.dropdown-toggle{color:#fff;background-color:#9a161a;background-image:none;border-color:#911419}#bootstrap-theme .btn-danger:active:hover,#bootstrap-theme .btn-danger:active:focus,#bootstrap-theme .btn-danger:active.focus,#bootstrap-theme .btn-danger.active:hover,#bootstrap-theme .btn-danger.active:focus,#bootstrap-theme .btn-danger.active.focus,.open>#bootstrap-theme .btn-danger.dropdown-toggle:hover,.open>#bootstrap-theme .btn-danger.dropdown-toggle:focus,.open>#bootstrap-theme .btn-danger.dropdown-toggle.focus{color:#fff;background-color:#7b1115;border-color:#570c0f}#bootstrap-theme .btn-danger.disabled:hover,#bootstrap-theme .btn-danger.disabled:focus,#bootstrap-theme .btn-danger.disabled.focus,#bootstrap-theme .btn-danger[disabled]:hover,#bootstrap-theme .btn-danger[disabled]:focus,#bootstrap-theme .btn-danger[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-danger:hover,fieldset[disabled] #bootstrap-theme .btn-danger:focus,fieldset[disabled] #bootstrap-theme .btn-danger.focus{background-color:#c71c22;border-color:#c71c22}#bootstrap-theme .btn-danger .badge{color:#c71c22;background-color:#fff}#bootstrap-theme .btn-link{font-weight:400;color:#2786c2;border-radius:0}#bootstrap-theme .btn-link,#bootstrap-theme .btn-link:active,#bootstrap-theme .btn-link.active,#bootstrap-theme .btn-link[disabled],fieldset[disabled] #bootstrap-theme .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme .btn-link,#bootstrap-theme .btn-link:hover,#bootstrap-theme .btn-link:focus,#bootstrap-theme .btn-link:active{border-color:transparent}#bootstrap-theme .btn-link:hover,#bootstrap-theme .btn-link:focus{color:#1a5a82;text-decoration:underline;background-color:transparent}#bootstrap-theme .btn-link[disabled]:hover,#bootstrap-theme .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .btn-link:hover,fieldset[disabled] #bootstrap-theme .btn-link:focus{color:#999;text-decoration:none}#bootstrap-theme .btn-lg,#bootstrap-theme .btn-group-lg>.btn{padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme .btn-sm,#bootstrap-theme .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .btn-xs,#bootstrap-theme .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .btn-block{display:block;width:100%}#bootstrap-theme .btn-block+.btn-block{margin-top:5px}#bootstrap-theme input[type=submit].btn-block,#bootstrap-theme input[type=reset].btn-block,#bootstrap-theme input[type=button].btn-block{width:100%}#bootstrap-theme .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}#bootstrap-theme .fade.in{opacity:1}#bootstrap-theme .collapse{display:none}#bootstrap-theme .collapse.in{display:block}#bootstrap-theme tr.collapse.in{display:table-row}#bootstrap-theme tbody.collapse.in{display:table-row-group}#bootstrap-theme .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}#bootstrap-theme .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}#bootstrap-theme .dropup,#bootstrap-theme .dropdown{position:relative}#bootstrap-theme .dropdown-toggle:focus{outline:0}#bootstrap-theme .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}#bootstrap-theme .dropdown-menu.pull-right{right:0;left:auto}#bootstrap-theme .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}#bootstrap-theme .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}#bootstrap-theme .dropdown-menu>li>a:hover,#bootstrap-theme .dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#000}#bootstrap-theme .dropdown-menu>.active>a,#bootstrap-theme .dropdown-menu>.active>a:hover,#bootstrap-theme .dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#000;outline:0}#bootstrap-theme .dropdown-menu>.disabled>a,#bootstrap-theme .dropdown-menu>.disabled>a:hover,#bootstrap-theme .dropdown-menu>.disabled>a:focus{color:#999}#bootstrap-theme .dropdown-menu>.disabled>a:hover,#bootstrap-theme .dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;-webkit-filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}#bootstrap-theme .open>.dropdown-menu{display:block}#bootstrap-theme .open>a{outline:0}#bootstrap-theme .dropdown-menu-right{right:0;left:auto}#bootstrap-theme .dropdown-menu-left{right:auto;left:0}#bootstrap-theme .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999;white-space:nowrap}#bootstrap-theme .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}#bootstrap-theme .pull-right>.dropdown-menu{right:0;left:auto}#bootstrap-theme .dropup .caret,#bootstrap-theme .navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9}#bootstrap-theme .dropup .dropdown-menu,#bootstrap-theme .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){#bootstrap-theme .navbar-right .dropdown-menu{right:0;left:auto}#bootstrap-theme .navbar-right .dropdown-menu-left{left:0;right:auto}}#bootstrap-theme .btn-group,#bootstrap-theme .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}#bootstrap-theme .btn-group>.btn,#bootstrap-theme .btn-group-vertical>.btn{position:relative;float:left}#bootstrap-theme .btn-group>.btn:hover,#bootstrap-theme .btn-group>.btn:focus,#bootstrap-theme .btn-group>.btn:active,#bootstrap-theme .btn-group>.btn.active,#bootstrap-theme .btn-group-vertical>.btn:hover,#bootstrap-theme .btn-group-vertical>.btn:focus,#bootstrap-theme .btn-group-vertical>.btn:active,#bootstrap-theme .btn-group-vertical>.btn.active{z-index:2}#bootstrap-theme .btn-group .btn+.btn,#bootstrap-theme .btn-group .btn+.btn-group,#bootstrap-theme .btn-group .btn-group+.btn,#bootstrap-theme .btn-group .btn-group+.btn-group{margin-left:-1px}#bootstrap-theme .btn-toolbar{margin-left:-5px}#bootstrap-theme .btn-toolbar:before,#bootstrap-theme .btn-toolbar:after{display:table;content:" "}#bootstrap-theme .btn-toolbar:after{clear:both}#bootstrap-theme .btn-toolbar .btn,#bootstrap-theme .btn-toolbar .btn-group,#bootstrap-theme .btn-toolbar .input-group{float:left}#bootstrap-theme .btn-toolbar>.btn,#bootstrap-theme .btn-toolbar>.btn-group,#bootstrap-theme .btn-toolbar>.input-group{margin-left:5px}#bootstrap-theme .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}#bootstrap-theme .btn-group>.btn:first-child{margin-left:0}#bootstrap-theme .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .btn-group>.btn:last-child:not(:first-child),#bootstrap-theme .btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group>.btn-group{float:left}#bootstrap-theme .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bootstrap-theme .btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,#bootstrap-theme .btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group .dropdown-toggle:active,#bootstrap-theme .btn-group.open .dropdown-toggle{outline:0}#bootstrap-theme .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}#bootstrap-theme .btn-group>.btn-lg+.dropdown-toggle,#bootstrap-theme .btn-group-lg.btn-group>.btn+.dropdown-toggle,#bootstrap-theme .btn-group-lg>.btn-group>.btn+.dropdown-toggle{padding-right:12px;padding-left:12px}#bootstrap-theme .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bootstrap-theme .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme .btn .caret{margin-left:0}#bootstrap-theme .btn-lg .caret,#bootstrap-theme .btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}#bootstrap-theme .dropup .btn-lg .caret,#bootstrap-theme .dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}#bootstrap-theme .btn-group-vertical>.btn,#bootstrap-theme .btn-group-vertical>.btn-group,#bootstrap-theme .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}#bootstrap-theme .btn-group-vertical>.btn-group:before,#bootstrap-theme .btn-group-vertical>.btn-group:after{display:table;content:" "}#bootstrap-theme .btn-group-vertical>.btn-group:after{clear:both}#bootstrap-theme .btn-group-vertical>.btn-group>.btn{float:none}#bootstrap-theme .btn-group-vertical>.btn+.btn,#bootstrap-theme .btn-group-vertical>.btn+.btn-group,#bootstrap-theme .btn-group-vertical>.btn-group+.btn,#bootstrap-theme .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}#bootstrap-theme .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}#bootstrap-theme .btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bootstrap-theme .btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,#bootstrap-theme .btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}#bootstrap-theme .btn-group-justified>.btn,#bootstrap-theme .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}#bootstrap-theme .btn-group-justified>.btn-group .btn{width:100%}#bootstrap-theme .btn-group-justified>.btn-group .dropdown-menu{left:auto}#bootstrap-theme [data-toggle=buttons]>.btn input[type=radio],#bootstrap-theme [data-toggle=buttons]>.btn input[type=checkbox],#bootstrap-theme [data-toggle=buttons]>.btn-group>.btn input[type=radio],#bootstrap-theme [data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}#bootstrap-theme .input-group{position:relative;display:table;border-collapse:separate}#bootstrap-theme .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}#bootstrap-theme .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}#bootstrap-theme .input-group .form-control:focus{z-index:3}#bootstrap-theme .input-group-addon,#bootstrap-theme .input-group-btn,#bootstrap-theme .input-group .form-control{display:table-cell}#bootstrap-theme .input-group-addon:not(:first-child):not(:last-child),#bootstrap-theme .input-group-btn:not(:first-child):not(:last-child),#bootstrap-theme .input-group .form-control:not(:first-child):not(:last-child){border-radius:0}#bootstrap-theme .input-group-addon,#bootstrap-theme .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}#bootstrap-theme .input-group-addon{padding:4px 8px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}#bootstrap-theme .input-group-addon.input-sm,#bootstrap-theme .input-group-sm>.input-group-addon.form-control,#bootstrap-theme .input-group-sm>.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}#bootstrap-theme .input-group-addon.input-lg,#bootstrap-theme .input-group-lg>.input-group-addon.form-control,#bootstrap-theme .input-group-lg>.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.input-group-addon.btn{padding:14px 16px;font-size:18px;border-radius:6px}#bootstrap-theme .input-group-addon input[type=radio],#bootstrap-theme .input-group-addon input[type=checkbox]{margin-top:0}#bootstrap-theme .input-group .form-control:first-child,#bootstrap-theme .input-group-addon:first-child,#bootstrap-theme .input-group-btn:first-child>.btn,#bootstrap-theme .input-group-btn:first-child>.btn-group>.btn,#bootstrap-theme .input-group-btn:first-child>.dropdown-toggle,#bootstrap-theme .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),#bootstrap-theme .input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .input-group-addon:first-child{border-right:0}#bootstrap-theme .input-group .form-control:last-child,#bootstrap-theme .input-group-addon:last-child,#bootstrap-theme .input-group-btn:last-child>.btn,#bootstrap-theme .input-group-btn:last-child>.btn-group>.btn,#bootstrap-theme .input-group-btn:last-child>.dropdown-toggle,#bootstrap-theme .input-group-btn:first-child>.btn:not(:first-child),#bootstrap-theme .input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .input-group-addon:last-child{border-left:0}#bootstrap-theme .input-group-btn{position:relative;font-size:0;white-space:nowrap}#bootstrap-theme .input-group-btn>.btn{position:relative}#bootstrap-theme .input-group-btn>.btn+.btn{margin-left:-1px}#bootstrap-theme .input-group-btn>.btn:hover,#bootstrap-theme .input-group-btn>.btn:focus,#bootstrap-theme .input-group-btn>.btn:active{z-index:2}#bootstrap-theme .input-group-btn:first-child>.btn,#bootstrap-theme .input-group-btn:first-child>.btn-group{margin-right:-1px}#bootstrap-theme .input-group-btn:last-child>.btn,#bootstrap-theme .input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}#bootstrap-theme .nav{padding-left:0;margin-bottom:0;list-style:none}#bootstrap-theme .nav:before,#bootstrap-theme .nav:after{display:table;content:" "}#bootstrap-theme .nav:after{clear:both}#bootstrap-theme .nav>li{position:relative;display:block}#bootstrap-theme .nav>li>a{position:relative;display:block;padding:10px 15px}#bootstrap-theme .nav>li>a:hover,#bootstrap-theme .nav>li>a:focus{text-decoration:none;background-color:#eee}#bootstrap-theme .nav>li.disabled>a{color:#999}#bootstrap-theme .nav>li.disabled>a:hover,#bootstrap-theme .nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}#bootstrap-theme .nav .open>a,#bootstrap-theme .nav .open>a:hover,#bootstrap-theme .nav .open>a:focus{background-color:#eee;border-color:#2786c2}#bootstrap-theme .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}#bootstrap-theme .nav>li>a>img{max-width:none}#bootstrap-theme .nav-tabs{border-bottom:1px solid #ddd}#bootstrap-theme .nav-tabs>li{float:left;margin-bottom:-1px}#bootstrap-theme .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}#bootstrap-theme .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}#bootstrap-theme .nav-tabs>li.active>a,#bootstrap-theme .nav-tabs>li.active>a:hover,#bootstrap-theme .nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}#bootstrap-theme .nav-pills>li{float:left}#bootstrap-theme .nav-pills>li>a{border-radius:4px}#bootstrap-theme .nav-pills>li+li{margin-left:2px}#bootstrap-theme .nav-pills>li.active>a,#bootstrap-theme .nav-pills>li.active>a:hover,#bootstrap-theme .nav-pills>li.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .nav-stacked>li{float:none}#bootstrap-theme .nav-stacked>li+li{margin-top:2px;margin-left:0}#bootstrap-theme .nav-justified,#bootstrap-theme .nav-tabs.nav-justified{width:100%}#bootstrap-theme .nav-justified>li,#bootstrap-theme .nav-tabs.nav-justified>li{float:none}#bootstrap-theme .nav-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}#bootstrap-theme .nav-justified>.dropdown .dropdown-menu,#bootstrap-theme .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){#bootstrap-theme .nav-justified>li,#bootstrap-theme .nav-tabs.nav-justified>li{display:table-cell;width:1%}#bootstrap-theme .nav-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-bottom:0}}#bootstrap-theme .nav-tabs-justified,#bootstrap-theme .nav-tabs.nav-justified{border-bottom:0}#bootstrap-theme .nav-tabs-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}#bootstrap-theme .nav-tabs-justified>.active>a,#bootstrap-theme .nav-tabs.nav-justified>.active>a,#bootstrap-theme .nav-tabs-justified>.active>a:hover,#bootstrap-theme .nav-tabs.nav-justified>.active>a:hover,#bootstrap-theme .nav-tabs-justified>.active>a:focus,#bootstrap-theme .nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){#bootstrap-theme .nav-tabs-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}#bootstrap-theme .nav-tabs-justified>.active>a,#bootstrap-theme .nav-tabs.nav-justified>.active>a,#bootstrap-theme .nav-tabs-justified>.active>a:hover,#bootstrap-theme .nav-tabs.nav-justified>.active>a:hover,#bootstrap-theme .nav-tabs-justified>.active>a:focus,#bootstrap-theme .nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}#bootstrap-theme .tab-content>.tab-pane{display:none}#bootstrap-theme .tab-content>.active{display:block}#bootstrap-theme .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}#bootstrap-theme .navbar:before,#bootstrap-theme .navbar:after{display:table;content:" "}#bootstrap-theme .navbar:after{clear:both}@media (min-width:768px){#bootstrap-theme .navbar{border-radius:4px}}#bootstrap-theme .navbar-header:before,#bootstrap-theme .navbar-header:after{display:table;content:" "}#bootstrap-theme .navbar-header:after{clear:both}@media (min-width:768px){#bootstrap-theme .navbar-header{float:left}}#bootstrap-theme .navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}#bootstrap-theme .navbar-collapse:before,#bootstrap-theme .navbar-collapse:after{display:table;content:" "}#bootstrap-theme .navbar-collapse:after{clear:both}#bootstrap-theme .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){#bootstrap-theme .navbar-collapse{width:auto;border-top:0;box-shadow:none}#bootstrap-theme .navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}#bootstrap-theme .navbar-collapse.in{overflow-y:visible}.navbar-fixed-top #bootstrap-theme .navbar-collapse,.navbar-static-top #bootstrap-theme .navbar-collapse,.navbar-fixed-bottom #bootstrap-theme .navbar-collapse{padding-right:0;padding-left:0}}#bootstrap-theme .navbar-fixed-top,#bootstrap-theme .navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}#bootstrap-theme .navbar-fixed-top .navbar-collapse,#bootstrap-theme .navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){#bootstrap-theme .navbar-fixed-top .navbar-collapse,#bootstrap-theme .navbar-fixed-bottom .navbar-collapse{max-height:200px}}@media (min-width:768px){#bootstrap-theme .navbar-fixed-top,#bootstrap-theme .navbar-fixed-bottom{border-radius:0}}#bootstrap-theme .navbar-fixed-top{top:0;border-width:0 0 1px}#bootstrap-theme .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}#bootstrap-theme .container>.navbar-header,#bootstrap-theme .container>.navbar-collapse,#bootstrap-theme .container-fluid>.navbar-header,#bootstrap-theme .container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){#bootstrap-theme .container>.navbar-header,#bootstrap-theme .container>.navbar-collapse,#bootstrap-theme .container-fluid>.navbar-header,#bootstrap-theme .container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}#bootstrap-theme .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){#bootstrap-theme .navbar-static-top{border-radius:0}}#bootstrap-theme .navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px}#bootstrap-theme .navbar-brand:hover,#bootstrap-theme .navbar-brand:focus{text-decoration:none}#bootstrap-theme .navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container #bootstrap-theme .navbar-brand,.navbar>.container-fluid #bootstrap-theme .navbar-brand{margin-left:-15px}}#bootstrap-theme .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}#bootstrap-theme .navbar-toggle:focus{outline:0}#bootstrap-theme .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}#bootstrap-theme .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){#bootstrap-theme .navbar-toggle{display:none}}#bootstrap-theme .navbar-nav{margin:7.5px -15px}#bootstrap-theme .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){#bootstrap-theme .navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a,#bootstrap-theme .navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a{line-height:20px}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){#bootstrap-theme .navbar-nav{float:left;margin:0}#bootstrap-theme .navbar-nav>li{float:left}#bootstrap-theme .navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}#bootstrap-theme .navbar-form{padding:10px 15px;margin-right:-15px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:10px;margin-bottom:10px}@media (min-width:768px){#bootstrap-theme .navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}#bootstrap-theme .navbar-form .form-control-static{display:inline-block}#bootstrap-theme .navbar-form .input-group{display:inline-table;vertical-align:middle}#bootstrap-theme .navbar-form .input-group .input-group-addon,#bootstrap-theme .navbar-form .input-group .input-group-btn,#bootstrap-theme .navbar-form .input-group .form-control{width:auto}#bootstrap-theme .navbar-form .input-group>.form-control{width:100%}#bootstrap-theme .navbar-form .control-label{margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .radio,#bootstrap-theme .navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .radio label,#bootstrap-theme .navbar-form .checkbox label{padding-left:0}#bootstrap-theme .navbar-form .radio input[type=radio],#bootstrap-theme .navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}#bootstrap-theme .navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){#bootstrap-theme .navbar-form .form-group{margin-bottom:5px}#bootstrap-theme .navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){#bootstrap-theme .navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}#bootstrap-theme .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .navbar-btn{margin-top:10px;margin-bottom:10px}#bootstrap-theme .navbar-btn.btn-sm,#bootstrap-theme .btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}#bootstrap-theme .navbar-btn.btn-xs,#bootstrap-theme .btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}#bootstrap-theme .navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){#bootstrap-theme .navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){#bootstrap-theme .navbar-left{float:left !important}#bootstrap-theme .navbar-right{float:right !important;margin-right:-15px}#bootstrap-theme .navbar-right~.navbar-right{margin-right:0}}#bootstrap-theme .navbar-default{background-color:#000;border-color:#000}#bootstrap-theme .navbar-default .navbar-brand{color:#fff}#bootstrap-theme .navbar-default .navbar-brand:hover,#bootstrap-theme .navbar-default .navbar-brand:focus{color:#fff;background-color:none}#bootstrap-theme .navbar-default .navbar-text{color:#ddd}#bootstrap-theme .navbar-default .navbar-nav>li>a{color:#fff}#bootstrap-theme .navbar-default .navbar-nav>li>a:hover,#bootstrap-theme .navbar-default .navbar-nav>li>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav>.active>a,#bootstrap-theme .navbar-default .navbar-nav>.active>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav>.disabled>a,#bootstrap-theme .navbar-default .navbar-nav>.disabled>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.disabled>a:focus{color:#ddd;background-color:transparent}#bootstrap-theme .navbar-default .navbar-nav>.open>a,#bootstrap-theme .navbar-default .navbar-nav>.open>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.open>a:focus{color:#fff;background-color:#000}@media (max-width:767px){#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#fff}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ddd;background-color:transparent}}#bootstrap-theme .navbar-default .navbar-toggle{border-color:#000}#bootstrap-theme .navbar-default .navbar-toggle:hover,#bootstrap-theme .navbar-default .navbar-toggle:focus{background-color:#000}#bootstrap-theme .navbar-default .navbar-toggle .icon-bar{background-color:#fff}#bootstrap-theme .navbar-default .navbar-collapse,#bootstrap-theme .navbar-default .navbar-form{border-color:#000}#bootstrap-theme .navbar-default .navbar-link{color:#fff}#bootstrap-theme .navbar-default .navbar-link:hover{color:#fff}#bootstrap-theme .navbar-default .btn-link{color:#fff}#bootstrap-theme .navbar-default .btn-link:hover,#bootstrap-theme .navbar-default .btn-link:focus{color:#fff}#bootstrap-theme .navbar-default .btn-link[disabled]:hover,#bootstrap-theme .navbar-default .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .navbar-default .btn-link:hover,fieldset[disabled] #bootstrap-theme .navbar-default .btn-link:focus{color:#ddd}#bootstrap-theme .navbar-inverse{background-color:#cde8fe;border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-brand{color:#fff}#bootstrap-theme .navbar-inverse .navbar-brand:hover,#bootstrap-theme .navbar-inverse .navbar-brand:focus{color:#fff;background-color:none}#bootstrap-theme .navbar-inverse .navbar-text{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav>li>a{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav>li>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav>.active>a,#bootstrap-theme .navbar-inverse .navbar-nav>.active>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a,#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}#bootstrap-theme .navbar-inverse .navbar-nav>.open>a,#bootstrap-theme .navbar-inverse .navbar-nav>.open>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#b4ddfe}@media (max-width:767px){#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}#bootstrap-theme .navbar-inverse .navbar-toggle{border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-toggle:hover,#bootstrap-theme .navbar-inverse .navbar-toggle:focus{background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}#bootstrap-theme .navbar-inverse .navbar-collapse,#bootstrap-theme .navbar-inverse .navbar-form{border-color:#aad8fd}#bootstrap-theme .navbar-inverse .navbar-link{color:#fff}#bootstrap-theme .navbar-inverse .navbar-link:hover{color:#fff}#bootstrap-theme .navbar-inverse .btn-link{color:#fff}#bootstrap-theme .navbar-inverse .btn-link:hover,#bootstrap-theme .navbar-inverse .btn-link:focus{color:#fff}#bootstrap-theme .navbar-inverse .btn-link[disabled]:hover,#bootstrap-theme .navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .navbar-inverse .btn-link:hover,fieldset[disabled] #bootstrap-theme .navbar-inverse .btn-link:focus{color:#ccc}#bootstrap-theme .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}#bootstrap-theme .breadcrumb>li{display:inline-block}#bootstrap-theme .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/ "}#bootstrap-theme .breadcrumb>.active{color:#999}#bootstrap-theme .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}#bootstrap-theme .pagination>li{display:inline}#bootstrap-theme .pagination>li>a,#bootstrap-theme .pagination>li>span{position:relative;float:left;padding:4px 8px;margin-left:-1px;line-height:1.428571429;color:#2786c2;text-decoration:none;background-color:#fff;border:1px solid #ddd}#bootstrap-theme .pagination>li>a:hover,#bootstrap-theme .pagination>li>a:focus,#bootstrap-theme .pagination>li>span:hover,#bootstrap-theme .pagination>li>span:focus{z-index:2;color:#1a5a82;background-color:#eee;border-color:#ddd}#bootstrap-theme .pagination>li:first-child>a,#bootstrap-theme .pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .pagination>li:last-child>a,#bootstrap-theme .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}#bootstrap-theme .pagination>.active>a,#bootstrap-theme .pagination>.active>a:hover,#bootstrap-theme .pagination>.active>a:focus,#bootstrap-theme .pagination>.active>span,#bootstrap-theme .pagination>.active>span:hover,#bootstrap-theme .pagination>.active>span:focus{z-index:3;color:#999;cursor:default;background-color:#f5f5f5;border-color:#ddd}#bootstrap-theme .pagination>.disabled>span,#bootstrap-theme .pagination>.disabled>span:hover,#bootstrap-theme .pagination>.disabled>span:focus,#bootstrap-theme .pagination>.disabled>a,#bootstrap-theme .pagination>.disabled>a:hover,#bootstrap-theme .pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}#bootstrap-theme .pagination-lg>li>a,#bootstrap-theme .pagination-lg>li>span{padding:14px 16px;font-size:18px;line-height:1.3333333}#bootstrap-theme .pagination-lg>li:first-child>a,#bootstrap-theme .pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}#bootstrap-theme .pagination-lg>li:last-child>a,#bootstrap-theme .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}#bootstrap-theme .pagination-sm>li>a,#bootstrap-theme .pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}#bootstrap-theme .pagination-sm>li:first-child>a,#bootstrap-theme .pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .pagination-sm>li:last-child>a,#bootstrap-theme .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}#bootstrap-theme .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}#bootstrap-theme .pager:before,#bootstrap-theme .pager:after{display:table;content:" "}#bootstrap-theme .pager:after{clear:both}#bootstrap-theme .pager li{display:inline}#bootstrap-theme .pager li>a,#bootstrap-theme .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}#bootstrap-theme .pager li>a:hover,#bootstrap-theme .pager li>a:focus{text-decoration:none;background-color:#eee}#bootstrap-theme .pager .next>a,#bootstrap-theme .pager .next>span{float:right}#bootstrap-theme .pager .previous>a,#bootstrap-theme .pager .previous>span{float:left}#bootstrap-theme .pager .disabled>a,#bootstrap-theme .pager .disabled>a:hover,#bootstrap-theme .pager .disabled>a:focus,#bootstrap-theme .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}#bootstrap-theme .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}#bootstrap-theme .label:empty{display:none}.btn #bootstrap-theme .label{position:relative;top:-1px}#bootstrap-theme a.label:hover,#bootstrap-theme a.label:focus{color:#fff;text-decoration:none;cursor:pointer}#bootstrap-theme .label-default{background-color:#999}#bootstrap-theme .label-default[href]:hover,#bootstrap-theme .label-default[href]:focus{background-color:gray}#bootstrap-theme .label-primary{background-color:#000}#bootstrap-theme .label-primary[href]:hover,#bootstrap-theme .label-primary[href]:focus{background-color:#000}#bootstrap-theme .label-success{background-color:#73a839}#bootstrap-theme .label-success[href]:hover,#bootstrap-theme .label-success[href]:focus{background-color:#59822c}#bootstrap-theme .label-info{background-color:#cde8fe}#bootstrap-theme .label-info[href]:hover,#bootstrap-theme .label-info[href]:focus{background-color:#9bd1fd}#bootstrap-theme .label-warning{background-color:#dd5600}#bootstrap-theme .label-warning[href]:hover,#bootstrap-theme .label-warning[href]:focus{background-color:#aa4200}#bootstrap-theme .label-danger{background-color:#c71c22}#bootstrap-theme .label-danger[href]:hover,#bootstrap-theme .label-danger[href]:focus{background-color:#9a161a}#bootstrap-theme .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#000;border-radius:10px}#bootstrap-theme .badge:empty{display:none}.btn #bootstrap-theme .badge{position:relative;top:-1px}.btn-xs #bootstrap-theme .badge,#bootstrap-theme .btn-group-xs>.btn #bootstrap-theme .badge,.btn-group-xs>.btn #bootstrap-theme .badge{top:0;padding:1px 5px}.list-group-item.active>#bootstrap-theme .badge,.nav-pills>.active>a>#bootstrap-theme .badge{color:#2786c2;background-color:#fff}.list-group-item>#bootstrap-theme .badge{float:right}.list-group-item>#bootstrap-theme .badge+#bootstrap-theme .badge{margin-right:5px}.nav-pills>li>a>#bootstrap-theme .badge{margin-left:3px}#bootstrap-theme a.badge:hover,#bootstrap-theme a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}#bootstrap-theme .jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}#bootstrap-theme .jumbotron h1,#bootstrap-theme .jumbotron .h1{color:inherit}#bootstrap-theme .jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}#bootstrap-theme .jumbotron>hr{border-top-color:#d5d5d5}.container #bootstrap-theme .jumbotron,.container-fluid #bootstrap-theme .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}#bootstrap-theme .jumbotron .container{max-width:100%}@media screen and (min-width:768px){#bootstrap-theme .jumbotron{padding-top:48px;padding-bottom:48px}.container #bootstrap-theme .jumbotron,.container-fluid #bootstrap-theme .jumbotron{padding-right:60px;padding-left:60px}#bootstrap-theme .jumbotron h1,#bootstrap-theme .jumbotron .h1{font-size:63px}}#bootstrap-theme .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}#bootstrap-theme .thumbnail>img,#bootstrap-theme .thumbnail a>img{display:block;max-width:100%;height:auto;margin-right:auto;margin-left:auto}#bootstrap-theme .thumbnail .caption{padding:9px;color:#555}#bootstrap-theme a.thumbnail:hover,#bootstrap-theme a.thumbnail:focus,#bootstrap-theme a.thumbnail.active{border-color:#2786c2}#bootstrap-theme .alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}#bootstrap-theme .alert h4{margin-top:0;color:inherit}#bootstrap-theme .alert .alert-link{font-weight:700}#bootstrap-theme .alert>p,#bootstrap-theme .alert>ul{margin-bottom:0}#bootstrap-theme .alert>p+p{margin-top:5px}#bootstrap-theme .alert-dismissable,#bootstrap-theme .alert-dismissible{padding-right:35px}#bootstrap-theme .alert-dismissable .close,#bootstrap-theme .alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}#bootstrap-theme .alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}#bootstrap-theme .alert-success hr{border-top-color:#c9e2b3}#bootstrap-theme .alert-success .alert-link{color:#356635}#bootstrap-theme .alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}#bootstrap-theme .alert-info hr{border-top-color:#a6e1ec}#bootstrap-theme .alert-info .alert-link{color:#2d6987}#bootstrap-theme .alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}#bootstrap-theme .alert-warning hr{border-top-color:#f8e5be}#bootstrap-theme .alert-warning .alert-link{color:#a47e3c}#bootstrap-theme .alert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}#bootstrap-theme .alert-danger hr{border-top-color:#e6c1c7}#bootstrap-theme .alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}#bootstrap-theme .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}#bootstrap-theme .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#000;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}#bootstrap-theme .progress-striped .progress-bar,#bootstrap-theme .progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}#bootstrap-theme .progress.active .progress-bar,#bootstrap-theme .progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}#bootstrap-theme .progress-bar-success{background-color:#73a839}.progress-striped #bootstrap-theme .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-info{background-color:#cde8fe}.progress-striped #bootstrap-theme .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-warning{background-color:#dd5600}.progress-striped #bootstrap-theme .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-danger{background-color:#c71c22}.progress-striped #bootstrap-theme .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .media{margin-top:15px}#bootstrap-theme .media:first-child{margin-top:0}#bootstrap-theme .media,#bootstrap-theme .media-body{overflow:hidden;zoom:1}#bootstrap-theme .media-body{width:10000px}#bootstrap-theme .media-object{display:block}#bootstrap-theme .media-object.img-thumbnail{max-width:none}#bootstrap-theme .media-right,#bootstrap-theme .media>.pull-right{padding-left:10px}#bootstrap-theme .media-left,#bootstrap-theme .media>.pull-left{padding-right:10px}#bootstrap-theme .media-left,#bootstrap-theme .media-right,#bootstrap-theme .media-body{display:table-cell;vertical-align:top}#bootstrap-theme .media-middle{vertical-align:middle}#bootstrap-theme .media-bottom{vertical-align:bottom}#bootstrap-theme .media-heading{margin-top:0;margin-bottom:5px}#bootstrap-theme .media-list{padding-left:0;list-style:none}#bootstrap-theme .list-group{padding-left:0;margin-bottom:20px}#bootstrap-theme .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}#bootstrap-theme .list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}#bootstrap-theme .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .list-group-item.disabled,#bootstrap-theme .list-group-item.disabled:hover,#bootstrap-theme .list-group-item.disabled:focus{color:#999;cursor:not-allowed;background-color:#eee}#bootstrap-theme .list-group-item.disabled .list-group-item-heading,#bootstrap-theme .list-group-item.disabled:hover .list-group-item-heading,#bootstrap-theme .list-group-item.disabled:focus .list-group-item-heading{color:inherit}#bootstrap-theme .list-group-item.disabled .list-group-item-text,#bootstrap-theme .list-group-item.disabled:hover .list-group-item-text,#bootstrap-theme .list-group-item.disabled:focus .list-group-item-text{color:#999}#bootstrap-theme .list-group-item.active,#bootstrap-theme .list-group-item.active:hover,#bootstrap-theme .list-group-item.active:focus{z-index:2;color:#fff;background-color:#000;border-color:#000}#bootstrap-theme .list-group-item.active .list-group-item-heading,#bootstrap-theme .list-group-item.active .list-group-item-heading>small,#bootstrap-theme .list-group-item.active .list-group-item-heading>.small,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading>small,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading>.small,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading>small,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading>.small{color:inherit}#bootstrap-theme .list-group-item.active .list-group-item-text,#bootstrap-theme .list-group-item.active:hover .list-group-item-text,#bootstrap-theme .list-group-item.active:focus .list-group-item-text{color:#666}#bootstrap-theme a.list-group-item,#bootstrap-theme button.list-group-item{color:#555}#bootstrap-theme a.list-group-item .list-group-item-heading,#bootstrap-theme button.list-group-item .list-group-item-heading{color:#333}#bootstrap-theme a.list-group-item:hover,#bootstrap-theme a.list-group-item:focus,#bootstrap-theme button.list-group-item:hover,#bootstrap-theme button.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}#bootstrap-theme button.list-group-item{width:100%;text-align:left}#bootstrap-theme .list-group-item-success{color:#468847;background-color:#dff0d8}#bootstrap-theme a.list-group-item-success,#bootstrap-theme button.list-group-item-success{color:#468847}#bootstrap-theme a.list-group-item-success .list-group-item-heading,#bootstrap-theme button.list-group-item-success .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-success:hover,#bootstrap-theme a.list-group-item-success:focus,#bootstrap-theme button.list-group-item-success:hover,#bootstrap-theme button.list-group-item-success:focus{color:#468847;background-color:#d0e9c6}#bootstrap-theme a.list-group-item-success.active,#bootstrap-theme a.list-group-item-success.active:hover,#bootstrap-theme a.list-group-item-success.active:focus,#bootstrap-theme button.list-group-item-success.active,#bootstrap-theme button.list-group-item-success.active:hover,#bootstrap-theme button.list-group-item-success.active:focus{color:#fff;background-color:#468847;border-color:#468847}#bootstrap-theme .list-group-item-info{color:#3a87ad;background-color:#d9edf7}#bootstrap-theme a.list-group-item-info,#bootstrap-theme button.list-group-item-info{color:#3a87ad}#bootstrap-theme a.list-group-item-info .list-group-item-heading,#bootstrap-theme button.list-group-item-info .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-info:hover,#bootstrap-theme a.list-group-item-info:focus,#bootstrap-theme button.list-group-item-info:hover,#bootstrap-theme button.list-group-item-info:focus{color:#3a87ad;background-color:#c4e3f3}#bootstrap-theme a.list-group-item-info.active,#bootstrap-theme a.list-group-item-info.active:hover,#bootstrap-theme a.list-group-item-info.active:focus,#bootstrap-theme button.list-group-item-info.active,#bootstrap-theme button.list-group-item-info.active:hover,#bootstrap-theme button.list-group-item-info.active:focus{color:#fff;background-color:#3a87ad;border-color:#3a87ad}#bootstrap-theme .list-group-item-warning{color:#c09853;background-color:#fcf8e3}#bootstrap-theme a.list-group-item-warning,#bootstrap-theme button.list-group-item-warning{color:#c09853}#bootstrap-theme a.list-group-item-warning .list-group-item-heading,#bootstrap-theme button.list-group-item-warning .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-warning:hover,#bootstrap-theme a.list-group-item-warning:focus,#bootstrap-theme button.list-group-item-warning:hover,#bootstrap-theme button.list-group-item-warning:focus{color:#c09853;background-color:#faf2cc}#bootstrap-theme a.list-group-item-warning.active,#bootstrap-theme a.list-group-item-warning.active:hover,#bootstrap-theme a.list-group-item-warning.active:focus,#bootstrap-theme button.list-group-item-warning.active,#bootstrap-theme button.list-group-item-warning.active:hover,#bootstrap-theme button.list-group-item-warning.active:focus{color:#fff;background-color:#c09853;border-color:#c09853}#bootstrap-theme .list-group-item-danger{color:#b94a48;background-color:#f2dede}#bootstrap-theme a.list-group-item-danger,#bootstrap-theme button.list-group-item-danger{color:#b94a48}#bootstrap-theme a.list-group-item-danger .list-group-item-heading,#bootstrap-theme button.list-group-item-danger .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-danger:hover,#bootstrap-theme a.list-group-item-danger:focus,#bootstrap-theme button.list-group-item-danger:hover,#bootstrap-theme button.list-group-item-danger:focus{color:#b94a48;background-color:#ebcccc}#bootstrap-theme a.list-group-item-danger.active,#bootstrap-theme a.list-group-item-danger.active:hover,#bootstrap-theme a.list-group-item-danger.active:focus,#bootstrap-theme button.list-group-item-danger.active,#bootstrap-theme button.list-group-item-danger.active:hover,#bootstrap-theme button.list-group-item-danger.active:focus{color:#fff;background-color:#b94a48;border-color:#b94a48}#bootstrap-theme .list-group-item-heading{margin-top:0;margin-bottom:5px}#bootstrap-theme .list-group-item-text{margin-bottom:0;line-height:1.3}#bootstrap-theme .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}#bootstrap-theme .panel-body{padding:15px}#bootstrap-theme .panel-body:before,#bootstrap-theme .panel-body:after{display:table;content:" "}#bootstrap-theme .panel-body:after{clear:both}#bootstrap-theme .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel-heading>.dropdown .dropdown-toggle{color:inherit}#bootstrap-theme .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}#bootstrap-theme .panel-title>a,#bootstrap-theme .panel-title>small,#bootstrap-theme .panel-title>.small,#bootstrap-theme .panel-title>small>a,#bootstrap-theme .panel-title>.small>a{color:inherit}#bootstrap-theme .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.list-group,#bootstrap-theme .panel>.panel-collapse>.list-group{margin-bottom:0}#bootstrap-theme .panel>.list-group .list-group-item,#bootstrap-theme .panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}#bootstrap-theme .panel>.list-group:first-child .list-group-item:first-child,#bootstrap-theme .panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.list-group:last-child .list-group-item:last-child,#bootstrap-theme .panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}#bootstrap-theme .list-group+.panel-footer{border-top-width:0}#bootstrap-theme .panel>.table,#bootstrap-theme .panel>.table-responsive>.table,#bootstrap-theme .panel>.panel-collapse>.table{margin-bottom:0}#bootstrap-theme .panel>.table caption,#bootstrap-theme .panel>.table-responsive>.table caption,#bootstrap-theme .panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}#bootstrap-theme .panel>.table:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}#bootstrap-theme .panel>.table:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}#bootstrap-theme .panel>.panel-body+.table,#bootstrap-theme .panel>.panel-body+.table-responsive,#bootstrap-theme .panel>.table+.panel-body,#bootstrap-theme .panel>.table-responsive+.panel-body{border-top:1px solid #ddd}#bootstrap-theme .panel>.table>tbody:first-child>tr:first-child th,#bootstrap-theme .panel>.table>tbody:first-child>tr:first-child td{border-top:0}#bootstrap-theme .panel>.table-bordered,#bootstrap-theme .panel>.table-responsive>.table-bordered{border:0}#bootstrap-theme .panel>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}#bootstrap-theme .panel>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}#bootstrap-theme .panel>.table-bordered>thead>tr:first-child>td,#bootstrap-theme .panel>.table-bordered>thead>tr:first-child>th,#bootstrap-theme .panel>.table-bordered>tbody>tr:first-child>td,#bootstrap-theme .panel>.table-bordered>tbody>tr:first-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr:first-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr:first-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}#bootstrap-theme .panel>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .panel>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .panel>.table-bordered>tfoot>tr:last-child>td,#bootstrap-theme .panel>.table-bordered>tfoot>tr:last-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}#bootstrap-theme .panel>.table-responsive{margin-bottom:0;border:0}#bootstrap-theme .panel-group{margin-bottom:20px}#bootstrap-theme .panel-group .panel{margin-bottom:0;border-radius:4px}#bootstrap-theme .panel-group .panel+.panel{margin-top:5px}#bootstrap-theme .panel-group .panel-heading{border-bottom:0}#bootstrap-theme .panel-group .panel-heading+.panel-collapse>.panel-body,#bootstrap-theme .panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}#bootstrap-theme .panel-group .panel-footer{border-top:0}#bootstrap-theme .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}#bootstrap-theme .panel-default{border-color:#ddd}#bootstrap-theme .panel-default>.panel-heading{color:#555;background-color:#f5f5f5;border-color:#ddd}#bootstrap-theme .panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#555}#bootstrap-theme .panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-primary{border-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading{color:#fff;background-color:#000;border-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading .badge{color:#000;background-color:#fff}#bootstrap-theme .panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-success{border-color:#ddd}#bootstrap-theme .panel-success>.panel-heading{color:#468847;background-color:#73a839;border-color:#ddd}#bootstrap-theme .panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-success>.panel-heading .badge{color:#73a839;background-color:#468847}#bootstrap-theme .panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-info{border-color:#ddd}#bootstrap-theme .panel-info>.panel-heading{color:#3a87ad;background-color:#cde8fe;border-color:#ddd}#bootstrap-theme .panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-info>.panel-heading .badge{color:#cde8fe;background-color:#3a87ad}#bootstrap-theme .panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-warning{border-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading{color:#c09853;background-color:#dd5600;border-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading .badge{color:#dd5600;background-color:#c09853}#bootstrap-theme .panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-danger{border-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading{color:#b94a48;background-color:#c71c22;border-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading .badge{color:#c71c22;background-color:#b94a48}#bootstrap-theme .panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}#bootstrap-theme .embed-responsive .embed-responsive-item,#bootstrap-theme .embed-responsive iframe,#bootstrap-theme .embed-responsive embed,#bootstrap-theme .embed-responsive object,#bootstrap-theme .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}#bootstrap-theme .embed-responsive-16by9{padding-bottom:56.25%}#bootstrap-theme .embed-responsive-4by3{padding-bottom:75%}#bootstrap-theme .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}#bootstrap-theme .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}#bootstrap-theme .well-lg{padding:24px;border-radius:6px}#bootstrap-theme .well-sm{padding:9px;border-radius:3px}#bootstrap-theme .close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;-webkit-filter:alpha(opacity=20);filter:alpha(opacity=20);opacity:.2}#bootstrap-theme .close:hover,#bootstrap-theme .close:focus{color:#000;text-decoration:none;cursor:pointer;-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}#bootstrap-theme .modal-open{overflow:hidden}#bootstrap-theme .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}#bootstrap-theme .modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-ms-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out}#bootstrap-theme .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}#bootstrap-theme .modal-open .modal{overflow-x:hidden;overflow-y:auto}#bootstrap-theme .modal-dialog{position:relative;width:auto;margin:10px}#bootstrap-theme .modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}#bootstrap-theme .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}#bootstrap-theme .modal-backdrop.fade{-webkit-filter:alpha(opacity=0);filter:alpha(opacity=0);opacity:0}#bootstrap-theme .modal-backdrop.in{-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme .modal-header{padding:15px;border-bottom:1px solid #e5e5e5}#bootstrap-theme .modal-header:before,#bootstrap-theme .modal-header:after{display:table;content:" "}#bootstrap-theme .modal-header:after{clear:both}#bootstrap-theme .modal-header .close{margin-top:-2px}#bootstrap-theme .modal-title{margin:0;line-height:1.428571429}#bootstrap-theme .modal-body{position:relative;padding:20px}#bootstrap-theme .modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}#bootstrap-theme .modal-footer:before,#bootstrap-theme .modal-footer:after{display:table;content:" "}#bootstrap-theme .modal-footer:after{clear:both}#bootstrap-theme .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}#bootstrap-theme .modal-footer .btn-group .btn+.btn{margin-left:-1px}#bootstrap-theme .modal-footer .btn-block+.btn-block{margin-left:0}#bootstrap-theme .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){#bootstrap-theme .modal-dialog{width:600px;margin:30px auto}#bootstrap-theme .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}#bootstrap-theme .modal-sm{width:300px}}@media (min-width:992px){#bootstrap-theme .modal-lg{width:900px}}#bootstrap-theme .tooltip{position:absolute;z-index:1070;display:block;font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.428571429;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;-ms-word-break:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;-webkit-filter:alpha(opacity=0);filter:alpha(opacity=0);opacity:0}#bootstrap-theme .tooltip.in{-webkit-filter:alpha(opacity=90);filter:alpha(opacity=90);opacity:.9}#bootstrap-theme .tooltip.top{padding:5px 0;margin-top:-3px}#bootstrap-theme .tooltip.right{padding:0 5px;margin-left:3px}#bootstrap-theme .tooltip.bottom{padding:5px 0;margin-top:3px}#bootstrap-theme .tooltip.left{padding:0 5px;margin-left:-3px}#bootstrap-theme .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}#bootstrap-theme .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}#bootstrap-theme .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}#bootstrap-theme .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}#bootstrap-theme .popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.428571429;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;-ms-word-break:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:14px;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}#bootstrap-theme .popover.top{margin-top:-10px}#bootstrap-theme .popover.right{margin-left:10px}#bootstrap-theme .popover.bottom{margin-top:10px}#bootstrap-theme .popover.left{margin-left:-10px}#bootstrap-theme .popover>.arrow{border-width:11px}#bootstrap-theme .popover>.arrow,#bootstrap-theme .popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}#bootstrap-theme .popover>.arrow:after{content:"";border-width:10px}#bootstrap-theme .popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}#bootstrap-theme .popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}#bootstrap-theme .popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}#bootstrap-theme .popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}#bootstrap-theme .popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}#bootstrap-theme .popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}#bootstrap-theme .popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}#bootstrap-theme .popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}#bootstrap-theme .popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}#bootstrap-theme .popover-content{padding:9px 14px}#bootstrap-theme .carousel{position:relative}#bootstrap-theme .carousel-inner{position:relative;width:100%;overflow:hidden}#bootstrap-theme .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}#bootstrap-theme .carousel-inner>.item>img,#bootstrap-theme .carousel-inner>.item>a>img{display:block;max-width:100%;height:auto;line-height:1}@media (transform-3d),(-webkit-transform-3d){#bootstrap-theme .carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:-ms-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px}#bootstrap-theme .carousel-inner>.item.next,#bootstrap-theme .carousel-inner>.item.active.right{-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}#bootstrap-theme .carousel-inner>.item.prev,#bootstrap-theme .carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}#bootstrap-theme .carousel-inner>.item.next.left,#bootstrap-theme .carousel-inner>.item.prev.right,#bootstrap-theme .carousel-inner>.item.active{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}#bootstrap-theme .carousel-inner>.active,#bootstrap-theme .carousel-inner>.next,#bootstrap-theme .carousel-inner>.prev{display:block}#bootstrap-theme .carousel-inner>.active{left:0}#bootstrap-theme .carousel-inner>.next,#bootstrap-theme .carousel-inner>.prev{position:absolute;top:0;width:100%}#bootstrap-theme .carousel-inner>.next{left:100%}#bootstrap-theme .carousel-inner>.prev{left:-100%}#bootstrap-theme .carousel-inner>.next.left,#bootstrap-theme .carousel-inner>.prev.right{left:0}#bootstrap-theme .carousel-inner>.active.left{left:-100%}#bootstrap-theme .carousel-inner>.active.right{left:100%}#bootstrap-theme .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme .carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);-webkit-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#80000000",endColorstr="#00000000",GradientType=1);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#80000000",endColorstr="#00000000",GradientType=1);background-repeat:repeat-x}#bootstrap-theme .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);-webkit-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000",endColorstr="#80000000",GradientType=1);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000",endColorstr="#80000000",GradientType=1);background-repeat:repeat-x}#bootstrap-theme .carousel-control:hover,#bootstrap-theme .carousel-control:focus{color:#fff;text-decoration:none;outline:0;-webkit-filter:alpha(opacity=90);filter:alpha(opacity=90);opacity:.9}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next,#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}#bootstrap-theme .carousel-control .icon-next,#bootstrap-theme .carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next{width:20px;height:20px;font-family:serif;line-height:1}#bootstrap-theme .carousel-control .icon-prev:before{content:"‹"}#bootstrap-theme .carousel-control .icon-next:before{content:"›"}#bootstrap-theme .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}#bootstrap-theme .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}#bootstrap-theme .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}#bootstrap-theme .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}#bootstrap-theme .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .glyphicon-chevron-right,#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .icon-prev{margin-left:-10px}#bootstrap-theme .carousel-control .glyphicon-chevron-right,#bootstrap-theme .carousel-control .icon-next{margin-right:-10px}#bootstrap-theme .carousel-caption{right:20%;left:20%;padding-bottom:30px}#bootstrap-theme .carousel-indicators{bottom:20px}}#bootstrap-theme .clearfix:before,#bootstrap-theme .clearfix:after{display:table;content:" "}#bootstrap-theme .clearfix:after{clear:both}#bootstrap-theme .center-block{display:block;margin-right:auto;margin-left:auto}#bootstrap-theme .pull-right{float:right !important}#bootstrap-theme .pull-left{float:left !important}#bootstrap-theme .hide{display:none !important}#bootstrap-theme .show{display:block !important}#bootstrap-theme .invisible{visibility:hidden}#bootstrap-theme .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}#bootstrap-theme .hidden{display:none !important}#bootstrap-theme .affix{position:fixed}@-ms-viewport{width:device-width}#bootstrap-theme .visible-sm{display:none !important}#bootstrap-theme .visible-md{display:none !important}#bootstrap-theme .visible-lg{display:none !important}#bootstrap-theme .visible-xs-block,#bootstrap-theme .visible-xs-inline,#bootstrap-theme .visible-xs-inline-block,#bootstrap-theme .visible-sm-block,#bootstrap-theme .visible-sm-inline,#bootstrap-theme .visible-sm-inline-block,#bootstrap-theme .visible-md-block,#bootstrap-theme .visible-md-inline,#bootstrap-theme .visible-md-inline-block,#bootstrap-theme .visible-lg-block,#bootstrap-theme .visible-lg-inline,#bootstrap-theme .visible-lg-inline-block{display:none !important}@media (max-width:767px){#bootstrap-theme .visible-xs{display:block !important}#bootstrap-theme table.visible-xs{display:table !important}#bootstrap-theme tr.visible-xs{display:table-row !important}#bootstrap-theme th.visible-xs,#bootstrap-theme td.visible-xs{display:table-cell !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-block{display:block !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-inline{display:inline !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm{display:block !important}#bootstrap-theme table.visible-sm{display:table !important}#bootstrap-theme tr.visible-sm{display:table-row !important}#bootstrap-theme th.visible-sm,#bootstrap-theme td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md{display:block !important}#bootstrap-theme table.visible-md{display:table !important}#bootstrap-theme tr.visible-md{display:table-row !important}#bootstrap-theme th.visible-md,#bootstrap-theme td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg{display:block !important}#bootstrap-theme table.visible-lg{display:table !important}#bootstrap-theme tr.visible-lg{display:table-row !important}#bootstrap-theme th.visible-lg,#bootstrap-theme td.visible-lg{display:table-cell !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-block{display:block !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-inline{display:inline !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){#bootstrap-theme .hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .hidden-md{display:none !important}}@media (min-width:1200px){#bootstrap-theme .hidden-lg{display:none !important}}#bootstrap-theme .visible-print{display:none !important}@media print{#bootstrap-theme .visible-print{display:block !important}#bootstrap-theme table.visible-print{display:table !important}#bootstrap-theme tr.visible-print{display:table-row !important}#bootstrap-theme th.visible-print,#bootstrap-theme td.visible-print{display:table-cell !important}}#bootstrap-theme .visible-print-block{display:none !important}@media print{#bootstrap-theme .visible-print-block{display:block !important}}#bootstrap-theme .visible-print-inline{display:none !important}@media print{#bootstrap-theme .visible-print-inline{display:inline !important}}#bootstrap-theme .visible-print-inline-block{display:none !important}@media print{#bootstrap-theme .visible-print-inline-block{display:inline-block !important}}@media print{#bootstrap-theme .hidden-print{display:none !important}}#bootstrap-theme ul,#bootstrap-theme ol{margin-left:0;margin-right:0}#bootstrap-theme .form-control.checkbox-inline>label{margin-left:9px}#bootstrap-theme label input[type=checkbox]:not(:checked)+*{font-weight:400}#bootstrap-theme .select2-choices{margin-bottom:0}#bootstrap-theme input[type=search]::-webkit-search-cancel-button{-webkit-appearance:searchfield-cancel-button}#bootstrap-theme .select2-container .select2-choice>.select2-chosen{font-size:inherit;font-weight:400}#bootstrap-theme .form-control .select2-choice{border:0;border-radius:2px}#bootstrap-theme .form-control .select2-choice .select2-arrow{border-radius:0 2px 2px 0}#bootstrap-theme .form-control.select2-container{height:auto !important;padding:0}#bootstrap-theme .form-control.select2-container.select2-dropdown-open{border-color:#5897fb;border-radius:3px 3px 0 0}#bootstrap-theme .form-control .select2-container.select2-dropdown-open .select2-choices{border-radius:3px 3px 0 0}#bootstrap-theme .form-control.select2-container .select2-choices{border:0 !important;border-radius:3px}#bootstrap-theme .control-group.warning .select2-container .select2-choice,#bootstrap-theme .control-group.warning .select2-container .select2-choices,#bootstrap-theme .control-group.warning .select2-container-active .select2-choice,#bootstrap-theme .control-group.warning .select2-container-active .select2-choices,#bootstrap-theme .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.warning .select2-container-multi.select2-container-active .select2-choices{border:1px solid #c09853 !important}#bootstrap-theme .control-group.warning .select2-container .select2-choice div{border-left:1px solid #c09853 !important;background:#fcf8e3 !important}#bootstrap-theme .control-group.error .select2-container .select2-choice,#bootstrap-theme .control-group.error .select2-container .select2-choices,#bootstrap-theme .control-group.error .select2-container-active .select2-choice,#bootstrap-theme .control-group.error .select2-container-active .select2-choices,#bootstrap-theme .control-group.error .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.error .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.error .select2-container-multi.select2-container-active .select2-choices{border:1px solid #b94a48 !important}#bootstrap-theme .control-group.error .select2-container .select2-choice div{border-left:1px solid #b94a48 !important;background:#f2dede !important}#bootstrap-theme .control-group.info .select2-container .select2-choice,#bootstrap-theme .control-group.info .select2-container .select2-choices,#bootstrap-theme .control-group.info .select2-container-active .select2-choice,#bootstrap-theme .control-group.info .select2-container-active .select2-choices,#bootstrap-theme .control-group.info .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.info .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.info .select2-container-multi.select2-container-active .select2-choices{border:1px solid #3a87ad !important}#bootstrap-theme .control-group.info .select2-container .select2-choice div{border-left:1px solid #3a87ad !important;background:#d9edf7 !important}#bootstrap-theme .control-group.success .select2-container .select2-choice,#bootstrap-theme .control-group.success .select2-container .select2-choices,#bootstrap-theme .control-group.success .select2-container-active .select2-choice,#bootstrap-theme .control-group.success .select2-container-active .select2-choices,#bootstrap-theme .control-group.success .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.success .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.success .select2-container-multi.select2-container-active .select2-choices{border:1px solid #468847 !important}#bootstrap-theme .control-group.success .select2-container .select2-choice div{border-left:1px solid #468847 !important;background:#dff0d8 !important}
\ No newline at end of file
+@charset "UTF-8";#bootstrap-theme html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}#bootstrap-theme body{margin:0}#bootstrap-theme article,#bootstrap-theme aside,#bootstrap-theme details,#bootstrap-theme figcaption,#bootstrap-theme figure,#bootstrap-theme footer,#bootstrap-theme header,#bootstrap-theme hgroup,#bootstrap-theme main,#bootstrap-theme menu,#bootstrap-theme nav,#bootstrap-theme section,#bootstrap-theme summary{display:block}#bootstrap-theme audio,#bootstrap-theme canvas,#bootstrap-theme progress,#bootstrap-theme video{display:inline-block;vertical-align:baseline}#bootstrap-theme audio:not([controls]){display:none;height:0}#bootstrap-theme [hidden],#bootstrap-theme template{display:none}#bootstrap-theme a{background-color:transparent}#bootstrap-theme a:active,#bootstrap-theme a:hover{outline:0}#bootstrap-theme abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}#bootstrap-theme b,#bootstrap-theme strong{font-weight:700}#bootstrap-theme dfn{font-style:italic}#bootstrap-theme h1{font-size:2em;margin:.67em 0}#bootstrap-theme mark{background:#ff0;color:#000}#bootstrap-theme small{font-size:80%}#bootstrap-theme sub,#bootstrap-theme sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}#bootstrap-theme sup{top:-.5em}#bootstrap-theme sub{bottom:-.25em}#bootstrap-theme img{border:0}#bootstrap-theme svg:not(:root){overflow:hidden}#bootstrap-theme figure{margin:1em 40px}#bootstrap-theme hr{box-sizing:content-box;height:0}#bootstrap-theme pre{overflow:auto}#bootstrap-theme code,#bootstrap-theme kbd,#bootstrap-theme pre,#bootstrap-theme samp{font-family:monospace,monospace;font-size:1em}#bootstrap-theme button,#bootstrap-theme input,#bootstrap-theme optgroup,#bootstrap-theme select,#bootstrap-theme textarea{color:inherit;font:inherit;margin:0}#bootstrap-theme button{overflow:visible}#bootstrap-theme button,#bootstrap-theme select{text-transform:none}#bootstrap-theme button,#bootstrap-theme html input[type=button],#bootstrap-theme input[type=reset],#bootstrap-theme input[type=submit]{-webkit-appearance:button;cursor:pointer}#bootstrap-theme button[disabled],#bootstrap-theme html input[disabled]{cursor:default}#bootstrap-theme button::-moz-focus-inner,#bootstrap-theme input::-moz-focus-inner{border:0;padding:0}#bootstrap-theme input{line-height:normal}#bootstrap-theme input[type=checkbox],#bootstrap-theme input[type=radio]{box-sizing:border-box;padding:0}#bootstrap-theme input[type=number]::-webkit-inner-spin-button,#bootstrap-theme input[type=number]::-webkit-outer-spin-button{height:auto}#bootstrap-theme input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}#bootstrap-theme input[type=search]::-webkit-search-cancel-button,#bootstrap-theme input[type=search]::-webkit-search-decoration{-webkit-appearance:none}#bootstrap-theme fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}#bootstrap-theme legend{border:0;padding:0}#bootstrap-theme textarea{overflow:auto}#bootstrap-theme optgroup{font-weight:700}#bootstrap-theme table{border-collapse:collapse;border-spacing:0}#bootstrap-theme td,#bootstrap-theme th{padding:0}@media print{#bootstrap-theme *,#bootstrap-theme *:before,#bootstrap-theme *:after{color:#000 !important;text-shadow:none !important;background:0 0 !important;box-shadow:none !important}#bootstrap-theme a,#bootstrap-theme a:visited{text-decoration:underline}#bootstrap-theme a[href]:after{content:" (" attr(href) ")"}#bootstrap-theme abbr[title]:after{content:" (" attr(title) ")"}#bootstrap-theme a[href^="#"]:after,#bootstrap-theme a[href^="javascript:"]:after{content:""}#bootstrap-theme pre,#bootstrap-theme blockquote{border:1px solid #999;page-break-inside:avoid}#bootstrap-theme thead{display:table-header-group}#bootstrap-theme tr,#bootstrap-theme img{page-break-inside:avoid}#bootstrap-theme img{max-width:100% !important}#bootstrap-theme p,#bootstrap-theme h2,#bootstrap-theme h3{orphans:3;widows:3}#bootstrap-theme h2,#bootstrap-theme h3{page-break-after:avoid}#bootstrap-theme .navbar{display:none}#bootstrap-theme .btn>.caret,#bootstrap-theme .dropup>.btn>.caret{border-top-color:#000 !important}#bootstrap-theme .label{border:1px solid #000}#bootstrap-theme .table{border-collapse:collapse !important}#bootstrap-theme .table td,#bootstrap-theme .table th{background-color:#fff !important}#bootstrap-theme .table-bordered th,#bootstrap-theme .table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:"Glyphicons Halflings";src:url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.eot");src:url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2") format("woff2"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.woff") format("woff"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf") format("truetype"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}#bootstrap-theme .glyphicon{position:relative;top:1px;display:inline-block;font-family:"Glyphicons Halflings";font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#bootstrap-theme .glyphicon-asterisk:before{content:"*"}#bootstrap-theme .glyphicon-plus:before{content:"+"}#bootstrap-theme .glyphicon-euro:before,#bootstrap-theme .glyphicon-eur:before{content:"€"}#bootstrap-theme .glyphicon-minus:before{content:"−"}#bootstrap-theme .glyphicon-cloud:before{content:"☁"}#bootstrap-theme .glyphicon-envelope:before{content:"✉"}#bootstrap-theme .glyphicon-pencil:before{content:"✏"}#bootstrap-theme .glyphicon-glass:before{content:""}#bootstrap-theme .glyphicon-music:before{content:""}#bootstrap-theme .glyphicon-search:before{content:""}#bootstrap-theme .glyphicon-heart:before{content:""}#bootstrap-theme .glyphicon-star:before{content:""}#bootstrap-theme .glyphicon-star-empty:before{content:""}#bootstrap-theme .glyphicon-user:before{content:""}#bootstrap-theme .glyphicon-film:before{content:""}#bootstrap-theme .glyphicon-th-large:before{content:""}#bootstrap-theme .glyphicon-th:before{content:""}#bootstrap-theme .glyphicon-th-list:before{content:""}#bootstrap-theme .glyphicon-ok:before{content:""}#bootstrap-theme .glyphicon-remove:before{content:""}#bootstrap-theme .glyphicon-zoom-in:before{content:""}#bootstrap-theme .glyphicon-zoom-out:before{content:""}#bootstrap-theme .glyphicon-off:before{content:""}#bootstrap-theme .glyphicon-signal:before{content:""}#bootstrap-theme .glyphicon-cog:before{content:""}#bootstrap-theme .glyphicon-trash:before{content:""}#bootstrap-theme .glyphicon-home:before{content:""}#bootstrap-theme .glyphicon-file:before{content:""}#bootstrap-theme .glyphicon-time:before{content:""}#bootstrap-theme .glyphicon-road:before{content:""}#bootstrap-theme .glyphicon-download-alt:before{content:""}#bootstrap-theme .glyphicon-download:before{content:""}#bootstrap-theme .glyphicon-upload:before{content:""}#bootstrap-theme .glyphicon-inbox:before{content:""}#bootstrap-theme .glyphicon-play-circle:before{content:""}#bootstrap-theme .glyphicon-repeat:before{content:""}#bootstrap-theme .glyphicon-refresh:before{content:""}#bootstrap-theme .glyphicon-list-alt:before{content:""}#bootstrap-theme .glyphicon-lock:before{content:""}#bootstrap-theme .glyphicon-flag:before{content:""}#bootstrap-theme .glyphicon-headphones:before{content:""}#bootstrap-theme .glyphicon-volume-off:before{content:""}#bootstrap-theme .glyphicon-volume-down:before{content:""}#bootstrap-theme .glyphicon-volume-up:before{content:""}#bootstrap-theme .glyphicon-qrcode:before{content:""}#bootstrap-theme .glyphicon-barcode:before{content:""}#bootstrap-theme .glyphicon-tag:before{content:""}#bootstrap-theme .glyphicon-tags:before{content:""}#bootstrap-theme .glyphicon-book:before{content:""}#bootstrap-theme .glyphicon-bookmark:before{content:""}#bootstrap-theme .glyphicon-print:before{content:""}#bootstrap-theme .glyphicon-camera:before{content:""}#bootstrap-theme .glyphicon-font:before{content:""}#bootstrap-theme .glyphicon-bold:before{content:""}#bootstrap-theme .glyphicon-italic:before{content:""}#bootstrap-theme .glyphicon-text-height:before{content:""}#bootstrap-theme .glyphicon-text-width:before{content:""}#bootstrap-theme .glyphicon-align-left:before{content:""}#bootstrap-theme .glyphicon-align-center:before{content:""}#bootstrap-theme .glyphicon-align-right:before{content:""}#bootstrap-theme .glyphicon-align-justify:before{content:""}#bootstrap-theme .glyphicon-list:before{content:""}#bootstrap-theme .glyphicon-indent-left:before{content:""}#bootstrap-theme .glyphicon-indent-right:before{content:""}#bootstrap-theme .glyphicon-facetime-video:before{content:""}#bootstrap-theme .glyphicon-picture:before{content:""}#bootstrap-theme .glyphicon-map-marker:before{content:""}#bootstrap-theme .glyphicon-adjust:before{content:""}#bootstrap-theme .glyphicon-tint:before{content:""}#bootstrap-theme .glyphicon-edit:before{content:""}#bootstrap-theme .glyphicon-share:before{content:""}#bootstrap-theme .glyphicon-check:before{content:""}#bootstrap-theme .glyphicon-move:before{content:""}#bootstrap-theme .glyphicon-step-backward:before{content:""}#bootstrap-theme .glyphicon-fast-backward:before{content:""}#bootstrap-theme .glyphicon-backward:before{content:""}#bootstrap-theme .glyphicon-play:before{content:""}#bootstrap-theme .glyphicon-pause:before{content:""}#bootstrap-theme .glyphicon-stop:before{content:""}#bootstrap-theme .glyphicon-forward:before{content:""}#bootstrap-theme .glyphicon-fast-forward:before{content:""}#bootstrap-theme .glyphicon-step-forward:before{content:""}#bootstrap-theme .glyphicon-eject:before{content:""}#bootstrap-theme .glyphicon-chevron-left:before{content:""}#bootstrap-theme .glyphicon-chevron-right:before{content:""}#bootstrap-theme .glyphicon-plus-sign:before{content:""}#bootstrap-theme .glyphicon-minus-sign:before{content:""}#bootstrap-theme .glyphicon-remove-sign:before{content:""}#bootstrap-theme .glyphicon-ok-sign:before{content:""}#bootstrap-theme .glyphicon-question-sign:before{content:""}#bootstrap-theme .glyphicon-info-sign:before{content:""}#bootstrap-theme .glyphicon-screenshot:before{content:""}#bootstrap-theme .glyphicon-remove-circle:before{content:""}#bootstrap-theme .glyphicon-ok-circle:before{content:""}#bootstrap-theme .glyphicon-ban-circle:before{content:""}#bootstrap-theme .glyphicon-arrow-left:before{content:""}#bootstrap-theme .glyphicon-arrow-right:before{content:""}#bootstrap-theme .glyphicon-arrow-up:before{content:""}#bootstrap-theme .glyphicon-arrow-down:before{content:""}#bootstrap-theme .glyphicon-share-alt:before{content:""}#bootstrap-theme .glyphicon-resize-full:before{content:""}#bootstrap-theme .glyphicon-resize-small:before{content:""}#bootstrap-theme .glyphicon-exclamation-sign:before{content:""}#bootstrap-theme .glyphicon-gift:before{content:""}#bootstrap-theme .glyphicon-leaf:before{content:""}#bootstrap-theme .glyphicon-fire:before{content:""}#bootstrap-theme .glyphicon-eye-open:before{content:""}#bootstrap-theme .glyphicon-eye-close:before{content:""}#bootstrap-theme .glyphicon-warning-sign:before{content:""}#bootstrap-theme .glyphicon-plane:before{content:""}#bootstrap-theme .glyphicon-calendar:before{content:""}#bootstrap-theme .glyphicon-random:before{content:""}#bootstrap-theme .glyphicon-comment:before{content:""}#bootstrap-theme .glyphicon-magnet:before{content:""}#bootstrap-theme .glyphicon-chevron-up:before{content:""}#bootstrap-theme .glyphicon-chevron-down:before{content:""}#bootstrap-theme .glyphicon-retweet:before{content:""}#bootstrap-theme .glyphicon-shopping-cart:before{content:""}#bootstrap-theme .glyphicon-folder-close:before{content:""}#bootstrap-theme .glyphicon-folder-open:before{content:""}#bootstrap-theme .glyphicon-resize-vertical:before{content:""}#bootstrap-theme .glyphicon-resize-horizontal:before{content:""}#bootstrap-theme .glyphicon-hdd:before{content:""}#bootstrap-theme .glyphicon-bullhorn:before{content:""}#bootstrap-theme .glyphicon-bell:before{content:""}#bootstrap-theme .glyphicon-certificate:before{content:""}#bootstrap-theme .glyphicon-thumbs-up:before{content:""}#bootstrap-theme .glyphicon-thumbs-down:before{content:""}#bootstrap-theme .glyphicon-hand-right:before{content:""}#bootstrap-theme .glyphicon-hand-left:before{content:""}#bootstrap-theme .glyphicon-hand-up:before{content:""}#bootstrap-theme .glyphicon-hand-down:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-right:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-left:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-up:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-down:before{content:""}#bootstrap-theme .glyphicon-globe:before{content:""}#bootstrap-theme .glyphicon-wrench:before{content:""}#bootstrap-theme .glyphicon-tasks:before{content:""}#bootstrap-theme .glyphicon-filter:before{content:""}#bootstrap-theme .glyphicon-briefcase:before{content:""}#bootstrap-theme .glyphicon-fullscreen:before{content:""}#bootstrap-theme .glyphicon-dashboard:before{content:""}#bootstrap-theme .glyphicon-paperclip:before{content:""}#bootstrap-theme .glyphicon-heart-empty:before{content:""}#bootstrap-theme .glyphicon-link:before{content:""}#bootstrap-theme .glyphicon-phone:before{content:""}#bootstrap-theme .glyphicon-pushpin:before{content:""}#bootstrap-theme .glyphicon-usd:before{content:""}#bootstrap-theme .glyphicon-gbp:before{content:""}#bootstrap-theme .glyphicon-sort:before{content:""}#bootstrap-theme .glyphicon-sort-by-alphabet:before{content:""}#bootstrap-theme .glyphicon-sort-by-alphabet-alt:before{content:""}#bootstrap-theme .glyphicon-sort-by-order:before{content:""}#bootstrap-theme .glyphicon-sort-by-order-alt:before{content:""}#bootstrap-theme .glyphicon-sort-by-attributes:before{content:""}#bootstrap-theme .glyphicon-sort-by-attributes-alt:before{content:""}#bootstrap-theme .glyphicon-unchecked:before{content:""}#bootstrap-theme .glyphicon-expand:before{content:""}#bootstrap-theme .glyphicon-collapse-down:before{content:""}#bootstrap-theme .glyphicon-collapse-up:before{content:""}#bootstrap-theme .glyphicon-log-in:before{content:""}#bootstrap-theme .glyphicon-flash:before{content:""}#bootstrap-theme .glyphicon-log-out:before{content:""}#bootstrap-theme .glyphicon-new-window:before{content:""}#bootstrap-theme .glyphicon-record:before{content:""}#bootstrap-theme .glyphicon-save:before{content:""}#bootstrap-theme .glyphicon-open:before{content:""}#bootstrap-theme .glyphicon-saved:before{content:""}#bootstrap-theme .glyphicon-import:before{content:""}#bootstrap-theme .glyphicon-export:before{content:""}#bootstrap-theme .glyphicon-send:before{content:""}#bootstrap-theme .glyphicon-floppy-disk:before{content:""}#bootstrap-theme .glyphicon-floppy-saved:before{content:""}#bootstrap-theme .glyphicon-floppy-remove:before{content:""}#bootstrap-theme .glyphicon-floppy-save:before{content:""}#bootstrap-theme .glyphicon-floppy-open:before{content:""}#bootstrap-theme .glyphicon-credit-card:before{content:""}#bootstrap-theme .glyphicon-transfer:before{content:""}#bootstrap-theme .glyphicon-cutlery:before{content:""}#bootstrap-theme .glyphicon-header:before{content:""}#bootstrap-theme .glyphicon-compressed:before{content:""}#bootstrap-theme .glyphicon-earphone:before{content:""}#bootstrap-theme .glyphicon-phone-alt:before{content:""}#bootstrap-theme .glyphicon-tower:before{content:""}#bootstrap-theme .glyphicon-stats:before{content:""}#bootstrap-theme .glyphicon-sd-video:before{content:""}#bootstrap-theme .glyphicon-hd-video:before{content:""}#bootstrap-theme .glyphicon-subtitles:before{content:""}#bootstrap-theme .glyphicon-sound-stereo:before{content:""}#bootstrap-theme .glyphicon-sound-dolby:before{content:""}#bootstrap-theme .glyphicon-sound-5-1:before{content:""}#bootstrap-theme .glyphicon-sound-6-1:before{content:""}#bootstrap-theme .glyphicon-sound-7-1:before{content:""}#bootstrap-theme .glyphicon-copyright-mark:before{content:""}#bootstrap-theme .glyphicon-registration-mark:before{content:""}#bootstrap-theme .glyphicon-cloud-download:before{content:""}#bootstrap-theme .glyphicon-cloud-upload:before{content:""}#bootstrap-theme .glyphicon-tree-conifer:before{content:""}#bootstrap-theme .glyphicon-tree-deciduous:before{content:""}#bootstrap-theme .glyphicon-cd:before{content:""}#bootstrap-theme .glyphicon-save-file:before{content:""}#bootstrap-theme .glyphicon-open-file:before{content:""}#bootstrap-theme .glyphicon-level-up:before{content:""}#bootstrap-theme .glyphicon-copy:before{content:""}#bootstrap-theme .glyphicon-paste:before{content:""}#bootstrap-theme .glyphicon-alert:before{content:""}#bootstrap-theme .glyphicon-equalizer:before{content:""}#bootstrap-theme .glyphicon-king:before{content:""}#bootstrap-theme .glyphicon-queen:before{content:""}#bootstrap-theme .glyphicon-pawn:before{content:""}#bootstrap-theme .glyphicon-bishop:before{content:""}#bootstrap-theme .glyphicon-knight:before{content:""}#bootstrap-theme .glyphicon-baby-formula:before{content:""}#bootstrap-theme .glyphicon-tent:before{content:"⛺"}#bootstrap-theme .glyphicon-blackboard:before{content:""}#bootstrap-theme .glyphicon-bed:before{content:""}#bootstrap-theme .glyphicon-apple:before{content:""}#bootstrap-theme .glyphicon-erase:before{content:""}#bootstrap-theme .glyphicon-hourglass:before{content:"⌛"}#bootstrap-theme .glyphicon-lamp:before{content:""}#bootstrap-theme .glyphicon-duplicate:before{content:""}#bootstrap-theme .glyphicon-piggy-bank:before{content:""}#bootstrap-theme .glyphicon-scissors:before{content:""}#bootstrap-theme .glyphicon-bitcoin:before{content:""}#bootstrap-theme .glyphicon-btc:before{content:""}#bootstrap-theme .glyphicon-xbt:before{content:""}#bootstrap-theme .glyphicon-yen:before{content:"¥"}#bootstrap-theme .glyphicon-jpy:before{content:"¥"}#bootstrap-theme .glyphicon-ruble:before{content:"₽"}#bootstrap-theme .glyphicon-rub:before{content:"₽"}#bootstrap-theme .glyphicon-scale:before{content:""}#bootstrap-theme .glyphicon-ice-lolly:before{content:""}#bootstrap-theme .glyphicon-ice-lolly-tasted:before{content:""}#bootstrap-theme .glyphicon-education:before{content:""}#bootstrap-theme .glyphicon-option-horizontal:before{content:""}#bootstrap-theme .glyphicon-option-vertical:before{content:""}#bootstrap-theme .glyphicon-menu-hamburger:before{content:""}#bootstrap-theme .glyphicon-modal-window:before{content:""}#bootstrap-theme .glyphicon-oil:before{content:""}#bootstrap-theme .glyphicon-grain:before{content:""}#bootstrap-theme .glyphicon-sunglasses:before{content:""}#bootstrap-theme .glyphicon-text-size:before{content:""}#bootstrap-theme .glyphicon-text-color:before{content:""}#bootstrap-theme .glyphicon-text-background:before{content:""}#bootstrap-theme .glyphicon-object-align-top:before{content:""}#bootstrap-theme .glyphicon-object-align-bottom:before{content:""}#bootstrap-theme .glyphicon-object-align-horizontal:before{content:""}#bootstrap-theme .glyphicon-object-align-left:before{content:""}#bootstrap-theme .glyphicon-object-align-vertical:before{content:""}#bootstrap-theme .glyphicon-object-align-right:before{content:""}#bootstrap-theme .glyphicon-triangle-right:before{content:""}#bootstrap-theme .glyphicon-triangle-left:before{content:""}#bootstrap-theme .glyphicon-triangle-bottom:before{content:""}#bootstrap-theme .glyphicon-triangle-top:before{content:""}#bootstrap-theme .glyphicon-console:before{content:""}#bootstrap-theme .glyphicon-superscript:before{content:""}#bootstrap-theme .glyphicon-subscript:before{content:""}#bootstrap-theme .glyphicon-menu-left:before{content:""}#bootstrap-theme .glyphicon-menu-right:before{content:""}#bootstrap-theme .glyphicon-menu-down:before{content:""}#bootstrap-theme .glyphicon-menu-up:before{content:""}#bootstrap-theme *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bootstrap-theme *:before,#bootstrap-theme *:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bootstrap-theme html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}#bootstrap-theme body{font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff}#bootstrap-theme input,#bootstrap-theme button,#bootstrap-theme select,#bootstrap-theme textarea{font-family:inherit;font-size:inherit;line-height:inherit}#bootstrap-theme a{color:#2786c2;text-decoration:none}#bootstrap-theme a:hover,#bootstrap-theme a:focus{color:#1a5a82;text-decoration:underline}#bootstrap-theme a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme figure{margin:0}#bootstrap-theme img{vertical-align:middle}#bootstrap-theme .img-responsive{display:block;max-width:100%;height:auto}#bootstrap-theme .img-rounded{border-radius:6px}#bootstrap-theme .img-thumbnail{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}#bootstrap-theme .img-circle{border-radius:50%}#bootstrap-theme hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}#bootstrap-theme .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}#bootstrap-theme .sr-only-focusable:active,#bootstrap-theme .sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}#bootstrap-theme [role=button]{cursor:pointer}#bootstrap-theme h1,#bootstrap-theme h2,#bootstrap-theme h3,#bootstrap-theme h4,#bootstrap-theme h5,#bootstrap-theme h6,#bootstrap-theme .h1,#bootstrap-theme .h2,#bootstrap-theme .h3,#bootstrap-theme .h4,#bootstrap-theme .h5,#bootstrap-theme .h6{font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:#000}#bootstrap-theme h1 small,#bootstrap-theme h1 .small,#bootstrap-theme h2 small,#bootstrap-theme h2 .small,#bootstrap-theme h3 small,#bootstrap-theme h3 .small,#bootstrap-theme h4 small,#bootstrap-theme h4 .small,#bootstrap-theme h5 small,#bootstrap-theme h5 .small,#bootstrap-theme h6 small,#bootstrap-theme h6 .small,#bootstrap-theme .h1 small,#bootstrap-theme .h1 .small,#bootstrap-theme .h2 small,#bootstrap-theme .h2 .small,#bootstrap-theme .h3 small,#bootstrap-theme .h3 .small,#bootstrap-theme .h4 small,#bootstrap-theme .h4 .small,#bootstrap-theme .h5 small,#bootstrap-theme .h5 .small,#bootstrap-theme .h6 small,#bootstrap-theme .h6 .small{font-weight:400;line-height:1;color:#999}#bootstrap-theme h1,#bootstrap-theme .h1,#bootstrap-theme h2,#bootstrap-theme .h2,#bootstrap-theme h3,#bootstrap-theme .h3{margin-top:20px;margin-bottom:10px}#bootstrap-theme h1 small,#bootstrap-theme h1 .small,#bootstrap-theme .h1 small,#bootstrap-theme .h1 .small,#bootstrap-theme h2 small,#bootstrap-theme h2 .small,#bootstrap-theme .h2 small,#bootstrap-theme .h2 .small,#bootstrap-theme h3 small,#bootstrap-theme h3 .small,#bootstrap-theme .h3 small,#bootstrap-theme .h3 .small{font-size:65%}#bootstrap-theme h4,#bootstrap-theme .h4,#bootstrap-theme h5,#bootstrap-theme .h5,#bootstrap-theme h6,#bootstrap-theme .h6{margin-top:10px;margin-bottom:10px}#bootstrap-theme h4 small,#bootstrap-theme h4 .small,#bootstrap-theme .h4 small,#bootstrap-theme .h4 .small,#bootstrap-theme h5 small,#bootstrap-theme h5 .small,#bootstrap-theme .h5 small,#bootstrap-theme .h5 .small,#bootstrap-theme h6 small,#bootstrap-theme h6 .small,#bootstrap-theme .h6 small,#bootstrap-theme .h6 .small{font-size:75%}#bootstrap-theme h1,#bootstrap-theme .h1{font-size:36px}#bootstrap-theme h2,#bootstrap-theme .h2{font-size:30px}#bootstrap-theme h3,#bootstrap-theme .h3{font-size:24px}#bootstrap-theme h4,#bootstrap-theme .h4{font-size:18px}#bootstrap-theme h5,#bootstrap-theme .h5{font-size:14px}#bootstrap-theme h6,#bootstrap-theme .h6{font-size:12px}#bootstrap-theme p{margin:0 0 10px}#bootstrap-theme .lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){#bootstrap-theme .lead{font-size:21px}}#bootstrap-theme small,#bootstrap-theme .small{font-size:85%}#bootstrap-theme mark,#bootstrap-theme .mark{padding:.2em;background-color:#fcf8e3}#bootstrap-theme .text-left{text-align:left}#bootstrap-theme .text-right{text-align:right}#bootstrap-theme .text-center{text-align:center}#bootstrap-theme .text-justify{text-align:justify}#bootstrap-theme .text-nowrap{white-space:nowrap}#bootstrap-theme .text-lowercase{text-transform:lowercase}#bootstrap-theme .text-uppercase,#bootstrap-theme .initialism{text-transform:uppercase}#bootstrap-theme .text-capitalize{text-transform:capitalize}#bootstrap-theme .text-muted{color:#999}#bootstrap-theme .text-primary{color:#000}#bootstrap-theme a.text-primary:hover,#bootstrap-theme a.text-primary:focus{color:#000}#bootstrap-theme .text-success{color:#468847}#bootstrap-theme a.text-success:hover,#bootstrap-theme a.text-success:focus{color:#356635}#bootstrap-theme .text-info{color:#3a87ad}#bootstrap-theme a.text-info:hover,#bootstrap-theme a.text-info:focus{color:#2d6987}#bootstrap-theme .text-warning{color:#c09853}#bootstrap-theme a.text-warning:hover,#bootstrap-theme a.text-warning:focus{color:#a47e3c}#bootstrap-theme .text-danger{color:#b94a48}#bootstrap-theme a.text-danger:hover,#bootstrap-theme a.text-danger:focus{color:#953b39}#bootstrap-theme .bg-primary{color:#fff}#bootstrap-theme .bg-primary{background-color:#000}#bootstrap-theme a.bg-primary:hover,#bootstrap-theme a.bg-primary:focus{background-color:#000}#bootstrap-theme .bg-success{background-color:#dff0d8}#bootstrap-theme a.bg-success:hover,#bootstrap-theme a.bg-success:focus{background-color:#c1e2b3}#bootstrap-theme .bg-info{background-color:#d9edf7}#bootstrap-theme a.bg-info:hover,#bootstrap-theme a.bg-info:focus{background-color:#afd9ee}#bootstrap-theme .bg-warning{background-color:#fcf8e3}#bootstrap-theme a.bg-warning:hover,#bootstrap-theme a.bg-warning:focus{background-color:#f7ecb5}#bootstrap-theme .bg-danger{background-color:#f2dede}#bootstrap-theme a.bg-danger:hover,#bootstrap-theme a.bg-danger:focus{background-color:#e4b9b9}#bootstrap-theme .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}#bootstrap-theme ul,#bootstrap-theme ol{margin-top:0;margin-bottom:10px}#bootstrap-theme ul ul,#bootstrap-theme ul ol,#bootstrap-theme ol ul,#bootstrap-theme ol ol{margin-bottom:0}#bootstrap-theme .list-unstyled{padding-left:0;list-style:none}#bootstrap-theme .list-inline{padding-left:0;list-style:none;margin-left:-5px}#bootstrap-theme .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}#bootstrap-theme dl{margin-top:0;margin-bottom:20px}#bootstrap-theme dt,#bootstrap-theme dd{line-height:1.428571429}#bootstrap-theme dt{font-weight:700}#bootstrap-theme dd{margin-left:0}#bootstrap-theme .dl-horizontal dd:before,#bootstrap-theme .dl-horizontal dd:after{display:table;content:" "}#bootstrap-theme .dl-horizontal dd:after{clear:both}@media (min-width:768px){#bootstrap-theme .dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#bootstrap-theme .dl-horizontal dd{margin-left:180px}}#bootstrap-theme abbr[title],#bootstrap-theme abbr[data-original-title]{cursor:help}#bootstrap-theme .initialism{font-size:90%}#bootstrap-theme blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}#bootstrap-theme blockquote p:last-child,#bootstrap-theme blockquote ul:last-child,#bootstrap-theme blockquote ol:last-child{margin-bottom:0}#bootstrap-theme blockquote footer,#bootstrap-theme blockquote small,#bootstrap-theme blockquote .small{display:block;font-size:80%;line-height:1.428571429;color:#999}#bootstrap-theme blockquote footer:before,#bootstrap-theme blockquote small:before,#bootstrap-theme blockquote .small:before{content:"— "}#bootstrap-theme .blockquote-reverse,#bootstrap-theme blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}#bootstrap-theme .blockquote-reverse footer:before,#bootstrap-theme .blockquote-reverse small:before,#bootstrap-theme .blockquote-reverse .small:before,#bootstrap-theme blockquote.pull-right footer:before,#bootstrap-theme blockquote.pull-right small:before,#bootstrap-theme blockquote.pull-right .small:before{content:""}#bootstrap-theme .blockquote-reverse footer:after,#bootstrap-theme .blockquote-reverse small:after,#bootstrap-theme .blockquote-reverse .small:after,#bootstrap-theme blockquote.pull-right footer:after,#bootstrap-theme blockquote.pull-right small:after,#bootstrap-theme blockquote.pull-right .small:after{content:" —"}#bootstrap-theme address{margin-bottom:20px;font-style:normal;line-height:1.428571429}#bootstrap-theme code,#bootstrap-theme kbd,#bootstrap-theme pre,#bootstrap-theme samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}#bootstrap-theme code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}#bootstrap-theme kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}#bootstrap-theme kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}#bootstrap-theme pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;-ms-word-break:break-all;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}#bootstrap-theme pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}#bootstrap-theme .pre-scrollable{max-height:340px;overflow-y:scroll}#bootstrap-theme .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}#bootstrap-theme .container:before,#bootstrap-theme .container:after{display:table;content:" "}#bootstrap-theme .container:after{clear:both}@media (min-width:768px){#bootstrap-theme .container{width:750px}}@media (min-width:992px){#bootstrap-theme .container{width:970px}}@media (min-width:1200px){#bootstrap-theme .container{width:1170px}}#bootstrap-theme .container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}#bootstrap-theme .container-fluid:before,#bootstrap-theme .container-fluid:after{display:table;content:" "}#bootstrap-theme .container-fluid:after{clear:both}#bootstrap-theme .row{margin-right:-15px;margin-left:-15px}#bootstrap-theme .row:before,#bootstrap-theme .row:after{display:table;content:" "}#bootstrap-theme .row:after{clear:both}#bootstrap-theme .row-no-gutters{margin-right:0;margin-left:0}#bootstrap-theme .row-no-gutters [class*=col-]{padding-right:0;padding-left:0}#bootstrap-theme .col-xs-1,#bootstrap-theme .col-sm-1,#bootstrap-theme .col-md-1,#bootstrap-theme .col-lg-1,#bootstrap-theme .col-xs-2,#bootstrap-theme .col-sm-2,#bootstrap-theme .col-md-2,#bootstrap-theme .col-lg-2,#bootstrap-theme .col-xs-3,#bootstrap-theme .col-sm-3,#bootstrap-theme .col-md-3,#bootstrap-theme .col-lg-3,#bootstrap-theme .col-xs-4,#bootstrap-theme .col-sm-4,#bootstrap-theme .col-md-4,#bootstrap-theme .col-lg-4,#bootstrap-theme .col-xs-5,#bootstrap-theme .col-sm-5,#bootstrap-theme .col-md-5,#bootstrap-theme .col-lg-5,#bootstrap-theme .col-xs-6,#bootstrap-theme .col-sm-6,#bootstrap-theme .col-md-6,#bootstrap-theme .col-lg-6,#bootstrap-theme .col-xs-7,#bootstrap-theme .col-sm-7,#bootstrap-theme .col-md-7,#bootstrap-theme .col-lg-7,#bootstrap-theme .col-xs-8,#bootstrap-theme .col-sm-8,#bootstrap-theme .col-md-8,#bootstrap-theme .col-lg-8,#bootstrap-theme .col-xs-9,#bootstrap-theme .col-sm-9,#bootstrap-theme .col-md-9,#bootstrap-theme .col-lg-9,#bootstrap-theme .col-xs-10,#bootstrap-theme .col-sm-10,#bootstrap-theme .col-md-10,#bootstrap-theme .col-lg-10,#bootstrap-theme .col-xs-11,#bootstrap-theme .col-sm-11,#bootstrap-theme .col-md-11,#bootstrap-theme .col-lg-11,#bootstrap-theme .col-xs-12,#bootstrap-theme .col-sm-12,#bootstrap-theme .col-md-12,#bootstrap-theme .col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}#bootstrap-theme .col-xs-1,#bootstrap-theme .col-xs-2,#bootstrap-theme .col-xs-3,#bootstrap-theme .col-xs-4,#bootstrap-theme .col-xs-5,#bootstrap-theme .col-xs-6,#bootstrap-theme .col-xs-7,#bootstrap-theme .col-xs-8,#bootstrap-theme .col-xs-9,#bootstrap-theme .col-xs-10,#bootstrap-theme .col-xs-11,#bootstrap-theme .col-xs-12{float:left}#bootstrap-theme .col-xs-1{width:8.3333333333%}#bootstrap-theme .col-xs-2{width:16.6666666667%}#bootstrap-theme .col-xs-3{width:25%}#bootstrap-theme .col-xs-4{width:33.3333333333%}#bootstrap-theme .col-xs-5{width:41.6666666667%}#bootstrap-theme .col-xs-6{width:50%}#bootstrap-theme .col-xs-7{width:58.3333333333%}#bootstrap-theme .col-xs-8{width:66.6666666667%}#bootstrap-theme .col-xs-9{width:75%}#bootstrap-theme .col-xs-10{width:83.3333333333%}#bootstrap-theme .col-xs-11{width:91.6666666667%}#bootstrap-theme .col-xs-12{width:100%}#bootstrap-theme .col-xs-pull-0{right:auto}#bootstrap-theme .col-xs-pull-1{right:8.3333333333%}#bootstrap-theme .col-xs-pull-2{right:16.6666666667%}#bootstrap-theme .col-xs-pull-3{right:25%}#bootstrap-theme .col-xs-pull-4{right:33.3333333333%}#bootstrap-theme .col-xs-pull-5{right:41.6666666667%}#bootstrap-theme .col-xs-pull-6{right:50%}#bootstrap-theme .col-xs-pull-7{right:58.3333333333%}#bootstrap-theme .col-xs-pull-8{right:66.6666666667%}#bootstrap-theme .col-xs-pull-9{right:75%}#bootstrap-theme .col-xs-pull-10{right:83.3333333333%}#bootstrap-theme .col-xs-pull-11{right:91.6666666667%}#bootstrap-theme .col-xs-pull-12{right:100%}#bootstrap-theme .col-xs-push-0{left:auto}#bootstrap-theme .col-xs-push-1{left:8.3333333333%}#bootstrap-theme .col-xs-push-2{left:16.6666666667%}#bootstrap-theme .col-xs-push-3{left:25%}#bootstrap-theme .col-xs-push-4{left:33.3333333333%}#bootstrap-theme .col-xs-push-5{left:41.6666666667%}#bootstrap-theme .col-xs-push-6{left:50%}#bootstrap-theme .col-xs-push-7{left:58.3333333333%}#bootstrap-theme .col-xs-push-8{left:66.6666666667%}#bootstrap-theme .col-xs-push-9{left:75%}#bootstrap-theme .col-xs-push-10{left:83.3333333333%}#bootstrap-theme .col-xs-push-11{left:91.6666666667%}#bootstrap-theme .col-xs-push-12{left:100%}#bootstrap-theme .col-xs-offset-0{margin-left:0}#bootstrap-theme .col-xs-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-xs-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-xs-offset-3{margin-left:25%}#bootstrap-theme .col-xs-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-xs-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-xs-offset-6{margin-left:50%}#bootstrap-theme .col-xs-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-xs-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-xs-offset-9{margin-left:75%}#bootstrap-theme .col-xs-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-xs-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-xs-offset-12{margin-left:100%}@media (min-width:768px){#bootstrap-theme .col-sm-1,#bootstrap-theme .col-sm-2,#bootstrap-theme .col-sm-3,#bootstrap-theme .col-sm-4,#bootstrap-theme .col-sm-5,#bootstrap-theme .col-sm-6,#bootstrap-theme .col-sm-7,#bootstrap-theme .col-sm-8,#bootstrap-theme .col-sm-9,#bootstrap-theme .col-sm-10,#bootstrap-theme .col-sm-11,#bootstrap-theme .col-sm-12{float:left}#bootstrap-theme .col-sm-1{width:8.3333333333%}#bootstrap-theme .col-sm-2{width:16.6666666667%}#bootstrap-theme .col-sm-3{width:25%}#bootstrap-theme .col-sm-4{width:33.3333333333%}#bootstrap-theme .col-sm-5{width:41.6666666667%}#bootstrap-theme .col-sm-6{width:50%}#bootstrap-theme .col-sm-7{width:58.3333333333%}#bootstrap-theme .col-sm-8{width:66.6666666667%}#bootstrap-theme .col-sm-9{width:75%}#bootstrap-theme .col-sm-10{width:83.3333333333%}#bootstrap-theme .col-sm-11{width:91.6666666667%}#bootstrap-theme .col-sm-12{width:100%}#bootstrap-theme .col-sm-pull-0{right:auto}#bootstrap-theme .col-sm-pull-1{right:8.3333333333%}#bootstrap-theme .col-sm-pull-2{right:16.6666666667%}#bootstrap-theme .col-sm-pull-3{right:25%}#bootstrap-theme .col-sm-pull-4{right:33.3333333333%}#bootstrap-theme .col-sm-pull-5{right:41.6666666667%}#bootstrap-theme .col-sm-pull-6{right:50%}#bootstrap-theme .col-sm-pull-7{right:58.3333333333%}#bootstrap-theme .col-sm-pull-8{right:66.6666666667%}#bootstrap-theme .col-sm-pull-9{right:75%}#bootstrap-theme .col-sm-pull-10{right:83.3333333333%}#bootstrap-theme .col-sm-pull-11{right:91.6666666667%}#bootstrap-theme .col-sm-pull-12{right:100%}#bootstrap-theme .col-sm-push-0{left:auto}#bootstrap-theme .col-sm-push-1{left:8.3333333333%}#bootstrap-theme .col-sm-push-2{left:16.6666666667%}#bootstrap-theme .col-sm-push-3{left:25%}#bootstrap-theme .col-sm-push-4{left:33.3333333333%}#bootstrap-theme .col-sm-push-5{left:41.6666666667%}#bootstrap-theme .col-sm-push-6{left:50%}#bootstrap-theme .col-sm-push-7{left:58.3333333333%}#bootstrap-theme .col-sm-push-8{left:66.6666666667%}#bootstrap-theme .col-sm-push-9{left:75%}#bootstrap-theme .col-sm-push-10{left:83.3333333333%}#bootstrap-theme .col-sm-push-11{left:91.6666666667%}#bootstrap-theme .col-sm-push-12{left:100%}#bootstrap-theme .col-sm-offset-0{margin-left:0}#bootstrap-theme .col-sm-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-sm-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-sm-offset-3{margin-left:25%}#bootstrap-theme .col-sm-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-sm-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-sm-offset-6{margin-left:50%}#bootstrap-theme .col-sm-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-sm-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-sm-offset-9{margin-left:75%}#bootstrap-theme .col-sm-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-sm-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-sm-offset-12{margin-left:100%}}@media (min-width:992px){#bootstrap-theme .col-md-1,#bootstrap-theme .col-md-2,#bootstrap-theme .col-md-3,#bootstrap-theme .col-md-4,#bootstrap-theme .col-md-5,#bootstrap-theme .col-md-6,#bootstrap-theme .col-md-7,#bootstrap-theme .col-md-8,#bootstrap-theme .col-md-9,#bootstrap-theme .col-md-10,#bootstrap-theme .col-md-11,#bootstrap-theme .col-md-12{float:left}#bootstrap-theme .col-md-1{width:8.3333333333%}#bootstrap-theme .col-md-2{width:16.6666666667%}#bootstrap-theme .col-md-3{width:25%}#bootstrap-theme .col-md-4{width:33.3333333333%}#bootstrap-theme .col-md-5{width:41.6666666667%}#bootstrap-theme .col-md-6{width:50%}#bootstrap-theme .col-md-7{width:58.3333333333%}#bootstrap-theme .col-md-8{width:66.6666666667%}#bootstrap-theme .col-md-9{width:75%}#bootstrap-theme .col-md-10{width:83.3333333333%}#bootstrap-theme .col-md-11{width:91.6666666667%}#bootstrap-theme .col-md-12{width:100%}#bootstrap-theme .col-md-pull-0{right:auto}#bootstrap-theme .col-md-pull-1{right:8.3333333333%}#bootstrap-theme .col-md-pull-2{right:16.6666666667%}#bootstrap-theme .col-md-pull-3{right:25%}#bootstrap-theme .col-md-pull-4{right:33.3333333333%}#bootstrap-theme .col-md-pull-5{right:41.6666666667%}#bootstrap-theme .col-md-pull-6{right:50%}#bootstrap-theme .col-md-pull-7{right:58.3333333333%}#bootstrap-theme .col-md-pull-8{right:66.6666666667%}#bootstrap-theme .col-md-pull-9{right:75%}#bootstrap-theme .col-md-pull-10{right:83.3333333333%}#bootstrap-theme .col-md-pull-11{right:91.6666666667%}#bootstrap-theme .col-md-pull-12{right:100%}#bootstrap-theme .col-md-push-0{left:auto}#bootstrap-theme .col-md-push-1{left:8.3333333333%}#bootstrap-theme .col-md-push-2{left:16.6666666667%}#bootstrap-theme .col-md-push-3{left:25%}#bootstrap-theme .col-md-push-4{left:33.3333333333%}#bootstrap-theme .col-md-push-5{left:41.6666666667%}#bootstrap-theme .col-md-push-6{left:50%}#bootstrap-theme .col-md-push-7{left:58.3333333333%}#bootstrap-theme .col-md-push-8{left:66.6666666667%}#bootstrap-theme .col-md-push-9{left:75%}#bootstrap-theme .col-md-push-10{left:83.3333333333%}#bootstrap-theme .col-md-push-11{left:91.6666666667%}#bootstrap-theme .col-md-push-12{left:100%}#bootstrap-theme .col-md-offset-0{margin-left:0}#bootstrap-theme .col-md-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-md-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-md-offset-3{margin-left:25%}#bootstrap-theme .col-md-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-md-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-md-offset-6{margin-left:50%}#bootstrap-theme .col-md-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-md-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-md-offset-9{margin-left:75%}#bootstrap-theme .col-md-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-md-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-md-offset-12{margin-left:100%}}@media (min-width:1200px){#bootstrap-theme .col-lg-1,#bootstrap-theme .col-lg-2,#bootstrap-theme .col-lg-3,#bootstrap-theme .col-lg-4,#bootstrap-theme .col-lg-5,#bootstrap-theme .col-lg-6,#bootstrap-theme .col-lg-7,#bootstrap-theme .col-lg-8,#bootstrap-theme .col-lg-9,#bootstrap-theme .col-lg-10,#bootstrap-theme .col-lg-11,#bootstrap-theme .col-lg-12{float:left}#bootstrap-theme .col-lg-1{width:8.3333333333%}#bootstrap-theme .col-lg-2{width:16.6666666667%}#bootstrap-theme .col-lg-3{width:25%}#bootstrap-theme .col-lg-4{width:33.3333333333%}#bootstrap-theme .col-lg-5{width:41.6666666667%}#bootstrap-theme .col-lg-6{width:50%}#bootstrap-theme .col-lg-7{width:58.3333333333%}#bootstrap-theme .col-lg-8{width:66.6666666667%}#bootstrap-theme .col-lg-9{width:75%}#bootstrap-theme .col-lg-10{width:83.3333333333%}#bootstrap-theme .col-lg-11{width:91.6666666667%}#bootstrap-theme .col-lg-12{width:100%}#bootstrap-theme .col-lg-pull-0{right:auto}#bootstrap-theme .col-lg-pull-1{right:8.3333333333%}#bootstrap-theme .col-lg-pull-2{right:16.6666666667%}#bootstrap-theme .col-lg-pull-3{right:25%}#bootstrap-theme .col-lg-pull-4{right:33.3333333333%}#bootstrap-theme .col-lg-pull-5{right:41.6666666667%}#bootstrap-theme .col-lg-pull-6{right:50%}#bootstrap-theme .col-lg-pull-7{right:58.3333333333%}#bootstrap-theme .col-lg-pull-8{right:66.6666666667%}#bootstrap-theme .col-lg-pull-9{right:75%}#bootstrap-theme .col-lg-pull-10{right:83.3333333333%}#bootstrap-theme .col-lg-pull-11{right:91.6666666667%}#bootstrap-theme .col-lg-pull-12{right:100%}#bootstrap-theme .col-lg-push-0{left:auto}#bootstrap-theme .col-lg-push-1{left:8.3333333333%}#bootstrap-theme .col-lg-push-2{left:16.6666666667%}#bootstrap-theme .col-lg-push-3{left:25%}#bootstrap-theme .col-lg-push-4{left:33.3333333333%}#bootstrap-theme .col-lg-push-5{left:41.6666666667%}#bootstrap-theme .col-lg-push-6{left:50%}#bootstrap-theme .col-lg-push-7{left:58.3333333333%}#bootstrap-theme .col-lg-push-8{left:66.6666666667%}#bootstrap-theme .col-lg-push-9{left:75%}#bootstrap-theme .col-lg-push-10{left:83.3333333333%}#bootstrap-theme .col-lg-push-11{left:91.6666666667%}#bootstrap-theme .col-lg-push-12{left:100%}#bootstrap-theme .col-lg-offset-0{margin-left:0}#bootstrap-theme .col-lg-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-lg-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-lg-offset-3{margin-left:25%}#bootstrap-theme .col-lg-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-lg-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-lg-offset-6{margin-left:50%}#bootstrap-theme .col-lg-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-lg-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-lg-offset-9{margin-left:75%}#bootstrap-theme .col-lg-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-lg-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-lg-offset-12{margin-left:100%}}#bootstrap-theme table{background-color:transparent}#bootstrap-theme table col[class*=col-]{position:static;display:table-column;float:none}#bootstrap-theme table td[class*=col-],#bootstrap-theme table th[class*=col-]{position:static;display:table-cell;float:none}#bootstrap-theme caption{padding-top:8px;padding-bottom:8px;color:#999;text-align:left}#bootstrap-theme th{text-align:left}#bootstrap-theme .table{width:100%;max-width:100%;margin-bottom:20px}#bootstrap-theme .table>thead>tr>th,#bootstrap-theme .table>thead>tr>td,#bootstrap-theme .table>tbody>tr>th,#bootstrap-theme .table>tbody>tr>td,#bootstrap-theme .table>tfoot>tr>th,#bootstrap-theme .table>tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}#bootstrap-theme .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}#bootstrap-theme .table>caption+thead>tr:first-child>th,#bootstrap-theme .table>caption+thead>tr:first-child>td,#bootstrap-theme .table>colgroup+thead>tr:first-child>th,#bootstrap-theme .table>colgroup+thead>tr:first-child>td,#bootstrap-theme .table>thead:first-child>tr:first-child>th,#bootstrap-theme .table>thead:first-child>tr:first-child>td{border-top:0}#bootstrap-theme .table>tbody+tbody{border-top:2px solid #ddd}#bootstrap-theme .table .table{background-color:#fff}#bootstrap-theme .table-condensed>thead>tr>th,#bootstrap-theme .table-condensed>thead>tr>td,#bootstrap-theme .table-condensed>tbody>tr>th,#bootstrap-theme .table-condensed>tbody>tr>td,#bootstrap-theme .table-condensed>tfoot>tr>th,#bootstrap-theme .table-condensed>tfoot>tr>td{padding:5px}#bootstrap-theme .table-bordered{border:1px solid #ddd}#bootstrap-theme .table-bordered>thead>tr>th,#bootstrap-theme .table-bordered>thead>tr>td,#bootstrap-theme .table-bordered>tbody>tr>th,#bootstrap-theme .table-bordered>tbody>tr>td,#bootstrap-theme .table-bordered>tfoot>tr>th,#bootstrap-theme .table-bordered>tfoot>tr>td{border:1px solid #ddd}#bootstrap-theme .table-bordered>thead>tr>th,#bootstrap-theme .table-bordered>thead>tr>td{border-bottom-width:2px}#bootstrap-theme .table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}#bootstrap-theme .table-hover>tbody>tr:hover{background-color:#f5f5f5}#bootstrap-theme .table>thead>tr>td.active,#bootstrap-theme .table>thead>tr>th.active,#bootstrap-theme .table>thead>tr.active>td,#bootstrap-theme .table>thead>tr.active>th,#bootstrap-theme .table>tbody>tr>td.active,#bootstrap-theme .table>tbody>tr>th.active,#bootstrap-theme .table>tbody>tr.active>td,#bootstrap-theme .table>tbody>tr.active>th,#bootstrap-theme .table>tfoot>tr>td.active,#bootstrap-theme .table>tfoot>tr>th.active,#bootstrap-theme .table>tfoot>tr.active>td,#bootstrap-theme .table>tfoot>tr.active>th{background-color:#f5f5f5}#bootstrap-theme .table-hover>tbody>tr>td.active:hover,#bootstrap-theme .table-hover>tbody>tr>th.active:hover,#bootstrap-theme .table-hover>tbody>tr.active:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.active,#bootstrap-theme .table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}#bootstrap-theme .table>thead>tr>td.success,#bootstrap-theme .table>thead>tr>th.success,#bootstrap-theme .table>thead>tr.success>td,#bootstrap-theme .table>thead>tr.success>th,#bootstrap-theme .table>tbody>tr>td.success,#bootstrap-theme .table>tbody>tr>th.success,#bootstrap-theme .table>tbody>tr.success>td,#bootstrap-theme .table>tbody>tr.success>th,#bootstrap-theme .table>tfoot>tr>td.success,#bootstrap-theme .table>tfoot>tr>th.success,#bootstrap-theme .table>tfoot>tr.success>td,#bootstrap-theme .table>tfoot>tr.success>th{background-color:#dff0d8}#bootstrap-theme .table-hover>tbody>tr>td.success:hover,#bootstrap-theme .table-hover>tbody>tr>th.success:hover,#bootstrap-theme .table-hover>tbody>tr.success:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.success,#bootstrap-theme .table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}#bootstrap-theme .table>thead>tr>td.info,#bootstrap-theme .table>thead>tr>th.info,#bootstrap-theme .table>thead>tr.info>td,#bootstrap-theme .table>thead>tr.info>th,#bootstrap-theme .table>tbody>tr>td.info,#bootstrap-theme .table>tbody>tr>th.info,#bootstrap-theme .table>tbody>tr.info>td,#bootstrap-theme .table>tbody>tr.info>th,#bootstrap-theme .table>tfoot>tr>td.info,#bootstrap-theme .table>tfoot>tr>th.info,#bootstrap-theme .table>tfoot>tr.info>td,#bootstrap-theme .table>tfoot>tr.info>th{background-color:#d9edf7}#bootstrap-theme .table-hover>tbody>tr>td.info:hover,#bootstrap-theme .table-hover>tbody>tr>th.info:hover,#bootstrap-theme .table-hover>tbody>tr.info:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.info,#bootstrap-theme .table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}#bootstrap-theme .table>thead>tr>td.warning,#bootstrap-theme .table>thead>tr>th.warning,#bootstrap-theme .table>thead>tr.warning>td,#bootstrap-theme .table>thead>tr.warning>th,#bootstrap-theme .table>tbody>tr>td.warning,#bootstrap-theme .table>tbody>tr>th.warning,#bootstrap-theme .table>tbody>tr.warning>td,#bootstrap-theme .table>tbody>tr.warning>th,#bootstrap-theme .table>tfoot>tr>td.warning,#bootstrap-theme .table>tfoot>tr>th.warning,#bootstrap-theme .table>tfoot>tr.warning>td,#bootstrap-theme .table>tfoot>tr.warning>th{background-color:#fcf8e3}#bootstrap-theme .table-hover>tbody>tr>td.warning:hover,#bootstrap-theme .table-hover>tbody>tr>th.warning:hover,#bootstrap-theme .table-hover>tbody>tr.warning:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.warning,#bootstrap-theme .table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}#bootstrap-theme .table>thead>tr>td.danger,#bootstrap-theme .table>thead>tr>th.danger,#bootstrap-theme .table>thead>tr.danger>td,#bootstrap-theme .table>thead>tr.danger>th,#bootstrap-theme .table>tbody>tr>td.danger,#bootstrap-theme .table>tbody>tr>th.danger,#bootstrap-theme .table>tbody>tr.danger>td,#bootstrap-theme .table>tbody>tr.danger>th,#bootstrap-theme .table>tfoot>tr>td.danger,#bootstrap-theme .table>tfoot>tr>th.danger,#bootstrap-theme .table>tfoot>tr.danger>td,#bootstrap-theme .table>tfoot>tr.danger>th{background-color:#f2dede}#bootstrap-theme .table-hover>tbody>tr>td.danger:hover,#bootstrap-theme .table-hover>tbody>tr>th.danger:hover,#bootstrap-theme .table-hover>tbody>tr.danger:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.danger,#bootstrap-theme .table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}#bootstrap-theme .table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){#bootstrap-theme .table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}#bootstrap-theme .table-responsive>.table{margin-bottom:0}#bootstrap-theme .table-responsive>.table>thead>tr>th,#bootstrap-theme .table-responsive>.table>thead>tr>td,#bootstrap-theme .table-responsive>.table>tbody>tr>th,#bootstrap-theme .table-responsive>.table>tbody>tr>td,#bootstrap-theme .table-responsive>.table>tfoot>tr>th,#bootstrap-theme .table-responsive>.table>tfoot>tr>td{white-space:nowrap}#bootstrap-theme .table-responsive>.table-bordered{border:0}#bootstrap-theme .table-responsive>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}#bootstrap-theme .table-responsive>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}#bootstrap-theme .table-responsive>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr:last-child>th,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}#bootstrap-theme fieldset{min-width:0;padding:0;margin:0;border:0}#bootstrap-theme legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#555;border:0;border-bottom:1px solid #e5e5e5}#bootstrap-theme label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}#bootstrap-theme input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}#bootstrap-theme input[type=radio],#bootstrap-theme input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}#bootstrap-theme input[type=radio][disabled],#bootstrap-theme input[type=radio].disabled,fieldset[disabled] #bootstrap-theme input[type=radio],#bootstrap-theme input[type=checkbox][disabled],#bootstrap-theme input[type=checkbox].disabled,fieldset[disabled] #bootstrap-theme input[type=checkbox]{cursor:not-allowed}#bootstrap-theme input[type=file]{display:block}#bootstrap-theme input[type=range]{display:block;width:100%}#bootstrap-theme select[multiple],#bootstrap-theme select[size]{height:auto}#bootstrap-theme input[type=file]:focus,#bootstrap-theme input[type=radio]:focus,#bootstrap-theme input[type=checkbox]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme output{display:block;padding-top:5px;font-size:14px;line-height:1.428571429;color:#555}#bootstrap-theme .form-control{display:block;width:100%;height:30px;padding:4px 8px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}#bootstrap-theme .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}#bootstrap-theme .form-control::-moz-placeholder{color:#999;opacity:1}#bootstrap-theme .form-control:-ms-input-placeholder{color:#999}#bootstrap-theme .form-control::-webkit-input-placeholder{color:#999}#bootstrap-theme .form-control::-ms-expand{background-color:transparent;border:0}#bootstrap-theme .form-control[disabled],#bootstrap-theme .form-control[readonly],fieldset[disabled] #bootstrap-theme .form-control{background-color:#eee;opacity:1}#bootstrap-theme .form-control[disabled],fieldset[disabled] #bootstrap-theme .form-control{cursor:not-allowed}#bootstrap-theme textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){#bootstrap-theme input[type=date].form-control,#bootstrap-theme input[type=time].form-control,#bootstrap-theme input[type=datetime-local].form-control,#bootstrap-theme input[type=month].form-control{line-height:30px}#bootstrap-theme input[type=date].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=date],#bootstrap-theme .input-group-sm>input.input-group-addon[type=date],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=date],.input-group-sm #bootstrap-theme input[type=date],#bootstrap-theme input[type=time].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=time],#bootstrap-theme .input-group-sm>input.input-group-addon[type=time],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=time],.input-group-sm #bootstrap-theme input[type=time],#bootstrap-theme input[type=datetime-local].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=datetime-local],#bootstrap-theme .input-group-sm>input.input-group-addon[type=datetime-local],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=datetime-local],.input-group-sm #bootstrap-theme input[type=datetime-local],#bootstrap-theme input[type=month].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=month],#bootstrap-theme .input-group-sm>input.input-group-addon[type=month],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=month],.input-group-sm #bootstrap-theme input[type=month]{line-height:30px}#bootstrap-theme input[type=date].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=date],#bootstrap-theme .input-group-lg>input.input-group-addon[type=date],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=date],.input-group-lg #bootstrap-theme input[type=date],#bootstrap-theme input[type=time].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=time],#bootstrap-theme .input-group-lg>input.input-group-addon[type=time],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=time],.input-group-lg #bootstrap-theme input[type=time],#bootstrap-theme input[type=datetime-local].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=datetime-local],#bootstrap-theme .input-group-lg>input.input-group-addon[type=datetime-local],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=datetime-local],.input-group-lg #bootstrap-theme input[type=datetime-local],#bootstrap-theme input[type=month].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=month],#bootstrap-theme .input-group-lg>input.input-group-addon[type=month],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=month],.input-group-lg #bootstrap-theme input[type=month]{line-height:54px}}#bootstrap-theme .form-group{margin-bottom:15px}#bootstrap-theme .radio,#bootstrap-theme .checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}#bootstrap-theme .radio.disabled label,fieldset[disabled] #bootstrap-theme .radio label,#bootstrap-theme .checkbox.disabled label,fieldset[disabled] #bootstrap-theme .checkbox label{cursor:not-allowed}#bootstrap-theme .radio label,#bootstrap-theme .checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}#bootstrap-theme .radio input[type=radio],#bootstrap-theme .radio-inline input[type=radio],#bootstrap-theme .checkbox input[type=checkbox],#bootstrap-theme .checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}#bootstrap-theme .radio+.radio,#bootstrap-theme .checkbox+.checkbox{margin-top:-5px}#bootstrap-theme .radio-inline,#bootstrap-theme .checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}#bootstrap-theme .radio-inline.disabled,fieldset[disabled] #bootstrap-theme .radio-inline,#bootstrap-theme .checkbox-inline.disabled,fieldset[disabled] #bootstrap-theme .checkbox-inline{cursor:not-allowed}#bootstrap-theme .radio-inline+.radio-inline,#bootstrap-theme .checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}#bootstrap-theme .form-control-static{min-height:34px;padding-top:5px;padding-bottom:5px;margin-bottom:0}#bootstrap-theme .form-control-static.input-lg,#bootstrap-theme .input-group-lg>.form-control-static.form-control,#bootstrap-theme .input-group-lg>.form-control-static.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.form-control-static.btn,#bootstrap-theme .form-control-static.input-sm,#bootstrap-theme .input-group-sm>.form-control-static.form-control,#bootstrap-theme .input-group-sm>.form-control-static.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}#bootstrap-theme .input-sm,#bootstrap-theme .input-group-sm>.form-control,#bootstrap-theme .input-group-sm>.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme select.input-sm,#bootstrap-theme .input-group-sm>select.form-control,#bootstrap-theme .input-group-sm>select.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>select.btn{height:30px;line-height:30px}#bootstrap-theme textarea.input-sm,#bootstrap-theme .input-group-sm>textarea.form-control,#bootstrap-theme .input-group-sm>textarea.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>textarea.btn,#bootstrap-theme select[multiple].input-sm,#bootstrap-theme .input-group-sm>select.form-control[multiple],#bootstrap-theme .input-group-sm>select.input-group-addon[multiple],#bootstrap-theme .input-group-sm>.input-group-btn>select.btn[multiple]{height:auto}#bootstrap-theme .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .form-group-sm select.form-control{height:30px;line-height:30px}#bootstrap-theme .form-group-sm textarea.form-control,#bootstrap-theme .form-group-sm select[multiple].form-control{height:auto}#bootstrap-theme .form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}#bootstrap-theme .input-lg,#bootstrap-theme .input-group-lg>.form-control,#bootstrap-theme .input-group-lg>.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.btn{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme select.input-lg,#bootstrap-theme .input-group-lg>select.form-control,#bootstrap-theme .input-group-lg>select.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>select.btn{height:54px;line-height:54px}#bootstrap-theme textarea.input-lg,#bootstrap-theme .input-group-lg>textarea.form-control,#bootstrap-theme .input-group-lg>textarea.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>textarea.btn,#bootstrap-theme select[multiple].input-lg,#bootstrap-theme .input-group-lg>select.form-control[multiple],#bootstrap-theme .input-group-lg>select.input-group-addon[multiple],#bootstrap-theme .input-group-lg>.input-group-btn>select.btn[multiple]{height:auto}#bootstrap-theme .form-group-lg .form-control{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme .form-group-lg select.form-control{height:54px;line-height:54px}#bootstrap-theme .form-group-lg textarea.form-control,#bootstrap-theme .form-group-lg select[multiple].form-control{height:auto}#bootstrap-theme .form-group-lg .form-control-static{height:54px;min-height:38px;padding:15px 16px;font-size:18px;line-height:1.3333333}#bootstrap-theme .has-feedback{position:relative}#bootstrap-theme .has-feedback .form-control{padding-right:37.5px}#bootstrap-theme .form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:30px;height:30px;line-height:30px;text-align:center;pointer-events:none}#bootstrap-theme .input-lg+.form-control-feedback,#bootstrap-theme .input-group-lg>.form-control+.form-control-feedback,#bootstrap-theme .input-group-lg>.input-group-addon+.form-control-feedback,#bootstrap-theme .input-group-lg>.input-group-btn>.btn+.form-control-feedback,#bootstrap-theme .input-group-lg+.form-control-feedback,#bootstrap-theme .form-group-lg .form-control+.form-control-feedback{width:54px;height:54px;line-height:54px}#bootstrap-theme .input-sm+.form-control-feedback,#bootstrap-theme .input-group-sm>.form-control+.form-control-feedback,#bootstrap-theme .input-group-sm>.input-group-addon+.form-control-feedback,#bootstrap-theme .input-group-sm>.input-group-btn>.btn+.form-control-feedback,#bootstrap-theme .input-group-sm+.form-control-feedback,#bootstrap-theme .form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}#bootstrap-theme .has-success .help-block,#bootstrap-theme .has-success .control-label,#bootstrap-theme .has-success .radio,#bootstrap-theme .has-success .checkbox,#bootstrap-theme .has-success .radio-inline,#bootstrap-theme .has-success .checkbox-inline,#bootstrap-theme .has-success.radio label,#bootstrap-theme .has-success.checkbox label,#bootstrap-theme .has-success.radio-inline label,#bootstrap-theme .has-success.checkbox-inline label{color:#468847}#bootstrap-theme .has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b}#bootstrap-theme .has-success .input-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}#bootstrap-theme .has-success .form-control-feedback{color:#468847}#bootstrap-theme .has-warning .help-block,#bootstrap-theme .has-warning .control-label,#bootstrap-theme .has-warning .radio,#bootstrap-theme .has-warning .checkbox,#bootstrap-theme .has-warning .radio-inline,#bootstrap-theme .has-warning .checkbox-inline,#bootstrap-theme .has-warning.radio label,#bootstrap-theme .has-warning.checkbox label,#bootstrap-theme .has-warning.radio-inline label,#bootstrap-theme .has-warning.checkbox-inline label{color:#c09853}#bootstrap-theme .has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e}#bootstrap-theme .has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}#bootstrap-theme .has-warning .form-control-feedback{color:#c09853}#bootstrap-theme .has-error .help-block,#bootstrap-theme .has-error .control-label,#bootstrap-theme .has-error .radio,#bootstrap-theme .has-error .checkbox,#bootstrap-theme .has-error .radio-inline,#bootstrap-theme .has-error .checkbox-inline,#bootstrap-theme .has-error.radio label,#bootstrap-theme .has-error.checkbox label,#bootstrap-theme .has-error.radio-inline label,#bootstrap-theme .has-error.checkbox-inline label{color:#b94a48}#bootstrap-theme .has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392}#bootstrap-theme .has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}#bootstrap-theme .has-error .form-control-feedback{color:#b94a48}#bootstrap-theme .has-feedback label~.form-control-feedback{top:25px}#bootstrap-theme .has-feedback label.sr-only~.form-control-feedback{top:0}#bootstrap-theme .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#959595}@media (min-width:768px){#bootstrap-theme .form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}#bootstrap-theme .form-inline .form-control-static{display:inline-block}#bootstrap-theme .form-inline .input-group{display:inline-table;vertical-align:middle}#bootstrap-theme .form-inline .input-group .input-group-addon,#bootstrap-theme .form-inline .input-group .input-group-btn,#bootstrap-theme .form-inline .input-group .form-control{width:auto}#bootstrap-theme .form-inline .input-group>.form-control{width:100%}#bootstrap-theme .form-inline .control-label{margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .radio,#bootstrap-theme .form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .radio label,#bootstrap-theme .form-inline .checkbox label{padding-left:0}#bootstrap-theme .form-inline .radio input[type=radio],#bootstrap-theme .form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}#bootstrap-theme .form-inline .has-feedback .form-control-feedback{top:0}}#bootstrap-theme .form-horizontal .radio,#bootstrap-theme .form-horizontal .checkbox,#bootstrap-theme .form-horizontal .radio-inline,#bootstrap-theme .form-horizontal .checkbox-inline{padding-top:5px;margin-top:0;margin-bottom:0}#bootstrap-theme .form-horizontal .radio,#bootstrap-theme .form-horizontal .checkbox{min-height:25px}#bootstrap-theme .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}#bootstrap-theme .form-horizontal .form-group:before,#bootstrap-theme .form-horizontal .form-group:after{display:table;content:" "}#bootstrap-theme .form-horizontal .form-group:after{clear:both}@media (min-width:768px){#bootstrap-theme .form-horizontal .control-label{padding-top:5px;margin-bottom:0;text-align:right}}#bootstrap-theme .form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){#bootstrap-theme .form-horizontal .form-group-lg .control-label{padding-top:15px;font-size:18px}}@media (min-width:768px){#bootstrap-theme .form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}#bootstrap-theme .btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:4px 8px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#bootstrap-theme .btn:focus,#bootstrap-theme .btn.focus,#bootstrap-theme .btn:active:focus,#bootstrap-theme .btn:active.focus,#bootstrap-theme .btn.active:focus,#bootstrap-theme .btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme .btn:hover,#bootstrap-theme .btn:focus,#bootstrap-theme .btn.focus{color:#fff;text-decoration:none}#bootstrap-theme .btn:active,#bootstrap-theme .btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bootstrap-theme .btn.disabled,#bootstrap-theme .btn[disabled],fieldset[disabled] #bootstrap-theme .btn{cursor:not-allowed;-webkit-filter:alpha(opacity=65);filter:alpha(opacity=65);opacity:.65;-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme a.btn.disabled,fieldset[disabled] #bootstrap-theme a.btn{pointer-events:none}#bootstrap-theme .btn-default{color:#fff;background-color:#70716b;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:focus,#bootstrap-theme .btn-default.focus{color:#fff;background-color:#565752;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:hover{color:#fff;background-color:#565752;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:active,#bootstrap-theme .btn-default.active,.open>#bootstrap-theme .btn-default.dropdown-toggle{color:#fff;background-color:#565752;background-image:none;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:active:hover,#bootstrap-theme .btn-default:active:focus,#bootstrap-theme .btn-default:active.focus,#bootstrap-theme .btn-default.active:hover,#bootstrap-theme .btn-default.active:focus,#bootstrap-theme .btn-default.active.focus,.open>#bootstrap-theme .btn-default.dropdown-toggle:hover,.open>#bootstrap-theme .btn-default.dropdown-toggle:focus,.open>#bootstrap-theme .btn-default.dropdown-toggle.focus{color:#fff;background-color:#444441;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default.disabled:hover,#bootstrap-theme .btn-default.disabled:focus,#bootstrap-theme .btn-default.disabled.focus,#bootstrap-theme .btn-default[disabled]:hover,#bootstrap-theme .btn-default[disabled]:focus,#bootstrap-theme .btn-default[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-default:hover,fieldset[disabled] #bootstrap-theme .btn-default:focus,fieldset[disabled] #bootstrap-theme .btn-default.focus{background-color:#70716b;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default .badge{color:#70716b;background-color:#fff}#bootstrap-theme .btn-primary{color:#fff;background-color:#70716b;border-color:#70716b}#bootstrap-theme .btn-primary:focus,#bootstrap-theme .btn-primary.focus{color:#fff;background-color:#565752;border-color:#2f302d}#bootstrap-theme .btn-primary:hover{color:#fff;background-color:#565752;border-color:#51524d}#bootstrap-theme .btn-primary:active,#bootstrap-theme .btn-primary.active,.open>#bootstrap-theme .btn-primary.dropdown-toggle{color:#fff;background-color:#565752;background-image:none;border-color:#51524d}#bootstrap-theme .btn-primary:active:hover,#bootstrap-theme .btn-primary:active:focus,#bootstrap-theme .btn-primary:active.focus,#bootstrap-theme .btn-primary.active:hover,#bootstrap-theme .btn-primary.active:focus,#bootstrap-theme .btn-primary.active.focus,.open>#bootstrap-theme .btn-primary.dropdown-toggle:hover,.open>#bootstrap-theme .btn-primary.dropdown-toggle:focus,.open>#bootstrap-theme .btn-primary.dropdown-toggle.focus{color:#fff;background-color:#444441;border-color:#2f302d}#bootstrap-theme .btn-primary.disabled:hover,#bootstrap-theme .btn-primary.disabled:focus,#bootstrap-theme .btn-primary.disabled.focus,#bootstrap-theme .btn-primary[disabled]:hover,#bootstrap-theme .btn-primary[disabled]:focus,#bootstrap-theme .btn-primary[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-primary:hover,fieldset[disabled] #bootstrap-theme .btn-primary:focus,fieldset[disabled] #bootstrap-theme .btn-primary.focus{background-color:#70716b;border-color:#70716b}#bootstrap-theme .btn-primary .badge{color:#70716b;background-color:#fff}#bootstrap-theme .btn-success{color:#fff;background-color:#73a839;border-color:#73a839}#bootstrap-theme .btn-success:focus,#bootstrap-theme .btn-success.focus{color:#fff;background-color:#59822c;border-color:#324919}#bootstrap-theme .btn-success:hover{color:#fff;background-color:#59822c;border-color:#547a29}#bootstrap-theme .btn-success:active,#bootstrap-theme .btn-success.active,.open>#bootstrap-theme .btn-success.dropdown-toggle{color:#fff;background-color:#59822c;background-image:none;border-color:#547a29}#bootstrap-theme .btn-success:active:hover,#bootstrap-theme .btn-success:active:focus,#bootstrap-theme .btn-success:active.focus,#bootstrap-theme .btn-success.active:hover,#bootstrap-theme .btn-success.active:focus,#bootstrap-theme .btn-success.active.focus,.open>#bootstrap-theme .btn-success.dropdown-toggle:hover,.open>#bootstrap-theme .btn-success.dropdown-toggle:focus,.open>#bootstrap-theme .btn-success.dropdown-toggle.focus{color:#fff;background-color:#476723;border-color:#324919}#bootstrap-theme .btn-success.disabled:hover,#bootstrap-theme .btn-success.disabled:focus,#bootstrap-theme .btn-success.disabled.focus,#bootstrap-theme .btn-success[disabled]:hover,#bootstrap-theme .btn-success[disabled]:focus,#bootstrap-theme .btn-success[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-success:hover,fieldset[disabled] #bootstrap-theme .btn-success:focus,fieldset[disabled] #bootstrap-theme .btn-success.focus{background-color:#73a839;border-color:#73a839}#bootstrap-theme .btn-success .badge{color:#73a839;background-color:#fff}#bootstrap-theme .btn-info{color:#fff;background-color:#cde8fe;border-color:#cde8fe}#bootstrap-theme .btn-info:focus,#bootstrap-theme .btn-info.focus{color:#fff;background-color:#9bd1fd;border-color:#50affc}#bootstrap-theme .btn-info:hover{color:#fff;background-color:#9bd1fd;border-color:#91ccfd}#bootstrap-theme .btn-info:active,#bootstrap-theme .btn-info.active,.open>#bootstrap-theme .btn-info.dropdown-toggle{color:#fff;background-color:#9bd1fd;background-image:none;border-color:#91ccfd}#bootstrap-theme .btn-info:active:hover,#bootstrap-theme .btn-info:active:focus,#bootstrap-theme .btn-info:active.focus,#bootstrap-theme .btn-info.active:hover,#bootstrap-theme .btn-info.active:focus,#bootstrap-theme .btn-info.active.focus,.open>#bootstrap-theme .btn-info.dropdown-toggle:hover,.open>#bootstrap-theme .btn-info.dropdown-toggle:focus,.open>#bootstrap-theme .btn-info.dropdown-toggle.focus{color:#fff;background-color:#78c1fc;border-color:#50affc}#bootstrap-theme .btn-info.disabled:hover,#bootstrap-theme .btn-info.disabled:focus,#bootstrap-theme .btn-info.disabled.focus,#bootstrap-theme .btn-info[disabled]:hover,#bootstrap-theme .btn-info[disabled]:focus,#bootstrap-theme .btn-info[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-info:hover,fieldset[disabled] #bootstrap-theme .btn-info:focus,fieldset[disabled] #bootstrap-theme .btn-info.focus{background-color:#cde8fe;border-color:#cde8fe}#bootstrap-theme .btn-info .badge{color:#cde8fe;background-color:#fff}#bootstrap-theme .btn-warning{color:#fff;background-color:#dd5600;border-color:#dd5600}#bootstrap-theme .btn-warning:focus,#bootstrap-theme .btn-warning.focus{color:#fff;background-color:#aa4200;border-color:#5e2400}#bootstrap-theme .btn-warning:hover{color:#fff;background-color:#aa4200;border-color:#a03e00}#bootstrap-theme .btn-warning:active,#bootstrap-theme .btn-warning.active,.open>#bootstrap-theme .btn-warning.dropdown-toggle{color:#fff;background-color:#aa4200;background-image:none;border-color:#a03e00}#bootstrap-theme .btn-warning:active:hover,#bootstrap-theme .btn-warning:active:focus,#bootstrap-theme .btn-warning:active.focus,#bootstrap-theme .btn-warning.active:hover,#bootstrap-theme .btn-warning.active:focus,#bootstrap-theme .btn-warning.active.focus,.open>#bootstrap-theme .btn-warning.dropdown-toggle:hover,.open>#bootstrap-theme .btn-warning.dropdown-toggle:focus,.open>#bootstrap-theme .btn-warning.dropdown-toggle.focus{color:#fff;background-color:#863400;border-color:#5e2400}#bootstrap-theme .btn-warning.disabled:hover,#bootstrap-theme .btn-warning.disabled:focus,#bootstrap-theme .btn-warning.disabled.focus,#bootstrap-theme .btn-warning[disabled]:hover,#bootstrap-theme .btn-warning[disabled]:focus,#bootstrap-theme .btn-warning[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-warning:hover,fieldset[disabled] #bootstrap-theme .btn-warning:focus,fieldset[disabled] #bootstrap-theme .btn-warning.focus{background-color:#dd5600;border-color:#dd5600}#bootstrap-theme .btn-warning .badge{color:#dd5600;background-color:#fff}#bootstrap-theme .btn-danger{color:#fff;background-color:#c71c22;border-color:#c71c22}#bootstrap-theme .btn-danger:focus,#bootstrap-theme .btn-danger.focus{color:#fff;background-color:#9a161a;border-color:#570c0f}#bootstrap-theme .btn-danger:hover{color:#fff;background-color:#9a161a;border-color:#911419}#bootstrap-theme .btn-danger:active,#bootstrap-theme .btn-danger.active,.open>#bootstrap-theme .btn-danger.dropdown-toggle{color:#fff;background-color:#9a161a;background-image:none;border-color:#911419}#bootstrap-theme .btn-danger:active:hover,#bootstrap-theme .btn-danger:active:focus,#bootstrap-theme .btn-danger:active.focus,#bootstrap-theme .btn-danger.active:hover,#bootstrap-theme .btn-danger.active:focus,#bootstrap-theme .btn-danger.active.focus,.open>#bootstrap-theme .btn-danger.dropdown-toggle:hover,.open>#bootstrap-theme .btn-danger.dropdown-toggle:focus,.open>#bootstrap-theme .btn-danger.dropdown-toggle.focus{color:#fff;background-color:#7b1115;border-color:#570c0f}#bootstrap-theme .btn-danger.disabled:hover,#bootstrap-theme .btn-danger.disabled:focus,#bootstrap-theme .btn-danger.disabled.focus,#bootstrap-theme .btn-danger[disabled]:hover,#bootstrap-theme .btn-danger[disabled]:focus,#bootstrap-theme .btn-danger[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-danger:hover,fieldset[disabled] #bootstrap-theme .btn-danger:focus,fieldset[disabled] #bootstrap-theme .btn-danger.focus{background-color:#c71c22;border-color:#c71c22}#bootstrap-theme .btn-danger .badge{color:#c71c22;background-color:#fff}#bootstrap-theme .btn-link{font-weight:400;color:#2786c2;border-radius:0}#bootstrap-theme .btn-link,#bootstrap-theme .btn-link:active,#bootstrap-theme .btn-link.active,#bootstrap-theme .btn-link[disabled],fieldset[disabled] #bootstrap-theme .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme .btn-link,#bootstrap-theme .btn-link:hover,#bootstrap-theme .btn-link:focus,#bootstrap-theme .btn-link:active{border-color:transparent}#bootstrap-theme .btn-link:hover,#bootstrap-theme .btn-link:focus{color:#1a5a82;text-decoration:underline;background-color:transparent}#bootstrap-theme .btn-link[disabled]:hover,#bootstrap-theme .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .btn-link:hover,fieldset[disabled] #bootstrap-theme .btn-link:focus{color:#999;text-decoration:none}#bootstrap-theme .btn-lg,#bootstrap-theme .btn-group-lg>.btn{padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme .btn-sm,#bootstrap-theme .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .btn-xs,#bootstrap-theme .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .btn-block{display:block;width:100%}#bootstrap-theme .btn-block+.btn-block{margin-top:5px}#bootstrap-theme input[type=submit].btn-block,#bootstrap-theme input[type=reset].btn-block,#bootstrap-theme input[type=button].btn-block{width:100%}#bootstrap-theme .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}#bootstrap-theme .fade.in{opacity:1}#bootstrap-theme .collapse{display:none}#bootstrap-theme .collapse.in{display:block}#bootstrap-theme tr.collapse.in{display:table-row}#bootstrap-theme tbody.collapse.in{display:table-row-group}#bootstrap-theme .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}#bootstrap-theme .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}#bootstrap-theme .dropup,#bootstrap-theme .dropdown{position:relative}#bootstrap-theme .dropdown-toggle:focus{outline:0}#bootstrap-theme .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}#bootstrap-theme .dropdown-menu.pull-right{right:0;left:auto}#bootstrap-theme .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}#bootstrap-theme .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}#bootstrap-theme .dropdown-menu>li>a:hover,#bootstrap-theme .dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#000}#bootstrap-theme .dropdown-menu>.active>a,#bootstrap-theme .dropdown-menu>.active>a:hover,#bootstrap-theme .dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#000;outline:0}#bootstrap-theme .dropdown-menu>.disabled>a,#bootstrap-theme .dropdown-menu>.disabled>a:hover,#bootstrap-theme .dropdown-menu>.disabled>a:focus{color:#999}#bootstrap-theme .dropdown-menu>.disabled>a:hover,#bootstrap-theme .dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;-webkit-filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}#bootstrap-theme .open>.dropdown-menu{display:block}#bootstrap-theme .open>a{outline:0}#bootstrap-theme .dropdown-menu-right{right:0;left:auto}#bootstrap-theme .dropdown-menu-left{right:auto;left:0}#bootstrap-theme .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999;white-space:nowrap}#bootstrap-theme .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}#bootstrap-theme .pull-right>.dropdown-menu{right:0;left:auto}#bootstrap-theme .dropup .caret,#bootstrap-theme .navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9}#bootstrap-theme .dropup .dropdown-menu,#bootstrap-theme .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){#bootstrap-theme .navbar-right .dropdown-menu{right:0;left:auto}#bootstrap-theme .navbar-right .dropdown-menu-left{left:0;right:auto}}#bootstrap-theme .btn-group,#bootstrap-theme .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}#bootstrap-theme .btn-group>.btn,#bootstrap-theme .btn-group-vertical>.btn{position:relative;float:left}#bootstrap-theme .btn-group>.btn:hover,#bootstrap-theme .btn-group>.btn:focus,#bootstrap-theme .btn-group>.btn:active,#bootstrap-theme .btn-group>.btn.active,#bootstrap-theme .btn-group-vertical>.btn:hover,#bootstrap-theme .btn-group-vertical>.btn:focus,#bootstrap-theme .btn-group-vertical>.btn:active,#bootstrap-theme .btn-group-vertical>.btn.active{z-index:2}#bootstrap-theme .btn-group .btn+.btn,#bootstrap-theme .btn-group .btn+.btn-group,#bootstrap-theme .btn-group .btn-group+.btn,#bootstrap-theme .btn-group .btn-group+.btn-group{margin-left:-1px}#bootstrap-theme .btn-toolbar{margin-left:-5px}#bootstrap-theme .btn-toolbar:before,#bootstrap-theme .btn-toolbar:after{display:table;content:" "}#bootstrap-theme .btn-toolbar:after{clear:both}#bootstrap-theme .btn-toolbar .btn,#bootstrap-theme .btn-toolbar .btn-group,#bootstrap-theme .btn-toolbar .input-group{float:left}#bootstrap-theme .btn-toolbar>.btn,#bootstrap-theme .btn-toolbar>.btn-group,#bootstrap-theme .btn-toolbar>.input-group{margin-left:5px}#bootstrap-theme .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}#bootstrap-theme .btn-group>.btn:first-child{margin-left:0}#bootstrap-theme .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .btn-group>.btn:last-child:not(:first-child),#bootstrap-theme .btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group>.btn-group{float:left}#bootstrap-theme .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bootstrap-theme .btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,#bootstrap-theme .btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group .dropdown-toggle:active,#bootstrap-theme .btn-group.open .dropdown-toggle{outline:0}#bootstrap-theme .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}#bootstrap-theme .btn-group>.btn-lg+.dropdown-toggle,#bootstrap-theme .btn-group-lg.btn-group>.btn+.dropdown-toggle,#bootstrap-theme .btn-group-lg>.btn-group>.btn+.dropdown-toggle{padding-right:12px;padding-left:12px}#bootstrap-theme .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bootstrap-theme .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme .btn .caret{margin-left:0}#bootstrap-theme .btn-lg .caret,#bootstrap-theme .btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}#bootstrap-theme .dropup .btn-lg .caret,#bootstrap-theme .dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}#bootstrap-theme .btn-group-vertical>.btn,#bootstrap-theme .btn-group-vertical>.btn-group,#bootstrap-theme .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}#bootstrap-theme .btn-group-vertical>.btn-group:before,#bootstrap-theme .btn-group-vertical>.btn-group:after{display:table;content:" "}#bootstrap-theme .btn-group-vertical>.btn-group:after{clear:both}#bootstrap-theme .btn-group-vertical>.btn-group>.btn{float:none}#bootstrap-theme .btn-group-vertical>.btn+.btn,#bootstrap-theme .btn-group-vertical>.btn+.btn-group,#bootstrap-theme .btn-group-vertical>.btn-group+.btn,#bootstrap-theme .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}#bootstrap-theme .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}#bootstrap-theme .btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bootstrap-theme .btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,#bootstrap-theme .btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}#bootstrap-theme .btn-group-justified>.btn,#bootstrap-theme .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}#bootstrap-theme .btn-group-justified>.btn-group .btn{width:100%}#bootstrap-theme .btn-group-justified>.btn-group .dropdown-menu{left:auto}#bootstrap-theme [data-toggle=buttons]>.btn input[type=radio],#bootstrap-theme [data-toggle=buttons]>.btn input[type=checkbox],#bootstrap-theme [data-toggle=buttons]>.btn-group>.btn input[type=radio],#bootstrap-theme [data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}#bootstrap-theme .input-group{position:relative;display:table;border-collapse:separate}#bootstrap-theme .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}#bootstrap-theme .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}#bootstrap-theme .input-group .form-control:focus{z-index:3}#bootstrap-theme .input-group-addon,#bootstrap-theme .input-group-btn,#bootstrap-theme .input-group .form-control{display:table-cell}#bootstrap-theme .input-group-addon:not(:first-child):not(:last-child),#bootstrap-theme .input-group-btn:not(:first-child):not(:last-child),#bootstrap-theme .input-group .form-control:not(:first-child):not(:last-child){border-radius:0}#bootstrap-theme .input-group-addon,#bootstrap-theme .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}#bootstrap-theme .input-group-addon{padding:4px 8px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}#bootstrap-theme .input-group-addon.input-sm,#bootstrap-theme .input-group-sm>.input-group-addon.form-control,#bootstrap-theme .input-group-sm>.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}#bootstrap-theme .input-group-addon.input-lg,#bootstrap-theme .input-group-lg>.input-group-addon.form-control,#bootstrap-theme .input-group-lg>.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.input-group-addon.btn{padding:14px 16px;font-size:18px;border-radius:6px}#bootstrap-theme .input-group-addon input[type=radio],#bootstrap-theme .input-group-addon input[type=checkbox]{margin-top:0}#bootstrap-theme .input-group .form-control:first-child,#bootstrap-theme .input-group-addon:first-child,#bootstrap-theme .input-group-btn:first-child>.btn,#bootstrap-theme .input-group-btn:first-child>.btn-group>.btn,#bootstrap-theme .input-group-btn:first-child>.dropdown-toggle,#bootstrap-theme .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),#bootstrap-theme .input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .input-group-addon:first-child{border-right:0}#bootstrap-theme .input-group .form-control:last-child,#bootstrap-theme .input-group-addon:last-child,#bootstrap-theme .input-group-btn:last-child>.btn,#bootstrap-theme .input-group-btn:last-child>.btn-group>.btn,#bootstrap-theme .input-group-btn:last-child>.dropdown-toggle,#bootstrap-theme .input-group-btn:first-child>.btn:not(:first-child),#bootstrap-theme .input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .input-group-addon:last-child{border-left:0}#bootstrap-theme .input-group-btn{position:relative;font-size:0;white-space:nowrap}#bootstrap-theme .input-group-btn>.btn{position:relative}#bootstrap-theme .input-group-btn>.btn+.btn{margin-left:-1px}#bootstrap-theme .input-group-btn>.btn:hover,#bootstrap-theme .input-group-btn>.btn:focus,#bootstrap-theme .input-group-btn>.btn:active{z-index:2}#bootstrap-theme .input-group-btn:first-child>.btn,#bootstrap-theme .input-group-btn:first-child>.btn-group{margin-right:-1px}#bootstrap-theme .input-group-btn:last-child>.btn,#bootstrap-theme .input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}#bootstrap-theme .nav{padding-left:0;margin-bottom:0;list-style:none}#bootstrap-theme .nav:before,#bootstrap-theme .nav:after{display:table;content:" "}#bootstrap-theme .nav:after{clear:both}#bootstrap-theme .nav>li{position:relative;display:block}#bootstrap-theme .nav>li>a{position:relative;display:block;padding:10px 15px}#bootstrap-theme .nav>li>a:hover,#bootstrap-theme .nav>li>a:focus{text-decoration:none;background-color:#eee}#bootstrap-theme .nav>li.disabled>a{color:#999}#bootstrap-theme .nav>li.disabled>a:hover,#bootstrap-theme .nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}#bootstrap-theme .nav .open>a,#bootstrap-theme .nav .open>a:hover,#bootstrap-theme .nav .open>a:focus{background-color:#eee;border-color:#2786c2}#bootstrap-theme .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}#bootstrap-theme .nav>li>a>img{max-width:none}#bootstrap-theme .nav-tabs{border-bottom:1px solid #ddd}#bootstrap-theme .nav-tabs>li{float:left;margin-bottom:-1px}#bootstrap-theme .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}#bootstrap-theme .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}#bootstrap-theme .nav-tabs>li.active>a,#bootstrap-theme .nav-tabs>li.active>a:hover,#bootstrap-theme .nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}#bootstrap-theme .nav-pills>li{float:left}#bootstrap-theme .nav-pills>li>a{border-radius:4px}#bootstrap-theme .nav-pills>li+li{margin-left:2px}#bootstrap-theme .nav-pills>li.active>a,#bootstrap-theme .nav-pills>li.active>a:hover,#bootstrap-theme .nav-pills>li.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .nav-stacked>li{float:none}#bootstrap-theme .nav-stacked>li+li{margin-top:2px;margin-left:0}#bootstrap-theme .nav-justified,#bootstrap-theme .nav-tabs.nav-justified{width:100%}#bootstrap-theme .nav-justified>li,#bootstrap-theme .nav-tabs.nav-justified>li{float:none}#bootstrap-theme .nav-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}#bootstrap-theme .nav-justified>.dropdown .dropdown-menu,#bootstrap-theme .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){#bootstrap-theme .nav-justified>li,#bootstrap-theme .nav-tabs.nav-justified>li{display:table-cell;width:1%}#bootstrap-theme .nav-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-bottom:0}}#bootstrap-theme .nav-tabs-justified,#bootstrap-theme .nav-tabs.nav-justified{border-bottom:0}#bootstrap-theme .nav-tabs-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}#bootstrap-theme .nav-tabs-justified>.active>a,#bootstrap-theme .nav-tabs.nav-justified>.active>a,#bootstrap-theme .nav-tabs-justified>.active>a:hover,#bootstrap-theme .nav-tabs.nav-justified>.active>a:hover,#bootstrap-theme .nav-tabs-justified>.active>a:focus,#bootstrap-theme .nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){#bootstrap-theme .nav-tabs-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}#bootstrap-theme .nav-tabs-justified>.active>a,#bootstrap-theme .nav-tabs.nav-justified>.active>a,#bootstrap-theme .nav-tabs-justified>.active>a:hover,#bootstrap-theme .nav-tabs.nav-justified>.active>a:hover,#bootstrap-theme .nav-tabs-justified>.active>a:focus,#bootstrap-theme .nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}#bootstrap-theme .tab-content>.tab-pane{display:none}#bootstrap-theme .tab-content>.active{display:block}#bootstrap-theme .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}#bootstrap-theme .navbar:before,#bootstrap-theme .navbar:after{display:table;content:" "}#bootstrap-theme .navbar:after{clear:both}@media (min-width:768px){#bootstrap-theme .navbar{border-radius:4px}}#bootstrap-theme .navbar-header:before,#bootstrap-theme .navbar-header:after{display:table;content:" "}#bootstrap-theme .navbar-header:after{clear:both}@media (min-width:768px){#bootstrap-theme .navbar-header{float:left}}#bootstrap-theme .navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}#bootstrap-theme .navbar-collapse:before,#bootstrap-theme .navbar-collapse:after{display:table;content:" "}#bootstrap-theme .navbar-collapse:after{clear:both}#bootstrap-theme .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){#bootstrap-theme .navbar-collapse{width:auto;border-top:0;box-shadow:none}#bootstrap-theme .navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}#bootstrap-theme .navbar-collapse.in{overflow-y:visible}.navbar-fixed-top #bootstrap-theme .navbar-collapse,.navbar-static-top #bootstrap-theme .navbar-collapse,.navbar-fixed-bottom #bootstrap-theme .navbar-collapse{padding-right:0;padding-left:0}}#bootstrap-theme .navbar-fixed-top,#bootstrap-theme .navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}#bootstrap-theme .navbar-fixed-top .navbar-collapse,#bootstrap-theme .navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){#bootstrap-theme .navbar-fixed-top .navbar-collapse,#bootstrap-theme .navbar-fixed-bottom .navbar-collapse{max-height:200px}}@media (min-width:768px){#bootstrap-theme .navbar-fixed-top,#bootstrap-theme .navbar-fixed-bottom{border-radius:0}}#bootstrap-theme .navbar-fixed-top{top:0;border-width:0 0 1px}#bootstrap-theme .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}#bootstrap-theme .container>.navbar-header,#bootstrap-theme .container>.navbar-collapse,#bootstrap-theme .container-fluid>.navbar-header,#bootstrap-theme .container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){#bootstrap-theme .container>.navbar-header,#bootstrap-theme .container>.navbar-collapse,#bootstrap-theme .container-fluid>.navbar-header,#bootstrap-theme .container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}#bootstrap-theme .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){#bootstrap-theme .navbar-static-top{border-radius:0}}#bootstrap-theme .navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px}#bootstrap-theme .navbar-brand:hover,#bootstrap-theme .navbar-brand:focus{text-decoration:none}#bootstrap-theme .navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container #bootstrap-theme .navbar-brand,.navbar>.container-fluid #bootstrap-theme .navbar-brand{margin-left:-15px}}#bootstrap-theme .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}#bootstrap-theme .navbar-toggle:focus{outline:0}#bootstrap-theme .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}#bootstrap-theme .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){#bootstrap-theme .navbar-toggle{display:none}}#bootstrap-theme .navbar-nav{margin:7.5px -15px}#bootstrap-theme .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){#bootstrap-theme .navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a,#bootstrap-theme .navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a{line-height:20px}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){#bootstrap-theme .navbar-nav{float:left;margin:0}#bootstrap-theme .navbar-nav>li{float:left}#bootstrap-theme .navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}#bootstrap-theme .navbar-form{padding:10px 15px;margin-right:-15px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:10px;margin-bottom:10px}@media (min-width:768px){#bootstrap-theme .navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}#bootstrap-theme .navbar-form .form-control-static{display:inline-block}#bootstrap-theme .navbar-form .input-group{display:inline-table;vertical-align:middle}#bootstrap-theme .navbar-form .input-group .input-group-addon,#bootstrap-theme .navbar-form .input-group .input-group-btn,#bootstrap-theme .navbar-form .input-group .form-control{width:auto}#bootstrap-theme .navbar-form .input-group>.form-control{width:100%}#bootstrap-theme .navbar-form .control-label{margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .radio,#bootstrap-theme .navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .radio label,#bootstrap-theme .navbar-form .checkbox label{padding-left:0}#bootstrap-theme .navbar-form .radio input[type=radio],#bootstrap-theme .navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}#bootstrap-theme .navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){#bootstrap-theme .navbar-form .form-group{margin-bottom:5px}#bootstrap-theme .navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){#bootstrap-theme .navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}#bootstrap-theme .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .navbar-btn{margin-top:10px;margin-bottom:10px}#bootstrap-theme .navbar-btn.btn-sm,#bootstrap-theme .btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}#bootstrap-theme .navbar-btn.btn-xs,#bootstrap-theme .btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}#bootstrap-theme .navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){#bootstrap-theme .navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){#bootstrap-theme .navbar-left{float:left !important}#bootstrap-theme .navbar-right{float:right !important;margin-right:-15px}#bootstrap-theme .navbar-right~.navbar-right{margin-right:0}}#bootstrap-theme .navbar-default{background-color:#000;border-color:#000}#bootstrap-theme .navbar-default .navbar-brand{color:#fff}#bootstrap-theme .navbar-default .navbar-brand:hover,#bootstrap-theme .navbar-default .navbar-brand:focus{color:#fff;background-color:none}#bootstrap-theme .navbar-default .navbar-text{color:#ddd}#bootstrap-theme .navbar-default .navbar-nav>li>a{color:#fff}#bootstrap-theme .navbar-default .navbar-nav>li>a:hover,#bootstrap-theme .navbar-default .navbar-nav>li>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav>.active>a,#bootstrap-theme .navbar-default .navbar-nav>.active>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav>.disabled>a,#bootstrap-theme .navbar-default .navbar-nav>.disabled>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.disabled>a:focus{color:#ddd;background-color:transparent}#bootstrap-theme .navbar-default .navbar-nav>.open>a,#bootstrap-theme .navbar-default .navbar-nav>.open>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.open>a:focus{color:#fff;background-color:#000}@media (max-width:767px){#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#fff}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ddd;background-color:transparent}}#bootstrap-theme .navbar-default .navbar-toggle{border-color:#000}#bootstrap-theme .navbar-default .navbar-toggle:hover,#bootstrap-theme .navbar-default .navbar-toggle:focus{background-color:#000}#bootstrap-theme .navbar-default .navbar-toggle .icon-bar{background-color:#fff}#bootstrap-theme .navbar-default .navbar-collapse,#bootstrap-theme .navbar-default .navbar-form{border-color:#000}#bootstrap-theme .navbar-default .navbar-link{color:#fff}#bootstrap-theme .navbar-default .navbar-link:hover{color:#fff}#bootstrap-theme .navbar-default .btn-link{color:#fff}#bootstrap-theme .navbar-default .btn-link:hover,#bootstrap-theme .navbar-default .btn-link:focus{color:#fff}#bootstrap-theme .navbar-default .btn-link[disabled]:hover,#bootstrap-theme .navbar-default .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .navbar-default .btn-link:hover,fieldset[disabled] #bootstrap-theme .navbar-default .btn-link:focus{color:#ddd}#bootstrap-theme .navbar-inverse{background-color:#cde8fe;border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-brand{color:#fff}#bootstrap-theme .navbar-inverse .navbar-brand:hover,#bootstrap-theme .navbar-inverse .navbar-brand:focus{color:#fff;background-color:none}#bootstrap-theme .navbar-inverse .navbar-text{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav>li>a{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav>li>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav>.active>a,#bootstrap-theme .navbar-inverse .navbar-nav>.active>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a,#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}#bootstrap-theme .navbar-inverse .navbar-nav>.open>a,#bootstrap-theme .navbar-inverse .navbar-nav>.open>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#b4ddfe}@media (max-width:767px){#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}#bootstrap-theme .navbar-inverse .navbar-toggle{border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-toggle:hover,#bootstrap-theme .navbar-inverse .navbar-toggle:focus{background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}#bootstrap-theme .navbar-inverse .navbar-collapse,#bootstrap-theme .navbar-inverse .navbar-form{border-color:#aad8fd}#bootstrap-theme .navbar-inverse .navbar-link{color:#fff}#bootstrap-theme .navbar-inverse .navbar-link:hover{color:#fff}#bootstrap-theme .navbar-inverse .btn-link{color:#fff}#bootstrap-theme .navbar-inverse .btn-link:hover,#bootstrap-theme .navbar-inverse .btn-link:focus{color:#fff}#bootstrap-theme .navbar-inverse .btn-link[disabled]:hover,#bootstrap-theme .navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .navbar-inverse .btn-link:hover,fieldset[disabled] #bootstrap-theme .navbar-inverse .btn-link:focus{color:#ccc}#bootstrap-theme .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}#bootstrap-theme .breadcrumb>li{display:inline-block}#bootstrap-theme .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/ "}#bootstrap-theme .breadcrumb>.active{color:#999}#bootstrap-theme .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}#bootstrap-theme .pagination>li{display:inline}#bootstrap-theme .pagination>li>a,#bootstrap-theme .pagination>li>span{position:relative;float:left;padding:4px 8px;margin-left:-1px;line-height:1.428571429;color:#2786c2;text-decoration:none;background-color:#fff;border:1px solid #ddd}#bootstrap-theme .pagination>li>a:hover,#bootstrap-theme .pagination>li>a:focus,#bootstrap-theme .pagination>li>span:hover,#bootstrap-theme .pagination>li>span:focus{z-index:2;color:#1a5a82;background-color:#eee;border-color:#ddd}#bootstrap-theme .pagination>li:first-child>a,#bootstrap-theme .pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .pagination>li:last-child>a,#bootstrap-theme .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}#bootstrap-theme .pagination>.active>a,#bootstrap-theme .pagination>.active>a:hover,#bootstrap-theme .pagination>.active>a:focus,#bootstrap-theme .pagination>.active>span,#bootstrap-theme .pagination>.active>span:hover,#bootstrap-theme .pagination>.active>span:focus{z-index:3;color:#999;cursor:default;background-color:#f5f5f5;border-color:#ddd}#bootstrap-theme .pagination>.disabled>span,#bootstrap-theme .pagination>.disabled>span:hover,#bootstrap-theme .pagination>.disabled>span:focus,#bootstrap-theme .pagination>.disabled>a,#bootstrap-theme .pagination>.disabled>a:hover,#bootstrap-theme .pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}#bootstrap-theme .pagination-lg>li>a,#bootstrap-theme .pagination-lg>li>span{padding:14px 16px;font-size:18px;line-height:1.3333333}#bootstrap-theme .pagination-lg>li:first-child>a,#bootstrap-theme .pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}#bootstrap-theme .pagination-lg>li:last-child>a,#bootstrap-theme .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}#bootstrap-theme .pagination-sm>li>a,#bootstrap-theme .pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}#bootstrap-theme .pagination-sm>li:first-child>a,#bootstrap-theme .pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .pagination-sm>li:last-child>a,#bootstrap-theme .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}#bootstrap-theme .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}#bootstrap-theme .pager:before,#bootstrap-theme .pager:after{display:table;content:" "}#bootstrap-theme .pager:after{clear:both}#bootstrap-theme .pager li{display:inline}#bootstrap-theme .pager li>a,#bootstrap-theme .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}#bootstrap-theme .pager li>a:hover,#bootstrap-theme .pager li>a:focus{text-decoration:none;background-color:#eee}#bootstrap-theme .pager .next>a,#bootstrap-theme .pager .next>span{float:right}#bootstrap-theme .pager .previous>a,#bootstrap-theme .pager .previous>span{float:left}#bootstrap-theme .pager .disabled>a,#bootstrap-theme .pager .disabled>a:hover,#bootstrap-theme .pager .disabled>a:focus,#bootstrap-theme .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}#bootstrap-theme .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}#bootstrap-theme .label:empty{display:none}.btn #bootstrap-theme .label{position:relative;top:-1px}#bootstrap-theme a.label:hover,#bootstrap-theme a.label:focus{color:#fff;text-decoration:none;cursor:pointer}#bootstrap-theme .label-default{background-color:#999}#bootstrap-theme .label-default[href]:hover,#bootstrap-theme .label-default[href]:focus{background-color:gray}#bootstrap-theme .label-primary{background-color:#000}#bootstrap-theme .label-primary[href]:hover,#bootstrap-theme .label-primary[href]:focus{background-color:#000}#bootstrap-theme .label-success{background-color:#73a839}#bootstrap-theme .label-success[href]:hover,#bootstrap-theme .label-success[href]:focus{background-color:#59822c}#bootstrap-theme .label-info{background-color:#cde8fe}#bootstrap-theme .label-info[href]:hover,#bootstrap-theme .label-info[href]:focus{background-color:#9bd1fd}#bootstrap-theme .label-warning{background-color:#dd5600}#bootstrap-theme .label-warning[href]:hover,#bootstrap-theme .label-warning[href]:focus{background-color:#aa4200}#bootstrap-theme .label-danger{background-color:#c71c22}#bootstrap-theme .label-danger[href]:hover,#bootstrap-theme .label-danger[href]:focus{background-color:#9a161a}#bootstrap-theme .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#000;border-radius:10px}#bootstrap-theme .badge:empty{display:none}.btn #bootstrap-theme .badge{position:relative;top:-1px}.btn-xs #bootstrap-theme .badge,#bootstrap-theme .btn-group-xs>.btn #bootstrap-theme .badge,.btn-group-xs>.btn #bootstrap-theme .badge{top:0;padding:1px 5px}.list-group-item.active>#bootstrap-theme .badge,.nav-pills>.active>a>#bootstrap-theme .badge{color:#2786c2;background-color:#fff}.list-group-item>#bootstrap-theme .badge{float:right}.list-group-item>#bootstrap-theme .badge+#bootstrap-theme .badge{margin-right:5px}.nav-pills>li>a>#bootstrap-theme .badge{margin-left:3px}#bootstrap-theme a.badge:hover,#bootstrap-theme a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}#bootstrap-theme .jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}#bootstrap-theme .jumbotron h1,#bootstrap-theme .jumbotron .h1{color:inherit}#bootstrap-theme .jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}#bootstrap-theme .jumbotron>hr{border-top-color:#d5d5d5}.container #bootstrap-theme .jumbotron,.container-fluid #bootstrap-theme .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}#bootstrap-theme .jumbotron .container{max-width:100%}@media screen and (min-width:768px){#bootstrap-theme .jumbotron{padding-top:48px;padding-bottom:48px}.container #bootstrap-theme .jumbotron,.container-fluid #bootstrap-theme .jumbotron{padding-right:60px;padding-left:60px}#bootstrap-theme .jumbotron h1,#bootstrap-theme .jumbotron .h1{font-size:63px}}#bootstrap-theme .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}#bootstrap-theme .thumbnail>img,#bootstrap-theme .thumbnail a>img{display:block;max-width:100%;height:auto;margin-right:auto;margin-left:auto}#bootstrap-theme .thumbnail .caption{padding:9px;color:#555}#bootstrap-theme a.thumbnail:hover,#bootstrap-theme a.thumbnail:focus,#bootstrap-theme a.thumbnail.active{border-color:#2786c2}#bootstrap-theme .alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}#bootstrap-theme .alert h4{margin-top:0;color:inherit}#bootstrap-theme .alert .alert-link{font-weight:700}#bootstrap-theme .alert>p,#bootstrap-theme .alert>ul{margin-bottom:0}#bootstrap-theme .alert>p+p{margin-top:5px}#bootstrap-theme .alert-dismissable,#bootstrap-theme .alert-dismissible{padding-right:35px}#bootstrap-theme .alert-dismissable .close,#bootstrap-theme .alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}#bootstrap-theme .alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}#bootstrap-theme .alert-success hr{border-top-color:#c9e2b3}#bootstrap-theme .alert-success .alert-link{color:#356635}#bootstrap-theme .alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}#bootstrap-theme .alert-info hr{border-top-color:#a6e1ec}#bootstrap-theme .alert-info .alert-link{color:#2d6987}#bootstrap-theme .alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}#bootstrap-theme .alert-warning hr{border-top-color:#f8e5be}#bootstrap-theme .alert-warning .alert-link{color:#a47e3c}#bootstrap-theme .alert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}#bootstrap-theme .alert-danger hr{border-top-color:#e6c1c7}#bootstrap-theme .alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}#bootstrap-theme .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}#bootstrap-theme .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#000;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}#bootstrap-theme .progress-striped .progress-bar,#bootstrap-theme .progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}#bootstrap-theme .progress.active .progress-bar,#bootstrap-theme .progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}#bootstrap-theme .progress-bar-success{background-color:#73a839}.progress-striped #bootstrap-theme .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-info{background-color:#cde8fe}.progress-striped #bootstrap-theme .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-warning{background-color:#dd5600}.progress-striped #bootstrap-theme .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-danger{background-color:#c71c22}.progress-striped #bootstrap-theme .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .media{margin-top:15px}#bootstrap-theme .media:first-child{margin-top:0}#bootstrap-theme .media,#bootstrap-theme .media-body{overflow:hidden;zoom:1}#bootstrap-theme .media-body{width:10000px}#bootstrap-theme .media-object{display:block}#bootstrap-theme .media-object.img-thumbnail{max-width:none}#bootstrap-theme .media-right,#bootstrap-theme .media>.pull-right{padding-left:10px}#bootstrap-theme .media-left,#bootstrap-theme .media>.pull-left{padding-right:10px}#bootstrap-theme .media-left,#bootstrap-theme .media-right,#bootstrap-theme .media-body{display:table-cell;vertical-align:top}#bootstrap-theme .media-middle{vertical-align:middle}#bootstrap-theme .media-bottom{vertical-align:bottom}#bootstrap-theme .media-heading{margin-top:0;margin-bottom:5px}#bootstrap-theme .media-list{padding-left:0;list-style:none}#bootstrap-theme .list-group{padding-left:0;margin-bottom:20px}#bootstrap-theme .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}#bootstrap-theme .list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}#bootstrap-theme .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .list-group-item.disabled,#bootstrap-theme .list-group-item.disabled:hover,#bootstrap-theme .list-group-item.disabled:focus{color:#999;cursor:not-allowed;background-color:#eee}#bootstrap-theme .list-group-item.disabled .list-group-item-heading,#bootstrap-theme .list-group-item.disabled:hover .list-group-item-heading,#bootstrap-theme .list-group-item.disabled:focus .list-group-item-heading{color:inherit}#bootstrap-theme .list-group-item.disabled .list-group-item-text,#bootstrap-theme .list-group-item.disabled:hover .list-group-item-text,#bootstrap-theme .list-group-item.disabled:focus .list-group-item-text{color:#999}#bootstrap-theme .list-group-item.active,#bootstrap-theme .list-group-item.active:hover,#bootstrap-theme .list-group-item.active:focus{z-index:2;color:#fff;background-color:#000;border-color:#000}#bootstrap-theme .list-group-item.active .list-group-item-heading,#bootstrap-theme .list-group-item.active .list-group-item-heading>small,#bootstrap-theme .list-group-item.active .list-group-item-heading>.small,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading>small,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading>.small,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading>small,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading>.small{color:inherit}#bootstrap-theme .list-group-item.active .list-group-item-text,#bootstrap-theme .list-group-item.active:hover .list-group-item-text,#bootstrap-theme .list-group-item.active:focus .list-group-item-text{color:#666}#bootstrap-theme a.list-group-item,#bootstrap-theme button.list-group-item{color:#555}#bootstrap-theme a.list-group-item .list-group-item-heading,#bootstrap-theme button.list-group-item .list-group-item-heading{color:#333}#bootstrap-theme a.list-group-item:hover,#bootstrap-theme a.list-group-item:focus,#bootstrap-theme button.list-group-item:hover,#bootstrap-theme button.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}#bootstrap-theme button.list-group-item{width:100%;text-align:left}#bootstrap-theme .list-group-item-success{color:#468847;background-color:#dff0d8}#bootstrap-theme a.list-group-item-success,#bootstrap-theme button.list-group-item-success{color:#468847}#bootstrap-theme a.list-group-item-success .list-group-item-heading,#bootstrap-theme button.list-group-item-success .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-success:hover,#bootstrap-theme a.list-group-item-success:focus,#bootstrap-theme button.list-group-item-success:hover,#bootstrap-theme button.list-group-item-success:focus{color:#468847;background-color:#d0e9c6}#bootstrap-theme a.list-group-item-success.active,#bootstrap-theme a.list-group-item-success.active:hover,#bootstrap-theme a.list-group-item-success.active:focus,#bootstrap-theme button.list-group-item-success.active,#bootstrap-theme button.list-group-item-success.active:hover,#bootstrap-theme button.list-group-item-success.active:focus{color:#fff;background-color:#468847;border-color:#468847}#bootstrap-theme .list-group-item-info{color:#3a87ad;background-color:#d9edf7}#bootstrap-theme a.list-group-item-info,#bootstrap-theme button.list-group-item-info{color:#3a87ad}#bootstrap-theme a.list-group-item-info .list-group-item-heading,#bootstrap-theme button.list-group-item-info .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-info:hover,#bootstrap-theme a.list-group-item-info:focus,#bootstrap-theme button.list-group-item-info:hover,#bootstrap-theme button.list-group-item-info:focus{color:#3a87ad;background-color:#c4e3f3}#bootstrap-theme a.list-group-item-info.active,#bootstrap-theme a.list-group-item-info.active:hover,#bootstrap-theme a.list-group-item-info.active:focus,#bootstrap-theme button.list-group-item-info.active,#bootstrap-theme button.list-group-item-info.active:hover,#bootstrap-theme button.list-group-item-info.active:focus{color:#fff;background-color:#3a87ad;border-color:#3a87ad}#bootstrap-theme .list-group-item-warning{color:#c09853;background-color:#fcf8e3}#bootstrap-theme a.list-group-item-warning,#bootstrap-theme button.list-group-item-warning{color:#c09853}#bootstrap-theme a.list-group-item-warning .list-group-item-heading,#bootstrap-theme button.list-group-item-warning .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-warning:hover,#bootstrap-theme a.list-group-item-warning:focus,#bootstrap-theme button.list-group-item-warning:hover,#bootstrap-theme button.list-group-item-warning:focus{color:#c09853;background-color:#faf2cc}#bootstrap-theme a.list-group-item-warning.active,#bootstrap-theme a.list-group-item-warning.active:hover,#bootstrap-theme a.list-group-item-warning.active:focus,#bootstrap-theme button.list-group-item-warning.active,#bootstrap-theme button.list-group-item-warning.active:hover,#bootstrap-theme button.list-group-item-warning.active:focus{color:#fff;background-color:#c09853;border-color:#c09853}#bootstrap-theme .list-group-item-danger{color:#b94a48;background-color:#f2dede}#bootstrap-theme a.list-group-item-danger,#bootstrap-theme button.list-group-item-danger{color:#b94a48}#bootstrap-theme a.list-group-item-danger .list-group-item-heading,#bootstrap-theme button.list-group-item-danger .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-danger:hover,#bootstrap-theme a.list-group-item-danger:focus,#bootstrap-theme button.list-group-item-danger:hover,#bootstrap-theme button.list-group-item-danger:focus{color:#b94a48;background-color:#ebcccc}#bootstrap-theme a.list-group-item-danger.active,#bootstrap-theme a.list-group-item-danger.active:hover,#bootstrap-theme a.list-group-item-danger.active:focus,#bootstrap-theme button.list-group-item-danger.active,#bootstrap-theme button.list-group-item-danger.active:hover,#bootstrap-theme button.list-group-item-danger.active:focus{color:#fff;background-color:#b94a48;border-color:#b94a48}#bootstrap-theme .list-group-item-heading{margin-top:0;margin-bottom:5px}#bootstrap-theme .list-group-item-text{margin-bottom:0;line-height:1.3}#bootstrap-theme .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}#bootstrap-theme .panel-body{padding:15px}#bootstrap-theme .panel-body:before,#bootstrap-theme .panel-body:after{display:table;content:" "}#bootstrap-theme .panel-body:after{clear:both}#bootstrap-theme .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel-heading>.dropdown .dropdown-toggle{color:inherit}#bootstrap-theme .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}#bootstrap-theme .panel-title>a,#bootstrap-theme .panel-title>small,#bootstrap-theme .panel-title>.small,#bootstrap-theme .panel-title>small>a,#bootstrap-theme .panel-title>.small>a{color:inherit}#bootstrap-theme .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.list-group,#bootstrap-theme .panel>.panel-collapse>.list-group{margin-bottom:0}#bootstrap-theme .panel>.list-group .list-group-item,#bootstrap-theme .panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}#bootstrap-theme .panel>.list-group:first-child .list-group-item:first-child,#bootstrap-theme .panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.list-group:last-child .list-group-item:last-child,#bootstrap-theme .panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}#bootstrap-theme .list-group+.panel-footer{border-top-width:0}#bootstrap-theme .panel>.table,#bootstrap-theme .panel>.table-responsive>.table,#bootstrap-theme .panel>.panel-collapse>.table{margin-bottom:0}#bootstrap-theme .panel>.table caption,#bootstrap-theme .panel>.table-responsive>.table caption,#bootstrap-theme .panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}#bootstrap-theme .panel>.table:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}#bootstrap-theme .panel>.table:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}#bootstrap-theme .panel>.panel-body+.table,#bootstrap-theme .panel>.panel-body+.table-responsive,#bootstrap-theme .panel>.table+.panel-body,#bootstrap-theme .panel>.table-responsive+.panel-body{border-top:1px solid #ddd}#bootstrap-theme .panel>.table>tbody:first-child>tr:first-child th,#bootstrap-theme .panel>.table>tbody:first-child>tr:first-child td{border-top:0}#bootstrap-theme .panel>.table-bordered,#bootstrap-theme .panel>.table-responsive>.table-bordered{border:0}#bootstrap-theme .panel>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}#bootstrap-theme .panel>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}#bootstrap-theme .panel>.table-bordered>thead>tr:first-child>td,#bootstrap-theme .panel>.table-bordered>thead>tr:first-child>th,#bootstrap-theme .panel>.table-bordered>tbody>tr:first-child>td,#bootstrap-theme .panel>.table-bordered>tbody>tr:first-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr:first-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr:first-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}#bootstrap-theme .panel>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .panel>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .panel>.table-bordered>tfoot>tr:last-child>td,#bootstrap-theme .panel>.table-bordered>tfoot>tr:last-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}#bootstrap-theme .panel>.table-responsive{margin-bottom:0;border:0}#bootstrap-theme .panel-group{margin-bottom:20px}#bootstrap-theme .panel-group .panel{margin-bottom:0;border-radius:4px}#bootstrap-theme .panel-group .panel+.panel{margin-top:5px}#bootstrap-theme .panel-group .panel-heading{border-bottom:0}#bootstrap-theme .panel-group .panel-heading+.panel-collapse>.panel-body,#bootstrap-theme .panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}#bootstrap-theme .panel-group .panel-footer{border-top:0}#bootstrap-theme .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}#bootstrap-theme .panel-default{border-color:#ddd}#bootstrap-theme .panel-default>.panel-heading{color:#555;background-color:#f5f5f5;border-color:#ddd}#bootstrap-theme .panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#555}#bootstrap-theme .panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-primary{border-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading{color:#fff;background-color:#000;border-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading .badge{color:#000;background-color:#fff}#bootstrap-theme .panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-success{border-color:#ddd}#bootstrap-theme .panel-success>.panel-heading{color:#468847;background-color:#73a839;border-color:#ddd}#bootstrap-theme .panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-success>.panel-heading .badge{color:#73a839;background-color:#468847}#bootstrap-theme .panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-info{border-color:#ddd}#bootstrap-theme .panel-info>.panel-heading{color:#3a87ad;background-color:#cde8fe;border-color:#ddd}#bootstrap-theme .panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-info>.panel-heading .badge{color:#cde8fe;background-color:#3a87ad}#bootstrap-theme .panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-warning{border-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading{color:#c09853;background-color:#dd5600;border-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading .badge{color:#dd5600;background-color:#c09853}#bootstrap-theme .panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-danger{border-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading{color:#b94a48;background-color:#c71c22;border-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading .badge{color:#c71c22;background-color:#b94a48}#bootstrap-theme .panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}#bootstrap-theme .embed-responsive .embed-responsive-item,#bootstrap-theme .embed-responsive iframe,#bootstrap-theme .embed-responsive embed,#bootstrap-theme .embed-responsive object,#bootstrap-theme .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}#bootstrap-theme .embed-responsive-16by9{padding-bottom:56.25%}#bootstrap-theme .embed-responsive-4by3{padding-bottom:75%}#bootstrap-theme .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}#bootstrap-theme .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}#bootstrap-theme .well-lg{padding:24px;border-radius:6px}#bootstrap-theme .well-sm{padding:9px;border-radius:3px}#bootstrap-theme .close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;-webkit-filter:alpha(opacity=20);filter:alpha(opacity=20);opacity:.2}#bootstrap-theme .close:hover,#bootstrap-theme .close:focus{color:#000;text-decoration:none;cursor:pointer;-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}#bootstrap-theme .modal-open{overflow:hidden}#bootstrap-theme .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}#bootstrap-theme .modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-ms-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out}#bootstrap-theme .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}#bootstrap-theme .modal-open .modal{overflow-x:hidden;overflow-y:auto}#bootstrap-theme .modal-dialog{position:relative;width:auto;margin:10px}#bootstrap-theme .modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}#bootstrap-theme .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}#bootstrap-theme .modal-backdrop.fade{-webkit-filter:alpha(opacity=0);filter:alpha(opacity=0);opacity:0}#bootstrap-theme .modal-backdrop.in{-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme .modal-header{padding:15px;border-bottom:1px solid #e5e5e5}#bootstrap-theme .modal-header:before,#bootstrap-theme .modal-header:after{display:table;content:" "}#bootstrap-theme .modal-header:after{clear:both}#bootstrap-theme .modal-header .close{margin-top:-2px}#bootstrap-theme .modal-title{margin:0;line-height:1.428571429}#bootstrap-theme .modal-body{position:relative;padding:20px}#bootstrap-theme .modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}#bootstrap-theme .modal-footer:before,#bootstrap-theme .modal-footer:after{display:table;content:" "}#bootstrap-theme .modal-footer:after{clear:both}#bootstrap-theme .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}#bootstrap-theme .modal-footer .btn-group .btn+.btn{margin-left:-1px}#bootstrap-theme .modal-footer .btn-block+.btn-block{margin-left:0}#bootstrap-theme .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){#bootstrap-theme .modal-dialog{width:600px;margin:30px auto}#bootstrap-theme .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}#bootstrap-theme .modal-sm{width:300px}}@media (min-width:992px){#bootstrap-theme .modal-lg{width:900px}}#bootstrap-theme .tooltip{position:absolute;z-index:1070;display:block;font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.428571429;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;-ms-word-break:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;-webkit-filter:alpha(opacity=0);filter:alpha(opacity=0);opacity:0}#bootstrap-theme .tooltip.in{-webkit-filter:alpha(opacity=90);filter:alpha(opacity=90);opacity:.9}#bootstrap-theme .tooltip.top{padding:5px 0;margin-top:-3px}#bootstrap-theme .tooltip.right{padding:0 5px;margin-left:3px}#bootstrap-theme .tooltip.bottom{padding:5px 0;margin-top:3px}#bootstrap-theme .tooltip.left{padding:0 5px;margin-left:-3px}#bootstrap-theme .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}#bootstrap-theme .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}#bootstrap-theme .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}#bootstrap-theme .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}#bootstrap-theme .popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.428571429;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;-ms-word-break:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:14px;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}#bootstrap-theme .popover.top{margin-top:-10px}#bootstrap-theme .popover.right{margin-left:10px}#bootstrap-theme .popover.bottom{margin-top:10px}#bootstrap-theme .popover.left{margin-left:-10px}#bootstrap-theme .popover>.arrow{border-width:11px}#bootstrap-theme .popover>.arrow,#bootstrap-theme .popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}#bootstrap-theme .popover>.arrow:after{content:"";border-width:10px}#bootstrap-theme .popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}#bootstrap-theme .popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}#bootstrap-theme .popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}#bootstrap-theme .popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}#bootstrap-theme .popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}#bootstrap-theme .popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}#bootstrap-theme .popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}#bootstrap-theme .popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}#bootstrap-theme .popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}#bootstrap-theme .popover-content{padding:9px 14px}#bootstrap-theme .carousel{position:relative}#bootstrap-theme .carousel-inner{position:relative;width:100%;overflow:hidden}#bootstrap-theme .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}#bootstrap-theme .carousel-inner>.item>img,#bootstrap-theme .carousel-inner>.item>a>img{display:block;max-width:100%;height:auto;line-height:1}@media (transform-3d),(-webkit-transform-3d){#bootstrap-theme .carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:-ms-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px}#bootstrap-theme .carousel-inner>.item.next,#bootstrap-theme .carousel-inner>.item.active.right{-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}#bootstrap-theme .carousel-inner>.item.prev,#bootstrap-theme .carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}#bootstrap-theme .carousel-inner>.item.next.left,#bootstrap-theme .carousel-inner>.item.prev.right,#bootstrap-theme .carousel-inner>.item.active{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}#bootstrap-theme .carousel-inner>.active,#bootstrap-theme .carousel-inner>.next,#bootstrap-theme .carousel-inner>.prev{display:block}#bootstrap-theme .carousel-inner>.active{left:0}#bootstrap-theme .carousel-inner>.next,#bootstrap-theme .carousel-inner>.prev{position:absolute;top:0;width:100%}#bootstrap-theme .carousel-inner>.next{left:100%}#bootstrap-theme .carousel-inner>.prev{left:-100%}#bootstrap-theme .carousel-inner>.next.left,#bootstrap-theme .carousel-inner>.prev.right{left:0}#bootstrap-theme .carousel-inner>.active.left{left:-100%}#bootstrap-theme .carousel-inner>.active.right{left:100%}#bootstrap-theme .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme .carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);-webkit-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#80000000",endColorstr="#00000000",GradientType=1);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#80000000",endColorstr="#00000000",GradientType=1);background-repeat:repeat-x}#bootstrap-theme .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);-webkit-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000",endColorstr="#80000000",GradientType=1);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000",endColorstr="#80000000",GradientType=1);background-repeat:repeat-x}#bootstrap-theme .carousel-control:hover,#bootstrap-theme .carousel-control:focus{color:#fff;text-decoration:none;outline:0;-webkit-filter:alpha(opacity=90);filter:alpha(opacity=90);opacity:.9}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next,#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}#bootstrap-theme .carousel-control .icon-next,#bootstrap-theme .carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next{width:20px;height:20px;font-family:serif;line-height:1}#bootstrap-theme .carousel-control .icon-prev:before{content:"‹"}#bootstrap-theme .carousel-control .icon-next:before{content:"›"}#bootstrap-theme .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}#bootstrap-theme .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}#bootstrap-theme .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}#bootstrap-theme .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}#bootstrap-theme .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .glyphicon-chevron-right,#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .icon-prev{margin-left:-10px}#bootstrap-theme .carousel-control .glyphicon-chevron-right,#bootstrap-theme .carousel-control .icon-next{margin-right:-10px}#bootstrap-theme .carousel-caption{right:20%;left:20%;padding-bottom:30px}#bootstrap-theme .carousel-indicators{bottom:20px}}#bootstrap-theme .clearfix:before,#bootstrap-theme .clearfix:after{display:table;content:" "}#bootstrap-theme .clearfix:after{clear:both}#bootstrap-theme .center-block{display:block;margin-right:auto;margin-left:auto}#bootstrap-theme .pull-right{float:right !important}#bootstrap-theme .pull-left{float:left !important}#bootstrap-theme .hide{display:none !important}#bootstrap-theme .show{display:block !important}#bootstrap-theme .invisible{visibility:hidden}#bootstrap-theme .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}#bootstrap-theme .hidden{display:none !important}#bootstrap-theme .affix{position:fixed}@-ms-viewport{width:device-width}#bootstrap-theme .visible-sm{display:none !important}#bootstrap-theme .visible-md{display:none !important}#bootstrap-theme .visible-lg{display:none !important}#bootstrap-theme .visible-xs-block,#bootstrap-theme .visible-xs-inline,#bootstrap-theme .visible-xs-inline-block,#bootstrap-theme .visible-sm-block,#bootstrap-theme .visible-sm-inline,#bootstrap-theme .visible-sm-inline-block,#bootstrap-theme .visible-md-block,#bootstrap-theme .visible-md-inline,#bootstrap-theme .visible-md-inline-block,#bootstrap-theme .visible-lg-block,#bootstrap-theme .visible-lg-inline,#bootstrap-theme .visible-lg-inline-block{display:none !important}@media (max-width:767px){#bootstrap-theme .visible-xs{display:block !important}#bootstrap-theme table.visible-xs{display:table !important}#bootstrap-theme tr.visible-xs{display:table-row !important}#bootstrap-theme th.visible-xs,#bootstrap-theme td.visible-xs{display:table-cell !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-block{display:block !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-inline{display:inline !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm{display:block !important}#bootstrap-theme table.visible-sm{display:table !important}#bootstrap-theme tr.visible-sm{display:table-row !important}#bootstrap-theme th.visible-sm,#bootstrap-theme td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md{display:block !important}#bootstrap-theme table.visible-md{display:table !important}#bootstrap-theme tr.visible-md{display:table-row !important}#bootstrap-theme th.visible-md,#bootstrap-theme td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg{display:block !important}#bootstrap-theme table.visible-lg{display:table !important}#bootstrap-theme tr.visible-lg{display:table-row !important}#bootstrap-theme th.visible-lg,#bootstrap-theme td.visible-lg{display:table-cell !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-block{display:block !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-inline{display:inline !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){#bootstrap-theme .hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .hidden-md{display:none !important}}@media (min-width:1200px){#bootstrap-theme .hidden-lg{display:none !important}}#bootstrap-theme .visible-print{display:none !important}@media print{#bootstrap-theme .visible-print{display:block !important}#bootstrap-theme table.visible-print{display:table !important}#bootstrap-theme tr.visible-print{display:table-row !important}#bootstrap-theme th.visible-print,#bootstrap-theme td.visible-print{display:table-cell !important}}#bootstrap-theme .visible-print-block{display:none !important}@media print{#bootstrap-theme .visible-print-block{display:block !important}}#bootstrap-theme .visible-print-inline{display:none !important}@media print{#bootstrap-theme .visible-print-inline{display:inline !important}}#bootstrap-theme .visible-print-inline-block{display:none !important}@media print{#bootstrap-theme .visible-print-inline-block{display:inline-block !important}}@media print{#bootstrap-theme .hidden-print{display:none !important}}#bootstrap-theme ul,#bootstrap-theme ol{margin-left:0;margin-right:0}#bootstrap-theme .form-control.checkbox-inline>label{margin-left:9px}#bootstrap-theme label input[type=checkbox]:not(:checked)+*{font-weight:400}#bootstrap-theme .select2-choices{margin-bottom:0}#bootstrap-theme input[type=search]::-webkit-search-cancel-button{-webkit-appearance:searchfield-cancel-button}#bootstrap-theme .select2-container .select2-choice>.select2-chosen{font-size:inherit;font-weight:400}#bootstrap-theme summary{display:list-item}#bootstrap-theme .form-control .select2-choice{border:0;border-radius:2px}#bootstrap-theme .form-control .select2-choice .select2-arrow{border-radius:0 2px 2px 0}#bootstrap-theme .form-control.select2-container{height:auto !important;padding:0}#bootstrap-theme .form-control.select2-container.select2-dropdown-open{border-color:#5897fb;border-radius:3px 3px 0 0}#bootstrap-theme .form-control .select2-container.select2-dropdown-open .select2-choices{border-radius:3px 3px 0 0}#bootstrap-theme .form-control.select2-container .select2-choices{border:0 !important;border-radius:3px}#bootstrap-theme .control-group.warning .select2-container .select2-choice,#bootstrap-theme .control-group.warning .select2-container .select2-choices,#bootstrap-theme .control-group.warning .select2-container-active .select2-choice,#bootstrap-theme .control-group.warning .select2-container-active .select2-choices,#bootstrap-theme .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.warning .select2-container-multi.select2-container-active .select2-choices{border:1px solid #c09853 !important}#bootstrap-theme .control-group.warning .select2-container .select2-choice div{border-left:1px solid #c09853 !important;background:#fcf8e3 !important}#bootstrap-theme .control-group.error .select2-container .select2-choice,#bootstrap-theme .control-group.error .select2-container .select2-choices,#bootstrap-theme .control-group.error .select2-container-active .select2-choice,#bootstrap-theme .control-group.error .select2-container-active .select2-choices,#bootstrap-theme .control-group.error .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.error .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.error .select2-container-multi.select2-container-active .select2-choices{border:1px solid #b94a48 !important}#bootstrap-theme .control-group.error .select2-container .select2-choice div{border-left:1px solid #b94a48 !important;background:#f2dede !important}#bootstrap-theme .control-group.info .select2-container .select2-choice,#bootstrap-theme .control-group.info .select2-container .select2-choices,#bootstrap-theme .control-group.info .select2-container-active .select2-choice,#bootstrap-theme .control-group.info .select2-container-active .select2-choices,#bootstrap-theme .control-group.info .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.info .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.info .select2-container-multi.select2-container-active .select2-choices{border:1px solid #3a87ad !important}#bootstrap-theme .control-group.info .select2-container .select2-choice div{border-left:1px solid #3a87ad !important;background:#d9edf7 !important}#bootstrap-theme .control-group.success .select2-container .select2-choice,#bootstrap-theme .control-group.success .select2-container .select2-choices,#bootstrap-theme .control-group.success .select2-container-active .select2-choice,#bootstrap-theme .control-group.success .select2-container-active .select2-choices,#bootstrap-theme .control-group.success .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.success .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.success .select2-container-multi.select2-container-active .select2-choices{border:1px solid #468847 !important}#bootstrap-theme .control-group.success .select2-container .select2-choice div{border-left:1px solid #468847 !important;background:#dff0d8 !important}
\ No newline at end of file
diff --git a/civicrm/ext/greenwich/info.xml b/civicrm/ext/greenwich/info.xml
index 3dbd78797a936596e37266cfce7e589d3b6c2e8d..95c8b08874e6e8ada070345f73bd30ed4c8ebf73 100644
--- a/civicrm/ext/greenwich/info.xml
+++ b/civicrm/ext/greenwich/info.xml
@@ -14,14 +14,14 @@
     <url desc="Support">http://civicrm.org</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <classloader>
     <psr0 prefix="CRM_" path="."/>
diff --git a/civicrm/ext/greenwich/scss/_tweaks.scss b/civicrm/ext/greenwich/scss/_tweaks.scss
index 9ff7350a798943f577104123c99c24ec17425d1d..e472c7e5e416723b7aa1ad194624756a6a0f11a3 100644
--- a/civicrm/ext/greenwich/scss/_tweaks.scss
+++ b/civicrm/ext/greenwich/scss/_tweaks.scss
@@ -25,3 +25,7 @@ input[type="search"]::-webkit-search-cancel-button {
   font-size: inherit;
   font-weight: normal;
 }
+/* Bootstrap3 styles these as block which is non-compliant with html standards */
+summary {
+  display: list-item;
+}
diff --git a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/ActivitySearch.php b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/ActivitySearch.php
index 79ed1049520f5b294af9b5f0404c6e0507564cc4..159577b173fee18c8c4758e76cc0887d2270567d 100644
--- a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/ActivitySearch.php
+++ b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/ActivitySearch.php
@@ -96,7 +96,7 @@ class CRM_Contact_Form_Search_Custom_ActivitySearch extends CRM_Contact_Form_Sea
     );
 
     // Select box for Activity Type
-    $activityType = ['' => ts(' - select activity - ')] + CRM_Core_PseudoConstant::activityType();
+    $activityType = ['' => ts(' - select activity - ')] + CRM_Activity_BAO_Activity::buildOptions('activity_type_id', 'search');
 
     $form->add('select', 'activity_type_id', ts('Activity Type'),
       $activityType,
@@ -104,7 +104,7 @@ class CRM_Contact_Form_Search_Custom_ActivitySearch extends CRM_Contact_Form_Sea
     );
 
     // textbox for Activity Status
-    $activityStatus = ['' => ts(' - select status - ')] + CRM_Core_PseudoConstant::activityStatus();
+    $activityStatus = ['' => ts(' - select status - ')] + CRM_Activity_BAO_Activity::buildOptions('status_id', 'search');
 
     $form->add('select', 'activity_status_id', ts('Activity Status'),
       $activityStatus,
diff --git a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/FullText.php b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/FullText.php
index ae6eeec70cf2be1f72e3fcc8414144f7685ab871..d19435aaa6bd276bdee4243d55fb93642838d885 100644
--- a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/FullText.php
+++ b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/FullText.php
@@ -112,8 +112,8 @@ class CRM_Contact_Form_Search_Custom_FullText extends CRM_Contact_Form_Search_Cu
       // 1. this custom search has slightly different structure ,
       // 2. we are in constructor right now,
       // we 'll use a small hack -
-      $rowCount = CRM_Utils_Array::value('crmRowCount', $_REQUEST, Civi::settings()->get('default_pager_size'));
-      $pageId = CRM_Utils_Array::value('crmPID', $_REQUEST, 1);
+      $rowCount = $_REQUEST['crmRowCount'] ?? Civi::settings()->get('default_pager_size');
+      $pageId = $_REQUEST['crmPID'] ?? 1;
       $offset = ($pageId - 1) * $rowCount;
       $this->_limitClause = NULL;
       $this->_limitRowClause = [$rowCount, NULL];
@@ -137,7 +137,7 @@ class CRM_Contact_Form_Search_Custom_FullText extends CRM_Contact_Form_Search_Cu
   public function getFieldValue(array $formValues, string $field, $type, $default = NULL) {
     $value = $formValues[$field] ?? NULL;
     if (!$value) {
-      return CRM_Utils_Request::retrieve($field, $type, CRM_Core_DAO::$_nullObject, FALSE, $default);
+      return CRM_Utils_Request::retrieve($field, $type, NULL, FALSE, $default);
     }
     return $value;
   }
@@ -377,8 +377,6 @@ WHERE      t.table_name = 'Activity' AND
     }
     $dao = CRM_Core_DAO::executeQuery($sql);
 
-    $activityTypes = CRM_Core_PseudoConstant::activityType(TRUE, TRUE);
-    $roleIds = CRM_Event_PseudoConstant::participantRole();
     while ($dao->fetch()) {
       $row = [];
       foreach ($this->_tableFields as $name => $dontCare) {
@@ -386,14 +384,14 @@ WHERE      t.table_name = 'Activity' AND
           $row[$name] = $dao->$name;
         }
         else {
-          $row['activity_type'] = $activityTypes[$dao->$name] ?? NULL;
+          $row['activity_type'] = CRM_Core_PseudoConstant::getLabel('CRM_Activity_BAO_Activity', 'activity_type_id', $dao->$name);
         }
       }
       if (isset($row['participant_role'])) {
         $participantRole = explode(CRM_Core_DAO::VALUE_SEPARATOR, $row['participant_role']);
         $viewRoles = [];
         foreach ($participantRole as $v) {
-          $viewRoles[] = $roleIds[$v];
+          $viewRoles[] = CRM_Core_PseudoConstant::getLabel('CRM_Event_BAO_Participant', 'role_id', $v);
         }
         $row['participant_role'] = implode(', ', $viewRoles);
       }
diff --git a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/PriceSet.php b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/PriceSet.php
index e23b4d5cf7d5e094cd0d6ad65bc9427462cc53c8..589efdc3b9a7ed3d24703a5fb163af3cee192c39 100644
--- a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/PriceSet.php
+++ b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/PriceSet.php
@@ -63,11 +63,7 @@ class CRM_Contact_Form_Search_Custom_PriceSet extends CRM_Contact_Form_Search_Cu
 ';
 
     foreach ($this->_columns as $fieldName) {
-      if (in_array($fieldName, [
-        'contact_id',
-        'participant_id',
-        'display_name',
-      ])) {
+      if (in_array($fieldName, ['contact_id', 'participant_id', 'display_name'])) {
         continue;
       }
       $sql .= "{$fieldName} int default 0,\n";
@@ -259,10 +255,7 @@ contact_a.id             as contact_id  ,
 contact_a.display_name   as display_name";
 
       foreach ($this->_columns as $dontCare => $fieldName) {
-        if (in_array($fieldName, [
-          'contact_id',
-          'display_name',
-        ])) {
+        if (in_array($fieldName, ['contact_id', 'display_name'])) {
           continue;
         }
         $selectClause .= ",\ntempTable.{$fieldName} as {$fieldName}";
diff --git a/civicrm/ext/legacycustomsearches/info.xml b/civicrm/ext/legacycustomsearches/info.xml
index 63d16483e901c15a9ea3fa2697a16f606b3d4fe5..80bcc9121f940f94858e69bdbcaf7be5007210d6 100644
--- a/civicrm/ext/legacycustomsearches/info.xml
+++ b/civicrm/ext/legacycustomsearches/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">http://FIXME</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>This is our old search system which has limited support. All new effort is on SearchKit</comments>
   <classloader>
diff --git a/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/GroupTest.php b/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/GroupTest.php
index 7bff6783516141fe0fb159ce2fd707449c644e17..ed40a2dfe8ead94f3e56a89265197e768e65ec27 100644
--- a/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/GroupTest.php
+++ b/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/GroupTest.php
@@ -300,7 +300,7 @@ class GroupTest extends TestCase implements HeadlessInterface, HookInterface, Tr
         $full[] = [
           'contact_id' => $this->ids['Contact'][$id],
           'contact_type' => 'Individual',
-          'sort_name' => 'Contact ' . $id . ', Test',
+          'sort_name' => 'Contact ' . $id . ', Test II',
         ];
       }
     }
diff --git a/civicrm/ext/message_admin/info.xml b/civicrm/ext/message_admin/info.xml
index d1339661163f5cce4a58782475522408ae0d4957..13dd89608e619e2d231666ff228dc5f2904632e2 100644
--- a/civicrm/ext/message_admin/info.xml
+++ b/civicrm/ext/message_admin/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">http://civicrm.org</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>alpha</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <requires>
     <ext>org.civicrm.afform</ext>
diff --git a/civicrm/ext/oauth-client/info.xml b/civicrm/ext/oauth-client/info.xml
index 84ca39e0c5ae21765d4eb23cdc1ef0d5b57560f7..88d6a7eec4c70b535eca360a8dfcdd20b60dbd81 100644
--- a/civicrm/ext/oauth-client/info.xml
+++ b/civicrm/ext/oauth-client/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">https://lab.civicrm.org/dev/core/-/issues</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <requires>
     <ext version="~4.5">org.civicrm.afform</ext>
diff --git a/civicrm/ext/payflowpro/info.xml b/civicrm/ext/payflowpro/info.xml
index a90d69bb18ab2c268e177cb9318c7366083f274c..bc2e345fbc366c17ce770ab0d4e6cda556726fa6 100644
--- a/civicrm/ext/payflowpro/info.xml
+++ b/civicrm/ext/payflowpro/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">https://lab.civicrm.org</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>This extension is extraction of the original Core Payflow Pro Payment Processor</comments>
   <classloader>
diff --git a/civicrm/ext/recaptcha/info.xml b/civicrm/ext/recaptcha/info.xml
index 4d008d4dfc4a5e5e5ea911cd009a5a3eacf25a56..2a71a6b02db5dd911838d8d5a781aa3d80f98b84 100644
--- a/civicrm/ext/recaptcha/info.xml
+++ b/civicrm/ext/recaptcha/info.xml
@@ -12,14 +12,14 @@
     <url desc="Main Extension Page">https://github.com/civicrm/civicrm-core/tree/master/ext/recaptcha</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <classloader>
     <psr0 prefix="CRM_" path="."/>
diff --git a/civicrm/ext/scheduled_communications/info.xml b/civicrm/ext/scheduled_communications/info.xml
index c017b2bf5ce67316e6a758869716ab1241567197..af9cecbb84035a1cc06e02322c1a6a5fbad41c34 100644
--- a/civicrm/ext/scheduled_communications/info.xml
+++ b/civicrm/ext/scheduled_communications/info.xml
@@ -12,11 +12,11 @@
     <url desc="Chat">https://chat.civicrm.org/civicrm/channels/search-improvements</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>beta</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Click on the chat link above to discuss development, report problems or ask questions.</comments>
   <classloader>
diff --git a/civicrm/ext/search_kit/CRM/Search/Upgrader.php b/civicrm/ext/search_kit/CRM/Search/Upgrader.php
index 24f573e1c5677f17402c51aa705cdb7609bcffd1..69ab6069228af8009d0e56d8aebdf0fc1cfc5914 100644
--- a/civicrm/ext/search_kit/CRM/Search/Upgrader.php
+++ b/civicrm/ext/search_kit/CRM/Search/Upgrader.php
@@ -40,7 +40,7 @@ class CRM_Search_Upgrader extends CRM_Extension_Upgrader_Base {
     foreach ($savedSearches as $savedSearch) {
       $newAliases = [];
       foreach ($savedSearch['api_params']['select'] ?? [] as $i => $select) {
-        if (strstr($select, '(') && !strstr($select, ' AS ')) {
+        if (str_contains($select, '(') && !str_contains($select, ' AS ')) {
           $alias = CRM_Utils_String::munge(str_replace(')', '', $select), '_', 256);
           $newAliases[$select] = $alias;
           $savedSearch['api_params']['select'][$i] = $select . ' AS ' . $alias;
diff --git a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php
index 69acf8e3ff2470fe4ae2178fee0f8b1aaaabbaee..75982ddf83fbceaade81e6e69f7fea73216f63d2 100644
--- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php
+++ b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php
@@ -651,7 +651,7 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction {
       return \CRM_Core_Permission::check($permissions) == ($op !== '!=');
     }
     // Convert the conditional value of 'current_domain' into an actual value that filterCompare can work with
-    if ($item['condition'][2] === 'current_domain') {
+    if ($item['condition'][2] ?? '' === 'current_domain') {
       if (str_ends_with($item['condition'][0], ':label') !== FALSE) {
         $item['condition'][2] = \CRM_Core_BAO_Domain::getDomain()->name;
       }
diff --git a/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php b/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php
index 03649969ba12b98386ddeadbce72439b5fb491dd..54cd5ce2cffe202e7d5aa2091008f19041954d2d 100644
--- a/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php
+++ b/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php
@@ -59,10 +59,9 @@ class DefaultDisplaySubscriber extends \Civi\Core\Service\AutoService implements
       throw new \CRM_Core_Exception("Entity name is required to get autocomplete default display.");
     }
     $idField = CoreUtil::getIdFieldName($entityName);
-    $searchFields = CoreUtil::getSearchFields($entityName);
-    if (!$searchFields) {
-      throw new \CRM_Core_Exception("Entity $entityName has no default label field.");
-    }
+
+    // If there's no label field, fall back on id. That's a pretty lame autocomplete but better than nothing.
+    $searchFields = CoreUtil::getSearchFields($entityName) ?: [$idField];
 
     // Default sort order
     $e->display['settings']['sort'] = self::getDefaultSort($entityName);
diff --git a/civicrm/ext/search_kit/Civi/Search/Meta.php b/civicrm/ext/search_kit/Civi/Search/Meta.php
index 9fadf2364c8c746c98268cd3dcf312efcd6adcde..fe1120cb6059e8878d397566049f1888044b954b 100644
--- a/civicrm/ext/search_kit/Civi/Search/Meta.php
+++ b/civicrm/ext/search_kit/Civi/Search/Meta.php
@@ -57,7 +57,7 @@ class Meta {
     ];
 
     foreach ($apiParams['select'] ?? [] as $select) {
-      if (strstr($select, ' AS ')) {
+      if (str_contains($select, ' AS ')) {
         $expr = SqlExpression::convert($select, TRUE);
         $label = $expr::getTitle();
         foreach ($expr->getFields() as $num => $fieldName) {
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js b/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js
index 1b9adf9ffdf061767f97eab3a020c733d691f98c..c1c8f9fbcf1180d98a9be1bbb14a3298d225d002 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js
@@ -190,7 +190,7 @@
         function getKeyword(whitelist) {
           var keyword;
           _.each(_.filter(whitelist), function(flag) {
-            if (argString.indexOf(flag + ' ') === 0) {
+            if (argString.indexOf(flag + ' ') === 0 || argString === flag) {
               keyword = flag;
               argString = _.trim(argString.substr(flag.length));
               return false;
@@ -241,7 +241,7 @@
               }
               getKeyword([',']);
             }
-            if (expr && !_.isEmpty(expr.flag_after)) {
+            if (info.args.length && !_.isEmpty(param.flag_after)) {
               _.last(info.args).flag_after = getKeyword(_.keys(param.flag_after));
             }
           } else if (param.flag_before && !param.optional) {
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/compose.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/compose.html
index 6a52133a588390e5cb0a054c5231eebf6eb1d8ae..6ba39c1c300f8b79b8f56732c484bead49b7da71 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/compose.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/compose.html
@@ -74,15 +74,14 @@
     </ul>
   </div>
 </div>
-<fieldset id="crm-search-build-functions">
-  <legend ng-click="controls.showFunctions = !controls.showFunctions">
-    <i class="crm-i fa-caret-{{ !controls.showFunctions ? 'right' : 'down' }}"></i>
+<details id="crm-search-build-functions">
+  <summary ng-click="controls.showFunctions = !controls.showFunctions">
     {{:: ts('Field Transformations') }}
-  </legend>
+  </summary>
   <div ng-if="!!controls.showFunctions">
     <!-- Must use track by $index with an array of primitives, and manually refresh this loop when indexes change -->
     <fieldset ng-repeat="col in $ctrl.savedSearch.api_params.select track by $index" ng-if="!$ctrl.isPseudoField(col)">
       <crm-search-function class="form-inline" mode="select" expr="$ctrl.savedSearch.api_params.select[$index]"></crm-search-function>
     </fieldset>
   </div>
-</fieldset>
+</details>
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.html
index 5f4902f998e02f4a6e33bbc887c849289f073863..6acdeb50e79d6827c7d2fdfde5ba9e19c402ff51 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.html
@@ -22,7 +22,7 @@
         <span ng-if="!$ctrl.hasFunction(clause[0])">
           <input class="form-control collapsible-optgroups" ng-model="clause[0]" crm-ui-select="{data: $ctrl.fields, allowClear: true, placeholder: 'Field'}" ng-change="$ctrl.changeClauseField(clause, index)" />
         </span>
-        <crm-search-condition clause="clause" field="$ctrl.getFieldOrFunction(clause[0])" offset="1" option-key="$ctrl.getOptionKey(clause[0])" format="$ctrl.format" class="form-group"></crm-search-condition>
+        <crm-search-condition clause="clause" field="$ctrl.getFieldOrFunction(clause[0])" fields="$ctrl.fields" offset="1" option-key="$ctrl.getOptionKey(clause[0])" format="$ctrl.format" class="form-group"></crm-search-condition>
       </div>
       <fieldset class="clearfix" ng-if="$ctrl.conjunctions[clause[0]]">
         <crm-search-clause allow-functions="$ctrl.allowFunctions" clauses="clause[1]" format="{{ $ctrl.format }}" op="{{ clause[0] }}" fields="$ctrl.fields" delete-group="$ctrl.deleteRow(index)" ></crm-search-clause>
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.component.js
index aa90a53f26a63764a215b9cc2491940835b7c5ff..ac682c5b13884334a6d38fdc04e2c5b63e50aece 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.component.js
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.component.js
@@ -7,6 +7,7 @@
       clause: '<',
       format: '<',
       optionKey: '<',
+      fields: '<',
       offset: '<'
     },
     templateUrl: '~/crmSearchAdmin/crmSearchCondition.html',
@@ -16,6 +17,20 @@
       this.operators = {};
 
       this.$onInit = function() {
+        if (this.fields) {
+          let val = getValue();
+          // WHERE clause has an explicit flag if input type is a field
+          if (this.format !== 'json') {
+            this.inputMode = this.clause[2 + ctrl.offset] ? 'field' : 'value';
+          }
+          // ON clause will be quoted json-style if not a field
+          else {
+            if (typeof val === 'string' && /^[a-zA-Z]/.test(val)) {
+              this.inputMode = 'field';
+            }
+          }
+        }
+        this.inputMode = this.inputMode || 'value';
         $scope.$watch('$ctrl.field', updateOperators);
       };
 
@@ -54,6 +69,18 @@
         return getValue();
       };
 
+      // ngChange handler for the field/value mode toggle
+      this.changeInputMode = function() {
+        setValue('');
+        if (ctrl.format !== 'json') {
+          if (ctrl.inputMode === 'field') {
+            this.clause[2 + ctrl.offset] = true;
+          } else {
+            delete this.clause[2 + ctrl.offset];
+          }
+        }
+      };
+
       // Return a list of operators allowed for the current field
       this.getOperators = function() {
         var field = ctrl.field || {},
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.html
index ed54a75a289ae8c4696685b362fe89fe44799cd5..be6ac8ff7b1204cfd8a4201225cb2d758510944f 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchCondition.html
@@ -1,2 +1,9 @@
 <select class="form-control api4-operator" ng-model="$ctrl.getSetOperator" ng-if="$ctrl.getOperators().length > 1" ng-model-options="{getterSetter: true}" ng-options="o.key as o.value for o in $ctrl.getOperators()" ng-change="$ctrl.changeClauseOperator()" ></select>
-<crm-search-input ng-if="$ctrl.operatorTakesInput()" ng-model="$ctrl.getSetValue" ng-model-options="{getterSetter: true}" field="$ctrl.field" option-key="$ctrl.optionKey" op="$ctrl.getSetOperator()" format="$ctrl.format" class="form-group"></crm-search-input>
+<select class="form-control crm-search-input-mode" ng-if="$ctrl.fields" ng-model="$ctrl.inputMode" ng-change="$ctrl.changeInputMode(clause, index)" >
+  <option value="value">{{:: ts('Value') }}</option>
+  <option value="field">{{:: ts('Field') }}</option>
+</select>
+<crm-search-input ng-if="$ctrl.inputMode === 'value' && $ctrl.operatorTakesInput()" ng-model="$ctrl.getSetValue" ng-model-options="{getterSetter: true}" field="$ctrl.field" option-key="$ctrl.optionKey" op="$ctrl.getSetOperator()" format="$ctrl.format" class="form-group"></crm-search-input>
+<span ng-if="$ctrl.inputMode === 'field' && $ctrl.operatorTakesInput()">
+  <input class="form-control collapsible-optgroups" ng-model="$ctrl.getSetValue" ng-model-options="{getterSetter: true}" crm-ui-select="{data: $ctrl.fields, allowClear: true, placeholder: 'Field'}" />
+</span>
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js
index 366bb69105649a50b477cefd356d910946403cf1..25e472b5b396040465159130b244fb2f7115f75c 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js
@@ -44,19 +44,20 @@
         }
       });
 
-      this.addArg = function(exprType) {
+      this.addArg = function(exprType, optional) {
         var param = ctrl.getParam(ctrl.args.length),
           val = '';
         if (exprType === 'SqlNumber') {
           // Number: default to 0
           val = 0;
-        } else if (exprType === 'SqlField') {
+        } else if (exprType === 'SqlField' && !optional) {
           // Field: Default to first available field, making it easier to delete the value
           val = ctrl.getFields().results[0].children[0].id;
         }
         ctrl.args.push({
           type: ctrl.exprTypes[exprType].type,
           flag_before: _.filter(_.keys(param.flag_before))[0],
+          flag_after: _.filter(_.keys(param.flag_after))[0],
           name: param.name,
           value: val
         });
@@ -70,11 +71,11 @@
         _.each(ctrl.fn.params, function(param, index) {
           while (
             (ctrl.args.length - index < param.min_expr) &&
-            // TODO: Handle named params like "ORDER BY"
-            !(param.name && param.optional) &&
+            // Exclude 'api_default' params (should not be changed by the user)
+            !param.api_default &&
             (!param.optional || param.must_be.length === 1)
           ) {
-            ctrl.addArg(param.must_be[0]);
+            ctrl.addArg(param.must_be[0], param.optional);
           }
         });
       }
@@ -144,6 +145,7 @@
             ctrl.args.splice(pos, 0, {
               type: exprType ? ctrl.exprTypes[exprType].type : null,
               flag_before: _.filter(_.keys(ctrl.fn.params[pos].flag_before))[0],
+              flag_after: _.filter(_.keys(ctrl.fn.params[pos].flag_after))[0],
               name: ctrl.fn.params[pos].name,
               value: exprType === 'SqlNumber' ? 0 : ''
             });
@@ -152,6 +154,7 @@
           // Update fieldArg
           var fieldParam = ctrl.fn.params[pos];
           ctrl.fieldArg.flag_before = _.keys(fieldParam.flag_before)[0];
+          ctrl.fieldArg.flag_after = _.keys(fieldParam.flag_after)[0];
           ctrl.fieldArg.name = fieldParam.name;
           initFunction();
         }
@@ -159,9 +162,10 @@
       };
 
       this.changeArg = function(index) {
-        var val = ctrl.args[index].value;
-        // Delete empty value
-        if (index && !val && val !== 0 && ctrl.args.length > ctrl.fn.params[0].min_expr) {
+        var val = ctrl.args[index].value,
+          param = ctrl.getParam(index);
+        // Delete empty value if allowed
+        if (index && !val && val !== 0 && !param.optional && ctrl.args.length > param.min_expr) {
           ctrl.args.splice(index, 1);
         }
         ctrl.writeExpr();
@@ -178,7 +182,8 @@
           var args = _.transform(ctrl.args, function(args, arg, index) {
             if (arg.value || arg.value === 0 || arg.flag_before) {
               var prefix = arg.flag_before || arg.name ? (index ? ' ' : '') + (arg.flag_before || arg.name) + (arg.value ? ' ' : '') : (index ? ', ' : '');
-              args.push(prefix + (arg.type === 'string' ? JSON.stringify(arg.value) : arg.value));
+              var suffix = arg.flag_after ? ' ' + arg.flag_after : '';
+              args.push(prefix + (arg.type === 'string' ? JSON.stringify(arg.value) : arg.value) + suffix);
             }
           });
           // Replace fake function "e"
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.html
index 431c2b15d2446fcc68cff1d3d849ce384eadd8fd..08ef0944416687a772314ebf8ed033fa293392e0 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.html
@@ -4,12 +4,13 @@
 <label ng-hide="$ctrl.mode !== 'select' && !$ctrl.fn">{{ $ctrl.fieldArg.field.label }}</label>
 
 <div class="form-group" ng-repeat="arg in $ctrl.args">
-  <crm-search-function-flag ng-if="$ctrl.fn" arg="arg" param="$ctrl.getParam($index)" write-expr="$ctrl.writeExpr()"></crm-search-function-flag>
+  <crm-search-function-flag ng-if="$ctrl.fn" flag="flag_before" arg="arg" param="$ctrl.getParam($index)" write-expr="$ctrl.writeExpr()"></crm-search-function-flag>
   <span ng-switch="arg.type" ng-if="arg !== $ctrl.fieldArg">
     <input ng-switch-when="number" class="form-control" type="number" ng-model="arg.value" placeholder="{{ $ctrl.getParam($index).label }}" ng-change="$ctrl.changeArg($index)" ng-model-options="{updateOn: 'blur'}">
     <input ng-switch-when="string" class="form-control" ng-model="arg.value" placeholder="{{ $ctrl.getParam($index).label }}" ng-change="$ctrl.changeArg($index)" ng-trim="false" ng-model-options="{updateOn: 'blur'}">
     <input ng-switch-when="field" class="form-control" ng-model="arg.value" crm-ui-select="{data: $ctrl.getFields, placeholder: $ctrl.getParam($index).label}" ng-change="$ctrl.changeArg($index)">
   </span>
+  <crm-search-function-flag ng-if="$ctrl.fn && arg.value" flag="flag_after" arg="arg" param="$ctrl.getParam($index)" write-expr="$ctrl.writeExpr()"></crm-search-function-flag>
 </div>
 <div class="btn-group" ng-if="$ctrl.canAddArg()">
   <button type="button" class="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.component.js
index cf2dc92af3c99182e0233205af02ed6826e7a73c..24db599dd31e4c092add257d6cfc0b42cf1610d9 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.component.js
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.component.js
@@ -5,6 +5,7 @@
     bindings: {
       arg: '<',
       param: '<',
+      flag: '@',
       writeExpr: '&'
     },
     templateUrl: '~/crmSearchAdmin/crmSearchFunctionFlag.html',
@@ -12,13 +13,13 @@
       var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'),
         ctrl = this;
 
-      this.$onInit = function() {
-        if (!ctrl.param || !ctrl.param.flag_before) {
-          this.widget = null;
-        } else if (_.keys(ctrl.param.flag_before).length === 2 && '' in ctrl.param.flag_before) {
-          this.widget = 'checkbox';
+      this.getWidget = function() {
+        if (!ctrl.param || !ctrl.param[ctrl.flag]) {
+          return null;
+        } else if (_.keys(ctrl.param[ctrl.flag]).length === 2 && '' in ctrl.param[ctrl.flag]) {
+          return 'checkbox';
         } else {
-          this.widget = 'select';
+          return 'select';
         }
       };
     }
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.html
index 8d9d19b4b0857be2a060520a82e1594e721402c7..32a126b0fda5f8c9f89bf62520872413a3de17ff 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.html
@@ -1,12 +1,12 @@
-<span ng-switch="$ctrl.widget">
+<span ng-switch="$ctrl.getWidget()">
   <span ng-switch-when="checkbox">
-    <label ng-repeat="(val, label) in $ctrl.param.flag_before" ng-if="val">
-      <input type="checkbox" ng-checked="$ctrl.arg.flag_before === val" ng-click="$ctrl.arg.flag_before = ($ctrl.arg.flag_before === val ? null : val); $ctrl.writeExpr();" >
+    <label ng-repeat="(val, label) in $ctrl.param[$ctrl.flag]" ng-if="val">
+      <input type="checkbox" ng-checked="$ctrl.arg[$ctrl.flag] === val" ng-click="$ctrl.arg[$ctrl.flag] = ($ctrl.arg[$ctrl.flag] === val ? null : val); $ctrl.writeExpr();" >
       {{ label }}
     </label>
   </span>
-  <select ng-switch-when="select" class="form-control" ng-model="$ctrl.arg.flag_before" ng-change="$ctrl.writeExpr();">
-    <option ng-repeat="(val, label) in $ctrl.param.flag_before" value="{{ val }}">
+  <select ng-switch-when="select" class="form-control" ng-model="$ctrl.arg[$ctrl.flag]" ng-change="$ctrl.writeExpr();">
+    <option ng-repeat="(val, label) in $ctrl.param[$ctrl.flag]" value="{{ val }}">
       {{ label }}
     </option>
   </select>
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/resultsTable/debug.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/resultsTable/debug.html
index a61f99abe90e98d0094a118298ee3dffb55da54d..63d15daf0fffc402be8373471b80d4a148a7730f 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/resultsTable/debug.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/resultsTable/debug.html
@@ -1,9 +1,8 @@
-<fieldset id="crm-search-admin-debug">
-  <legend ng-click="$ctrl.showDebug = !$ctrl.showDebug">
-    <i class="crm-i fa-caret-{{ !$ctrl.showDebug ? 'right' : 'down' }}"></i>
+<details id="crm-search-admin-debug">
+  <summary>
     {{:: ts('Query Info') }}
-  </legend>
-  <div ng-if="$ctrl.showDebug">
+  </summary>
+  <div>
     <pre ng-if="$ctrl.debug.timeIndex">{{ ts('Request took %1 seconds.', {1: $ctrl.debug.timeIndex}) }}</pre>
     <div>
       <strong>API:</strong>
@@ -15,4 +14,4 @@
       <pre ng-repeat="query in $ctrl.debug.sql">{{ query }}</pre>
     </div>
   </div>
-</fieldset>
+</details>
diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/menu.html b/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/menu.html
index 2f790129d5fe52ce6132d904d657fd417a6c5243..d08e57c9d3049b8b33782eeab29703444cedf122 100644
--- a/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/menu.html
+++ b/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/menu.html
@@ -1,4 +1,4 @@
-<div class="btn-group" role="group">
+<div class="btn-group" role="group" ng-if="colData.links.length">
   <button type="button" class="dropdown-toggle btn {{:: $ctrl.settings.columns[colIndex].size }} btn-{{:: $ctrl.settings.columns[colIndex].style }}" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" ng-click="colData.open = true">
     <i ng-if=":: $ctrl.settings.columns[colIndex].icon" class="crm-i {{:: $ctrl.settings.columns[colIndex].icon }}"></i>
     {{:: colData.text }}
diff --git a/civicrm/ext/search_kit/info.xml b/civicrm/ext/search_kit/info.xml
index a11d088fb1db831406760689c96c6691094bd7ab..88c32cf32af83dcb77a4e8c18dc7841edda09691 100644
--- a/civicrm/ext/search_kit/info.xml
+++ b/civicrm/ext/search_kit/info.xml
@@ -14,14 +14,14 @@
     <url desc="Issues">https://lab.civicrm.org/dev/report/-/issues</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>mgmt:required</tag>
   </tags>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>Click on the chat link above to discuss development, report problems or ask questions.</comments>
   <classloader>
diff --git a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDownloadTest.php b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDownloadTest.php
index 9a1d211b7e1b2f8c65ab7f71d690e3b6953f2de6..bc8d2d8eec54f5d0872e2d9d94530b627016c7f6 100644
--- a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDownloadTest.php
+++ b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDownloadTest.php
@@ -87,6 +87,7 @@ class SearchDownloadTest extends \PHPUnit\Framework\TestCase implements Headless
     $header = array_shift($download);
 
     $this->assertEquals('Duration Subject', $header[0]);
+    $this->assertEquals('Details', $header[1]);
 
     foreach ($download as $rowNum => $data) {
       $this->assertEquals($sampleData[$rowNum]['duration'] . ' ' . $subject, $data[0]);
diff --git a/civicrm/ext/sequentialcreditnotes/info.xml b/civicrm/ext/sequentialcreditnotes/info.xml
index dc945693dbc88d7d7043b1038a34135c6b65fb38..f53134cf4c62a5ba5ff98388b45ab6c69335cb41 100644
--- a/civicrm/ext/sequentialcreditnotes/info.xml
+++ b/civicrm/ext/sequentialcreditnotes/info.xml
@@ -14,14 +14,14 @@
     <url desc="Support">https://lab.civicrm.org/extensions/sequentialcreditnotes</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <mixins>
     <mixin>setting-php@1.0.0</mixin>
diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/Role.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/Role.php
index ad9305b61c3caf5be8756602442103baa67545e1..e9e3ceef8c8a279dbd59a9053e3e291050de7ca6 100644
--- a/civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/Role.php
+++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/Role.php
@@ -3,28 +3,51 @@
 use CRM_Standaloneusers_ExtensionUtil as E;
 // phpcs:enable
 
-class CRM_Standaloneusers_BAO_Role extends CRM_Standaloneusers_DAO_Role {
+class CRM_Standaloneusers_BAO_Role extends CRM_Standaloneusers_DAO_Role implements \Civi\Core\HookInterface {
 
   /**
-   * Create a new Role based on array-data
-   *
-   * @param array $params key-value pairs
-   * @return CRM_Standaloneusers_DAO_Role|NULL
+   * Event fired after an action is taken on a Role record.
+   * @param \Civi\Core\Event\PostEvent $event
    */
-  /*
-  public static function create($params) {
-  $className = 'CRM_Standaloneusers_DAO_Role';
-  $entityName = 'Role';
-  $hook = empty($params['id']) ? 'create' : 'edit';
-
-  CRM_Utils_Hook::pre($hook, $entityName, CRM_Utils_Array::value('id', $params), $params);
-  $instance = new $className();
-  $instance->copyValues($params);
-  $instance->save();
-  CRM_Utils_Hook::post($hook, $entityName, $instance->id, $instance);
+  public static function self_hook_civicrm_post(\Civi\Core\Event\PostEvent $event) {
+    // Remove role from users on deletion
+    if ($event->action === 'delete') {
+      $users = \Civi\Api4\User::get(FALSE)
+        ->addSelect('id', 'roles')
+        ->addWhere('roles', 'CONTAINS', $event->id)
+        ->execute();
+      foreach ($users as $user) {
+        $roles = array_diff($user['roles'], [$event->id]);
+        \Civi\Api4\User::update(FALSE)
+          ->addValue('roles', $roles)
+          ->addWhere('id', '=', $user['id'])
+          ->execute();
+      }
+    }
 
-  return $instance;
+    // Reset cache
+    Civi::cache('metadata')->clear();
   }
+
+  /**
+   * Check access permission
+   *
+   * @param string $entityName
+   * @param string $action
+   * @param array $record
+   * @param integer|null $userID
+   * @return boolean
+   * @see CRM_Core_DAO::checkAccess
    */
+  public static function _checkAccess(string $entityName, string $action, array $record, ?int $userID): bool {
+    // Prevent users from updating or deleting the admin and everyone roles
+    if (in_array($action, ['delete', 'update'], TRUE)) {
+      $name = $record['name'] ?? CRM_Core_DAO::getFieldValue(self::class, $record['id']);
+      if (in_array($name, ['admin', 'everyone'], TRUE)) {
+        return FALSE;
+      }
+    }
+    return TRUE;
+  }
 
 }
diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/User.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/User.php
new file mode 100644
index 0000000000000000000000000000000000000000..bfbb09a837b199ee08e19340b9dbdc03785b3153
--- /dev/null
+++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/User.php
@@ -0,0 +1,66 @@
+<?php
+
+/**
+ * @package CRM
+ * @copyright CiviCRM LLC https://civicrm.org/licensing
+ */
+
+/**
+ * Business access object for the User entity.
+ */
+class CRM_Standaloneusers_BAO_User extends CRM_Standaloneusers_DAO_User implements \Civi\Core\HookInterface {
+
+  /**
+   * Event fired after an action is taken on a User record.
+   * @param \Civi\Core\Event\PreEvent $event
+   */
+  public static function self_hook_civicrm_pre(\Civi\Core\Event\PreEvent $event) {
+    if (in_array($event->action, ['create', 'edit'])
+        && empty($event->params['when_updated'])) {
+      // Track when_updated.
+      $event->params['when_updated'] = date('YmdHis');
+    }
+  }
+
+  public static function updateLastAccessed() {
+    $sess = CRM_Core_Session::singleton();
+    $ufID = (int) $sess->get('ufID');
+    CRM_Core_DAO::executeQuery("UPDATE civicrm_uf_match SET when_last_accessed = NOW() WHERE id = $ufID");
+    $sess->set('lastAccess', time());
+  }
+
+  public static function getPreferredLanguages(): array {
+    return CRM_Core_I18n::uiLanguages(FALSE);
+  }
+
+  public static function getTimeZones(): array {
+    $timeZones = [];
+    foreach (\DateTimeZone::listIdentifiers() as $timezoneId) {
+      $timeZones[$timezoneId] = $timezoneId;
+    }
+    return $timeZones;
+  }
+
+  /**
+   * Check access permission
+   *
+   * @param string $entityName
+   * @param string $action
+   * @param array $record
+   * @param integer|null $userID
+   * @return boolean
+   * @see CRM_Core_DAO::checkAccess
+   */
+  public static function _checkAccess(string $entityName, string $action, array $record, ?int $userID): bool {
+    // Prevent users from deleting their own user account
+    if (in_array($action, ['delete'], TRUE)) {
+      $sess = CRM_Core_Session::singleton();
+      $ufID = (int) $sess->get('ufID');
+      if ($record['id'] == $ufID) {
+        return FALSE;
+      };
+    }
+    return TRUE;
+  }
+
+}
diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/Role.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/Role.php
index 585f241f2f16af0355a92e0a2d2bdb740bb462c2..31bc1623689dd6e663c6ec20b3341c94f3f89608 100644
--- a/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/Role.php
+++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/Role.php
@@ -6,7 +6,7 @@
  *
  * Generated from standaloneusers/xml/schema/CRM/Standaloneusers/Role.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:d5053ae97fba22b13adecdce76ebb30f)
+ * (GenCodeChecksum:b027d757eff8ad3b630c304037699382)
  */
 use CRM_Standaloneusers_ExtensionUtil as E;
 
@@ -38,6 +38,16 @@ class CRM_Standaloneusers_DAO_Role extends CRM_Core_DAO {
    */
   public static $_log = TRUE;
 
+  /**
+   * Paths for accessing this entity in the UI.
+   *
+   * @var string[]
+   */
+  protected static $_paths = [
+    'add' => 'civicrm/admin/role',
+    'update' => 'civicrm/admin/role#?Role1=[id]',
+  ];
+
   /**
    * Unique Role ID
    *
@@ -77,7 +87,7 @@ class CRM_Standaloneusers_DAO_Role extends CRM_Core_DAO {
   /**
    * Only active roles grant permissions
    *
-   * @var bool|string|null
+   * @var bool|string
    *   (SQL type: tinyint)
    *   Note that values will be retrieved from the database as a string.
    */
@@ -211,6 +221,7 @@ class CRM_Standaloneusers_DAO_Role extends CRM_Core_DAO {
           'type' => CRM_Utils_Type::T_BOOLEAN,
           'title' => E::ts('Role is active'),
           'description' => E::ts('Only active roles grant permissions'),
+          'required' => TRUE,
           'usage' => [
             'import' => FALSE,
             'export' => FALSE,
@@ -225,6 +236,7 @@ class CRM_Standaloneusers_DAO_Role extends CRM_Core_DAO {
           'localizable' => 0,
           'html' => [
             'type' => 'CheckBox',
+            'label' => E::ts("Enabled"),
           ],
           'add' => NULL,
         ],
diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/User.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/User.php
index 76ae428a296a5ee7b10292990d73ab14e4f079f3..4cc9d4b60846362341df708b081ef053df84507d 100644
--- a/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/User.php
+++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/User.php
@@ -6,7 +6,7 @@
  *
  * Generated from standaloneusers/xml/schema/CRM/Standaloneusers/User.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:60852489e3705659312988971c632fb7)
+ * (GenCodeChecksum:889ac5b24fb6913d046bd2e52dcb65ea)
  */
 use CRM_Standaloneusers_ExtensionUtil as E;
 
@@ -44,8 +44,8 @@ class CRM_Standaloneusers_DAO_User extends CRM_Core_DAO {
    * @var string[]
    */
   protected static $_paths = [
-    'add' => 'civicrm/user',
-    'update' => 'civicrm/user/#?User1=[id]',
+    'add' => 'civicrm/admin/user',
+    'update' => 'civicrm/admin/user/#?User1=[id]',
   ];
 
   /**
@@ -481,6 +481,7 @@ class CRM_Standaloneusers_DAO_User extends CRM_Core_DAO {
           'localizable' => 0,
           'html' => [
             'type' => 'CheckBox',
+            'label' => E::ts("Enabled"),
           ],
           'add' => NULL,
         ],
@@ -504,7 +505,10 @@ class CRM_Standaloneusers_DAO_User extends CRM_Core_DAO {
           'bao' => 'CRM_Standaloneusers_DAO_User',
           'localizable' => 0,
           'html' => [
-            'type' => 'Text',
+            'type' => 'Select',
+          ],
+          'pseudoconstant' => [
+            'callback' => 'CRM_Standaloneusers_BAO_User::getTimeZones',
           ],
           'add' => NULL,
         ],
@@ -526,6 +530,12 @@ class CRM_Standaloneusers_DAO_User extends CRM_Core_DAO {
           'entity' => 'User',
           'bao' => 'CRM_Standaloneusers_DAO_User',
           'localizable' => 0,
+          'html' => [
+            'type' => 'Select',
+          ],
+          'pseudoconstant' => [
+            'callback' => 'CRM_Standaloneusers_BAO_User::getPreferredLanguages',
+          ],
           'add' => '2.1',
         ],
         'password_reset_token' => [
diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/Login.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/Login.php
index b3a40144e9baf8a3c69f310b69b8e490c4433ae7..d9017529dc5bd94e0ea85a790a6c3665cb7be045 100644
--- a/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/Login.php
+++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/Login.php
@@ -5,15 +5,21 @@ use Civi\Standalone\Security;
 class CRM_Standaloneusers_Page_Login extends CRM_Core_Page {
 
   public function run() {
-    // // Example: Set the page-title dynamically; alternatively, declare a static title in xml/Menu/*.xml
-    // CRM_Utils_System::setTitle(E::ts('Login'));
-    //
-    // // Example: Assign a variable for use in a template
-    // $this->assign('currentTime', date('Y-m-d H:i:s'));
+    Security::singleton()->getLoggedInUfID();
+    if (CRM_Core_Session::singleton()->get('ufID')) {
+      // Already logged in.
+      CRM_Utils_System::redirect('/civicrm');
+    }
+
     $this->assign('logoUrl', E::url('images/civicrm-logo.png'));
+    $this->assign('pageTitle', '');
+    $this->assign('forgottenPasswordURL', CRM_Utils_System::url('civicrm/login/password'));
     // Remove breadcrumb for login page.
     $this->assign('breadcrumb', NULL);
 
+    $this->assign('anonAccessDenied', isset($_GET['anonAccessDenied']));
+    $this->assign('justLoggedOut', isset($_GET['justLoggedOut']));
+
     parent::run();
   }
 
diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/ResetPassword.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/ResetPassword.php
index 1f18b66c394964b02adfc3838449f094660eafbd..6017a8f2843b82029e79a618a517fb608328f882 100644
--- a/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/ResetPassword.php
+++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/ResetPassword.php
@@ -13,7 +13,10 @@ class CRM_Standaloneusers_Page_ResetPassword extends CRM_Core_Page {
 
   public function run() {
 
+    $this->assign('logoUrl', E::url('images/civicrm-logo.png'));
     $this->assign('hibp', CIVICRM_HIBP_URL);
+    $this->assign('pageTitle', '');
+    $this->assign('breadcrumb', NULL);
     // $this->assign('loggedInUserID', CRM_Utils_System::getLoggedInUfID());
     Civi::service('angularjs.loader')->addModules('crmResetPassword');
 
diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/WorkflowMessage/PasswordReset.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/WorkflowMessage/PasswordReset.php
index 3797232262d427538b3434bf999c165fe42a6d83..76f45c5d2412cee88368c6bd7e802d51dd086a97 100644
--- a/civicrm/ext/standaloneusers/CRM/Standaloneusers/WorkflowMessage/PasswordReset.php
+++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/WorkflowMessage/PasswordReset.php
@@ -3,10 +3,10 @@ use Civi\WorkflowMessage\GenericWorkflowMessage;
 
 /**
  *
- * @method static setResetUrlPlaintext(string $s)
- * @method static setResetUrlHtml(string $s)
- * @method static setUsernamePlaintext(string $s)
- * @method static setUsernameHtml(string $s)
+ * @method $this setResetUrlPlaintext(string $s)
+ * @method $this setResetUrlHtml(string $s)
+ * @method $this setUsernamePlaintext(string $s)
+ * @method $this setUsernameHtml(string $s)
  *
  */
 class CRM_Standaloneusers_WorkflowMessage_PasswordReset extends GenericWorkflowMessage {
@@ -62,6 +62,7 @@ class CRM_Standaloneusers_WorkflowMessage_PasswordReset extends GenericWorkflowM
     $resetUrlHtml = htmlspecialchars($resetUrlPlaintext);
     $this->logParams = [
       'userID'   => $user['id'],
+      'contactID' => $user['contact_id'],
       'username' => $user['username'],
       'email'    => $user['uf_name'],
       'url'      => $resetUrlPlaintext,
@@ -71,7 +72,8 @@ class CRM_Standaloneusers_WorkflowMessage_PasswordReset extends GenericWorkflowM
       ->setResetUrlHtml($resetUrlHtml)
       ->setUsernamePlaintext($user['username'])
       ->setUsernameHtml(htmlspecialchars($user['username']))
-      ->setTo($user['uf_name']);
+      ->setTo(['name' => $user['username'], 'email' => $user['uf_name']])
+      ->setContactID($user['contact_id']);
     return $this;
   }
 
diff --git a/civicrm/ext/standaloneusers/Civi/Api4/Action/User/SendPasswordReset.php b/civicrm/ext/standaloneusers/Civi/Api4/Action/User/SendPasswordReset.php
index 6205d79078c0abad418d04c3908f88eb5df6e470..54f99a76fa77ec994f27da9917ebaa7e09da25fa 100644
--- a/civicrm/ext/standaloneusers/Civi/Api4/Action/User/SendPasswordReset.php
+++ b/civicrm/ext/standaloneusers/Civi/Api4/Action/User/SendPasswordReset.php
@@ -41,7 +41,7 @@ class SendPasswordReset extends AbstractAction {
     }
 
     $user = User::get(FALSE)
-      ->addSelect('id', 'uf_name', 'username')
+      ->addSelect('id', 'uf_name', 'username', 'contact_id')
       ->addWhere('is_active', '=', TRUE)
       ->setLimit(1)
       ->addWhere(
diff --git a/civicrm/ext/standaloneusers/Civi/Standalone/Security.php b/civicrm/ext/standaloneusers/Civi/Standalone/Security.php
index 587f1f504e14c18f469756737c52c4368444ea47..7b5313a0c7878cb9ee957038a8952684168a34e9 100644
--- a/civicrm/ext/standaloneusers/Civi/Standalone/Security.php
+++ b/civicrm/ext/standaloneusers/Civi/Standalone/Security.php
@@ -81,7 +81,7 @@ class Security {
     return \Civi\Api4\User::get(FALSE)
       ->addWhere('username', '=', $username)
       ->execute()
-      ->single()['id'] ?? NULL;
+      ->first()['id'] ?? NULL;
   }
 
   /**
@@ -210,6 +210,8 @@ class Security {
       return FALSE;
     }
 
+    $this->applyLocaleFromUser($user);
+
     // Note: random_int is more appropriate for cryptographical use than mt_rand
     // The long number is the max 32 bit value.
     return [$user['contact_id'], $user['id'], random_int(0, 2147483647)];
@@ -235,6 +237,7 @@ class Security {
       ])['values'][0]['contact_id'] ?? NULL;
       // Confusingly, Civi stores it's *Contact* ID as *userID* on the session.
       $session->set('userID', $contactID);
+      $this->applyLocaleFromUser($user);
     }
   }
 
@@ -245,12 +248,6 @@ class Security {
     return !empty($this->getLoggedInUfID());
   }
 
-  public function getCurrentLanguage() {
-    // @todo
-    \Civi::log()->debug('CRM_Utils_System_Standalone::getCurrentLanguage: not implemented');
-    return NULL;
-  }
-
   /**
    * This is the (perhaps temporary location for) the implementation of CRM_Utils_System_Standalone method.
    */
@@ -452,4 +449,17 @@ class Security {
     return $workflowMessage;
   }
 
+  /**
+   * Applies the locale from the user record.
+   *
+   * @param array $user
+   * @return void
+   */
+  private function applyLocaleFromUser(array $user) {
+    $session = CRM_Core_Session::singleton();
+    if (!empty($user['language'])) {
+      $session->set('lcMessages', $user['language']);
+    }
+  }
+
 }
diff --git a/civicrm/ext/standaloneusers/ang/afformEditRole.aff.html b/civicrm/ext/standaloneusers/ang/afformEditRole.aff.html
index 0af704bf358dcf8757401ffca09216ff53ee6f6e..e5e795c8d2582ee97896516090176f6f549b571a 100644
--- a/civicrm/ext/standaloneusers/ang/afformEditRole.aff.html
+++ b/civicrm/ext/standaloneusers/ang/afformEditRole.aff.html
@@ -4,7 +4,7 @@
     <af-field name="name" />
     <af-field name="label" />
     <af-field name="permissions" />
-    <af-field name="is_active" />
+    <af-field name="is_active" defn="{afform_default: '1', input_attrs: {}}" />
   </fieldset>
   <button class="af-button btn btn-primary" crm-icon="fa-check" ng-click="afform.submit()">Submit</button>
 </af-form>
diff --git a/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.html b/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.html
index 53e67473d1961f194334bb0fd0ffc4088b7b7627..ef1eb4be1935fffb7a4d26dbb9027e4231214610 100644
--- a/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.html
+++ b/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.html
@@ -5,8 +5,8 @@
     <af-field name="username" />
     <af-field name="uf_name" />
     <af-field name="is_active" />
-    <af-field name="timezone" />
-    <af-field name="language" />
+    <af-field name="timezone" defn="{help_pre: ts('Set the timezone of the user. Date and times will be shown in this timezone. You can also leave it empty to use the default system timezone (which is a server setting).'), input_attrs: {placeholder: ts('Server default timezone')}}" />
+    <af-field name="language" defn="{help_pre: ts('Set the user interface language of this user. You can also leave it empty to use the default system language.'), input_attrs: {placeholder: ts('System default language')}}" />
   </fieldset>
   <button class="af-button btn btn-primary" crm-icon="fa-check" ng-click="afform.submit()">Submit</button>
 </af-form>
diff --git a/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.html b/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.html
index 669ca2e222a9a672234185457435ea604d2e9e9e..c17e57e19caacf0d21136a0793558481124a0261 100644
--- a/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.html
+++ b/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.html
@@ -1,16 +1,12 @@
 <div af-fieldset="">
   <div class="af-markup">
-
-
     <div class="help"><p>{{:: ts('User accounts allow people to access CiviCRM. What they can access is determined by which roles the users have, and what permissions are granted to those roles.') }}</p>
     </div>
-
-
   </div>
   <div class="af-container af-layout-cols" af-title="Filters">
     <af-field name="username" defn="{required: false, input_attrs: {}}" />
     <af-field name="uf_name" defn="{required: false, input_attrs: {}}" />
-    <af-field name="is_active" defn="{label: 'Active'}" />
+    <af-field name="is_active" defn="{input_type: 'Radio'}" />
     <af-field name="roles" defn="{input_attrs: {multiple: true}}" />
   </div>
   <crm-search-display-table search-name="Users" display-name="Users"></crm-search-display-table>
diff --git a/civicrm/ext/standaloneusers/ang/crmChangePassword/crmChangePassword.html b/civicrm/ext/standaloneusers/ang/crmChangePassword/crmChangePassword.html
index d2604837fd82d08076e5c0a81e03f4bd22b8a755..d9332425c2a7d898a2be629b27f3f2b28575d724 100644
--- a/civicrm/ext/standaloneusers/ang/crmChangePassword/crmChangePassword.html
+++ b/civicrm/ext/standaloneusers/ang/crmChangePassword/crmChangePassword.html
@@ -1,4 +1,5 @@
 <div>
+  <h1>Forgotten Password</h1>
   <form name="changePassword" crm-ui-id-scope>
 
     <div crm-ui-field="{name: 'actorPassword', title: ts('Enter your current password')}">
@@ -34,7 +35,7 @@
       </span>
     </div>
 
-    <button ng-click="$ctrl.attemptChange()" >{{ts('Change Password')}}</button>
+    <button class=btn ng-click="$ctrl.attemptChange()" >{{ts('Change Password')}}</button>
 
   </form>
   <div ng-if="$ctrl.busy" >{{$ctrl.busy}}</div>
diff --git a/civicrm/ext/standaloneusers/ang/crmResetPassword.js b/civicrm/ext/standaloneusers/ang/crmResetPassword.js
index 2d5db04fd45ab2d4917963afc3a1750fd468cf7b..017c6c6ff25c8b3389bf8cfe7083b433b2caf4fb 100644
--- a/civicrm/ext/standaloneusers/ang/crmResetPassword.js
+++ b/civicrm/ext/standaloneusers/ang/crmResetPassword.js
@@ -62,6 +62,7 @@
           return;
         }
         if (ctrl.newPassword != ctrl.newPasswordAgain) {
+          updateAngular('formSubmitted', false);
           alert(ts("Passwords do not match"));
           return;
         }
diff --git a/civicrm/ext/standaloneusers/ang/crmResetPassword/crmResetPassword.html b/civicrm/ext/standaloneusers/ang/crmResetPassword/crmResetPassword.html
index 26793c848eca86040d5117a6e0dc57435a4fa8cc..f7e692d0a62df7fb0cfdeb60ef1e15f20c3a1ef3 100644
--- a/civicrm/ext/standaloneusers/ang/crmResetPassword/crmResetPassword.html
+++ b/civicrm/ext/standaloneusers/ang/crmResetPassword/crmResetPassword.html
@@ -3,19 +3,23 @@
   <form name="requestLink" crm-ui-id-scope
     ng-if="!$ctrl.formSubmitted && !$ctrl.token">
 
-    <div crm-ui-field="{name: 'identifier', title: ts('Enter the username or email on your account')}">
+    <h1>Request Password Reset Link</h1>
+
+    <div class="input-wrapper">
+      <label crm-ui-for="identifier">{{ts('Enter the username or email on your account')}}</label>
       <input
-        crm-ui-id="identifier"
-        name="identifier"
-        ng-model="$ctrl.identifier"
-        class="crm-form-text"
-        type=text
-      />
+          crm-ui-id="identifier"
+          name="identifier"
+          ng-model="$ctrl.identifier"
+          class="crm-form-text form-control"
+          type=text
+          />
     </div>
 
-    <button ng-click="$ctrl.sendPasswordReset()" >{{ts('Send Password Reset')}}</button>
+    <button class=crm-button ng-click="$ctrl.sendPasswordReset()" >{{ts('Send Password Reset')}}</button>
   </form>
-  <div ng-if="$ctrl.resetSuccessfullySubmitted" >
+
+  <div ng-if="$ctrl.resetSuccessfullySubmitted" class="help" >
     <p>{{ts('Thanks. If your username/email matched an active account, we will email you with a special link to provide a new password.')}}</p>
     <p>{{ts('The link must be used within an hour, and can only be used once.')}}</p>
   </div>
@@ -24,32 +28,33 @@
 
   <!-- without a token, we offer for them to generate one. -->
   <form ng-if="$ctrl.token && $ctrl.token !== 'invalid' && !$ctrl.formSubmitted" name="resetPassword" crm-ui-id-scope >
-    <div ng=if="$ctrl.token !== 'invalid'" >
-      <div crm-ui-field="{name: 'newPassword', title: ts('Enter a new password')}">
-        <input
+    <h1>Reset Password</h1>
+
+    <div class="input-wrapper">
+      <label crm-ui-for="newPassword">{{ts('Enter a new password')}}</label>
+      <input
           crm-ui-id="newPassword"
           name="newPassword"
           ng-model="$ctrl.newPassword"
-          class="crm-form-text"
+          class="crm-form-text form-control"
           type=password
           />
-      </div>
-
-      <div crm-ui-field="{name: 'newPasswordAgain', title: ts('Re-enter new password')}">
-        <input
+    </div>
+    <div class="input-wrapper">
+      <label crm-ui-for="newPasswordAgain">{{ts('Re-enter new password')}}</label>
+      <input
           crm-ui-id="newPasswordAgain"
           name="newPasswordAgain"
           ng-model="$ctrl.newPasswordAgain"
-          class="crm-form-text"
+          class="crm-form-text form-control"
           type=password
           />
-        <span class="crm-error" ng-show="$ctrl.newPasswordAgain && $ctrl.newPassword && $ctrl.newPassword !== $ctrl.newPasswordAgain">
+      <span class="crm-error" ng-show="$ctrl.newPasswordAgain && $ctrl.newPassword && $ctrl.newPassword !== $ctrl.newPasswordAgain">
           {{ts('Passwords do not match')}}
-        </span>
-      </div>
-
-      <button ng-click="$ctrl.attemptChange()" ng-disabled="$ctrl.formSubmitted">{{ts('Change Password')}}</button>
+      </span>
     </div>
+
+    <button class=crm-button ng-click="$event.preventDefault();$ctrl.attemptChange()" ng-disabled="$ctrl.formSubmitted">{{ts('Change Password')}}</button>
   </form>
 
   <div ng-if="$ctrl.token === 'invalid'" >
diff --git a/civicrm/ext/standaloneusers/css/standalone.css b/civicrm/ext/standaloneusers/css/standalone.css
new file mode 100644
index 0000000000000000000000000000000000000000..9093579fe7656917b27d10f0b12bdfb8a7de2799
--- /dev/null
+++ b/civicrm/ext/standaloneusers/css/standalone.css
@@ -0,0 +1,52 @@
+html.crm-standalone body>.crm-container {
+  padding: 1px 3vw 1rem;
+}
+
+html.crm-standalone  nav.breadcrumb>ol {
+  padding-inline-start: 0;
+}
+
+.standalone-auth-form {
+  display: grid;
+  place-content: center;
+  width: 100%;
+  height: 100vh;
+}
+.standalone-auth-box {
+  box-sizing: border-box;
+  width: clamp(280px, 68vw, 45rem);
+  margin: 0;
+  background-color: white;
+  border: none;
+  border-radius: 3px;
+  padding: 1rem 3vw;;
+}
+.standalone-auth-form img.crm-logo {
+  width: 100%;
+  max-width: 400px;
+  margin: 0 auto 2rem;
+  display: block;
+}
+.standalone-auth-form .input-wrapper {
+  margin-bottom: 1rem;
+}
+.standalone-auth-form label {
+  display: block;
+}
+.standalone-auth-form input {
+  box-sizing: border-box;
+  width: 100%;
+}
+.standalone-auth-form .login-or-forgot {
+  display: grid;
+  gap: 1rem;
+  grid-template-columns: 1fr 1fr;
+}
+.standalone-auth-form .login-or-forgot>a {
+  grid-column: 1;
+}
+.standalone-auth-form .login-or-forgot>button {
+  grid-column: 2;
+  place-self: end;
+  margin-right: 0; /* override civicrm.css's 6px */
+}
diff --git a/civicrm/ext/standaloneusers/info.xml b/civicrm/ext/standaloneusers/info.xml
index af1ab0711e07f45aeeed34c1248dcb59d8faf087..1b1c013eb77abd1d32601118ff94d74d0ddfe064 100644
--- a/civicrm/ext/standaloneusers/info.xml
+++ b/civicrm/ext/standaloneusers/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">http://FIXME</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>alpha</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <requires>
     <ext>org.civicrm.search_kit</ext>
diff --git a/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Roles.mgd.php b/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Roles.mgd.php
index 692ea568bdc1390eb452d3234680169ef84493b9..a17ed750e7c34724e97ca1d052f9eb743af103fb 100644
--- a/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Roles.mgd.php
+++ b/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Roles.mgd.php
@@ -20,6 +20,7 @@ return [
           'version' => 4,
           'select' => [
             'id',
+            'name',
             'label',
             'is_active',
           ],
@@ -56,35 +57,91 @@ return [
           'pager' => [],
           'placeholder' => 5,
           'columns' => [
+            [
+              'type' => 'field',
+              'key' => 'name',
+              'dataType' => 'String',
+              'label' => E::ts('Name'),
+              'sortable' => TRUE,
+            ],
             [
               'type' => 'field',
               'key' => 'label',
               'dataType' => 'String',
               'label' => E::ts('Label'),
               'sortable' => TRUE,
-              'link' => [
-                'path' => '/civicrm/admin/role#?Role1=[id]',
-                'entity' => '',
-                'action' => '',
-                'join' => '',
-                'target' => '',
-              ],
+              'editable' => TRUE,
             ],
             [
               'type' => 'field',
               'key' => 'is_active',
               'dataType' => 'Boolean',
-              'label' => E::ts('Active'),
+              'label' => E::ts('Enabled'),
               'sortable' => TRUE,
               'rewrite' => '',
               'alignment' => '',
             ],
+            [
+              'size' => 'btn-xs',
+              'links' => [
+                [
+                  'entity' => 'Role',
+                  'action' => 'update',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-pencil',
+                  'text' => E::ts('Edit'),
+                  'style' => 'default',
+                  'path' => '',
+                  'condition' => [],
+                ],
+                [
+                  'task' => 'enable',
+                  'entity' => 'Role',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-toggle-on',
+                  'text' => E::ts('Enable'),
+                  'style' => 'default',
+                  'condition' => ['is_active', '=', FALSE],
+                ],
+                [
+                  'task' => 'disable',
+                  'entity' => 'Role',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-toggle-off',
+                  'text' => E::ts('Disable'),
+                  'style' => 'default',
+                  'condition' => ['is_active', '=', TRUE],
+                ],
+                [
+                  'entity' => 'Role',
+                  'task' => 'delete',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-trash',
+                  'text' => E::ts('Delete'),
+                  'style' => 'danger',
+                ],
+              ],
+              'type' => 'menu',
+              'icon' => 'fa-bars',
+              'alignment' => 'text-right',
+            ],
           ],
           'actions' => TRUE,
           'classes' => [
             'table',
             'table-striped',
           ],
+          'toolbar' => [
+            [
+              'text' => E::ts('Add Role'),
+              'target' => 'crm-popup',
+              'icon' => 'fa-plus',
+              'style' => 'primary',
+              'entity' => 'Role',
+              'action' => 'add',
+            ],
+          ],
         ],
         'acl_bypass' => FALSE,
       ],
diff --git a/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Users.mgd.php b/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Users.mgd.php
index dccaaeb66073590666210fe7b373980643347398..7689f3e6f1c6140383d5692d3694fe85a6d127be 100644
--- a/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Users.mgd.php
+++ b/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Users.mgd.php
@@ -12,9 +12,6 @@ return [
       'values' => [
         'name' => 'Users',
         'label' => E::ts('Administer Users'),
-        'form_values' => NULL,
-        'mapping_id' => NULL,
-        'search_custom_id' => NULL,
         'api_entity' => 'User',
         'api_params' => [
           'version' => 4,
@@ -25,6 +22,7 @@ return [
             'is_active',
             'when_created',
             'when_last_accessed',
+            'roles:label',
           ],
           'orderBy' => [],
           'where' => [],
@@ -32,8 +30,6 @@ return [
           'join' => [],
           'having' => [],
         ],
-        'expires_date' => NULL,
-        'description' => NULL,
       ],
       'match' => [
         'name',
@@ -54,18 +50,16 @@ return [
         'type' => 'table',
         'settings' => [
           'description' => NULL,
-          'sort' => [],
+          'sort' => [
+            [
+              'username',
+              'ASC',
+            ],
+          ],
           'limit' => 50,
           'pager' => [],
           'placeholder' => 5,
           'columns' => [
-            [
-              'type' => 'field',
-              'key' => 'id',
-              'dataType' => 'Integer',
-              'label' => E::ts('id'),
-              'sortable' => TRUE,
-            ],
             [
               'type' => 'field',
               'key' => 'username',
@@ -87,11 +81,18 @@ return [
               'label' => E::ts('Email'),
               'sortable' => TRUE,
             ],
+            [
+              'type' => 'field',
+              'key' => 'roles:label',
+              'dataType' => 'String',
+              'label' => E::ts('Roles'),
+              'sortable' => TRUE,
+            ],
             [
               'type' => 'field',
               'key' => 'is_active',
               'dataType' => 'Boolean',
-              'label' => E::ts('Active?'),
+              'label' => E::ts('Enabled'),
               'sortable' => TRUE,
               'editable' => TRUE,
             ],
@@ -99,16 +100,82 @@ return [
               'type' => 'field',
               'key' => 'when_created',
               'dataType' => 'Timestamp',
-              'label' => E::ts('When Created'),
+              'label' => E::ts('Created'),
               'sortable' => TRUE,
             ],
             [
               'type' => 'field',
               'key' => 'when_last_accessed',
               'dataType' => 'Timestamp',
-              'label' => E::ts('When Last Accessed'),
+              'label' => E::ts('Last Accessed'),
               'sortable' => TRUE,
             ],
+            [
+              'text' => '',
+              'style' => 'default',
+              'size' => 'btn-xs',
+              'icon' => 'fa-bars',
+              'links' => [
+                [
+                  'entity' => 'User',
+                  'action' => 'update',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-pencil',
+                  'text' => E::ts('Edit'),
+                  'style' => 'default',
+                  'path' => '',
+                  'task' => '',
+                  'condition' => [],
+                ],
+                [
+                  'task' => 'disable',
+                  'entity' => 'User',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-toggle-off',
+                  'text' => E::ts('Disable'),
+                  'style' => 'default',
+                  'path' => '',
+                  'action' => '',
+                  'condition' => [
+                    'is_active',
+                    '=',
+                    TRUE,
+                  ],
+                ],
+                [
+                  'task' => 'enable',
+                  'entity' => 'User',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-toggle-on',
+                  'text' => E::ts('Enable'),
+                  'style' => 'default',
+                  'path' => '',
+                  'action' => '',
+                  'condition' => [
+                    'is_active',
+                    '=',
+                    FALSE,
+                  ],
+                ],
+                [
+                  'task' => 'delete',
+                  'entity' => 'User',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-trash',
+                  'text' => E::ts('Delete'),
+                  'style' => 'danger',
+                  'path' => '',
+                  'action' => '',
+                  'condition' => [],
+                ],
+              ],
+              'type' => 'menu',
+              'alignment' => 'text-right',
+            ],
           ],
           'actions' => [
             'delete',
@@ -120,17 +187,26 @@ return [
             'table',
             'table-striped',
           ],
-          'addButton' => [
-            'path' => '/civicrm/admin/user#',
-            'text' => E::ts('Add User'),
-            'icon' => 'fa-plus',
+          'toolbar' => [
+            [
+              'path' => '/civicrm/admin/user#',
+              'text' => E::ts('Add User'),
+              'icon' => 'fa-plus',
+              'style' => 'primary',
+              'task' => '',
+              'entity' => '',
+              'action' => '',
+              'join' => '',
+              'target' => '',
+              'condition' => [],
+            ],
           ],
+          'button' => NULL,
         ],
-        'acl_bypass' => FALSE,
       ],
       'match' => [
-        'name',
         'saved_search_id',
+        'name',
       ],
     ],
   ],
diff --git a/civicrm/ext/standaloneusers/sql/auto_install.sql b/civicrm/ext/standaloneusers/sql/auto_install.sql
index ec2f3676e9be95a04759ceb64c274c4a7d0b9355..9a482bb76e37c6923844f6b396d6b0e4ca34b3d8 100644
--- a/civicrm/ext/standaloneusers/sql/auto_install.sql
+++ b/civicrm/ext/standaloneusers/sql/auto_install.sql
@@ -39,7 +39,7 @@ CREATE TABLE `civicrm_role` (
   `name` varchar(60) NOT NULL COMMENT 'Machine name for this role',
   `label` varchar(128) NOT NULL COMMENT 'Human friendly name for this role',
   `permissions` text NOT NULL COMMENT 'List of permissions granted by this role',
-  `is_active` tinyint DEFAULT 1 COMMENT 'Only active roles grant permissions',
+  `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Only active roles grant permissions',
   PRIMARY KEY (`id`)
 )
 ENGINE=InnoDB;
diff --git a/civicrm/ext/standaloneusers/sql/auto_uninstall.sql b/civicrm/ext/standaloneusers/sql/auto_uninstall.sql
index e963db9f2a0cf98d4d527df67b4210e6526cb1af..35c0c090b4cf90af67f3bf04db4e1a9f244d459c 100644
--- a/civicrm/ext/standaloneusers/sql/auto_uninstall.sql
+++ b/civicrm/ext/standaloneusers/sql/auto_uninstall.sql
@@ -8,9 +8,11 @@
 --
 -- Generated from drop.tpl
 -- DO NOT EDIT.  Generated by CRM_Core_CodeGen
----- /*******************************************************
+--
+-- /*******************************************************
+-- *
+-- * Clean up the existing tables
 -- *
--- * Clean up the existing tables-- *
 -- *******************************************************/
 
 SET FOREIGN_KEY_CHECKS=0;
diff --git a/civicrm/ext/standaloneusers/standaloneusers.php b/civicrm/ext/standaloneusers/standaloneusers.php
index dff4299e3f3e68e0ce66074b0460c55d12c55fff..a463b09f8d77bc31d354121a0ed488f38dc9796e 100644
--- a/civicrm/ext/standaloneusers/standaloneusers.php
+++ b/civicrm/ext/standaloneusers/standaloneusers.php
@@ -10,6 +10,32 @@ require_once 'standaloneusers.civix.php';
 use CRM_Standaloneusers_ExtensionUtil as E;
 // phpcs:enable
 
+
+function standaloneusers_civicrm_alterBundle(CRM_Core_Resources_Bundle $bundle) {
+  if ($bundle->name !== 'coreResources') {
+    return;
+  }
+  // This adds a few styles that only need apply to standalone, mainly
+  // providing a default style for login/password reset type pages.
+  $bundle->addStyleFile('standaloneusers', 'css/standalone.css');
+}
+
+/**
+ * Hide the inherit CMS language on the Settings - Localization form.
+ *
+ * Implements hook_civicrm_buildForm().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_buildForm/
+ */
+function standaloneusers_civicrm_buildForm($formName, CRM_Core_Form $form) {
+  // Administer / Localization / Languages, Currency, Locations
+  if ($formName == 'CRM_Admin_Form_Setting_Localization') {
+    if ($inheritLocaleElement = $form->getElement('inheritLocale')) {
+      $inheritLocaleElement->freeze();
+    }
+  }
+}
+
 /**
  * Implements hook_civicrm_config().
  *
@@ -17,6 +43,15 @@ use CRM_Standaloneusers_ExtensionUtil as E;
  */
 function standaloneusers_civicrm_config(&$config) {
   _standaloneusers_civix_civicrm_config($config);
+  $sess = CRM_Core_Session::singleton();
+
+  if (!empty($sess->get('ufID'))) {
+    // Logged in user is making a request.
+    if (empty($sess->get('lastAccess')) || (time() - $sess->get('lastAccess')) >= 60) {
+      // Once a minute, update the when_last_accessed field
+      CRM_Standaloneusers_BAO_User::updateLastAccessed();
+    }
+  }
 }
 
 /**
diff --git a/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/Login.tpl b/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/Login.tpl
index 4dc29936751e69f45f62045ef5673a8eaa37487f..ac40561086e98e0c755d21b99651c162ca5e5c36 100644
--- a/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/Login.tpl
+++ b/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/Login.tpl
@@ -1,350 +1,66 @@
-<style>
-{literal}
-/***Structure****
-    Variables (comment out your subtheme)
-        - Finsbury Park
-        - Jerry Seinfeld
-        - Shoreditch (soon)
-        - Aah (soon)
-    Resets
-    Base
-****************/
-
-/***************
-    Variables
-****************/
-
-/* Finsbury Park
-
-:root {
-    --roundness: 0.25rem;
-    --font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans, Ubuntu,Cantarell,"Helvetica Neue",Helvetica,Arial,sans-serif,"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
-    --text-colour: #000;
-    --text-size: 0.9rem;
-    --error-colour: #aa0c0c;
-    --label-colour: #000;
-    --background-colour: #ededed;
-    --box-border: 1px #cdcdcd solid;
-    --box-padding: 2rem 1.75rem;
-    --box-shadow: none;
-    --box-roundness: 0.25rem;
-    --box-background: #fff;
-    --input-border: 1px solid #ccc;
-    --input-padding: 0.5rem;
-    --input-shadow: inset 0 1px 1px rgba(0,0,0,.075);
-    --button-border: 1px solid #bbb;
-    --button-shadow: 0 1px 2px rgba(0,0,0,0.05);
-    --button-padding: 5px 15px;
-    --button-text-colour: #3e3e3e;
-    --button-background: #f0f0f0;
-}
-
-/* Shoreditch
-
-:root {
-    --roundness: 2px;
-    --font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
-    --text-colour: #232429;
-    --text-size: 0.9rem;
-    --error-colour: #cf3458;
-    --label-colour: #464354;
-    --background-colour: #f3f6f7;
-    --box-border: 0 transparent solid;
-    --box-padding: 20px;
-    --box-shadow: 0 3px 18px 0 rgba(48,40,40,0.25);
-    --box-roundness: 2px;
-    --box-background: #fff;
-    --input-border: 1px solid #c2cfd8;
-    --input-padding: 5px 10px;
-    --input-shadow: inset 0 0 3px 0 rgba(0,0,0,0.2);
-    --button-border: 0 solid transparent;
-    --button-shadow: none;
-    --button-padding: 8px 28px;
-    --button-text-colour: #fff;
-    --button-background: #0071bd;
-}
-
-/* Aah */
-
-:root {
-    --roundness: 3px;
-    --font-family: Lato,Helvetica,Arial,sans-serif;
-    --text-colour: #222;
-    --text-size: 0.9rem;
-    --error-colour: #a00;
-    --warning-colour: #fbb862;
-    --success-colour: #86c66c;
-    --label-colour: #464354;
-    --background-colour: rgb(242,242,237);
-    --box-border: 0 transparent solid;
-    --box-padding: 1.6rem;
-    --box-shadow: none;
-    --box-roundness: 0;
-    --box-background: #fff;
-    --input-border: 1px solid rgba(0,0,0,.2);
-    --input-padding: 5px 10px;
-    --input-shadow: inset 0 0 3px 0 rgba(0,0,0,0.2);
-    --button-border: 0 solid transparent;
-    --button-shadow: 0 0 6px rgba(0,0,0,.2);
-    --button-padding: .4rem 1.6rem;
-    --button-text-colour: #fff;
-    --button-background: #2c98ed;
-    --button-text-shadow: none;
-}
-
-/* Ffresh
-
-:root {
-    --roundness: 2rem;
-    --font-family: Lato,Helvetica,Arial,sans-serif;
-    --text-colour: #222;
-    --text-size: 1rem;
-    --error-colour: #a00;
-    --label-colour: #464354;
-    --background-colour: #2c98ed;
-    --box-border: 0 transparent solid;
-    --box-padding: 1.6rem;
-    --box-shadow: 0 0 10px 0 rgba(0,0,0,0.2);
-    --box-roundness: 1.75rem;
-    --box-background: #fff;
-    --input-border: 2px solid #2c98ed;
-    --input-padding: 0.75rem;
-    --input-shadow: none;
-    --button-border: 0 solid transparent;
-    --button-shadow: none;
-    --button-padding: 0.75rem 2rem;
-    --button-text-colour: #fff;
-    --button-background: #2c98ed;
-}
-
-/***************
-    Base
-****************/
-
-body {
-    background-color: var(--background-colour);
-    font-family: var(--font-family);
-    color: var(--text-colour);
-    font-size: var(--text-size);
-}
-#crm-container.standalone-entry * {
-    box-sizing: border-box;
-}
-a {
-    text-decoration: none;
-    font-size: 90%;
-}
-a:hover, a:focus {
-    text-decoration: underline;
-}
-.flex {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-}
-
-/***************
-    UI Elements
-****************/
-
-#crm-container.standalone-entry .mid-block {
-    margin: 0;
-    background-color: var(--box-background);
-    border: var(--box-border);
-    border-radius: var(--box-roundness);
-    padding: var(--box-padding);
-    box-shadow: var(--box-shadow);
-}
-#crm-container.standalone-entry img {
-    width: 100%;
-    max-width: 400px;
-    margin-bottom: 2rem;
-}
-#crm-container.standalone-entry label {
-    display: inline-block;
-    max-width: 100%;
-    margin-bottom: 5px;
-    font-weight: 700;
-    color: var(--label-colour);
-}
-#crm-container.standalone-entry input {
-    display: block;
-    width: 100%;
-    color: #555;
-    background-color: #fff;
-    background-image: none;
-    margin-bottom: 0.75rem;
-    padding: var(--input-padding);
-    font-size: var(--text-size);
-    border-radius: var(--roundness);
-    border: var(--input-border);
-    box-shadow: var(--input-shadow);
-}
-#crm-container.standalone-entry input:focus,
-#crm-container.standalone-entry input:focus-visible {
-    border: 1px solid #66afe9;
-}
-#crm-container.standalone-entry .btn {
-    display: inline-block;
-    margin:0;
-    text-align: center;
-    vertical-align: middle;
-    touch-action: manipulation;
-    cursor: pointer;
-    background-image: none;
-    font-size: var(--text-size);
-    background-color: var(--button-background);
-    color: var(--button-text-colour);
-    border: var(--button-border);
-    padding: var(--button-padding);
-    border-radius: var(--roundness);
-    font-family: var(--font-family);
-    box-shadow: var(--button-shadow);
-    text-shadow: var(--button-text-shadow);
-}
-#crm-container.standalone-entry .btn:hover,
-#crm-container.standalone-entry .btn:focus {
-    filter: brightness(80%);
-}
-#crm-container.standalone-entry .float-right {
-    float: right;
-    font-size: 90%;
-    margin-top: 0.2rem;
-}
-#crm-container.standalone-entry .form-alert {
-    color: var(--error-colour);
-    margin: 1rem 0;
-}
-
-
-#loggedOutNotice {
-  text-align: center;
-  font-weight: bold;
-  padding: var(--box-padding);
-  background-color: var(--success-colour);
-  margin: 1rem 0;
-  border-radius: var(--box-roundness);
-}
-#anonAccessDenied {
-  text-align: center;
-  font-weight: bold;
-  padding: var(--box-padding);
-  background-color: var(--warning-colour);
-  margin: 1rem 0;
-  border-radius: var(--box-roundness);
-}
-
-@media  (min-width: 768px) {
-    #crm-container.standalone-entry {
-        width: 60vw;
-        margin: 20vh auto 0;
-    }
-}
-@media  (min-width: 960px) {
-    #crm-container.standalone-entry {
-        width: 30vw;
-    }
-}
-{/literal}
-</style>
-
-<div id="crm-container" class="crm-container standalone-entry">
-  <div class="mid-block">
-    <img src="{$logoUrl}" alt="logo for CiviCRM, with an intersecting blue and green triangle">
-    <div class="message info" style="display:none;" id="loggedOutNotice">{ts}You have been logged out.{/ts}</div>
-    <div class="message warning" style="display:none;" id="anonAccessDenied">{ts}You may need to login to access that.{/ts}</div>
+<div class="standalone-auth-form">
+  <div class="standalone-auth-box">
     <form>
-      <div>
+      <img class="crm-logo" src="{$logoUrl}" alt="logo for CiviCRM, with an intersecting blue and green triangle">
+      {if $justLoggedOut}<div class="help message info">{ts}You have been logged out.{/ts}</div>{/if}
+      {if $anonAccessDenied}<div class="help message warning">{ts}You do not have permission to access that, you may
+        need to login.{/ts}</div>{/if}
+      <div class="input-wrapper">
         <label for="usernameInput" name=username class="form-label">Username</label>
-        <input type="text" class="form-control" id="usernameInput" >
+        <input type="text" class="form-control" id="usernameInput">
       </div>
-      <div>
+      <div class="input-wrapper">
         <label for="passwordInput" class="form-label">Password</label>
         <input type="password" class="form-control" id="passwordInput">
       </div>
       <div id="error" style="display:none;" class="form-alert">Your username and password do not match</div>
-      <div class="flex">
-      <a href="request.html">Forgotten password?</a>
-      <button id="loginSubmit" type="submit" class="btn btn-secondary crm-button">Submit</button>
+      <div class="login-or-forgot">
+        <a href="{$forgottenPasswordURL}">Forgotten password?</a>
+        <button id="loginSubmit" type="submit" class="btn btn-secondary crm-button">Submit</button>
       </div>
     </form>
   </div>
 </div>
+
 {literal}
 <script>
-document.addEventListener('DOMContentLoaded', () => {
-
-  const submitBtn = document.getElementById('loginSubmit'),
-        username = document.getElementById('usernameInput'),
-        password = document.getElementById('passwordInput'),
-        loggedOutNotice = document.getElementById('loggedOutNotice');
-
-  // Special messages.
-  if (window.location.search === '?justLoggedOut') {
-    loggedOutNotice.style.display = '';
-    console.log("successful logout");
-  }
-  else if (window.location.search === '?anonAccessDenied') {
-    anonAccessDenied.style.display = '';
-  }
-
-  submitBtn.addEventListener('click', async e => {
-    e.preventDefault();
-
-    const response = await fetch(CRM.url("civicrm/authx/login"), {
-      method: 'POST',
-      headers: {
-        'Content-Type': 'application/x-www-form-urlencoded'
-      },
-      //body: '_authx=Basic ' + btoa(encodeURIComponent(`${username.value}:${password.value}`))
-      body: '_authx=Basic ' + encodeURIComponent(btoa(`${username.value}:${password.value}`))
-    });
-    if (!response.ok) {
-      const contentType = response.headers.get("content-type");
-      let msg = 'Unexpected error';
-      if (!contentType || !contentType.includes("application/json")) {
-        // Non-JSON response; an error.
-        msg = await response.text();
-        // Example error string: 'HTTP 401 Invalid credential'
-        msg = msg.replace(/^HTTP \d{3} /,'');
+  document.addEventListener('DOMContentLoaded', () => {
+
+    const submitBtn = document.getElementById('loginSubmit'),
+      username = document.getElementById('usernameInput'),
+      password = document.getElementById('passwordInput');
+
+    submitBtn.addEventListener('click', async e => {
+      e.preventDefault();
+
+      const response = await fetch(CRM.url("civicrm/authx/login"), {
+        method: 'POST',
+        headers: {
+          'Content-Type': 'application/x-www-form-urlencoded'
+        },
+        //body: '_authx=Basic ' + btoa(encodeURIComponent(`${username.value}:${password.value}`))
+        body: '_authx=Basic ' + encodeURIComponent(btoa(`${username.value}:${password.value}`))
+      });
+      if (!response.ok) {
+        const contentType = response.headers.get("content-type");
+        let msg = 'Unexpected error';
+        if (!contentType || !contentType.includes("application/json")) {
+          // Non-JSON response; an error.
+          msg = await response.text();
+          // Example error string: 'HTTP 401 Invalid credential'
+          msg = msg.replace(/^HTTP \d{3} /, '');
+        }
+        else {
+          let responseObj = await response.json();
+          console.log("responseObj with error", responseObj);
+        }
+        alert(`Sorry, that didn‘t work. ${msg}`);
       }
       else {
-        let responseObj = await response.json();
-        console.log("responseObj with error", responseObj);
+        // OK response (it includes contact_id and user_id in JSON, but we don't need those)
+        window.location = '/civicrm/';
       }
-      alert(`Sorry, that didn‘t work. ${msg}`);
-    }
-    else {
-      // OK response (it includes contact_id and user_id in JSON, but we don't need those)
-      window.location = '/civicrm/';
-    }
+    });
   });
-});
-/* (function($) { */
-/*     var request = new XMLHttpRequest(); */
-/*     request.open("POST", ); */
-/*     request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); */
-/*     request.responseType = "json"; */
-/*     request.onreadystatechange = function() { */
-/*       console.log(request.response); */
-/*       if (request.readyState == 4) { */
-/*         if (request.status == 200) { */
-/*           if (request.response.user_id > 0) { */
-/*             window.location.href = "/civicrm?reset=1"; */
-/*           } else { */
-/*             // probably won't ever be here? */
-/*             alert("Success but fail because ???"); */
-/*             console.log(request.response); */
-/*           } */
-/*         } else { */
-/*           // todo - send errors back to the form via whatever forms framework we'll be using */
-/*           alert("Fail with status code " + request.status + " " + request.statusText); */
-/*           console.log(request.response); */
-/*         } */
-/*       } */
-/*     }; */
-/*     var data = '_authx=Basic ' + btoa(encodeURIComponent($('#username').val()) + ':' + $('#password').val()); */
-/*     request.send(data); */
-/*   }); */
 </script>
 {/literal}
diff --git a/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/ResetPassword.tpl b/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/ResetPassword.tpl
index 5a594b33567974e2d323411591e9cd16e517ecca..243d852fe6243e781b4f8ab4357ca59f04d61fb4 100644
--- a/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/ResetPassword.tpl
+++ b/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/ResetPassword.tpl
@@ -1,5 +1,10 @@
-<crm-angular-js modules="crmResetPassword">
-  <crm-reset-password
-    hibp="{$hibp|escape}"
-    token="{$token|escape}" ></crm-reset-password>
-</crm-angular-js>
+<div class="standalone-auth-form">
+  <div class="standalone-auth-box">
+    <img class="crm-logo" src="{$logoUrl}" alt="logo for CiviCRM, with an intersecting blue and green triangle">
+    <crm-angular-js modules="crmResetPassword">
+    <crm-reset-password
+        hibp="{$hibp|escape}"
+        token="{$token|escape}" ></crm-reset-password>
+    </crm-angular-js>
+  </div>
+</div>
diff --git a/civicrm/ext/standaloneusers/tests/phpunit/Civi/Standalone/SecurityTest.php b/civicrm/ext/standaloneusers/tests/phpunit/Civi/Standalone/SecurityTest.php
index d22c669a229d81213cd9636c07d7125e1267de77..a63ec2c98638b24fff51747aa28a313cf0d5ef3b 100644
--- a/civicrm/ext/standaloneusers/tests/phpunit/Civi/Standalone/SecurityTest.php
+++ b/civicrm/ext/standaloneusers/tests/phpunit/Civi/Standalone/SecurityTest.php
@@ -426,6 +426,12 @@ class SecurityTest extends \PHPUnit\Framework\TestCase implements EndToEndInterf
     $this->assertEquals('Password reset link for Demonstrators Anonymous', $result['subject']);
   }
 
+  public function testGetUserIDFromUsername() {
+    [$contactID, $adminUserID, $security] = $this->createFixtureContactAndUser();
+    $this->assertEquals($adminUserID, $security->getUserIDFromUsername('user_one'), 'Should return admin user ID');
+    $this->assertNull($security->getUserIDFromUsername('user_unknown'), 'Should return NULL for non-existent user');
+  }
+
   protected function deleteStuffWeMade() {
     User::delete(FALSE)->addWhere('username', '=', 'testuser1')->execute();
   }
diff --git a/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/Role.xml b/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/Role.xml
index 4c0e0d0abcc92ca379f19b0991cb1ba07f9e53aa..a437a1c45bd0c126d9200fb2b1caca3589110cdc 100644
--- a/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/Role.xml
+++ b/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/Role.xml
@@ -7,6 +7,11 @@
   <comment>A Role holds a set of permissions. Roles may be granted to Users.</comment>
   <log>true</log>
 
+  <paths>
+    <add>civicrm/admin/role</add>
+    <update>civicrm/admin/role#?Role1=[id]</update>
+  </paths>
+
   <field>
     <name>id</name>
     <type>int unsigned</type>
@@ -63,8 +68,10 @@
     <comment>Only active roles grant permissions</comment>
     <type>boolean</type>
     <default>1</default>
+    <required>true</required>
     <html>
       <type>CheckBox</type>
+      <label>Enabled</label>
     </html>
   </field>
 
diff --git a/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.xml b/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.xml
index 4b2e5be0ea2f8987e474e5f514f955797e7dd89b..1fc8cbcb35be823c5101d46d5c4460488f3453f8 100644
--- a/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.xml
+++ b/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.xml
@@ -10,8 +10,8 @@
   <descriptionField>email</descriptionField>
   <log>true</log>
   <paths>
-    <add>civicrm/user</add>
-    <update>civicrm/user/#?User1=[id]</update>
+    <add>civicrm/admin/user</add>
+    <update>civicrm/admin/user/#?User1=[id]</update>
   </paths>
 
   <field>
@@ -163,6 +163,7 @@
     <required>true</required>
     <html>
       <type>CheckBox</type>
+      <label>Enabled</label>
     </html>
   </field>
 
@@ -172,8 +173,11 @@
     <length>32</length>
     <required>false</required>
     <comment>User's timezone</comment>
+    <pseudoconstant>
+      <callback>CRM_Standaloneusers_BAO_User::getTimeZones</callback>
+    </pseudoconstant>
     <html>
-      <type>Text</type>
+      <type>Select</type>
     </html>
   </field>
 
@@ -183,6 +187,12 @@
     <type>varchar</type>
     <length>5</length>
     <comment>UI language preferred by the given user/contact</comment>
+    <pseudoconstant>
+      <callback>CRM_Standaloneusers_BAO_User::getPreferredLanguages</callback>
+    </pseudoconstant>
+    <html>
+      <type>Select</type>
+    </html>
     <add>2.1</add>
   </field>
   <index>
diff --git a/civicrm/ext/user_dashboard/info.xml b/civicrm/ext/user_dashboard/info.xml
index 3a6b8f5c8f67f79e6f2d6c481ca7b4b0a6d2021d..db991e67857c33b141d62f95586bb4ef856dbda2 100644
--- a/civicrm/ext/user_dashboard/info.xml
+++ b/civicrm/ext/user_dashboard/info.xml
@@ -14,11 +14,11 @@
     <url desc="Support">http://FIXME</url>
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
-  <releaseDate>2023-12-30</releaseDate>
-  <version>5.68.1</version>
+  <releaseDate>2024-01-03</releaseDate>
+  <version>5.69.0</version>
   <develStage>alpha</develStage>
   <compatibility>
-    <ver>5.68</ver>
+    <ver>5.69</ver>
   </compatibility>
   <comments>This extension is still experimental</comments>
   <classloader>
diff --git a/civicrm/extension-compatibility.json b/civicrm/extension-compatibility.json
index 60252782c83cc56e43c1f91e9edc6285d76023d2..41a2ce49450166e700858f5a09c227c28cb37135 100644
--- a/civicrm/extension-compatibility.json
+++ b/civicrm/extension-compatibility.json
@@ -1,4 +1,9 @@
 {
+  "org.civicrm.angularex": {
+    "obsolete": "5.69",
+    "disable": true,
+    "uninstall": true
+  },
   "org.civicrm.afform-gui": {
     "obsolete": "5.35",
     "force-uninstall": true,
diff --git a/civicrm/js/Common.js b/civicrm/js/Common.js
index 852540fab88815ef2064782075477a7b36fab0f8..1b5c08f9d1a661150cf293996e30e30982c496cf 100644
--- a/civicrm/js/Common.js
+++ b/civicrm/js/Common.js
@@ -1706,7 +1706,7 @@ if (!CRM.vars) CRM.vars = {};
         e.stopPropagation();
       })
       // Handle accordions
-      .on('click.crmAccordions', '.crm-accordion-header, .crm-collapsible .collapsible-title', function (e) {
+      .on('click.crmAccordions', 'div.crm-accordion-header, fieldset.crm-accordion-header, .crm-collapsible .collapsible-title', function (e) {
         var action = 'open';
         if ($(this).parent().hasClass('collapsed')) {
           $(this).next().css('display', 'none').slideDown(200);
diff --git a/civicrm/js/version.json b/civicrm/js/version.json
new file mode 100644
index 0000000000000000000000000000000000000000..756158becf86caabf93ff214ef9bd49a8de9da56
--- /dev/null
+++ b/civicrm/js/version.json
@@ -0,0 +1 @@
+"5.69.0"\n
\ No newline at end of file
diff --git a/civicrm/managed/contactSummary/SavedSearch_Contact_Summary_Relationships.mgd.php b/civicrm/managed/contactSummary/SavedSearch_Contact_Summary_Relationships.mgd.php
index c2739138b75f46e0f0f4140bf7b1bd57767da180..789b3eefe4cc86b0110b205113b78139edd780a9 100644
--- a/civicrm/managed/contactSummary/SavedSearch_Contact_Summary_Relationships.mgd.php
+++ b/civicrm/managed/contactSummary/SavedSearch_Contact_Summary_Relationships.mgd.php
@@ -45,7 +45,9 @@ return [
             'is_active',
           ],
           'orderBy' => [],
-          'where' => [],
+          'where' => [
+            ['RelationshipCache_Contact_far_contact_id_01.is_deleted', '=', FALSE],
+          ],
           'groupBy' => [],
           'join' => $joins,
           'having' => [],
diff --git a/civicrm/package.json b/civicrm/package.json
index 887aa9f7d976df1572f8d7d574b7b5f2dd043e3d..afd8c388310979d4f70e09569578676353e69ed8 100644
--- a/civicrm/package.json
+++ b/civicrm/package.json
@@ -14,8 +14,7 @@
     "jasmine-core": "~3.3.0",
     "karma": "^6.3.16",
     "karma-jasmine": "~2.0.1",
-    "karma-ng-html2js-preprocessor": "^1.0.0",
-    "karma-phantomjs-launcher": "^1.0.4"
+    "karma-ng-html2js-preprocessor": "^1.0.0"
   },
   "scripts": {
     "postinstall": "bash tools/scripts/npm/postinstall.sh",
diff --git a/civicrm/packages/snappy/src/Knp/Snappy/AbstractGenerator.php b/civicrm/packages/snappy/src/Knp/Snappy/AbstractGenerator.php
index 8d034f723a87a6df1a976b17e882a391ddac658e..64a5503ad865d411d8fdc164c543b851b236f000 100644
--- a/civicrm/packages/snappy/src/Knp/Snappy/AbstractGenerator.php
+++ b/civicrm/packages/snappy/src/Knp/Snappy/AbstractGenerator.php
@@ -421,6 +421,10 @@ abstract class AbstractGenerator implements GeneratorInterface
      */
     protected function prepareOutput($filename, $overwrite)
     {
+        if (\strpos($filename, 'phar://') === 0) {
+            throw new InvalidArgumentException('The output file cannot be a phar archive.');
+        }
+
         $directory = dirname($filename);
 
         if ($this->fileExists($filename)) {
diff --git a/civicrm/release-notes.md b/civicrm/release-notes.md
index af8e8b6e15ede14cd9ae9791daa6c7cf7bf97d98..2ab6b7140e89f5bc0480bd58276f9555f32f5dc5 100644
--- a/civicrm/release-notes.md
+++ b/civicrm/release-notes.md
@@ -15,14 +15,16 @@ Other resources for identifying changes are:
     * https://github.com/civicrm/civicrm-joomla
     * https://github.com/civicrm/civicrm-wordpress
 
-## CiviCRM 5.68.1
+## CiviCRM 5.69.0
 
-Released December 30, 2023
+Released January 3, 2024
 
-- **[Synopsis](release-notes/5.68.1.md#synopsis)**
-- **[Bugs resolved](release-notes/5.68.1.md#bugs)**
-- **[Credits](release-notes/5.68.1.md#credits)**
-- **[Feedback](release-notes/5.68.1.md#feedback)**
+- **[Synopsis](release-notes/5.69.0.md#synopsis)**
+- **[Features](release-notes/5.69.0.md#features)**
+- **[Bugs resolved](release-notes/5.69.0.md#bugs)**
+- **[Miscellany](release-notes/5.69.0.md#misc)**
+- **[Credits](release-notes/5.69.0.md#credits)**
+- **[Feedback](release-notes/5.69.0.md#feedback)**
 
 ## CiviCRM 5.68.0
 
diff --git a/civicrm/release-notes/5.68.1.md b/civicrm/release-notes/5.68.1.md
deleted file mode 100644
index 1350b0f8c6f5d869ec55dc50bb96e84398ece15f..0000000000000000000000000000000000000000
--- a/civicrm/release-notes/5.68.1.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# CiviCRM 5.68.1
-
-Released December 30, 2023
-
-- **[Synopsis](#synopsis)**
-- **[Bugs resolved](#bugs)**
-- **[Credits](#credits)**
-- **[Feedback](#feedback)**
-
-## <a name="synopsis"></a>Synopsis
-
-| *Does this version...?*                                         |          |
-| --------------------------------------------------------------- | -------- |
-| Change the database schema?                                     | no       |
-| Alter the API?                                                  | no       |
-| Require attention to configuration options?                     | no       |
-| Fix problems installing or upgrading to a previous version?     | no       |
-| Introduce features?                                             | no       |
-| **Fix bugs?**                                                   | **yes**  |
-| Fix security vulnerabilities?                                   | no       |
-
-## <a name="bugs"></a>Bugs resolved
-
-* **_CiviEvent_: iCalendar fails to generate due to timezone error ([#28709](https://github.com/civicrm/civicrm-core/pull/28709))**
-* **_Edit Contact_: Fix new warning about "VALUES_SEPARATOR" ([#28611](https://github.com/civicrm/civicrm-core/pull/28611))**
-* **_View Contact_: Notes do not display correctly ([dev/core#4852](https://lab.civicrm.org/dev/core/-/issues/4852): [#28614](https://github.com/civicrm/civicrm-core/pull/28614))**
-* **_dompdf_: Update to v2.0.2 to v2.0.4 (with dependencies) ([#28643](https://github.com/civicrm/civicrm-core/pull/28643))**
-
-## <a name="credits"></a>Credits
-
-This release was developed by the following authors and reviewers:
-
-Wikimedia Foundation - Eileen McNaughton; Systopia - Johannes; Megaphone Technology
-Consulting - Jon Goldberg; JMA Consulting - Seamus Lee; Dave D; CiviCRM - Tim Otten,
-Coleman Watts
-
-## <a name="feedback"></a>Feedback
-
-These release notes are edited by Tim Otten and Andie Hunt.  If you'd like to
-provide feedback on them, please login to https://chat.civicrm.org/civicrm and
-contact `@agh1`.
diff --git a/civicrm/release-notes/5.69.0.md b/civicrm/release-notes/5.69.0.md
new file mode 100644
index 0000000000000000000000000000000000000000..61e95cafa75b8a2e02f135f3e48931c54498d67b
--- /dev/null
+++ b/civicrm/release-notes/5.69.0.md
@@ -0,0 +1,1500 @@
+# CiviCRM 5.69.0
+
+Released January 3, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Security advisories](#security)**
+- **[Features](#features)**
+- **[Bugs resolved](#bugs)**
+- **[Miscellany](#misc)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## <a name="synopsis"></a>Synopsis
+
+| *Does this version...?*                                         |         |
+|:--------------------------------------------------------------- |:-------:|
+| Fix security vulnerabilities?                                   |   no    |
+| **Change the database schema?**                                 | **yes** |
+| **Alter the API?**                                              | **yes** |
+| **Require attention to configuration options?**                 | **yes** |
+| **Fix problems installing or upgrading to a previous version?** | **yes** |
+| **Introduce features?**                                         | **yes** |
+| **Fix bugs?**                                                   | **yes** |
+
+## <a name="features"></a>Features
+
+### Core CiviCRM
+
+- **Add system check encouraging Smarty3
+  ([28521](https://github.com/civicrm/civicrm-core/pull/28521))**
+
+  Adds a system check encouraging Smarty3.
+
+- **Afform: Support conditional logic
+  ([24699](https://github.com/civicrm/civicrm-core/pull/24699))**
+
+  Adds client-side support for conditional logic to hide fields and containers
+  based on rules using and/or/not logic.
+
+- **Afform - Add shortcuts to Edit Forms and related Searchs on Search Forms
+  ([dev/core#4786](https://lab.civicrm.org/dev/core/-/issues/4786):
+  [28206](https://github.com/civicrm/civicrm-core/pull/28206))**
+
+  Adds shortcuts (for those with permission) to edit afforms and related
+  searches on afform search forms.
+
+- **Improve FormBuilder handling of non logged in flows
+  ([dev/core#4232](https://lab.civicrm.org/dev/core/-/issues/4232):
+  [27107](https://github.com/civicrm/civicrm-core/pull/27107))**
+
+  Allows afforms that can save the data only as submission, manually
+  processing of afform submissions and the ability to confirm submission via
+  Email.
+
+- **Add Afform field for input type `Url`
+  ([28024](https://github.com/civicrm/civicrm-core/pull/28024))**
+
+  Adds an Afform field input type for "Url".
+
+- **Afform - ability to set fixed or now date defaults
+  ([28014](https://github.com/civicrm/civicrm-core/pull/28014))**
+
+  Adds the ability to set date defaults to fixed or now.
+
+- **Afform - improve loading performance
+  ([27783](https://github.com/civicrm/civicrm-core/pull/27783))**
+
+  Improves performance when loading afforms.
+
+- **Afform - improve display of error messages
+  ([28021](https://github.com/civicrm/civicrm-core/pull/28021))**
+
+  Improves the display of error messages on afforms.
+
+- **APIv4 - Pass form values to autocomplete field
+  ([28452](https://github.com/civicrm/civicrm-core/pull/28452))**
+
+  Makes Afform APIv4 autocomplete field user selections available on the form.
+
+- **Formbuilder: support rows and columns values for Note (textarea) custom
+  field type ([28388](https://github.com/civicrm/civicrm-core/pull/28388))**
+
+  Displaying a custom field of type Note in Form Builder now shows the textarea
+  tag with rows and cols set to the custom field definition set by the admin for
+  that field
+
+- **ADMIN_UI: default checkbox
+  ([dev/core#4734](https://lab.civicrm.org/dev/core/-/issues/4734):
+  [28001](https://github.com/civicrm/civicrm-core/pull/28001))**
+
+  Adds row checkboxes and the Actions menu for AdminUI screens. Standardises
+  edit/disable/delete/etc actions in a menu instead of buttons.
+
+- **Added Export Mapping search kit UI
+  ([28509](https://github.com/civicrm/civicrm-core/pull/28509))**
+
+  Moves the Import/Export mappings page to a search kit user interface.
+
+- **Add searchkit and afform display
+  ([28484](https://github.com/civicrm/civicrm-core/pull/28484) and
+  [28472](https://github.com/civicrm/civicrm-core/pull/28472))**
+
+  Moves the 'Headers Footers and Automated Messages' page to use a search
+  kit/afform user interface.
+
+- **Create Formbuilder page to view Queue status
+  ([dev/core#4815](https://lab.civicrm.org/dev/core/-/issues/4815):
+  [28348](https://github.com/civicrm/civicrm-core/pull/28348))**
+
+  Adds a page powered by afform/searchkit to view queue status.
+
+- **SearchUI - Updates to Label Format display
+  ([28546](https://github.com/civicrm/civicrm-core/pull/28546),
+  [28513](https://github.com/civicrm/civicrm-core/pull/28513) and
+  [28545](https://github.com/civicrm/civicrm-core/pull/28545))**
+
+  Switches the Label format screen to use a searchkit ui.
+
+- **Add support for spreadsheet format in imports
+  ([28495](https://github.com/civicrm/civicrm-core/pull/28495))**
+
+  Adds support for spreadsheet formats ods and xlsx in imports.
+
+- **make Mapping entity available on searchkit
+  ([28508](https://github.com/civicrm/civicrm-core/pull/28508) and
+  [28534](https://github.com/civicrm/civicrm-core/pull/28534))**
+
+  Adds Mapping entity to SearchKit.
+
+- **Adding PreferencesDate API
+  ([28482](https://github.com/civicrm/civicrm-core/pull/28482))**
+
+  Adds APIv4 and searchkit support for `PreferencesDate`.
+
+- **Changed the URL path for DatePreference screen
+  ([28500](https://github.com/civicrm/civicrm-core/pull/28500))**
+
+  Changes the URL path for the DatePreference screen to play nicely with
+  searchkit.
+
+- **Added DatePreference admin UI
+  ([28483](https://github.com/civicrm/civicrm-core/pull/28483))**
+
+  Transitions Date Preference admin user interface to an afform/searchkit
+  interface.
+
+- **Adds an accessible accordion, applies to news-feed dashlet
+  ([28415](https://github.com/civicrm/civicrm-core/pull/28415))**
+
+  Adds an accessible accordion and starts the process of updating the user
+  interface to use it by updating the news-feed dashlet.
+
+- **Applies accessible accordion to SearchKit, adds fallbacks
+  ([28441](https://github.com/civicrm/civicrm-core/pull/28441),
+  [28449](https://github.com/civicrm/civicrm-core/pull/28449),
+  [28606](https://github.com/civicrm/civicrm-core/pull/28606),
+  [28781](https://github.com/civicrm/civicrm-core/pull/28781),
+  [28541](https://github.com/civicrm/civicrm-core/pull/28541),
+  [28421](https://github.com/civicrm/civicrm-core/pull/28421),
+  [28665](https://github.com/civicrm/civicrm-core/pull/28665),
+  [28661](https://github.com/civicrm/civicrm-core/pull/28661),
+  [28430](https://github.com/civicrm/civicrm-core/pull/28430) and
+  [28418](https://github.com/civicrm/civicrm-core/pull/28418))**
+
+  User interface changes that makes the SearchKit accordions more accessible.
+
+- **Add userEnteredText as generic workflow template smarty variable
+  ([27162](https://github.com/civicrm/civicrm-core/pull/27162))**
+
+  Makes userEnteredText a property across all WorkflowMessages - with it
+  outputting the smarty variable user_text.
+
+- **convert .aff.json to .aff.php and add ts()
+  ([28499](https://github.com/civicrm/civicrm-core/pull/28499))**
+
+  Makes afform file titles translatable.
+
+- **SearchKit - Add inputMode setting to allow clauses to reference column
+  values ([28112](https://github.com/civicrm/civicrm-core/pull/28112))**
+
+  Adds more power to SearchKit by allowing clauses to reference fields.
+
+- **APIv4 - Add GROUP_FIRST aggregate function
+  ([28164](https://github.com/civicrm/civicrm-core/pull/28164))**
+
+  Adds a useful new SQL function (GROUP_FIRST aggregate function) to APIv4, and
+  exposes it to SearchKit.
+
+- **SearchKit - Hide empty menus
+  ([28454](https://github.com/civicrm/civicrm-core/pull/28454))**
+
+  If a user doesn't have access to any actions, hides the actions menu.
+
+- **Add CRM_Utils_CacheWrapper to all caches
+  ([28428](https://github.com/civicrm/civicrm-core/pull/28428))**
+
+  Wraps all caches and dispatches a 'civi.cache.clear' event when deleting items
+  from the cache.
+
+- **setup: Allow language selection regardless of whether languages are
+  available ([28139](https://github.com/civicrm/civicrm-core/pull/28139),
+  [28209](https://github.com/civicrm/civicrm-core/pull/28209) and
+  [28179](https://github.com/civicrm/civicrm-core/pull/28179))**
+
+  Allow language selection regardless of whether the files are downloaded.
+
+- **Setup: able to download translation files automatically
+  ([28061](https://github.com/civicrm/civicrm-core/pull/28061) and
+  [28169](https://github.com/civicrm/civicrm-core/pull/28169))**
+
+  Makes it so the CiviCRM setup utility downloads the translation files
+  automatically, making the download of the l10n civicrm files an obsolete step,
+  and adds a system check for multiple l10n dirs.
+
+- **Update language download during install to use existing folder if present
+  ([28425](https://github.com/civicrm/civicrm-core/pull/28425))**
+
+  Use language folder if present instead of always downloading.
+
+- **Log extension download errors
+  ([28176](https://github.com/civicrm/civicrm-core/pull/28176))**
+
+  Improves logs by logging extension download errors.
+
+- **Include separator text in details send to log
+  ([28034](https://github.com/civicrm/civicrm-core/pull/28034))**
+
+  Improves logging by adding separator text for queue specific logs.
+
+- **Add missing Zambia provinces
+  ([28025](https://github.com/civicrm/civicrm-core/pull/28025))**
+
+  Adds missing Zambia provinces.
+
+- **Add system check for if people disabled default location type
+  ([28330](https://github.com/civicrm/civicrm-core/pull/28330))**
+
+  Disabling the default location type causes problems, this adds a system check
+  to let the user know if it has been disabled.
+
+- **Add suffix to sort name
+  ([28393](https://github.com/civicrm/civicrm-core/pull/28393))**
+
+  Adds suffix to default sort name configuration.
+
+### CiviCase
+
+- **Case activity filter causes performance headache for non-superusers
+  ([dev/core#4822](https://lab.civicrm.org/dev/core/-/issues/4822):
+  [28383](https://github.com/civicrm/civicrm-core/pull/28383))**
+
+  Performance improvement when searching case activities.
+
+### CiviContribute
+
+- **Add Premium Product v4 api
+  ([28261](https://github.com/civicrm/civicrm-core/pull/28261))**
+
+  Adds `Premium` entity to APIv4.
+
+- **Premiums metadata
+  ([28544](https://github.com/civicrm/civicrm-core/pull/28544))**
+
+  Set up Premiums metadata to make it compatible with searchkit conversion.
+
+- **Blank out text version of online_contribution_receipt
+  ([28268](https://github.com/civicrm/civicrm-core/pull/28268))**
+
+  For new installs blank out text version of the `online_contribution_receipt`
+  system workflow message template. When there is no text version of the
+  `online_contribution_receipt` one will be generated based on the html version.
+
+### CiviEvent
+
+- **Add option to control display of calendar links.
+  ([27768](https://github.com/civicrm/civicrm-core/pull/27768))**
+
+  Adds an option to control whether calendar links are shown or not.
+
+### CiviMail
+
+- **Add filter on archived in Mailing Summary report
+  ([28504](https://github.com/civicrm/civicrm-core/pull/28504))**
+
+  Adds a archive filter to the Mailing Summary report.
+
+- **APIv4 - Add is_draft field for mailings, fix test
+  ([28019](https://github.com/civicrm/civicrm-core/pull/28019) and
+  [28032](https://github.com/civicrm/civicrm-core/pull/28032))**
+
+  Adds an `is_draft` field for mailings.
+
+- **Schema - Add CiviMail field metadata
+  ([28017](https://github.com/civicrm/civicrm-core/pull/28017))**
+
+  Work toward converting the "Find Mailings" page to Searchkit/Afform.
+
+### CiviMember
+
+- **Add Membership log entity
+  ([28220](https://github.com/civicrm/civicrm-core/pull/28220))**
+
+  Adds a Membership log entity to APIv4.
+
+- **Add is_new as a field on membership api or possibly via membership_status
+  ([dev/core#4826](https://lab.civicrm.org/dev/core/-/issues/4826):
+  [28395](https://github.com/civicrm/civicrm-core/pull/28395))**
+
+  Adds `is_new` as a field on Membership status.
+
+- **Blank out membership_online_receipt - text version
+  ([28096](https://github.com/civicrm/civicrm-core/pull/28096))**
+
+  Blanks out the membership_online_receipt (for new installs) and generates a
+  text version based on the html version instead.
+
+### CiviSMS
+
+- **Add SMS provider API 4 Support
+  ([28510](https://github.com/civicrm/civicrm-core/pull/28510))**
+
+  Adds SMS provider support to APIv4.
+
+### Standalone Implementation
+
+- **Standalone language support (Work towards
+  [dev/core#4411](https://lab.civicrm.org/dev/core/-/issues/4411):
+  [28453](https://github.com/civicrm/civicrm-core/pull/28453) and
+  [28469](https://github.com/civicrm/civicrm-core/pull/28469))**
+
+  Adds the option to set a user language and if set that language is used for
+  the UI when the user logs in. Freezes the element for inherit CMS Language
+  under Administer > Localization > Languages, Currencies, Locations.
+
+- **Roles - Define default taxonomy (for standalone deployments)
+  ([dev/core#4466](https://lab.civicrm.org/dev/core/-/issues/4466):
+  [28413](https://github.com/civicrm/civicrm-core/pull/28413))**
+
+  Adds a staff role to the standalone CiviCRM. The staff role gets all
+  permissions except for certain administer permissions.
+
+- **Standalone - prevent users from deleting own user
+  ([28532](https://github.com/civicrm/civicrm-core/pull/28532))**
+
+  Prevents users from deleting their own user.
+
+- **Standalone mobile support
+  ([dev/core#4787](https://lab.civicrm.org/dev/core/-/issues/4787):
+  [28213](https://github.com/civicrm/civicrm-core/pull/28213))**
+
+  Adds viewport meta to improve mobile support for standalone sites.
+
+- **Standalone - Improve administer user screen
+  ([28528](https://github.com/civicrm/civicrm-core/pull/28528))**
+
+  Improvements to the Standalone administer user screen.
+
+- **Standalone - add name and delete en/disable actions for roles
+  ([28420](https://github.com/civicrm/civicrm-core/pull/28420))**
+
+  Adds the ability to enable/disable and delete roles.
+
+- **standalone: implement User fields when_last_accessed and when_updated
+  ([28440](https://github.com/civicrm/civicrm-core/pull/28440))**
+
+  Implements fields to track when users last accessed the site and when they
+  were last updated.
+
+- **Standalone - give admin role super permission
+  ([28447](https://github.com/civicrm/civicrm-core/pull/28447))**
+
+  Makes admin role a super user.
+
+- **Standalone - Add button to add user role Merging as it works and is a good
+  improvement! Thanks @wmortada  
+  ([28412](https://github.com/civicrm/civicrm-core/pull/28412))**
+
+  Improvements to the the user role screen.
+
+## WordPress Integration
+
+- **Full update of the CiviCRM WP-CLI command
+  ([309](https://github.com/civicrm/civicrm-wordpress/pull/309))**
+
+  Updates the wp cli command options.
+
+## <a name="bugs"></a>Bugs resolved
+
+### Core CiviCRM
+
+- **Upgrading to 5.66+ still has old copy of crm.menubar.js
+  ([dev/core#4754](https://lab.civicrm.org/dev/core/-/issues/4754):
+  [28033](https://github.com/civicrm/civicrm-core/pull/28033))**
+
+- **When importing/updating persons, taking over the address of another contact
+  does not work.
+  ([dev/core#4447](https://lab.civicrm.org/dev/core/-/issues/4447):
+  [28496](https://github.com/civicrm/civicrm-core/pull/28496))**
+
+- **Cannot clear country and state/province in contact summary address
+  ([dev/core#4702](https://lab.civicrm.org/dev/core/-/issues/4702):
+  [28115](https://github.com/civicrm/civicrm-core/pull/28115))**
+
+- **Angularjs.bootstrap behaves differently when opening in a popup on older
+  CMSes ([dev/core#4811](https://lab.civicrm.org/dev/core/-/issues/4811):
+  [28321](https://github.com/civicrm/civicrm-core/pull/28321))**
+
+  Ensures that if a popup link requires AngularJS, it will always be available.
+
+- **Fix duplicate instance of Spreadsheet import class
+  ([28573](https://github.com/civicrm/civicrm-core/pull/28573))**
+
+- **Add unique constraint on ufmatch user ID+domain ID
+  ([28538](https://github.com/civicrm/civicrm-core/pull/28538))**
+
+  Prevent creation of multiple ufmatch entries for different contacts to the
+  same user account.
+
+- **civi_case/civi_campaign extensions not configured properly on a fresh
+  install ([dev/core#4867](https://lab.civicrm.org/dev/core/-/issues/4867):
+  [28677](https://github.com/civicrm/civicrm-core/pull/28677))**
+
+- **Update CustomField default_value to NULL instead of '' for floats
+  ([28491](https://github.com/civicrm/civicrm-core/pull/28491))**
+
+- **SearchKit: Don't assume a comparison value when none exists
+  ([28515](https://github.com/civicrm/civicrm-core/pull/28515))**
+
+- **AdminUI - Remove deleted contacts from group count
+  ([28275](https://github.com/civicrm/civicrm-core/pull/28275))**
+
+- **TemplateTrait - Fix references to CRM_Core_Exception
+  ([28524](https://github.com/civicrm/civicrm-core/pull/28524))**
+
+- **ensure exception class supports getErrorData
+  ([28398](https://github.com/civicrm/civicrm-core/pull/28398))**
+
+- **Use buttons instead of buttons, but only when not 4, but also if it's 4
+  ([28470](https://github.com/civicrm/civicrm-core/pull/28470))**
+
+- **Greenwich - Fix styling of summary collapsible element
+  ([28448](https://github.com/civicrm/civicrm-core/pull/28448))**
+
+  Fixes incorrect styling of summary/details collapsible element by Bootstrap3.
+
+- **SearchKit: Many "group by" requests result in "illegal offset type" 500 error
+  ([dev/core#4872](https://lab.civicrm.org/dev/core/-/issues/4872):
+  [28741](https://github.com/civicrm/civicrm-core/pull/28741))**
+
+- **SearchKit - Ensure result autocompleted by id is excluded from subsequent
+  pages ([28460](https://github.com/civicrm/civicrm-core/pull/28460))**
+
+- **Stop forcing apiVersion to 3 in setUp
+  ([28404](https://github.com/civicrm/civicrm-core/pull/28404))**
+
+- **set extension browser timeout to minimum of 10 seconds.
+  ([27934](https://github.com/civicrm/civicrm-core/pull/27934))**
+
+- **Fix notice, minor code cleanup with searching for a free text tag (advanced
+  search) ([28377](https://github.com/civicrm/civicrm-core/pull/28377))**
+
+- **Ensure onBehalfEmail always assigned to prevent notices
+  ([28365](https://github.com/civicrm/civicrm-core/pull/28365))**
+
+- **Check financial acls for product in extension
+  ([28316](https://github.com/civicrm/civicrm-core/pull/28316))**
+
+- **Use getCurrency() function for currency retrieval
+  ([28289](https://github.com/civicrm/civicrm-core/pull/28289))**
+
+- **PHP 8.x add getFromEmails() function, remove use of undeclared property
+  ([28347](https://github.com/civicrm/civicrm-core/pull/28347))**
+
+- **Simplify handling of discount_id in participant form postProcess
+  ([28308](https://github.com/civicrm/civicrm-core/pull/28308))**
+
+- **Fix Smarty3 notices on merge screen
+  ([28334](https://github.com/civicrm/civicrm-core/pull/28334))**
+
+- **Activity - Fix backwards logic in getViewOnlyActivityTypeIDs
+  ([28331](https://github.com/civicrm/civicrm-core/pull/28331))**
+
+- **BAO - Handle hypothetical userId in addSelectWhereClause
+  ([28329](https://github.com/civicrm/civicrm-core/pull/28329))**
+
+- **Fix tax when selection a contribution with the membership, test
+  ([28317](https://github.com/civicrm/civicrm-core/pull/28317))**
+
+- **Update send_receipt once actually sent, rather than predicting
+  ([28166](https://github.com/civicrm/civicrm-core/pull/28166))**
+
+- **Use function for getBillingID() rather than relying on form property
+  ([28280](https://github.com/civicrm/civicrm-core/pull/28280))**
+
+- **SearchBuilder - Add deprecation notice to users
+  ([28274](https://github.com/civicrm/civicrm-core/pull/28274))**
+
+  Adds a user-facing notice on the Search Builder page that Search Builder is
+  deprecated in favor of SearchKit.
+
+- **Use currentPath method to build QuickForm post URL
+  ([28258](https://github.com/civicrm/civicrm-core/pull/28258))**
+
+- **Replace ref to undeclared property with tax-inclusive lookup
+  ([28267](https://github.com/civicrm/civicrm-core/pull/28267))**
+
+- **Show membership info on pay later receipts
+  ([28183](https://github.com/civicrm/civicrm-core/pull/28183))**
+
+- **APIv4 - Add autocomplete & fix joins in CustomValue entities
+  ([28132](https://github.com/civicrm/civicrm-core/pull/28132))**
+
+  Fixes autocomplete widgets for entity types that do not have a label field
+  declared (instead of an error, they will now at least allow a search by id).
+  Adds the ability to autocomplete-search for CustomValue entities (aka
+  multi-record custom field groups). Fixes a bug preventing joins in SearchKit
+  from a multi-record custom entity back to the parent contact.
+
+- **APIv4 - Fix autocomplete filters for multi-record custom groups
+  ([28156](https://github.com/civicrm/civicrm-core/pull/28156))**
+
+- **Clarify that the values passed are the submitted values, not altered values
+  ([28076](https://github.com/civicrm/civicrm-core/pull/28076))**
+
+- **Update Merger.php to compare strict type for checkboxes where a dummy-string
+  is being used, to prevent this matching 'true'
+  ([28160](https://github.com/civicrm/civicrm-core/pull/28160))**
+
+- **Use token to avoid breaky-smarty3-maths
+  ([28211](https://github.com/civicrm/civicrm-core/pull/28211))**
+
+- **Replace math in template with variable, smarty3 support
+  ([28144](https://github.com/civicrm/civicrm-core/pull/28144))**
+
+- **Queue: hook_QueueTaskError missing some params
+  ([dev/core#4774](https://lab.civicrm.org/dev/core/-/issues/4774):
+  [28123](https://github.com/civicrm/civicrm-core/pull/28123))**
+
+- **Revisit the default Scheduled Jobs. Adjust the frequency…
+  ([28052](https://github.com/civicrm/civicrm-core/pull/28052))**
+
+  Adjusts the defaults of several scheduled jobs to: adjust the frequency and
+  remove comments that prevent the jobs from running correctly when enabled but
+  not edited.
+
+- **Fix online membership receipt to be form-independent
+  ([28394](https://github.com/civicrm/civicrm-core/pull/28394))**
+
+- **Fix notice regression on contact edit
+  ([28611](https://github.com/civicrm/civicrm-core/pull/28611))**
+
+- **Searchkit: Notes tab and relationships tab on contact crashing with
+  DOMDocument::loadHTML(): Tag crm-search-display-table invalid in Entity
+  ([dev/core#4855](https://lab.civicrm.org/dev/core/-/issues/4855):
+  [28628](https://github.com/civicrm/civicrm-core/pull/28628))**
+
+- **Viewing contact notes is broken
+  ([dev/core#4852](https://lab.civicrm.org/dev/core/-/issues/4852):
+  [28614](https://github.com/civicrm/civicrm-core/pull/28614))**
+
+- **ContactSummary - Exclude deleted contacts from relationship tab
+  ([28737](https://github.com/civicrm/civicrm-core/pull/28737))**
+
+- **Follow up fixes on `maxFileSize`
+  ([28074](https://github.com/civicrm/civicrm-core/pull/28074))**
+
+- **Notice fix - specify emailMode is false when including SocialNetwork.tpl
+  ([28359](https://github.com/civicrm/civicrm-core/pull/28359))**
+
+- **[PHP 8.0] Curly brace syntax for accessing array elements
+  ([dev/core#4758](https://lab.civicrm.org/dev/core/-/issues/4758):
+  [28057](https://github.com/civicrm/civicrm-core/pull/28057))**
+
+- **Recurring Activity: avoid validation if the fieldset is visible but not used
+  ([28279](https://github.com/civicrm/civicrm-core/pull/28279))**
+
+- **Fix activity view bug where an activity type id in the url overrides the
+  actual activity type id
+  ([27496](https://github.com/civicrm/civicrm-core/pull/27496))**
+
+- **Switch to non deprecated functions for dompdf
+  ([28059](https://github.com/civicrm/civicrm-core/pull/28059))**
+
+- **Replace undefined property `_currentMemberships` with a define
+  ([28222](https://github.com/civicrm/civicrm-core/pull/28222))**
+
+- **Update 'Some kind of numbery-looky-printy thing.'  - ie
+  `CRM_Utils_Number::formatUnitSize`
+  ([28054](https://github.com/civicrm/civicrm-core/pull/28054))**
+
+- **Do not suppress appropriate notices
+  ([28576](https://github.com/civicrm/civicrm-core/pull/28576))**
+
+- **Move form specific code out of shared function
+  ([28344](https://github.com/civicrm/civicrm-core/pull/28344))**
+
+- **Make undefined property local variable
+  ([28345](https://github.com/civicrm/civicrm-core/pull/28345))**
+
+- **Fix setting of misnamed property
+  ([28172](https://github.com/civicrm/civicrm-core/pull/28172))**
+
+- **Afform - Fix undefined index warning
+  ([28081](https://github.com/civicrm/civicrm-core/pull/28081))**
+
+- **Set cache folder for dompdf
+  ([dev/core#4791 ](https://lab.civicrm.org/dev/core/-/issues/4791):
+  [28257](https://github.com/civicrm/civicrm-core/pull/28257))**
+
+- **Stop setting unused key
+  ([28215](https://github.com/civicrm/civicrm-core/pull/28215))**
+
+- **Add missing quote
+  ([28088](https://github.com/civicrm/civicrm-core/pull/28088))**
+
+- **Reverse variable check to fix notice
+  ([28180](https://github.com/civicrm/civicrm-core/pull/28180))**
+
+- **Notice fix
+  ([28309](https://github.com/civicrm/civicrm-core/pull/28309))**
+
+- **Fix notice on showCMS:
+  ([28142](https://github.com/civicrm/civicrm-core/pull/28142))**
+
+- **Fix recently-merged typo
+  ([28288](https://github.com/civicrm/civicrm-core/pull/28288))**
+
+- **Fix always present parameter
+  ([28221](https://github.com/civicrm/civicrm-core/pull/28221))**
+
+- **Fix typo in smarty compatibility class
+  ([28791](https://github.com/civicrm/civicrm-core/pull/28791))**
+
+- **Reduce smarty notices on civireport pages
+  ([27985](https://github.com/civicrm/civicrm-core/pull/27985))**
+
+- **Set correct financial type when creating membership using price set with
+  single line item
+  ([28319](https://github.com/civicrm/civicrm-core/pull/28319))**
+
+- **Use local variable rather than undefined property to build array
+  ([28281](https://github.com/civicrm/civicrm-core/pull/28281))**
+
+- **php 8.2 undefined properties (Work towards
+  [dev/core#4072](https://lab.civicrm.org/dev/core/-/issues/4072):
+  [28044](https://github.com/civicrm/civicrm-core/pull/28044) and
+  [28043](https://github.com/civicrm/civicrm-core/pull/28043))**
+
+- **Php 8.x fix on variable
+  ([28050](https://github.com/civicrm/civicrm-core/pull/28050))**
+
+- **_Import Contacts_: Fix syntax error ([dev/core#4886](https://lab.civicrm.org/dev/core/-/issues/4886): [#28881](https://github.com/civicrm/civicrm-core/pull/28881))**
+
+### CiviCase
+
+- **When adding a follow up activity on an existing case activity with multiple
+  assignees only one is saved
+  ([dev/core#4770](https://lab.civicrm.org/dev/core/-/issues/4770):
+  [28136](https://github.com/civicrm/civicrm-core/pull/28136))**
+
+- **[php8] php warnings on case dashboard
+  ([28117](https://github.com/civicrm/civicrm-core/pull/28117))**
+
+- **CiviCase - Clear value before reusing editCaseRoleDialog
+  ([28270](https://github.com/civicrm/civicrm-core/pull/28270))**
+
+### CiviContribute
+
+- **Online contribution flow - fix for php8.x, notices, smarty3
+  (Work towards [dev/core#4798](https://lab.civicrm.org/dev/core/-/issues/4798):
+  [28271](https://github.com/civicrm/civicrm-core/pull/28271) and
+  [28276](https://github.com/civicrm/civicrm-core/pull/28276))**
+
+  Contribution flow cleanup.
+
+- **Price field and value weights not respected in 5.68
+  ([dev/core#4880](https://lab.civicrm.org/dev/core/-/issues/4880):
+  [28842](https://github.com/civicrm/civicrm-core/pull/28842))**
+
+- **getNonDeductibleAmountFromPriceSet should take into account the financial
+  type of the price field option (Work towards
+  [dev/core#3083](https://lab.civicrm.org/dev/core/-/issues/3083):
+  [28487](https://github.com/civicrm/civicrm-core/pull/28487))**
+
+  Adds a warning about price fields where non_deductible amount potentially
+  misconfigured.
+
+- **Update Payment or receipt notification template
+  ([28405](https://github.com/civicrm/civicrm-core/pull/28405))**
+
+  Fixes notices.
+
+- **Address payment processor notice in thankyou.tpl
+  ([28696](https://github.com/civicrm/civicrm-core/pull/28696))**
+
+- **Fix some notices on the Contribution ThankYou page
+  ([28695](https://github.com/civicrm/civicrm-core/pull/28695))**
+
+- **Fix amount not getting passed through in simple contribution flow
+  ([28658](https://github.com/civicrm/civicrm-core/pull/28658))**
+
+- **Check tax is present in online contribution page receipt
+  ([28138](https://github.com/civicrm/civicrm-core/pull/28138))**
+
+- **Tax amount on 'other amount field' - not being added
+  ([dev/core#4806](https://lab.civicrm.org/dev/core/-/issues/4806):
+  [28294](https://github.com/civicrm/civicrm-core/pull/28294))**
+
+- **Thank you page notice - ensure friendText & linkText is assigned
+  ([28358](https://github.com/civicrm/civicrm-core/pull/28358))**
+
+- **Add notice fix for Confirm & thank you pages
+  ([28362](https://github.com/civicrm/civicrm-core/pull/28362))**
+
+- **[LineItem cleanup] Standardise a couple of calls to get values from the line
+  items ([28264](https://github.com/civicrm/civicrm-core/pull/28264))**
+
+- **[LineItem cleanup] Clean up & clarify code splitting line items in
+  Contribution page membership flow
+  ([28266](https://github.com/civicrm/civicrm-core/pull/28266))**
+
+- **Reduce passing of `lineItems`
+  ([28234](https://github.com/civicrm/civicrm-core/pull/28234))**
+
+- **Auto renew options for membership types are not saving for a contribution
+  page ([dev/core#3994](https://lab.civicrm.org/dev/core/-/issues/3994):
+  [28387](https://github.com/civicrm/civicrm-core/pull/28387))**
+
+- **Authorize.net webhooks fail, because processor expects Integer for
+  x_invoice_num, while some have 20-character alphanumeric
+  ([dev/core#4833](https://lab.civicrm.org/dev/core/-/issues/4833):
+  [28474](https://github.com/civicrm/civicrm-core/pull/28474) and
+  [28575](https://github.com/civicrm/civicrm-core/pull/28575))**
+
+- **"Amount before tax" is wrong on online contribution receipt
+  ([dev/financial#206](https://lab.civicrm.org/dev/financial/-/issues/206):
+  [28008](https://github.com/civicrm/civicrm-core/pull/28008))**
+
+- **Clean up smarty notices on Contribution View (when not in pop-up mode)
+  ([28006](https://github.com/civicrm/civicrm-core/pull/28006))**
+
+- **Use `supportsNoReturn()` instead of contributeMode check
+  ([28060](https://github.com/civicrm/civicrm-core/pull/28060))**
+
+- **Declare property from paypal express as public
+  ([28227](https://github.com/civicrm/civicrm-core/pull/28227))**
+
+- **Manage Contribution Pages: Open Live/Test page in new tab like old screen
+  ([28173](https://github.com/civicrm/civicrm-core/pull/28173))**
+
+- **Use payment create rather than transitionComponents
+  ([26227](https://github.com/civicrm/civicrm-core/pull/26227))**
+
+- **Pass year to mktime as int in CRM_Contribution_Form_ContributionCharts
+ ([28013](https://github.com/civicrm/civicrm-core/pull/28013))**
+
+- **Main contribution page - amounts entered with money formatting that is
+  non-English are truncated
+  ([dev/core#4802](https://lab.civicrm.org/dev/core/-/issues/4802):
+  [28306](https://github.com/civicrm/civicrm-core/pull/28306))**
+
+- **Add some assigns to prevent notices on Confirm
+  ([28295](https://github.com/civicrm/civicrm-core/pull/28295))**
+
+- **Extend line item notice fix from Confirm to Thank you page
+  ([28252](https://github.com/civicrm/civicrm-core/pull/28252))**
+
+- **Fix notice on is_quick_config - Main contribution page
+  ([28095](https://github.com/civicrm/civicrm-core/pull/28095))**
+
+- **Fix notice on payment processor object
+  ([28141](https://github.com/civicrm/civicrm-core/pull/28141))**
+
+- **Unshare toxic function `getContributionParams()`
+  ([28254](https://github.com/civicrm/civicrm-core/pull/28254))**
+
+- **Unshared toxic function `getNonDeductibleAmount()`
+  ([28253](https://github.com/civicrm/civicrm-core/pull/28253))**
+
+- **Fix notice on intro_text when none configured for the page
+  ([28098](https://github.com/civicrm/civicrm-core/pull/28098))**
+
+- **fix error on confirm page when using on-behalf-of
+  ([28382](https://github.com/civicrm/civicrm-core/pull/28382))**
+
+- **Notice fix on payment block
+  ([28196](https://github.com/civicrm/civicrm-core/pull/28196))**
+
+- **PHp8.x notice fix - remove use of legacy paymentObject
+  ([28011](https://github.com/civicrm/civicrm-core/pull/28011))**
+
+- **Fix fatal adding price set on contribution page
+  ([28357](https://github.com/civicrm/civicrm-core/pull/28357))**
+
+- **Fix a whole lot of conditional assignments on confirm & thank you pages
+  ([28364](https://github.com/civicrm/civicrm-core/pull/28364))**
+
+- **Fix notices on credit_card & bank number on Confirm & ThankYou
+  ([28370](https://github.com/civicrm/civicrm-core/pull/28370))**
+
+- **Fix notices on manage premiums page
+  ([28250](https://github.com/civicrm/civicrm-core/pull/28250))**
+
+- **Fix notices on premiums across all 3 pages
+  ([28320](https://github.com/civicrm/civicrm-core/pull/28320))**
+
+- **Ensure onBehalfProfile assigned
+  ([28367](https://github.com/civicrm/civicrm-core/pull/28367))**
+
+- **Fix Main Contribution form to identify money fields
+  ([28300](https://github.com/civicrm/civicrm-core/pull/28300))**
+
+- **Fix getTaxDetails notices on Confirm page
+  ([28256](https://github.com/civicrm/civicrm-core/pull/28256))**
+
+- **[Premiums] Fix access to undeclared property, remove unreachable code
+  ([28238](https://github.com/civicrm/civicrm-core/pull/28238))**
+
+- **Fix notice on unassigned tax
+  ([28296](https://github.com/civicrm/civicrm-core/pull/28296))**
+
+- **Cleanup notices around line Item display on Contribution Confirm Page
+  ([28205](https://github.com/civicrm/civicrm-core/pull/28205))**
+
+- **Sample data fixes for contribution pages
+  ([28497](https://github.com/civicrm/civicrm-core/pull/28497))**
+
+- **Replace last tpl uses of `contributeMode`
+  ([28065](https://github.com/civicrm/civicrm-core/pull/28065))**
+
+- **Replace use of contributeMode with alternatives
+  ([28045](https://github.com/civicrm/civicrm-core/pull/28045))**
+
+- **don't warn users about invalid financial types on unused price sets
+  ([28322](https://github.com/civicrm/civicrm-core/pull/28322))**
+
+- **Make financialacls require civi-contribute
+  ([28318](https://github.com/civicrm/civicrm-core/pull/28318))**
+
+- **Clarify which line items are passed in` processSecondaryMembership`
+  ([28233](https://github.com/civicrm/civicrm-core/pull/28233))**
+
+* **Re-calculate prices when using "Go Back" ([dev/core#4877](https://lab.civicrm.org/dev/core/-/issues/4877): [#28819](https://github.com/civicrm/civicrm-core/pull/28819))**
+
+* **Do not delete price_set_entity record while page supports payment ([#28820](https://github.com/civicrm/civicrm-core/pull/28820))**
+
+* **Improve warning/diagnostic for unreproduced bug ([dev/core#4881](https://lab.civicrm.org/dev/core/-/issues/4881): [#28858](https://github.com/civicrm/civicrm-core/pull/28858))**
+
+### CiviEvent
+
+- **Add getParticipantID() to register
+  ([28402](https://github.com/civicrm/civicrm-core/pull/28402))**
+
+- **Updated fix for badge layouts
+  ([28080](https://github.com/civicrm/civicrm-core/pull/28080))**
+
+- **Fix eventcart to not interact with _tpl_vars directly
+  ([28335](https://github.com/civicrm/civicrm-core/pull/28335))**
+
+- **Get currency from the event for backoffice participant form
+  ([28350](https://github.com/civicrm/civicrm-core/pull/28350))**
+
+- **Fix potential error in Smarty v3 ([#28886](https://github.com/civicrm/civicrm-core/pull/28886))**
+
+### CiviMail
+
+- **Default mailing footer component incorrectly describes opt-out action as
+  unsubscribe ([28053](https://github.com/civicrm/civicrm-core/pull/28053))**
+
+- **Cancel button on the "unsubscribe mailing" form doesn't work as expected.
+  ([dev/core#4796](https://lab.civicrm.org/dev/core/-/issues/4796):
+  [28301](https://github.com/civicrm/civicrm-core/pull/28301))**
+
+- **Fix ID retrieval for MailingComponent edit page
+  ([28526](https://github.com/civicrm/civicrm-core/pull/28526))**
+
+### CiviMember
+
+- **Fix handling of auto renew memberships where frequency_interval > 1
+  ([dev/core#3810](https://lab.civicrm.org/dev/core/-/issues/3810) and
+  [dev/core#3339](https://lab.civicrm.org/dev/core/-/issues/3339):
+  [28718](https://github.com/civicrm/civicrm-core/pull/28718)**
+
+- **Recurring membership term is incorrect when using price sets
+  ([dev/core#3344](https://lab.civicrm.org/dev/core/-/issues/3344):
+  [28694](https://github.com/civicrm/civicrm-core/pull/28694))**
+
+- **In membership detail report the join date field has a different output date
+  format than the other date fields
+  ([dev/core#3202](https://lab.civicrm.org/dev/core/-/issues/3202):
+  [28089](https://github.com/civicrm/civicrm-core/pull/28089))**
+
+- **Notice fix in membership_online_receipt
+  ([28462](https://github.com/civicrm/civicrm-core/pull/28462))**
+
+- **Use apiv4 rather than V3 for cached membershipTypes retrieval
+  ([28386](https://github.com/civicrm/civicrm-core/pull/28386))**
+
+- **Fix notices on new membership
+  ([28434](https://github.com/civicrm/civicrm-core/pull/28434))**
+
+- **Fix notices on view membership
+  ([28435](https://github.com/civicrm/civicrm-core/pull/28435))**
+
+- **Online membership receipt simplification
+  ([28240](https://github.com/civicrm/civicrm-core/pull/28240))**
+
+- **Align online membership receipt with other templates for line items, tax
+  ([28181](https://github.com/civicrm/civicrm-core/pull/28181))**
+
+- **Fix membership online preview to display subject (using token)
+  ([28174](https://github.com/civicrm/civicrm-core/pull/28174))**
+
+- **Reformat whitespace in online membership receipt
+  ([28177](https://github.com/civicrm/civicrm-core/pull/28177))**
+
+- **Declare _groupTree on MembershipRenewal form
+  ([28066](https://github.com/civicrm/civicrm-core/pull/28066))**
+
+- **Use getSubmittedValues() rather than ad-hoc money 'cleaning' on
+  membershipType form
+  ([28389](https://github.com/civicrm/civicrm-core/pull/28389))**
+
+- **Unconditionally assign membership variables to fix notices on thankYou page
+  ([28366](https://github.com/civicrm/civicrm-core/pull/28366))**
+
+- **Fix notice on membership online main page
+  ([28285](https://github.com/civicrm/civicrm-core/pull/28285))**
+
+- **Auto-renew options may not show correctly (depending on the last option) ([#28871](https://github.com/civicrm/civicrm-core/pull/28871))**
+
+- **Auto-renew options may not show correctly (depending on the kind of price-set) ([#28872](https://github.com/civicrm/civicrm-core/pull/28872))**
+
+### Drupal Integration
+
+- **CV crashes if LoginSecurity extension is enabled on Drupal8/9/10
+  ([dev/core#4756](https://lab.civicrm.org/dev/core/-/issues/4756):
+  [28037](https://github.com/civicrm/civicrm-core/pull/28037))**
+
+### Joomla Integration
+
+- **unable to authenticate in Joomla using Authx
+  ([dev/core#4772](https://lab.civicrm.org/dev/core/-/issues/4772):
+  [28119](https://github.com/civicrm/civicrm-core/pull/28119))**
+
+- **Add Joomla user to group when created from civi profile
+  ([27459](https://github.com/civicrm/civicrm-core/pull/27459))**
+
+### Standalone Implementation
+
+- **Epic: Re-implement CiviCRM Standalone (CMS-less CiviCRM) (Work towards
+  [dev/core#2998](https://lab.civicrm.org/dev/core/-/issues/2998):
+  [28407](https://github.com/civicrm/civicrm-core/pull/28407) and
+  [28439](https://github.com/civicrm/civicrm-core/pull/28439))**
+
+  Fixes an issue for standalone implementations where getUserIDFromUsername()
+  was throwing an exception when fetching unknown users, rather than returning
+  NULL. Also fixes JWT cookie test for standalone implementations.
+
+- **Standalone timezone support
+  ([dev/core#4410](https://lab.civicrm.org/dev/core/-/issues/4410):
+  [28468](https://github.com/civicrm/civicrm-core/pull/28468))**
+
+- **Standalone: civicrm/user path conflicts with existing path to user dashboard
+  ([dev/core#4697](https://lab.civicrm.org/dev/core/-/issues/4697):
+  [28343](https://github.com/civicrm/civicrm-core/pull/28343))**
+
+- **Standalone: language change does not stick
+  ([dev/core#4425](https://lab.civicrm.org/dev/core/-/issues/4425):
+  [27292](https://github.com/civicrm/civicrm-core/pull/27292))**
+
+- **Standalone: clean up styling on login/reset password
+  ([28471](https://github.com/civicrm/civicrm-core/pull/28471))**
+
+- **standaloneusers - Fix tokens+docblocks for "Password reset" email  
+  ([28525](https://github.com/civicrm/civicrm-core/pull/28525))**
+
+- **fix standalone permission for civimail subscribe pages
+  ([28455](https://github.com/civicrm/civicrm-core/pull/28455))**
+
+- **Fix confusing login screen on standalone + pretty up
+  ([28424](https://github.com/civicrm/civicrm-core/pull/28424))**
+
+- **Standalone - bootstrap script fixes
+  ([28427](https://github.com/civicrm/civicrm-core/pull/28427))**
+
+- **Standalone - Make active field required and labelled enabled
+  ([28478](https://github.com/civicrm/civicrm-core/pull/28478))**
+
+- **Standalone - remove role from users on deletion
+  ([28429](https://github.com/civicrm/civicrm-core/pull/28429))**
+
+- **Standalone - set default value to active when adding new user role
+  ([28426](https://github.com/civicrm/civicrm-core/pull/28426))**
+
+- **Standalone absolute paths
+  ([28436](https://github.com/civicrm/civicrm-core/pull/28436))**
+
+- **Standalone - Protect admin and everyone roles
+  ([28451](https://github.com/civicrm/civicrm-core/pull/28451))**
+
+### WordPress Integration
+
+- **Attempting to create a pretty URL on a subpage results in non-pretty URL
+  ([dev/wordpress#144](https://lab.civicrm.org/dev/wordpress/-/issues/144):
+  [310](https://github.com/civicrm/civicrm-wordpress/pull/310))**
+
+- **update the phpunit xml definition
+  ([311](https://github.com/civicrm/civicrm-wordpress/pull/311))**
+
+## <a name="misc"></a>Miscellany
+
+- **Update Firebase JWT to version 6.x
+  ([28055](https://github.com/civicrm/civicrm-core/pull/28055))**
+
+- **Update Guzzle to 7.6.1 for Drupal 7/Backdrop/WordPress/Joomla
+  ([28000](https://github.com/civicrm/civicrm-core/pull/28000))**
+
+- **Deploy Package updates for DomPDF and PHP SVG Lib
+  ([28643](https://github.com/civicrm/civicrm-core/pull/28643))**
+
+- **set-version.php - Autocommit changes for version.json
+  ([28622](https://github.com/civicrm/civicrm-core/pull/28622))**
+
+- **Deprecate passing `billingID`to `mapParams`
+  ([28310](https://github.com/civicrm/civicrm-core/pull/28310))**
+
+- **Smarty 3: Mark sectionTotals smarty function deprecated
+  ([27777](https://github.com/civicrm/civicrm-core/pull/27777))**
+
+* **Smarty 3: Fix loading of uncommon calendar widgets ([#28856](https://github.com/civicrm/civicrm-core/pull/28856/))**
+
+- **Consolidate source text determination
+  ([28047](https://github.com/civicrm/civicrm-core/pull/28047))**
+
+- **Go to bed without supper 🥪🚫
+  ([28340](https://github.com/civicrm/civicrm-core/pull/28340))**
+
+- **Extract code that defines the renewal membership
+  ([28287](https://github.com/civicrm/civicrm-core/pull/28287))**
+
+- **[php8] undeclared property action and id in Page
+  ([28314](https://github.com/civicrm/civicrm-core/pull/28314))**
+
+- **Replace a few sub_str with str_contains
+  ([28262](https://github.com/civicrm/civicrm-core/pull/28262))**
+
+- **Use form property rather than passing mode
+  ([28307](https://github.com/civicrm/civicrm-core/pull/28307))**
+
+- **Simplify use of word 'Register'
+  ([28046](https://github.com/civicrm/civicrm-core/pull/28046))**
+
+- **Add helper functions to contribution page
+  ([28228](https://github.com/civicrm/civicrm-core/pull/28228))**
+
+- **Add warnings to processAmount
+  ([28463](https://github.com/civicrm/civicrm-core/pull/28463))**
+
+- **Update comment todos to referred to preferred method
+  ([28324](https://github.com/civicrm/civicrm-core/pull/28324))**
+
+- **Copy buildPremiumsBlock back to contribution page base
+  ([28315](https://github.com/civicrm/civicrm-core/pull/28315))**
+
+- **Stop using & deprectate `getSalesTaxTerm`
+  ([28459](https://github.com/civicrm/civicrm-core/pull/28459))**
+
+- **Pass contact id to sendmail function
+  ([28229](https://github.com/civicrm/civicrm-core/pull/28229))**
+
+- **Minor consolidation on `isTest()`
+  ([28284](https://github.com/civicrm/civicrm-core/pull/28284))**
+
+- **Clarify doRefund() signature
+  ([28490](https://github.com/civicrm/civicrm-core/pull/28490))**
+
+- **Add deprecation to transition components
+  ([28485](https://github.com/civicrm/civicrm-core/pull/28485))**
+
+- **Partial standardisation of MembershipType::Add
+  ([28489](https://github.com/civicrm/civicrm-core/pull/28489))**
+
+- **Consolidate invoice determination
+  ([28493](https://github.com/civicrm/civicrm-core/pull/28493))**
+
+- **Cleanup return on processContact
+  ([28494](https://github.com/civicrm/civicrm-core/pull/28494))**
+
+- **Clean up parameters in add payment form
+  ([28479](https://github.com/civicrm/civicrm-core/pull/28479))**
+
+- **Clean up `getMainContributionAmount()` function
+  ([28292](https://github.com/civicrm/civicrm-core/pull/28292))**
+
+- **Move getAmountLevel() to Order class
+  ([28312](https://github.com/civicrm/civicrm-core/pull/28312))**
+
+- **Superficial cleanup in Contribution Thank You form
+  ([28269](https://github.com/civicrm/civicrm-core/pull/28269))**
+
+- **Fix UFGroup add to call writeRecord
+  ([28552](https://github.com/civicrm/civicrm-core/pull/28552))**
+
+- **Copy functions back from metadata trait to only caller
+  ([28555](https://github.com/civicrm/civicrm-core/pull/28555))**
+
+- **Clean up contributionParams - backoffice participant form
+  ([28070](https://github.com/civicrm/civicrm-core/pull/28070))**
+
+- **CRM_Core_CodeGen_Schema: fix generated comments and whitespace
+  ([28363](https://github.com/civicrm/civicrm-core/pull/28363))**
+
+- **Simplify if
+  ([28093](https://github.com/civicrm/civicrm-core/pull/28093))**
+
+- **Further cleanup on previously shared participant form code
+  ([28030](https://github.com/civicrm/civicrm-core/pull/28030))**
+
+- **Follow up cleanup on multiple participant form edit
+  ([28007](https://github.com/civicrm/civicrm-core/pull/28007))**
+
+- **Fix docblock for loadUser()
+  ([28563](https://github.com/civicrm/civicrm-core/pull/28563))**
+
+- **Cleanup SQL in xml/templates/civicrm_state_province.tpl
+  ([28041](https://github.com/civicrm/civicrm-core/pull/28041))**
+
+- **Civi grant cleanup
+  ([28438](https://github.com/civicrm/civicrm-core/pull/28438))**
+
+- **Superficial cleanup
+  ([28385](https://github.com/civicrm/civicrm-core/pull/28385))**
+
+- **contributor_key.yml: add civiservice.de to four users, remove one duplicate
+  ([28390](https://github.com/civicrm/civicrm-core/pull/28390))**
+
+- **Page Templates - Remove unused `$localTasks` (`localNav.tpl`)
+  ([28155](https://github.com/civicrm/civicrm-core/pull/28155))**
+
+- **Finally remove `dataArray` , some notice fixes
+  ([28184](https://github.com/civicrm/civicrm-core/pull/28184))**
+
+- **Remove never-used variables
+  ([28009](https://github.com/civicrm/civicrm-core/pull/28009))**
+
+- **Remove extraneous space, breaks smarty3
+  ([28100](https://github.com/civicrm/civicrm-core/pull/28100))**
+
+- **Remove karama-phantomjs-launcher as we now use chrome browser for karma
+  tests ([28056](https://github.com/civicrm/civicrm-core/pull/28056))**
+
+- **Remove registered_by_id as not set in this flow
+  ([28063](https://github.com/civicrm/civicrm-core/pull/28063))**
+
+- **Remove more traces of the old 'contribution_invoice_settings'
+  ([27955](https://github.com/civicrm/civicrm-core/pull/27955))**
+
+- **Remove unused property from previously shared code
+  ([28049](https://github.com/civicrm/civicrm-core/pull/28049))**
+
+- **Remove references to not-set form _values array property 'event' from
+  previously shared code
+  ([28048](https://github.com/civicrm/civicrm-core/pull/28048))**
+
+- **Remove unused property from previously shared code `_membershipTypeValues`
+  ([28224](https://github.com/civicrm/civicrm-core/pull/28224))**
+
+- **Remove unnecessary pass-by-reference
+  ([28337](https://github.com/civicrm/civicrm-core/pull/28337))**
+
+- **Remove code cruft which is now ignored
+  ([28298](https://github.com/civicrm/civicrm-core/pull/28298))**
+
+- **Remove assignments for template that are not needed for updated template
+  ([28232](https://github.com/civicrm/civicrm-core/pull/28232))**
+
+- **Remove assignment of now-unused membership_assign variable
+  ([28208](https://github.com/civicrm/civicrm-core/pull/28208))**
+
+- **Remove extraneous set from previously shared code
+  ([28167](https://github.com/civicrm/civicrm-core/pull/28167))**
+
+- **Remove last references to `_contributeMode`
+  ([28140](https://github.com/civicrm/civicrm-core/pull/28140))**
+
+- **Remove unused _tempClause
+  ([28342](https://github.com/civicrm/civicrm-core/pull/28342))**
+
+- **Remove handling from previously shared code
+  ([28336](https://github.com/civicrm/civicrm-core/pull/28336))**
+
+- **Remove notice from main donate page
+  ([28498](https://github.com/civicrm/civicrm-core/pull/28498))**
+
+- **Remove some calls to deprecated function
+  ([28384](https://github.com/civicrm/civicrm-core/pull/28384))**
+
+- **Remove unused functions noisily deprecated in 2021
+  ([28346](https://github.com/civicrm/civicrm-core/pull/28346))**
+
+- **Remove unreachable code
+  ([28360](https://github.com/civicrm/civicrm-core/pull/28360))**
+
+- **Remove unused variable
+  ([28570](https://github.com/civicrm/civicrm-core/pull/28570))**
+
+- **Remove unused variable
+  ([28571](https://github.com/civicrm/civicrm-core/pull/28571))**
+
+- **remove unused variable
+  ([28572](https://github.com/civicrm/civicrm-core/pull/28572))**
+
+- **[REF] Extract code to determine the column names
+  ([28077](https://github.com/civicrm/civicrm-core/pull/28077))**
+
+- **(REF) Authx - Split `AllFlowsTest` into smaller, themetic tests
+  ([28161](https://github.com/civicrm/civicrm-core/pull/28161))**
+
+- **[REF] Regen after #28144
+  ([28158](https://github.com/civicrm/civicrm-core/pull/28158))**
+
+- **[REF] APIv4 - Minor cleanup of redundant variables
+  ([28150](https://github.com/civicrm/civicrm-core/pull/28150))**
+
+- **[REF] Afform - Namespace mock tests for autoloading
+  ([28165](https://github.com/civicrm/civicrm-core/pull/28165))**
+
+- **[REF] Switch strstr to str_contains
+  ([28323](https://github.com/civicrm/civicrm-core/pull/28323))**
+
+- **REF: Cleanup to Event Registration Confirm form
+  ([28071](https://github.com/civicrm/civicrm-core/pull/28071))**
+
+- **[REF] Angular - cleanup core angular module declarations
+  ([28042](https://github.com/civicrm/civicrm-core/pull/28042))**
+
+- **[REF] Fix test fails caused by changes to mailing footer
+  ([28146](https://github.com/civicrm/civicrm-core/pull/28146))**
+
+- **[REF] Fix Smarty Notice Errors on Contribution Edit
+  ([28163](https://github.com/civicrm/civicrm-core/pull/28163))**
+
+- **REF - Cleanup overly-verbose conditionals
+  ([28368](https://github.com/civicrm/civicrm-core/pull/28368))**
+
+- **REF - Cleanup overly-verbose conditionals
+  ([28373](https://github.com/civicrm/civicrm-core/pull/28373))**
+
+- **[REF] Use Token Processor to generate sort name and display name for
+  individuals ([28391](https://github.com/civicrm/civicrm-core/pull/28391))**
+
+- **[REF][PHP8.2] Properties in TopDonor report
+  ([28067](https://github.com/civicrm/civicrm-core/pull/28067))**
+
+- **[REF][PHP8.2] Tidy up properties in CRM_Badge_BAO_Badge
+  ([28304](https://github.com/civicrm/civicrm-core/pull/28304))**
+
+- **[REF][PHP8.2] Remove unused property $_loadedMappingId
+  ([28290](https://github.com/civicrm/civicrm-core/pull/28290))**
+
+- **[REF][PHP8.2] Declare _context in CRM_Contact_Selector
+  ([28200](https://github.com/civicrm/civicrm-core/pull/28200))**
+
+- **[REF][PHP8.2] Declare donorEmail and donorDisplayName properties
+  ([28204](https://github.com/civicrm/civicrm-core/pull/28204))**
+
+- **[REF][PHP8.2] Remove need for _allowMultiClient property
+  ([28203](https://github.com/civicrm/civicrm-core/pull/28203))**
+
+- **[REF][PHP8.2] Remove unused property usage from test
+  ([28201](https://github.com/civicrm/civicrm-core/pull/28201))**
+
+- **[REF][PHP8.2] Declare _redactionRegexRules property
+  ([28199](https://github.com/civicrm/civicrm-core/pull/28199))**
+
+- **[REF][PHP8.2] Declare properties in CRM_Utils_PDF_Label
+  ([28064](https://github.com/civicrm/civicrm-core/pull/28064))**
+
+- **[REF][PHP8.2] Remove unused id property
+  ([28062](https://github.com/civicrm/civicrm-core/pull/28062))**
+
+- **[REF][PHP8.2] Update CRM_Activity_Form_ActivityView for PHP8.2 support
+  ([28027](https://github.com/civicrm/civicrm-core/pull/28027))**
+
+- **[REF][PHP8.2] Declare property in CRM_Admin_Form_ParticipantStatusType
+  ([28457](https://github.com/civicrm/civicrm-core/pull/28457))**
+
+- **[REF][PHP8.2] Declare properties in TimeSpent report
+  ([28444](https://github.com/civicrm/civicrm-core/pull/28444))**
+
+- **[REF][PHP8.2] Declare properties in CRM_Contact_Form_Task_Delete
+  ([28446](https://github.com/civicrm/civicrm-core/pull/28446))**
+
+- **[REF][PHP8.2] Declare properties in HouseholdSummary report
+  ([28432](https://github.com/civicrm/civicrm-core/pull/28432))**
+
+- **[REF][PHP8.2] Declare properties in CRM_Contact_Form_GroupContact
+  ([28106](https://github.com/civicrm/civicrm-core/pull/28106))**
+
+- **[REF][PHP8.2] Declare properties in CRM_Event_Form_Task_Badge
+  ([28107](https://github.com/civicrm/civicrm-core/pull/28107))**
+
+- **[REF][PHP8.2] Fix MembershipTest on PHP 8.2
+  ([28108](https://github.com/civicrm/civicrm-core/pull/28108))**
+
+- **[REF][PHP8.2] Remove unused property from CRM_Contact_Selector
+  ([28341](https://github.com/civicrm/civicrm-core/pull/28341))**
+
+- **[REF][PHP8.2] Ensure _subscriptionDetails is consistently declared
+  ([28110](https://github.com/civicrm/civicrm-core/pull/28110))**
+
+- **[REF][PHP8.2] Update CRM_Batch_Form_Entry
+  ([28111](https://github.com/civicrm/civicrm-core/pull/28111))**
+
+- **[REF][PHP8.2] Cleanup CRM_Event_Form_SelfSvcUpdate
+  ([28109](https://github.com/civicrm/civicrm-core/pull/28109))**
+
+- **[REF][PHP8.2] Remove unused dynamic props
+  ([28022](https://github.com/civicrm/civicrm-core/pull/28022))**
+
+- **[REF][PHP8.2] Fix Case_Form_TaskTest test fails on php8.2
+  ([28016](https://github.com/civicrm/civicrm-core/pull/28016))**
+
+- **[REF][PHP8.2] Declare properties
+  ([305](https://github.com/civicrm/civicrm-wordpress/pull/305))**
+
+- **[REF][PHP8.2] Tidy up CRM_Report_Form_Case_Detail
+  ([28028](https://github.com/civicrm/civicrm-core/pull/28028))**
+
+- **[REF][PHP8.2] Update CRM_SMS_Page_Provider
+  ([28023](https://github.com/civicrm/civicrm-core/pull/28023))**
+
+- **[REF][PHP8.2] Declare properties in CRM_Activity_Page_Tab
+  ([28416](https://github.com/civicrm/civicrm-core/pull/28416))**
+
+- **[REF][PHP8.2] Remove unused dynamic property
+  ([28417](https://github.com/civicrm/civicrm-core/pull/28417))**
+
+- **[php8]] Replace undeclared class var with local var
+  ([28020](https://github.com/civicrm/civicrm-core/pull/28020))**
+
+- **[NFC] APIv4 - Ensure ContactType api handles accent characters
+  ([27994](https://github.com/civicrm/civicrm-core/pull/27994))**
+
+- **[NFC] APIv4 - > test coverage for Search Download by 1 line
+  ([27995](https://github.com/civicrm/civicrm-core/pull/27995))**
+
+- **[NFC] update version info in readme.txt
+  ([312](https://github.com/civicrm/civicrm-wordpress/pull/312))**
+
+- **NFC - Fix breadcrumb variable type in docblock
+  ([304](https://github.com/civicrm/civicrm-wordpress/pull/304))**
+
+- **[NFC] Apply sub-set of WordPress codestyle
+  ([306](https://github.com/civicrm/civicrm-wordpress/pull/306))**
+
+- **[NFC] Fix typo in `Localization.tpl` file.
+  ([28562](https://github.com/civicrm/civicrm-core/pull/28562))**
+
+- **[NFC] Fix a tiypo
+  ([28465](https://github.com/civicrm/civicrm-core/pull/28465))**
+
+- **[NFC] Pass correct param types to file_get_contents
+  ([28397](https://github.com/civicrm/civicrm-core/pull/28397))**
+
+- **[NFC] Array formatting cleanup
+  ([28339](https://github.com/civicrm/civicrm-core/pull/28339))**
+
+- **Regen
+  ([28516](https://github.com/civicrm/civicrm-core/pull/28516))**
+
+- **Regen after 28052
+  ([28116](https://github.com/civicrm/civicrm-core/pull/28116))**
+
+- **Regen
+  ([28551](https://github.com/civicrm/civicrm-core/pull/28551))**
+
+- **Regen after 28096
+  ([28120](https://github.com/civicrm/civicrm-core/pull/28120))**
+
+- **regen
+  ([28450](https://github.com/civicrm/civicrm-core/pull/28450))**
+
+- **Regen after 28268
+  ([28313](https://github.com/civicrm/civicrm-core/pull/28313))**
+
+- **Re-run regen
+  ([28210](https://github.com/civicrm/civicrm-core/pull/28210))**
+
+- **Fix test to not do weird form-trait sharing thing
+  ([28554](https://github.com/civicrm/civicrm-core/pull/28554))**
+
+- **Further test consolidation
+  ([28212](https://github.com/civicrm/civicrm-core/pull/28212))**
+
+- **Standalone PathUrlTest
+  ([28419](https://github.com/civicrm/civicrm-core/pull/28419))**
+
+- **Standalone: fix e2e error message test(s)
+  ([28507](https://github.com/civicrm/civicrm-core/pull/28507))**
+
+- **standalone: fix failing E2E test due to getting resource base URL
+  ([28475](https://github.com/civicrm/civicrm-core/pull/28475))**
+
+- **add Query to AssetBuilder test to fix WP E2E test failures
+  ([28561](https://github.com/civicrm/civicrm-core/pull/28561))**
+
+- **Test-notice-fix affecting all tests
+  ([28535](https://github.com/civicrm/civicrm-core/pull/28535))**
+
+- **Fix tests calling AdditionalPayment form to use full flow, add standard ID
+  get functions ([28461](https://github.com/civicrm/civicrm-core/pull/28461))**
+
+- **Asset builder test
+  ([28443](https://github.com/civicrm/civicrm-core/pull/28443))**
+
+- **LegacyRestTest - No need to test `extern/rest.php` on `Standalone`
+  ([28410](https://github.com/civicrm/civicrm-core/pull/28410))**
+
+- **LocalizedDataTest - Fix for standalone
+  ([28408](https://github.com/civicrm/civicrm-core/pull/28408))**
+
+- **"Fix" test fail E2E_Extern_WidgetTest::testWidget by skipping it
+  ([28411](https://github.com/civicrm/civicrm-core/pull/28411))**
+
+- **Fix for intermittent test fail on checksum time
+  ([28392](https://github.com/civicrm/civicrm-core/pull/28392))**
+
+- **Fix dataSource test to test permissions
+  ([28327](https://github.com/civicrm/civicrm-core/pull/28327))**
+
+- **Minor test clean up
+  ([28235](https://github.com/civicrm/civicrm-core/pull/28235))**
+
+- **Add testing on emails for separate payment,
+  ([28091](https://github.com/civicrm/civicrm-core/pull/28091))**
+
+- **Improve test output message
+  ([28214](https://github.com/civicrm/civicrm-core/pull/28214))**
+
+- **Minor standardisation in test class
+  ([28197](https://github.com/civicrm/civicrm-core/pull/28197))**
+
+- **Move ContributionPage test to ConfirmTest class
+  ([28692](https://github.com/civicrm/civicrm-core/pull/28692))**
+
+- **Fix tests to use full form flow, more reliable data
+  ([28207](https://github.com/civicrm/civicrm-core/pull/28207))**
+
+- **Add test cover for tax details in Dummy payment online contribution receipt
+  ([28143](https://github.com/civicrm/civicrm-core/pull/28143))**
+
+- **_Backdrop_: Fix clash in styling "summary/detail" accordions ([#28879](https://github.com/civicrm/civicrm-core/pull/28879))**
+
+
+- **Update contributor-key.yml
+  ([28486](https://github.com/civicrm/civicrm-core/pull/28486))**
+
+- **5.69.0 release notes
+  ([28590](https://github.com/civicrm/civicrm-core/pull/28590), and
+  [28807](https://github.com/civicrm/civicrm-core/pull/28807),
+  [28870](https://github.com/civicrm/civicrm-core/pull/28870))**
+
+## <a name="credits"></a>Credits
+
+This release was developed by the following code authors:
+
+19ATF72; AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Francis Whittle,
+Justin Freeman; Artful Robot - Rich Lott; ASMAC (American Society of Music
+Arrangers and Composers) - Jeff Kellem; Benjamin W; BrightMinded Ltd - Bradley
+Taylor; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCoop - Erik
+Hommel, Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha
+Chaku; civiservice.de - Sebastian Lisken; CompuCorp - Omar Abu Hussein; Coop
+SymbioTIC - Mathieu Lutfy; Dave D; Fuzion - Jitendra Purohit; Greenpeace Central
+and Eastern Europe - Patrick Figel; iXiam - César Ramos; JMA Consulting - Seamus
+Lee; Joinery - Allen Shaw; Lemniscus - Noah Miller; Lighthouse Consulting and
+Design - Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MJW
+Consulting - Matthew Wire; Nicol Wistreich; OPEN - dewy; OSSeed Technologies
+LLP - Vinay Gawade; PHD Computer Consultants Ltd - Chris Cant; Reflexive
+Communications - Sandor Semsey; Skvare - Sunil Pawar; Squiffle Consulting -
+Aidan Saunders; Tadpole Collective - Kevin Cristiano; Third Sector Design -
+Kurund Jalmi, William Mortada; Wikimedia Foundation - Damilare Adedoyin, Eileen
+McNaughton, Wenjun Fan
+
+Most authors also reviewed code for this release; in addition, the following
+reviewers contributed their comments:
+
+Blackfly Solutions - Alan Dixon; civiservice.de - Andreas Howiller, Tobias
+Voigt; Coop SymbioTIC - Samuel Vanhove; Francesc Bassas i Bullich; Freeform
+Solutions - Herb van den Dool; Humanists UK - Andrew West; JMA Consulting - Joe
+Murray, Monish Deb; Makoa - Usha F. Matisson; Mark; Megaphone Technology
+Consulting - Brienne Kordis; Systopia - Dominic Tubach, Johannes Franz;
+Wildsight - Lars Sander-Green
+
+## <a name="feedback"></a>Feedback
+
+These release notes are edited by Alice Frumin and Andie Hunt.  If you'd like
+to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
+and contact `@agh1`.
diff --git a/civicrm/settings/Contribute.setting.php b/civicrm/settings/Contribute.setting.php
index fca6aee40e665d1775edcf4cda4525d68e82680d..5f3cd604abe7247eb35fb519dc1b1ce7a67f8426 100644
--- a/civicrm/settings/Contribute.setting.php
+++ b/civicrm/settings/Contribute.setting.php
@@ -68,21 +68,24 @@ return [
     'html_type' => 'text',
     'name' => 'invoice_prefix',
     'add' => '5.23',
-    'type' => CRM_Utils_Type::T_STRING,
+    'type' => 'String',
     'title' => ts('Invoice Prefix'),
-    'description' => ts('Enter prefix to be be preprended when creating an invoice number'),
+    'description' => ts('Enter prefix to be be pre-pended when creating an invoice number'),
     'is_domain' => 1,
     'is_contact' => 0,
+    'settings_pages' => ['contribute' => ['weight' => 100]],
   ],
   'invoice_due_date' => [
     'default' => '10',
     'name' => 'invoice_due_date',
     'html_type' => 'text',
     'title' => ts('Due Date'),
+    'description' => '',
     'add' => '5.23',
-    'type' => CRM_Utils_Type::T_INT,
+    'type' => 'Integer',
     'is_domain' => 1,
     'is_contact' => 0,
+    'settings_pages' => ['contribute' => ['weight' => 110]],
   ],
   'invoice_due_date_period' => [
     'default' => 'days',
@@ -91,7 +94,7 @@ return [
     'title' => ts('For transmission'),
     'weight' => 4,
     'add' => '5.23',
-    'type' => CRM_Utils_Type::T_STRING,
+    'type' => 'String',
     'is_domain' => 1,
     'is_contact' => 0,
     'description' => ts('Select the interval for due date.'),
@@ -101,28 +104,31 @@ return [
       'months' => ts('Months'),
       'years' => ts('Years'),
     ],
+    'settings_pages' => ['contribute' => ['weight' => 120]],
   ],
   'invoice_notes' => [
     'default' => '',
     'name' => 'invoice_notes',
     'html_type' => 'wysiwyg',
     'title' => ts('Notes or Standard Terms'),
-    'type' => CRM_Utils_Type::T_STRING,
+    'type' => 'String',
     'add' => '5.23',
     'is_domain' => 1,
     'is_contact' => 0,
     'description' => ts('Enter note or message to be displayed on PDF invoice or credit notes '),
     'attributes' => ['rows' => 2, 'cols' => 40],
+    'settings_pages' => ['contribute' => ['weight' => 130]],
   ],
   'invoice_is_email_pdf' => [
     'name' => 'invoice_is_email_pdf',
     'html_type' => 'checkbox',
     'add' => '5.23',
-    'type' => CRM_Utils_Type::T_BOOLEAN,
+    'type' => 'Boolean',
     'is_domain' => 1,
     'is_contact' => 0,
     'title' => ts('Automatically email invoice when user purchases online'),
     'description' => ts('Should a pdf invoice be emailed automatically?'),
+    'settings_pages' => ['contribute' => ['weight' => 140]],
   ],
   'tax_term' => [
     'default' => 'Sales Tax',
@@ -130,20 +136,24 @@ return [
     'html_type' => 'text',
     'add' => '5.23',
     'title' => ts('Tax Term'),
-    'type' => CRM_Utils_Type::T_STRING,
+    'type' => 'String',
     'is_domain' => 1,
     'is_contact' => 0,
+    'description' => '',
+    'settings_pages' => ['contribute' => ['weight' => 150]],
   ],
   'tax_display_settings' => [
     'default' => 'Inclusive',
     'html_type' => 'select',
     'name' => 'tax_display_settings',
-    'type' => CRM_Utils_Type::T_STRING,
+    'type' => 'String',
     'add' => '5.23',
     'title' => ts('Tax Display Settings'),
     'is_domain' => 1,
     'is_contact' => 0,
+    'description' => '',
     'pseudoconstant' => ['callback' => 'CRM_Core_SelectValues::taxDisplayOptions'],
+    'settings_pages' => ['contribute' => ['weight' => 160]],
   ],
   'deferred_revenue_enabled' => [
     'group_name' => 'Contribute Preferences',
diff --git a/civicrm/settings/Core.setting.php b/civicrm/settings/Core.setting.php
index 9106338b1eb95d9f06dab021d971e77c0a7706ce..9f2177c621fac9ea6a86fd793facf3f94bc9caef 100644
--- a/civicrm/settings/Core.setting.php
+++ b/civicrm/settings/Core.setting.php
@@ -155,7 +155,7 @@ return [
     'name' => 'sort_name_format',
     'type' => 'String',
     'html_type' => 'textarea',
-    'default' => '{contact.last_name}{, }{contact.first_name}',
+    'default' => '{contact.last_name}{, }{contact.first_name}{ }{contact.suffix_id:label}',
     'add' => '4.1',
     'title' => ts('Individual Sort Name Format'),
     'is_domain' => 1,
@@ -800,9 +800,10 @@ return [
     'help_text' => NULL,
     'on_change' => [
       'CRM_Case_Info::onToggleComponents',
+      'CRM_Core_Component::preToggleComponents',
     ],
     'post_change' => [
-      'CRM_Core_Component::onToggleComponents',
+      'CRM_Core_Component::postToggleComponents',
     ],
     'pseudoconstant' => [
       'callback' => 'CRM_Core_SelectValues::getComponentSelectValues',
diff --git a/civicrm/setup/plugins/blocks/l10n.civi-setup.php b/civicrm/setup/plugins/blocks/l10n.civi-setup.php
index 1202323f9e3f2fe7dd5b313af6d2c3442f260857..d184c91a2d8d647444297c3b4bd803256e0dccdf 100644
--- a/civicrm/setup/plugins/blocks/l10n.civi-setup.php
+++ b/civicrm/setup/plugins/blocks/l10n.civi-setup.php
@@ -15,7 +15,7 @@ if (!defined('CIVI_SETUP')) {
     $ctrl->blocks['l10n'] = array(
       'is_active' => TRUE,
       'file' => __DIR__ . DIRECTORY_SEPARATOR . 'l10n.tpl.php',
-      'class' => 'if-no-errors',
-      'weight' => 30,
+      'class' => '',
+      'weight' => 10,
     );
   }, \Civi\Setup::PRIORITY_PREPARE);
diff --git a/civicrm/setup/plugins/init/AvailableLangs.civi-setup.php b/civicrm/setup/plugins/init/AvailableLangs.civi-setup.php
index 4eb5730d6c7d62d815cbb95b91e03115d25db915..603fa494d34512d8bc67a2b86942f14cbc09d7c3 100644
--- a/civicrm/setup/plugins/init/AvailableLangs.civi-setup.php
+++ b/civicrm/setup/plugins/init/AvailableLangs.civi-setup.php
@@ -19,16 +19,7 @@ if (!defined('CIVI_SETUP')) {
     $m = $e->getModel();
 
     $langs = NULL;
-    require implode(DIRECTORY_SEPARATOR, [$m->srcPath, 'install', 'langs.php']);
-    foreach ($langs as $locale => $_) {
-      if ($locale == 'en_US') {
-        continue;
-      }
-      if (!file_exists(implode(DIRECTORY_SEPARATOR, array($m->srcPath, 'sql', "civicrm_data.$locale.mysql")))) {
-        unset($langs[$locale]);
-      }
-    }
-
+    require implode(DIRECTORY_SEPARATOR, [$m->srcPath, 'setup', 'res', 'languages.php']);
     $m->setField('lang', 'options', $langs);
 
   }, \Civi\Setup::PRIORITY_PREPARE);
diff --git a/civicrm/setup/plugins/init/Backdrop.civi-setup.php b/civicrm/setup/plugins/init/Backdrop.civi-setup.php
index 4805d998f46b6c8e3e411a3989207a4217b668cb..c5d832a3edfd9d39b45167ae9894b249e8e0803b 100644
--- a/civicrm/setup/plugins/init/Backdrop.civi-setup.php
+++ b/civicrm/setup/plugins/init/Backdrop.civi-setup.php
@@ -57,6 +57,8 @@ if (!defined('CIVI_SETUP')) {
     // $model->paths['civicrm.files']['url'] = $filePublicPath;
     $model->paths['civicrm.files']['path'] = implode(DIRECTORY_SEPARATOR,
       [_backdrop_civisetup_getPublicFiles(), 'civicrm']);
+    $model->paths['civicrm.private']['path'] = implode(DIRECTORY_SEPARATOR,
+      [_backdrop_civisetup_getPrivateFiles(), 'civicrm']);
 
     // Compute templateCompileDir.
     $model->templateCompilePath = implode(DIRECTORY_SEPARATOR,
diff --git a/civicrm/setup/plugins/init/Drupal.civi-setup.php b/civicrm/setup/plugins/init/Drupal.civi-setup.php
index c65d12f220ff445e04d0dce18b27240fdf843a73..02bf1bb87f72ab6fbeceb70a48c1604528f3ae36 100644
--- a/civicrm/setup/plugins/init/Drupal.civi-setup.php
+++ b/civicrm/setup/plugins/init/Drupal.civi-setup.php
@@ -55,6 +55,8 @@ if (!defined('CIVI_SETUP')) {
     // $model->paths['civicrm.files']['url'] = $filePublicPath;
     $model->paths['civicrm.files']['path'] = implode(DIRECTORY_SEPARATOR,
       [_drupal_civisetup_getPublicFiles(), 'civicrm']);
+    $model->paths['civicrm.private']['path'] = implode(DIRECTORY_SEPARATOR,
+      [_drupal_civisetup_getPrivateFiles(), 'civicrm']);
 
     // Compute templateCompileDir.
     $model->templateCompilePath = implode(DIRECTORY_SEPARATOR,
diff --git a/civicrm/setup/plugins/init/Drupal8.civi-setup.php b/civicrm/setup/plugins/init/Drupal8.civi-setup.php
index f81b362a51ec1bf066db5bd2632149e1494f57fb..32b789f2e1f3d060a445db59f1ae509ea6dee9e4 100644
--- a/civicrm/setup/plugins/init/Drupal8.civi-setup.php
+++ b/civicrm/setup/plugins/init/Drupal8.civi-setup.php
@@ -59,6 +59,7 @@ if (!defined('CIVI_SETUP')) {
     // Compute general paths
     $model->paths['civicrm.files']['url'] = implode('/', [$model->cmsBaseUrl, \Drupal\Core\StreamWrapper\PublicStream::basePath(), 'civicrm']);
     $model->paths['civicrm.files']['path'] = implode(DIRECTORY_SEPARATOR, [_drupal8_civisetup_getPublicFiles(), 'civicrm']);
+    $model->paths['civicrm.private']['path'] = implode(DIRECTORY_SEPARATOR, [_drupal8_civisetup_getPrivateFiles(), 'civicrm']);
 
     // Compute templateCompileDir.
     $model->templateCompilePath = implode(DIRECTORY_SEPARATOR, [_drupal8_civisetup_getPrivateFiles(), 'civicrm', 'templates_c']);
diff --git a/civicrm/setup/plugins/init/Standalone.civi-setup.php b/civicrm/setup/plugins/init/Standalone.civi-setup.php
index 7c0820b4c83e96477f18a5a53e90ed46ecf89693..82c34364f5c72b1c3b08d38cf62bf6fdd40343aa 100644
--- a/civicrm/setup/plugins/init/Standalone.civi-setup.php
+++ b/civicrm/setup/plugins/init/Standalone.civi-setup.php
@@ -75,7 +75,7 @@ function _standalone_setup_scheme(): string {
     if (empty($projectRootPath)) {
       throw new \RuntimeException("Failed to identify standalone root. (TIP: Set extras.standaloneRoot)");
     }
-
+    $model->paths['civicrm.private']['path'] = implode(DIRECTORY_SEPARATOR, [$projectRootPath, 'data']);
     $model->settingsPath = implode(DIRECTORY_SEPARATOR, [$projectRootPath, 'data', 'civicrm.settings.php']);
     $model->templateCompilePath = implode(DIRECTORY_SEPARATOR, [$projectRootPath, 'data', 'templates_c']);
     // print "\n-------------------------\nSet model values:\n" . json_encode($model->getValues(), JSON_PRETTY_PRINT) . "\n-----------------------------\n";
diff --git a/civicrm/setup/plugins/init/StandaloneUsers.civi-setup.php b/civicrm/setup/plugins/init/StandaloneUsers.civi-setup.php
index b756ef77c8613888f4b5867e522607f96a52f4bf..51db2076e9b6e6b98e48a864afcf4e680f30c243 100644
--- a/civicrm/setup/plugins/init/StandaloneUsers.civi-setup.php
+++ b/civicrm/setup/plugins/init/StandaloneUsers.civi-setup.php
@@ -50,7 +50,7 @@ if (!defined('CIVI_SETUP')) {
           'label' => ts('Everyone, including anonymous users'),
           // Provide default open permissions
           'permissions' => [
-            'CiviMail subscribe/unsubscribe pages',
+            'access CiviMail subscribe/unsubscribe pages',
             'make online contributions',
             'view event info',
             'register for events',
@@ -58,10 +58,100 @@ if (!defined('CIVI_SETUP')) {
             'authenticate with password',
           ],
         ],
+        [
+          'name' => 'staff',
+          'label' => ts('Staff'),
+          'permissions' => [
+            'access AJAX API',
+            'access CiviCRM',
+            'access Contact Dashboard',
+            'access uploaded files',
+            'add contacts',
+            'view my contact',
+            'view all contacts',
+            'edit all contacts',
+            'edit my contact',
+            'delete contacts',
+            'import contacts',
+            'access deleted contacts',
+            'merge duplicate contacts',
+            'edit groups',
+            'manage tags',
+            'administer Tagsets',
+            'view all activities',
+            'delete activities',
+            'add contact notes',
+            'view all notes',
+            'access CiviContribute',
+            'delete in CiviContribute',
+            'edit contributions',
+            'make online contributions',
+            'view my invoices',
+            'access CiviEvent',
+            'delete in CiviEvent',
+            'edit all events',
+            'edit event participants',
+            'register for events',
+            'view event info',
+            'view event participants',
+            'gotv campaign contacts',
+            'interview campaign contacts',
+            'manage campaign',
+            'release campaign contacts',
+            'reserve campaign contacts',
+            'sign CiviCRM Petition',
+            'access CiviGrant',
+            'delete in CiviGrant',
+            'edit grants',
+            'access CiviMail',
+            'access CiviMail subscribe/unsubscribe pages',
+            'delete in CiviMail',
+            'view public CiviMail content',
+            'access CiviMember',
+            'delete in CiviMember',
+            'edit memberships',
+            'access all cases and activities',
+            'access my cases and activities',
+            'add cases',
+            'delete in CiviCase',
+            'access CiviPledge',
+            'delete in CiviPledge',
+            'edit pledges',
+            'access CiviReport',
+            'access Report Criteria',
+            'administer reserved reports',
+            'save Report Criteria',
+            'profile create',
+            'profile edit',
+            'profile listings',
+            'profile listings and forms',
+            'profile view',
+            'close all manual batches',
+            'close own manual batches',
+            'create manual batch',
+            'delete all manual batches',
+            'delete own manual batches',
+            'edit all manual batches',
+            'edit own manual batches',
+            'export all manual batches',
+            'export own manual batches',
+            'reopen all manual batches',
+            'reopen own manual batches',
+            'view all manual batches',
+            'view own manual batches',
+            'access all custom data',
+            'access contact reference fields',
+            // The admninister CiviCRM data implicitly sets other permissions as well.
+            // Such as, edit message templates and admnister dedupe rules.
+            'administer CiviCRM Data',
+          ],
+        ],
         [
           'name' => 'admin',
           'label' => ts('Administrator'),
-          'permissions' => array_keys(\CRM_Core_SelectValues::permissions()),
+          'permissions' => [
+            'all CiviCRM permissions and ACLs',
+          ],
         ],
       ])
       ->execute()->indexBy('name');
diff --git a/civicrm/setup/plugins/init/WordPress.civi-setup.php b/civicrm/setup/plugins/init/WordPress.civi-setup.php
index f273231d0c8e32f0eb60106b27d432a34c8e90c9..01c46bb313a94938cf165bee3659b18a9bf42713 100644
--- a/civicrm/setup/plugins/init/WordPress.civi-setup.php
+++ b/civicrm/setup/plugins/init/WordPress.civi-setup.php
@@ -47,6 +47,7 @@ if (!defined('CIVI_SETUP')) {
       $model->settingsPath = $preferredSettingsPath;
     }
 
+    $model->paths['civicrm.private']['path'] = implode(DIRECTORY_SEPARATOR, [$uploadDir['basedir'], 'civicrm']);
     $model->templateCompilePath = implode(DIRECTORY_SEPARATOR, [$uploadDir['basedir'], 'civicrm', 'templates_c']);
 
     // Compute DSN.
diff --git a/civicrm/setup/plugins/installFiles/l10nDownload.civi-setup.php b/civicrm/setup/plugins/installFiles/l10nDownload.civi-setup.php
new file mode 100644
index 0000000000000000000000000000000000000000..9f9f210fba8ec1187521ad45383cf3c0d3c28162
--- /dev/null
+++ b/civicrm/setup/plugins/installFiles/l10nDownload.civi-setup.php
@@ -0,0 +1,91 @@
+<?php
+/**
+ * @file
+ *
+ * Generate the civicrm.settings.php file.
+ */
+
+if (!defined('CIVI_SETUP')) {
+  exit("Installation plugins must only be loaded by the installer.\n");
+}
+
+/**
+ * Validate the $model.
+ */
+\Civi\Setup::dispatcher()
+  ->addListener('civi.setup.checkRequirements', function(\Civi\Setup\Event\CheckRequirementsEvent $e) {
+    $lang = \Civi\Setup::instance()->getModel()->lang;
+    if ($lang && $lang != 'en_US') {
+      // build list of candidate folders in preferred order
+      $candidates = [];
+      // if it's already set, that's our pref
+      if (isset($e->getModel()->paths['civicrm.l10n']['path'])) {
+        $candidates[] = $e->getModel()->paths['civicrm.l10n']['path'];
+      }
+      // Now check CIVICRM_L10N_BASEDIR via either define or env.
+      // The GenCode.php tries to locate the l10n files
+      // from this location if other than l10n in the civicrm core directory.
+      $civicrm_l10n_basedir = CRM_Utils_Constant::value('CIVICRM_L10N_BASEDIR');
+      if ($civicrm_l10n_basedir) {
+        $candidates[] = $civicrm_l10n_basedir . DIRECTORY_SEPARATOR . 'l10n';
+      }
+      elseif (isset($e->getModel()->paths['civicrm.private']['path'])) {
+        // If the civicrm files directory is set use this as the base path.
+        $candidates[] = $e->getModel()->paths['civicrm.private']['path'] . DIRECTORY_SEPARATOR . 'l10n';
+      }
+      // Use CiviCRM Core directory as a fall back.
+      $candidates[] = $e->getModel()->srcPath . DIRECTORY_SEPARATOR . 'l10n';
+
+      // Now see if any of the folders already exist.
+      foreach ($candidates as $candidate) {
+        if (is_dir($candidate)) {
+          $e->getModel()->paths['civicrm.l10n']['path'] = $candidate;
+          break;
+        }
+      }
+      // If none existed, then take our first preference. We know there's always at least one.
+      if (!isset($e->getModel()->paths['civicrm.l10n']['path'])) {
+        $e->getModel()->paths['civicrm.l10n']['path'] = $candidates[0];
+      }
+
+      if (getenv('CIVICRM_L10N_BASEDIR') === FALSE) {
+        // Set the environment variable CIVICRM_L10N_BASEDIR which is used in xml/GenCode.php
+        // to create the localized sql files.
+        putenv('CIVICRM_L10N_BASEDIR=' . $e->getModel()->paths['civicrm.l10n']['path']);
+      }
+      if (!is_dir($e->getModel()->paths['civicrm.l10n']['path'])) {
+        \Civi\Setup::log()->info("Creating directory: " . $e->getModel()->paths['civicrm.l10n']['path']);
+        if (!mkdir($e->getModel()->paths['civicrm.l10n']['path'], 0777, TRUE)) {
+          $e->addError('system', 'l10nWritable', sprintf('Unable to create l10n directory "%s"', $e->getModel()->paths['civicrm.l10n']['path']));
+        }
+      }
+    }
+  }, \Civi\Setup::PRIORITY_MAIN);
+
+\Civi\Setup::dispatcher()
+  ->addListener('civi.setup.installFiles', function (\Civi\Setup\Event\InstallFilesEvent $e) {
+    $lang = \Civi\Setup::instance()->getModel()->lang;
+    if ($lang && $lang != 'en_US') {
+      $downloadDir = $e->getModel()->paths['civicrm.l10n']['path'] . DIRECTORY_SEPARATOR . $lang . DIRECTORY_SEPARATOR . 'LC_MESSAGES';
+      if (!is_dir($downloadDir)) {
+        \Civi\Setup::log()->info("Creating directory: " . $downloadDir);
+        if (!mkdir($downloadDir, 0777, TRUE)) {
+          $e->addError('system', 'l10nWritable', sprintf('Unable to create language directory "%s"', $downloadDir));
+        }
+
+        foreach ($e->getModel()->moFiles as $moFile => $url) {
+          $l10DownloadFile = str_replace('[locale]', $lang, $url);
+          \Civi\Setup::log()
+            ->info("Download translation '$moFile' from " . $l10DownloadFile . ' into ' . $downloadDir);
+          $client = new \GuzzleHttp\Client();
+          $response = $client->get($l10DownloadFile);
+          if ($response->getStatusCode() == 200) {
+            $success = file_put_contents($downloadDir . DIRECTORY_SEPARATOR . $moFile, $response->getBody());
+            if (!$success) {
+              $e->addError('l10n', 'download', 'Unable to download translation file');
+            }
+          }
+        }
+      }
+    }
+  }, \Civi\Setup::PRIORITY_MAIN);
diff --git a/civicrm/setup/res/languages.php b/civicrm/setup/res/languages.php
new file mode 100644
index 0000000000000000000000000000000000000000..0f0844467a33c4ff2151d3bff5b06125766eddc8
--- /dev/null
+++ b/civicrm/setup/res/languages.php
@@ -0,0 +1,54 @@
+<?php
+\Civi\Setup::assertRunning();
+$langs = [
+  'af_ZA' => 'Afrikaans',
+  'sq_AL' => 'Albanian',
+  'ar_EG' => 'Arabic',
+  'bg_BG' => 'Bulgarian',
+  'ca_ES' => 'Catalan; Valencian',
+  'zh_CN' => 'Chinese (China)',
+  'zh_TW' => 'Chinese (Taiwan)',
+  'hr_HR' => 'Croatian',
+  'cs_CZ' => 'Czech',
+  'da_DK' => 'Danish',
+  'nl_NL' => 'Dutch (Netherlands)',
+  'nl_BE' => 'Dutch (Belgium)',
+  'en_AU' => 'English (Australia)',
+  'en_CA' => 'English (Canada)',
+  'en_GB' => 'English (United Kingdom)',
+  'en_US' => 'English (United States)',
+  'et_EE' => 'Estonian',
+  'fi_FI' => 'Finnish',
+  'fr_CA' => 'French (Canada)',
+  'fr_FR' => 'French (France)',
+  'de_DE' => 'German',
+  'de_CH' => 'German (Swiss)',
+  'el_GR' => 'Greek, Modern',
+  'he_IL' => 'Hebrew (modern)',
+  'hi_IN' => 'Hindi',
+  'hu_HU' => 'Hungarian',
+  'id_ID' => 'Indonesian',
+  'it_IT' => 'Italian',
+  'ja_JP' => 'Japanese',
+  'km_KH' => 'Khmer',
+  'lt_LT' => 'Lithuanian',
+  'nb_NO' => 'Norwegian Bokmål',
+  'fa_IR' => 'Persian (Iran)',
+  'pl_PL' => 'Polish',
+  'pt_BR' => 'Portuguese (Brazil)',
+  'pt_PT' => 'Portuguese (Portugal)',
+  'ro_RO' => 'Romanian, Moldavian, Moldovan',
+  'ru_RU' => 'Russian',
+  'sr_RS' => 'Serbian',
+  'sk_SK' => 'Slovak',
+  'sl_SI' => 'Slovene',
+  'es_ES' => 'Spanish; Castilian (Spain)',
+  'es_MX' => 'Spanish; Castilian (Mexico)',
+  'es_PR' => 'Spanish; Castilian (Puerto Rico)',
+  'sv_SE' => 'Swedish',
+  'te_IN' => 'Telugu',
+  'th_TH' => 'Thai',
+  'tr_TR' => 'Turkish',
+  'uk_UA' => 'Ukrainian',
+  'vi_VN' => 'Vietnamese',
+];
diff --git a/civicrm/setup/src/Setup/Model.php b/civicrm/setup/src/Setup/Model.php
index a8e00e11478c6274aecb02d1ade3d0a0a0a8c2e6..d7c24a8ead49fe5de3d6692e57224405bf70974e 100644
--- a/civicrm/setup/src/Setup/Model.php
+++ b/civicrm/setup/src/Setup/Model.php
@@ -3,6 +3,7 @@ namespace Civi\Setup;
 
 /**
  * Class Model
+ *
  * @package Civi\Setup
  *
  * The `Model` defines the main options and inputs that are used to configure
@@ -62,6 +63,10 @@ namespace Civi\Setup;
  *   Keys should be prefixed based on which plugin manages the field.
  *   Values must only be scalars (bool/int/string) and arrays.
  *   Ex: ['opt-in.version-check' => TRUE].
+ * @property array $moFiles
+ *   Open-ended list translations files which should be downloaded. Each entry is a url of an mo-file.
+ *   Provide each entry with en_US langugae code. That code will be replaced with the actual language.
+ *   The default is: ['https://download.civicrm.org/civicrm-l10n-core/mo/en_US/civicrm.mo']
  */
 class Model {
 
@@ -172,6 +177,14 @@ class Model {
       'type' => 'array',
       'value' => array(),
     ));
+    $this->addField(array(
+      'description' => 'l10n download files. The [locale] will be replaced with the selected language.',
+      'name' => 'moFiles',
+      'type' => 'array',
+      'value' => array(
+        'civicrm.mo' => 'https://download.civicrm.org/civicrm-l10n-core/mo/[locale]/civicrm.mo',
+      ),
+    ));
   }
 
   /**
diff --git a/civicrm/sql/civicrm.mysql b/civicrm/sql/civicrm.mysql
index 31c74fb7dc7441275193cc983355d32dfdb9ef75..b3586f94c4fe286e37bc7c55eb83b3a63a0ba837 100644
--- a/civicrm/sql/civicrm.mysql
+++ b/civicrm/sql/civicrm.mysql
@@ -1898,6 +1898,7 @@ CREATE TABLE `civicrm_uf_match` (
   `language` varchar(5) COMMENT 'UI language preferred by the given user/contact',
   PRIMARY KEY (`id`),
   INDEX `I_civicrm_uf_match_uf_id`(uf_id),
+  INDEX `UI_uf_match_uf_id_domain_id`(uf_id, domain_id),
   UNIQUE INDEX `UI_uf_name_domain_id`(uf_name, domain_id),
   UNIQUE INDEX `UI_contact_domain_id`(contact_id, domain_id),
   CONSTRAINT FK_civicrm_uf_match_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
@@ -4004,6 +4005,7 @@ CREATE TABLE `civicrm_event` (
   `slot_label_id` int unsigned DEFAULT NULL COMMENT 'Needs to be moved to Event cart extension. Subevent slot label. Implicit FK to civicrm_option_value where option_group = conference_slot.',
   `dedupe_rule_group_id` int unsigned DEFAULT NULL COMMENT 'Rule to use when matching registrations for this event',
   `is_billing_required` tinyint NOT NULL DEFAULT 0 COMMENT 'if true than billing block is required this event',
+  `is_show_calendar_links` tinyint NOT NULL DEFAULT 1 COMMENT 'If true then calendar links are shown for this event.',
   PRIMARY KEY (`id`),
   INDEX `index_event_type_id`(event_type_id),
   INDEX `index_participant_listing_id`(participant_listing_id),
diff --git a/civicrm/sql/civicrm_data.mysql b/civicrm/sql/civicrm_data.mysql
index fb05e74e175a3973449885ca2254e0cb3d7c665d..b9af0a8777da61c63332a0bced49ed090e3323f0 100644
--- a/civicrm/sql/civicrm_data.mysql
+++ b/civicrm/sql/civicrm_data.mysql
@@ -290,4174 +290,4085 @@ INSERT INTO civicrm_country (id, name,iso_code,region_id,is_province_abbreviated
 --
 /*!40101 SET NAMES utf8mb4 */;
 
-INSERT INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES
-(1000, 1228, "AL", "Alabama"),
-(1001, 1228, "AK", "Alaska"),
-(1002, 1228, "AZ", "Arizona"),
-(1003, 1228, "AR", "Arkansas"),
-(1004, 1228, "CA", "California"),
-(1005, 1228, "CO", "Colorado"),
-(1006, 1228, "CT", "Connecticut"),
-(1007, 1228, "DE", "Delaware"),
-(1008, 1228, "FL", "Florida"),
-(1009, 1228, "GA", "Georgia"),
-(1010, 1228, "HI", "Hawaii"),
-(1011, 1228, "ID", "Idaho"),
-(1012, 1228, "IL", "Illinois"),
-(1013, 1228, "IN", "Indiana"),
-(1014, 1228, "IA", "Iowa"),
-(1015, 1228, "KS", "Kansas"),
-(1016, 1228, "KY", "Kentucky"),
-(1017, 1228, "LA", "Louisiana"),
-(1018, 1228, "ME", "Maine"),
-(1019, 1228, "MD", "Maryland"),
-(1020, 1228, "MA", "Massachusetts"),
-(1021, 1228, "MI", "Michigan"),
-(1022, 1228, "MN", "Minnesota"),
-(1023, 1228, "MS", "Mississippi"),
-(1024, 1228, "MO", "Missouri"),
-(1025, 1228, "MT", "Montana"),
-(1026, 1228, "NE", "Nebraska"),
-(1027, 1228, "NV", "Nevada"),
-(1028, 1228, "NH", "New Hampshire"),
-(1029, 1228, "NJ", "New Jersey"),
-(1030, 1228, "NM", "New Mexico"),
-(1031, 1228, "NY", "New York"),
-(1032, 1228, "NC", "North Carolina"),
-(1033, 1228, "ND", "North Dakota"),
-(1034, 1228, "OH", "Ohio"),
-(1035, 1228, "OK", "Oklahoma"),
-(1036, 1228, "OR", "Oregon"),
-(1037, 1228, "PA", "Pennsylvania"),
-(1038, 1228, "RI", "Rhode Island"),
-(1039, 1228, "SC", "South Carolina"),
-(1040, 1228, "SD", "South Dakota"),
-(1041, 1228, "TN", "Tennessee"),
-(1042, 1228, "TX", "Texas"),
-(1043, 1228, "UT", "Utah"),
-(1044, 1228, "VT", "Vermont"),
-(1045, 1228, "VA", "Virginia"),
-(1046, 1228, "WA", "Washington"),
-(1047, 1228, "WV", "West Virginia"),
-(1048, 1228, "WI", "Wisconsin"),
-(1049, 1228, "WY", "Wyoming"),
-(1050, 1228, "DC", "District of Columbia"),
-(1052, 1228, "AS", "American Samoa"),
-(1053, 1228, "GU", "Guam"),
-(1055, 1228, "MP", "Northern Mariana Islands"),
-(1056, 1228, "PR", "Puerto Rico"),
-(1057, 1228, "VI", "Virgin Islands"),
-(1058, 1228, "UM", "United States Minor Outlying Islands"),
-(1059, 1228, "AE", "Armed Forces Europe"),
-(1060, 1228, "AA", "Armed Forces Americas"),
-(1061, 1228, "AP", "Armed Forces Pacific"),
-(1100, 1039, "AB", "Alberta"),
-(1101, 1039, "BC", "British Columbia"),
-(1102, 1039, "MB", "Manitoba"),
-(1103, 1039, "NB", "New Brunswick"),
-(1104, 1039, "NL", "Newfoundland and Labrador"),
-(1105, 1039, "NT", "Northwest Territories"),
-(1106, 1039, "NS", "Nova Scotia"),
-(1107, 1039, "NU", "Nunavut"),
-(1108, 1039, "ON", "Ontario"),
-(1109, 1039, "PE", "Prince Edward Island"),
-(1110, 1039, "QC", "Quebec"),
-(1111, 1039, "SK", "Saskatchewan"),
-(1112, 1039, "YT", "Yukon Territory"),
-(1200, 1101, "MH", "Maharashtra"),
-(1201, 1101, "KA", "Karnataka"),
-(1202, 1101, "AP", "Andhra Pradesh"),
-(1203, 1101, "AR", "Arunachal Pradesh"),
-(1204, 1101, "AS", "Assam"),
-(1205, 1101, "BR", "Bihar"),
-(1206, 1101, "CG", "Chhattisgarh"),
-(1207, 1101, "GA", "Goa"),
-(1208, 1101, "GJ", "Gujarat"),
-(1209, 1101, "HR", "Haryana"),
-(1210, 1101, "HP", "Himachal Pradesh"),
-(1211, 1101, "JK", "Jammu and Kashmir"),
-(1212, 1101, "JH", "Jharkhand"),
-(1213, 1101, "KL", "Kerala"),
-(1214, 1101, "MP", "Madhya Pradesh"),
-(1215, 1101, "MN", "Manipur"),
-(1216, 1101, "ML", "Meghalaya"),
-(1217, 1101, "MZ", "Mizoram"),
-(1218, 1101, "NL", "Nagaland"),
-(1219, 1101, "OR", "Orissa"),
-(1220, 1101, "PB", "Punjab"),
-(1221, 1101, "RJ", "Rajasthan"),
-(1222, 1101, "SK", "Sikkim"),
-(1223, 1101, "TN", "Tamil Nadu"),
-(1224, 1101, "TR", "Tripura"),
-(1225, 1101, "UT", "Uttarakhand"),
-(1226, 1101, "UP", "Uttar Pradesh"),
-(1227, 1101, "WB", "West Bengal"),
-(1228, 1101, "AN", "Andaman and Nicobar Islands"),
-(1231, 1101, "DL", "Delhi"),
-(1232, 1101, "LD", "Lakshadweep"),
-(1233, 1101, "PY", "Pondicherry"),
+-- For historical reasons we start the sequence at 1000 as an attempt to help
+-- with tests and with legacy third-party code that may have hardcoded IDs.
+-- This may change in the future.
+ALTER TABLE civicrm_state_province AUTO_INCREMENT=1000;
+
+-- Note to developers: records are somewhat sorted by country ID
+-- Insert changes directly in the list (keeping the sort), not at the end
+-- All changes must also have a corresponding upgrade statement in
+-- CRM/Upgrade/Incremental/sql/5.xx.alpha1.mysql.tpl
+
+INSERT INTO civicrm_state_province (country_id, abbreviation, name) VALUES
+(1228, "AL", "Alabama"),
+(1228, "AK", "Alaska"),
+(1228, "AZ", "Arizona"),
+(1228, "AR", "Arkansas"),
+(1228, "CA", "California"),
+(1228, "CO", "Colorado"),
+(1228, "CT", "Connecticut"),
+(1228, "DE", "Delaware"),
+(1228, "FL", "Florida"),
+(1228, "GA", "Georgia"),
+(1228, "HI", "Hawaii"),
+(1228, "ID", "Idaho"),
+(1228, "IL", "Illinois"),
+(1228, "IN", "Indiana"),
+(1228, "IA", "Iowa"),
+(1228, "KS", "Kansas"),
+(1228, "KY", "Kentucky"),
+(1228, "LA", "Louisiana"),
+(1228, "ME", "Maine"),
+(1228, "MD", "Maryland"),
+(1228, "MA", "Massachusetts"),
+(1228, "MI", "Michigan"),
+(1228, "MN", "Minnesota"),
+(1228, "MS", "Mississippi"),
+(1228, "MO", "Missouri"),
+(1228, "MT", "Montana"),
+(1228, "NE", "Nebraska"),
+(1228, "NV", "Nevada"),
+(1228, "NH", "New Hampshire"),
+(1228, "NJ", "New Jersey"),
+(1228, "NM", "New Mexico"),
+(1228, "NY", "New York"),
+(1228, "NC", "North Carolina"),
+(1228, "ND", "North Dakota"),
+(1228, "OH", "Ohio"),
+(1228, "OK", "Oklahoma"),
+(1228, "OR", "Oregon"),
+(1228, "PA", "Pennsylvania"),
+(1228, "RI", "Rhode Island"),
+(1228, "SC", "South Carolina"),
+(1228, "SD", "South Dakota"),
+(1228, "TN", "Tennessee"),
+(1228, "TX", "Texas"),
+(1228, "UT", "Utah"),
+(1228, "VT", "Vermont"),
+(1228, "VA", "Virginia"),
+(1228, "WA", "Washington"),
+(1228, "WV", "West Virginia"),
+(1228, "WI", "Wisconsin"),
+(1228, "WY", "Wyoming"),
+(1228, "DC", "District of Columbia"),
+(1228, "AS", "American Samoa"),
+(1228, "GU", "Guam"),
+(1228, "MP", "Northern Mariana Islands"),
+(1228, "PR", "Puerto Rico"),
+(1228, "VI", "Virgin Islands"),
+(1228, "UM", "United States Minor Outlying Islands"),
+(1228, "AE", "Armed Forces Europe"),
+(1228, "AA", "Armed Forces Americas"),
+(1228, "AP", "Armed Forces Pacific"),
+(1039, "AB", "Alberta"),
+(1039, "BC", "British Columbia"),
+(1039, "MB", "Manitoba"),
+(1039, "NB", "New Brunswick"),
+(1039, "NL", "Newfoundland and Labrador"),
+(1039, "NT", "Northwest Territories"),
+(1039, "NS", "Nova Scotia"),
+(1039, "NU", "Nunavut"),
+(1039, "ON", "Ontario"),
+(1039, "PE", "Prince Edward Island"),
+(1039, "QC", "Quebec"),
+(1039, "SK", "Saskatchewan"),
+(1039, "YT", "Yukon Territory"),
+(1101, "MH", "Maharashtra"),
+(1101, "KA", "Karnataka"),
+(1101, "AP", "Andhra Pradesh"),
+(1101, "AR", "Arunachal Pradesh"),
+(1101, "AS", "Assam"),
+(1101, "BR", "Bihar"),
+(1101, "CG", "Chhattisgarh"),
+(1101, "GA", "Goa"),
+(1101, "GJ", "Gujarat"),
+(1101, "HR", "Haryana"),
+(1101, "HP", "Himachal Pradesh"),
+(1101, "JK", "Jammu and Kashmir"),
+(1101, "JH", "Jharkhand"),
+(1101, "KL", "Kerala"),
+(1101, "MP", "Madhya Pradesh"),
+(1101, "MN", "Manipur"),
+(1101, "ML", "Meghalaya"),
+(1101, "MZ", "Mizoram"),
+(1101, "NL", "Nagaland"),
+(1101, "OR", "Orissa"),
+(1101, "PB", "Punjab"),
+(1101, "RJ", "Rajasthan"),
+(1101, "SK", "Sikkim"),
+(1101, "TN", "Tamil Nadu"),
+(1101, "TR", "Tripura"),
+(1101, "UT", "Uttarakhand"),
+(1101, "UP", "Uttar Pradesh"),
+(1101, "WB", "West Bengal"),
+(1101, "AN", "Andaman and Nicobar Islands"),
+(1101, "DL", "Delhi"),
+(1101, "LD", "Lakshadweep"),
+(1101, "PY", "Pondicherry"),
+(1101, "TG", "Telangana"),
+(1101, "DH", "Dādra and Nagar Haveli and Damān and Diu"),
+(1101, "LA", "Ladākh"),
+(1101, "CH", "Chandigarh"),
 -- Note we believe all lower-case is correct for Poland. See https://github.com/civicrm/civicrm-core/pull/17107
-(1300, 1172, "MZ", "mazowieckie"),
-(1301, 1172, "PM", "pomorskie"),
-(1302, 1172, "DS", "dolnośląskie"),
-(1303, 1172, "KP", "kujawsko-pomorskie"),
-(1304, 1172, "LU", "lubelskie"),
-(1305, 1172, "LB", "lubuskie"),
-(1306, 1172, "LD", "łódzkie"),
-(1307, 1172, "MA", "małopolskie"),
-(1308, 1172, "OP", "opolskie"),
-(1309, 1172, "PK", "podkarpackie"),
-(1310, 1172, "PD", "podlaskie"),
-(1311, 1172, "SL", "śląskie"),
-(1312, 1172, "SK", "świętokrzyskie"),
-(1313, 1172, "WN", "warmińsko-mazurskie"),
-(1314, 1172, "WP", "wielkopolskie"),
-(1315, 1172, "ZP", "zachodniopomorskie"),
-(1500, 1225, "AZ", "Abu Zaby"),
-(1501, 1225, "AJ", "\'Ajman"),
-(1502, 1225, "FU", "Al Fujayrah"),
-(1503, 1225, "SH", "Ash Shariqah"),
-(1504, 1225, "DU", "Dubayy"),
-(1505, 1225, "RK", "Ra\'s al Khaymah"),
-(1506, 1233, "33", "Dac Lac"),
-(1507, 1225, "UQ", "Umm al Qaywayn"),
-(1508, 1001, "BDS", "Badakhshan"),
-(1509, 1001, "BDG", "Badghis"),
-(1510, 1001, "BGL", "Baghlan"),
-(1511, 1001, "BAL", "Balkh"),
-(1512, 1001, "BAM", "Bamian"),
-(1513, 1001, "FRA", "Farah"),
-(1514, 1001, "FYB", "Faryab"),
-(1515, 1001, "GHA", "Ghazni"),
-(1516, 1001, "GHO", "Ghowr"),
-(1517, 1001, "HEL", "Helmand"),
-(1518, 1001, "HER", "Herat"),
-(1519, 1001, "JOW", "Jowzjan"),
-(1520, 1001, "KAB", "Kabul"),
-(1521, 1001, "KAN", "Kandahar"),
-(1522, 1001, "KAP", "Kapisa"),
-(1523, 1001, "KHO", "Khowst"),
-(1524, 1001, "KNR", "Konar"),
-(1525, 1001, "KDZ", "Kondoz"),
-(1526, 1001, "LAG", "Laghman"),
-(1527, 1001, "LOW", "Lowgar"),
-(1528, 1001, "NAN", "Nangrahar"),
-(1529, 1001, "NIM", "Nimruz"),
-(1530, 1001, "NUR", "Nurestan"),
-(1531, 1001, "ORU", "Oruzgan"),
-(1532, 1001, "PIA", "Paktia"),
-(1533, 1001, "PKA", "Paktika"),
-(1534, 1001, "PAR", "Parwan"),
-(1535, 1001, "SAM", "Samangan"),
-(1536, 1001, "SAR", "Sar-e Pol"),
-(1537, 1001, "TAK", "Takhar"),
-(1538, 1001, "WAR", "Wardak"),
-(1539, 1001, "ZAB", "Zabol"),
-(1540, 1002, "BR", "Berat"),
-(1541, 1002, "BU", "Bulqizë"),
-(1542, 1002, "DL", "Delvinë"),
-(1543, 1002, "DV", "Devoll"),
-(1544, 1002, "DI", "Dibër"),
-(1545, 1002, "DR", "Durrës"),
-(1546, 1002, "EL", "Elbasan"),
-(1547, 1002, "FR", "Fier"),
-(1548, 1002, "GR", "Gramsh"),
-(1549, 1002, "GJ", "Gjirokastër"),
-(1550, 1002, "HA", "Has"),
-(1551, 1002, "KA", "Kavajë"),
-(1552, 1002, "ER", "Kolonjë"),
-(1553, 1002, "KO", "Korçë"),
-(1554, 1002, "KR", "Krujë"),
-(1555, 1002, "KC", "Kuçovë"),
-(1556, 1002, "KU", "Kukës"),
-(1557, 1002, "KB", "Kurbin"),
-(1558, 1002, "LE", "Lezhë"),
-(1559, 1002, "LB", "Librazhd"),
-(1560, 1002, "LU", "Lushnjë"),
-(1561, 1002, "MM", "Malësi e Madhe"),
-(1562, 1002, "MK", "Mallakastër"),
-(1563, 1002, "MT", "Mat"),
-(1564, 1002, "MR", "Mirditë"),
-(1565, 1002, "PQ", "Peqin"),
-(1566, 1002, "PR", "Përmet"),
-(1567, 1002, "PG", "Pogradec"),
-(1568, 1002, "PU", "Pukë"),
-(1569, 1002, "SR", "Sarandë"),
-(1570, 1002, "SK", "Skrapar"),
-(1571, 1002, "SH", "Shkodër"),
-(1572, 1002, "TE", "Tepelenë"),
-(1573, 1002, "TR", "Tiranë"),
-(1574, 1002, "TP", "Tropojë"),
-(1575, 1002, "VL", "Vlorë"),
-(1576, 1011, "ER", "Erevan"),
-(1577, 1011, "AG", "Aragacotn"),
-(1578, 1011, "AR", "Ararat"),
-(1579, 1011, "AV", "Armavir"),
-(1580, 1011, "GR", "Gegarkunik\'"),
-(1581, 1011, "KT", "Kotayk\'"),
-(1582, 1011, "LO", "Lory"),
-(1583, 1011, "SH", "Sirak"),
-(1584, 1011, "SU", "Syunik\'"),
-(1585, 1011, "TV", "Tavus"),
-(1586, 1011, "VD", "Vayoc Jor"),
-(1587, 1006, "BGO", "Bengo"),
-(1588, 1006, "BGU", "Benguela"),
-(1589, 1006, "BIE", "Bie"),
-(1590, 1006, "CAB", "Cabinda"),
-(1591, 1006, "CCU", "Cuando-Cubango"),
-(1592, 1006, "CNO", "Cuanza Norte"),
-(1593, 1006, "CUS", "Cuanza Sul"),
-(1594, 1006, "CNN", "Cunene"),
-(1595, 1006, "HUA", "Huambo"),
-(1596, 1006, "HUI", "Huila"),
-(1597, 1006, "LUA", "Luanda"),
-(1598, 1006, "LNO", "Lunda Norte"),
-(1599, 1006, "LSU", "Lunda Sul"),
-(1600, 1006, "MAL", "Malange"),
-(1601, 1006, "MOX", "Moxico"),
-(1602, 1006, "NAM", "Namibe"),
-(1603, 1006, "UIG", "Uige"),
-(1604, 1006, "ZAI", "Zaire"),
-(1605, 1010, "C", "Capital federal"),
-(1606, 1010, "B", "Buenos Aires"),
-(1607, 1010, "K", "Catamarca"),
-(1608, 1010, "X", "Cordoba"),
-(1609, 1010, "W", "Corrientes"),
-(1610, 1010, "H", "Chaco"),
-(1611, 1010, "U", "Chubut"),
-(1612, 1010, "E", "Entre Rios"),
-(1613, 1010, "P", "Formosa"),
-(1614, 1010, "Y", "Jujuy"),
-(1615, 1010, "L", "La Pampa"),
-(1616, 1010, "M", "Mendoza"),
-(1617, 1010, "N", "Misiones"),
-(1618, 1010, "Q", "Neuquen"),
-(1619, 1010, "R", "Rio Negro"),
-(1620, 1010, "A", "Salta"),
-(1621, 1010, "J", "San Juan"),
-(1622, 1010, "D", "San Luis"),
-(1623, 1010, "Z", "Santa Cruz"),
-(1624, 1010, "S", "Santa Fe"),
-(1625, 1010, "G", "Santiago del Estero"),
-(1626, 1010, "V", "Tierra del Fuego"),
-(1627, 1010, "T", "Tucuman"),
-(1628, 1014, "1", "Burgenland"),
-(1629, 1014, "2", "Kärnten"),
-(1630, 1014, "3", "Niederösterreich"),
-(1631, 1014, "4", "Oberösterreich"),
-(1632, 1014, "5", "Salzburg"),
-(1633, 1014, "6", "Steiermark"),
-(1634, 1014, "7", "Tirol"),
-(1635, 1014, "8", "Vorarlberg"),
-(1636, 1014, "9", "Wien"),
-(1637, 1008, "AAT", "Australian Antarctic Territory"),
-(1638, 1013, "ACT", "Australian Capital Territory"),
-(1639, 1013, "NT", "Northern Territory"),
-(1640, 1013, "NSW", "New South Wales"),
-(1641, 1013, "QLD", "Queensland"),
-(1642, 1013, "SA", "South Australia"),
-(1643, 1013, "TAS", "Tasmania"),
-(1644, 1013, "VIC", "Victoria"),
-(1645, 1013, "WA", "Western Australia"),
-(1646, 1015, "NX", "Naxcivan"),
-(1647, 1015, "AB", "Ali Bayramli"),
-(1648, 1015, "BA", "Baki"),
-(1649, 1015, "GA", "Ganca"),
-(1650, 1015, "LA", "Lankaran"),
-(1651, 1015, "MI", "Mingacevir"),
-(1652, 1015, "NA", "Naftalan"),
-(1653, 1015, "SA", "Saki"),
-(1654, 1015, "SM", "Sumqayit"),
-(1655, 1015, "SS", "Susa"),
-(1656, 1015, "XA", "Xankandi"),
-(1657, 1015, "YE", "Yevlax"),
-(1658, 1015, "ABS", "Abseron"),
-(1659, 1015, "AGC", "Agcabadi"),
-(1660, 1015, "AGM", "Agdam"),
-(1661, 1015, "AGS", "Agdas"),
-(1662, 1015, "AGA", "Agstafa"),
-(1663, 1015, "AGU", "Agsu"),
-(1664, 1015, "AST", "Astara"),
-(1665, 1015, "BAB", "Babak"),
-(1666, 1015, "BAL", "Balakan"),
-(1667, 1015, "BAR", "Barda"),
-(1668, 1015, "BEY", "Beylagan"),
-(1669, 1015, "BIL", "Bilasuvar"),
-(1670, 1015, "CAB", "Cabrayll"),
-(1671, 1015, "CAL", "Calilabad"),
-(1672, 1015, "CUL", "Culfa"),
-(1673, 1015, "DAS", "Daskasan"),
-(1674, 1015, "DAV", "Davaci"),
-(1675, 1015, "FUZ", "Fuzuli"),
-(1676, 1015, "GAD", "Gadabay"),
-(1677, 1015, "GOR", "Goranboy"),
-(1678, 1015, "GOY", "Goycay"),
-(1679, 1015, "HAC", "Haciqabul"),
-(1680, 1015, "IMI", "Imisli"),
-(1681, 1015, "ISM", "Ismayilli"),
-(1682, 1015, "KAL", "Kalbacar"),
-(1683, 1015, "KUR", "Kurdamir"),
-(1684, 1015, "LAC", "Lacin"),
-(1685, 1015, "LER", "Lerik"),
-(1686, 1015, "MAS", "Masalli"),
-(1687, 1015, "NEF", "Neftcala"),
-(1688, 1015, "OGU", "Oguz"),
-(1689, 1015, "ORD", "Ordubad"),
-(1690, 1015, "QAB", "Qabala"),
-(1691, 1015, "QAX", "Qax"),
-(1692, 1015, "QAZ", "Qazax"),
-(1693, 1015, "QOB", "Qobustan"),
-(1694, 1015, "QBA", "Quba"),
-(1695, 1015, "QBI", "Qubadli"),
-(1696, 1015, "QUS", "Qusar"),
-(1697, 1015, "SAT", "Saatli"),
-(1698, 1015, "SAB", "Sabirabad"),
-(1699, 1015, "SAD", "Sadarak"),
-(1700, 1015, "SAH", "Sahbuz"),
-(1701, 1015, "SAL", "Salyan"),
-(1702, 1015, "SMI", "Samaxi"),
-(1703, 1015, "SKR", "Samkir"),
-(1704, 1015, "SMX", "Samux"),
-(1705, 1015, "SAR", "Sarur"),
-(1706, 1015, "SIY", "Siyazan"),
-(1707, 1015, "TAR", "Tartar"),
-(1708, 1015, "TOV", "Tovuz"),
-(1709, 1015, "UCA", "Ucar"),
-(1710, 1015, "XAC", "Xacmaz"),
-(1711, 1015, "XAN", "Xanlar"),
-(1712, 1015, "XIZ", "Xizi"),
-(1713, 1015, "XCI", "Xocali"),
-(1714, 1015, "XVD", "Xocavand"),
-(1715, 1015, "YAR", "Yardimli"),
-(1716, 1015, "ZAN", "Zangilan"),
-(1717, 1015, "ZAQ", "Zaqatala"),
-(1718, 1015, "ZAR", "Zardab"),
-(1719, 1026, "BIH", "Federacija Bosna i Hercegovina"),
-(1720, 1026, "SRP", "Republika Srpska"),
-(1721, 1017, "05", "Bagerhat zila"),
-(1722, 1017, "01", "Bandarban zila"),
-(1723, 1017, "02", "Barguna zila"),
-(1724, 1017, "06", "Barisal zila"),
-(1725, 1017, "07", "Bhola zila"),
-(1726, 1017, "03", "Bogra zila"),
-(1727, 1017, "04", "Brahmanbaria zila"),
-(1728, 1017, "09", "Chandpur zila"),
-(1729, 1017, "10", "Chittagong zila"),
-(1730, 1017, "12", "Chuadanga zila"),
-(1731, 1017, "08", "Comilla zila"),
-(1732, 1017, "11", "Cox\'s Bazar zila"),
-(1733, 1017, "13", "Dhaka zila"),
-(1734, 1017, "14", "Dinajpur zila"),
-(1735, 1017, "15", "Faridpur zila"),
-(1736, 1017, "16", "Feni zila"),
-(1737, 1017, "19", "Gaibandha zila"),
-(1738, 1017, "18", "Gazipur zila"),
-(1739, 1017, "17", "Gopalganj zila"),
-(1740, 1017, "20", "Habiganj zila"),
-(1741, 1017, "24", "Jaipurhat zila"),
-(1742, 1017, "21", "Jamalpur zila"),
-(1743, 1017, "22", "Jessore zila"),
-(1744, 1017, "25", "Jhalakati zila"),
-(1745, 1017, "23", "Jhenaidah zila"),
-(1746, 1017, "29", "Khagrachari zila"),
-(1747, 1017, "27", "Khulna zila"),
-(1748, 1017, "26", "Kishorganj zila"),
-(1749, 1017, "28", "Kurigram zila"),
-(1750, 1017, "30", "Kushtia zila"),
-(1751, 1017, "31", "Lakshmipur zila"),
-(1752, 1017, "32", "Lalmonirhat zila"),
-(1753, 1017, "36", "Madaripur zila"),
-(1754, 1017, "37", "Magura zila"),
-(1755, 1017, "33", "Manikganj zila"),
-(1756, 1017, "39", "Meherpur zila"),
-(1757, 1017, "38", "Moulvibazar zila"),
-(1758, 1017, "35", "Munshiganj zila"),
-(1759, 1017, "34", "Mymensingh zila"),
-(1760, 1017, "48", "Naogaon zila"),
-(1761, 1017, "43", "Narail zila"),
-(1762, 1017, "40", "Narayanganj zila"),
-(1763, 1017, "42", "Narsingdi zila"),
-(1764, 1017, "44", "Natore zila"),
-(1765, 1017, "45", "Nawabganj zila"),
-(1766, 1017, "41", "Netrakona zila"),
-(1767, 1017, "46", "Nilphamari zila"),
-(1768, 1017, "47", "Noakhali zila"),
-(1769, 1017, "49", "Pabna zila"),
-(1770, 1017, "52", "Panchagarh zila"),
-(1771, 1017, "51", "Patuakhali zila"),
-(1772, 1017, "50", "Pirojpur zila"),
-(1773, 1017, "53", "Rajbari zila"),
-(1774, 1017, "54", "Rajshahi zila"),
-(1775, 1017, "56", "Rangamati zila"),
-(1776, 1017, "55", "Rangpur zila"),
-(1777, 1017, "58", "Satkhira zila"),
-(1778, 1017, "62", "Shariatpur zila"),
-(1779, 1017, "57", "Sherpur zila"),
-(1780, 1017, "59", "Sirajganj zila"),
-(1781, 1017, "61", "Sunamganj zila"),
-(1782, 1017, "60", "Sylhet zila"),
-(1783, 1017, "63", "Tangail zila"),
-(1784, 1017, "64", "Thakurgaon zila"),
-(1785, 1020, "VAN", "Antwerpen"),
-(1786, 1020, "WBR", "Brabant Wallon"),
-(1787, 1020, "WHT", "Hainaut"),
-(1788, 1020, "WLG", "Liege"),
-(1789, 1020, "VLI", "Limburg"),
-(1790, 1020, "WLX", "Luxembourg"),
-(1791, 1020, "WNA", "Namur"),
-(1792, 1020, "VOV", "Oost-Vlaanderen"),
-(1793, 1020, "VBR", "Vlaams-Brabant"),
-(1794, 1020, "VWV", "West-Vlaanderen"),
-(1795, 1034, "BAL", "Bale"),
-(1796, 1034, "BAM", "Bam"),
-(1797, 1034, "BAN", "Banwa"),
-(1798, 1034, "BAZ", "Bazega"),
-(1799, 1034, "BGR", "Bougouriba"),
-(1800, 1034, "BLG", "Boulgou"),
-(1801, 1034, "BLK", "Boulkiemde"),
-(1802, 1034, "COM", "Comoe"),
-(1803, 1034, "GAN", "Ganzourgou"),
-(1804, 1034, "GNA", "Gnagna"),
-(1805, 1034, "GOU", "Gourma"),
-(1806, 1034, "HOU", "Houet"),
-(1807, 1034, "IOB", "Ioba"),
-(1808, 1034, "KAD", "Kadiogo"),
-(1809, 1034, "KEN", "Kenedougou"),
-(1810, 1034, "KMD", "Komondjari"),
-(1811, 1034, "KMP", "Kompienga"),
-(1812, 1034, "KOS", "Kossi"),
-(1813, 1034, "KOP", "Koulpulogo"),
-(1814, 1034, "KOT", "Kouritenga"),
-(1815, 1034, "KOW", "Kourweogo"),
-(1816, 1034, "LER", "Leraba"),
-(1817, 1034, "LOR", "Loroum"),
-(1818, 1034, "MOU", "Mouhoun"),
-(1819, 1034, "NAO", "Nahouri"),
-(1820, 1034, "NAM", "Namentenga"),
-(1821, 1034, "NAY", "Nayala"),
-(1822, 1034, "NOU", "Noumbiel"),
-(1823, 1034, "OUB", "Oubritenga"),
-(1824, 1034, "OUD", "Oudalan"),
-(1825, 1034, "PAS", "Passore"),
-(1826, 1034, "PON", "Poni"),
-(1827, 1034, "SNG", "Sanguie"),
-(1828, 1034, "SMT", "Sanmatenga"),
-(1829, 1034, "SEN", "Seno"),
-(1830, 1034, "SIS", "Siasili"),
-(1831, 1034, "SOM", "Soum"),
-(1832, 1034, "SOR", "Sourou"),
-(1833, 1034, "TAP", "Tapoa"),
-(1834, 1034, "TUI", "Tui"),
-(1835, 1034, "YAG", "Yagha"),
-(1836, 1034, "YAT", "Yatenga"),
-(1837, 1034, "ZIR", "Ziro"),
-(1838, 1034, "ZON", "Zondoma"),
-(1839, 1034, "ZOU", "Zoundweogo"),
-(1840, 1033, "01", "Blagoevgrad"),
-(1841, 1033, "02", "Burgas"),
-(1842, 1033, "08", "Dobrich"),
-(1843, 1033, "07", "Gabrovo"),
-(1844, 1033, "26", "Haskovo"),
-(1845, 1033, "28", "Yambol"),
-(1846, 1033, "09", "Kardzhali"),
-(1847, 1033, "10", "Kyustendil"),
-(1848, 1033, "11", "Lovech"),
-(1849, 1033, "12", "Montana"),
-(1850, 1033, "13", "Pazardzhik"),
-(1851, 1033, "14", "Pernik"),
-(1852, 1033, "15", "Pleven"),
-(1853, 1033, "16", "Plovdiv"),
-(1854, 1033, "17", "Razgrad"),
-(1855, 1033, "18", "Ruse"),
-(1856, 1033, "19", "Silistra"),
-(1857, 1033, "20", "Sliven"),
-(1858, 1033, "21", "Smolyan"),
-(1859, 1033, "23", "Sofia"),
-(1860, 1033, "24", "Stara Zagora"),
-(1861, 1033, "27", "Shumen"),
-(1862, 1033, "25", "Targovishte"),
-(1863, 1033, "03", "Varna"),
-(1864, 1033, "04", "Veliko Tarnovo"),
-(1865, 1033, "05", "Vidin"),
-(1866, 1033, "06", "Vratsa"),
-(1867, 1016, "01", "Al Hadd"),
-(1868, 1016, "03", "Al Manamah"),
-(1869, 1016, "10", "Al Mintaqah al Gharbiyah"),
-(1870, 1016, "07", "Al Mintagah al Wusta"),
-(1871, 1016, "05", "Al Mintaqah ash Shamaliyah"),
-(1872, 1016, "02", "Al Muharraq"),
-(1873, 1016, "09", "Ar Rifa"),
-(1874, 1016, "04", "Jidd Hafs"),
-(1875, 1016, "12", "Madluat Jamad"),
-(1876, 1016, "08", "Madluat Isa"),
-(1877, 1016, "11", "Mintaqat Juzur tawar"),
-(1878, 1016, "06", "Sitrah"),
-(1879, 1036, "BB", "Bubanza"),
-(1880, 1036, "BJ", "Bujumbura"),
-(1881, 1036, "BR", "Bururi"),
-(1882, 1036, "CA", "Cankuzo"),
-(1883, 1036, "CI", "Cibitoke"),
-(1884, 1036, "GI", "Gitega"),
-(1885, 1036, "KR", "Karuzi"),
-(1886, 1036, "KY", "Kayanza"),
-(1887, 1036, "MA", "Makamba"),
-(1888, 1036, "MU", "Muramvya"),
-(1889, 1036, "MW", "Mwaro"),
-(1890, 1036, "NG", "Ngozi"),
-(1891, 1036, "RT", "Rutana"),
-(1892, 1036, "RY", "Ruyigi"),
-(1893, 1022, "AL", "Alibori"),
-(1894, 1022, "AK", "Atakora"),
-(1895, 1022, "AQ", "Atlantique"),
-(1896, 1022, "BO", "Borgou"),
-(1897, 1022, "CO", "Collines"),
-(1898, 1022, "DO", "Donga"),
-(1899, 1022, "KO", "Kouffo"),
-(1900, 1022, "LI", "Littoral"),
-(1901, 1022, "MO", "Mono"),
-(1902, 1022, "OU", "Oueme"),
-(1903, 1022, "PL", "Plateau"),
-(1904, 1022, "ZO", "Zou"),
-(1905, 1032, "BE", "Belait"),
-(1906, 1032, "BM", "Brunei-Muara"),
-(1907, 1032, "TE", "Temburong"),
-(1908, 1032, "TU", "Tutong"),
-(1909, 1025, "C", "Cochabamba"),
-(1910, 1025, "H", "Chuquisaca"),
-(1911, 1025, "B", "El Beni"),
-(1912, 1025, "L", "La Paz"),
-(1913, 1025, "O", "Oruro"),
-(1914, 1025, "N", "Pando"),
-(1915, 1025, "P", "Potosi"),
-(1916, 1025, "T", "Tarija"),
-(1917, 1029, "AC", "Acre"),
-(1918, 1029, "AL", "Alagoas"),
-(1919, 1029, "AM", "Amazonas"),
-(1920, 1029, "AP", "Amapa"),
-(1921, 1029, "BA", "Bahia"),
-(1922, 1029, "CE", "Ceara"),
-(1923, 1029, "DF", "Distrito Federal"),
-(1924, 1029, "ES", "Espirito Santo"),
-(1926, 1029, "GO", "Goias"),
-(1927, 1029, "MA", "Maranhao"),
-(1928, 1029, "MG", "Minas Gerais"),
-(1929, 1029, "MS", "Mato Grosso do Sul"),
-(1930, 1029, "MT", "Mato Grosso"),
-(1931, 1029, "PA", "Para"),
-(1932, 1029, "PB", "Paraiba"),
-(1933, 1029, "PE", "Pernambuco"),
-(1934, 1029, "PI", "Piaui"),
-(1935, 1029, "PR", "Parana"),
-(1936, 1029, "RJ", "Rio de Janeiro"),
-(1937, 1029, "RN", "Rio Grande do Norte"),
-(1938, 1029, "RO", "Rondonia"),
-(1939, 1029, "RR", "Roraima"),
-(1940, 1029, "RS", "Rio Grande do Sul"),
-(1941, 1029, "SC", "Santa Catarina"),
-(1942, 1029, "SE", "Sergipe"),
-(1943, 1029, "SP", "Sao Paulo"),
-(1944, 1029, "TO", "Tocantins"),
-(1945, 1212, "AC", "Acklins and Crooked Islands"),
-(1946, 1212, "BI", "Bimini"),
-(1947, 1212, "CI", "Cat Island"),
-(1948, 1212, "EX", "Exuma"),
-(1955, 1212, "IN", "Inagua"),
-(1957, 1212, "LI", "Long Island"),
-(1959, 1212, "MG", "Mayaguana"),
-(1960, 1212, "NP", "New Providence"),
-(1962, 1212, "RI", "Ragged Island"),
-(1966, 1024, "33", "Bumthang"),
-(1967, 1024, "12", "Chhukha"),
-(1968, 1024, "22", "Dagana"),
-(1969, 1024, "GA", "Gasa"),
-(1970, 1024, "13", "Ha"),
-(1971, 1024, "44", "Lhuentse"),
-(1972, 1024, "42", "Monggar"),
-(1973, 1024, "11", "Paro"),
-(1974, 1024, "43", "Pemagatshel"),
-(1975, 1024, "23", "Punakha"),
-(1976, 1024, "45", "Samdrup Jongkha"),
-(1977, 1024, "14", "Samtee"),
-(1978, 1024, "31", "Sarpang"),
-(1979, 1024, "15", "Thimphu"),
-(1980, 1024, "41", "Trashigang"),
-(1981, 1024, "TY", "Trashi Yangtse"),
-(1982, 1024, "32", "Trongsa"),
-(1983, 1024, "21", "Tsirang"),
-(1984, 1024, "24", "Wangdue Phodrang"),
-(1985, 1024, "34", "Zhemgang"),
-(1986, 1027, "CE", "Central"),
-(1987, 1027, "GH", "Ghanzi"),
-(1988, 1027, "KG", "Kgalagadi"),
-(1989, 1027, "KL", "Kgatleng"),
-(1990, 1027, "KW", "Kweneng"),
-(1991, 1027, "NG", "Ngamiland"),
-(1992, 1027, "NE", "North-East"),
-(1993, 1027, "NW", "North-West"),
-(1994, 1027, "SE", "South-East"),
-(1995, 1027, "SO", "Southern"),
-(1996, 1019, "BR", "Brèsckaja voblasc\'"),
-(1997, 1019, "HO", "Homel\'skaja voblasc\'"),
-(1998, 1019, "HR", "Hrodzenskaja voblasc\'"),
-(1999, 1019, "MA", "Mahilëuskaja voblasc\'"),
-(2000, 1019, "MI", "Minskaja voblasc\'"),
-(2001, 1019, "VI", "Vicebskaja voblasc\'"),
-(2002, 1021, "BZ", "Belize"),
-(2003, 1021, "CY", "Cayo"),
-(2004, 1021, "CZL", "Corozal"),
-(2005, 1021, "OW", "Orange Walk"),
-(2006, 1021, "SC", "Stann Creek"),
-(2007, 1021, "TOL", "Toledo"),
-(2008, 1050, "KN", "Kinshasa"),
-(2011, 1050, "EQ", "Equateur"),
-(2014, 1050, "KE", "Kasai-Oriental"),
-(2016, 1050, "MA", "Maniema"),
-(2017, 1050, "NK", "Nord-Kivu"),
-(2019, 1050, "SK", "Sud-Kivu"),
-(2020, 1042, "BGF", "Bangui"),
-(2021, 1042, "BB", "Bamingui-Bangoran"),
-(2022, 1042, "BK", "Basse-Kotto"),
-(2023, 1042, "HK", "Haute-Kotto"),
-(2024, 1042, "HM", "Haut-Mbomou"),
-(2025, 1042, "KG", "Kemo"),
-(2026, 1042, "LB", "Lobaye"),
-(2027, 1042, "HS", "Mambere-Kadei"),
-(2028, 1042, "MB", "Mbomou"),
-(2029, 1042, "KB", "Nana-Grebizi"),
-(2030, 1042, "NM", "Nana-Mambere"),
-(2031, 1042, "MP", "Ombella-Mpoko"),
-(2032, 1042, "UK", "Ouaka"),
-(2033, 1042, "AC", "Ouham"),
-(2034, 1042, "OP", "Ouham-Pende"),
-(2035, 1042, "SE", "Sangha-Mbaere"),
-(2036, 1042, "VR", "Vakaga"),
-(2037, 1051, "BZV", "Brazzaville"),
-(2038, 1051, "11", "Bouenza"),
-(2039, 1051, "8", "Cuvette"),
-(2040, 1051, "15", "Cuvette-Ouest"),
-(2041, 1051, "5", "Kouilou"),
-(2042, 1051, "2", "Lekoumou"),
-(2043, 1051, "7", "Likouala"),
-(2044, 1051, "9", "Niari"),
-(2045, 1051, "14", "Plateaux"),
-(2046, 1051, "12", "Pool"),
-(2047, 1051, "13", "Sangha"),
-(2048, 1205, "AG", "Aargau"),
-(2049, 1205, "AI", "Appenzell Innerrhoden"),
-(2050, 1205, "AR", "Appenzell Ausserrhoden"),
-(2051, 1205, "BE", "Bern"),
-(2052, 1205, "BL", "Basel-Landschaft"),
-(2053, 1205, "BS", "Basel-Stadt"),
-(2054, 1205, "FR", "Fribourg"),
-(2055, 1205, "GE", "Geneva"),
-(2056, 1205, "GL", "Glarus"),
-(2057, 1205, "GR", "Graubunden"),
-(2058, 1205, "JU", "Jura"),
-(2059, 1205, "LU", "Luzern"),
-(2060, 1205, "NE", "Neuchatel"),
-(2061, 1205, "NW", "Nidwalden"),
-(2062, 1205, "OW", "Obwalden"),
-(2063, 1205, "SG", "Sankt Gallen"),
-(2064, 1205, "SH", "Schaffhausen"),
-(2065, 1205, "SO", "Solothurn"),
-(2066, 1205, "SZ", "Schwyz"),
-(2067, 1205, "TG", "Thurgau"),
-(2068, 1205, "TI", "Ticino"),
-(2069, 1205, "UR", "Uri"),
-(2070, 1205, "VD", "Vaud"),
-(2071, 1205, "VS", "Valais"),
-(2072, 1205, "ZG", "Zug"),
-(2073, 1205, "ZH", "Zurich"),
-(2074, 1054, "06", "18 Montagnes"),
-(2075, 1054, "16", "Agnebi"),
-(2076, 1054, "09", "Bas-Sassandra"),
-(2077, 1054, "10", "Denguele"),
-(2078, 1054, "02", "Haut-Sassandra"),
-(2079, 1054, "07", "Lacs"),
-(2080, 1054, "01", "Lagunes"),
-(2081, 1054, "12", "Marahoue"),
-(2082, 1054, "05", "Moyen-Comoe"),
-(2083, 1054, "11", "Nzi-Comoe"),
-(2084, 1054, "03", "Savanes"),
-(2085, 1054, "15", "Sud-Bandama"),
-(2086, 1054, "13", "Sud-Comoe"),
-(2087, 1054, "04", "Vallee du Bandama"),
-(2088, 1054, "14", "Worodouqou"),
-(2089, 1054, "08", "Zanzan"),
-(2090, 1044, "AI", "Aisen del General Carlos Ibanez del Campo"),
-(2091, 1044, "AN", "Antofagasta"),
-(2092, 1044, "AR", "Araucania"),
-(2093, 1044, "AT", "Atacama"),
-(2094, 1044, "BI", "Bio-Bio"),
-(2095, 1044, "CO", "Coquimbo"),
-(2096, 1044, "LI", "Libertador General Bernardo O\'Higgins"),
-(2097, 1044, "LL", "Los Lagos"),
-(2098, 1044, "MA", "Magallanes"),
-(2099, 1044, "ML", "Maule"),
-(2100, 1044, "SM", "Santiago Metropolitan"),
-(2101, 1044, "TA", "Tarapaca"),
-(2102, 1044, "VS", "Valparaiso"),
-(2103, 1038, "AD", "Adamaoua"),
-(2104, 1038, "CE", "Centre"),
-(2105, 1038, "ES", "East"),
-(2106, 1038, "EN", "Far North"),
-(2107, 1038, "NO", "North"),
-(2108, 1038, "SW", "South"),
-(2109, 1038, "SW", "South-West"),
-(2110, 1038, "OU", "West"),
-(2111, 1045, "11", "Beijing"),
-(2112, 1045, "50", "Chongqing"),
-(2113, 1045, "31", "Shanghai"),
-(2114, 1045, "12", "Tianjin"),
-(2115, 1045, "34", "Anhui"),
-(2116, 1045, "35", "Fujian"),
-(2117, 1045, "62", "Gansu"),
-(2118, 1045, "44", "Guangdong"),
-(2119, 1045, "52", "Guizhou"),
-(2120, 1045, "46", "Hainan"),
-(2121, 1045, "13", "Hebei"),
-(2122, 1045, "23", "Heilongjiang"),
-(2123, 1045, "41", "Henan"),
-(2124, 1045, "42", "Hubei"),
-(2125, 1045, "43", "Hunan"),
-(2126, 1045, "32", "Jiangsu"),
-(2127, 1045, "36", "Jiangxi"),
-(2128, 1045, "22", "Jilin"),
-(2129, 1045, "21", "Liaoning"),
-(2130, 1045, "63", "Qinghai"),
-(2131, 1045, "61", "Shaanxi"),
-(2132, 1045, "37", "Shandong"),
-(2133, 1045, "14", "Shanxi"),
-(2134, 1045, "51", "Sichuan"),
-(2135, 1045, "71", "Taiwan"),
-(2136, 1045, "53", "Yunnan"),
-(2137, 1045, "33", "Zhejiang"),
-(2138, 1045, "45", "Guangxi"),
-(2139, 1045, "15", "Neia Mongol (mn)"),
-(2140, 1045, "65", "Xinjiang"),
-(2141, 1045, "54", "Xizang"),
-(2142, 1045, "91", "Hong Kong"),
-(2143, 1045, "92", "Macau"),
-(2144, 1048, "DC", "Distrito Capital de Bogotá"),
-(2145, 1048, "AMA", "Amazonea"),
-(2146, 1048, "ANT", "Antioquia"),
-(2147, 1048, "ARA", "Arauca"),
-(2148, 1048, "ATL", "Atlántico"),
-(2149, 1048, "BOL", "Bolívar"),
-(2150, 1048, "BOY", "Boyacá"),
-(2151, 1048, "CAL", "Caldea"),
-(2152, 1048, "CAQ", "Caquetá"),
-(2153, 1048, "CAS", "Casanare"),
-(2154, 1048, "CAU", "Cauca"),
-(2155, 1048, "CES", "Cesar"),
-(2156, 1048, "COR", "Córdoba"),
-(2157, 1048, "CUN", "Cundinamarca"),
-(2158, 1048, "CHO", "Chocó"),
-(2159, 1048, "GUA", "Guainía"),
-(2160, 1048, "GUV", "Guaviare"),
-(2161, 1048, "LAG", "La Guajira"),
-(2162, 1048, "MAG", "Magdalena"),
-(2163, 1048, "MET", "Meta"),
-(2164, 1048, "NAR", "Nariño"),
-(2165, 1048, "NSA", "Norte de Santander"),
-(2166, 1048, "PUT", "Putumayo"),
-(2167, 1048, "QUI", "Quindio"),
-(2168, 1048, "RIS", "Risaralda"),
-(2169, 1048, "SAP", "San Andrés, Providencia y Santa Catalina"),
-(2170, 1048, "SAN", "Santander"),
-(2171, 1048, "SUC", "Sucre"),
-(2172, 1048, "TOL", "Tolima"),
-(2173, 1048, "VAC", "Valle del Cauca"),
-(2174, 1048, "VAU", "Vaupés"),
-(2175, 1048, "VID", "Vichada"),
-(2176, 1053, "A", "Alajuela"),
-(2177, 1053, "C", "Cartago"),
-(2178, 1053, "G", "Guanacaste"),
-(2179, 1053, "H", "Heredia"),
-(2180, 1053, "L", "Limon"),
-(2181, 1053, "P", "Puntarenas"),
-(2182, 1053, "SJ", "San Jose"),
-(2183, 1056, "09", "Camagey"),
-(2184, 1056, "08", "Ciego de `vila"),
-(2185, 1056, "06", "Cienfuegos"),
-(2186, 1056, "03", "Ciudad de La Habana"),
-(2187, 1056, "12", "Granma"),
-(2188, 1056, "14", "Guantanamo"),
-(2189, 1056, "11", "Holquin"),
-(2190, 1056, "02", "La Habana"),
-(2191, 1056, "10", "Las Tunas"),
-(2192, 1056, "04", "Matanzas"),
-(2193, 1056, "01", "Pinar del Rio"),
-(2194, 1056, "07", "Sancti Spiritus"),
-(2195, 1056, "13", "Santiago de Cuba"),
-(2196, 1056, "05", "Villa Clara"),
-(2197, 1056, "99", "Isla de la Juventud"),
-(2198, 1056, "PR", "Pinar del Roo"),
-(2199, 1056, "CA", "Ciego de Avila"),
-(2200, 1056, "CG", "Camagoey"),
-(2201, 1056, "HO", "Holgun"),
-(2202, 1056, "SS", "Sancti Spritus"),
-(2203, 1056, "IJ", "Municipio Especial Isla de la Juventud"),
-(2204, 1040, "BV", "Boa Vista"),
-(2205, 1040, "BR", "Brava"),
-(2206, 1040, "CS", "Calheta de Sao Miguel"),
-(2207, 1040, "FO", "Fogo"),
-(2208, 1040, "MA", "Maio"),
-(2209, 1040, "MO", "Mosteiros"),
-(2210, 1040, "PA", "Paul"),
-(2211, 1040, "PN", "Porto Novo"),
-(2212, 1040, "PR", "Praia"),
-(2213, 1040, "RG", "Ribeira Grande"),
-(2214, 1040, "SL", "Sal"),
-(2215, 1040, "SD", "Sao Domingos"),
-(2216, 1040, "SF", "Sao Filipe"),
-(2217, 1040, "SN", "Sao Nicolau"),
-(2218, 1040, "SV", "Sao Vicente"),
-(2219, 1040, "TA", "Tarrafal"),
-(2220, 1057, "04", "Ammochostos Magusa"),
-(2221, 1057, "06", "Keryneia"),
-(2222, 1057, "03", "Larnaka"),
-(2223, 1057, "01", "Lefkosia"),
-(2224, 1057, "02", "Lemesos"),
-(2225, 1057, "05", "Pafos"),
-(2226, 1058, "JC", "Jihočeský kraj"),
-(2227, 1058, "JM", "Jihomoravský kraj"),
-(2228, 1058, "KA", "Karlovarský kraj"),
-(2229, 1058, "KR", "Královéhradecký kraj"),
-(2230, 1058, "LI", "Liberecký kraj"),
-(2231, 1058, "MO", "Moravskoslezský kraj"),
-(2232, 1058, "OL", "Olomoucký kraj"),
-(2233, 1058, "PA", "Pardubický kraj"),
-(2234, 1058, "PL", "Plzeňský kraj"),
-(2235, 1058, "PR", "Praha, hlavní město"),
-(2236, 1058, "ST", "Středočeský kraj"),
-(2237, 1058, "US", "Ústecký kraj"),
-(2238, 1058, "VY", "Vysočina"),
-(2239, 1058, "ZL", "Zlínský kraj"),
-(2240, 1082, "BW", "Baden-Württemberg"),
-(2241, 1082, "BY", "Bayern"),
-(2242, 1082, "HB", "Bremen"),
-(2243, 1082, "HH", "Hamburg"),
-(2244, 1082, "HE", "Hessen"),
-(2245, 1082, "NI", "Niedersachsen"),
-(2246, 1082, "NW", "Nordrhein-Westfalen"),
-(2247, 1082, "RP", "Rheinland-Pfalz"),
-(2248, 1082, "SL", "Saarland"),
-(2249, 1082, "SH", "Schleswig-Holstein"),
-(2250, 1082, "BE", "Berlin"),
-(2251, 1082, "BB", "Brandenburg"),
-(2252, 1082, "MV", "Mecklenburg-Vorpommern"),
-(2253, 1082, "SN", "Sachsen"),
-(2254, 1082, "ST", "Sachsen-Anhalt"),
-(2255, 1082, "TH", "Thüringen"),
-(2256, 1060, "AS", "Ali Sabiah"),
-(2257, 1060, "DI", "Dikhil"),
-(2258, 1060, "DJ", "Djibouti"),
-(2259, 1060, "OB", "Obock"),
-(2260, 1060, "TA", "Tadjoura"),
-(2261, 1059, "147", "Frederiksberg"),
-(2262, 1059, "101", "Copenhagen City"),
-(2263, 1059, "015", "Copenhagen"),
-(2264, 1059, "020", "Frederiksborg"),
-(2265, 1059, "025", "Roskilde"),
-(2266, 1059, "030", "Vestsjælland"),
-(2267, 1059, "035", "Storstrøm"),
-(2268, 1059, "040", "Bornholm"),
-(2269, 1059, "042", "Fyn"),
-(2270, 1059, "050", "South Jutland"),
-(2271, 1059, "055", "Ribe"),
-(2272, 1059, "060", "Vejle"),
-(2273, 1059, "065", "Ringkjøbing"),
-(2274, 1059, "070", "Ã…rhus"),
-(2275, 1059, "076", "Viborg"),
-(2276, 1059, "080", "North Jutland"),
-(2277, 1062, "01", "Distrito Nacional (Santo Domingo)"),
-(2278, 1062, "02", "Azua"),
-(2279, 1062, "03", "Bahoruco"),
-(2280, 1062, "04", "Barahona"),
-(2281, 1062, "05", "Dajabón"),
-(2282, 1062, "06", "Duarte"),
-(2283, 1062, "08", "El Seybo [El Seibo]"),
-(2284, 1062, "09", "Espaillat"),
-(2285, 1062, "30", "Hato Mayor"),
-(2286, 1062, "10", "Independencia"),
-(2287, 1062, "11", "La Altagracia"),
-(2288, 1062, "07", "La Estrelleta [Elias Pina]"),
-(2289, 1062, "12", "La Romana"),
-(2290, 1062, "13", "La Vega"),
-(2291, 1062, "14", "Maroia Trinidad Sánchez"),
-(2292, 1062, "28", "Monseñor Nouel"),
-(2293, 1062, "15", "Monte Cristi"),
-(2294, 1062, "29", "Monte Plata"),
-(2295, 1062, "16", "Pedernales"),
-(2296, 1062, "17", "Peravia"),
-(2297, 1062, "18", "Puerto Plata"),
-(2298, 1062, "19", "Salcedo"),
-(2299, 1062, "20", "Samaná"),
-(2300, 1062, "21", "San Cristóbal"),
-(2301, 1062, "23", "San Pedro de Macorís"),
-(2302, 1062, "24", "Sánchez Ramírez"),
-(2303, 1062, "25", "Santiago"),
-(2304, 1062, "26", "Santiago Rodríguez"),
-(2305, 1062, "27", "Valverde"),
-(2306, 1003, "01", "Adrar"),
-(2307, 1003, "44", "Ain Defla"),
-(2308, 1003, "46", "Ain Tmouchent"),
-(2309, 1003, "16", "Alger"),
-(2310, 1003, "23", "Annaba"),
-(2311, 1003, "05", "Batna"),
-(2312, 1003, "08", "Bechar"),
-(2313, 1003, "06", "Bejaia"),
-(2314, 1003, "07", "Biskra"),
-(2315, 1003, "09", "Blida"),
-(2316, 1003, "34", "Bordj Bou Arreridj"),
-(2317, 1003, "10", "Bouira"),
-(2318, 1003, "35", "Boumerdes"),
-(2319, 1003, "02", "Chlef"),
-(2320, 1003, "25", "Constantine"),
-(2321, 1003, "17", "Djelfa"),
-(2322, 1003, "32", "El Bayadh"),
-(2323, 1003, "39", "El Oued"),
-(2324, 1003, "36", "El Tarf"),
-(2325, 1003, "47", "Ghardaia"),
-(2326, 1003, "24", "Guelma"),
-(2327, 1003, "33", "Illizi"),
-(2328, 1003, "18", "Jijel"),
-(2329, 1003, "40", "Khenchela"),
-(2330, 1003, "03", "Laghouat"),
-(2331, 1003, "29", "Mascara"),
-(2332, 1003, "26", "Medea"),
-(2333, 1003, "43", "Mila"),
-(2334, 1003, "27", "Mostaganem"),
-(2335, 1003, "28", "Msila"),
-(2336, 1003, "45", "Naama"),
-(2337, 1003, "31", "Oran"),
-(2338, 1003, "30", "Ouargla"),
-(2339, 1003, "04", "Oum el Bouaghi"),
-(2340, 1003, "48", "Relizane"),
-(2341, 1003, "20", "Saida"),
-(2342, 1003, "19", "Setif"),
-(2343, 1003, "22", "Sidi Bel Abbes"),
-(2344, 1003, "21", "Skikda"),
-(2345, 1003, "41", "Souk Ahras"),
-(2346, 1003, "11", "Tamanghasset"),
-(2347, 1003, "12", "Tebessa"),
-(2348, 1003, "14", "Tiaret"),
-(2349, 1003, "37", "Tindouf"),
-(2350, 1003, "42", "Tipaza"),
-(2351, 1003, "38", "Tissemsilt"),
-(2352, 1003, "15", "Tizi Ouzou"),
-(2353, 1003, "13", "Tlemcen"),
-(2354, 1064, "A", "Azuay"),
-(2355, 1064, "B", "Bolivar"),
-(2356, 1064, "F", "Canar"),
-(2357, 1064, "C", "Carchi"),
-(2358, 1064, "X", "Cotopaxi"),
-(2359, 1064, "H", "Chimborazo"),
-(2360, 1064, "O", "El Oro"),
-(2361, 1064, "E", "Esmeraldas"),
-(2362, 1064, "W", "Galapagos"),
-(2363, 1064, "G", "Guayas"),
-(2364, 1064, "I", "Imbabura"),
-(2365, 1064, "L", "Loja"),
-(2366, 1064, "R", "Los Rios"),
-(2367, 1064, "M", "Manabi"),
-(2368, 1064, "S", "Morona-Santiago"),
-(2369, 1064, "N", "Napo"),
-(2370, 1064, "D", "Orellana"),
-(2371, 1064, "Y", "Pastaza"),
-(2372, 1064, "P", "Pichincha"),
-(2373, 1064, "U", "Sucumbios"),
-(2374, 1064, "T", "Tungurahua"),
-(2375, 1064, "Z", "Zamora-Chinchipe"),
-(2376, 1069, "37", "Harjumaa"),
-(2377, 1069, "39", "Hiiumaa"),
-(2378, 1069, "44", "Ida-Virumaa"),
-(2379, 1069, "49", "Jõgevamaa"),
-(2380, 1069, "51", "Järvamaa"),
-(2381, 1069, "57", "Läänemaa"),
-(2382, 1069, "59", "Lääne-Virumaa"),
-(2383, 1069, "65", "Põlvamaa"),
-(2384, 1069, "67", "Pärnumaa"),
-(2385, 1069, "70", "Raplamaa"),
-(2386, 1069, "74", "Saaremaa"),
-(2387, 1069, "7B", "Tartumaa"),
-(2388, 1069, "82", "Valgamaa"),
-(2389, 1069, "84", "Viljandimaa"),
-(2390, 1069, "86", "Võrumaa"),
-(2391, 1065, "DK", "Ad Daqahllyah"),
-(2392, 1065, "BA", "Al Bahr al Ahmar"),
-(2393, 1065, "BH", "Al Buhayrah"),
-(2394, 1065, "FYM", "Al Fayym"),
-(2395, 1065, "GH", "Al Gharbiyah"),
-(2396, 1065, "ALX", "Al Iskandarlyah"),
-(2397, 1065, "IS", "Al Isma illyah"),
-(2398, 1065, "GZ", "Al Jizah"),
-(2399, 1065, "MNF", "Al Minuflyah"),
-(2400, 1065, "MN", "Al Minya"),
-(2401, 1065, "C", "Al Qahirah"),
-(2402, 1065, "KB", "Al Qalyublyah"),
-(2403, 1065, "WAD", "Al Wadi al Jadid"),
-(2404, 1065, "SHR", "Ash Sharqiyah"),
-(2405, 1065, "SUZ", "As Suways"),
-(2406, 1065, "ASN", "Aswan"),
-(2407, 1065, "AST", "Asyut"),
-(2408, 1065, "BNS", "Bani Suwayf"),
-(2409, 1065, "PTS", "Bur Sa\'id"),
-(2410, 1065, "DT", "Dumyat"),
-(2411, 1065, "JS", "Janub Sina\'"),
-(2412, 1065, "KFS", "Kafr ash Shaykh"),
-(2413, 1065, "MT", "Matruh"),
-(2414, 1065, "KN", "Qina"),
-(2415, 1065, "SIN", "Shamal Sina\'"),
-(2416, 1065, "SHG", "Suhaj"),
-(2417, 1068, "AN", "Anseba"),
-(2418, 1068, "DU", "Debub"),
-(2419, 1068, "DK", "Debubawi Keyih Bahri [Debub-Keih-Bahri]"),
-(2420, 1068, "GB", "Gash-Barka"),
-(2421, 1068, "MA", "Maakel [Maekel]"),
-(2422, 1068, "SK", "Semenawi Keyih Bahri [Semien-Keih-Bahri]"),
-(2423, 1198, "VI", "Álava"),
-(2424, 1198, "AB", "Albacete"),
-(2425, 1198, "A", "Alicante"),
-(2426, 1198, "AL", "Almería"),
-(2427, 1198, "O", "Asturias"),
-(2428, 1198, "AV", "Ávila"),
-(2429, 1198, "BA", "Badajoz"),
-(2430, 1198, "PM", "Baleares"),
-(2431, 1198, "B", "Barcelona"),
-(2432, 1198, "BU", "Burgos"),
-(2433, 1198, "CC", "Cáceres"),
-(2434, 1198, "CA", "Cádiz"),
-(2435, 1198, "S", "Cantabria"),
-(2436, 1198, "CS", "Castellón"),
-(2437, 1198, "CR", "Ciudad Real"),
-(2438, 1198, "CU", "Cuenca"),
-(2439, 1198, "GE", "Girona [Gerona]"),
-(2440, 1198, "GR", "Granada"),
-(2441, 1198, "GU", "Guadalajara"),
-(2442, 1198, "SS", "Guipúzcoa"),
-(2443, 1198, "H", "Huelva"),
-(2444, 1198, "HU", "Huesca"),
-(2445, 1198, "J", "Jaén"),
-(2446, 1198, "C", "La Coruña"),
-(2447, 1198, "LO", "La Rioja"),
-(2448, 1198, "GC", "Las Palmas"),
-(2449, 1198, "LE", "León"),
-(2450, 1198, "L", "Lleida [Lérida]"),
-(2451, 1198, "LU", "Lugo"),
-(2452, 1198, "M", "Madrid"),
-(2453, 1198, "MA", "Málaga"),
-(2454, 1198, "MU", "Murcia"),
-(2455, 1198, "NA", "Navarra"),
-(2456, 1198, "OR", "Ourense"),
-(2457, 1198, "P", "Palencia"),
-(2458, 1198, "PO", "Pontevedra"),
-(2459, 1198, "SA", "Salamanca"),
-(2460, 1198, "TF", "Santa Cruz de Tenerife"),
-(2461, 1198, "SG", "Segovia"),
-(2462, 1198, "SE", "Sevilla"),
-(2463, 1198, "SO", "Soria"),
-(2464, 1198, "T", "Tarragona"),
-(2465, 1198, "TE", "Teruel"),
-(2466, 1198, "V", "Valencia"),
-(2467, 1198, "VA", "Valladolid"),
-(2468, 1198, "BI", "Vizcaya"),
-(2469, 1198, "ZA", "Zamora"),
-(2470, 1198, "Z", "Zaragoza"),
-(2471, 1198, "CE", "Ceuta"),
-(2472, 1198, "ML", "Melilla"),
-(2473, 1070, "AA", "Addis Ababa"),
-(2474, 1070, "DD", "Dire Dawa"),
-(2475, 1070, "AF", "Afar"),
-(2476, 1070, "AM", "Amara"),
-(2477, 1070, "BE", "Benshangul-Gumaz"),
-(2478, 1070, "GA", "Gambela Peoples"),
-(2479, 1070, "HA", "Harari People"),
-(2480, 1070, "OR", "Oromia"),
-(2481, 1070, "SO", "Somali"),
-(2482, 1070, "SN", "Southern Nations, Nationalities and Peoples"),
-(2483, 1070, "TI", "Tigrai"),
+(1172, "MZ", "mazowieckie"),
+(1172, "PM", "pomorskie"),
+(1172, "DS", "dolnośląskie"),
+(1172, "KP", "kujawsko-pomorskie"),
+(1172, "LU", "lubelskie"),
+(1172, "LB", "lubuskie"),
+(1172, "LD", "łódzkie"),
+(1172, "MA", "małopolskie"),
+(1172, "OP", "opolskie"),
+(1172, "PK", "podkarpackie"),
+(1172, "PD", "podlaskie"),
+(1172, "SL", "śląskie"),
+(1172, "SK", "świętokrzyskie"),
+(1172, "WN", "warmińsko-mazurskie"),
+(1172, "WP", "wielkopolskie"),
+(1172, "ZP", "zachodniopomorskie"),
+(1225, "AZ", "Abu Zaby"),
+(1225, "AJ", "\'Ajman"),
+(1225, "FU", "Al Fujayrah"),
+(1225, "SH", "Ash Shariqah"),
+(1225, "DU", "Dubayy"),
+(1225, "RK", "Ra\'s al Khaymah"),
+(1233, "33", "Dac Lac"),
+(1225, "UQ", "Umm al Qaywayn"),
+(1001, "BDS", "Badakhshan"),
+(1001, "BDG", "Badghis"),
+(1001, "BGL", "Baghlan"),
+(1001, "BAL", "Balkh"),
+(1001, "BAM", "Bamian"),
+(1001, "FRA", "Farah"),
+(1001, "FYB", "Faryab"),
+(1001, "GHA", "Ghazni"),
+(1001, "GHO", "Ghowr"),
+(1001, "HEL", "Helmand"),
+(1001, "HER", "Herat"),
+(1001, "JOW", "Jowzjan"),
+(1001, "KAB", "Kabul"),
+(1001, "KAN", "Kandahar"),
+(1001, "KAP", "Kapisa"),
+(1001, "KHO", "Khowst"),
+(1001, "KNR", "Konar"),
+(1001, "KDZ", "Kondoz"),
+(1001, "LAG", "Laghman"),
+(1001, "LOW", "Lowgar"),
+(1001, "NAN", "Nangrahar"),
+(1001, "NIM", "Nimruz"),
+(1001, "NUR", "Nurestan"),
+(1001, "ORU", "Oruzgan"),
+(1001, "PIA", "Paktia"),
+(1001, "PKA", "Paktika"),
+(1001, "PAR", "Parwan"),
+(1001, "SAM", "Samangan"),
+(1001, "SAR", "Sar-e Pol"),
+(1001, "TAK", "Takhar"),
+(1001, "WAR", "Wardak"),
+(1001, "ZAB", "Zabol"),
+(1002, "BR", "Berat"),
+(1002, "BU", "Bulqizë"),
+(1002, "DL", "Delvinë"),
+(1002, "DV", "Devoll"),
+(1002, "DI", "Dibër"),
+(1002, "DR", "Durrës"),
+(1002, "EL", "Elbasan"),
+(1002, "FR", "Fier"),
+(1002, "GR", "Gramsh"),
+(1002, "GJ", "Gjirokastër"),
+(1002, "HA", "Has"),
+(1002, "KA", "Kavajë"),
+(1002, "ER", "Kolonjë"),
+(1002, "KO", "Korçë"),
+(1002, "KR", "Krujë"),
+(1002, "KC", "Kuçovë"),
+(1002, "KU", "Kukës"),
+(1002, "KB", "Kurbin"),
+(1002, "LE", "Lezhë"),
+(1002, "LB", "Librazhd"),
+(1002, "LU", "Lushnjë"),
+(1002, "MM", "Malësi e Madhe"),
+(1002, "MK", "Mallakastër"),
+(1002, "MT", "Mat"),
+(1002, "MR", "Mirditë"),
+(1002, "PQ", "Peqin"),
+(1002, "PR", "Përmet"),
+(1002, "PG", "Pogradec"),
+(1002, "PU", "Pukë"),
+(1002, "SR", "Sarandë"),
+(1002, "SK", "Skrapar"),
+(1002, "SH", "Shkodër"),
+(1002, "TE", "Tepelenë"),
+(1002, "TR", "Tiranë"),
+(1002, "TP", "Tropojë"),
+(1002, "VL", "Vlorë"),
+(1011, "ER", "Erevan"),
+(1011, "AG", "Aragacotn"),
+(1011, "AR", "Ararat"),
+(1011, "AV", "Armavir"),
+(1011, "GR", "Gegarkunik\'"),
+(1011, "KT", "Kotayk\'"),
+(1011, "LO", "Lory"),
+(1011, "SH", "Sirak"),
+(1011, "SU", "Syunik\'"),
+(1011, "TV", "Tavus"),
+(1011, "VD", "Vayoc Jor"),
+(1005, "07", "Andorra la Vella"),
+(1005, "02", "Canillo"),
+(1005, "03", "Encamp"),
+(1005, "08", "Escaldes-Engordany"),
+(1005, "04", "La Massana"),
+(1005, "05", "Ordino"),
+(1005, "06", "Sant Julia de Loria"),
+(1006, "BGO", "Bengo"),
+(1006, "BGU", "Benguela"),
+(1006, "BIE", "Bie"),
+(1006, "CAB", "Cabinda"),
+(1006, "CCU", "Cuando-Cubango"),
+(1006, "CNO", "Cuanza Norte"),
+(1006, "CUS", "Cuanza Sul"),
+(1006, "CNN", "Cunene"),
+(1006, "HUA", "Huambo"),
+(1006, "HUI", "Huila"),
+(1006, "LUA", "Luanda"),
+(1006, "LNO", "Lunda Norte"),
+(1006, "LSU", "Lunda Sul"),
+(1006, "MAL", "Malange"),
+(1006, "MOX", "Moxico"),
+(1006, "NAM", "Namibe"),
+(1006, "UIG", "Uige"),
+(1006, "ZAI", "Zaire"),
+(1009, "03", "Saint George"),
+(1009, "04", "Saint John"),
+(1009, "05", "Saint Mary"),
+(1009, "06", "Saint Paul"),
+(1009, "07", "Saint Peter"),
+(1009, "08", "Saint Philip"),
+(1009, "10", "Barbuda"),
+(1009, "11", "Redonda"),
+(1010, "C", "Capital federal"),
+(1010, "B", "Buenos Aires"),
+(1010, "K", "Catamarca"),
+(1010, "X", "Cordoba"),
+(1010, "W", "Corrientes"),
+(1010, "H", "Chaco"),
+(1010, "U", "Chubut"),
+(1010, "E", "Entre Rios"),
+(1010, "P", "Formosa"),
+(1010, "Y", "Jujuy"),
+(1010, "L", "La Pampa"),
+(1010, "M", "Mendoza"),
+(1010, "N", "Misiones"),
+(1010, "Q", "Neuquen"),
+(1010, "R", "Rio Negro"),
+(1010, "A", "Salta"),
+(1010, "J", "San Juan"),
+(1010, "D", "San Luis"),
+(1010, "Z", "Santa Cruz"),
+(1010, "S", "Santa Fe"),
+(1010, "G", "Santiago del Estero"),
+(1010, "V", "Tierra del Fuego"),
+(1010, "T", "Tucuman"),
+(1010, "F", "La Rioja"),
+(1014, "1", "Burgenland"),
+(1014, "2", "Kärnten"),
+(1014, "3", "Niederösterreich"),
+(1014, "4", "Oberösterreich"),
+(1014, "5", "Salzburg"),
+(1014, "6", "Steiermark"),
+(1014, "7", "Tirol"),
+(1014, "8", "Vorarlberg"),
+(1014, "9", "Wien"),
+(1008, "AAT", "Australian Antarctic Territory"),
+(1013, "ACT", "Australian Capital Territory"),
+(1013, "NT", "Northern Territory"),
+(1013, "NSW", "New South Wales"),
+(1013, "QLD", "Queensland"),
+(1013, "SA", "South Australia"),
+(1013, "TAS", "Tasmania"),
+(1013, "VIC", "Victoria"),
+(1013, "WA", "Western Australia"),
+(1015, "NX", "Naxcivan"),
+(1015, "AB", "Ali Bayramli"),
+(1015, "BA", "Baki"),
+(1015, "GA", "Ganca"),
+(1015, "LA", "Lankaran"),
+(1015, "MI", "Mingacevir"),
+(1015, "NA", "Naftalan"),
+(1015, "SA", "Saki"),
+(1015, "SM", "Sumqayit"),
+(1015, "SS", "Susa"),
+(1015, "XA", "Xankandi"),
+(1015, "YE", "Yevlax"),
+(1015, "ABS", "Abseron"),
+(1015, "AGC", "Agcabadi"),
+(1015, "AGM", "Agdam"),
+(1015, "AGS", "Agdas"),
+(1015, "AGA", "Agstafa"),
+(1015, "AGU", "Agsu"),
+(1015, "AST", "Astara"),
+(1015, "BAB", "Babak"),
+(1015, "BAL", "Balakan"),
+(1015, "BAR", "Barda"),
+(1015, "BEY", "Beylagan"),
+(1015, "BIL", "Bilasuvar"),
+(1015, "CAB", "Cabrayll"),
+(1015, "CAL", "Calilabad"),
+(1015, "CUL", "Culfa"),
+(1015, "DAS", "Daskasan"),
+(1015, "DAV", "Davaci"),
+(1015, "FUZ", "Fuzuli"),
+(1015, "GAD", "Gadabay"),
+(1015, "GOR", "Goranboy"),
+(1015, "GOY", "Goycay"),
+(1015, "HAC", "Haciqabul"),
+(1015, "IMI", "Imisli"),
+(1015, "ISM", "Ismayilli"),
+(1015, "KAL", "Kalbacar"),
+(1015, "KUR", "Kurdamir"),
+(1015, "LAC", "Lacin"),
+(1015, "LER", "Lerik"),
+(1015, "MAS", "Masalli"),
+(1015, "NEF", "Neftcala"),
+(1015, "OGU", "Oguz"),
+(1015, "ORD", "Ordubad"),
+(1015, "QAB", "Qabala"),
+(1015, "QAX", "Qax"),
+(1015, "QAZ", "Qazax"),
+(1015, "QOB", "Qobustan"),
+(1015, "QBA", "Quba"),
+(1015, "QBI", "Qubadli"),
+(1015, "QUS", "Qusar"),
+(1015, "SAT", "Saatli"),
+(1015, "SAB", "Sabirabad"),
+(1015, "SAD", "Sadarak"),
+(1015, "SAH", "Sahbuz"),
+(1015, "SAL", "Salyan"),
+(1015, "SMI", "Samaxi"),
+(1015, "SKR", "Samkir"),
+(1015, "SMX", "Samux"),
+(1015, "SAR", "Sarur"),
+(1015, "SIY", "Siyazan"),
+(1015, "TAR", "Tartar"),
+(1015, "TOV", "Tovuz"),
+(1015, "UCA", "Ucar"),
+(1015, "XAC", "Xacmaz"),
+(1015, "XAN", "Xanlar"),
+(1015, "XIZ", "Xizi"),
+(1015, "XCI", "Xocali"),
+(1015, "XVD", "Xocavand"),
+(1015, "YAR", "Yardimli"),
+(1015, "ZAN", "Zangilan"),
+(1015, "ZAQ", "Zaqatala"),
+(1015, "ZAR", "Zardab"),
+(1026, "BIH", "Federacija Bosna i Hercegovina"),
+(1026, "SRP", "Republika Srpska"),
+(1017, "05", "Bagerhat zila"),
+(1017, "01", "Bandarban zila"),
+(1017, "02", "Barguna zila"),
+(1017, "06", "Barisal zila"),
+(1017, "07", "Bhola zila"),
+(1017, "03", "Bogra zila"),
+(1017, "04", "Brahmanbaria zila"),
+(1017, "09", "Chandpur zila"),
+(1017, "10", "Chittagong zila"),
+(1017, "12", "Chuadanga zila"),
+(1017, "08", "Comilla zila"),
+(1017, "11", "Cox\'s Bazar zila"),
+(1017, "13", "Dhaka zila"),
+(1017, "14", "Dinajpur zila"),
+(1017, "15", "Faridpur zila"),
+(1017, "16", "Feni zila"),
+(1017, "19", "Gaibandha zila"),
+(1017, "18", "Gazipur zila"),
+(1017, "17", "Gopalganj zila"),
+(1017, "20", "Habiganj zila"),
+(1017, "24", "Jaipurhat zila"),
+(1017, "21", "Jamalpur zila"),
+(1017, "22", "Jessore zila"),
+(1017, "25", "Jhalakati zila"),
+(1017, "23", "Jhenaidah zila"),
+(1017, "29", "Khagrachari zila"),
+(1017, "27", "Khulna zila"),
+(1017, "26", "Kishorganj zila"),
+(1017, "28", "Kurigram zila"),
+(1017, "30", "Kushtia zila"),
+(1017, "31", "Lakshmipur zila"),
+(1017, "32", "Lalmonirhat zila"),
+(1017, "36", "Madaripur zila"),
+(1017, "37", "Magura zila"),
+(1017, "33", "Manikganj zila"),
+(1017, "39", "Meherpur zila"),
+(1017, "38", "Moulvibazar zila"),
+(1017, "35", "Munshiganj zila"),
+(1017, "34", "Mymensingh zila"),
+(1017, "48", "Naogaon zila"),
+(1017, "43", "Narail zila"),
+(1017, "40", "Narayanganj zila"),
+(1017, "42", "Narsingdi zila"),
+(1017, "44", "Natore zila"),
+(1017, "45", "Nawabganj zila"),
+(1017, "41", "Netrakona zila"),
+(1017, "46", "Nilphamari zila"),
+(1017, "47", "Noakhali zila"),
+(1017, "49", "Pabna zila"),
+(1017, "52", "Panchagarh zila"),
+(1017, "51", "Patuakhali zila"),
+(1017, "50", "Pirojpur zila"),
+(1017, "53", "Rajbari zila"),
+(1017, "54", "Rajshahi zila"),
+(1017, "56", "Rangamati zila"),
+(1017, "55", "Rangpur zila"),
+(1017, "58", "Satkhira zila"),
+(1017, "62", "Shariatpur zila"),
+(1017, "57", "Sherpur zila"),
+(1017, "59", "Sirajganj zila"),
+(1017, "61", "Sunamganj zila"),
+(1017, "60", "Sylhet zila"),
+(1017, "63", "Tangail zila"),
+(1017, "64", "Thakurgaon zila"),
+(1018, "01", "Christ Church"),
+(1018, "02", "Saint Andrew"),
+(1018, "03", "Saint George"),
+(1018, "04", "Saint James"),
+(1018, "05", "Saint John"),
+(1018, "06", "Saint Joseph"),
+(1018, "07", "Saint Lucy"),
+(1018, "08", "Saint Michael"),
+(1018, "09", "Saint Peter"),
+(1018, "10", "Saint Philip"),
+(1018, "11", "Saint Thomas"),
+(1020, "BRU", "Brussels"),
+(1020, "VAN", "Antwerpen"),
+(1020, "WBR", "Brabant Wallon"),
+(1020, "WHT", "Hainaut"),
+(1020, "WLG", "Liege"),
+(1020, "VLI", "Limburg"),
+(1020, "WLX", "Luxembourg"),
+(1020, "WNA", "Namur"),
+(1020, "VOV", "Oost-Vlaanderen"),
+(1020, "VBR", "Vlaams-Brabant"),
+(1020, "VWV", "West-Vlaanderen"),
+(1023, 'DEV', 'Devonshire'),
+(1023, 'HAM', 'Hamilton Parish'),
+(1023, 'HA', 'City of Hamilton'),
+(1023, 'PAG', 'Paget'),
+(1023, 'PEM', 'Pembroke'),
+(1023, 'SG', 'Town of St. George'),
+(1023, 'SGE', 'Saint George\'s'),
+(1023, 'SAN', 'Sandys'),
+(1023, 'SMI', 'Smiths'),
+(1023, 'SOU', 'Southampton'),
+(1023, 'WAR', 'Warwick'),
+(1034, "BAL", "Bale"),
+(1034, "BAM", "Bam"),
+(1034, "BAN", "Banwa"),
+(1034, "BAZ", "Bazega"),
+(1034, "BGR", "Bougouriba"),
+(1034, "BLG", "Boulgou"),
+(1034, "BLK", "Boulkiemde"),
+(1034, "COM", "Comoe"),
+(1034, "GAN", "Ganzourgou"),
+(1034, "GNA", "Gnagna"),
+(1034, "GOU", "Gourma"),
+(1034, "HOU", "Houet"),
+(1034, "IOB", "Ioba"),
+(1034, "KAD", "Kadiogo"),
+(1034, "KEN", "Kenedougou"),
+(1034, "KMD", "Komondjari"),
+(1034, "KMP", "Kompienga"),
+(1034, "KOS", "Kossi"),
+(1034, "KOP", "Koulpulogo"),
+(1034, "KOT", "Kouritenga"),
+(1034, "KOW", "Kourweogo"),
+(1034, "LER", "Leraba"),
+(1034, "LOR", "Loroum"),
+(1034, "MOU", "Mouhoun"),
+(1034, "NAO", "Nahouri"),
+(1034, "NAM", "Namentenga"),
+(1034, "NAY", "Nayala"),
+(1034, "NOU", "Noumbiel"),
+(1034, "OUB", "Oubritenga"),
+(1034, "OUD", "Oudalan"),
+(1034, "PAS", "Passore"),
+(1034, "PON", "Poni"),
+(1034, "SNG", "Sanguie"),
+(1034, "SMT", "Sanmatenga"),
+(1034, "SEN", "Seno"),
+(1034, "SIS", "Siasili"),
+(1034, "SOM", "Soum"),
+(1034, "SOR", "Sourou"),
+(1034, "TAP", "Tapoa"),
+(1034, "TUI", "Tui"),
+(1034, "YAG", "Yagha"),
+(1034, "YAT", "Yatenga"),
+(1034, "ZIR", "Ziro"),
+(1034, "ZON", "Zondoma"),
+(1034, "ZOU", "Zoundweogo"),
+(1033, "01", "Blagoevgrad"),
+(1033, "02", "Burgas"),
+(1033, "08", "Dobrich"),
+(1033, "07", "Gabrovo"),
+(1033, "26", "Haskovo"),
+(1033, "28", "Yambol"),
+(1033, "09", "Kardzhali"),
+(1033, "10", "Kyustendil"),
+(1033, "11", "Lovech"),
+(1033, "12", "Montana"),
+(1033, "13", "Pazardzhik"),
+(1033, "14", "Pernik"),
+(1033, "15", "Pleven"),
+(1033, "16", "Plovdiv"),
+(1033, "17", "Razgrad"),
+(1033, "18", "Ruse"),
+(1033, "19", "Silistra"),
+(1033, "20", "Sliven"),
+(1033, "21", "Smolyan"),
+(1033, "23", "Sofia"),
+(1033, "24", "Stara Zagora"),
+(1033, "27", "Shumen"),
+(1033, "25", "Targovishte"),
+(1033, "03", "Varna"),
+(1033, "04", "Veliko Tarnovo"),
+(1033, "05", "Vidin"),
+(1033, "06", "Vratsa"),
+(1016, "01", "Al Hadd"),
+(1016, "03", "Al Manamah"),
+(1016, "10", "Al Mintaqah al Gharbiyah"),
+(1016, "07", "Al Mintagah al Wusta"),
+(1016, "05", "Al Mintaqah ash Shamaliyah"),
+(1016, "02", "Al Muharraq"),
+(1016, "09", "Ar Rifa"),
+(1016, "04", "Jidd Hafs"),
+(1016, "12", "Madluat Jamad"),
+(1016, "08", "Madluat Isa"),
+(1016, "11", "Mintaqat Juzur tawar"),
+(1016, "06", "Sitrah"),
+(1036, "BB", "Bubanza"),
+(1036, "BJ", "Bujumbura"),
+(1036, "BR", "Bururi"),
+(1036, "CA", "Cankuzo"),
+(1036, "CI", "Cibitoke"),
+(1036, "GI", "Gitega"),
+(1036, "KR", "Karuzi"),
+(1036, "KY", "Kayanza"),
+(1036, "MA", "Makamba"),
+(1036, "MU", "Muramvya"),
+(1036, "MW", "Mwaro"),
+(1036, "NG", "Ngozi"),
+(1036, "RT", "Rutana"),
+(1036, "RY", "Ruyigi"),
+(1022, "AL", "Alibori"),
+(1022, "AK", "Atakora"),
+(1022, "AQ", "Atlantique"),
+(1022, "BO", "Borgou"),
+(1022, "CO", "Collines"),
+(1022, "DO", "Donga"),
+(1022, "KO", "Kouffo"),
+(1022, "LI", "Littoral"),
+(1022, "MO", "Mono"),
+(1022, "OU", "Oueme"),
+(1022, "PL", "Plateau"),
+(1022, "ZO", "Zou"),
+(1032, "BE", "Belait"),
+(1032, "BM", "Brunei-Muara"),
+(1032, "TE", "Temburong"),
+(1032, "TU", "Tutong"),
+(1025, "C", "Cochabamba"),
+(1025, "H", "Chuquisaca"),
+(1025, "B", "El Beni"),
+(1025, "L", "La Paz"),
+(1025, "O", "Oruro"),
+(1025, "N", "Pando"),
+(1025, "P", "Potosi"),
+(1025, "T", "Tarija"),
+(1029, "AC", "Acre"),
+(1029, "AL", "Alagoas"),
+(1029, "AM", "Amazonas"),
+(1029, "AP", "Amapa"),
+(1029, "BA", "Bahia"),
+(1029, "CE", "Ceara"),
+(1029, "DF", "Distrito Federal"),
+(1029, "ES", "Espirito Santo"),
+(1029, "GO", "Goias"),
+(1029, "MA", "Maranhao"),
+(1029, "MG", "Minas Gerais"),
+(1029, "MS", "Mato Grosso do Sul"),
+(1029, "MT", "Mato Grosso"),
+(1029, "PA", "Para"),
+(1029, "PB", "Paraiba"),
+(1029, "PE", "Pernambuco"),
+(1029, "PI", "Piaui"),
+(1029, "PR", "Parana"),
+(1029, "RJ", "Rio de Janeiro"),
+(1029, "RN", "Rio Grande do Norte"),
+(1029, "RO", "Rondonia"),
+(1029, "RR", "Roraima"),
+(1029, "RS", "Rio Grande do Sul"),
+(1029, "SC", "Santa Catarina"),
+(1029, "SE", "Sergipe"),
+(1029, "SP", "Sao Paulo"),
+(1029, "TO", "Tocantins"),
+(1212, "AC", "Acklins and Crooked Islands"),
+(1212, "BI", "Bimini"),
+(1212, "CI", "Cat Island"),
+(1212, "EX", "Exuma"),
+(1212, "IN", "Inagua"),
+(1212, "LI", "Long Island"),
+(1212, "MG", "Mayaguana"),
+(1212, "NP", "New Providence"),
+(1212, "RI", "Ragged Island"),
+(1212, "AB", "Abaco Islands"),
+(1212, "AN", "Andros Island"),
+(1212, "BR", "Berry Islands"),
+(1212, "EL", "Eleuthera"),
+(1212, "GB", "Grand Bahama"),
+(1212, "RC", "Rum Cay"),
+(1212, "SS", "San Salvador Island"),
+(1024, "33", "Bumthang"),
+(1024, "12", "Chhukha"),
+(1024, "22", "Dagana"),
+(1024, "GA", "Gasa"),
+(1024, "13", "Ha"),
+(1024, "44", "Lhuentse"),
+(1024, "42", "Monggar"),
+(1024, "11", "Paro"),
+(1024, "43", "Pemagatshel"),
+(1024, "23", "Punakha"),
+(1024, "45", "Samdrup Jongkha"),
+(1024, "14", "Samtee"),
+(1024, "31", "Sarpang"),
+(1024, "15", "Thimphu"),
+(1024, "41", "Trashigang"),
+(1024, "TY", "Trashi Yangtse"),
+(1024, "32", "Trongsa"),
+(1024, "21", "Tsirang"),
+(1024, "24", "Wangdue Phodrang"),
+(1024, "34", "Zhemgang"),
+(1027, "CE", "Central"),
+(1027, "GH", "Ghanzi"),
+(1027, "KG", "Kgalagadi"),
+(1027, "KL", "Kgatleng"),
+(1027, "KW", "Kweneng"),
+(1027, "NG", "Ngamiland"),
+(1027, "NE", "North-East"),
+(1027, "NW", "North-West"),
+(1027, "SE", "South-East"),
+(1027, "SO", "Southern"),
+(1019, "BR", "Brèsckaja voblasc\'"),
+(1019, "HO", "Homel\'skaja voblasc\'"),
+(1019, "HR", "Hrodzenskaja voblasc\'"),
+(1019, "MA", "Mahilëuskaja voblasc\'"),
+(1019, "MI", "Minskaja voblasc\'"),
+(1019, "VI", "Vicebskaja voblasc\'"),
+(1021, "BZ", "Belize"),
+(1021, "CY", "Cayo"),
+(1021, "CZL", "Corozal"),
+(1021, "OW", "Orange Walk"),
+(1021, "SC", "Stann Creek"),
+(1021, "TOL", "Toledo"),
+(1050, "KN", "Kinshasa"),
+(1050, "EQ", "Equateur"),
+(1050, "KE", "Kasai-Oriental"),
+(1050, "MA", "Maniema"),
+(1050, "NK", "Nord-Kivu"),
+(1050, "SK", "Sud-Kivu"),
+(1042, "BGF", "Bangui"),
+(1042, "BB", "Bamingui-Bangoran"),
+(1042, "BK", "Basse-Kotto"),
+(1042, "HK", "Haute-Kotto"),
+(1042, "HM", "Haut-Mbomou"),
+(1042, "KG", "Kemo"),
+(1042, "LB", "Lobaye"),
+(1042, "HS", "Mambere-Kadei"),
+(1042, "MB", "Mbomou"),
+(1042, "KB", "Nana-Grebizi"),
+(1042, "NM", "Nana-Mambere"),
+(1042, "MP", "Ombella-Mpoko"),
+(1042, "UK", "Ouaka"),
+(1042, "AC", "Ouham"),
+(1042, "OP", "Ouham-Pende"),
+(1042, "SE", "Sangha-Mbaere"),
+(1042, "VR", "Vakaga"),
+(1050, "01", "Kongo central"),
+(1050, "02", "Kwango"),
+(1050, "03", "Kwilu"),
+(1050, "04", "Mai-Ndombe"),
+(1050, "05", "Kasai"),
+(1050, "06", "Lulua"),
+(1050, "07", "Lomami"),
+(1050, "08", "Sankuru"),
+(1050, "09", "Ituri"),
+(1050, "10", "Haut-Uele"),
+(1050, "11", "Tshopo"),
+(1050, "12", "Bas-Uele"),
+(1050, "13", "Nord-Ubangi"),
+(1050, "14", "Mongala"),
+(1050, "15", "Sud-Ubangi"),
+(1050, "16", "Tshuapa"),
+(1050, "17", "Haut-Lomami"),
+(1050, "18", "Lualaba"),
+(1050, "19", "Haut-Katanga"),
+(1050, "20", "Tanganyika"),
+(1051, "BZV", "Brazzaville"),
+(1051, "11", "Bouenza"),
+(1051, "8", "Cuvette"),
+(1051, "15", "Cuvette-Ouest"),
+(1051, "5", "Kouilou"),
+(1051, "2", "Lekoumou"),
+(1051, "7", "Likouala"),
+(1051, "9", "Niari"),
+(1051, "14", "Plateaux"),
+(1051, "12", "Pool"),
+(1051, "13", "Sangha"),
+(1080, "01", "Estuaire"),
+(1080, "02", "Haut-Ogooué"),
+(1080, "03", "Moyen-Ogooué"),
+(1080, "04", "Ngounié"),
+(1080, "05", "Nyanga"),
+(1080, "06", "Ogooué-Ivindo"),
+(1080, "07", "Ogooué-Lolo"),
+(1080, "08", "Ogooué-Maritime"),
+(1080, "09", "Woleu-Ntem"),
+(1205, "AG", "Aargau"),
+(1205, "AI", "Appenzell Innerrhoden"),
+(1205, "AR", "Appenzell Ausserrhoden"),
+(1205, "BE", "Bern"),
+(1205, "BL", "Basel-Landschaft"),
+(1205, "BS", "Basel-Stadt"),
+(1205, "FR", "Fribourg"),
+(1205, "GE", "Geneva"),
+(1205, "GL", "Glarus"),
+(1205, "GR", "Graubunden"),
+(1205, "JU", "Jura"),
+(1205, "LU", "Luzern"),
+(1205, "NE", "Neuchatel"),
+(1205, "NW", "Nidwalden"),
+(1205, "OW", "Obwalden"),
+(1205, "SG", "Sankt Gallen"),
+(1205, "SH", "Schaffhausen"),
+(1205, "SO", "Solothurn"),
+(1205, "SZ", "Schwyz"),
+(1205, "TG", "Thurgau"),
+(1205, "TI", "Ticino"),
+(1205, "UR", "Uri"),
+(1205, "VD", "Vaud"),
+(1205, "VS", "Valais"),
+(1205, "ZG", "Zug"),
+(1205, "ZH", "Zurich"),
+(1054, "06", "18 Montagnes"),
+(1054, "16", "Agnebi"),
+(1054, "09", "Bas-Sassandra"),
+(1054, "10", "Denguele"),
+(1054, "02", "Haut-Sassandra"),
+(1054, "07", "Lacs"),
+(1054, "01", "Lagunes"),
+(1054, "12", "Marahoue"),
+(1054, "05", "Moyen-Comoe"),
+(1054, "11", "Nzi-Comoe"),
+(1054, "03", "Savanes"),
+(1054, "15", "Sud-Bandama"),
+(1054, "13", "Sud-Comoe"),
+(1054, "04", "Vallee du Bandama"),
+(1054, "14", "Worodouqou"),
+(1054, "08", "Zanzan"),
+(1044, "AI", "Aisen del General Carlos Ibanez del Campo"),
+(1044, "AN", "Antofagasta"),
+(1044, "AR", "Araucania"),
+(1044, "AT", "Atacama"),
+(1044, "BI", "Bio-Bio"),
+(1044, "CO", "Coquimbo"),
+(1044, "LI", "Libertador General Bernardo O\'Higgins"),
+(1044, "LL", "Los Lagos"),
+(1044, "MA", "Magallanes"),
+(1044, "ML", "Maule"),
+(1044, "SM", "Santiago Metropolitan"),
+(1044, "TA", "Tarapaca"),
+(1044, "VS", "Valparaiso"),
+(1044, "LR", "Los Rios"),
+(1044, "AP", "Arica y Parinacota"),
+(1038, "AD", "Adamaoua"),
+(1038, "CE", "Centre"),
+(1038, "ES", "East"),
+(1038, "EN", "Far North"),
+(1038, "NO", "North"),
+(1038, "SW", "South"),
+(1038, "SW", "South-West"),
+(1038, "OU", "West"),
+(1038, "LT", "Littoral"),
+(1038, "NW", "Nord-Ouest"),
+(1045, "11", "Beijing"),
+(1045, "50", "Chongqing"),
+(1045, "31", "Shanghai"),
+(1045, "12", "Tianjin"),
+(1045, "34", "Anhui"),
+(1045, "35", "Fujian"),
+(1045, "62", "Gansu"),
+(1045, "44", "Guangdong"),
+(1045, "52", "Guizhou"),
+(1045, "46", "Hainan"),
+(1045, "13", "Hebei"),
+(1045, "23", "Heilongjiang"),
+(1045, "41", "Henan"),
+(1045, "42", "Hubei"),
+(1045, "43", "Hunan"),
+(1045, "32", "Jiangsu"),
+(1045, "36", "Jiangxi"),
+(1045, "22", "Jilin"),
+(1045, "21", "Liaoning"),
+(1045, "63", "Qinghai"),
+(1045, "61", "Shaanxi"),
+(1045, "37", "Shandong"),
+(1045, "14", "Shanxi"),
+(1045, "51", "Sichuan"),
+(1045, "71", "Taiwan"),
+(1045, "53", "Yunnan"),
+(1045, "33", "Zhejiang"),
+(1045, "45", "Guangxi"),
+(1045, "15", "Neia Mongol (mn)"),
+(1045, "65", "Xinjiang"),
+(1045, "54", "Xizang"),
+(1045, "91", "Hong Kong"),
+(1045, "92", "Macau"),
+(1045, "YN", "Yinchuan"),
+(1045, "SZ", "Shizuishan"),
+(1045, "WZ", "Wuzhong"),
+(1045, "GY", "Guyuan"),
+(1045, "ZW", "Zhongwei"),
+(1048, "DC", "Distrito Capital de Bogotá"),
+(1048, "AMA", "Amazonea"),
+(1048, "ANT", "Antioquia"),
+(1048, "ARA", "Arauca"),
+(1048, "ATL", "Atlántico"),
+(1048, "BOL", "Bolívar"),
+(1048, "BOY", "Boyacá"),
+(1048, "CAL", "Caldea"),
+(1048, "CAQ", "Caquetá"),
+(1048, "CAS", "Casanare"),
+(1048, "CAU", "Cauca"),
+(1048, "CES", "Cesar"),
+(1048, "COR", "Córdoba"),
+(1048, "CUN", "Cundinamarca"),
+(1048, "CHO", "Chocó"),
+(1048, "GUA", "Guainía"),
+(1048, "GUV", "Guaviare"),
+(1048, "LAG", "La Guajira"),
+(1048, "MAG", "Magdalena"),
+(1048, "MET", "Meta"),
+(1048, "NAR", "Nariño"),
+(1048, "NSA", "Norte de Santander"),
+(1048, "PUT", "Putumayo"),
+(1048, "QUI", "Quindio"),
+(1048, "RIS", "Risaralda"),
+(1048, "SAP", "San Andrés, Providencia y Santa Catalina"),
+(1048, "SAN", "Santander"),
+(1048, "SUC", "Sucre"),
+(1048, "TOL", "Tolima"),
+(1048, "VAC", "Valle del Cauca"),
+(1048, "VAU", "Vaupés"),
+(1048, "VID", "Vichada"),
+(1048, "HUI", "Huila"),
+(1053, "A", "Alajuela"),
+(1053, "C", "Cartago"),
+(1053, "G", "Guanacaste"),
+(1053, "H", "Heredia"),
+(1053, "L", "Limon"),
+(1053, "P", "Puntarenas"),
+(1053, "SJ", "San Jose"),
+(1056, "09", "Camagey"),
+(1056, "08", "Ciego de `vila"),
+(1056, "06", "Cienfuegos"),
+(1056, "03", "Ciudad de La Habana"),
+(1056, "12", "Granma"),
+(1056, "14", "Guantanamo"),
+(1056, "11", "Holquin"),
+(1056, "02", "La Habana"),
+(1056, "10", "Las Tunas"),
+(1056, "04", "Matanzas"),
+(1056, "01", "Pinar del Rio"),
+(1056, "07", "Sancti Spiritus"),
+(1056, "13", "Santiago de Cuba"),
+(1056, "05", "Villa Clara"),
+(1056, "99", "Isla de la Juventud"),
+(1056, "PR", "Pinar del Roo"),
+(1056, "CA", "Ciego de Avila"),
+(1056, "CG", "Camagoey"),
+(1056, "HO", "Holgun"),
+(1056, "SS", "Sancti Spritus"),
+(1056, "IJ", "Municipio Especial Isla de la Juventud"),
+(1040, "BV", "Boa Vista"),
+(1040, "BR", "Brava"),
+(1040, "CS", "Calheta de Sao Miguel"),
+(1040, "FO", "Fogo"),
+(1040, "MA", "Maio"),
+(1040, "MO", "Mosteiros"),
+(1040, "PA", "Paul"),
+(1040, "PN", "Porto Novo"),
+(1040, "PR", "Praia"),
+(1040, "RG", "Ribeira Grande"),
+(1040, "SL", "Sal"),
+(1040, "SD", "Sao Domingos"),
+(1040, "SF", "Sao Filipe"),
+(1040, "SN", "Sao Nicolau"),
+(1040, "SV", "Sao Vicente"),
+(1040, "TA", "Tarrafal"),
+(1057, "04", "Ammochostos Magusa"),
+(1057, "06", "Keryneia"),
+(1057, "03", "Larnaka"),
+(1057, "01", "Lefkosia"),
+(1057, "02", "Lemesos"),
+(1057, "05", "Pafos"),
+(1058, "JC", "Jihočeský kraj"),
+(1058, "JM", "Jihomoravský kraj"),
+(1058, "KA", "Karlovarský kraj"),
+(1058, "KR", "Královéhradecký kraj"),
+(1058, "LI", "Liberecký kraj"),
+(1058, "MO", "Moravskoslezský kraj"),
+(1058, "OL", "Olomoucký kraj"),
+(1058, "PA", "Pardubický kraj"),
+(1058, "PL", "Plzeňský kraj"),
+(1058, "PR", "Praha, hlavní město"),
+(1058, "ST", "Středočeský kraj"),
+(1058, "US", "Ústecký kraj"),
+(1058, "VY", "Vysočina"),
+(1058, "ZL", "Zlínský kraj"),
+(1081, "AB", "Abkhazia"),
+(1081, "AJ", "Adjara"),
+(1081, "TB", "Tbilisi"),
+(1081, "GU", "Guria"),
+(1081, "IM", "Imereti"),
+(1081, "KA", "Kakheti"),
+(1081, "KK", "Kvemo Kartli"),
+(1081, "MM", "Mtskheta-Mtianeti"),
+(1081, "RL", "Racha-Lechkhumi and Kvemo Svaneti"),
+(1081, "SZ", "Samegrelo-Zemo Svaneti"),
+(1081, "SJ", "Samtskhe-Javakheti"),
+(1081, "SK", "Shida Kartli"),
+(1082, "BW", "Baden-Württemberg"),
+(1082, "BY", "Bayern"),
+(1082, "HB", "Bremen"),
+(1082, "HH", "Hamburg"),
+(1082, "HE", "Hessen"),
+(1082, "NI", "Niedersachsen"),
+(1082, "NW", "Nordrhein-Westfalen"),
+(1082, "RP", "Rheinland-Pfalz"),
+(1082, "SL", "Saarland"),
+(1082, "SH", "Schleswig-Holstein"),
+(1082, "BE", "Berlin"),
+(1082, "BB", "Brandenburg"),
+(1082, "MV", "Mecklenburg-Vorpommern"),
+(1082, "SN", "Sachsen"),
+(1082, "ST", "Sachsen-Anhalt"),
+(1082, "TH", "Thüringen"),
+(1060, "AS", "Ali Sabiah"),
+(1060, "DI", "Dikhil"),
+(1060, "DJ", "Djibouti"),
+(1060, "OB", "Obock"),
+(1060, "TA", "Tadjoura"),
+(1059, "147", "Frederiksberg"),
+(1059, "101", "Copenhagen City"),
+(1059, "015", "Copenhagen"),
+(1059, "020", "Frederiksborg"),
+(1059, "025", "Roskilde"),
+(1059, "030", "Vestsjælland"),
+(1059, "035", "Storstrøm"),
+(1059, "040", "Bornholm"),
+(1059, "042", "Fyn"),
+(1059, "050", "South Jutland"),
+(1059, "055", "Ribe"),
+(1059, "060", "Vejle"),
+(1059, "065", "Ringkjøbing"),
+(1059, "070", "Ã…rhus"),
+(1059, "076", "Viborg"),
+(1059, "080", "North Jutland"),
+(1062, "01", "Distrito Nacional (Santo Domingo)"),
+(1062, "02", "Azua"),
+(1062, "03", "Bahoruco"),
+(1062, "04", "Barahona"),
+(1062, "05", "Dajabón"),
+(1062, "06", "Duarte"),
+(1062, "08", "El Seybo [El Seibo]"),
+(1062, "09", "Espaillat"),
+(1062, "30", "Hato Mayor"),
+(1062, "10", "Independencia"),
+(1062, "11", "La Altagracia"),
+(1062, "07", "La Estrelleta [Elias Pina]"),
+(1062, "12", "La Romana"),
+(1062, "13", "La Vega"),
+(1062, "14", "Maroia Trinidad Sánchez"),
+(1062, "28", "Monseñor Nouel"),
+(1062, "15", "Monte Cristi"),
+(1062, "29", "Monte Plata"),
+(1062, "16", "Pedernales"),
+(1062, "17", "Peravia"),
+(1062, "18", "Puerto Plata"),
+(1062, "19", "Salcedo"),
+(1062, "20", "Samaná"),
+(1062, "21", "San Cristóbal"),
+(1062, "23", "San Pedro de Macorís"),
+(1062, "24", "Sánchez Ramírez"),
+(1062, "25", "Santiago"),
+(1062, "26", "Santiago Rodríguez"),
+(1062, "27", "Valverde"),
+(1003, "01", "Adrar"),
+(1003, "44", "Ain Defla"),
+(1003, "46", "Ain Tmouchent"),
+(1003, "16", "Alger"),
+(1003, "23", "Annaba"),
+(1003, "05", "Batna"),
+(1003, "08", "Bechar"),
+(1003, "06", "Bejaia"),
+(1003, "07", "Biskra"),
+(1003, "09", "Blida"),
+(1003, "34", "Bordj Bou Arreridj"),
+(1003, "10", "Bouira"),
+(1003, "35", "Boumerdes"),
+(1003, "02", "Chlef"),
+(1003, "25", "Constantine"),
+(1003, "17", "Djelfa"),
+(1003, "32", "El Bayadh"),
+(1003, "39", "El Oued"),
+(1003, "36", "El Tarf"),
+(1003, "47", "Ghardaia"),
+(1003, "24", "Guelma"),
+(1003, "33", "Illizi"),
+(1003, "18", "Jijel"),
+(1003, "40", "Khenchela"),
+(1003, "03", "Laghouat"),
+(1003, "29", "Mascara"),
+(1003, "26", "Medea"),
+(1003, "43", "Mila"),
+(1003, "27", "Mostaganem"),
+(1003, "28", "Msila"),
+(1003, "45", "Naama"),
+(1003, "31", "Oran"),
+(1003, "30", "Ouargla"),
+(1003, "04", "Oum el Bouaghi"),
+(1003, "48", "Relizane"),
+(1003, "20", "Saida"),
+(1003, "19", "Setif"),
+(1003, "22", "Sidi Bel Abbes"),
+(1003, "21", "Skikda"),
+(1003, "41", "Souk Ahras"),
+(1003, "11", "Tamanghasset"),
+(1003, "12", "Tebessa"),
+(1003, "14", "Tiaret"),
+(1003, "37", "Tindouf"),
+(1003, "42", "Tipaza"),
+(1003, "38", "Tissemsilt"),
+(1003, "15", "Tizi Ouzou"),
+(1003, "13", "Tlemcen"),
+(1064, "A", "Azuay"),
+(1064, "B", "Bolivar"),
+(1064, "F", "Canar"),
+(1064, "C", "Carchi"),
+(1064, "X", "Cotopaxi"),
+(1064, "H", "Chimborazo"),
+(1064, "O", "El Oro"),
+(1064, "E", "Esmeraldas"),
+(1064, "W", "Galapagos"),
+(1064, "G", "Guayas"),
+(1064, "I", "Imbabura"),
+(1064, "L", "Loja"),
+(1064, "R", "Los Rios"),
+(1064, "M", "Manabi"),
+(1064, "S", "Morona-Santiago"),
+(1064, "N", "Napo"),
+(1064, "D", "Orellana"),
+(1064, "Y", "Pastaza"),
+(1064, "P", "Pichincha"),
+(1064, "U", "Sucumbios"),
+(1064, "T", "Tungurahua"),
+(1064, "Z", "Zamora-Chinchipe"),
+(1069, "37", "Harjumaa"),
+(1069, "39", "Hiiumaa"),
+(1069, "44", "Ida-Virumaa"),
+(1069, "49", "Jõgevamaa"),
+(1069, "51", "Järvamaa"),
+(1069, "57", "Läänemaa"),
+(1069, "59", "Lääne-Virumaa"),
+(1069, "65", "Põlvamaa"),
+(1069, "67", "Pärnumaa"),
+(1069, "70", "Raplamaa"),
+(1069, "74", "Saaremaa"),
+(1069, "7B", "Tartumaa"),
+(1069, "82", "Valgamaa"),
+(1069, "84", "Viljandimaa"),
+(1069, "86", "Võrumaa"),
+(1065, "DK", "Ad Daqahllyah"),
+(1065, "BA", "Al Bahr al Ahmar"),
+(1065, "BH", "Al Buhayrah"),
+(1065, "FYM", "Al Fayym"),
+(1065, "GH", "Al Gharbiyah"),
+(1065, "ALX", "Al Iskandarlyah"),
+(1065, "IS", "Al Isma illyah"),
+(1065, "GZ", "Al Jizah"),
+(1065, "MNF", "Al Minuflyah"),
+(1065, "MN", "Al Minya"),
+(1065, "C", "Al Qahirah"),
+(1065, "KB", "Al Qalyublyah"),
+(1065, "WAD", "Al Wadi al Jadid"),
+(1065, "SHR", "Ash Sharqiyah"),
+(1065, "SUZ", "As Suways"),
+(1065, "ASN", "Aswan"),
+(1065, "AST", "Asyut"),
+(1065, "BNS", "Bani Suwayf"),
+(1065, "PTS", "Bur Sa\'id"),
+(1065, "DT", "Dumyat"),
+(1065, "JS", "Janub Sina\'"),
+(1065, "KFS", "Kafr ash Shaykh"),
+(1065, "MT", "Matruh"),
+(1065, "KN", "Qina"),
+(1065, "SIN", "Shamal Sina\'"),
+(1065, "SHG", "Suhaj"),
+(1068, "AN", "Anseba"),
+(1068, "DU", "Debub"),
+(1068, "DK", "Debubawi Keyih Bahri [Debub-Keih-Bahri]"),
+(1068, "GB", "Gash-Barka"),
+(1068, "MA", "Maakel [Maekel]"),
+(1068, "SK", "Semenawi Keyih Bahri [Semien-Keih-Bahri]"),
+(1198, "VI", "Álava"),
+(1198, "AB", "Albacete"),
+(1198, "A", "Alicante"),
+(1198, "AL", "Almería"),
+(1198, "O", "Asturias"),
+(1198, "AV", "Ávila"),
+(1198, "BA", "Badajoz"),
+(1198, "PM", "Baleares"),
+(1198, "B", "Barcelona"),
+(1198, "BU", "Burgos"),
+(1198, "CC", "Cáceres"),
+(1198, "CA", "Cádiz"),
+(1198, "S", "Cantabria"),
+(1198, "CS", "Castellón"),
+(1198, "CR", "Ciudad Real"),
+(1198, "CU", "Cuenca"),
+(1198, "GE", "Girona [Gerona]"),
+(1198, "GR", "Granada"),
+(1198, "GU", "Guadalajara"),
+(1198, "SS", "Guipúzcoa"),
+(1198, "H", "Huelva"),
+(1198, "HU", "Huesca"),
+(1198, "J", "Jaén"),
+(1198, "C", "La Coruña"),
+(1198, "LO", "La Rioja"),
+(1198, "GC", "Las Palmas"),
+(1198, "LE", "León"),
+(1198, "L", "Lleida [Lérida]"),
+(1198, "LU", "Lugo"),
+(1198, "M", "Madrid"),
+(1198, "MA", "Málaga"),
+(1198, "MU", "Murcia"),
+(1198, "NA", "Navarra"),
+(1198, "OR", "Ourense"),
+(1198, "P", "Palencia"),
+(1198, "PO", "Pontevedra"),
+(1198, "SA", "Salamanca"),
+(1198, "TF", "Santa Cruz de Tenerife"),
+(1198, "SG", "Segovia"),
+(1198, "SE", "Sevilla"),
+(1198, "SO", "Soria"),
+(1198, "T", "Tarragona"),
+(1198, "TE", "Teruel"),
+(1198, "V", "Valencia"),
+(1198, "VA", "Valladolid"),
+(1198, "BI", "Vizcaya"),
+(1198, "ZA", "Zamora"),
+(1198, "Z", "Zaragoza"),
+(1198, "CE", "Ceuta"),
+(1198, "ML", "Melilla"),
+(1198, "TO", "Toledo"),
+(1198, "CO", "Córdoba"),
+(1070, "AA", "Addis Ababa"),
+(1070, "DD", "Dire Dawa"),
+(1070, "AF", "Afar"),
+(1070, "AM", "Amara"),
+(1070, "BE", "Benshangul-Gumaz"),
+(1070, "GA", "Gambela Peoples"),
+(1070, "HA", "Harari People"),
+(1070, "OR", "Oromia"),
+(1070, "SO", "Somali"),
+(1070, "SN", "Southern Nations, Nationalities and Peoples"),
+(1070, "TI", "Tigrai"),
 -- (2484, 1075, "AL", "Ahvenanmasn laani"),
 -- (2485, 1075, "ES", "Etela-Suomen laani"),
 -- (2486, 1075, "IS", "Ita-Suomen lasni"),
 -- (2487, 1075, "LL", "Lapin Laani"),
 -- (2488, 1075, "LS", "Lansi-Suomen Laani"),
 -- (2489, 1075, "OL", "Oulun Lasni"),
-(2490, 1074, "E", "Eastern"),
-(2491, 1074, "N", "Northern"),
-(2492, 1074, "W", "Western"),
-(2493, 1074, "R", "Rotuma"),
-(2494, 1141, "TRK", "Chuuk"),
-(2495, 1141, "KSA", "Kosrae"),
-(2496, 1141, "PNI", "Pohnpei"),
-(2497, 1141, "YAP", "Yap"),
-(2498, 1076, "01", "Ain"),
-(2499, 1076, "02", "Aisne"),
-(2500, 1076, "03", "Allier"),
-(2501, 1076, "04", "Alpes-de-Haute-Provence"),
-(2502, 1076, "06", "Alpes-Maritimes"),
-(2503, 1076, "07", "Ardèche"),
-(2504, 1076, "08", "Ardennes"),
-(2505, 1076, "09", "Ariège"),
-(2506, 1076, "10", "Aube"),
-(2507, 1076, "11", "Aude"),
-(2508, 1076, "12", "Aveyron"),
-(2509, 1076, "67", "Bas-Rhin"),
-(2510, 1076, "13", "Bouches-du-Rhône"),
-(2511, 1076, "14", "Calvados"),
-(2512, 1076, "15", "Cantal"),
-(2513, 1076, "16", "Charente"),
-(2514, 1076, "17", "Charente-Maritime"),
-(2515, 1076, "18", "Cher"),
-(2516, 1076, "19", "Corrèze"),
-(2517, 1076, "20A", "Corse-du-Sud"),
-(2518, 1076, "21", "Côte-d\'Or"),
-(2519, 1076, "22", "Côtes-d\'Armor"),
-(2520, 1076, "23", "Creuse"),
-(2521, 1076, "79", "Deux-Sèvres"),
-(2522, 1076, "24", "Dordogne"),
-(2523, 1076, "25", "Doubs"),
-(2524, 1076, "26", "Drôme"),
-(2525, 1076, "91", "Essonne"),
-(2526, 1076, "27", "Eure"),
-(2527, 1076, "28", "Eure-et-Loir"),
-(2528, 1076, "29", "Finistère"),
-(2529, 1076, "30", "Gard"),
-(2530, 1076, "32", "Gers"),
-(2531, 1076, "33", "Gironde"),
-(2532, 1076, "68", "Haut-Rhin"),
-(2533, 1076, "20B", "Haute-Corse"),
-(2534, 1076, "31", "Haute-Garonne"),
-(2535, 1076, "43", "Haute-Loire"),
-(2536, 1076, "70", "Haute-Saône"),
-(2537, 1076, "74", "Haute-Savoie"),
-(2538, 1076, "87", "Haute-Vienne"),
-(2539, 1076, "05", "Hautes-Alpes"),
-(2540, 1076, "65", "Hautes-Pyrénées"),
-(2541, 1076, "92", "Hauts-de-Seine"),
-(2542, 1076, "34", "Hérault"),
-(2543, 1076, "36", "Indre"),
-(2544, 1076, "35", "Ille-et-Vilaine"),
-(2545, 1076, "37", "Indre-et-Loire"),
-(2546, 1076, "38", "Isère"),
-(2547, 1076, "40", "Landes"),
-(2548, 1076, "41", "Loir-et-Cher"),
-(2549, 1076, "42", "Loire"),
-(2550, 1076, "44", "Loire-Atlantique"),
-(2551, 1076, "45", "Loiret"),
-(2552, 1076, "46", "Lot"),
-(2553, 1076, "47", "Lot-et-Garonne"),
-(2554, 1076, "48", "Lozère"),
-(2555, 1076, "49", "Maine-et-Loire"),
-(2556, 1076, "50", "Manche"),
-(2557, 1076, "51", "Marne"),
-(2558, 1076, "53", "Mayenne"),
-(2559, 1076, "54", "Meurthe-et-Moselle"),
-(2560, 1076, "55", "Meuse"),
-(2561, 1076, "56", "Morbihan"),
-(2562, 1076, "57", "Moselle"),
-(2563, 1076, "58", "Nièvre"),
-(2564, 1076, "59", "Nord"),
-(2565, 1076, "60", "Oise"),
-(2566, 1076, "61", "Orne"),
-(2567, 1076, "75", "Paris"),
-(2568, 1076, "62", "Pas-de-Calais"),
-(2569, 1076, "63", "Puy-de-Dôme"),
-(2570, 1076, "64", "Pyrénées-Atlantiques"),
-(2571, 1076, "66", "Pyrénées-Orientales"),
-(2572, 1076, "69", "Rhône"),
-(2573, 1076, "71", "Saône-et-Loire"),
-(2574, 1076, "72", "Sarthe"),
-(2575, 1076, "73", "Savoie"),
-(2576, 1076, "77", "Seine-et-Marne"),
-(2577, 1076, "76", "Seine-Maritime"),
-(2578, 1076, "93", "Seine-Saint-Denis"),
-(2579, 1076, "80", "Somme"),
-(2580, 1076, "81", "Tarn"),
-(2581, 1076, "82", "Tarn-et-Garonne"),
-(2582, 1076, "95", "Val d\'Oise"),
-(2583, 1076, "90", "Territoire de Belfort"),
-(2584, 1076, "94", "Val-de-Marne"),
-(2585, 1076, "83", "Var"),
-(2586, 1076, "84", "Vaucluse"),
-(2587, 1076, "85", "Vendée"),
-(2588, 1076, "86", "Vienne"),
-(2589, 1076, "88", "Vosges"),
-(2590, 1076, "89", "Yonne"),
-(2591, 1076, "78", "Yvelines"),
-(2592, 1226, "ABE", "Aberdeen City"),
-(2593, 1226, "ABD", "Aberdeenshire"),
-(2594, 1226, "ANS", "Angus"),
-(2595, 1226, "ANT", "Co Antrim"),
-(2597, 1226, "AGB", "Argyll and Bute"),
-(2598, 1226, "ARM", "Co Armagh"),
-(2606, 1226, "BDF", "Bedfordshire"),
-(2612, 1226, "BGW", "Blaenau Gwent"),
-(2620, 1226, "BST", "Bristol, City of"),
-(2622, 1226, "BKM", "Buckinghamshire"),
-(2626, 1226, "CAM", "Cambridgeshire"),
-(2634, 1226, "CHS", "Cheshire"),
-(2635, 1226, "CLK", "Clackmannanshire"),
-(2639, 1226, "CON", "Cornwall"),
-(2643, 1226, "CMA", "Cumbria"),
-(2647, 1226, "DBY", "Derbyshire"),
-(2648, 1226, "DRY", "Co Londonderry"),
-(2649, 1226, "DEV", "Devon"),
-(2651, 1226, "DOR", "Dorset"),
-(2652, 1226, "DOW", "Co Down"),
-(2654, 1226, "DGY", "Dumfries and Galloway"),
-(2655, 1226, "DND", "Dundee City"),
-(2657, 1226, "DUR", "County Durham"),
-(2659, 1226, "EAY", "East Ayrshire"),
-(2660, 1226, "EDU", "East Dunbartonshire"),
-(2661, 1226, "ELN", "East Lothian"),
-(2662, 1226, "ERW", "East Renfrewshire"),
-(2663, 1226, "ERY", "East Riding of Yorkshire"),
-(2664, 1226, "ESX", "East Sussex"),
-(2665, 1226, "EDH", "Edinburgh, City of"),
-(2666, 1226, "ELS", "Na h-Eileanan Siar"),
-(2668, 1226, "ESS", "Essex"),
-(2669, 1226, "FAL", "Falkirk"),
-(2670, 1226, "FER", "Co Fermanagh"),
-(2671, 1226, "FIF", "Fife"),
-(2674, 1226, "GLG", "Glasgow City"),
-(2675, 1226, "GLS", "Gloucestershire"),
-(2678, 1226, "GWN", "Gwynedd"),
-(2682, 1226, "HAM", "Hampshire"),
-(2687, 1226, "HEF", "Herefordshire"),
-(2688, 1226, "HRT", "Hertfordshire"),
-(2689, 1226, "HED", "Highland"),
-(2692, 1226, "IVC", "Inverclyde"),
-(2694, 1226, "IOW", "Isle of Wight"),
-(2699, 1226, "KEN", "Kent"),
-(2705, 1226, "LAN", "Lancashire"),
-(2709, 1226, "LEC", "Leicestershire"),
-(2712, 1226, "LIN", "Lincolnshire"),
-(2723, 1226, "MLN", "Midlothian"),
-(2726, 1226, "MRY", "Moray"),
-(2734, 1226, "NFK", "Norfolk"),
-(2735, 1226, "NAY", "North Ayrshire"),
-(2738, 1226, "NLK", "North Lanarkshire"),
-(2742, 1226, "NYK", "North Yorkshire"),
-(2743, 1226, "NTH", "Northamptonshire"),
-(2744, 1226, "NBL", "Northumberland"),
-(2746, 1226, "NTT", "Nottinghamshire"),
-(2747, 1226, "OLD", "Oldham"),
-(2748, 1226, "OMH", "Omagh"),
-(2749, 1226, "ORR", "Orkney Islands"),
-(2750, 1226, "OXF", "Oxfordshire"),
-(2752, 1226, "PKN", "Perth and Kinross"),
-(2757, 1226, "POW", "Powys"),
-(2761, 1226, "RFW", "Renfrewshire"),
-(2766, 1226, "RUT", "Rutland"),
-(2770, 1226, "SCB", "Scottish Borders"),
-(2773, 1226, "ZET", "Shetland Islands"),
-(2774, 1226, "SHR", "Shropshire"),
-(2777, 1226, "SOM", "Somerset"),
-(2778, 1226, "SAY", "South Ayrshire"),
-(2779, 1226, "SGC", "South Gloucestershire"),
-(2780, 1226, "SLK", "South Lanarkshire"),
-(2785, 1226, "STS", "Staffordshire"),
-(2786, 1226, "STG", "Stirling"),
-(2791, 1226, "SFK", "Suffolk"),
-(2793, 1226, "SRY", "Surrey"),
-(2804, 1226, "VGL", "Vale of Glamorgan, The"),
-(2811, 1226, "WAR", "Warwickshire"),
-(2813, 1226, "WDU", "West Dunbartonshire"),
-(2814, 1226, "WLN", "West Lothian"),
-(2815, 1226, "WSX", "West Sussex"),
-(2818, 1226, "WIL", "Wiltshire"),
-(2823, 1226, "WOR", "Worcestershire"),
-(2826, 1083, "AH", "Ashanti"),
-(2827, 1083, "BA", "Brong-Ahafo"),
-(2828, 1083, "AA", "Greater Accra"),
-(2829, 1083, "UE", "Upper East"),
-(2830, 1083, "UW", "Upper West"),
-(2831, 1083, "TV", "Volta"),
-(2832, 1213, "B", "Banjul"),
-(2833, 1213, "L", "Lower River"),
-(2834, 1213, "M", "MacCarthy Island"),
-(2835, 1213, "N", "North Bank"),
-(2836, 1213, "U", "Upper River"),
-(2837, 1091, "BE", "Beyla"),
-(2838, 1091, "BF", "Boffa"),
-(2839, 1091, "BK", "Boke"),
-(2840, 1091, "CO", "Coyah"),
-(2841, 1091, "DB", "Dabola"),
-(2842, 1091, "DL", "Dalaba"),
-(2843, 1091, "DI", "Dinguiraye"),
-(2844, 1091, "DU", "Dubreka"),
-(2845, 1091, "FA", "Faranah"),
-(2846, 1091, "FO", "Forecariah"),
-(2847, 1091, "FR", "Fria"),
-(2848, 1091, "GA", "Gaoual"),
-(2849, 1091, "GU", "Guekedou"),
-(2850, 1091, "KA", "Kankan"),
-(2851, 1091, "KE", "Kerouane"),
-(2852, 1091, "KD", "Kindia"),
-(2853, 1091, "KS", "Kissidougou"),
-(2854, 1091, "KB", "Koubia"),
-(2855, 1091, "KN", "Koundara"),
-(2856, 1091, "KO", "Kouroussa"),
-(2857, 1091, "LA", "Labe"),
-(2858, 1091, "LE", "Lelouma"),
-(2859, 1091, "LO", "Lola"),
-(2860, 1091, "MC", "Macenta"),
-(2861, 1091, "ML", "Mali"),
-(2862, 1091, "MM", "Mamou"),
-(2863, 1091, "MD", "Mandiana"),
-(2864, 1091, "NZ", "Nzerekore"),
-(2865, 1091, "PI", "Pita"),
-(2866, 1091, "SI", "Siguiri"),
-(2867, 1091, "TE", "Telimele"),
-(2868, 1091, "TO", "Tougue"),
-(2869, 1091, "YO", "Yomou"),
-(2870, 1067, "C", "Region Continental"),
-(2871, 1067, "I", "Region Insular"),
-(2872, 1067, "AN", "Annobon"),
-(2873, 1067, "BN", "Bioko Norte"),
-(2874, 1067, "BS", "Bioko Sur"),
-(2875, 1067, "CS", "Centro Sur"),
-(2876, 1067, "KN", "Kie-Ntem"),
-(2877, 1067, "LI", "Litoral"),
-(2878, 1067, "WN", "Wele-Nzas"),
-(2879, 1085, "13", "Achaïa"),
-(2880, 1085, "01", "Aitolia-Akarnania"),
-(2881, 1085, "11", "Argolis"),
-(2882, 1085, "12", "Arkadia"),
-(2883, 1085, "31", "Arta"),
-(2884, 1085, "A1", "Attiki"),
-(2885, 1085, "64", "Chalkidiki"),
-(2886, 1085, "94", "Chania"),
-(2887, 1085, "85", "Chios"),
-(2888, 1085, "81", "Dodekanisos"),
-(2889, 1085, "52", "Drama"),
-(2890, 1085, "71", "Evros"),
-(2891, 1085, "05", "Evrytania"),
-(2892, 1085, "04", "Evvoia"),
-(2893, 1085, "63", "Florina"),
-(2894, 1085, "07", "Fokis"),
-(2895, 1085, "06", "Fthiotis"),
-(2896, 1085, "51", "Grevena"),
-(2897, 1085, "14", "Ileia"),
-(2898, 1085, "53", "Imathia"),
-(2899, 1085, "33", "Ioannina"),
-(2900, 1085, "91", "Irakleion"),
-(2901, 1085, "41", "Karditsa"),
-(2902, 1085, "56", "Kastoria"),
-(2903, 1085, "55", "Kavalla"),
-(2904, 1085, "23", "Kefallinia"),
-(2905, 1085, "22", "Kerkyra"),
-(2906, 1085, "57", "Kilkis"),
-(2907, 1085, "15", "Korinthia"),
-(2908, 1085, "58", "Kozani"),
-(2909, 1085, "82", "Kyklades"),
-(2910, 1085, "16", "Lakonia"),
-(2911, 1085, "42", "Larisa"),
-(2912, 1085, "92", "Lasithion"),
-(2913, 1085, "24", "Lefkas"),
-(2914, 1085, "83", "Lesvos"),
-(2915, 1085, "43", "Magnisia"),
-(2916, 1085, "17", "Messinia"),
-(2917, 1085, "59", "Pella"),
-(2918, 1085, "34", "Preveza"),
-(2919, 1085, "93", "Rethymnon"),
-(2920, 1085, "73", "Rodopi"),
-(2921, 1085, "84", "Samos"),
-(2922, 1085, "62", "Serrai"),
-(2923, 1085, "32", "Thesprotia"),
-(2924, 1085, "54", "Thessaloniki"),
-(2925, 1085, "44", "Trikala"),
-(2926, 1085, "03", "Voiotia"),
-(2927, 1085, "72", "Xanthi"),
-(2928, 1085, "21", "Zakynthos"),
-(2929, 1085, "69", "Agio Oros"),
-(2930, 1090, "AV", "Alta Verapaz"),
-(2931, 1090, "BV", "Baja Verapaz"),
-(2932, 1090, "CM", "Chimaltenango"),
-(2933, 1090, "CQ", "Chiquimula"),
-(2934, 1090, "PR", "El Progreso"),
-(2935, 1090, "ES", "Escuintla"),
-(2936, 1090, "GU", "Guatemala"),
-(2937, 1090, "HU", "Huehuetenango"),
-(2938, 1090, "IZ", "Izabal"),
-(2939, 1090, "JA", "Jalapa"),
-(2940, 1090, "JU", "Jutiapa"),
-(2941, 1090, "PE", "Peten"),
-(2942, 1090, "QZ", "Quetzaltenango"),
-(2943, 1090, "QC", "Quiche"),
-(2944, 1090, "RE", "Retalhuleu"),
-(2945, 1090, "SA", "Sacatepequez"),
-(2946, 1090, "SM", "San Marcos"),
-(2947, 1090, "SR", "Santa Rosa"),
-(2948, 1090, "SO", "Sololá"),
-(2949, 1090, "SU", "Suchitepequez"),
-(2950, 1090, "TO", "Totonicapan"),
-(2951, 1090, "ZA", "Zacapa"),
-(2952, 1092, "BS", "Bissau"),
-(2953, 1092, "BA", "Bafata"),
-(2954, 1092, "BM", "Biombo"),
-(2955, 1092, "BL", "Bolama"),
-(2956, 1092, "CA", "Cacheu"),
-(2957, 1092, "GA", "Gabu"),
-(2958, 1092, "OI", "Oio"),
-(2959, 1092, "QU", "Quloara"),
-(2960, 1092, "TO", "Tombali S"),
-(2961, 1093, "BA", "Barima-Waini"),
-(2962, 1093, "CU", "Cuyuni-Mazaruni"),
-(2963, 1093, "DE", "Demerara-Mahaica"),
-(2964, 1093, "EB", "East Berbice-Corentyne"),
-(2965, 1093, "ES", "Essequibo Islands-West Demerara"),
-(2966, 1093, "MA", "Mahaica-Berbice"),
-(2967, 1093, "PM", "Pomeroon-Supenaam"),
-(2968, 1093, "PT", "Potaro-Siparuni"),
-(2969, 1093, "UD", "Upper Demerara-Berbice"),
-(2970, 1093, "UT", "Upper Takutu-Upper Essequibo"),
-(2971, 1097, "AT", "Atlantida"),
-(2972, 1097, "CL", "Colon"),
-(2973, 1097, "CM", "Comayagua"),
-(2974, 1097, "CP", "Copan"),
-(2975, 1097, "CR", "Cortes"),
-(2976, 1097, "CH", "Choluteca"),
-(2977, 1097, "EP", "El Paraiso"),
-(2978, 1097, "FM", "Francisco Morazan"),
-(2979, 1097, "GD", "Gracias a Dios"),
-(2980, 1097, "IN", "Intibuca"),
-(2981, 1097, "IB", "Islas de la Bahia"),
-(2982, 1097, "LE", "Lempira"),
-(2983, 1097, "OC", "Ocotepeque"),
-(2984, 1097, "OL", "Olancho"),
-(2985, 1097, "SB", "Santa Barbara"),
-(2986, 1097, "VA", "Valle"),
-(2987, 1097, "YO", "Yoro"),
-(2988, 1055, "07", "Bjelovarsko-bilogorska zupanija"),
-(2989, 1055, "12", "Brodsko-posavska zupanija"),
-(2990, 1055, "19", "Dubrovacko-neretvanska zupanija"),
-(2991, 1055, "18", "Istarska zupanija"),
-(2992, 1055, "04", "Karlovacka zupanija"),
-(2993, 1055, "06", "Koprivnickco-krizevacka zupanija"),
-(2994, 1055, "02", "Krapinako-zagorska zupanija"),
-(2995, 1055, "09", "Licko-senjska zupanija"),
-(2996, 1055, "20", "Medimurska zupanija"),
-(2997, 1055, "14", "Osjecko-baranjska zupanija"),
-(2998, 1055, "11", "Pozesko-slavonska zupanija"),
-(2999, 1055, "08", "Primorsko-goranska zupanija"),
-(3000, 1055, "03", "Sisacko-moelavacka Iupanija"),
-(3001, 1055, "17", "Splitako-dalmatinska zupanija"),
-(3002, 1055, "15", "Sibenako-kninska zupanija"),
-(3003, 1055, "05", "Varaidinska zupanija"),
-(3004, 1055, "10", "VirovitiEko-podravska zupanija"),
-(3005, 1055, "16", "VuRovarako-srijemska zupanija"),
-(3006, 1055, "13", "Zadaraka"),
-(3007, 1055, "01", "Zagrebacka zupanija"),
-(3008, 1094, "GA", "Grande-Anse"),
-(3009, 1094, "NE", "Nord-Est"),
-(3010, 1094, "NO", "Nord-Ouest"),
-(3011, 1094, "OU", "Ouest"),
-(3012, 1094, "SD", "Sud"),
-(3013, 1094, "SE", "Sud-Est"),
-(3014, 1099, "BU", "Budapest"),
-(3015, 1099, "BK", "Bács-Kiskun"),
-(3016, 1099, "BA", "Baranya"),
-(3017, 1099, "BE", "Békés"),
-(3018, 1099, "BZ", "Borsod-Abaúj-Zemplén"),
-(3019, 1099, "CS", "Csongrád"),
-(3020, 1099, "FE", "Fejér"),
-(3021, 1099, "GS", "Győr-Moson-Sopron"),
-(3022, 1099, "HB", "Hajdu-Bihar"),
-(3023, 1099, "HE", "Heves"),
-(3024, 1099, "JN", "Jász-Nagykun-Szolnok"),
-(3025, 1099, "KE", "Komárom-Esztergom"),
-(3026, 1099, "NO", "Nográd"),
-(3027, 1099, "PE", "Pest"),
-(3028, 1099, "SO", "Somogy"),
-(3029, 1099, "SZ", "Szabolcs-Szatmár-Bereg"),
-(3030, 1099, "TO", "Tolna"),
-(3031, 1099, "VA", "Vas"),
-(3032, 1099, "VE", "Veszprém"),
-(3033, 1099, "ZA", "Zala"),
-(3034, 1099, "BC", "Békéscsaba"),
-(3035, 1099, "DE", "Debrecen"),
-(3036, 1099, "DU", "Dunaújváros"),
-(3037, 1099, "EG", "Eger"),
-(3038, 1099, "GY", "Győr"),
-(3039, 1099, "HV", "Hódmezővásárhely"),
-(3040, 1099, "KV", "Kaposvár"),
-(3041, 1099, "KM", "Kecskemét"),
-(3042, 1099, "MI", "Miskolc"),
-(3043, 1099, "NK", "Nagykanizsa"),
-(3044, 1099, "NY", "Nyiregyháza"),
-(3045, 1099, "PS", "Pécs"),
-(3046, 1099, "ST", "Salgótarján"),
-(3047, 1099, "SN", "Sopron"),
-(3048, 1099, "SD", "Szeged"),
-(3049, 1099, "SF", "Székesfehérvár"),
-(3050, 1099, "SS", "Szekszárd"),
-(3051, 1099, "SK", "Szolnok"),
-(3052, 1099, "SH", "Szombathely"),
-(3053, 1099, "TB", "Tatabánya"),
-(3054, 1099, "ZE", "Zalaegerszeg"),
-(3055, 1102, "BA", "Bali"),
-(3056, 1102, "BB", "Kepulauan Bangka Belitung"),
-(3057, 1102, "BT", "Banten"),
-(3058, 1102, "BE", "Bengkulu"),
-(3059, 1102, "GO", "Gorontalo"),
-(3060, 1102, "PB", "Papua Barat"),
-(3061, 1102, "JA", "Jambi"),
-(3062, 1102, "JB", "Jawa Barat"),
-(3063, 1102, "JT", "Jawa Tengah"),
-(3064, 1102, "JI", "Jawa Timur"),
-(3065, 1102, "KB", "Kalimantan Barat"),
-(3066, 1102, "KI", "Kalimantan Timur"),
-(3067, 1102, "KS", "Kalimantan Selatan"),
-(3068, 1102, "KR", "Kepulauan Riau"),
-(3069, 1102, "LA", "Lampung"),
-(3070, 1102, "MA", "Maluku"),
-(3071, 1102, "MU", "Maluku Utara"),
-(3072, 1102, "NB", "Nusa Tenggara Barat"),
-(3073, 1102, "NT", "Nusa Tenggara Timur"),
-(3074, 1102, "PA", "Papua"),
-(3075, 1102, "RI", "Riau"),
-(3076, 1102, "SN", "Sulawesi Selatan"),
-(3077, 1102, "ST", "Sulawesi Tengah"),
-(3078, 1102, "SG", "Sulawesi Tenggara"),
-(3079, 1102, "SA", "Sulawesi Utara"),
-(3080, 1102, "SB", "Sumatra Barat"),
-(3081, 1102, "SS", "Sumatra Selatan"),
-(3082, 1102, "SU", "Sumatera Utara"),
-(3083, 1102, "JK", "DKI Jakarta"),
-(3084, 1102, "AC", "Aceh"),
-(3085, 1102, "YO", "DI Yogyakarta"),
-(3086, 1105, "C", "Cork"),
-(3087, 1105, "CE", "Clare"),
-(3088, 1105, "CN", "Cavan"),
-(3089, 1105, "CW", "Carlow"),
-(3090, 1105, "D", "Dublin"),
-(3091, 1105, "DL", "Donegal"),
-(3092, 1105, "G", "Galway"),
-(3093, 1105, "KE", "Kildare"),
-(3094, 1105, "KK", "Kilkenny"),
-(3095, 1105, "KY", "Kerry"),
-(3096, 1105, "LD", "Longford"),
-(3097, 1105, "LH", "Louth"),
-(3098, 1105, "LK", "Limerick"),
-(3099, 1105, "LM", "Leitrim"),
-(3100, 1105, "LS", "Laois"),
-(3101, 1105, "MH", "Meath"),
-(3102, 1105, "MN", "Monaghan"),
-(3103, 1105, "MO", "Mayo"),
-(3104, 1105, "OY", "Offaly"),
-(3105, 1105, "RN", "Roscommon"),
-(3106, 1105, "SO", "Sligo"),
-(3107, 1105, "TA", "Tipperary"),
-(3108, 1105, "WD", "Waterford"),
-(3109, 1105, "WH", "Westmeath"),
-(3110, 1105, "WW", "Wicklow"),
-(3111, 1105, "WX", "Wexford"),
-(3112, 1106, "D", "HaDarom"),
-(3113, 1106, "M", "HaMerkaz"),
-(3114, 1106, "Z", "HaZafon"),
-(3115, 1106, "HA", "Haifa"),
-(3116, 1106, "TA", "Tel-Aviv"),
-(3117, 1106, "JM", "Jerusalem"),
-(3118, 1104, "AN", "Al Anbar"),
-(3119, 1104, "BA", "Al Ba,rah"),
-(3120, 1104, "MU", "Al Muthanna"),
-(3121, 1104, "QA", "Al Qadisiyah"),
-(3122, 1104, "NA", "An Najef"),
-(3123, 1104, "AR", "Arbil"),
-(3124, 1104, "SW", "As Sulaymaniyah"),
-(3125, 1104, "TS", "At Ta\'mim"),
-(3126, 1104, "BB", "Babil"),
-(3127, 1104, "BG", "Baghdad"),
-(3128, 1104, "DA", "Dahuk"),
-(3129, 1104, "DQ", "Dhi Qar"),
-(3130, 1104, "DI", "Diyala"),
-(3131, 1104, "KA", "Karbala\'"),
-(3132, 1104, "MA", "Maysan"),
-(3133, 1104, "NI", "Ninawa"),
-(3134, 1104, "SD", "Salah ad Din"),
-(3135, 1104, "WA", "Wasit"),
-(3136, 1103, "03", "Ardabil"),
-(3137, 1103, "02", "Azarbayjan-e Gharbi"),
-(3138, 1103, "01", "Azarbayjan-e Sharqi"),
-(3139, 1103, "06", "Bushehr"),
-(3140, 1103, "08", "Chahar Mahall va Bakhtiari"),
-(3141, 1103, "04", "Esfahan"),
-(3142, 1103, "14", "Fars"),
-(3143, 1103, "19", "Gilan"),
-(3144, 1103, "27", "Golestan"),
-(3145, 1103, "24", "Hamadan"),
-(3146, 1103, "23", "Hormozgan"),
-(3147, 1103, "05", "Iiam"),
-(3148, 1103, "15", "Kerman"),
-(3149, 1103, "17", "Kermanshah"),
-(3150, 1103, "09", "Khorasan"),
-(3151, 1103, "10", "Khuzestan"),
-(3152, 1103, "18", "Kohjiluyeh va Buyer Ahmad"),
-(3153, 1103, "16", "Kordestan"),
-(3154, 1103, "20", "Lorestan"),
-(3155, 1103, "22", "Markazi"),
-(3156, 1103, "21", "Mazandaran"),
-(3157, 1103, "28", "Qazvin"),
-(3158, 1103, "26", "Qom"),
-(3159, 1103, "12", "Semnan"),
-(3160, 1103, "13", "Sistan va Baluchestan"),
-(3161, 1103, "07", "Tehran"),
-(3162, 1103, "25", "Yazd"),
-(3163, 1103, "11", "Zanjan"),
-(3164, 1100, "7", "Austurland"),
-(3165, 1100, "1", "Hofuoborgarsvaeoi utan Reykjavikur"),
-(3166, 1100, "6", "Norourland eystra"),
-(3167, 1100, "5", "Norourland vestra"),
-(3168, 1100, "0", "Reykjavik"),
-(3169, 1100, "8", "Suourland"),
-(3170, 1100, "2", "Suournes"),
-(3171, 1100, "4", "Vestfirolr"),
-(3172, 1100, "3", "Vesturland"),
-(3173, 1107, "AG", "Agrigento"),
-(3174, 1107, "AL", "Alessandria"),
-(3175, 1107, "AN", "Ancona"),
-(3176, 1107, "AO", "Aosta"),
-(3177, 1107, "AR", "Arezzo"),
-(3178, 1107, "AP", "Ascoli Piceno"),
-(3179, 1107, "AT", "Asti"),
-(3180, 1107, "AV", "Avellino"),
-(3181, 1107, "BA", "Bari"),
-(3182, 1107, "BL", "Belluno"),
-(3183, 1107, "BN", "Benevento"),
-(3184, 1107, "BG", "Bergamo"),
-(3185, 1107, "BI", "Biella"),
-(3186, 1107, "BO", "Bologna"),
-(3187, 1107, "BZ", "Bolzano"),
-(3188, 1107, "BS", "Brescia"),
-(3189, 1107, "BR", "Brindisi"),
-(3190, 1107, "CA", "Cagliari"),
-(3191, 1107, "CL", "Caltanissetta"),
-(3192, 1107, "CB", "Campobasso"),
-(3193, 1107, "CE", "Caserta"),
-(3194, 1107, "CT", "Catania"),
-(3195, 1107, "CZ", "Catanzaro"),
-(3196, 1107, "CH", "Chieti"),
-(3197, 1107, "CO", "Como"),
-(3198, 1107, "CS", "Cosenza"),
-(3199, 1107, "CR", "Cremona"),
-(3200, 1107, "KR", "Crotone"),
-(3201, 1107, "CN", "Cuneo"),
-(3202, 1107, "EN", "Enna"),
-(3203, 1107, "FE", "Ferrara"),
-(3204, 1107, "FI", "Firenze"),
-(3205, 1107, "FG", "Foggia"),
-(3206, 1107, "FC", "Forlì-Cesena"),
-(3207, 1107, "FR", "Frosinone"),
-(3208, 1107, "GE", "Genova"),
-(3209, 1107, "GO", "Gorizia"),
-(3210, 1107, "GR", "Grosseto"),
-(3211, 1107, "IM", "Imperia"),
-(3212, 1107, "IS", "Isernia"),
-(3213, 1107, "AQ", "L\'Aquila"),
-(3214, 1107, "SP", "La Spezia"),
-(3215, 1107, "LT", "Latina"),
-(3216, 1107, "LE", "Lecce"),
-(3217, 1107, "LC", "Lecco"),
-(3218, 1107, "LI", "Livorno"),
-(3219, 1107, "LO", "Lodi"),
-(3220, 1107, "LU", "Lucca"),
-(3221, 1107, "MC", "Macerata"),
-(3222, 1107, "MN", "Mantova"),
-(3223, 1107, "MS", "Massa-Carrara"),
-(3224, 1107, "MT", "Matera"),
-(3225, 1107, "ME", "Messina"),
-(3226, 1107, "MI", "Milano"),
-(3227, 1107, "MO", "Modena"),
-(3228, 1107, "NA", "Napoli"),
-(3229, 1107, "NO", "Novara"),
-(3230, 1107, "NU", "Nuoro"),
-(3231, 1107, "OR", "Oristano"),
-(3232, 1107, "PD", "Padova"),
-(3233, 1107, "PA", "Palermo"),
-(3234, 1107, "PR", "Parma"),
-(3235, 1107, "PV", "Pavia"),
-(3236, 1107, "PG", "Perugia"),
-(3237, 1107, "PU", "Pesaro e Urbino"),
-(3238, 1107, "PE", "Pescara"),
-(3239, 1107, "PC", "Piacenza"),
-(3240, 1107, "PI", "Pisa"),
-(3241, 1107, "PT", "Pistoia"),
-(3242, 1107, "PN", "Pordenone"),
-(3243, 1107, "PZ", "Potenza"),
-(3244, 1107, "PO", "Prato"),
-(3245, 1107, "RG", "Ragusa"),
-(3246, 1107, "RA", "Ravenna"),
-(3247, 1107, "RC", "Reggio Calabria"),
-(3248, 1107, "RE", "Reggio Emilia"),
-(3249, 1107, "RI", "Rieti"),
-(3250, 1107, "RN", "Rimini"),
-(3251, 1107, "RM", "Roma"),
-(3252, 1107, "RO", "Rovigo"),
-(3253, 1107, "SA", "Salerno"),
-(3254, 1107, "SS", "Sassari"),
-(3255, 1107, "SV", "Savona"),
-(3256, 1107, "SI", "Siena"),
-(3257, 1107, "SR", "Siracusa"),
-(3258, 1107, "SO", "Sondrio"),
-(3259, 1107, "TA", "Taranto"),
-(3260, 1107, "TE", "Teramo"),
-(3261, 1107, "TR", "Terni"),
-(3262, 1107, "TO", "Torino"),
-(3263, 1107, "TP", "Trapani"),
-(3264, 1107, "TN", "Trento"),
-(3265, 1107, "TV", "Treviso"),
-(3266, 1107, "TS", "Trieste"),
-(3267, 1107, "UD", "Udine"),
-(3268, 1107, "VA", "Varese"),
-(3269, 1107, "VE", "Venezia"),
-(3270, 1107, "VB", "Verbano-Cusio-Ossola"),
-(3271, 1107, "VC", "Vercelli"),
-(3272, 1107, "VR", "Verona"),
-(3273, 1107, "VV", "Vibo Valentia"),
-(3274, 1107, "VI", "Vicenza"),
-(3275, 1107, "VT", "Viterbo"),
-(3276, 1109, "23", "Aichi"),
-(3277, 1109, "05", "Akita"),
-(3278, 1109, "02", "Aomori"),
-(3279, 1109, "12", "Chiba"),
-(3280, 1109, "38", "Ehime"),
-(3281, 1109, "18", "Fukui"),
-(3282, 1109, "40", "Fukuoka"),
-(3283, 1109, "07", "Fukusima"),
-(3284, 1109, "21", "Gifu"),
-(3285, 1109, "10", "Gunma"),
-(3286, 1109, "34", "Hiroshima"),
-(3287, 1109, "01", "Hokkaido"),
-(3288, 1109, "28", "Hyogo"),
-(3289, 1109, "08", "Ibaraki"),
-(3290, 1109, "17", "Ishikawa"),
-(3291, 1109, "03", "Iwate"),
-(3292, 1109, "37", "Kagawa"),
-(3293, 1109, "46", "Kagoshima"),
-(3294, 1109, "14", "Kanagawa"),
-(3295, 1109, "39", "Kochi"),
-(3296, 1109, "43", "Kumamoto"),
-(3297, 1109, "26", "Kyoto"),
-(3298, 1109, "24", "Mie"),
-(3299, 1109, "04", "Miyagi"),
-(3300, 1109, "45", "Miyazaki"),
-(3301, 1109, "20", "Nagano"),
-(3302, 1109, "42", "Nagasaki"),
-(3303, 1109, "29", "Nara"),
-(3304, 1109, "15", "Niigata"),
-(3305, 1109, "44", "Oita"),
-(3306, 1109, "33", "Okayama"),
-(3307, 1109, "47", "Okinawa"),
-(3308, 1109, "27", "Osaka"),
-(3309, 1109, "41", "Saga"),
-(3310, 1109, "11", "Saitama"),
-(3311, 1109, "25", "Shiga"),
-(3312, 1109, "32", "Shimane"),
-(3313, 1109, "22", "Shizuoka"),
-(3314, 1109, "09", "Tochigi"),
-(3315, 1109, "36", "Tokushima"),
-(3316, 1109, "13", "Tokyo"),
-(3317, 1109, "31", "Tottori"),
-(3318, 1109, "16", "Toyama"),
-(3319, 1109, "30", "Wakayama"),
-(3320, 1109, "06", "Yamagata"),
-(3321, 1109, "35", "Yamaguchi"),
-(3322, 1109, "19", "Yamanashi"),
-(3323, 1108, "CN", "Clarendon"),
-(3324, 1108, "HR", "Hanover"),
-(3325, 1108, "KN", "Kingston"),
-(3326, 1108, "PD", "Portland"),
-(3327, 1108, "AW", "Saint Andrew"),
-(3328, 1108, "AN", "Saint Ann"),
-(3329, 1108, "CE", "Saint Catherine"),
-(3330, 1108, "EH", "Saint Elizabeth"),
-(3331, 1108, "JS", "Saint James"),
-(3332, 1108, "MY", "Saint Mary"),
-(3333, 1108, "TS", "Saint Thomas"),
-(3334, 1108, "TY", "Trelawny"),
-(3335, 1108, "WD", "Westmoreland"),
-(3336, 1110, "AJ", "Ajln"),
-(3337, 1110, "AQ", "Al \'Aqaba"),
-(3338, 1110, "BA", "Al Balqa\'"),
-(3339, 1110, "KA", "Al Karak"),
-(3340, 1110, "MA", "Al Mafraq"),
-(3341, 1110, "AM", "Amman"),
-(3342, 1110, "AT", "At Tafilah"),
-(3343, 1110, "AZ", "Az Zarga"),
-(3344, 1110, "JR", "Irbid"),
-(3345, 1110, "JA", "Jarash"),
-(3346, 1110, "MN", "Ma\'an"),
-(3347, 1110, "MD", "Madaba"),
-
--- CRM-20062 Outdated provinces for Kenya removed .
-
-(3353, 1117, "GB", "Bishkek"),
-(3354, 1117, "B", "Batken"),
-(3355, 1117, "C", "Chu"),
-(3356, 1117, "J", "Jalal-Abad"),
-(3357, 1117, "N", "Naryn"),
-(3358, 1117, "O", "Osh"),
-(3359, 1117, "T", "Talas"),
-(3360, 1117, "Y", "Ysyk-Kol"),
-(3361, 1037, "23", "Krong Kaeb"),
-(3362, 1037, "24", "Krong Pailin"),
-(3363, 1037, "18", "Xrong Preah Sihanouk"),
-(3364, 1037, "12", "Phnom Penh"),
-(3365, 1037, "2", "Baat Dambang"),
-(3366, 1037, "1", "Banteay Mean Chey"),
-(3367, 1037, "3", "Rampong Chaam"),
-(3368, 1037, "4", "Kampong Chhnang"),
-(3369, 1037, "5", "Kampong Spueu"),
-(3370, 1037, "6", "Kampong Thum"),
-(3371, 1037, "7", "Kampot"),
-(3372, 1037, "8", "Kandaal"),
-(3373, 1037, "9", "Kach Kong"),
-(3374, 1037, "10", "Krachoh"),
-(3375, 1037, "11", "Mondol Kiri"),
-(3376, 1037, "22", "Otdar Mean Chey"),
-(3377, 1037, "15", "Pousaat"),
-(3378, 1037, "13", "Preah Vihear"),
-(3379, 1037, "14", "Prey Veaeng"),
-(3380, 1037, "16", "Rotanak Kiri"),
-(3381, 1037, "17", "Siem Reab"),
-(3382, 1037, "19", "Stueng Traeng"),
-(3383, 1037, "20", "Svaay Rieng"),
-(3384, 1037, "21", "Taakaev"),
-(3385, 1113, "G", "Gilbert Islands"),
-(3386, 1113, "L", "Line Islands"),
-(3387, 1113, "P", "Phoenix Islands"),
-(3388, 1049, "A", "Anjouan Ndzouani"),
-(3389, 1049, "G", "Grande Comore Ngazidja"),
-(3390, 1049, "M", "Moheli Moili"),
-(3391, 1114, "KAE", "Kaesong-si"),
-(3392, 1114, "NAM", "Nampo-si"),
-(3393, 1114, "PYO", "Pyongyang-ai"),
-(3394, 1114, "CHA", "Chagang-do"),
-(3395, 1114, "HAB", "Hamgyongbuk-do"),
-(3396, 1114, "HAN", "Hamgyongnam-do"),
-(3397, 1114, "HWB", "Hwanghaebuk-do"),
-(3398, 1114, "HWN", "Hwanghaenam-do"),
-(3399, 1114, "KAN", "Kangwon-do"),
-(3400, 1114, "PYB", "Pyonganbuk-do"),
-(3401, 1114, "PYN", "Pyongannam-do"),
-(3402, 1114, "YAN", "Yanggang-do"),
-(3403, 1114, "NAJ", "Najin Sonbong-si"),
-(3404, 1115, "11", "Seoul Teugbyeolsi"),
-(3405, 1115, "26", "Busan Gwang\'yeogsi"),
-(3406, 1115, "27", "Daegu Gwang\'yeogsi"),
-(3407, 1115, "30", "Daejeon Gwang\'yeogsi"),
-(3408, 1115, "29", "Gwangju Gwang\'yeogsi"),
-(3409, 1115, "28", "Incheon Gwang\'yeogsi"),
-(3410, 1115, "31", "Ulsan Gwang\'yeogsi"),
-(3411, 1115, "43", "Chungcheongbugdo"),
-(3412, 1115, "44", "Chungcheongnamdo"),
-(3413, 1115, "42", "Gang\'weondo"),
-(3414, 1115, "41", "Gyeonggido"),
-(3415, 1115, "47", "Gyeongsangbugdo"),
-(3416, 1115, "48", "Gyeongsangnamdo"),
-(3417, 1115, "49", "Jejudo"),
-(3418, 1115, "45", "Jeonrabugdo"),
-(3419, 1115, "46", "Jeonranamdo"),
-(3420, 1116, "AH", "Al Ahmadi"),
-(3421, 1116, "FA", "Al Farwanlyah"),
-(3422, 1116, "JA", "Al Jahrah"),
-(3423, 1116, "KU", "Al Kuwayt"),
-(3424, 1116, "HA", "Hawalli"),
-(3425, 1111, "ALA", "Almaty"),
-(3426, 1111, "AST", "Astana"),
-(3427, 1111, "ALM", "Almaty oblysy"),
-(3428, 1111, "AKM", "Aqmola oblysy"),
-(3429, 1111, "AKT", "Aqtobe oblysy"),
-(3430, 1111, "ATY", "Atyrau oblyfiy"),
-(3431, 1111, "ZAP", "Batys Quzaqstan oblysy"),
-(3432, 1111, "MAN", "Mangghystau oblysy"),
-(3433, 1111, "YUZ", "Ongtustik Quzaqstan oblysy"),
-(3434, 1111, "PAV", "Pavlodar oblysy"),
-(3435, 1111, "KAR", "Qaraghandy oblysy"),
-(3436, 1111, "KUS", "Qostanay oblysy"),
-(3437, 1111, "KZY", "Qyzylorda oblysy"),
-(3438, 1111, "VOS", "Shyghys Quzaqstan oblysy"),
-(3439, 1111, "SEV", "Soltustik Quzaqstan oblysy"),
-(3440, 1111, "ZHA", "Zhambyl oblysy Zhambylskaya oblast\'"),
-(3441, 1118, "VT", "Vientiane"),
-(3442, 1118, "AT", "Attapu"),
-(3443, 1118, "BK", "Bokeo"),
-(3444, 1118, "BL", "Bolikhamxai"),
-(3445, 1118, "CH", "Champasak"),
-(3446, 1118, "HO", "Houaphan"),
-(3447, 1118, "KH", "Khammouan"),
-(3448, 1118, "LM", "Louang Namtha"),
-(3449, 1118, "LP", "Louangphabang"),
-(3450, 1118, "OU", "Oudomxai"),
-(3451, 1118, "PH", "Phongsali"),
-(3452, 1118, "SL", "Salavan"),
-(3453, 1118, "SV", "Savannakhet"),
-(3454, 1118, "XA", "Xaignabouli"),
-(3455, 1118, "XN", "Xiasomboun"),
-(3456, 1118, "XE", "Xekong"),
-(3457, 1118, "XI", "Xiangkhoang"),
-(3458, 1120, "BA", "Beirut"),
-(3459, 1120, "BI", "Beqaa"),
-(3460, 1120, "JL", "Mount Lebanon"),
-(3461, 1120, "AS", "North Lebanon"),
-(3462, 1120, "JA", "South Lebanon"),
-(3463, 1120, "NA", "Nabatieh"),
-(3464, 1199, "52", "Ampara"),
-(3465, 1199, "71", "Anuradhapura"),
-(3466, 1199, "81", "Badulla"),
-(3467, 1199, "51", "Batticaloa"),
-(3468, 1199, "11", "Colombo"),
-(3469, 1199, "31", "Galle"),
-(3470, 1199, "12", "Gampaha"),
-(3471, 1199, "33", "Hambantota"),
-(3472, 1199, "41", "Jaffna"),
-(3473, 1199, "13", "Kalutara"),
-(3474, 1199, "21", "Kandy"),
-(3475, 1199, "92", "Kegalla"),
-(3476, 1199, "42", "Kilinochchi"),
-(3477, 1199, "61", "Kurunegala"),
-(3478, 1199, "43", "Mannar"),
-(3479, 1199, "22", "Matale"),
-(3480, 1199, "32", "Matara"),
-(3481, 1199, "82", "Monaragala"),
-(3482, 1199, "45", "Mullaittivu"),
-(3483, 1199, "23", "Nuwara Eliya"),
-(3484, 1199, "72", "Polonnaruwa"),
-(3485, 1199, "62", "Puttalum"),
-(3486, 1199, "91", "Ratnapura"),
-(3487, 1199, "53", "Trincomalee"),
-(3488, 1199, "44", "VavunLya"),
-(3489, 1122, "BM", "Bomi"),
-(3490, 1122, "BG", "Bong"),
-(3491, 1122, "GB", "Grand Basaa"),
-(3492, 1122, "CM", "Grand Cape Mount"),
-(3493, 1122, "GG", "Grand Gedeh"),
-(3494, 1122, "GK", "Grand Kru"),
-(3495, 1122, "LO", "Lofa"),
-(3496, 1122, "MG", "Margibi"),
-(3497, 1122, "MY", "Maryland"),
-(3498, 1122, "MO", "Montserrado"),
-(3499, 1122, "NI", "Nimba"),
-(3500, 1122, "RI", "Rivercess"),
-(3501, 1122, "SI", "Sinoe"),
-(3502, 1121, "D", "Berea"),
-(3503, 1121, "B", "Butha-Buthe"),
-(3504, 1121, "C", "Leribe"),
-(3505, 1121, "E", "Mafeteng"),
-(3506, 1121, "A", "Maseru"),
-(3507, 1121, "F", "Mohale\'s Hoek"),
-(3508, 1121, "J", "Mokhotlong"),
-(3509, 1121, "H", "Qacha\'s Nek"),
-(3510, 1121, "G", "Quthing"),
-(3511, 1121, "K", "Thaba-Tseka"),
-(3512, 1125, "AL", "Alytaus Apskritis"),
-(3513, 1125, "KU", "Kauno Apskritis"),
-(3514, 1125, "KL", "KlaipÄ—dos Apskritis"),
-(3515, 1125, "MR", "MarijampolÄ—s Apskritis"),
-(3516, 1125, "PN", "Panevėžio Apskritis"),
-(3517, 1125, "SA", "Šiaulių Apskritis"),
-(3518, 1125, "TA", "TauragÄ—s Apskritis"),
-(3519, 1125, "TE", "Telšių Apskritis"),
-(3520, 1125, "UT", "Utenos Apskritis"),
-(3521, 1125, "VL", "Vilniaus Apskritis"),
-(3522, 1126, "DI", "Diekirch"),
-(3523, 1126, "GR", "Grevenmacher"),
-(3550, 1119, "DGV", "Daugavpils"),
-(3551, 1119, "JEL", "Jelgava"),
-(3552, 1119, "JUR", "JÅ«rmala"),
-(3553, 1119, "LPX", "Liepāja"),
-(3554, 1119, "REZ", "RÄ“zekne"),
-(3555, 1119, "RIX", "RÄ«ga"),
-(3556, 1119, "VEN", "Ventspils"),
-(3557, 1123, "AJ", "Ajdābiyā"),
-(3558, 1123, "BU", "Al Buţnān"),
-(3559, 1123, "HZ", "Al Hizām al Akhdar"),
-(3560, 1123, "JA", "Al Jabal al Akhdar"),
-(3561, 1123, "JI", "Al Jifārah"),
-(3562, 1123, "JU", "Al Jufrah"),
-(3563, 1123, "KF", "Al Kufrah"),
-(3564, 1123, "MJ", "Al Marj"),
-(3565, 1123, "MB", "Al Marqab"),
-(3566, 1123, "QT", "Al Qaţrūn"),
-(3567, 1123, "QB", "Al Qubbah"),
-(3568, 1123, "WA", "Al Wāhah"),
-(3569, 1123, "NQ", "An Nuqaţ al Khams"),
-(3570, 1123, "SH", "Ash Shāţi\'"),
-(3571, 1123, "ZA", "Az Zāwiyah"),
-(3572, 1123, "BA", "Banghāzī"),
-(3573, 1123, "BW", "Banī Walīd"),
-(3574, 1123, "DR", "Darnah"),
-(3575, 1123, "GD", "Ghadāmis"),
-(3576, 1123, "GR", "Gharyān"),
-(3577, 1123, "GT", "Ghāt"),
-(3578, 1123, "JB", "Jaghbūb"),
-(3579, 1123, "MI", "Mişrātah"),
-(3580, 1123, "MZ", "Mizdah"),
-(3581, 1123, "MQ", "Murzuq"),
-(3582, 1123, "NL", "Nālūt"),
-(3583, 1123, "SB", "Sabhā"),
-(3584, 1123, "SS", "Şabrātah Şurmān"),
-(3585, 1123, "SR", "Surt"),
-(3586, 1123, "TN", "Tājūrā\' wa an Nawāhī al Arbāh"),
-(3587, 1123, "TB", "Ţarābulus"),
-(3588, 1123, "TM", "Tarhūnah-Masallātah"),
-(3589, 1123, "WD", "Wādī al hayāt"),
-(3590, 1123, "YJ", "Yafran-Jādū"),
-(3591, 1146, "AGD", "Agadir"),
-(3592, 1146, "BAH", "Aït Baha"),
-(3593, 1146, "MEL", "Aït Melloul"),
-(3594, 1146, "HAO", "Al Haouz"),
-(3595, 1146, "HOC", "Al Hoceïma"),
-(3596, 1146, "ASZ", "Assa-Zag"),
-(3597, 1146, "AZI", "Azilal"),
-(3598, 1146, "BEM", "Beni Mellal"),
-(3599, 1146, "BES", "Ben Sllmane"),
-(3600, 1146, "BER", "Berkane"),
-(3601, 1146, "BOD", "Boujdour"),
-(3602, 1146, "BOM", "Boulemane"),
-(3603, 1146, "CAS", "Casablanca  [Dar el Beïda]"),
-(3604, 1146, "CHE", "Chefchaouene"),
-(3605, 1146, "CHI", "Chichaoua"),
-(3606, 1146, "HAJ", "El Hajeb"),
-(3607, 1146, "JDI", "El Jadida"),
-(3608, 1146, "ERR", "Errachidia"),
-(3609, 1146, "ESI", "Essaouira"),
-(3610, 1146, "ESM", "Es Smara"),
-(3611, 1146, "FES", "Fès"),
-(3612, 1146, "FIG", "Figuig"),
-(3613, 1146, "GUE", "Guelmim"),
-(3614, 1146, "IFR", "Ifrane"),
-(3615, 1146, "JRA", "Jerada"),
-(3616, 1146, "KES", "Kelaat Sraghna"),
-(3617, 1146, "KEN", "Kénitra"),
-(3618, 1146, "KHE", "Khemisaet"),
-(3619, 1146, "KHN", "Khenifra"),
-(3620, 1146, "KHO", "Khouribga"),
-(3621, 1146, "LAA", "Laâyoune (EH)"),
-(3622, 1146, "LAP", "Larache"),
-(3623, 1146, "MAR", "Marrakech"),
-(3624, 1146, "MEK", "Meknsès"),
-(3625, 1146, "NAD", "Nador"),
-(3626, 1146, "OUA", "Ouarzazate"),
-(3627, 1146, "OUD", "Oued ed Dahab (EH)"),
-(3628, 1146, "OUJ", "Oujda"),
-(3629, 1146, "RBA", "Rabat-Salé"),
-(3630, 1146, "SAF", "Safi"),
-(3631, 1146, "SEF", "Sefrou"),
-(3632, 1146, "SET", "Settat"),
-(3633, 1146, "SIK", "Sidl Kacem"),
-(3634, 1146, "TNG", "Tanger"),
-(3635, 1146, "TNT", "Tan-Tan"),
-(3636, 1146, "TAO", "Taounate"),
-(3637, 1146, "TAR", "Taroudannt"),
-(3638, 1146, "TAT", "Tata"),
-(3639, 1146, "TAZ", "Taza"),
-(3640, 1146, "TET", "Tétouan"),
-(3641, 1146, "TIZ", "Tiznit"),
-(3642, 1142, "GA", "Gagauzia, Unitate Teritoriala Autonoma"),
-(3643, 1142, "CU", "Chisinau"),
-(3644, 1142, "SN", "Stinga Nistrului, unitatea teritoriala din"),
-(3645, 1142, "BA", "Balti"),
-(3646, 1142, "CA", "Cahul"),
-(3647, 1142, "ED", "Edinet"),
-(3648, 1142, "LA", "Lapusna"),
-(3649, 1142, "OR", "Orhei"),
-(3650, 1142, "SO", "Soroca"),
-(3651, 1142, "TA", "Taraclia"),
-(3652, 1142, "TI", "Tighina [Bender]"),
-(3653, 1142, "UN", "Ungheni"),
-(3654, 1129, "T", "Antananarivo"),
-(3655, 1129, "D", "Antsiranana"),
-(3656, 1129, "F", "Fianarantsoa"),
-(3657, 1129, "M", "Mahajanga"),
-(3658, 1129, "A", "Toamasina"),
-(3659, 1129, "U", "Toliara"),
-(3660, 1135, "ALL", "Ailinglapalap"),
-(3661, 1135, "ALK", "Ailuk"),
-(3662, 1135, "ARN", "Arno"),
-(3663, 1135, "AUR", "Aur"),
-(3664, 1135, "EBO", "Ebon"),
-(3665, 1135, "ENI", "Eniwetok"),
-(3666, 1135, "JAL", "Jaluit"),
-(3667, 1135, "KIL", "Kili"),
-(3668, 1135, "KWA", "Kwajalein"),
-(3669, 1135, "LAE", "Lae"),
-(3670, 1135, "LIB", "Lib"),
-(3671, 1135, "LIK", "Likiep"),
-(3672, 1135, "MAJ", "Majuro"),
-(3673, 1135, "MAL", "Maloelap"),
-(3674, 1135, "MEJ", "Mejit"),
-(3675, 1135, "MIL", "Mili"),
-(3676, 1135, "NMK", "Namorik"),
-(3677, 1135, "NMU", "Namu"),
-(3678, 1135, "RON", "Rongelap"),
-(3679, 1135, "UJA", "Ujae"),
-(3680, 1135, "UJL", "Ujelang"),
-(3681, 1135, "UTI", "Utirik"),
-(3682, 1135, "WTN", "Wotho"),
-(3683, 1135, "WTJ", "Wotje"),
-(3684, 1133, "BK0", "Bamako"),
-(3685, 1133, "7", "Gao"),
-(3686, 1133, "1", "Kayes"),
-(3687, 1133, "8", "Kidal"),
-(3688, 1133, "2", "Xoulikoro"),
-(3689, 1133, "5", "Mopti"),
-(3690, 1133, "4", "S69ou"),
-(3691, 1133, "3", "Sikasso"),
-(3692, 1133, "6", "Tombouctou"),
-(3693, 1035, "07", "Ayeyarwady"),
-(3694, 1035, "02", "Bago"),
-(3695, 1035, "03", "Magway"),
-(3696, 1035, "04", "Mandalay"),
-(3697, 1035, "01", "Sagaing"),
-(3698, 1035, "05", "Tanintharyi"),
-(3699, 1035, "06", "Yangon"),
-(3700, 1035, "14", "Chin"),
-(3701, 1035, "11", "Kachin"),
-(3702, 1035, "12", "Kayah"),
-(3703, 1035, "13", "Kayin"),
-(3704, 1035, "15", "Mon"),
-(3705, 1035, "16", "Rakhine"),
-(3706, 1035, "17", "Shan"),
-(3707, 1144, "1", "Ulaanbaatar"),
-(3708, 1144, "073", "Arhangay"),
-(3709, 1144, "069", "Bayanhongor"),
-(3710, 1144, "071", "Bayan-Olgiy"),
-(3711, 1144, "067", "Bulgan"),
-(3712, 1144, "037", "Darhan uul"),
-(3713, 1144, "061", "Dornod"),
-(3714, 1144, "063", "Dornogov,"),
-(3715, 1144, "059", "DundgovL"),
-(3716, 1144, "057", "Dzavhan"),
-(3717, 1144, "065", "Govi-Altay"),
-(3718, 1144, "064", "Govi-Smber"),
-(3719, 1144, "039", "Hentiy"),
-(3720, 1144, "043", "Hovd"),
-(3721, 1144, "041", "Hovsgol"),
-(3722, 1144, "053", "Omnogovi"),
-(3723, 1144, "035", "Orhon"),
-(3724, 1144, "055", "Ovorhangay"),
-(3725, 1144, "049", "Selenge"),
-(3726, 1144, "051", "Shbaatar"),
-(3727, 1144, "047", "Tov"),
-(3728, 1144, "046", "Uvs"),
-(3729, 1137, "NKC", "Nouakchott"),
-(3730, 1137, "03", "Assaba"),
-(3731, 1137, "05", "Brakna"),
-(3732, 1137, "08", "Dakhlet Nouadhibou"),
-(3733, 1137, "04", "Gorgol"),
-(3734, 1137, "10", "Guidimaka"),
-(3735, 1137, "01", "Hodh ech Chargui"),
-(3736, 1137, "02", "Hodh el Charbi"),
-(3737, 1137, "12", "Inchiri"),
-(3738, 1137, "09", "Tagant"),
-(3739, 1137, "11", "Tiris Zemmour"),
-(3740, 1137, "06", "Trarza"),
-(3741, 1138, "BR", "Beau Bassin-Rose Hill"),
-(3742, 1138, "CU", "Curepipe"),
-(3743, 1138, "PU", "Port Louis"),
-(3744, 1138, "QB", "Quatre Bornes"),
-(3745, 1138, "VP", "Vacosa-Phoenix"),
-(3746, 1138, "BL", "Black River"),
-(3747, 1138, "FL", "Flacq"),
-(3748, 1138, "GP", "Grand Port"),
-(3749, 1138, "MO", "Moka"),
-(3750, 1138, "PA", "Pamplemousses"),
-(3751, 1138, "PW", "Plaines Wilhems"),
-(3752, 1138, "RP", "Riviere du Rempart"),
-(3753, 1138, "SA", "Savanne"),
-(3754, 1138, "AG", "Agalega Islands"),
-(3755, 1138, "CC", "Cargados Carajos Shoals"),
-(3756, 1138, "RO", "Rodrigues Island"),
-(3757, 1132, "MLE", "Male"),
-(3758, 1132, "02", "Alif"),
-(3759, 1132, "20", "Baa"),
-(3760, 1132, "17", "Dhaalu"),
-(3761, 1132, "14", "Faafu"),
-(3762, 1132, "27", "Gaaf Alif"),
-(3763, 1132, "28", "Gaefu Dhaalu"),
-(3764, 1132, "29", "Gnaviyani"),
-(3765, 1132, "07", "Haa Alif"),
-(3766, 1132, "23", "Haa Dhaalu"),
-(3767, 1132, "26", "Kaafu"),
-(3768, 1132, "05", "Laamu"),
-(3769, 1132, "03", "Lhaviyani"),
-(3770, 1132, "12", "Meemu"),
-(3771, 1132, "25", "Noonu"),
-(3772, 1132, "13", "Raa"),
-(3773, 1132, "01", "Seenu"),
-(3774, 1132, "24", "Shaviyani"),
-(3775, 1132, "08", "Thaa"),
-(3776, 1132, "04", "Vaavu"),
-(3777, 1130, "BA", "Balaka"),
-(3778, 1130, "BL", "Blantyre"),
-(3779, 1130, "CK", "Chikwawa"),
-(3780, 1130, "CR", "Chiradzulu"),
-(3781, 1130, "CT", "Chitipa"),
-(3782, 1130, "DE", "Dedza"),
-(3783, 1130, "DO", "Dowa"),
-(3784, 1130, "KR", "Karonga"),
-(3785, 1130, "KS", "Kasungu"),
-(3786, 1130, "LK", "Likoma Island"),
-(3787, 1130, "LI", "Lilongwe"),
-(3788, 1130, "MH", "Machinga"),
-(3789, 1130, "MG", "Mangochi"),
-(3790, 1130, "MC", "Mchinji"),
-(3791, 1130, "MU", "Mulanje"),
-(3792, 1130, "MW", "Mwanza"),
-(3793, 1130, "MZ", "Mzimba"),
-(3794, 1130, "NB", "Nkhata Bay"),
-(3795, 1130, "NK", "Nkhotakota"),
-(3796, 1130, "NS", "Nsanje"),
-(3797, 1130, "NU", "Ntcheu"),
-(3798, 1130, "NI", "Ntchisi"),
-(3799, 1130, "PH", "Phalomba"),
-(3800, 1130, "RU", "Rumphi"),
-(3801, 1130, "SA", "Salima"),
-(3802, 1130, "TH", "Thyolo"),
-(3803, 1130, "ZO", "Zomba"),
-(3804, 1140, "AGU", "Aguascalientes"),
-(3805, 1140, "BCN", "Baja California"),
-(3806, 1140, "BCS", "Baja California Sur"),
-(3807, 1140, "CAM", "Campeche"),
-(3808, 1140, "COA", "Coahuila"),
-(3809, 1140, "COL", "Colima"),
-(3810, 1140, "CHP", "Chiapas"),
-(3811, 1140, "CHH", "Chihuahua"),
-(3812, 1140, "DUR", "Durango"),
-(3813, 1140, "GUA", "Guanajuato"),
-(3814, 1140, "GRO", "Guerrero"),
-(3815, 1140, "HID", "Hidalgo"),
-(3816, 1140, "JAL", "Jalisco"),
-(3817, 1140, "MEX", "Mexico"),
-(3818, 1140, "MIC", "Michoacin"),
-(3819, 1140, "MOR", "Morelos"),
-(3820, 1140, "NAY", "Nayarit"),
-(3821, 1140, "NLE", "Nuevo Leon"),
-(3822, 1140, "OAX", "Oaxaca"),
-(3823, 1140, "PUE", "Puebla"),
-(3824, 1140, "QUE", "Queretaro"),
-(3825, 1140, "ROO", "Quintana Roo"),
-(3826, 1140, "SLP", "San Luis Potosi"),
-(3827, 1140, "SIN", "Sinaloa"),
-(3828, 1140, "SON", "Sonora"),
-(3829, 1140, "TAB", "Tabasco"),
-(3830, 1140, "TAM", "Tamaulipas"),
-(3831, 1140, "TLA", "Tlaxcala"),
-(3832, 1140, "VER", "Veracruz"),
-(3833, 1140, "YUC", "Yucatan"),
-(3834, 1140, "ZAC", "Zacatecas"),
-(3835, 1131, "14", "Wilayah Persekutuan Kuala Lumpur"),
-(3836, 1131, "15", "Wilayah Persekutuan Labuan"),
-(3837, 1131, "16", "Wilayah Persekutuan Putrajaya"),
-(3838, 1131, "01", "Johor"),
-(3839, 1131, "02", "Kedah"),
-(3840, 1131, "03", "Kelantan"),
-(3841, 1131, "04", "Melaka"),
-(3842, 1131, "05", "Negeri Sembilan"),
-(3843, 1131, "06", "Pahang"),
-(3844, 1131, "08", "Perak"),
-(3845, 1131, "09", "Perlis"),
-(3846, 1131, "07", "Pulau Pinang"),
-(3847, 1131, "12", "Sabah"),
-(3848, 1131, "13", "Sarawak"),
-(3849, 1131, "10", "Selangor"),
-(3850, 1131, "11", "Terengganu"),
-(3851, 1147, "MPM", "Maputo"),
-(3852, 1147, "P", "Cabo Delgado"),
-(3853, 1147, "G", "Gaza"),
-(3854, 1147, "I", "Inhambane"),
-(3855, 1147, "B", "Manica"),
-(3856, 1147, "N", "Numpula"),
-(3857, 1147, "A", "Niaaea"),
-(3858, 1147, "S", "Sofala"),
-(3859, 1147, "T", "Tete"),
-(3860, 1147, "Q", "Zambezia"),
-(3861, 1148, "CA", "Caprivi"),
-(3862, 1148, "ER", "Erongo"),
-(3863, 1148, "HA", "Hardap"),
-(3864, 1148, "KA", "Karas"),
-(3865, 1148, "KH", "Khomas"),
-(3866, 1148, "KU", "Kunene"),
-(3867, 1148, "OW", "Ohangwena"),
-(3868, 1148, "OK", "Okavango"),
-(3869, 1148, "OH", "Omaheke"),
-(3870, 1148, "OS", "Omusati"),
-(3871, 1148, "ON", "Oshana"),
-(3872, 1148, "OT", "Oshikoto"),
-(3873, 1148, "OD", "Otjozondjupa"),
-(3874, 1156, "8", "Niamey"),
-(3875, 1156, "1", "Agadez"),
-(3876, 1156, "2", "Diffa"),
-(3877, 1156, "3", "Dosso"),
-(3878, 1156, "4", "Maradi"),
-(3879, 1156, "S", "Tahoua"),
-(3880, 1156, "6", "Tillaberi"),
-(3881, 1156, "7", "Zinder"),
-(3882, 1157, "FC", "Abuja Federal Capital Territory"),
-(3883, 1157, "AB", "Abia"),
-(3884, 1157, "AD", "Adamawa"),
-(3885, 1157, "AK", "Akwa Ibom"),
-(3886, 1157, "AN", "Anambra"),
-(3887, 1157, "BA", "Bauchi"),
-(3888, 1157, "BY", "Bayelsa"),
-(3889, 1157, "BE", "Benue"),
-(3890, 1157, "BO", "Borno"),
-(3891, 1157, "CR", "Cross River"),
-(3892, 1157, "DE", "Delta"),
-(3893, 1157, "EB", "Ebonyi"),
-(3894, 1157, "ED", "Edo"),
-(3895, 1157, "EK", "Ekiti"),
-(3896, 1157, "EN", "Enugu"),
-(3897, 1157, "GO", "Gombe"),
-(3898, 1157, "IM", "Imo"),
-(3899, 1157, "JI", "Jigawa"),
-(3900, 1157, "KD", "Kaduna"),
-(3901, 1157, "KN", "Kano"),
-(3902, 1157, "KT", "Katsina"),
-(3903, 1157, "KE", "Kebbi"),
-(3904, 1157, "KO", "Kogi"),
-(3905, 1157, "KW", "Kwara"),
-(3906, 1157, "LA", "Lagos"),
-(3907, 1157, "NA", "Nassarawa"),
-(3908, 1157, "NI", "Niger"),
-(3909, 1157, "OG", "Ogun"),
-(3910, 1157, "ON", "Ondo"),
-(3911, 1157, "OS", "Osun"),
-(3912, 1157, "OY", "Oyo"),
-(3913, 1157, "RI", "Rivers"),
-(3914, 1157, "SO", "Sokoto"),
-(3915, 1157, "TA", "Taraba"),
-(3916, 1157, "YO", "Yobe"),
-(3917, 1157, "ZA", "Zamfara"),
-(3918, 1155, "BO", "Boaco"),
-(3919, 1155, "CA", "Carazo"),
-(3920, 1155, "CI", "Chinandega"),
-(3921, 1155, "CO", "Chontales"),
-(3922, 1155, "ES", "Esteli"),
-(3923, 1155, "JI", "Jinotega"),
-(3924, 1155, "LE", "Leon"),
-(3925, 1155, "MD", "Madriz"),
-(3926, 1155, "MN", "Managua"),
-(3927, 1155, "MS", "Masaya"),
-(3928, 1155, "MT", "Matagalpa"),
-(3929, 1155, "NS", "Nueva Segovia"),
-(3930, 1155, "SJ", "Rio San Juan"),
-(3931, 1155, "RI", "Rivas"),
-(3932, 1155, "AN", "Atlantico Norte"),
-(3933, 1155, "AS", "Atlantico Sur"),
-(3934, 1152, "DR", "Drente"),
-(3935, 1152, "FL", "Flevoland"),
-(3936, 1152, "FR", "Friesland"),
-(3937, 1152, "GL", "Gelderland"),
-(3938, 1152, "GR", "Groningen"),
-(3939, 1152, "NB", "Noord-Brabant"),
-(3940, 1152, "NH", "Noord-Holland"),
-(3941, 1152, "OV", "Overijssel"),
-(3942, 1152, "UT", "Utrecht"),
-(3943, 1152, "ZH", "Zuid-Holland"),
-(3944, 1152, "ZL", "Zeeland"),
-(3945, 1161, "02", "Akershus"),
-(3946, 1161, "09", "Aust-Agder"),
-(3947, 1161, "06", "Buskerud"),
-(3948, 1161, "20", "Finnmark"),
-(3949, 1161, "04", "Hedmark"),
-(3951, 1161, "15", "Møre og Romsdal"),
-(3952, 1161, "18", "Nordland"),
-(3953, 1161, "17", "Nord-Trøndelag"),
-(3954, 1161, "05", "Oppland"),
-(3955, 1161, "03", "Oslo"),
-(3956, 1161, "11", "Rogaland"),
-(3957, 1161, "16", "Sør-Trøndelag"),
-(3958, 1161, "06", "Telemark"),
-(3959, 1161, "19", "Troms"),
-(3960, 1161, "10", "Vest-Agder"),
-(3961, 1161, "07", "Vestfold"),
-(3962, 1161, "46", "Vestland"),
-(3963, 1161, "01", "Østfold"),
-(3964, 1161, "22", "Jan Mayen"),
-(3965, 1161, "21", "Svalbard"),
-(3966, 1154, "AUK", "Auckland"),
-(3967, 1154, "BOP", "Bay of Plenty"),
-(3968, 1154, "CAN", "Canterbury"),
-(3969, 1154, "GIS", "Gisborne"),
-(3970, 1154, "HKB", "Hawkes Bay"),
-(3971, 1154, "MWT", "Manawatu-Wanganui"),
-(3972, 1154, "MBH", "Marlborough"),
-(3973, 1154, "NSN", "Nelson"),
-(3974, 1154, "NTL", "Northland"),
-(3975, 1154, "OTA", "Otago"),
-(3976, 1154, "STL", "Southland"),
-(3977, 1154, "TKI", "Taranaki"),
-(3978, 1154, "TAS", "Tasman"),
-(3979, 1154, "WKO", "Waikato"),
-(3980, 1154, "WGN", "Wellington"),
-(3981, 1154, "WTC", "West Coast"),
-(3982, 1162, "DA", "Ad Dakhillyah"),
-(3983, 1162, "BA", "Al Batinah"),
-(3984, 1162, "JA", "Al Janblyah"),
-(3985, 1162, "WU", "Al Wusta"),
-(3986, 1162, "SH", "Ash Sharqlyah"),
-(3987, 1162, "ZA", "Az Zahirah"),
-(3988, 1162, "MA", "Masqat"),
-(3989, 1162, "MU", "Musandam"),
-(3990, 1166, "1", "Bocas del Toro"),
-(3991, 1166, "2", "Cocle"),
-(3992, 1166, "4", "Chiriqui"),
-(3993, 1166, "5", "Darien"),
-(3994, 1166, "6", "Herrera"),
-(3995, 1166, "7", "Loa Santoa"),
-(3996, 1166, "8", "Panama"),
-(3997, 1166, "9", "Veraguas"),
-(3998, 1166, "Q", "Comarca de San Blas"),
-(3999, 1169, "CAL", "El Callao"),
-(4000, 1169, "ANC", "Ancash"),
-(4001, 1169, "APU", "Apurimac"),
-(4002, 1169, "ARE", "Arequipa"),
-(4003, 1169, "AYA", "Ayacucho"),
-(4004, 1169, "CAJ", "Cajamarca"),
-(4005, 1169, "CUS", "Cuzco"),
-(4006, 1169, "HUV", "Huancavelica"),
-(4007, 1169, "HUC", "Huanuco"),
-(4008, 1169, "ICA", "Ica"),
-(4009, 1169, "JUN", "Junin"),
-(4010, 1169, "LAL", "La Libertad"),
-(4011, 1169, "LAM", "Lambayeque"),
-(4012, 1169, "LIM", "Lima"),
-(4013, 1169, "LOR", "Loreto"),
-(4014, 1169, "MDD", "Madre de Dios"),
-(4015, 1169, "MOQ", "Moquegua"),
-(4016, 1169, "PAS", "Pasco"),
-(4017, 1169, "PIU", "Piura"),
-(4018, 1169, "PUN", "Puno"),
-(4019, 1169, "SAM", "San Martin"),
-(4020, 1169, "TAC", "Tacna"),
-(4021, 1169, "TUM", "Tumbes"),
-(4022, 1169, "UCA", "Ucayali"),
-(4023, 1167, "NCD", "National Capital District (Port Moresby)"),
-(4024, 1167, "CPK", "Chimbu"),
-(4025, 1167, "EHG", "Eastern Highlands"),
-(4026, 1167, "EBR", "East New Britain"),
-(4027, 1167, "ESW", "East Sepik"),
-(4028, 1167, "EPW", "Enga"),
-(4029, 1167, "GPK", "Gulf"),
-(4030, 1167, "MPM", "Madang"),
-(4031, 1167, "MRL", "Manus"),
-(4032, 1167, "MBA", "Milne Bay"),
-(4033, 1167, "MPL", "Morobe"),
-(4034, 1167, "NIK", "New Ireland"),
-(4035, 1167, "NSA", "North Solomons"),
-(4036, 1167, "SAN", "Santaun"),
-(4037, 1167, "SHM", "Southern Highlands"),
-(4038, 1167, "WHM", "Western Highlands"),
-(4039, 1167, "WBK", "West New Britain"),
-(4040, 1170, "ABR", "Abra"),
-(4041, 1170, "AGN", "Agusan del Norte"),
-(4042, 1170, "AGS", "Agusan del Sur"),
-(4043, 1170, "AKL", "Aklan"),
-(4044, 1170, "ALB", "Albay"),
-(4045, 1170, "ANT", "Antique"),
-(4046, 1170, "APA", "Apayao"),
-(4047, 1170, "AUR", "Aurora"),
-(4048, 1170, "BAS", "Basilan"),
-(4049, 1170, "BAN", "Bataan"),
-(4050, 1170, "BTN", "Batanes"),
-(4051, 1170, "BTG", "Batangas"),
-(4052, 1170, "BEN", "Benguet"),
-(4053, 1170, "BIL", "Biliran"),
-(4054, 1170, "BOH", "Bohol"),
-(4055, 1170, "BUK", "Bukidnon"),
-(4056, 1170, "BUL", "Bulacan"),
-(4057, 1170, "CAG", "Cagayan"),
-(4058, 1170, "CAN", "Camarines Norte"),
-(4059, 1170, "CAS", "Camarines Sur"),
-(4060, 1170, "CAM", "Camiguin"),
-(4061, 1170, "CAP", "Capiz"),
-(4062, 1170, "CAT", "Catanduanes"),
-(4063, 1170, "CAV", "Cavite"),
-(4064, 1170, "CEB", "Cebu"),
-(4065, 1170, "COM", "Davao de Oro"),
-(4066, 1170, "DAV", "Davao del Norte"),
-(4067, 1170, "DAS", "Davao del Sur"),
-(4068, 1170, "DAO", "Davao Oriental"),
-(4069, 1170, "EAS", "Eastern Samar"),
-(4070, 1170, "GUI", "Guimaras"),
-(4071, 1170, "IFU", "Ifugao"),
-(4072, 1170, "ILN", "Ilocos Norte"),
-(4073, 1170, "ILS", "Ilocos Sur"),
-(4074, 1170, "ILI", "Iloilo"),
-(4075, 1170, "ISA", "Isabela"),
-(4076, 1170, "KAL", "Kalinga"),
-(4077, 1170, "LAG", "Laguna"),
-(4078, 1170, "LAN", "Lanao del Norte"),
-(4079, 1170, "LAS", "Lanao del Sur"),
-(4080, 1170, "LUN", "La Union"),
-(4081, 1170, "LEY", "Leyte"),
-(4082, 1170, "MAG", "Maguindanao"),
-(4083, 1170, "MAD", "Marinduque"),
-(4084, 1170, "MAS", "Masbate"),
-(4085, 1170, "MDC", "Mindoro Occidental"),
-(4086, 1170, "MDR", "Mindoro Oriental"),
-(4087, 1170, "MSC", "Misamis Occidental"),
-(4088, 1170, "MSR", "Misamis Oriental"),
-(4089, 1170, "MOU", "Mountain Province"),
-(4090, 1170, "NEC", "Negroe Occidental"),
-(4091, 1170, "NER", "Negros Oriental"),
-(4092, 1170, "NCO", "Cotabato"),
-(4093, 1170, "NSA", "Northern Samar"),
-(4094, 1170, "NUE", "Nueva Ecija"),
-(4095, 1170, "NUV", "Nueva Vizcaya"),
-(4096, 1170, "PLW", "Palawan"),
-(4097, 1170, "PAM", "Pampanga"),
-(4098, 1170, "PAN", "Pangasinan"),
-(4099, 1170, "QUE", "Quezon"),
-(4100, 1170, "QUI", "Quirino"),
-(4101, 1170, "RIZ", "Rizal"),
-(4102, 1170, "ROM", "Romblon"),
-(4103, 1170, "SAR", "Sarangani"),
-(4104, 1170, "SIG", "Siquijor"),
-(4105, 1170, "SOR", "Sorsogon"),
-(4106, 1170, "SCO", "South Cotabato"),
-(4107, 1170, "SLE", "Southern Leyte"),
-(4108, 1170, "SUK", "Sultan Kudarat"),
-(4109, 1170, "SLU", "Sulu"),
-(4110, 1170, "SUN", "Surigao del Norte"),
-(4111, 1170, "SUR", "Surigao del Sur"),
-(4112, 1170, "TAR", "Tarlac"),
-(4113, 1170, "TAW", "Tawi-Tawi"),
-(4114, 1170, "WSA", "Western Samar"),
-(4115, 1170, "ZMB", "Zambales"),
-(4116, 1170, "ZAN", "Zamboanga del Norte"),
-(4117, 1170, "ZAS", "Zamboanga del Sur"),
-(4118, 1170, "ZSI", "Zamboanga Sibiguey"),
-(4119, 1163, "IS", "Islamabad Federal Capital Area"),
-(4120, 1163, "BA", "Baluchistan"),
-(4121, 1163, "NW", "Khyber Pakhtun Khawa"),
-(4122, 1163, "SD", "Sindh"),
-(4123, 1163, "TA", "Federally Administered Tribal Areas"),
-(4124, 1163, "JK", "Azad Kashmir"),
-(4125, 1163, "NA", "Gilgit-Baltistan"),
-(4126, 1173, "01", "Aveiro"),
-(4127, 1173, "02", "Beja"),
-(4128, 1173, "03", "Braga"),
-(4129, 1173, "04", "Bragança"),
-(4130, 1173, "05", "Castelo Branco"),
-(4131, 1173, "06", "Coimbra"),
-(4132, 1173, "07", "Évora"),
-(4133, 1173, "08", "Faro"),
-(4134, 1173, "09", "Guarda"),
-(4135, 1173, "10", "Leiria"),
-(4136, 1173, "11", "Lisboa"),
-(4137, 1173, "12", "Portalegre"),
-(4138, 1173, "13", "Porto"),
-(4139, 1173, "14", "Santarém"),
-(4140, 1173, "15", "Setúbal"),
-(4141, 1173, "16", "Viana do Castelo"),
-(4142, 1173, "17", "Vila Real"),
-(4143, 1173, "18", "Viseu"),
-(4144, 1173, "20", "Região Autónoma dos Açores"),
-(4145, 1173, "30", "Região Autónoma da Madeira"),
-(4146, 1168, "ASU", "Asuncion"),
-(4147, 1168, "16", "Alto Paraguay"),
-(4148, 1168, "10", "Alto Parana"),
-(4149, 1168, "13", "Amambay"),
-(4150, 1168, "19", "Boqueron"),
-(4151, 1168, "5", "Caeguazu"),
-(4152, 1168, "6", "Caazapl"),
-(4153, 1168, "14", "Canindeyu"),
-(4154, 1168, "1", "Concepcion"),
-(4155, 1168, "3", "Cordillera"),
-(4156, 1168, "4", "Guaira"),
-(4157, 1168, "7", "Itapua"),
-(4158, 1168, "8", "Miaiones"),
-(4159, 1168, "12", "Neembucu"),
-(4160, 1168, "9", "Paraguari"),
-(4161, 1168, "15", "Presidente Hayes"),
-(4162, 1168, "2", "San Pedro"),
-(4163, 1175, "DA", "Ad Dawhah"),
-(4164, 1175, "GH", "Al Ghuwayriyah"),
-(4165, 1175, "JU", "Al Jumayliyah"),
-(4166, 1175, "KH", "Al Khawr"),
-(4167, 1175, "WA", "Al Wakrah"),
-(4168, 1175, "RA", "Ar Rayyan"),
-(4169, 1175, "JB", "Jariyan al Batnah"),
-(4170, 1175, "MS", "Madinat ash Shamal"),
-(4171, 1175, "US", "Umm Salal"),
-(4172, 1176, "B", "Bucuresti"),
-(4173, 1176, "AB", "Alba"),
-(4174, 1176, "AR", "Arad"),
-(4175, 1176, "AG", "ArgeÈ™"),
-(4176, 1176, "BC", "Bacău"),
-(4177, 1176, "BH", "Bihor"),
-(4178, 1176, "BN", "Bistrița-Năsăud"),
-(4179, 1176, "BT", "Botoșani"),
-(4180, 1176, "BV", "Brașov"),
-(4181, 1176, "BR", "Brăila"),
-(4182, 1176, "BZ", "Buzău"),
-(4183, 1176, "CS", "CaraÈ™-Severin"),
-(4184, 1176, "CL", "Călărași"),
-(4185, 1176, "CJ", "Cluj"),
-(4186, 1176, "CT", "Constanța"),
-(4187, 1176, "CV", "Covasna"),
-(4188, 1176, "DB", "Dâmbovița"),
-(4189, 1176, "DJ", "Dolj"),
-(4190, 1176, "GL", "Galați"),
-(4191, 1176, "GR", "Giurgiu"),
-(4192, 1176, "GJ", "Gorj"),
-(4193, 1176, "HR", "Harghita"),
-(4194, 1176, "HD", "Hunedoara"),
-(4195, 1176, "IL", "Ialomița"),
-(4196, 1176, "IS", "Iași"),
-(4197, 1176, "IF", "Ilfov"),
-(4198, 1176, "MM", "MaramureÈ™"),
-(4199, 1176, "MH", "Mehedinți"),
-(4200, 1176, "MS", "MureÈ™"),
-(4201, 1176, "NT", "NeamÈ›"),
-(4202, 1176, "OT", "Olt"),
-(4203, 1176, "PH", "Prahova"),
-(4204, 1176, "SM", "Satu Mare"),
-(4205, 1176, "SJ", "Sălaj"),
-(4206, 1176, "SB", "Sibiu"),
-(4207, 1176, "SV", "Suceava"),
-(4208, 1176, "TR", "Teleorman"),
-(4209, 1176, "TM", "TimiÈ™"),
-(4210, 1176, "TL", "Tulcea"),
-(4211, 1176, "VS", "Vaslui"),
-(4212, 1176, "VL", "Vâlcea"),
-(4213, 1176, "VN", "Vrancea"),
-(4214, 1177, "AD", "Adygeya, Respublika"),
-(4215, 1177, "AL", "Altay, Respublika"),
-(4216, 1177, "BA", "Bashkortostan, Respublika"),
-(4217, 1177, "BU", "Buryatiya, Respublika"),
-(4218, 1177, "CE", "Chechenskaya Respublika"),
-(4219, 1177, "CU", "Chuvashskaya Respublika"),
-(4220, 1177, "DA", "Dagestan, Respublika"),
-(4221, 1177, "IN", "Ingushskaya Respublika"),
-(4222, 1177, "KB", "Kabardino-Balkarskaya"),
-(4223, 1177, "KL", "Kalmykiya, Respublika"),
-(4224, 1177, "KC", "Karachayevo-Cherkesskaya Respublika"),
-(4225, 1177, "KR", "Kareliya, Respublika"),
-(4226, 1177, "KK", "Khakasiya, Respublika"),
-(4227, 1177, "KO", "Komi, Respublika"),
-(4228, 1177, "ME", "Mariy El, Respublika"),
-(4229, 1177, "MO", "Mordoviya, Respublika"),
-(4230, 1177, "SA", "Sakha, Respublika [Yakutiya]"),
-(4231, 1177, "SE", "Severnaya Osetiya, Respublika"),
-(4232, 1177, "TA", "Tatarstan, Respublika"),
-(4233, 1177, "TY", "Tyva, Respublika [Tuva]"),
-(4234, 1177, "UD", "Udmurtskaya Respublika"),
-(4235, 1177, "ALT", "Altayskiy kray"),
-(4236, 1177, "KHA", "Khabarovskiy kray"),
-(4237, 1177, "KDA", "Krasnodarskiy kray"),
-(4238, 1177, "KYA", "Krasnoyarskiy kray"),
-(4239, 1177, "PRI", "Primorskiy kray"),
-(4240, 1177, "STA", "Stavropol\'skiy kray"),
-(4241, 1177, "AMU", "Amurskaya oblast\'"),
-(4242, 1177, "ARK", "Arkhangel\'skaya oblast\'"),
-(4243, 1177, "AST", "Astrakhanskaya oblast\'"),
-(4244, 1177, "BEL", "Belgorodskaya oblast\'"),
-(4245, 1177, "BRY", "Bryanskaya oblast\'"),
-(4246, 1177, "CHE", "Chelyabinskaya oblast\'"),
-(4247, 1177, "ZSK", "Zabaykalsky Krai\'"),
-(4248, 1177, "IRK", "Irkutskaya oblast\'"),
-(4249, 1177, "IVA", "Ivanovskaya oblast\'"),
-(4250, 1177, "KGD", "Kaliningradskaya oblast\'"),
-(4251, 1177, "KLU", "Kaluzhskaya oblast\'"),
-(4252, 1177, "KAM", "Kamchatka Krai\'"),
-(4253, 1177, "KEM", "Kemerovskaya oblast\'"),
-(4254, 1177, "KIR", "Kirovskaya oblast\'"),
-(4255, 1177, "KOS", "Kostromskaya oblast\'"),
-(4256, 1177, "KGN", "Kurganskaya oblast\'"),
-(4257, 1177, "KRS", "Kurskaya oblast\'"),
-(4258, 1177, "LEN", "Leningradskaya oblast\'"),
-(4259, 1177, "LIP", "Lipetskaya oblast\'"),
-(4260, 1177, "MAG", "Magadanskaya oblast\'"),
-(4261, 1177, "MOS", "Moskovskaya oblast\'"),
-(4262, 1177, "MUR", "Murmanskaya oblast\'"),
-(4263, 1177, "NIZ", "Nizhegorodskaya oblast\'"),
-(4264, 1177, "NGR", "Novgorodskaya oblast\'"),
-(4265, 1177, "NVS", "Novosibirskaya oblast\'"),
-(4266, 1177, "OMS", "Omskaya oblast\'"),
-(4267, 1177, "ORE", "Orenburgskaya oblast\'"),
-(4268, 1177, "ORL", "Orlovskaya oblast\'"),
-(4269, 1177, "PNZ", "Penzenskaya oblast\'"),
-(4270, 1177, "PEK", "Perm krai\'"),
-(4271, 1177, "PSK", "Pskovskaya oblast\'"),
-(4272, 1177, "ROS", "Rostovskaya oblast\'"),
-(4273, 1177, "RYA", "Ryazanskaya oblast\'"),
-(4274, 1177, "SAK", "Sakhalinskaya oblast\'"),
-(4275, 1177, "SAM", "Samarskaya oblast\'"),
-(4276, 1177, "SAR", "Saratovskaya oblast\'"),
-(4277, 1177, "SMO", "Smolenskaya oblast\'"),
-(4278, 1177, "SVE", "Sverdlovskaya oblast\'"),
-(4279, 1177, "TAM", "Tambovskaya oblast\'"),
-(4280, 1177, "TOM", "Tomskaya oblast\'"),
-(4281, 1177, "TUL", "Tul\'skaya oblast\'"),
-(4282, 1177, "TVE", "Tverskaya oblast\'"),
-(4283, 1177, "TYU", "Tyumenskaya oblast\'"),
-(4284, 1177, "ULY", "Ul\'yanovskaya oblast\'"),
-(4285, 1177, "VLA", "Vladimirskaya oblast\'"),
-(4286, 1177, "VGG", "Volgogradskaya oblast\'"),
-(4287, 1177, "VLG", "Vologodskaya oblast\'"),
-(4288, 1177, "VOR", "Voronezhskaya oblast\'"),
-(4289, 1177, "YAR", "Yaroslavskaya oblast\'"),
-(4290, 1177, "MOW", "Moskva"),
-(4291, 1177, "SPE", "Sankt-Peterburg"),
-(4292, 1177, "YEV", "Yevreyskaya avtonomnaya oblast\'"),
-(4294, 1177, "CHU", "Chukotskiy avtonomnyy okrug"),
-(4296, 1177, "KHM", "Khanty-Mansiyskiy avtonomnyy okrug"),
-(4299, 1177, "NEN", "Nenetskiy avtonomnyy okrug"),
-(4302, 1177, "YAN", "Yamalo-Nenetskiy avtonomnyy okrug"),
-(4303, 1178, "C", "Butare"),
-(4304, 1178, "I", "Byumba"),
-(4305, 1178, "E", "Cyangugu"),
-(4306, 1178, "D", "Gikongoro"),
-(4307, 1178, "G", "Gisenyi"),
-(4308, 1178, "B", "Gitarama"),
-(4309, 1178, "J", "Kibungo"),
-(4310, 1178, "F", "Kibuye"),
-(4311, 1178, "K", "Kigali-Rural Kigali y\' Icyaro"),
-(4312, 1178, "L", "Kigali-Ville Kigali Ngari"),
-(4313, 1178, "M", "Mutara"),
-(4314, 1178, "H", "Ruhengeri"),
-(4315, 1187, "11", "Al Bahah"),
-(4316, 1187, "08", "Al Hudud Ash Shamaliyah"),
-(4317, 1187, "12", "Al Jawf"),
-(4318, 1187, "03", "Al Madinah"),
-(4319, 1187, "05", "Al Qasim"),
-(4320, 1187, "01", "Ar Riyad"),
-(4321, 1187, "14", "Asir"),
-(4322, 1187, "06", "Ha\'il"),
-(4323, 1187, "09", "Jlzan"),
-(4324, 1187, "02", "Makkah"),
-(4325, 1187, "10", "Najran"),
-(4326, 1187, "07", "Tabuk"),
-(4327, 1194, "CT", "Capital Territory (Honiara)"),
-(4328, 1194, "GU", "Guadalcanal"),
-(4329, 1194, "IS", "Isabel"),
-(4330, 1194, "MK", "Makira"),
-(4331, 1194, "ML", "Malaita"),
-(4332, 1194, "TE", "Temotu"),
-(4333, 1200, "23", "A\'ali an Nil"),
-(4334, 1200, "26", "Al Bah al Ahmar"),
-(4335, 1200, "18", "Al Buhayrat"),
-(4336, 1200, "07", "Al Jazirah"),
-(4337, 1200, "03", "Al Khartum"),
-(4338, 1200, "06", "Al Qadarif"),
-(4339, 1200, "22", "Al Wahdah"),
-(4340, 1200, "04", "An Nil"),
-(4341, 1200, "08", "An Nil al Abyaq"),
-(4342, 1200, "24", "An Nil al Azraq"),
-(4343, 1200, "01", "Ash Shamallyah"),
-(4344, 1200, "17", "Bahr al Jabal"),
-(4345, 1200, "16", "Gharb al Istiwa\'iyah"),
-(4346, 1200, "14", "Gharb Ba~r al Ghazal"),
-(4347, 1200, "12", "Gharb Darfur"),
-(4348, 1200, "10", "Gharb Kurdufan"),
-(4349, 1200, "11", "Janub Darfur"),
-(4350, 1200, "13", "Janub Rurdufan"),
-(4351, 1200, "20", "Jnqall"),
-(4352, 1200, "05", "Kassala"),
-(4353, 1200, "15", "Shamal Batr al Ghazal"),
-(4354, 1200, "02", "Shamal Darfur"),
-(4355, 1200, "09", "Shamal Kurdufan"),
-(4356, 1200, "19", "Sharq al Istiwa\'iyah"),
-(4357, 1200, "25", "Sinnar"),
-(4358, 1200, "21", "Warab"),
-(4359, 1204, "K", "Blekinge län"),
-(4360, 1204, "W", "Dalarnas län"),
-(4361, 1204, "I", "Gotlands län"),
-(4362, 1204, "X", "Gävleborgs län"),
-(4363, 1204, "N", "Hallands län"),
-(4364, 1204, "Z", "Jämtlands län"),
-(4365, 1204, "F", "Jönkopings län"),
-(4366, 1204, "H", "Kalmar län"),
-(4367, 1204, "G", "Kronobergs län"),
-(4368, 1204, "BD", "Norrbottens län"),
-(4369, 1204, "M", "Skåne län"),
-(4370, 1204, "AB", "Stockholms län"),
-(4371, 1204, "D", "Södermanlands län"),
-(4372, 1204, "C", "Uppsala län"),
-(4373, 1204, "S", "Värmlands län"),
-(4374, 1204, "AC", "Västerbottens län"),
-(4375, 1204, "Y", "Västernorrlands län"),
-(4376, 1204, "U", "Västmanlands län"),
-(4377, 1204, "Q", "Västra Götalands län"),
-(4378, 1204, "T", "Örebro län"),
-(4379, 1204, "E", "Östergötlands län"),
-(4380, 1180, "SH", "Saint Helena"),
-(4381, 1180, "AC", "Ascension"),
-(4382, 1180, "TA", "Tristan da Cunha"),
-(4383, 1193, "001", "Ajdovščina"),
-(4384, 1193, "002", "Beltinci"),
-(4385, 1193, "148", "Benedikt"),
-(4386, 1193, "149", "Bistrica ob Sotli"),
-(4387, 1193, "003", "Bled"),
-(4388, 1193, "150", "Bloke"),
-(4389, 1193, "004", "Bohinj"),
-(4390, 1193, "005", "Borovnica"),
-(4391, 1193, "006", "Bovec"),
-(4392, 1193, "151", "Braslovče"),
-(4393, 1193, "007", "Brda"),
-(4394, 1193, "008", "Brezovica"),
-(4395, 1193, "009", "Brežice"),
-(4396, 1193, "152", "Cankova"),
-(4397, 1193, "011", "Celje"),
-(4398, 1193, "012", "Cerklje na Gorenjskem"),
-(4399, 1193, "013", "Cerknica"),
-(4400, 1193, "014", "Cerkno"),
-(4401, 1193, "153", "Cerkvenjak"),
-(4402, 1193, "015", "Črenšovci"),
-(4403, 1193, "016", "Črna na Koroškem"),
-(4404, 1193, "017", "ÄŒrnomelj"),
-(4405, 1193, "018", "Destrnik"),
-(4406, 1193, "019", "Divača"),
-(4407, 1193, "154", "Dobje"),
-(4408, 1193, "020", "Dobrepolje"),
-(4409, 1193, "155", "Dobrna"),
-(4410, 1193, "021", "Dobrova-Polhov Gradec"),
-(4411, 1193, "156", "Dobrovnik"),
-(4412, 1193, "022", "Dol pri Ljubljani"),
-(4413, 1193, "157", "Dolenjske Toplice"),
-(4414, 1193, "023", "Domžale"),
-(4415, 1193, "024", "Dornava"),
-(4416, 1193, "025", "Dravograd"),
-(4417, 1193, "026", "Duplek"),
-(4418, 1193, "027", "Gorenja vas-Poljane"),
-(4419, 1193, "028", "Gorišnica"),
-(4420, 1193, "029", "Gornja Radgona"),
-(4421, 1193, "030", "Gornji Grad"),
-(4422, 1193, "031", "Gornji Petrovci"),
-(4423, 1193, "158", "Grad"),
-(4424, 1193, "032", "Grosuplje"),
-(4425, 1193, "159", "Hajdina"),
-(4426, 1193, "160", "Hoče-Slivnica"),
-(4427, 1193, "161", "Hodoš"),
-(4428, 1193, "162", "Horjul"),
-(4429, 1193, "034", "Hrastnik"),
-(4430, 1193, "035", "Hrpelje-Kozina"),
-(4431, 1193, "036", "Idrija"),
-(4432, 1193, "037", "Ig"),
-(4433, 1193, "038", "Ilirska Bistrica"),
-(4434, 1193, "039", "Ivančna Gorica"),
-(4435, 1193, "040", "Izola"),
-(4436, 1193, "041", "Jesenice"),
-(4437, 1193, "163", "Jezersko"),
-(4438, 1193, "042", "Juršinci"),
-(4439, 1193, "043", "Kamnik"),
-(4440, 1193, "044", "Kanal"),
-(4441, 1193, "045", "Kidričevo"),
-(4442, 1193, "046", "Kobarid"),
-(4443, 1193, "047", "Kobilje"),
-(4444, 1193, "048", "Kočevje"),
-(4445, 1193, "049", "Komen"),
-(4446, 1193, "164", "Komenda"),
-(4447, 1193, "050", "Koper"),
-(4448, 1193, "165", "Kostel"),
-(4449, 1193, "051", "Kozje"),
-(4450, 1193, "052", "Kranj"),
-(4451, 1193, "053", "Kranjska Gora"),
-(4452, 1193, "166", "Križevci"),
-(4453, 1193, "054", "Krško"),
-(4454, 1193, "055", "Kungota"),
-(4455, 1193, "056", "Kuzma"),
-(4456, 1193, "057", "Laško"),
-(4457, 1193, "058", "Lenart"),
-(4458, 1193, "059", "Lendava"),
-(4459, 1193, "060", "Litija"),
-(4460, 1193, "061", "Ljubljana"),
-(4461, 1193, "062", "Ljubno"),
-(4462, 1193, "063", "Ljutomer"),
-(4463, 1193, "064", "Logatec"),
-(4464, 1193, "065", "Loška dolina"),
-(4465, 1193, "066", "Loški Potok"),
-(4466, 1193, "167", "Lovrenc na Pohorju"),
-(4467, 1193, "067", "Luče"),
-(4468, 1193, "068", "Lukovica"),
-(4469, 1193, "069", "Majšperk"),
-(4470, 1193, "070", "Maribor"),
-(4471, 1193, "168", "Markovci"),
-(4472, 1193, "071", "Medvode"),
-(4473, 1193, "072", "Mengeš"),
-(4474, 1193, "073", "Metlika"),
-(4475, 1193, "074", "Mežica"),
-(4476, 1193, "169", "Miklavž na Dravskem polju"),
-(4477, 1193, "075", "Miren-Kostanjevica"),
-(4478, 1193, "170", "Mirna Peč"),
-(4479, 1193, "076", "Mislinja"),
-(4480, 1193, "077", "Moravče"),
-(4481, 1193, "078", "Moravske Toplice"),
-(4482, 1193, "079", "Mozirje"),
-(4483, 1193, "080", "Murska Sobota"),
-(4484, 1193, "081", "Muta"),
-(4485, 1193, "082", "Naklo"),
-(4486, 1193, "083", "Nazarje"),
-(4487, 1193, "084", "Nova Gorica"),
-(4488, 1193, "085", "Novo mesto"),
-(4489, 1193, "181", "Sveta Ana"),
-(4490, 1193, "182", "Sveti Andraž v Slovenskih goricah"),
-(4491, 1193, "116", "Sveti Jurij"),
-(4492, 1193, "033", "Å alovci"),
-(4493, 1193, "183", "Å empeter-Vrtojba"),
-(4494, 1193, "117", "Šenčur"),
-(4495, 1193, "118", "Å entilj"),
-(4496, 1193, "119", "Å entjernej"),
-(4497, 1193, "120", "Å entjur"),
-(4498, 1193, "121", "Å kocjan"),
-(4499, 1193, "122", "Å kofja Loka"),
-(4500, 1193, "123", "Å kofljica"),
-(4501, 1193, "124", "Šmarje pri Jelšah"),
-(4502, 1193, "125", "Å martno ob Paki"),
-(4503, 1193, "194", "Å martno pri Litiji"),
-(4504, 1193, "126", "Šoštanj"),
-(4505, 1193, "127", "Å tore"),
-(4506, 1193, "184", "Tabor"),
-(4507, 1193, "010", "Tišina"),
-(4508, 1193, "128", "Tolmin"),
-(4509, 1193, "129", "Trbovlje"),
-(4510, 1193, "130", "Trebnje"),
-(4511, 1193, "185", "Trnovska vas"),
-(4512, 1193, "131", "Tržič"),
-(4513, 1193, "186", "Trzin"),
-(4514, 1193, "132", "Turnišče"),
-(4515, 1193, "133", "Velenje"),
-(4516, 1193, "187", "Velika Polana"),
-(4517, 1193, "134", "Velike Lašče"),
-(4518, 1193, "188", "Veržej"),
-(4519, 1193, "135", "Videm"),
-(4520, 1193, "136", "Vipava"),
-(4521, 1193, "137", "Vitanje"),
-(4522, 1193, "138", "Vojnik"),
-(4523, 1193, "189", "Vransko"),
-(4524, 1193, "140", "Vrhnika"),
-(4525, 1193, "141", "Vuzenica"),
-(4526, 1193, "142", "Zagorje ob Savi"),
-(4527, 1193, "143", "Zavrč"),
-(4528, 1193, "144", "Zreče"),
-(4529, 1193, "190", "Žalec"),
-(4530, 1193, "146", "Železniki"),
-(4531, 1193, "191", "Žetale"),
-(4532, 1193, "147", "Žiri"),
-(4533, 1193, "192", "Žirovnica"),
-(4534, 1193, "193", "Žužemberk"),
-(4535, 1192, "BC", "Banskobystrický kraj"),
-(4536, 1192, "BL", "Bratislavský kraj"),
-(4537, 1192, "KI", "Košický kraj"),
-(4538, 1192, "NJ", "Nitriansky kraj"),
-(4539, 1192, "PV", "Prešovský kraj"),
-(4540, 1192, "TC", "Trenčiansky kraj"),
-(4541, 1192, "TA", "Trnavský kraj"),
-(4542, 1192, "ZI", "Žilinský kraj"),
-(4543, 1190, "W", "Western Area (Freetown)"),
-(4544, 1188, "DK", "Dakar"),
-(4545, 1188, "DB", "Diourbel"),
-(4546, 1188, "FK", "Fatick"),
-(4547, 1188, "KL", "Kaolack"),
-(4548, 1188, "KD", "Kolda"),
-(4549, 1188, "LG", "Louga"),
-(4550, 1188, "MT", "Matam"),
-(4551, 1188, "SL", "Saint-Louis"),
-(4552, 1188, "TC", "Tambacounda"),
-(4553, 1188, "TH", "Thies"),
-(4554, 1188, "ZG", "Ziguinchor"),
-(4555, 1195, "AW", "Awdal"),
-(4556, 1195, "BK", "Bakool"),
-(4557, 1195, "BN", "Banaadir"),
-(4558, 1195, "BY", "Bay"),
-(4559, 1195, "GA", "Galguduud"),
-(4560, 1195, "GE", "Gedo"),
-(4561, 1195, "HI", "Hiirsan"),
-(4562, 1195, "JD", "Jubbada Dhexe"),
-(4563, 1195, "JH", "Jubbada Hoose"),
-(4564, 1195, "MU", "Mudug"),
-(4565, 1195, "NU", "Nugaal"),
-(4566, 1195, "SA", "Saneag"),
-(4567, 1195, "SD", "Shabeellaha Dhexe"),
-(4568, 1195, "SH", "Shabeellaha Hoose"),
-(4569, 1195, "SO", "Sool"),
-(4570, 1195, "TO", "Togdheer"),
-(4571, 1195, "WO", "Woqooyi Galbeed"),
-(4572, 1201, "BR", "Brokopondo"),
-(4573, 1201, "CM", "Commewijne"),
-(4574, 1201, "CR", "Coronie"),
-(4575, 1201, "MA", "Marowijne"),
-(4576, 1201, "NI", "Nickerie"),
-(4577, 1201, "PM", "Paramaribo"),
-(4578, 1201, "SA", "Saramacca"),
-(4579, 1201, "SI", "Sipaliwini"),
-(4580, 1201, "WA", "Wanica"),
-(4581, 1207, "P", "Principe"),
-(4582, 1207, "S", "Sao Tome"),
-(4583, 1066, "AH", "Ahuachapan"),
-(4584, 1066, "CA", "Cabanas"),
-(4585, 1066, "CU", "Cuscatlan"),
-(4586, 1066, "CH", "Chalatenango"),
-(4587, 1066, "MO", "Morazan"),
-(4588, 1066, "SM", "San Miguel"),
-(4589, 1066, "SS", "San Salvador"),
-(4590, 1066, "SA", "Santa Ana"),
-(4591, 1066, "SV", "San Vicente"),
-(4592, 1066, "SO", "Sonsonate"),
-(4593, 1066, "US", "Usulutan"),
-(4594, 1206, "HA", "Al Hasakah"),
-(4595, 1206, "LA", "Al Ladhiqiyah"),
-(4596, 1206, "QU", "Al Qunaytirah"),
-(4597, 1206, "RA", "Ar Raqqah"),
-(4598, 1206, "SU", "As Suwayda\'"),
-(4599, 1206, "DR", "Dar\'a"),
-(4600, 1206, "DY", "Dayr az Zawr"),
-(4601, 1206, "DI", "Dimashq"),
-(4602, 1206, "HL", "Halab"),
-(4603, 1206, "HM", "Hamah"),
-(4604, 1206, "HI", "Jim\'"),
-(4605, 1206, "ID", "Idlib"),
-(4606, 1206, "RD", "Rif Dimashq"),
-(4607, 1206, "TA", "Tarts"),
-(4608, 1203, "HH", "Hhohho"),
-(4609, 1203, "LU", "Lubombo"),
-(4610, 1203, "MA", "Manzini"),
-(4611, 1203, "SH", "Shiselweni"),
-(4612, 1043, "BA", "Batha"),
-(4613, 1043, "BI", "Biltine"),
-(4614, 1043, "BET", "Borkou-Ennedi-Tibesti"),
-(4615, 1043, "CB", "Chari-Baguirmi"),
-(4616, 1043, "GR", "Guera"),
-(4617, 1043, "KA", "Kanem"),
-(4618, 1043, "LC", "Lac"),
-(4619, 1043, "LO", "Logone-Occidental"),
-(4620, 1043, "LR", "Logone-Oriental"),
-(4621, 1043, "MK", "Mayo-Kebbi"),
-(4622, 1043, "MC", "Moyen-Chari"),
-(4623, 1043, "OD", "Ouaddai"),
-(4624, 1043, "SA", "Salamat"),
-(4625, 1043, "TA", "Tandjile"),
-(4626, 1214, "K", "Kara"),
-(4627, 1214, "M", "Maritime (Region)"),
-(4628, 1214, "S", "Savannes"),
-(4629, 1211, "10", "Krung Thep Maha Nakhon Bangkok"),
-(4630, 1211, "S", "Phatthaya"),
-(4631, 1211, "37", "Amnat Charoen"),
-(4632, 1211, "15", "Ang Thong"),
-(4633, 1211, "31", "Buri Ram"),
-(4634, 1211, "24", "Chachoengsao"),
-(4635, 1211, "18", "Chai Nat"),
-(4636, 1211, "36", "Chaiyaphum"),
-(4637, 1211, "22", "Chanthaburi"),
-(4638, 1211, "50", "Chiang Mai"),
-(4639, 1211, "57", "Chiang Rai"),
-(4640, 1211, "20", "Chon Buri"),
-(4641, 1211, "86", "Chumphon"),
-(4642, 1211, "46", "Kalasin"),
-(4643, 1211, "62", "Kamphasng Phet"),
-(4644, 1211, "71", "Kanchanaburi"),
-(4645, 1211, "40", "Khon Kaen"),
-(4646, 1211, "81", "Krabi"),
-(4647, 1211, "52", "Lampang"),
-(4648, 1211, "51", "Lamphun"),
-(4649, 1211, "42", "Loei"),
-(4650, 1211, "16", "Lop Buri"),
-(4651, 1211, "58", "Mae Hong Son"),
-(4652, 1211, "44", "Maha Sarakham"),
-(4653, 1211, "49", "Mukdahan"),
-(4654, 1211, "26", "Nakhon Nayok"),
-(4655, 1211, "73", "Nakhon Pathom"),
-(4656, 1211, "48", "Nakhon Phanom"),
-(4657, 1211, "30", "Nakhon Ratchasima"),
-(4658, 1211, "60", "Nakhon Sawan"),
-(4659, 1211, "80", "Nakhon Si Thammarat"),
-(4660, 1211, "55", "Nan"),
-(4661, 1211, "96", "Narathiwat"),
-(4662, 1211, "39", "Nong Bua Lam Phu"),
-(4663, 1211, "43", "Nong Khai"),
-(4664, 1211, "12", "Nonthaburi"),
-(4665, 1211, "13", "Pathum Thani"),
-(4666, 1211, "94", "Pattani"),
-(4667, 1211, "82", "Phangnga"),
-(4668, 1211, "93", "Phatthalung"),
-(4669, 1211, "56", "Phayao"),
-(4670, 1211, "67", "Phetchabun"),
-(4671, 1211, "76", "Phetchaburi"),
-(4672, 1211, "66", "Phichit"),
-(4673, 1211, "65", "Phitsanulok"),
-(4674, 1211, "54", "Phrae"),
-(4675, 1211, "14", "Phra Nakhon Si Ayutthaya"),
-(4676, 1211, "83", "Phuket"),
-(4677, 1211, "25", "Prachin Buri"),
-(4678, 1211, "77", "Prachuap Khiri Khan"),
-(4679, 1211, "85", "Ranong"),
-(4680, 1211, "70", "Ratchaburi"),
-(4681, 1211, "21", "Rayong"),
-(4682, 1211, "45", "Roi Et"),
-(4683, 1211, "27", "Sa Kaeo"),
-(4684, 1211, "47", "Sakon Nakhon"),
-(4685, 1211, "11", "Samut Prakan"),
-(4686, 1211, "74", "Samut Sakhon"),
-(4687, 1211, "75", "Samut Songkhram"),
-(4688, 1211, "19", "Saraburi"),
-(4689, 1211, "91", "Satun"),
-(4690, 1211, "17", "Sing Buri"),
-(4691, 1211, "33", "Si Sa Ket"),
-(4692, 1211, "90", "Songkhla"),
-(4693, 1211, "64", "Sukhothai"),
-(4694, 1211, "72", "Suphan Buri"),
-(4695, 1211, "84", "Surat Thani"),
-(4696, 1211, "32", "Surin"),
-(4697, 1211, "63", "Tak"),
-(4698, 1211, "92", "Trang"),
-(4699, 1211, "23", "Trat"),
-(4700, 1211, "34", "Ubon Ratchathani"),
-(4701, 1211, "41", "Udon Thani"),
-(4702, 1211, "61", "Uthai Thani"),
-(4703, 1211, "53", "Uttaradit"),
-(4704, 1211, "95", "Yala"),
-(4705, 1211, "35", "Yasothon"),
-(4706, 1209, "SU", "Sughd"),
-(4707, 1209, "KT", "Khatlon"),
-(4708, 1209, "GB", "Gorno-Badakhshan"),
-(4709, 1220, "A", "Ahal"),
-(4710, 1220, "B", "Balkan"),
-(4711, 1220, "D", "Dasoguz"),
-(4712, 1220, "L", "Lebap"),
-(4713, 1220, "M", "Mary"),
-(4714, 1218, "31", "Béja"),
-(4715, 1218, "13", "Ben Arous"),
-(4716, 1218, "23", "Bizerte"),
-(4717, 1218, "81", "Gabès"),
-(4718, 1218, "71", "Gafsa"),
-(4719, 1218, "32", "Jendouba"),
-(4720, 1218, "41", "Kairouan"),
-(4721, 1218, "42", "Rasserine"),
-(4722, 1218, "73", "Kebili"),
-(4723, 1218, "12", "L\'Ariana"),
-(4724, 1218, "33", "Le Ref"),
-(4725, 1218, "53", "Mahdia"),
-(4726, 1218, "14", "La Manouba"),
-(4727, 1218, "82", "Medenine"),
-(4728, 1218, "52", "Moneatir"),
-(4729, 1218, "21", "Naboul"),
-(4730, 1218, "61", "Sfax"),
-(4731, 1218, "43", "Sidi Bouxid"),
-(4732, 1218, "34", "Siliana"),
-(4733, 1218, "51", "Sousse"),
-(4734, 1218, "83", "Tataouine"),
-(4735, 1218, "72", "Tozeur"),
-(4736, 1218, "11", "Tunis"),
-(4737, 1218, "22", "Zaghouan"),
-(4738, 1219, "01", "Adana"),
-(4739, 1219, "02", "Ad yaman"),
-(4740, 1219, "03", "Afyon"),
-(4741, 1219, "04", "Ag r"),
-(4742, 1219, "68", "Aksaray"),
-(4743, 1219, "05", "Amasya"),
-(4744, 1219, "06", "Ankara"),
-(4745, 1219, "07", "Antalya"),
-(4746, 1219, "75", "Ardahan"),
-(4747, 1219, "08", "Artvin"),
-(4748, 1219, "09", "Aydin"),
-(4749, 1219, "10", "Bal kesir"),
-(4750, 1219, "74", "Bartin"),
-(4751, 1219, "72", "Batman"),
-(4752, 1219, "69", "Bayburt"),
-(4753, 1219, "11", "Bilecik"),
-(4754, 1219, "12", "Bingol"),
-(4755, 1219, "13", "Bitlis"),
-(4756, 1219, "14", "Bolu"),
-(4757, 1219, "15", "Burdur"),
-(4758, 1219, "16", "Bursa"),
-(4759, 1219, "17", "Canakkale"),
-(4760, 1219, "18", "Cankir"),
-(4761, 1219, "19", "Corum"),
-(4762, 1219, "20", "Denizli"),
-(4763, 1219, "21", "Diyarbakir"),
-(4764, 1219, "81", "Duzce"),
-(4765, 1219, "22", "Edirne"),
-(4766, 1219, "23", "Elazig"),
-(4767, 1219, "24", "Erzincan"),
-(4768, 1219, "25", "Erzurum"),
-(4769, 1219, "26", "Eskis\'ehir"),
-(4770, 1219, "27", "Gaziantep"),
-(4771, 1219, "28", "Giresun"),
-(4772, 1219, "29", "Gms\'hane"),
-(4773, 1219, "30", "Hakkari"),
-(4774, 1219, "31", "Hatay"),
-(4775, 1219, "76", "Igidir"),
-(4776, 1219, "32", "Isparta"),
-(4777, 1219, "33", "Icel"),
-(4778, 1219, "34", "Istanbul"),
-(4779, 1219, "35", "Izmir"),
-(4780, 1219, "46", "Kahramanmaras"),
-(4781, 1219, "78", "Karabk"),
-(4782, 1219, "70", "Karaman"),
-(4783, 1219, "36", "Kars"),
-(4784, 1219, "37", "Kastamonu"),
-(4785, 1219, "38", "Kayseri"),
-(4786, 1219, "71", "Kirikkale"),
-(4787, 1219, "39", "Kirklareli"),
-(4788, 1219, "40", "Kirs\'ehir"),
-(4789, 1219, "79", "Kilis"),
-(4790, 1219, "41", "Kocaeli"),
-(4791, 1219, "42", "Konya"),
-(4792, 1219, "43", "Ktahya"),
-(4793, 1219, "44", "Malatya"),
-(4794, 1219, "45", "Manisa"),
-(4795, 1219, "47", "Mardin"),
-(4796, 1219, "48", "Mugila"),
-(4797, 1219, "49", "Mus"),
-(4798, 1219, "50", "Nevs\'ehir"),
-(4799, 1219, "51", "Nigide"),
-(4800, 1219, "52", "Ordu"),
-(4801, 1219, "80", "Osmaniye"),
-(4802, 1219, "53", "Rize"),
-(4803, 1219, "54", "Sakarya"),
-(4804, 1219, "55", "Samsun"),
-(4805, 1219, "56", "Siirt"),
-(4806, 1219, "57", "Sinop"),
-(4807, 1219, "58", "Sivas"),
-(4808, 1219, "63", "S\'anliurfa"),
-(4809, 1219, "73", "S\'rnak"),
-(4810, 1219, "59", "Tekirdag"),
-(4811, 1219, "60", "Tokat"),
-(4812, 1219, "61", "Trabzon"),
-(4813, 1219, "62", "Tunceli"),
-(4814, 1219, "64", "Us\'ak"),
-(4815, 1219, "65", "Van"),
-(4816, 1219, "77", "Yalova"),
-(4817, 1219, "66", "Yozgat"),
-(4818, 1219, "67", "Zonguldak"),
-(4819, 1217, "CTT", "Couva-Tabaquite-Talparo"),
-(4820, 1217, "DMN", "Diego Martin"),
-(4821, 1217, "ETO", "Eastern Tobago"),
-(4822, 1217, "PED", "Penal-Debe"),
-(4823, 1217, "PRT", "Princes Town"),
-(4824, 1217, "RCM", "Rio Claro-Mayaro"),
-(4825, 1217, "SGE", "Sangre Grande"),
-(4826, 1217, "SJL", "San Juan-Laventille"),
-(4827, 1217, "SIP", "Siparia"),
-(4828, 1217, "TUP", "Tunapuna-Piarco"),
-(4829, 1217, "WTO", "Western Tobago"),
-(4830, 1217, "ARI", "Arima"),
-(4831, 1217, "CHA", "Chaguanas"),
-(4832, 1217, "PTF", "Point Fortin"),
-(4833, 1217, "POS", "Port of Spain"),
-(4834, 1217, "SFO", "San Fernando"),
-(4835, 1063, "AL", "Aileu"),
-(4836, 1063, "AN", "Ainaro"),
-(4837, 1063, "BA", "Bacucau"),
-(4838, 1063, "BO", "Bobonaro"),
-(4839, 1063, "CO", "Cova Lima"),
-(4840, 1063, "DI", "Dili"),
-(4841, 1063, "ER", "Ermera"),
-(4842, 1063, "LA", "Laulem"),
-(4843, 1063, "LI", "Liquica"),
-(4844, 1063, "MT", "Manatuto"),
-(4845, 1063, "MF", "Manafahi"),
-(4846, 1063, "OE", "Oecussi"),
-(4847, 1063, "VI", "Viqueque"),
-(4848, 1208, "CHA", "Changhua County"),
-(4849, 1208, "CYQ", "Chiayi County"),
-(4850, 1208, "HSQ", "Hsinchu County"),
-(4851, 1208, "HUA", "Hualien County"),
-(4852, 1208, "ILA", "Ilan County"),
-(4853, 1208, "KHQ", "Kaohsiung County"),
-(4854, 1208, "MIA", "Miaoli County"),
-(4855, 1208, "NAN", "Nantou County"),
-(4856, 1208, "PEN", "Penghu County"),
-(4857, 1208, "PIF", "Pingtung County"),
-(4858, 1208, "TXQ", "Taichung County"),
-(4859, 1208, "TNQ", "Tainan County"),
-(4860, 1208, "TPQ", "Taipei County"),
-(4861, 1208, "TTT", "Taitung County"),
-(4862, 1208, "TAO", "Taoyuan County"),
-(4863, 1208, "YUN", "Yunlin County"),
-(4864, 1208, "KEE", "Keelung City"),
-(4865, 1210, "01", "Arusha"),
-(4866, 1210, "02", "Dar-es-Salaam"),
-(4867, 1210, "03", "Dodoma"),
-(4868, 1210, "04", "Iringa"),
-(4869, 1210, "05", "Kagera"),
-(4870, 1210, "06", "Kaskazini Pemba"),
-(4871, 1210, "07", "Kaskazini Unguja"),
-(4872, 1210, "08", "Xigoma"),
-(4873, 1210, "09", "Kilimanjaro"),
-(4874, 1210, "10", "Rusini Pemba"),
-(4875, 1210, "11", "Kusini Unguja"),
-(4876, 1210, "12", "Lindi"),
-(4877, 1210, "26", "Manyara"),
-(4878, 1210, "13", "Mara"),
-(4879, 1210, "14", "Mbeya"),
-(4880, 1210, "15", "Mjini Magharibi"),
-(4881, 1210, "16", "Morogoro"),
-(4882, 1210, "17", "Mtwara"),
-(4883, 1210, "19", "Pwani"),
-(4884, 1210, "20", "Rukwa"),
-(4885, 1210, "21", "Ruvuma"),
-(4886, 1210, "22", "Shinyanga"),
-(4887, 1210, "23", "Singida"),
-(4888, 1210, "24", "Tabora"),
-(4889, 1210, "25", "Tanga"),
-(4890, 1224, "71", "Cherkas\'ka Oblast\'"),
-(4891, 1224, "74", "Chernihivs\'ka Oblast\'"),
-(4892, 1224, "77", "Chernivets\'ka Oblast\'"),
-(4893, 1224, "12", "Dnipropetrovs\'ka Oblast\'"),
-(4894, 1224, "14", "Donets\'ka Oblast\'"),
-(4895, 1224, "26", "Ivano-Frankivs\'ka Oblast\'"),
-(4896, 1224, "63", "Kharkivs\'ka Oblast\'"),
-(4897, 1224, "65", "Khersons\'ka Oblast\'"),
-(4898, 1224, "68", "Khmel\'nyts\'ka Oblast\'"),
-(4899, 1224, "35", "Kirovohrads\'ka Oblast\'"),
-(4900, 1224, "32", "Kyivs\'ka Oblast\'"),
-(4901, 1224, "09", "Luhans\'ka Oblast\'"),
-(4902, 1224, "46", "L\'vivs\'ka Oblast\'"),
-(4903, 1224, "48", "Mykolaivs\'ka Oblast\'"),
-(4904, 1224, "51", "Odes \'ka Oblast\'"),
-(4905, 1224, "53", "Poltavs\'ka Oblast\'"),
-(4906, 1224, "56", "Rivnens\'ka Oblast\'"),
-(4907, 1224, "59", "Sums \'ka Oblast\'"),
-(4908, 1224, "61", "Ternopil\'s\'ka Oblast\'"),
-(4909, 1224, "05", "Vinnyts\'ka Oblast\'"),
-(4910, 1224, "07", "Volyos\'ka Oblast\'"),
-(4911, 1224, "21", "Zakarpats\'ka Oblast\'"),
-(4912, 1224, "23", "Zaporiz\'ka Oblast\'"),
-(4913, 1224, "18", "Zhytomyrs\'ka Oblast\'"),
-(4914, 1224, "43", "Respublika Krym"),
-(4915, 1224, "30", "Kyiv"),
-(4916, 1224, "40", "Sevastopol"),
-(4917, 1223, "301", "Adjumani"),
-(4918, 1223, "302", "Apac"),
-(4919, 1223, "303", "Arua"),
-(4920, 1223, "201", "Bugiri"),
-(4921, 1223, "401", "Bundibugyo"),
-(4922, 1223, "402", "Bushenyi"),
-(4923, 1223, "202", "Busia"),
-(4924, 1223, "304", "Gulu"),
-(4925, 1223, "403", "Hoima"),
-(4926, 1223, "203", "Iganga"),
-(4927, 1223, "204", "Jinja"),
-(4928, 1223, "404", "Kabale"),
-(4929, 1223, "405", "Kabarole"),
-(4930, 1223, "213", "Kaberamaido"),
-(4931, 1223, "101", "Kalangala"),
-(4932, 1223, "102", "Kampala"),
-(4933, 1223, "205", "Kamuli"),
-(4934, 1223, "413", "Kamwenge"),
-(4935, 1223, "414", "Kanungu"),
-(4936, 1223, "206", "Kapchorwa"),
-(4937, 1223, "406", "Kasese"),
-(4938, 1223, "207", "Katakwi"),
-(4939, 1223, "112", "Kayunga"),
-(4940, 1223, "407", "Kibaale"),
-(4941, 1223, "103", "Kiboga"),
-(4942, 1223, "408", "Kisoro"),
-(4943, 1223, "305", "Kitgum"),
-(4944, 1223, "306", "Kotido"),
-(4945, 1223, "208", "Kumi"),
-(4946, 1223, "415", "Kyenjojo"),
-(4947, 1223, "307", "Lira"),
-(4948, 1223, "104", "Luwero"),
-(4949, 1223, "105", "Masaka"),
-(4950, 1223, "409", "Masindi"),
-(4951, 1223, "214", "Mayuge"),
-(4952, 1223, "209", "Mbale"),
-(4953, 1223, "410", "Mbarara"),
-(4954, 1223, "308", "Moroto"),
-(4955, 1223, "309", "Moyo"),
-(4956, 1223, "106", "Mpigi"),
-(4957, 1223, "107", "Mubende"),
-(4958, 1223, "108", "Mukono"),
-(4959, 1223, "311", "Nakapiripirit"),
-(4960, 1223, "109", "Nakasongola"),
-(4961, 1223, "310", "Nebbi"),
-(4962, 1223, "411", "Ntungamo"),
-(4963, 1223, "312", "Pader"),
-(4964, 1223, "210", "Pallisa"),
-(4965, 1223, "110", "Rakai"),
-(4966, 1223, "412", "Rukungiri"),
-(4967, 1223, "111", "Sembabule"),
-(4968, 1223, "215", "Sironko"),
-(4969, 1223, "211", "Soroti"),
-(4970, 1223, "212", "Tororo"),
-(4971, 1223, "113", "Wakiso"),
-(4972, 1223, "313", "Yumbe"),
-(4973, 1227, "81", "Baker Island"),
-(4974, 1227, "84", "Howland Island"),
-(4975, 1227, "86", "Jarvis Island"),
-(4976, 1227, "67", "Johnston Atoll"),
-(4977, 1227, "89", "Kingman Reef"),
-(4978, 1227, "71", "Midway Islands"),
-(4979, 1227, "76", "Navassa Island"),
-(4980, 1227, "95", "Palmyra Atoll"),
-(4981, 1227, "79", "Wake Island"),
-(4982, 1229, "AR", "Artigsa"),
-(4983, 1229, "CA", "Canelones"),
-(4984, 1229, "CL", "Cerro Largo"),
-(4985, 1229, "CO", "Colonia"),
-(4986, 1229, "DU", "Durazno"),
-(4987, 1229, "FS", "Flores"),
-(4988, 1229, "LA", "Lavalleja"),
-(4989, 1229, "MA", "Maldonado"),
-(4990, 1229, "MO", "Montevideo"),
-(4991, 1229, "PA", "Paysandu"),
-(4992, 1229, "RV", "Rivera"),
-(4993, 1229, "RO", "Rocha"),
-(4994, 1229, "SA", "Salto"),
-(4995, 1229, "SO", "Soriano"),
-(4996, 1229, "TA", "Tacuarembo"),
-(4997, 1229, "TT", "Treinta y Tres"),
-(4998, 1230, "TK", "Toshkent (city)"),
-(4999, 1230, "QR", "Qoraqalpogiston Respublikasi"),
-(5000, 1230, "AN", "Andijon"),
-(5001, 1230, "BU", "Buxoro"),
-(5002, 1230, "FA", "Farg\'ona"),
-(5003, 1230, "JI", "Jizzax"),
-(5004, 1230, "KH", "Khorazm"),
-(5005, 1230, "NG", "Namangan"),
-(5006, 1230, "NW", "Navoiy"),
-(5007, 1230, "QA", "Qashqadaryo"),
-(5008, 1230, "SA", "Samarqand"),
-(5009, 1230, "SI", "Sirdaryo"),
-(5010, 1230, "SU", "Surxondaryo"),
-(5011, 1230, "TO", "Toshkent"),
-(5012, 1230, "XO", "Xorazm"),
-(5013, 1232, "A", "Distrito Federal"),
-(5014, 1232, "B", "Anzoategui"),
-(5015, 1232, "C", "Apure"),
-(5016, 1232, "D", "Aragua"),
-(5017, 1232, "E", "Barinas"),
-(5018, 1232, "G", "Carabobo"),
-(5019, 1232, "H", "Cojedes"),
-(5020, 1232, "I", "Falcon"),
-(5021, 1232, "J", "Guarico"),
-(5022, 1232, "K", "Lara"),
-(5023, 1232, "L", "Merida"),
-(5024, 1232, "M", "Miranda"),
-(5025, 1232, "N", "Monagas"),
-(5026, 1232, "O", "Nueva Esparta"),
-(5027, 1232, "P", "Portuguesa"),
-(5028, 1232, "S", "Tachira"),
-(5029, 1232, "T", "Trujillo"),
-(5030, 1232, "X", "Vargas"),
-(5031, 1232, "U", "Yaracuy"),
-(5032, 1232, "V", "Zulia"),
-(5033, 1232, "Y", "Delta Amacuro"),
-(5034, 1232, "W", "Dependencias Federales"),
-(5035, 1233, "44", "An Giang"),
-(5036, 1233, "43", "Ba Ria - Vung Tau"),
-(5037, 1233, "53", "Bac Can"),
-(5038, 1233, "54", "Bac Giang"),
-(5039, 1233, "55", "Bac Lieu"),
-(5040, 1233, "56", "Bac Ninh"),
-(5041, 1233, "50", "Ben Tre"),
-(5042, 1233, "31", "Binh Dinh"),
-(5043, 1233, "57", "Binh Duong"),
-(5044, 1233, "58", "Binh Phuoc"),
-(5045, 1233, "40", "Binh Thuan"),
-(5046, 1233, "59", "Ca Mau"),
-(5047, 1233, "48", "Can Tho"),
-(5048, 1233, "04", "Cao Bang"),
-(5049, 1233, "60", "Da Nang, thanh pho"),
-(5050, 1233, "39", "Dong Nai"),
-(5051, 1233, "45", "Dong Thap"),
-(5052, 1233, "30", "Gia Lai"),
-(5053, 1233, "03", "Ha Giang"),
-(5054, 1233, "63", "Ha Nam"),
-(5055, 1233, "64", "Ha Noi, thu do"),
-(5056, 1233, "15", "Ha Tay"),
-(5057, 1233, "23", "Ha Tinh"),
-(5058, 1233, "61", "Hai Duong"),
-(5059, 1233, "62", "Hai Phong, thanh pho"),
-(5060, 1233, "14", "Hoa Binh"),
-(5061, 1233, "65", "Ho Chi Minh, thanh pho [Sai Gon]"),
-(5062, 1233, "66", "Hung Yen"),
-(5063, 1233, "34", "Khanh Hoa"),
-(5064, 1233, "47", "Kien Giang"),
-(5065, 1233, "28", "Kon Tum"),
-(5066, 1233, "01", "Lai Chau"),
-(5067, 1233, "35", "Lam Dong"),
-(5068, 1233, "09", "Lang Son"),
-(5069, 1233, "02", "Lao Cai"),
-(5070, 1233, "41", "Long An"),
-(5071, 1233, "67", "Nam Dinh"),
-(5072, 1233, "22", "Nghe An"),
-(5073, 1233, "18", "Ninh Binh"),
-(5074, 1233, "36", "Ninh Thuan"),
-(5075, 1233, "68", "Phu Tho"),
-(5076, 1233, "32", "Phu Yen"),
-(5077, 1233, "24", "Quang Binh"),
-(5078, 1233, "27", "Quang Nam"),
-(5079, 1233, "29", "Quang Ngai"),
-(5080, 1233, "13", "Quang Ninh"),
-(5081, 1233, "25", "Quang Tri"),
-(5082, 1233, "52", "Soc Trang"),
-(5083, 1233, "05", "Son La"),
-(5084, 1233, "37", "Tay Ninh"),
-(5085, 1233, "20", "Thai Binh"),
-(5086, 1233, "69", "Thai Nguyen"),
-(5087, 1233, "21", "Thanh Hoa"),
-(5088, 1233, "26", "Thua Thien-Hue"),
-(5089, 1233, "46", "Tien Giang"),
-(5090, 1233, "51", "Tra Vinh"),
-(5091, 1233, "07", "Tuyen Quang"),
-(5092, 1233, "49", "Vinh Long"),
-(5093, 1233, "70", "Vinh Phuc"),
-(5094, 1233, "06", "Yen Bai"),
-(5095, 1231, "MAP", "Malampa"),
-(5096, 1231, "PAM", "Penama"),
-(5097, 1231, "SAM", "Sanma"),
-(5098, 1231, "SEE", "Shefa"),
-(5099, 1231, "TAE", "Tafea"),
-(5100, 1231, "TOB", "Torba"),
-(5101, 1185, "AA", "A\'ana"),
-(5102, 1185, "AL", "Aiga-i-le-Tai"),
-(5103, 1185, "AT", "Atua"),
-(5104, 1185, "FA", "Fa\'aaaleleaga"),
-(5105, 1185, "GE", "Gaga\'emauga"),
-(5106, 1185, "GI", "Gagaifomauga"),
-(5107, 1185, "PA", "Palauli"),
-(5108, 1185, "SA", "Satupa\'itea"),
-(5109, 1185, "TU", "Tuamasaga"),
-(5110, 1185, "VF", "Va\'a-o-Fonoti"),
-(5111, 1185, "VS", "Vaisigano"),
-(5112, 1243, "CG", "Crna Gora"),
-(5113, 1242, "SR", "Srbija"),
-(5114, 1242, "KM", "Kosovo-Metohija"),
-(5115, 1242, "VO", "Vojvodina"),
-(5116, 1237, "AB", "Abyan"),
-(5117, 1237, "AD", "Adan"),
-(5118, 1237, "DA", "Ad Dali"),
-(5119, 1237, "BA", "Al Bayda\'"),
-(5120, 1237, "MU", "Al Hudaydah"),
-(5121, 1237, "MR", "Al Mahrah"),
-(5122, 1237, "MW", "Al Mahwit"),
-(5123, 1237, "AM", "Amran"),
-(5124, 1237, "DH", "Dhamar"),
-(5125, 1237, "HD", "Hadramawt"),
-(5126, 1237, "HJ", "Hajjah"),
-(5127, 1237, "IB", "Ibb"),
-(5128, 1237, "LA", "Lahij"),
-(5129, 1237, "MA", "Ma\'rib"),
-(5130, 1237, "SD", "Sa\'dah"),
-(5131, 1237, "SN", "San\'a\'"),
-(5132, 1237, "SH", "Shabwah"),
-(5133, 1237, "TA", "Ta\'izz"),
-(5134, 1196, "EC", "Eastern Cape"),
-(5135, 1196, "FS", "Free State"),
-(5136, 1196, "GT", "Gauteng"),
-(5137, 1196, "NL", "Kwazulu-Natal"),
-(5138, 1196, "MP", "Mpumalanga"),
-(5139, 1196, "NC", "Northern Cape"),
-(5140, 1196, "NP", "Limpopo"),
-(5141, 1196, "WC", "Western Cape"),
-(5142, 1239, "08", "Copperbelt"),
-(5143, 1239, "04", "Luapula"),
-(5144, 1239, "09", "Lusaka"),
-(5145, 1239, "06", "North-Western"),
-(5146, 1240, "BU", "Bulawayo"),
-(5147, 1240, "HA", "Harare"),
-(5148, 1240, "MA", "Manicaland"),
-(5149, 1240, "MC", "Mashonaland Central"),
-(5150, 1240, "ME", "Mashonaland East"),
-(5151, 1240, "MW", "Mashonaland West"),
-(5152, 1240, "MV", "Masvingo"),
-(5153, 1240, "MN", "Matabeleland North"),
-(5154, 1240, "MS", "Matabeleland South"),
-(5155, 1240, "MI", "Midlands"),
-(5156, 1075, "SK", "South Karelia"),
-(5157, 1075, "SO", "South Ostrobothnia"),
-(5158, 1075, "ES", "Etelä-Savo"),
-(5159, 1075, "HH", "Häme"),
-(5160, 1075, "IU", "Itä-Uusimaa"),
-(5161, 1075, "KA", "Kainuu"),
-(5162, 1075, "CO", "Central Ostrobothnia"),
-(5163, 1075, "CF", "Central Finland"),
-(5164, 1075, "KY", "Kymenlaakso"),
-(5165, 1075, "LA", "Lapland"),
-(5166, 1075, "TR", "Tampere Region"),
-(5167, 1075, "OB", "Ostrobothnia"),
-(5168, 1075, "NK", "North Karelia"),
-(5169, 1075, "NO", "Northern Ostrobothnia"),
-(5170, 1075, "NS", "Northern Savo"),
-(5171, 1075, "PH", "Päijät-Häme"),
-(5172, 1075, "SK", "Satakunta"),
-(5173, 1075, "UM", "Uusimaa"),
-(5174, 1075, "SW", "South-West Finland"),
-(5175, 1075, "AL", "Ã…land"),
-(5176, 1152, "LI", "Limburg"),
-(5177, 1098, "CW", "Central and Western"),
-(5178, 1098, "EA", "Eastern"),
-(5179, 1098, "SO", "Southern"),
-(5180, 1098, "WC", "Wan Chai"),
-(5181, 1098, "KC", "Kowloon City"),
-(5182, 1098, "KU", "Kwun Tong"),
-(5183, 1098, "SS", "Sham Shui Po"),
-(5184, 1098, "WT", "Wong Tai Sin"),
-(5185, 1098, "YT", "Yau Tsim Mong"),
-(5186, 1098, "IS", "Islands"),
-(5187, 1098, "KI", "Kwai Tsing"),
-(5188, 1098, "NO", "North"),
-(5189, 1098, "SK", "Sai Kung"),
-(5190, 1098, "ST", "Sha Tin"),
-(5191, 1098, "TP", "Tai Po"),
-(5192, 1098, "TW", "Tsuen Wan"),
-(5193, 1098, "TM", "Tuen Mun"),
-(5194, 1098, "YL", "Yuen Long"),
-(5195, 1108, "MR", "Manchester"),
-(5196, 1016, "13", "Al Manāmah (Al ‘Āşimah)"),
-(5197, 1016, "14", "Al Janūbīyah"),
--- (5198, 1016, "15", "Al Muḩarraq"), -- conflicts with id 1872, Al Muharraq
-(5199, 1016, "16", "Al Wusţá"),
-(5200, 1016, "17", "Ash Shamālīyah"),
-
+(1074, "E", "Eastern"),
+(1074, "N", "Northern"),
+(1074, "W", "Western"),
+(1074, "R", "Rotuma"),
+(1074, "C", "Central"),
+(1141, "TRK", "Chuuk"),
+(1141, "KSA", "Kosrae"),
+(1141, "PNI", "Pohnpei"),
+(1141, "YAP", "Yap"),
+(1076, "01", "Ain"),
+(1076, "02", "Aisne"),
+(1076, "03", "Allier"),
+(1076, "04", "Alpes-de-Haute-Provence"),
+(1076, "06", "Alpes-Maritimes"),
+(1076, "07", "Ardèche"),
+(1076, "08", "Ardennes"),
+(1076, "09", "Ariège"),
+(1076, "10", "Aube"),
+(1076, "11", "Aude"),
+(1076, "12", "Aveyron"),
+(1076, "67", "Bas-Rhin"),
+(1076, "13", "Bouches-du-Rhône"),
+(1076, "14", "Calvados"),
+(1076, "15", "Cantal"),
+(1076, "16", "Charente"),
+(1076, "17", "Charente-Maritime"),
+(1076, "18", "Cher"),
+(1076, "19", "Corrèze"),
+(1076, "20A", "Corse-du-Sud"),
+(1076, "21", "Côte-d\'Or"),
+(1076, "22", "Côtes-d\'Armor"),
+(1076, "23", "Creuse"),
+(1076, "79", "Deux-Sèvres"),
+(1076, "24", "Dordogne"),
+(1076, "25", "Doubs"),
+(1076, "26", "Drôme"),
+(1076, "91", "Essonne"),
+(1076, "27", "Eure"),
+(1076, "28", "Eure-et-Loir"),
+(1076, "29", "Finistère"),
+(1076, "30", "Gard"),
+(1076, "32", "Gers"),
+(1076, "33", "Gironde"),
+(1076, "68", "Haut-Rhin"),
+(1076, "20B", "Haute-Corse"),
+(1076, "31", "Haute-Garonne"),
+(1076, "43", "Haute-Loire"),
+(1076, "70", "Haute-Saône"),
+(1076, "74", "Haute-Savoie"),
+(1076, "87", "Haute-Vienne"),
+(1076, "05", "Hautes-Alpes"),
+(1076, "65", "Hautes-Pyrénées"),
+(1076, "92", "Hauts-de-Seine"),
+(1076, "34", "Hérault"),
+(1076, "36", "Indre"),
+(1076, "35", "Ille-et-Vilaine"),
+(1076, "37", "Indre-et-Loire"),
+(1076, "38", "Isère"),
+(1076, "40", "Landes"),
+(1076, "41", "Loir-et-Cher"),
+(1076, "42", "Loire"),
+(1076, "44", "Loire-Atlantique"),
+(1076, "45", "Loiret"),
+(1076, "46", "Lot"),
+(1076, "47", "Lot-et-Garonne"),
+(1076, "48", "Lozère"),
+(1076, "49", "Maine-et-Loire"),
+(1076, "50", "Manche"),
+(1076, "51", "Marne"),
+(1076, "53", "Mayenne"),
+(1076, "54", "Meurthe-et-Moselle"),
+(1076, "55", "Meuse"),
+(1076, "56", "Morbihan"),
+(1076, "57", "Moselle"),
+(1076, "58", "Nièvre"),
+(1076, "59", "Nord"),
+(1076, "60", "Oise"),
+(1076, "61", "Orne"),
+(1076, "75", "Paris"),
+(1076, "62", "Pas-de-Calais"),
+(1076, "63", "Puy-de-Dôme"),
+(1076, "64", "Pyrénées-Atlantiques"),
+(1076, "66", "Pyrénées-Orientales"),
+(1076, "69", "Rhône"),
+(1076, "71", "Saône-et-Loire"),
+(1076, "72", "Sarthe"),
+(1076, "73", "Savoie"),
+(1076, "77", "Seine-et-Marne"),
+(1076, "76", "Seine-Maritime"),
+(1076, "93", "Seine-Saint-Denis"),
+(1076, "80", "Somme"),
+(1076, "81", "Tarn"),
+(1076, "82", "Tarn-et-Garonne"),
+(1076, "95", "Val d\'Oise"),
+(1076, "90", "Territoire de Belfort"),
+(1076, "94", "Val-de-Marne"),
+(1076, "83", "Var"),
+(1076, "84", "Vaucluse"),
+(1076, "85", "Vendée"),
+(1076, "86", "Vienne"),
+(1076, "88", "Vosges"),
+(1076, "89", "Yonne"),
+(1076, "78", "Yvelines"),
+(1076, "GP", "Guadeloupe"),
+(1076, "MQ", "Martinique"),
+(1076, "GF", "Guyane"),
+(1076, "RE", "La Réunion"),
+(1076, "YT", "Mayotte"),
+(1076, "WF", "Wallis-et-Futuna"),
+(1076, "NC", "Nouvelle-Calédonie"),
+(1076, "52", "Haute-Marne"),
+(1076, "39", "Jura"),
+(1226, "ABE", "Aberdeen City"),
+(1226, "ABD", "Aberdeenshire"),
+(1226, "ANS", "Angus"),
+(1226, "ANT", "Co Antrim"),
+(1226, "AGB", "Argyll and Bute"),
+(1226, "ARM", "Co Armagh"),
+(1226, "BDF", "Bedfordshire"),
+(1226, "BGW", "Blaenau Gwent"),
+(1226, "BST", "Bristol, City of"),
+(1226, "BKM", "Buckinghamshire"),
+(1226, "CAM", "Cambridgeshire"),
+(1226, "CHS", "Cheshire"),
+(1226, "CLK", "Clackmannanshire"),
+(1226, "CON", "Cornwall"),
+(1226, "CMA", "Cumbria"),
+(1226, "DBY", "Derbyshire"),
+(1226, "DRY", "Co Londonderry"),
+(1226, "DEV", "Devon"),
+(1226, "DOR", "Dorset"),
+(1226, "DOW", "Co Down"),
+(1226, "DGY", "Dumfries and Galloway"),
+(1226, "DND", "Dundee City"),
+(1226, "DUR", "County Durham"),
+(1226, "EAY", "East Ayrshire"),
+(1226, "EDU", "East Dunbartonshire"),
+(1226, "ELN", "East Lothian"),
+(1226, "ERW", "East Renfrewshire"),
+(1226, "ERY", "East Riding of Yorkshire"),
+(1226, "ESX", "East Sussex"),
+(1226, "EDH", "Edinburgh, City of"),
+(1226, "ELS", "Na h-Eileanan Siar"),
+(1226, "ESS", "Essex"),
+(1226, "FAL", "Falkirk"),
+(1226, "FER", "Co Fermanagh"),
+(1226, "FIF", "Fife"),
+(1226, "GLG", "Glasgow City"),
+(1226, "GLS", "Gloucestershire"),
+(1226, "GWN", "Gwynedd"),
+(1226, "HAM", "Hampshire"),
+(1226, "HEF", "Herefordshire"),
+(1226, "HRT", "Hertfordshire"),
+(1226, "HED", "Highland"),
+(1226, "IVC", "Inverclyde"),
+(1226, "IOW", "Isle of Wight"),
+(1226, "KEN", "Kent"),
+(1226, "LAN", "Lancashire"),
+(1226, "LEC", "Leicestershire"),
+(1226, "LIN", "Lincolnshire"),
+(1226, "MLN", "Midlothian"),
+(1226, "MRY", "Moray"),
+(1226, "NFK", "Norfolk"),
+(1226, "NAY", "North Ayrshire"),
+(1226, "NLK", "North Lanarkshire"),
+(1226, "NYK", "North Yorkshire"),
+(1226, "NTH", "Northamptonshire"),
+(1226, "NBL", "Northumberland"),
+(1226, "NTT", "Nottinghamshire"),
+(1226, "OLD", "Oldham"),
+(1226, "OMH", "Omagh"),
+(1226, "ORR", "Orkney Islands"),
+(1226, "OXF", "Oxfordshire"),
+(1226, "PKN", "Perth and Kinross"),
+(1226, "POW", "Powys"),
+(1226, "RFW", "Renfrewshire"),
+(1226, "RUT", "Rutland"),
+(1226, "SCB", "Scottish Borders"),
+(1226, "ZET", "Shetland Islands"),
+(1226, "SHR", "Shropshire"),
+(1226, "SOM", "Somerset"),
+(1226, "SAY", "South Ayrshire"),
+(1226, "SGC", "South Gloucestershire"),
+(1226, "SLK", "South Lanarkshire"),
+(1226, "STS", "Staffordshire"),
+(1226, "STG", "Stirling"),
+(1226, "SFK", "Suffolk"),
+(1226, "SRY", "Surrey"),
+(1226, "VGL", "Vale of Glamorgan, The"),
+(1226, "WAR", "Warwickshire"),
+(1226, "WDU", "West Dunbartonshire"),
+(1226, "WLN", "West Lothian"),
+(1226, "WSX", "West Sussex"),
+(1226, "WIL", "Wiltshire"),
+(1226, "WOR", "Worcestershire"),
+(1226, "ANN", "Antrim and Newtownabbey"),
+(1226, "AND", "Ards and North Down"),
+(1226, "ABC", "Armagh City, Banbridge and Craigavon"),
+(1226, "BFS", "Belfast"),
+(1226, "CCG", "Causeway Coast and Glens"),
+(1226, "DRS", "Derry City and Strabane"),
+(1226, "FMO", "Fermanagh and Omagh"),
+(1226, "LBC", "Lisburn and Castlereagh"),
+(1226, "MEA", "Mid and East Antrim"),
+(1226, "MUL", "Mid Ulster"),
+(1226, "NMD", "Newry, Mourne and Down"),
+(1226, "BGE", "Bridgend"),
+(1226, "CAY", "Caerphilly"),
+(1226, "CRF", "Cardiff"),
+(1226, "CMN", "Carmarthenshire"),
+(1226, "CGN", "Ceredigion"),
+(1226, "CWY", "Conwy"),
+(1226, "DEN", "Denbighshire"),
+(1226, "FLN", "Flintshire"),
+(1226, "AGY", "Isle of Anglesey"),
+(1226, "MTY", "Merthyr Tydfil"),
+(1226, "NTL", "Neath Port Talbot"),
+(1226, "NWP", "Newport"),
+(1226, "PEM", "Pembrokeshire"),
+(1226, "RCT", "Rhondda, Cynon, Taff"),
+(1226, "SWA", "Swansea"),
+(1226, "TOF", "Torfaen"),
+(1226, "WRX", "Wrexham"),
+(1226, "MON", "Monmouthshire"),
+(1226, "TWR", "Tyne and Wear"),
+(1226, "GTM", "Greater Manchester"),
+(1226, "TYR", "Co Tyrone"),
+(1226, "WYK", "West Yorkshire"),
+(1226, "SYK", "South Yorkshire"),
+(1226, "MSY", "Merseyside"),
+(1226, "BRK", "Berkshire"),
+(1226, "WMD", "West Midlands"),
+(1226, "WGM", "West Glamorgan"),
+(1226, "LON", "London"),
+(1226, "CWD", "Clwyd"),
+(1226, "SGM", "South Glamorgan"),
+(1083, "AH", "Ashanti"),
+(1083, "BA", "Brong-Ahafo"),
+(1083, "AA", "Greater Accra"),
+(1083, "UE", "Upper East"),
+(1083, "UW", "Upper West"),
+(1083, "TV", "Volta"),
+(1083, "CP", "Central"),
+(1083, "EP", "Eastern"),
+(1083, "NP", "Northern"),
+(1083, "WP", "Western"),
+(1213, "B", "Banjul"),
+(1213, "L", "Lower River"),
+(1213, "M", "MacCarthy Island"),
+(1213, "N", "North Bank"),
+(1213, "U", "Upper River"),
+(1091, "BE", "Beyla"),
+(1091, "BF", "Boffa"),
+(1091, "BK", "Boke"),
+(1091, "CO", "Coyah"),
+(1091, "DB", "Dabola"),
+(1091, "DL", "Dalaba"),
+(1091, "DI", "Dinguiraye"),
+(1091, "DU", "Dubreka"),
+(1091, "FA", "Faranah"),
+(1091, "FO", "Forecariah"),
+(1091, "FR", "Fria"),
+(1091, "GA", "Gaoual"),
+(1091, "GU", "Guekedou"),
+(1091, "KA", "Kankan"),
+(1091, "KE", "Kerouane"),
+(1091, "KD", "Kindia"),
+(1091, "KS", "Kissidougou"),
+(1091, "KB", "Koubia"),
+(1091, "KN", "Koundara"),
+(1091, "KO", "Kouroussa"),
+(1091, "LA", "Labe"),
+(1091, "LE", "Lelouma"),
+(1091, "LO", "Lola"),
+(1091, "MC", "Macenta"),
+(1091, "ML", "Mali"),
+(1091, "MM", "Mamou"),
+(1091, "MD", "Mandiana"),
+(1091, "NZ", "Nzerekore"),
+(1091, "PI", "Pita"),
+(1091, "SI", "Siguiri"),
+(1091, "TE", "Telimele"),
+(1091, "TO", "Tougue"),
+(1091, "YO", "Yomou"),
+(1067, "C", "Region Continental"),
+(1067, "I", "Region Insular"),
+(1067, "AN", "Annobon"),
+(1067, "BN", "Bioko Norte"),
+(1067, "BS", "Bioko Sur"),
+(1067, "CS", "Centro Sur"),
+(1067, "KN", "Kie-Ntem"),
+(1067, "LI", "Litoral"),
+(1067, "WN", "Wele-Nzas"),
+(1085, "13", "Achaïa"),
+(1085, "01", "Aitolia-Akarnania"),
+(1085, "11", "Argolis"),
+(1085, "12", "Arkadia"),
+(1085, "31", "Arta"),
+(1085, "A1", "Attiki"),
+(1085, "64", "Chalkidiki"),
+(1085, "94", "Chania"),
+(1085, "85", "Chios"),
+(1085, "81", "Dodekanisos"),
+(1085, "52", "Drama"),
+(1085, "71", "Evros"),
+(1085, "05", "Evrytania"),
+(1085, "04", "Evvoia"),
+(1085, "63", "Florina"),
+(1085, "07", "Fokis"),
+(1085, "06", "Fthiotis"),
+(1085, "51", "Grevena"),
+(1085, "14", "Ileia"),
+(1085, "53", "Imathia"),
+(1085, "33", "Ioannina"),
+(1085, "91", "Irakleion"),
+(1085, "41", "Karditsa"),
+(1085, "56", "Kastoria"),
+(1085, "55", "Kavalla"),
+(1085, "23", "Kefallinia"),
+(1085, "22", "Kerkyra"),
+(1085, "57", "Kilkis"),
+(1085, "15", "Korinthia"),
+(1085, "58", "Kozani"),
+(1085, "82", "Kyklades"),
+(1085, "16", "Lakonia"),
+(1085, "42", "Larisa"),
+(1085, "92", "Lasithion"),
+(1085, "24", "Lefkas"),
+(1085, "83", "Lesvos"),
+(1085, "43", "Magnisia"),
+(1085, "17", "Messinia"),
+(1085, "59", "Pella"),
+(1085, "34", "Preveza"),
+(1085, "93", "Rethymnon"),
+(1085, "73", "Rodopi"),
+(1085, "84", "Samos"),
+(1085, "62", "Serrai"),
+(1085, "32", "Thesprotia"),
+(1085, "54", "Thessaloniki"),
+(1085, "44", "Trikala"),
+(1085, "03", "Voiotia"),
+(1085, "72", "Xanthi"),
+(1085, "21", "Zakynthos"),
+(1085, "69", "Agio Oros"),
+(1085, "61", "Pieria"),
+(1090, "AV", "Alta Verapaz"),
+(1090, "BV", "Baja Verapaz"),
+(1090, "CM", "Chimaltenango"),
+(1090, "CQ", "Chiquimula"),
+(1090, "PR", "El Progreso"),
+(1090, "ES", "Escuintla"),
+(1090, "GU", "Guatemala"),
+(1090, "HU", "Huehuetenango"),
+(1090, "IZ", "Izabal"),
+(1090, "JA", "Jalapa"),
+(1090, "JU", "Jutiapa"),
+(1090, "PE", "Peten"),
+(1090, "QZ", "Quetzaltenango"),
+(1090, "QC", "Quiche"),
+(1090, "RE", "Retalhuleu"),
+(1090, "SA", "Sacatepequez"),
+(1090, "SM", "San Marcos"),
+(1090, "SR", "Santa Rosa"),
+(1090, "SO", "Sololá"),
+(1090, "SU", "Suchitepequez"),
+(1090, "TO", "Totonicapan"),
+(1090, "ZA", "Zacapa"),
+(1092, "BS", "Bissau"),
+(1092, "BA", "Bafata"),
+(1092, "BM", "Biombo"),
+(1092, "BL", "Bolama"),
+(1092, "CA", "Cacheu"),
+(1092, "GA", "Gabu"),
+(1092, "OI", "Oio"),
+(1092, "QU", "Quloara"),
+(1092, "TO", "Tombali S"),
+(1093, "BA", "Barima-Waini"),
+(1093, "CU", "Cuyuni-Mazaruni"),
+(1093, "DE", "Demerara-Mahaica"),
+(1093, "EB", "East Berbice-Corentyne"),
+(1093, "ES", "Essequibo Islands-West Demerara"),
+(1093, "MA", "Mahaica-Berbice"),
+(1093, "PM", "Pomeroon-Supenaam"),
+(1093, "PT", "Potaro-Siparuni"),
+(1093, "UD", "Upper Demerara-Berbice"),
+(1093, "UT", "Upper Takutu-Upper Essequibo"),
+(1097, "AT", "Atlantida"),
+(1097, "CL", "Colon"),
+(1097, "CM", "Comayagua"),
+(1097, "CP", "Copan"),
+(1097, "CR", "Cortes"),
+(1097, "CH", "Choluteca"),
+(1097, "EP", "El Paraiso"),
+(1097, "FM", "Francisco Morazan"),
+(1097, "GD", "Gracias a Dios"),
+(1097, "IN", "Intibuca"),
+(1097, "IB", "Islas de la Bahia"),
+(1097, "LE", "Lempira"),
+(1097, "OC", "Ocotepeque"),
+(1097, "OL", "Olancho"),
+(1097, "SB", "Santa Barbara"),
+(1097, "VA", "Valle"),
+(1097, "YO", "Yoro"),
+(1097, "LP", "La Paz"),
+(1055, "07", "Bjelovarsko-bilogorska zupanija"),
+(1055, "12", "Brodsko-posavska zupanija"),
+(1055, "19", "Dubrovacko-neretvanska zupanija"),
+(1055, "18", "Istarska zupanija"),
+(1055, "04", "Karlovacka zupanija"),
+(1055, "06", "Koprivnickco-krizevacka zupanija"),
+(1055, "02", "Krapinako-zagorska zupanija"),
+(1055, "09", "Licko-senjska zupanija"),
+(1055, "20", "Medimurska zupanija"),
+(1055, "14", "Osjecko-baranjska zupanija"),
+(1055, "11", "Pozesko-slavonska zupanija"),
+(1055, "08", "Primorsko-goranska zupanija"),
+(1055, "03", "Sisacko-moelavacka Iupanija"),
+(1055, "17", "Splitako-dalmatinska zupanija"),
+(1055, "15", "Sibenako-kninska zupanija"),
+(1055, "05", "Varaidinska zupanija"),
+(1055, "10", "VirovitiEko-podravska zupanija"),
+(1055, "16", "VuRovarako-srijemska zupanija"),
+(1055, "13", "Zadaraka"),
+(1055, "01", "Zagrebacka zupanija"),
+(1094, "GA", "Grande-Anse"),
+(1094, "NE", "Nord-Est"),
+(1094, "NO", "Nord-Ouest"),
+(1094, "OU", "Ouest"),
+(1094, "SD", "Sud"),
+(1094, "SE", "Sud-Est"),
+(1094, "AR", "Artibonite"),
+(1094, "CE", "Centre"),
+(1094, "NI", "Nippes"),
+(1094, "ND", "Nord"),
+(1099, "BU", "Budapest"),
+(1099, "BK", "Bács-Kiskun"),
+(1099, "BA", "Baranya"),
+(1099, "BE", "Békés"),
+(1099, "BZ", "Borsod-Abaúj-Zemplén"),
+(1099, "CS", "Csongrád"),
+(1099, "FE", "Fejér"),
+(1099, "GS", "Győr-Moson-Sopron"),
+(1099, "HB", "Hajdu-Bihar"),
+(1099, "HE", "Heves"),
+(1099, "JN", "Jász-Nagykun-Szolnok"),
+(1099, "KE", "Komárom-Esztergom"),
+(1099, "NO", "Nográd"),
+(1099, "PE", "Pest"),
+(1099, "SO", "Somogy"),
+(1099, "SZ", "Szabolcs-Szatmár-Bereg"),
+(1099, "TO", "Tolna"),
+(1099, "VA", "Vas"),
+(1099, "VE", "Veszprém"),
+(1099, "ZA", "Zala"),
+(1099, "BC", "Békéscsaba"),
+(1099, "DE", "Debrecen"),
+(1099, "DU", "Dunaújváros"),
+(1099, "EG", "Eger"),
+(1099, "GY", "Győr"),
+(1099, "HV", "Hódmezővásárhely"),
+(1099, "KV", "Kaposvár"),
+(1099, "KM", "Kecskemét"),
+(1099, "MI", "Miskolc"),
+(1099, "NK", "Nagykanizsa"),
+(1099, "NY", "Nyiregyháza"),
+(1099, "PS", "Pécs"),
+(1099, "ST", "Salgótarján"),
+(1099, "SN", "Sopron"),
+(1099, "SD", "Szeged"),
+(1099, "SF", "Székesfehérvár"),
+(1099, "SS", "Szekszárd"),
+(1099, "SK", "Szolnok"),
+(1099, "SH", "Szombathely"),
+(1099, "TB", "Tatabánya"),
+(1099, "ZE", "Zalaegerszeg"),
+(1102, "BA", "Bali"),
+(1102, "BB", "Kepulauan Bangka Belitung"),
+(1102, "BT", "Banten"),
+(1102, "BE", "Bengkulu"),
+(1102, "GO", "Gorontalo"),
+(1102, "PB", "Papua Barat"),
+(1102, "JA", "Jambi"),
+(1102, "JB", "Jawa Barat"),
+(1102, "JT", "Jawa Tengah"),
+(1102, "JI", "Jawa Timur"),
+(1102, "KB", "Kalimantan Barat"),
+(1102, "KI", "Kalimantan Timur"),
+(1102, "KS", "Kalimantan Selatan"),
+(1102, "KR", "Kepulauan Riau"),
+(1102, "LA", "Lampung"),
+(1102, "MA", "Maluku"),
+(1102, "MU", "Maluku Utara"),
+(1102, "NB", "Nusa Tenggara Barat"),
+(1102, "NT", "Nusa Tenggara Timur"),
+(1102, "PA", "Papua"),
+(1102, "RI", "Riau"),
+(1102, "SN", "Sulawesi Selatan"),
+(1102, "ST", "Sulawesi Tengah"),
+(1102, "SG", "Sulawesi Tenggara"),
+(1102, "SA", "Sulawesi Utara"),
+(1102, "SB", "Sumatra Barat"),
+(1102, "SS", "Sumatra Selatan"),
+(1102, "SU", "Sumatera Utara"),
+(1102, "JK", "DKI Jakarta"),
+(1102, "AC", "Aceh"),
+(1102, "YO", "DI Yogyakarta"),
+(1102, "KT", "Kalimantan Tengah"),
+(1102, "SR", "Sulawesi Barat"),
+(1102, "KU", "Kalimantan Utara"),
+(1105, "C", "Cork"),
+(1105, "CE", "Clare"),
+(1105, "CN", "Cavan"),
+(1105, "CW", "Carlow"),
+(1105, "D", "Dublin"),
+(1105, "DL", "Donegal"),
+(1105, "G", "Galway"),
+(1105, "KE", "Kildare"),
+(1105, "KK", "Kilkenny"),
+(1105, "KY", "Kerry"),
+(1105, "LD", "Longford"),
+(1105, "LH", "Louth"),
+(1105, "LK", "Limerick"),
+(1105, "LM", "Leitrim"),
+(1105, "LS", "Laois"),
+(1105, "MH", "Meath"),
+(1105, "MN", "Monaghan"),
+(1105, "MO", "Mayo"),
+(1105, "OY", "Offaly"),
+(1105, "RN", "Roscommon"),
+(1105, "SO", "Sligo"),
+(1105, "TA", "Tipperary"),
+(1105, "WD", "Waterford"),
+(1105, "WH", "Westmeath"),
+(1105, "WW", "Wicklow"),
+(1105, "WX", "Wexford"),
+(1106, "D", "HaDarom"),
+(1106, "M", "HaMerkaz"),
+(1106, "Z", "HaZafon"),
+(1106, "HA", "Haifa"),
+(1106, "TA", "Tel-Aviv"),
+(1106, "JM", "Jerusalem"),
+(1104, "AN", "Al Anbar"),
+(1104, "BA", "Al Ba,rah"),
+(1104, "MU", "Al Muthanna"),
+(1104, "QA", "Al Qadisiyah"),
+(1104, "NA", "An Najef"),
+(1104, "AR", "Arbil"),
+(1104, "SW", "As Sulaymaniyah"),
+(1104, "TS", "At Ta\'mim"),
+(1104, "BB", "Babil"),
+(1104, "BG", "Baghdad"),
+(1104, "DA", "Dahuk"),
+(1104, "DQ", "Dhi Qar"),
+(1104, "DI", "Diyala"),
+(1104, "KA", "Karbala\'"),
+(1104, "MA", "Maysan"),
+(1104, "NI", "Ninawa"),
+(1104, "SD", "Salah ad Din"),
+(1104, "WA", "Wasit"),
+(1103, "03", "Ardabil"),
+(1103, "02", "Azarbayjan-e Gharbi"),
+(1103, "01", "Azarbayjan-e Sharqi"),
+(1103, "06", "Bushehr"),
+(1103, "08", "Chahar Mahall va Bakhtiari"),
+(1103, "04", "Esfahan"),
+(1103, "14", "Fars"),
+(1103, "19", "Gilan"),
+(1103, "27", "Golestan"),
+(1103, "24", "Hamadan"),
+(1103, "23", "Hormozgan"),
+(1103, "05", "Iiam"),
+(1103, "15", "Kerman"),
+(1103, "17", "Kermanshah"),
+(1103, "09", "Khorasan"),
+(1103, "10", "Khuzestan"),
+(1103, "18", "Kohjiluyeh va Buyer Ahmad"),
+(1103, "16", "Kordestan"),
+(1103, "20", "Lorestan"),
+(1103, "22", "Markazi"),
+(1103, "21", "Mazandaran"),
+(1103, "28", "Qazvin"),
+(1103, "26", "Qom"),
+(1103, "12", "Semnan"),
+(1103, "13", "Sistan va Baluchestan"),
+(1103, "07", "Tehran"),
+(1103, "25", "Yazd"),
+(1103, "11", "Zanjan"),
+(1100, "7", "Austurland"),
+(1100, "1", "Hofuoborgarsvaeoi utan Reykjavikur"),
+(1100, "6", "Norourland eystra"),
+(1100, "5", "Norourland vestra"),
+(1100, "0", "Reykjavik"),
+(1100, "8", "Suourland"),
+(1100, "2", "Suournes"),
+(1100, "4", "Vestfirolr"),
+(1100, "3", "Vesturland"),
+(1107, "AG", "Agrigento"),
+(1107, "AL", "Alessandria"),
+(1107, "AN", "Ancona"),
+(1107, "AO", "Aosta"),
+(1107, "AR", "Arezzo"),
+(1107, "AP", "Ascoli Piceno"),
+(1107, "AT", "Asti"),
+(1107, "AV", "Avellino"),
+(1107, "BA", "Bari"),
+(1107, "BL", "Belluno"),
+(1107, "BN", "Benevento"),
+(1107, "BG", "Bergamo"),
+(1107, "BI", "Biella"),
+(1107, "BO", "Bologna"),
+(1107, "BZ", "Bolzano"),
+(1107, "BS", "Brescia"),
+(1107, "BR", "Brindisi"),
+(1107, "CA", "Cagliari"),
+(1107, "CL", "Caltanissetta"),
+(1107, "CB", "Campobasso"),
+(1107, "CE", "Caserta"),
+(1107, "CT", "Catania"),
+(1107, "CZ", "Catanzaro"),
+(1107, "CH", "Chieti"),
+(1107, "CO", "Como"),
+(1107, "CS", "Cosenza"),
+(1107, "CR", "Cremona"),
+(1107, "KR", "Crotone"),
+(1107, "CN", "Cuneo"),
+(1107, "EN", "Enna"),
+(1107, "FE", "Ferrara"),
+(1107, "FI", "Firenze"),
+(1107, "FG", "Foggia"),
+(1107, "FC", "Forlì-Cesena"),
+(1107, "FR", "Frosinone"),
+(1107, "GE", "Genova"),
+(1107, "GO", "Gorizia"),
+(1107, "GR", "Grosseto"),
+(1107, "IM", "Imperia"),
+(1107, "IS", "Isernia"),
+(1107, "AQ", "L\'Aquila"),
+(1107, "SP", "La Spezia"),
+(1107, "LT", "Latina"),
+(1107, "LE", "Lecce"),
+(1107, "LC", "Lecco"),
+(1107, "LI", "Livorno"),
+(1107, "LO", "Lodi"),
+(1107, "LU", "Lucca"),
+(1107, "MC", "Macerata"),
+(1107, "MN", "Mantova"),
+(1107, "MS", "Massa-Carrara"),
+(1107, "MT", "Matera"),
+(1107, "ME", "Messina"),
+(1107, "MI", "Milano"),
+(1107, "MO", "Modena"),
+(1107, "NA", "Napoli"),
+(1107, "NO", "Novara"),
+(1107, "NU", "Nuoro"),
+(1107, "OR", "Oristano"),
+(1107, "PD", "Padova"),
+(1107, "PA", "Palermo"),
+(1107, "PR", "Parma"),
+(1107, "PV", "Pavia"),
+(1107, "PG", "Perugia"),
+(1107, "PU", "Pesaro e Urbino"),
+(1107, "PE", "Pescara"),
+(1107, "PC", "Piacenza"),
+(1107, "PI", "Pisa"),
+(1107, "PT", "Pistoia"),
+(1107, "PN", "Pordenone"),
+(1107, "PZ", "Potenza"),
+(1107, "PO", "Prato"),
+(1107, "RG", "Ragusa"),
+(1107, "RA", "Ravenna"),
+(1107, "RC", "Reggio Calabria"),
+(1107, "RE", "Reggio Emilia"),
+(1107, "RI", "Rieti"),
+(1107, "RN", "Rimini"),
+(1107, "RM", "Roma"),
+(1107, "RO", "Rovigo"),
+(1107, "SA", "Salerno"),
+(1107, "SS", "Sassari"),
+(1107, "SV", "Savona"),
+(1107, "SI", "Siena"),
+(1107, "SR", "Siracusa"),
+(1107, "SO", "Sondrio"),
+(1107, "TA", "Taranto"),
+(1107, "TE", "Teramo"),
+(1107, "TR", "Terni"),
+(1107, "TO", "Torino"),
+(1107, "TP", "Trapani"),
+(1107, "TN", "Trento"),
+(1107, "TV", "Treviso"),
+(1107, "TS", "Trieste"),
+(1107, "UD", "Udine"),
+(1107, "VA", "Varese"),
+(1107, "VE", "Venezia"),
+(1107, "VB", "Verbano-Cusio-Ossola"),
+(1107, "VC", "Vercelli"),
+(1107, "VR", "Verona"),
+(1107, "VV", "Vibo Valentia"),
+(1107, "VI", "Vicenza"),
+(1107, "VT", "Viterbo"),
+(1107, "BT", "Barletta-Andria-Trani"),
+(1107, "FM", "Fermo"),
+(1107, "MB", "Monza e Brianza"),
+(1107, "CI", "Carbonia-Iglesias"),
+(1107, "OT", "Olbia-Tempio"),
+(1107, "VS", "Medio Campidano"),
+(1107, "OG", "Ogliastra"),
+(1109, "23", "Aichi"),
+(1109, "05", "Akita"),
+(1109, "02", "Aomori"),
+(1109, "12", "Chiba"),
+(1109, "38", "Ehime"),
+(1109, "18", "Fukui"),
+(1109, "40", "Fukuoka"),
+(1109, "07", "Fukusima"),
+(1109, "21", "Gifu"),
+(1109, "10", "Gunma"),
+(1109, "34", "Hiroshima"),
+(1109, "01", "Hokkaido"),
+(1109, "28", "Hyogo"),
+(1109, "08", "Ibaraki"),
+(1109, "17", "Ishikawa"),
+(1109, "03", "Iwate"),
+(1109, "37", "Kagawa"),
+(1109, "46", "Kagoshima"),
+(1109, "14", "Kanagawa"),
+(1109, "39", "Kochi"),
+(1109, "43", "Kumamoto"),
+(1109, "26", "Kyoto"),
+(1109, "24", "Mie"),
+(1109, "04", "Miyagi"),
+(1109, "45", "Miyazaki"),
+(1109, "20", "Nagano"),
+(1109, "42", "Nagasaki"),
+(1109, "29", "Nara"),
+(1109, "15", "Niigata"),
+(1109, "44", "Oita"),
+(1109, "33", "Okayama"),
+(1109, "47", "Okinawa"),
+(1109, "27", "Osaka"),
+(1109, "41", "Saga"),
+(1109, "11", "Saitama"),
+(1109, "25", "Shiga"),
+(1109, "32", "Shimane"),
+(1109, "22", "Shizuoka"),
+(1109, "09", "Tochigi"),
+(1109, "36", "Tokushima"),
+(1109, "13", "Tokyo"),
+(1109, "31", "Tottori"),
+(1109, "16", "Toyama"),
+(1109, "30", "Wakayama"),
+(1109, "06", "Yamagata"),
+(1109, "35", "Yamaguchi"),
+(1109, "19", "Yamanashi"),
+(1108, "CN", "Clarendon"),
+(1108, "HR", "Hanover"),
+(1108, "KN", "Kingston"),
+(1108, "PD", "Portland"),
+(1108, "AW", "Saint Andrew"),
+(1108, "AN", "Saint Ann"),
+(1108, "CE", "Saint Catherine"),
+(1108, "EH", "Saint Elizabeth"),
+(1108, "JS", "Saint James"),
+(1108, "MY", "Saint Mary"),
+(1108, "TS", "Saint Thomas"),
+(1108, "TY", "Trelawny"),
+(1108, "WD", "Westmoreland"),
+(1110, "AJ", "Ajln"),
+(1110, "AQ", "Al \'Aqaba"),
+(1110, "BA", "Al Balqa\'"),
+(1110, "KA", "Al Karak"),
+(1110, "MA", "Al Mafraq"),
+(1110, "AM", "Amman"),
+(1110, "AT", "At Tafilah"),
+(1110, "AZ", "Az Zarga"),
+(1110, "JR", "Irbid"),
+(1110, "JA", "Jarash"),
+(1110, "MN", "Ma\'an"),
+(1110, "MD", "Madaba"),
+(1112, "01", "Baringo"),
+(1112, "02", "Bomet"),
+(1112, "03", "Bungoma"),
+(1112, "04", "Busia"),
+(1112, "05", "Elgeyo/Marakwet"),
+(1112, "06", "Embu"),
+(1112, "07", "Garissa"),
+(1112, "08", "Homa Bay"),
+(1112, "09", "Isiolo"),
+(1112, "10", "Kajiado"),
+(1112, "11", "Kakamega"),
+(1112, "12", "Kericho"),
+(1112, "13", "Kiambu"),
+(1112, "14", "Kilifi"),
+(1112, "15", "Kirinyaga"),
+(1112, "16", "Kisii"),
+(1112, "17", "Kisumu"),
+(1112, "18", "Kitui"),
+(1112, "19", "Kwale"),
+(1112, "20", "Laikipia"),
+(1112, "21", "Lamu"),
+(1112, "22", "Machakos"),
+(1112, "23", "Makueni"),
+(1112, "24", "Mandera"),
+(1112, "25", "Marsabit"),
+(1112, "26", "Meru"),
+(1112, "27", "Migori"),
+(1112, "28", "Mombasa"),
+(1112, "29", "Murang'a"),
+(1112, "30", "Nairobi City"),
+(1112, "31", "Nakuru"),
+(1112, "32", "Nandi"),
+(1112, "33", "Narok"),
+(1112, "34", "Nyamira"),
+(1112, "35", "Nyandarua"),
+(1112, "36", "Nyeri"),
+(1112, "37", "Samburu"),
+(1112, "38", "Siaya"),
+(1112, "39", "Taita/Taveta"),
+(1112, "40", "Tana River"),
+(1112, "41", "Tharaka-Nithi"),
+(1112, "42", "Trans Nzoia"),
+(1112, "43", "Turkana"),
+(1112, "44", "Uasin Gishu"),
+(1112, "45", "Vihiga"),
+(1112, "46", "Wajir"),
+(1112, "47", "West Pokot"),
+(1117, "GB", "Bishkek"),
+(1117, "B", "Batken"),
+(1117, "C", "Chu"),
+(1117, "J", "Jalal-Abad"),
+(1117, "N", "Naryn"),
+(1117, "O", "Osh"),
+(1117, "T", "Talas"),
+(1117, "Y", "Ysyk-Kol"),
+(1037, "23", "Krong Kaeb"),
+(1037, "24", "Krong Pailin"),
+(1037, "18", "Xrong Preah Sihanouk"),
+(1037, "12", "Phnom Penh"),
+(1037, "2", "Baat Dambang"),
+(1037, "1", "Banteay Mean Chey"),
+(1037, "3", "Rampong Chaam"),
+(1037, "4", "Kampong Chhnang"),
+(1037, "5", "Kampong Spueu"),
+(1037, "6", "Kampong Thum"),
+(1037, "7", "Kampot"),
+(1037, "8", "Kandaal"),
+(1037, "9", "Kach Kong"),
+(1037, "10", "Krachoh"),
+(1037, "11", "Mondol Kiri"),
+(1037, "22", "Otdar Mean Chey"),
+(1037, "15", "Pousaat"),
+(1037, "13", "Preah Vihear"),
+(1037, "14", "Prey Veaeng"),
+(1037, "16", "Rotanak Kiri"),
+(1037, "17", "Siem Reab"),
+(1037, "19", "Stueng Traeng"),
+(1037, "20", "Svaay Rieng"),
+(1037, "21", "Taakaev"),
+(1113, "G", "Gilbert Islands"),
+(1113, "L", "Line Islands"),
+(1113, "P", "Phoenix Islands"),
+(1049, "A", "Anjouan Ndzouani"),
+(1049, "G", "Grande Comore Ngazidja"),
+(1049, "M", "Moheli Moili"),
+(1114, "KAE", "Kaesong-si"),
+(1114, "NAM", "Nampo-si"),
+(1114, "PYO", "Pyongyang-ai"),
+(1114, "CHA", "Chagang-do"),
+(1114, "HAB", "Hamgyongbuk-do"),
+(1114, "HAN", "Hamgyongnam-do"),
+(1114, "HWB", "Hwanghaebuk-do"),
+(1114, "HWN", "Hwanghaenam-do"),
+(1114, "KAN", "Kangwon-do"),
+(1114, "PYB", "Pyonganbuk-do"),
+(1114, "PYN", "Pyongannam-do"),
+(1114, "YAN", "Yanggang-do"),
+(1114, "NAJ", "Najin Sonbong-si"),
+(1115, "11", "Seoul Teugbyeolsi"),
+(1115, "26", "Busan Gwang\'yeogsi"),
+(1115, "27", "Daegu Gwang\'yeogsi"),
+(1115, "30", "Daejeon Gwang\'yeogsi"),
+(1115, "29", "Gwangju Gwang\'yeogsi"),
+(1115, "28", "Incheon Gwang\'yeogsi"),
+(1115, "31", "Ulsan Gwang\'yeogsi"),
+(1115, "43", "Chungcheongbugdo"),
+(1115, "44", "Chungcheongnamdo"),
+(1115, "42", "Gang\'weondo"),
+(1115, "41", "Gyeonggido"),
+(1115, "47", "Gyeongsangbugdo"),
+(1115, "48", "Gyeongsangnamdo"),
+(1115, "49", "Jejudo"),
+(1115, "45", "Jeonrabugdo"),
+(1115, "46", "Jeonranamdo"),
+(1115, "50", "Sejong"),
+(1116, "AH", "Al Ahmadi"),
+(1116, "FA", "Al Farwanlyah"),
+(1116, "JA", "Al Jahrah"),
+(1116, "KU", "Al Kuwayt"),
+(1116, "HA", "Hawalli"),
+(1111, "ALA", "Almaty"),
+(1111, "AST", "Astana"),
+(1111, "ALM", "Almaty oblysy"),
+(1111, "AKM", "Aqmola oblysy"),
+(1111, "AKT", "Aqtobe oblysy"),
+(1111, "ATY", "Atyrau oblyfiy"),
+(1111, "ZAP", "Batys Quzaqstan oblysy"),
+(1111, "MAN", "Mangghystau oblysy"),
+(1111, "YUZ", "Ongtustik Quzaqstan oblysy"),
+(1111, "PAV", "Pavlodar oblysy"),
+(1111, "KAR", "Qaraghandy oblysy"),
+(1111, "KUS", "Qostanay oblysy"),
+(1111, "KZY", "Qyzylorda oblysy"),
+(1111, "VOS", "Shyghys Quzaqstan oblysy"),
+(1111, "SEV", "Soltustik Quzaqstan oblysy"),
+(1111, "ZHA", "Zhambyl oblysy Zhambylskaya oblast\'"),
+(1118, "VT", "Vientiane"),
+(1118, "AT", "Attapu"),
+(1118, "BK", "Bokeo"),
+(1118, "BL", "Bolikhamxai"),
+(1118, "CH", "Champasak"),
+(1118, "HO", "Houaphan"),
+(1118, "KH", "Khammouan"),
+(1118, "LM", "Louang Namtha"),
+(1118, "LP", "Louangphabang"),
+(1118, "OU", "Oudomxai"),
+(1118, "PH", "Phongsali"),
+(1118, "SL", "Salavan"),
+(1118, "SV", "Savannakhet"),
+(1118, "XA", "Xaignabouli"),
+(1118, "XN", "Xiasomboun"),
+(1118, "XE", "Xekong"),
+(1118, "XI", "Xiangkhoang"),
+(1120, "BA", "Beirut"),
+(1120, "BI", "Beqaa"),
+(1120, "JL", "Mount Lebanon"),
+(1120, "AS", "North Lebanon"),
+(1120, "JA", "South Lebanon"),
+(1120, "NA", "Nabatieh"),
+(1199, "52", "Ampara"),
+(1199, "71", "Anuradhapura"),
+(1199, "81", "Badulla"),
+(1199, "51", "Batticaloa"),
+(1199, "11", "Colombo"),
+(1199, "31", "Galle"),
+(1199, "12", "Gampaha"),
+(1199, "33", "Hambantota"),
+(1199, "41", "Jaffna"),
+(1199, "13", "Kalutara"),
+(1199, "21", "Kandy"),
+(1199, "92", "Kegalla"),
+(1199, "42", "Kilinochchi"),
+(1199, "61", "Kurunegala"),
+(1199, "43", "Mannar"),
+(1199, "22", "Matale"),
+(1199, "32", "Matara"),
+(1199, "82", "Monaragala"),
+(1199, "45", "Mullaittivu"),
+(1199, "23", "Nuwara Eliya"),
+(1199, "72", "Polonnaruwa"),
+(1199, "62", "Puttalum"),
+(1199, "91", "Ratnapura"),
+(1199, "53", "Trincomalee"),
+(1199, "44", "VavunLya"),
+(1122, "BM", "Bomi"),
+(1122, "BG", "Bong"),
+(1122, "GB", "Grand Basaa"),
+(1122, "CM", "Grand Cape Mount"),
+(1122, "GG", "Grand Gedeh"),
+(1122, "GK", "Grand Kru"),
+(1122, "LO", "Lofa"),
+(1122, "MG", "Margibi"),
+(1122, "MY", "Maryland"),
+(1122, "MO", "Montserrado"),
+(1122, "NI", "Nimba"),
+(1122, "RI", "Rivercess"),
+(1122, "SI", "Sinoe"),
+(1121, "D", "Berea"),
+(1121, "B", "Butha-Buthe"),
+(1121, "C", "Leribe"),
+(1121, "E", "Mafeteng"),
+(1121, "A", "Maseru"),
+(1121, "F", "Mohale\'s Hoek"),
+(1121, "J", "Mokhotlong"),
+(1121, "H", "Qacha\'s Nek"),
+(1121, "G", "Quthing"),
+(1121, "K", "Thaba-Tseka"),
+(1125, "AL", "Alytaus Apskritis"),
+(1125, "KU", "Kauno Apskritis"),
+(1125, "KL", "KlaipÄ—dos Apskritis"),
+(1125, "MR", "MarijampolÄ—s Apskritis"),
+(1125, "PN", "Panevėžio Apskritis"),
+(1125, "SA", "Šiaulių Apskritis"),
+(1125, "TA", "TauragÄ—s Apskritis"),
+(1125, "TE", "Telšių Apskritis"),
+(1125, "UT", "Utenos Apskritis"),
+(1125, "VL", "Vilniaus Apskritis"),
+(1126, "LU", "Luxembourg"),
+(1126, "DI", "Diekirch"),
+(1126, "GR", "Grevenmacher"),
+(1126, 'CA', 'Capellen'),
+(1126, 'CL', 'Clervaux'),
+(1126, 'EC', 'Echternach'),
+(1126, 'ES', 'Esch-sur-Alzette'),
+(1126, 'ME', 'Mersch'),
+(1126, 'RD', 'Redange-sur-Attert'),
+(1126, 'RM', 'Remich'),
+(1126, 'VD', 'Vianden'),
+(1126, 'WI', 'Wiltz'),
+(1119, "DGV", "Daugavpils"),
+(1119, "JEL", "Jelgava"),
+(1119, "JUR", "JÅ«rmala"),
+(1119, "LPX", "Liepāja"),
+(1119, "REZ", "RÄ“zekne"),
+(1119, "RIX", "RÄ«ga"),
+(1119, "VEN", "Ventspils"),
+(1119, "002", "Aizkraukles novads"),
+(1119, "038", "Jaunjelgavas novads"),
+(1119, "072", "Pļaviņu novads"),
+(1119, "046", "Kokneses novads"),
+(1119, "065", "Neretas novads"),
+(1119, "092", "Skrīveru novads"),
+(1119, "007", "Alūksnes novads"),
+(1119, "009", "Apes novads"),
+(1119, "015", "Balvu novads"),
+(1119, "108", "Viļakas novads"),
+(1119, "014", "Baltinavas novads"),
+(1119, "082", "Rugāju novads"),
+(1119, "016", "Bauskas novads"),
+(1119, "034", "Iecavas novads"),
+(1119, "083", "Rundāles novads"),
+(1119, "105", "Vecumnieku novads"),
+(1119, "022", "CÄ“su novads"),
+(1119, "055", "LÄ«gatnes novads"),
+(1119, "008", "Amatas novads"),
+(1119, "039", "Jaunpiebalgas novads"),
+(1119, "075", "Priekuļu novads"),
+(1119, "070", "Pārgaujas novads"),
+(1119, "076", "Raunas novads"),
+(1119, "104", "Vecpiebalgas novads"),
+(1119, "025", "Daugavpils novads"),
+(1119, "036", "Ilūkstes novads"),
+(1119, "026", "Dobeles novads"),
+(1119, "010", "Auces novads"),
+(1119, "098", "TÄ“rvetes novads"),
+(1119, "033", "Gulbenes novads"),
+(1119, "041", "Jelgavas novads"),
+(1119, "069", "Ozolnieku novads"),
+(1119, "042", "JÄ“kabpils novads"),
+(1119, "004", "Aknīstes novads"),
+(1119, "107", "Viesītes novads"),
+(1119, "049", "Krustpils novads"),
+(1119, "085", "Salas novads"),
+(1119, "047", "Krāslavas novads"),
+(1119, "024", "Dagdas novads"),
+(1119, "001", "Aglonas novads"),
+(1119, "050", "Kuldīgas novads"),
+(1119, "093", "Skrundas novads"),
+(1119, "006", "Alsungas novads"),
+(1119, "003", "Aizputes novads"),
+(1119, "028", "Durbes novads"),
+(1119, "032", "Grobiņas novads"),
+(1119, "071", "Pāvilostas novads"),
+(1119, "074", "Priekules novads"),
+(1119, "066", "NÄ«cas novads"),
+(1119, "081", "Rucavas novads"),
+(1119, "100", "Vaiņodes novads"),
+(1119, "054", "Limbažu novads"),
+(1119, "005", "Alojas novads"),
+(1119, "086", "Salacgrīvas novads"),
+(1119, "058", "Ludzas novads"),
+(1119, "044", "Kārsavas novads"),
+(1119, "110", "Zilupes novads"),
+(1119, "023", "Ciblas novads"),
+(1119, "059", "Madonas novads"),
+(1119, "021", "Cesvaines novads"),
+(1119, "057", "Lubānas novads"),
+(1119, "102", "Varakļānu novads"),
+(1119, "030", "Ērgļu novads"),
+(1119, "067", "Ogres novads"),
+(1119, "035", "Ikšķiles novads"),
+(1119, "051", "Ķeguma novads"),
+(1119, "053", "Lielvārdes novads"),
+(1119, "073", "Preiļu novads"),
+(1119, "056", "Līvānu novads"),
+(1119, "078", "Riebiņu novads"),
+(1119, "103", "Vārkavas novads"),
+(1119, "077", "RÄ“zeknes novads"),
+(1119, "109", "Viļānu novads"),
+(1119, "013", "Baldones novads"),
+(1119, "052", "Ķekavas novads"),
+(1119, "068", "Olaines novads"),
+(1119, "087", "Salaspils novads"),
+(1119, "089", "Saulkrastu novads"),
+(1119, "091", "Siguldas novads"),
+(1119, "037", "Inčukalna novads"),
+(1119, "011", "Ādažu novads"),
+(1119, "012", "Babītes novads"),
+(1119, "020", "Carnikavas novads"),
+(1119, "031", "Garkalnes novads"),
+(1119, "048", "Krimuldas novads"),
+(1119, "061", "Mālpils novads"),
+(1119, "062", "Mārupes novads"),
+(1119, "080", "Ropažu novads"),
+(1119, "090", "SÄ“jas novads"),
+(1119, "095", "Stopiņu novads"),
+(1119, "088", "Saldus novads"),
+(1119, "018", "Brocēnu novads"),
+(1119, "097", "Talsu novads"),
+(1119, "027", "Dundagas novads"),
+(1119, "063", "MÄ“rsraga novads"),
+(1119, "079", "Rojas novads"),
+(1119, "099", "Tukuma novads"),
+(1119, "043", "Kandavas novads"),
+(1119, "029", "Engures novads"),
+(1119, "040", "Jaunpils novads"),
+(1119, "101", "Valkas novads"),
+(1119, "094", "Smiltenes novads"),
+(1119, "096", "Strenču novads"),
+(1119, "045", "Kocēnu novads"),
+(1119, "060", "Mazsalacas novads"),
+(1119, "084", "RÅ«jienas novads"),
+(1119, "017", "Beverīnas novads"),
+(1119, "019", "Burtnieku novads"),
+(1119, "064", "Naukšēnu novads"),
+(1119, "106", "Ventspils novads"),
+(1119, "JKB", "JÄ“kabpils"),
+(1119, "VMR", "Valmiera"),
+(1123, "AJ", "Ajdābiyā"),
+(1123, "BU", "Al Buţnān"),
+(1123, "HZ", "Al Hizām al Akhdar"),
+(1123, "JA", "Al Jabal al Akhdar"),
+(1123, "JI", "Al Jifārah"),
+(1123, "JU", "Al Jufrah"),
+(1123, "KF", "Al Kufrah"),
+(1123, "MJ", "Al Marj"),
+(1123, "MB", "Al Marqab"),
+(1123, "QT", "Al Qaţrūn"),
+(1123, "QB", "Al Qubbah"),
+(1123, "WA", "Al Wāhah"),
+(1123, "NQ", "An Nuqaţ al Khams"),
+(1123, "SH", "Ash Shāţi\'"),
+(1123, "ZA", "Az Zāwiyah"),
+(1123, "BA", "Banghāzī"),
+(1123, "BW", "Banī Walīd"),
+(1123, "DR", "Darnah"),
+(1123, "GD", "Ghadāmis"),
+(1123, "GR", "Gharyān"),
+(1123, "GT", "Ghāt"),
+(1123, "JB", "Jaghbūb"),
+(1123, "MI", "Mişrātah"),
+(1123, "MZ", "Mizdah"),
+(1123, "MQ", "Murzuq"),
+(1123, "NL", "Nālūt"),
+(1123, "SB", "Sabhā"),
+(1123, "SS", "Şabrātah Şurmān"),
+(1123, "SR", "Surt"),
+(1123, "TN", "Tājūrā\' wa an Nawāhī al Arbāh"),
+(1123, "TB", "Ţarābulus"),
+(1123, "TM", "Tarhūnah-Masallātah"),
+(1123, "WD", "Wādī al hayāt"),
+(1123, "YJ", "Yafran-Jādū"),
+(1146, "AGD", "Agadir"),
+(1146, "BAH", "Aït Baha"),
+(1146, "MEL", "Aït Melloul"),
+(1146, "HAO", "Al Haouz"),
+(1146, "HOC", "Al Hoceïma"),
+(1146, "ASZ", "Assa-Zag"),
+(1146, "AZI", "Azilal"),
+(1146, "BEM", "Beni Mellal"),
+(1146, "BES", "Ben Sllmane"),
+(1146, "BER", "Berkane"),
+(1146, "BOD", "Boujdour"),
+(1146, "BOM", "Boulemane"),
+(1146, "CAS", "Casablanca  [Dar el Beïda]"),
+(1146, "CHE", "Chefchaouene"),
+(1146, "CHI", "Chichaoua"),
+(1146, "HAJ", "El Hajeb"),
+(1146, "JDI", "El Jadida"),
+(1146, "ERR", "Errachidia"),
+(1146, "ESI", "Essaouira"),
+(1146, "ESM", "Es Smara"),
+(1146, "FES", "Fès"),
+(1146, "FIG", "Figuig"),
+(1146, "GUE", "Guelmim"),
+(1146, "IFR", "Ifrane"),
+(1146, "JRA", "Jerada"),
+(1146, "KES", "Kelaat Sraghna"),
+(1146, "KEN", "Kénitra"),
+(1146, "KHE", "Khemisaet"),
+(1146, "KHN", "Khenifra"),
+(1146, "KHO", "Khouribga"),
+(1146, "LAA", "Laâyoune (EH)"),
+(1146, "LAP", "Larache"),
+(1146, "MAR", "Marrakech"),
+(1146, "MEK", "Meknsès"),
+(1146, "NAD", "Nador"),
+(1146, "OUA", "Ouarzazate"),
+(1146, "OUD", "Oued ed Dahab (EH)"),
+(1146, "OUJ", "Oujda"),
+(1146, "RBA", "Rabat-Salé"),
+(1146, "SAF", "Safi"),
+(1146, "SEF", "Sefrou"),
+(1146, "SET", "Settat"),
+(1146, "SIK", "Sidl Kacem"),
+(1146, "TNG", "Tanger"),
+(1146, "TNT", "Tan-Tan"),
+(1146, "TAO", "Taounate"),
+(1146, "TAR", "Taroudannt"),
+(1146, "TAT", "Tata"),
+(1146, "TAZ", "Taza"),
+(1146, "TET", "Tétouan"),
+(1146, "TIZ", "Tiznit"),
+(1142, "GA", "Gagauzia, Unitate Teritoriala Autonoma"),
+(1142, "CU", "Chisinau"),
+(1142, "SN", "Stinga Nistrului, unitatea teritoriala din"),
+(1142, "BA", "Balti"),
+(1142, "CA", "Cahul"),
+(1142, "ED", "Edinet"),
+(1142, "LA", "Lapusna"),
+(1142, "OR", "Orhei"),
+(1142, "SO", "Soroca"),
+(1142, "TA", "Taraclia"),
+(1142, "TI", "Tighina [Bender]"),
+(1142, "UN", "Ungheni"),
+(1129, "T", "Antananarivo"),
+(1129, "D", "Antsiranana"),
+(1129, "F", "Fianarantsoa"),
+(1129, "M", "Mahajanga"),
+(1129, "A", "Toamasina"),
+(1129, "U", "Toliara"),
+(1135, "ALL", "Ailinglapalap"),
+(1135, "ALK", "Ailuk"),
+(1135, "ARN", "Arno"),
+(1135, "AUR", "Aur"),
+(1135, "EBO", "Ebon"),
+(1135, "ENI", "Eniwetok"),
+(1135, "JAL", "Jaluit"),
+(1135, "KIL", "Kili"),
+(1135, "KWA", "Kwajalein"),
+(1135, "LAE", "Lae"),
+(1135, "LIB", "Lib"),
+(1135, "LIK", "Likiep"),
+(1135, "MAJ", "Majuro"),
+(1135, "MAL", "Maloelap"),
+(1135, "MEJ", "Mejit"),
+(1135, "MIL", "Mili"),
+(1135, "NMK", "Namorik"),
+(1135, "NMU", "Namu"),
+(1135, "RON", "Rongelap"),
+(1135, "UJA", "Ujae"),
+(1135, "UJL", "Ujelang"),
+(1135, "UTI", "Utirik"),
+(1135, "WTN", "Wotho"),
+(1135, "WTJ", "Wotje"),
+(1133, "BK0", "Bamako"),
+(1133, "7", "Gao"),
+(1133, "1", "Kayes"),
+(1133, "8", "Kidal"),
+(1133, "2", "Xoulikoro"),
+(1133, "5", "Mopti"),
+(1133, "4", "S69ou"),
+(1133, "3", "Sikasso"),
+(1133, "6", "Tombouctou"),
+(1035, "07", "Ayeyarwady"),
+(1035, "02", "Bago"),
+(1035, "03", "Magway"),
+(1035, "04", "Mandalay"),
+(1035, "01", "Sagaing"),
+(1035, "05", "Tanintharyi"),
+(1035, "06", "Yangon"),
+(1035, "14", "Chin"),
+(1035, "11", "Kachin"),
+(1035, "12", "Kayah"),
+(1035, "13", "Kayin"),
+(1035, "15", "Mon"),
+(1035, "16", "Rakhine"),
+(1035, "17", "Shan"),
+(1144, "1", "Ulaanbaatar"),
+(1144, "073", "Arhangay"),
+(1144, "069", "Bayanhongor"),
+(1144, "071", "Bayan-Olgiy"),
+(1144, "067", "Bulgan"),
+(1144, "037", "Darhan uul"),
+(1144, "061", "Dornod"),
+(1144, "063", "Dornogov,"),
+(1144, "059", "DundgovL"),
+(1144, "057", "Dzavhan"),
+(1144, "065", "Govi-Altay"),
+(1144, "064", "Govi-Smber"),
+(1144, "039", "Hentiy"),
+(1144, "043", "Hovd"),
+(1144, "041", "Hovsgol"),
+(1144, "053", "Omnogovi"),
+(1144, "035", "Orhon"),
+(1144, "055", "Ovorhangay"),
+(1144, "049", "Selenge"),
+(1144, "051", "Shbaatar"),
+(1144, "047", "Tov"),
+(1144, "046", "Uvs"),
+(1137, "NKC", "Nouakchott"),
+(1137, "03", "Assaba"),
+(1137, "05", "Brakna"),
+(1137, "08", "Dakhlet Nouadhibou"),
+(1137, "04", "Gorgol"),
+(1137, "10", "Guidimaka"),
+(1137, "01", "Hodh ech Chargui"),
+(1137, "02", "Hodh el Charbi"),
+(1137, "12", "Inchiri"),
+(1137, "09", "Tagant"),
+(1137, "11", "Tiris Zemmour"),
+(1137, "06", "Trarza"),
+(1138, "BR", "Beau Bassin-Rose Hill"),
+(1138, "CU", "Curepipe"),
+(1138, "PU", "Port Louis"),
+(1138, "QB", "Quatre Bornes"),
+(1138, "VP", "Vacosa-Phoenix"),
+(1138, "BL", "Black River"),
+(1138, "FL", "Flacq"),
+(1138, "GP", "Grand Port"),
+(1138, "MO", "Moka"),
+(1138, "PA", "Pamplemousses"),
+(1138, "PW", "Plaines Wilhems"),
+(1138, "RP", "Riviere du Rempart"),
+(1138, "SA", "Savanne"),
+(1138, "AG", "Agalega Islands"),
+(1138, "CC", "Cargados Carajos Shoals"),
+(1138, "RO", "Rodrigues Island"),
+(1132, "MLE", "Male"),
+(1132, "02", "Alif"),
+(1132, "20", "Baa"),
+(1132, "17", "Dhaalu"),
+(1132, "14", "Faafu"),
+(1132, "27", "Gaaf Alif"),
+(1132, "28", "Gaefu Dhaalu"),
+(1132, "29", "Gnaviyani"),
+(1132, "07", "Haa Alif"),
+(1132, "23", "Haa Dhaalu"),
+(1132, "26", "Kaafu"),
+(1132, "05", "Laamu"),
+(1132, "03", "Lhaviyani"),
+(1132, "12", "Meemu"),
+(1132, "25", "Noonu"),
+(1132, "13", "Raa"),
+(1132, "01", "Seenu"),
+(1132, "24", "Shaviyani"),
+(1132, "08", "Thaa"),
+(1132, "04", "Vaavu"),
+(1130, "BA", "Balaka"),
+(1130, "BL", "Blantyre"),
+(1130, "CK", "Chikwawa"),
+(1130, "CR", "Chiradzulu"),
+(1130, "CT", "Chitipa"),
+(1130, "DE", "Dedza"),
+(1130, "DO", "Dowa"),
+(1130, "KR", "Karonga"),
+(1130, "KS", "Kasungu"),
+(1130, "LK", "Likoma Island"),
+(1130, "LI", "Lilongwe"),
+(1130, "MH", "Machinga"),
+(1130, "MG", "Mangochi"),
+(1130, "MC", "Mchinji"),
+(1130, "MU", "Mulanje"),
+(1130, "MW", "Mwanza"),
+(1130, "MZ", "Mzimba"),
+(1130, "NB", "Nkhata Bay"),
+(1130, "NK", "Nkhotakota"),
+(1130, "NS", "Nsanje"),
+(1130, "NU", "Ntcheu"),
+(1130, "NI", "Ntchisi"),
+(1130, "PH", "Phalomba"),
+(1130, "RU", "Rumphi"),
+(1130, "SA", "Salima"),
+(1130, "TH", "Thyolo"),
+(1130, "ZO", "Zomba"),
+(1140, "AGU", "Aguascalientes"),
+(1140, "BCN", "Baja California"),
+(1140, "BCS", "Baja California Sur"),
+(1140, "CAM", "Campeche"),
+(1140, "COA", "Coahuila"),
+(1140, "COL", "Colima"),
+(1140, "CHP", "Chiapas"),
+(1140, "CHH", "Chihuahua"),
+(1140, "DUR", "Durango"),
+(1140, "GUA", "Guanajuato"),
+(1140, "GRO", "Guerrero"),
+(1140, "HID", "Hidalgo"),
+(1140, "JAL", "Jalisco"),
+(1140, "MEX", "Mexico"),
+(1140, "MIC", "Michoacin"),
+(1140, "MOR", "Morelos"),
+(1140, "NAY", "Nayarit"),
+(1140, "NLE", "Nuevo Leon"),
+(1140, "OAX", "Oaxaca"),
+(1140, "PUE", "Puebla"),
+(1140, "QUE", "Queretaro"),
+(1140, "ROO", "Quintana Roo"),
+(1140, "SLP", "San Luis Potosi"),
+(1140, "SIN", "Sinaloa"),
+(1140, "SON", "Sonora"),
+(1140, "TAB", "Tabasco"),
+(1140, "TAM", "Tamaulipas"),
+(1140, "TLA", "Tlaxcala"),
+(1140, "VER", "Veracruz"),
+(1140, "YUC", "Yucatan"),
+(1140, "ZAC", "Zacatecas"),
+(1140, "DIF", "Distrito Federal"),
+(1131, "14", "Wilayah Persekutuan Kuala Lumpur"),
+(1131, "15", "Wilayah Persekutuan Labuan"),
+(1131, "16", "Wilayah Persekutuan Putrajaya"),
+(1131, "01", "Johor"),
+(1131, "02", "Kedah"),
+(1131, "03", "Kelantan"),
+(1131, "04", "Melaka"),
+(1131, "05", "Negeri Sembilan"),
+(1131, "06", "Pahang"),
+(1131, "08", "Perak"),
+(1131, "09", "Perlis"),
+(1131, "07", "Pulau Pinang"),
+(1131, "12", "Sabah"),
+(1131, "13", "Sarawak"),
+(1131, "10", "Selangor"),
+(1131, "11", "Terengganu"),
+(1147, "MPM", "Maputo"),
+(1147, "P", "Cabo Delgado"),
+(1147, "G", "Gaza"),
+(1147, "I", "Inhambane"),
+(1147, "B", "Manica"),
+(1147, "N", "Numpula"),
+(1147, "A", "Niaaea"),
+(1147, "S", "Sofala"),
+(1147, "T", "Tete"),
+(1147, "Q", "Zambezia"),
+(1148, "CA", "Caprivi"),
+(1148, "ER", "Erongo"),
+(1148, "HA", "Hardap"),
+(1148, "KA", "Karas"),
+(1148, "KH", "Khomas"),
+(1148, "KU", "Kunene"),
+(1148, "OW", "Ohangwena"),
+(1148, "OK", "Okavango"),
+(1148, "OH", "Omaheke"),
+(1148, "OS", "Omusati"),
+(1148, "ON", "Oshana"),
+(1148, "OT", "Oshikoto"),
+(1148, "OD", "Otjozondjupa"),
+(1156, "8", "Niamey"),
+(1156, "1", "Agadez"),
+(1156, "2", "Diffa"),
+(1156, "3", "Dosso"),
+(1156, "4", "Maradi"),
+(1156, "S", "Tahoua"),
+(1156, "6", "Tillaberi"),
+(1156, "7", "Zinder"),
+(1157, "FC", "Abuja Federal Capital Territory"),
+(1157, "AB", "Abia"),
+(1157, "AD", "Adamawa"),
+(1157, "AK", "Akwa Ibom"),
+(1157, "AN", "Anambra"),
+(1157, "BA", "Bauchi"),
+(1157, "BY", "Bayelsa"),
+(1157, "BE", "Benue"),
+(1157, "BO", "Borno"),
+(1157, "CR", "Cross River"),
+(1157, "DE", "Delta"),
+(1157, "EB", "Ebonyi"),
+(1157, "ED", "Edo"),
+(1157, "EK", "Ekiti"),
+(1157, "EN", "Enugu"),
+(1157, "GO", "Gombe"),
+(1157, "IM", "Imo"),
+(1157, "JI", "Jigawa"),
+(1157, "KD", "Kaduna"),
+(1157, "KN", "Kano"),
+(1157, "KT", "Katsina"),
+(1157, "KE", "Kebbi"),
+(1157, "KO", "Kogi"),
+(1157, "KW", "Kwara"),
+(1157, "LA", "Lagos"),
+(1157, "NA", "Nassarawa"),
+(1157, "NI", "Niger"),
+(1157, "OG", "Ogun"),
+(1157, "ON", "Ondo"),
+(1157, "OS", "Osun"),
+(1157, "OY", "Oyo"),
+(1157, "RI", "Rivers"),
+(1157, "SO", "Sokoto"),
+(1157, "TA", "Taraba"),
+(1157, "YO", "Yobe"),
+(1157, "ZA", "Zamfara"),
+(1157, "PL", "Plateau"),
+(1155, "BO", "Boaco"),
+(1155, "CA", "Carazo"),
+(1155, "CI", "Chinandega"),
+(1155, "CO", "Chontales"),
+(1155, "ES", "Esteli"),
+(1155, "JI", "Jinotega"),
+(1155, "LE", "Leon"),
+(1155, "MD", "Madriz"),
+(1155, "MN", "Managua"),
+(1155, "MS", "Masaya"),
+(1155, "MT", "Matagalpa"),
+(1155, "NS", "Nueva Segovia"),
+(1155, "SJ", "Rio San Juan"),
+(1155, "RI", "Rivas"),
+(1155, "AN", "Atlantico Norte"),
+(1155, "AS", "Atlantico Sur"),
+(1152, "DR", "Drente"),
+(1152, "FL", "Flevoland"),
+(1152, "FR", "Friesland"),
+(1152, "GL", "Gelderland"),
+(1152, "GR", "Groningen"),
+(1152, "NB", "Noord-Brabant"),
+(1152, "NH", "Noord-Holland"),
+(1152, "OV", "Overijssel"),
+(1152, "UT", "Utrecht"),
+(1152, "ZH", "Zuid-Holland"),
+(1152, "ZL", "Zeeland"),
+(1161, "02", "Akershus"),
+(1161, "09", "Aust-Agder"),
+(1161, "06", "Buskerud"),
+(1161, "20", "Finnmark"),
+(1161, "04", "Hedmark"),
+(1161, "15", "Møre og Romsdal"),
+(1161, "18", "Nordland"),
+(1161, "17", "Nord-Trøndelag"),
+(1161, "05", "Oppland"),
+(1161, "03", "Oslo"),
+(1161, "11", "Rogaland"),
+(1161, "16", "Sør-Trøndelag"),
+(1161, "06", "Telemark"),
+(1161, "19", "Troms"),
+(1161, "10", "Vest-Agder"),
+(1161, "07", "Vestfold"),
+(1161, "46", "Vestland"),
+(1161, "01", "Østfold"),
+(1161, "22", "Jan Mayen"),
+(1161, "21", "Svalbard"),
+(1154, "AUK", "Auckland"),
+(1154, "BOP", "Bay of Plenty"),
+(1154, "CAN", "Canterbury"),
+(1154, "GIS", "Gisborne"),
+(1154, "HKB", "Hawkes Bay"),
+(1154, "MWT", "Manawatu-Wanganui"),
+(1154, "MBH", "Marlborough"),
+(1154, "NSN", "Nelson"),
+(1154, "NTL", "Northland"),
+(1154, "OTA", "Otago"),
+(1154, "STL", "Southland"),
+(1154, "TKI", "Taranaki"),
+(1154, "TAS", "Tasman"),
+(1154, "WKO", "Waikato"),
+(1154, "WGN", "Wellington"),
+(1154, "WTC", "West Coast"),
+(1162, "DA", "Ad Dakhillyah"),
+(1162, "BA", "Al Batinah"),
+(1162, "JA", "Al Janblyah"),
+(1162, "WU", "Al Wusta"),
+(1162, "SH", "Ash Sharqlyah"),
+(1162, "ZA", "Az Zahirah"),
+(1162, "MA", "Masqat"),
+(1162, "MU", "Musandam"),
 -- Palestinian governorates from http://en.wikipedia.org/wiki/Governorates_of_the_Palestinian_National_Authority (no ISO 3166-2 entries yet, hence temporary codes)
-(5201, 1165, "_A", "Jenin"),
-(5202, 1165, "_B", "Tubas"),
-(5203, 1165, "_C", "Tulkarm"),
-(5204, 1165, "_D", "Nablus"),
-(5205, 1165, "_E", "Qalqilya"),
-(5206, 1165, "_F", "Salfit"),
-(5207, 1165, "_G", "Ramallah and Al-Bireh"),
-(5208, 1165, "_H", "Jericho"),
-(5209, 1165, "_I", "Jerusalem"),
-(5210, 1165, "_J", "Bethlehem"),
-(5211, 1165, "_K", "Hebron"),
-(5212, 1165, "_L", "North Gaza"),
-(5213, 1165, "_M", "Gaza"),
-(5214, 1165, "_N", "Deir el-Balah"),
-(5215, 1165, "_O", "Khan Yunis"),
-(5216, 1165, "_P", "Rafah"),
-
-(5217, 1020, "BRU", "Brussels"),
-
-(5218, 1140, "DIF", "Distrito Federal"),
-(5219, 1208, "TXG", "Taichung City"),
-(5220, 1208, "KHH", "Kaohsiung City"),
-(5221, 1208, "TPE", "Taipei City"),
-(5222, 1208, "CYI", "Chiayi City"),
-(5223, 1208, "HSZ", "Hsinchu City"),
-(5224, 1208, "TNN", "Tainan City"),
-(9000, 1196, "NW", "North West"),
-
-(9986, 1226, "TWR", "Tyne and Wear"),
-(9988, 1226, "GTM", "Greater Manchester"),
-(9989, 1226, "TYR", "Co Tyrone"),
-(9990, 1226, "WYK", "West Yorkshire"),
-(9991, 1226, "SYK", "South Yorkshire"),
-(9992, 1226, "MSY", "Merseyside"),
-(9993, 1226, "BRK", "Berkshire"),
-(9994, 1226, "WMD", "West Midlands"),
-(9998, 1226, "WGM", "West Glamorgan"),
-(9999, 1226, "LON", "London"),
-
-(10000, 1107, "CI", "Carbonia-Iglesias"),
-(10001, 1107, "OT", "Olbia-Tempio"),
-(10002, 1107, "VS", "Medio Campidano"),
-(10003, 1107, "OG", "Ogliastra"),
-
--- department of France (CRM-4769)
-(10009, 1076, "39", "Jura"),
-
--- new Italian provinces (CRM-5048)
-(10010, 1107, "BT", "Barletta-Andria-Trani"),
-(10011, 1107, "FM", "Fermo"),
-(10012, 1107, "MB", "Monza e Brianza"),
-
--- new UK provinces (CRM-5224)
-(10013, 1226, "CWD", "Clwyd"),
-(10015, 1226, "SGM", "South Glamorgan"),
-
--- Haiti (CRM-5628)
-(10016, 1094, "AR", "Artibonite"),
-(10017, 1094, "CE", "Centre"),
-(10018, 1094, "NI", "Nippes"),
-(10019, 1094, "ND", "Nord"),
-
--- CRM-6002 - Argentinian provinces suplemented
-(10020, 1010, "F", "La Rioja"),
-
--- CRM-6063 - Added states for Andorra
-(10021, 1005, "07", "Andorra la Vella"),
-(10022, 1005, "02", "Canillo"),
-(10023, 1005, "03", "Encamp"),
-(10024, 1005, "08", "Escaldes-Engordany"),
-(10025, 1005, "04", "La Massana"),
-(10026, 1005, "05", "Ordino"),
-(10027, 1005, "06", "Sant Julia de Loria"),
-
--- CRM-6198 - Added provinces of Bahamas
-(NULL, 1212, "AB", "Abaco Islands"),
-(NULL, 1212, "AN", "Andros Island"),
-(NULL, 1212, "BR", "Berry Islands"),
-(NULL, 1212, "EL", "Eleuthera"),
-(NULL, 1212, "GB", "Grand Bahama"),
-(NULL, 1212, "RC", "Rum Cay"),
-(NULL, 1212, "SS", "San Salvador Island"),
-
--- Added provinces of The Democratic Republic of the Congo
-
-(NULL, 1050, "01", "Kongo central"),
-(NULL, 1050, "02", "Kwango"),
-(NULL, 1050, "03", "Kwilu"),
-(NULL, 1050, "04", "Mai-Ndombe"),
-(NULL, 1050, "05", "Kasai"),
-(NULL, 1050, "06", "Lulua"),
-(NULL, 1050, "07", "Lomami"),
-(NULL, 1050, "08", "Sankuru"),
-(NULL, 1050, "09", "Ituri"),
-(NULL, 1050, "10", "Haut-Uele"),
-(NULL, 1050, "11", "Tshopo"),
-(NULL, 1050, "12", "Bas-Uele"),
-(NULL, 1050, "13", "Nord-Ubangi"),
-(NULL, 1050, "14", "Mongala"),
-(NULL, 1050, "15", "Sud-Ubangi"),
-(NULL, 1050, "16", "Tshuapa"),
-(NULL, 1050, "17", "Haut-Lomami"),
-(NULL, 1050, "18", "Lualaba"),
-(NULL, 1050, "19", "Haut-Katanga"),
-(NULL, 1050, "20", "Tanganyika"),
-
--- CRM-8009 Added Missing Provinces for Spain
-(NULL, 1198, "TO", "Toledo" ),
-(NULL, 1198, "CO", "Córdoba" ),
-
--- CRM-8769 Added Missing Province for Philippines
-(NULL, 1170, "MNL", "Metropolitan Manila" ),
-
--- CRM-9686 Added Missing Province for Honduras
-(NULL, 1097, "LP", "La Paz"),
-
--- CRM-10473 Added Missing Provinces of Ningxia Autonomous Region of China
-(NULL, 1045, "YN", "Yinchuan"),
-(NULL, 1045, "SZ", "Shizuishan"),
-(NULL, 1045, "WZ", "Wuzhong"),
-(NULL, 1045, "GY", "Guyuan"),
-(NULL, 1045, "ZW", "Zhongwei"),
-
--- CRM-10863 Added Missing Province for Luxembourg
-(NULL, 1126, "LU", "Luxembourg"),
-
--- CRM-11367 Latvian regions
-(NULL, 1119, "002", "Aizkraukles novads"),
-(NULL, 1119, "038", "Jaunjelgavas novads"),
-(NULL, 1119, "072", "Pļaviņu novads"),
-(NULL, 1119, "046", "Kokneses novads"),
-(NULL, 1119, "065", "Neretas novads"),
-(NULL, 1119, "092", "Skrīveru novads"),
-(NULL, 1119, "007", "Alūksnes novads"),
-(NULL, 1119, "009", "Apes novads"),
-(NULL, 1119, "015", "Balvu novads"),
-(NULL, 1119, "108", "Viļakas novads"),
-(NULL, 1119, "014", "Baltinavas novads"),
-(NULL, 1119, "082", "Rugāju novads"),
-(NULL, 1119, "016", "Bauskas novads"),
-(NULL, 1119, "034", "Iecavas novads"),
-(NULL, 1119, "083", "Rundāles novads"),
-(NULL, 1119, "105", "Vecumnieku novads"),
-(NULL, 1119, "022", "CÄ“su novads"),
-(NULL, 1119, "055", "LÄ«gatnes novads"),
-(NULL, 1119, "008", "Amatas novads"),
-(NULL, 1119, "039", "Jaunpiebalgas novads"),
-(NULL, 1119, "075", "Priekuļu novads"),
-(NULL, 1119, "070", "Pārgaujas novads"),
-(NULL, 1119, "076", "Raunas novads"),
-(NULL, 1119, "104", "Vecpiebalgas novads"),
-(NULL, 1119, "025", "Daugavpils novads"),
-(NULL, 1119, "036", "Ilūkstes novads"),
-(NULL, 1119, "026", "Dobeles novads"),
-(NULL, 1119, "010", "Auces novads"),
-(NULL, 1119, "098", "TÄ“rvetes novads"),
-(NULL, 1119, "033", "Gulbenes novads"),
-(NULL, 1119, "041", "Jelgavas novads"),
-(NULL, 1119, "069", "Ozolnieku novads"),
-(NULL, 1119, "042", "JÄ“kabpils novads"),
-(NULL, 1119, "004", "Aknīstes novads"),
-(NULL, 1119, "107", "Viesītes novads"),
-(NULL, 1119, "049", "Krustpils novads"),
-(NULL, 1119, "085", "Salas novads"),
-(NULL, 1119, "047", "Krāslavas novads"),
-(NULL, 1119, "024", "Dagdas novads"),
-(NULL, 1119, "001", "Aglonas novads"),
-(NULL, 1119, "050", "Kuldīgas novads"),
-(NULL, 1119, "093", "Skrundas novads"),
-(NULL, 1119, "006", "Alsungas novads"),
-(NULL, 1119, "003", "Aizputes novads"),
-(NULL, 1119, "028", "Durbes novads"),
-(NULL, 1119, "032", "Grobiņas novads"),
-(NULL, 1119, "071", "Pāvilostas novads"),
-(NULL, 1119, "074", "Priekules novads"),
-(NULL, 1119, "066", "NÄ«cas novads"),
-(NULL, 1119, "081", "Rucavas novads"),
-(NULL, 1119, "100", "Vaiņodes novads"),
-(NULL, 1119, "054", "Limbažu novads"),
-(NULL, 1119, "005", "Alojas novads"),
-(NULL, 1119, "086", "Salacgrīvas novads"),
-(NULL, 1119, "058", "Ludzas novads"),
-(NULL, 1119, "044", "Kārsavas novads"),
-(NULL, 1119, "110", "Zilupes novads"),
-(NULL, 1119, "023", "Ciblas novads"),
-(NULL, 1119, "059", "Madonas novads"),
-(NULL, 1119, "021", "Cesvaines novads"),
-(NULL, 1119, "057", "Lubānas novads"),
-(NULL, 1119, "102", "Varakļānu novads"),
-(NULL, 1119, "030", "Ērgļu novads"),
-(NULL, 1119, "067", "Ogres novads"),
-(NULL, 1119, "035", "Ikšķiles novads"),
-(NULL, 1119, "051", "Ķeguma novads"),
-(NULL, 1119, "053", "Lielvārdes novads"),
-(NULL, 1119, "073", "Preiļu novads"),
-(NULL, 1119, "056", "Līvānu novads"),
-(NULL, 1119, "078", "Riebiņu novads"),
-(NULL, 1119, "103", "Vārkavas novads"),
-(NULL, 1119, "077", "RÄ“zeknes novads"),
-(NULL, 1119, "109", "Viļānu novads"),
-(NULL, 1119, "013", "Baldones novads"),
-(NULL, 1119, "052", "Ķekavas novads"),
-(NULL, 1119, "068", "Olaines novads"),
-(NULL, 1119, "087", "Salaspils novads"),
-(NULL, 1119, "089", "Saulkrastu novads"),
-(NULL, 1119, "091", "Siguldas novads"),
-(NULL, 1119, "037", "Inčukalna novads"),
-(NULL, 1119, "011", "Ādažu novads"),
-(NULL, 1119, "012", "Babītes novads"),
-(NULL, 1119, "020", "Carnikavas novads"),
-(NULL, 1119, "031", "Garkalnes novads"),
-(NULL, 1119, "048", "Krimuldas novads"),
-(NULL, 1119, "061", "Mālpils novads"),
-(NULL, 1119, "062", "Mārupes novads"),
-(NULL, 1119, "080", "Ropažu novads"),
-(NULL, 1119, "090", "SÄ“jas novads"),
-(NULL, 1119, "095", "Stopiņu novads"),
-(NULL, 1119, "088", "Saldus novads"),
-(NULL, 1119, "018", "Brocēnu novads"),
-(NULL, 1119, "097", "Talsu novads"),
-(NULL, 1119, "027", "Dundagas novads"),
-(NULL, 1119, "063", "MÄ“rsraga novads"),
-(NULL, 1119, "079", "Rojas novads"),
-(NULL, 1119, "099", "Tukuma novads"),
-(NULL, 1119, "043", "Kandavas novads"),
-(NULL, 1119, "029", "Engures novads"),
-(NULL, 1119, "040", "Jaunpils novads"),
-(NULL, 1119, "101", "Valkas novads"),
-(NULL, 1119, "094", "Smiltenes novads"),
-(NULL, 1119, "096", "Strenču novads"),
-(NULL, 1119, "045", "Kocēnu novads"),
-(NULL, 1119, "060", "Mazsalacas novads"),
-(NULL, 1119, "084", "RÅ«jienas novads"),
-(NULL, 1119, "017", "Beverīnas novads"),
-(NULL, 1119, "019", "Burtnieku novads"),
-(NULL, 1119, "064", "Naukšēnu novads"),
-(NULL, 1119, "106", "Ventspils novads"),
-(NULL, 1119, "JKB", "JÄ“kabpils"),
-(NULL, 1119, "VMR", "Valmiera"),
-
--- CRM-13314 Added States for Uruguay
-(NULL, 1229, "FL", "Florida"),
-(NULL, 1229, "RN", "Rio Negro"),
-(NULL, 1229, "SJ", "San Jose"),
-
--- Added Nigeria States(CRM-14183)
-(NULL, 1157, "PL", "Plateau"),
-
-
--- CRM-14493 Added State for Greece
-(NULL, 1085, "61", "Pieria"),
-
--- CRM-14843 Added States for Chile and Modify Santiago Metropolitan for consistency
-(NULL, 1044, "LR", "Los Rios"),
-(NULL, 1044, "AP", "Arica y Parinacota"),
-
--- Add missing Peruvian State (Amazonas)
-(NULL, 1169, "AMA", "Amazonas"),
-
--- Add missing Indonesian provinces (Kalimantan Tengah, Sulawesi Barat, Kalimantan Utara) and revised outdated names in code above
-(NULL, 1102, "KT", "Kalimantan Tengah"),
-(NULL, 1102, "SR", "Sulawesi Barat"),
-(NULL, 1102, "KU", "Kalimantan Utara"),
-
--- Add missing Slovenian municipalities
-(NULL, 1193, "86", "Ankaran"),
-(NULL, 1193, "87", "Apače"),
-(NULL, 1193, "88", "Cirkulane"),
-(NULL, 1193, "89", "Gorje"),
-(NULL, 1193, "90", "Kostanjevica na Krki"),
-(NULL, 1193, "91", "Log-Dragomer"),
-(NULL, 1193, "92", "Makole"),
-(NULL, 1193, "93", "Mirna"),
-(NULL, 1193, "94", "Mokronog-Trebelno"),
-(NULL, 1193, "95", "Odranci"),
-(NULL, 1193, "96", "Oplotnica"),
-(NULL, 1193, "97", "Ormož"),
-(NULL, 1193, "98", "Osilnica"),
-(NULL, 1193, "99", "Pesnica"),
-(NULL, 1193, "100", "Piran"),
-(NULL, 1193, "101", "Pivka"),
-(NULL, 1193, "102", "Podčetrtek"),
-(NULL, 1193, "103", "Podlehnik"),
-(NULL, 1193, "104", "Podvelka"),
-(NULL, 1193, "105", "Poljčane"),
-(NULL, 1193, "106", "Polzela"),
-(NULL, 1193, "107", "Postojna"),
-(NULL, 1193, "108", "Prebold"),
-(NULL, 1193, "109", "Preddvor"),
-(NULL, 1193, "110", "Prevalje"),
-(NULL, 1193, "111", "Ptuj"),
-(NULL, 1193, "112", "Puconci"),
-(NULL, 1193, "113", "Rače-Fram"),
-(NULL, 1193, "114", "Radeče"),
-(NULL, 1193, "115", "Radenci"),
-(NULL, 1193, "139", "Radlje ob Dravi"),
-(NULL, 1193, "145", "Radovljica"),
-(NULL, 1193, "171", "Ravne na Koroškem"),
-(NULL, 1193, "172", "Razkrižje"),
-(NULL, 1193, "173", "Rečica ob Savinji"),
-(NULL, 1193, "174", "Renče-Vogrsko"),
-(NULL, 1193, "175", "Ribnica"),
-(NULL, 1193, "176", "Ribnica na Pohorju"),
-(NULL, 1193, "177", "Rogaška Slatina"),
-(NULL, 1193, "178", "Rogašovci"),
-(NULL, 1193, "179", "Rogatec"),
-(NULL, 1193, "180", "Ruše"),
-(NULL, 1193, "195", "Selnica ob Dravi"),
-(NULL, 1193, "196", "Semič"),
-(NULL, 1193, "197", "Å entrupert"),
-(NULL, 1193, "198", "Sevnica"),
-(NULL, 1193, "199", "Sežana"),
-(NULL, 1193, "200", "Slovenj Gradec"),
-(NULL, 1193, "201", "Slovenska Bistrica"),
-(NULL, 1193, "202", "Slovenske Konjice"),
-(NULL, 1193, "203", "Šmarješke Toplice"),
-(NULL, 1193, "204", "Sodražica"),
-(NULL, 1193, "205", "Solčava"),
-(NULL, 1193, "206", "Središče ob Dravi"),
-(NULL, 1193, "207", "Starše"),
-(NULL, 1193, "208", "Straža"),
-(NULL, 1193, "209", "Sveta Trojica v Slovenskih goricah"),
-(NULL, 1193, "210", "Sveti Jurij v Slovenskih goricah"),
-(NULL, 1193, "211", "Sveti Tomaž"),
-(NULL, 1193, "212", "Vodice"),
-
--- CRM-16452 Missing administrative divisions for Georgia
-(NULL, 1081, "AB", "Abkhazia"),
-(NULL, 1081, "AJ", "Adjara"),
-(NULL, 1081, "TB", "Tbilisi"),
-(NULL, 1081, "GU", "Guria"),
-(NULL, 1081, "IM", "Imereti"),
-(NULL, 1081, "KA", "Kakheti"),
-(NULL, 1081, "KK", "Kvemo Kartli"),
-(NULL, 1081, "MM", "Mtskheta-Mtianeti"),
-(NULL, 1081, "RL", "Racha-Lechkhumi and Kvemo Svaneti"),
-(NULL, 1081, "SZ", "Samegrelo-Zemo Svaneti"),
-(NULL, 1081, "SJ", "Samtskhe-Javakheti"),
-(NULL, 1081, "SK", "Shida Kartli"),
-(NULL, 1074, "C", "Central"),
-
--- CRM-17136 Add missing Pakistani Province (Punjab)
-(NULL, 1163, "PB", "Punjab"),
-
--- CRM-17184
-(NULL, 1066, "LI", "La Libertad"),
-(NULL, 1066, "PA", "La Paz"),
-(NULL, 1066, "UN", "La Union"),
-
--- CRM-17660 Add missing Cameroon Provinces
-(NULL, 1038, "LT", "Littoral"),
-(NULL, 1038, "NW", "Nord-Ouest"),
-
--- Add Indian province of Telangana
-(NULL, 1101, "TG", "Telangana"),
-
--- CRM-17800
-(NULL, 1187, "04", "Ash Sharqiyah"),
-
--- CRM-19134 Missing French overseas departments.
-(NULL, 1076, "GP", "Guadeloupe"),
-(NULL, 1076, "MQ", "Martinique"),
-(NULL, 1076, "GF", "Guyane"),
-(NULL, 1076, "RE", "La Réunion"),
-(NULL, 1076, "YT", "Mayotte"),
-
--- CRM-20062 New counties of Kenya.
-(NULL, 1112, "01", "Baringo"),
-(NULL, 1112, "02", "Bomet"),
-(NULL, 1112, "03", "Bungoma"),
-(NULL, 1112, "04", "Busia"),
-(NULL, 1112, "05", "Elgeyo/Marakwet"),
-(NULL, 1112, "06", "Embu"),
-(NULL, 1112, "07", "Garissa"),
-(NULL, 1112, "08", "Homa Bay"),
-(NULL, 1112, "09", "Isiolo"),
-(NULL, 1112, "10", "Kajiado"),
-(NULL, 1112, "11", "Kakamega"),
-(NULL, 1112, "12", "Kericho"),
-(NULL, 1112, "13", "Kiambu"),
-(NULL, 1112, "14", "Kilifi"),
-(NULL, 1112, "15", "Kirinyaga"),
-(NULL, 1112, "16", "Kisii"),
-(NULL, 1112, "17", "Kisumu"),
-(NULL, 1112, "18", "Kitui"),
-(NULL, 1112, "19", "Kwale"),
-(NULL, 1112, "20", "Laikipia"),
-(NULL, 1112, "21", "Lamu"),
-(NULL, 1112, "22", "Machakos"),
-(NULL, 1112, "23", "Makueni"),
-(NULL, 1112, "24", "Mandera"),
-(NULL, 1112, "25", "Marsabit"),
-(NULL, 1112, "26", "Meru"),
-(NULL, 1112, "27", "Migori"),
-(NULL, 1112, "28", "Mombasa"),
-(NULL, 1112, "29", "Murang'a"),
-(NULL, 1112, "30", "Nairobi City"),
-(NULL, 1112, "31", "Nakuru"),
-(NULL, 1112, "32", "Nandi"),
-(NULL, 1112, "33", "Narok"),
-(NULL, 1112, "34", "Nyamira"),
-(NULL, 1112, "35", "Nyandarua"),
-(NULL, 1112, "36", "Nyeri"),
-(NULL, 1112, "37", "Samburu"),
-(NULL, 1112, "38", "Siaya"),
-(NULL, 1112, "39", "Taita/Taveta"),
-(NULL, 1112, "40", "Tana River"),
-(NULL, 1112, "41", "Tharaka-Nithi"),
-(NULL, 1112, "42", "Trans Nzoia"),
-(NULL, 1112, "43", "Turkana"),
-(NULL, 1112, "44", "Uasin Gishu"),
-(NULL, 1112, "45", "Vihiga"),
-(NULL, 1112, "46", "Wajir"),
-(NULL, 1112, "47", "West Pokot"),
-
--- CRM-19993 Fixes for ISO compliance with countries and counties
--- Add states for: India, Ghana, Sierra Leone, Saint Kitts & Nevis
-(NULL, 1101, "CH", "Chandigarh"),
-(NULL, 1083, "CP", "Central"),
-(NULL, 1083, "EP", "Eastern"),
-(NULL, 1083, "NP", "Northern"),
-(NULL, 1083, "WP", "Western"),
-(NULL, 1181, "K", "Saint Kitts"),
-(NULL, 1181, "N", "Nevis"),
-(NULL, 1190, "E", "Eastern"),
-(NULL, 1190, "N", "Northern"),
-(NULL, 1190, "S", "Southern"),
-
--- CRM-21234 Missing subdivisions of Tajikistan.
-(NULL, 1209, "DU", "Dushanbe"),
-(NULL, 1209, "RA", "Nohiyahoi Tobei Jumhurí"),
-
--- CRM-21268 Missing French overseas departments.
-(NULL, 1076, "WF", "Wallis-et-Futuna"),
-(NULL, 1076, "NC", "Nouvelle-Calédonie"),
-
--- CRM-21532 Add French state/departments
-(NULL, 1076, "52", "Haute-Marne"),
-
--- Add states for: Barbados and Antigua and Barbuda
-(NULL, 1009, "03", "Saint George"),
-(NULL, 1009, "04", "Saint John"),
-(NULL, 1009, "05", "Saint Mary"),
-(NULL, 1009, "06", "Saint Paul"),
-(NULL, 1009, "07", "Saint Peter"),
-(NULL, 1009, "08", "Saint Philip"),
-(NULL, 1009, "10", "Barbuda"),
-(NULL, 1009, "11", "Redonda"),
-(NULL, 1018, "01", "Christ Church"),
-(NULL, 1018, "02", "Saint Andrew"),
-(NULL, 1018, "03", "Saint George"),
-(NULL, 1018, "04", "Saint James"),
-(NULL, 1018, "05", "Saint John"),
-(NULL, 1018, "06", "Saint Joseph"),
-(NULL, 1018, "07", "Saint Lucy"),
-(NULL, 1018, "08", "Saint Michael"),
-(NULL, 1018, "09", "Saint Peter"),
-(NULL, 1018, "10", "Saint Philip"),
-(NULL, 1018, "11", "Saint Thomas"),
-
--- CRM-21837 - Missing states for Gabon
-(NULL, 1080, "01", "Estuaire"),
-(NULL, 1080, "02", "Haut-Ogooué"),
-(NULL, 1080, "03", "Moyen-Ogooué"),
-(NULL, 1080, "04", "Ngounié"),
-(NULL, 1080, "05", "Nyanga"),
-(NULL, 1080, "06", "Ogooué-Ivindo"),
-(NULL, 1080, "07", "Ogooué-Lolo"),
-(NULL, 1080, "08", "Ogooué-Maritime"),
-(NULL, 1080, "09", "Woleu-Ntem"),
-
--- dev/Core#131 Missing UK State
-(NULL, 1226, "MON", "Monmouthshire"),
-
--- dev/core#2027 Missing subdivisions for Northern Ireland and Wales
-(NULL, 1226, "ANN", "Antrim and Newtownabbey"),
-(NULL, 1226, "AND", "Ards and North Down"),
-(NULL, 1226, "ABC", "Armagh City, Banbridge and Craigavon"),
-(NULL, 1226, "BFS", "Belfast"),
-(NULL, 1226, "CCG", "Causeway Coast and Glens"),
-(NULL, 1226, "DRS", "Derry City and Strabane"),
-(NULL, 1226, "FMO", "Fermanagh and Omagh"),
-(NULL, 1226, "LBC", "Lisburn and Castlereagh"),
-(NULL, 1226, "MEA", "Mid and East Antrim"),
-(NULL, 1226, "MUL", "Mid Ulster"),
-(NULL, 1226, "NMD", "Newry, Mourne and Down"),
-
-(NULL, 1226, "BGE", "Bridgend"),
-(NULL, 1226, "CAY", "Caerphilly"),
-(NULL, 1226, "CRF", "Cardiff"),
-(NULL, 1226, "CMN", "Carmarthenshire"),
-(NULL, 1226, "CGN", "Ceredigion"),
-(NULL, 1226, "CWY", "Conwy"),
-(NULL, 1226, "DEN", "Denbighshire"),
-(NULL, 1226, "FLN", "Flintshire"),
-(NULL, 1226, "AGY", "Isle of Anglesey"),
-(NULL, 1226, "MTY", "Merthyr Tydfil"),
-(NULL, 1226, "NTL", "Neath Port Talbot"),
-(NULL, 1226, "NWP", "Newport"),
-(NULL, 1226, "PEM", "Pembrokeshire"),
-(NULL, 1226, "RCT", "Rhondda, Cynon, Taff"),
-(NULL, 1226, "SWA", "Swansea"),
-(NULL, 1226, "TOF", "Torfaen"),
-(NULL, 1226, "WRX", "Wrexham"),
-
--- Add missing state for South Korea
-(NULL, 1115, "50", "Sejong"),
-
--- Add missing province for Philippines
-(NULL, 1170, "DIN", "Dinagat Islands"),
-
--- Add missing state for Colombia
-(NULL, 1048, "HUI", "Huila"),
-
--- Add missing parishes for Bermuda
- (NULL, 1023, 'DEV', 'Devonshire'),
- (NULL, 1023, 'HAM', 'Hamilton Parish'),
- (NULL, 1023, 'HA', 'City of Hamilton'),
- (NULL, 1023, 'PAG', 'Paget'),
- (NULL, 1023, 'PEM', 'Pembroke'),
- (NULL, 1023, 'SG', 'Town of St. George'),
- (NULL, 1023, 'SGE', 'Saint George\'s'),
- (NULL, 1023, 'SAN', 'Sandys'),
- (NULL, 1023, 'SMI', 'Smiths'),
- (NULL, 1023, 'SOU', 'Southampton'),
- (NULL, 1023, 'WAR', 'Warwick'),
-
--- Add in missing Indian State provinces
-
-(NULL, 1101, "DH", "Dādra and Nagar Haveli and Damān and Diu"),
-(NULL, 1101, "LA", "Ladākh"),
-
- -- end of statement:
-
--- Add missing provinces for Luxembourg
-(NULL, 1126, 'CA', 'Capellen'),
-(NULL, 1126, 'CL', 'Clervaux'),
-(NULL, 1126, 'EC', 'Echternach'),
-(NULL, 1126, 'ES', 'Esch-sur-Alzette'),
-(NULL, 1126, 'ME', 'Mersch'),
-(NULL, 1126, 'RD', 'Redange-sur-Attert'),
-(NULL, 1126, 'RM', 'Remich'),
-(NULL, 1126, 'VD', 'Vianden'),
-(NULL, 1126, 'WI', 'Wiltz')
-
--- end of statement:
- ;
+(1165, "_A", "Jenin"),
+(1165, "_B", "Tubas"),
+(1165, "_C", "Tulkarm"),
+(1165, "_D", "Nablus"),
+(1165, "_E", "Qalqilya"),
+(1165, "_F", "Salfit"),
+(1165, "_G", "Ramallah and Al-Bireh"),
+(1165, "_H", "Jericho"),
+(1165, "_I", "Jerusalem"),
+(1165, "_J", "Bethlehem"),
+(1165, "_K", "Hebron"),
+(1165, "_L", "North Gaza"),
+(1165, "_M", "Gaza"),
+(1165, "_N", "Deir el-Balah"),
+(1165, "_O", "Khan Yunis"),
+(1165, "_P", "Rafah"),
+(1166, "1", "Bocas del Toro"),
+(1166, "2", "Cocle"),
+(1166, "4", "Chiriqui"),
+(1166, "5", "Darien"),
+(1166, "6", "Herrera"),
+(1166, "7", "Loa Santoa"),
+(1166, "8", "Panama"),
+(1166, "9", "Veraguas"),
+(1166, "Q", "Comarca de San Blas"),
+(1169, "CAL", "El Callao"),
+(1169, "ANC", "Ancash"),
+(1169, "APU", "Apurimac"),
+(1169, "ARE", "Arequipa"),
+(1169, "AYA", "Ayacucho"),
+(1169, "CAJ", "Cajamarca"),
+(1169, "CUS", "Cuzco"),
+(1169, "HUV", "Huancavelica"),
+(1169, "HUC", "Huanuco"),
+(1169, "ICA", "Ica"),
+(1169, "JUN", "Junin"),
+(1169, "LAL", "La Libertad"),
+(1169, "LAM", "Lambayeque"),
+(1169, "LIM", "Lima"),
+(1169, "LOR", "Loreto"),
+(1169, "MDD", "Madre de Dios"),
+(1169, "MOQ", "Moquegua"),
+(1169, "PAS", "Pasco"),
+(1169, "PIU", "Piura"),
+(1169, "PUN", "Puno"),
+(1169, "SAM", "San Martin"),
+(1169, "TAC", "Tacna"),
+(1169, "TUM", "Tumbes"),
+(1169, "UCA", "Ucayali"),
+(1169, "AMA", "Amazonas"),
+(1167, "NCD", "National Capital District (Port Moresby)"),
+(1167, "CPK", "Chimbu"),
+(1167, "EHG", "Eastern Highlands"),
+(1167, "EBR", "East New Britain"),
+(1167, "ESW", "East Sepik"),
+(1167, "EPW", "Enga"),
+(1167, "GPK", "Gulf"),
+(1167, "MPM", "Madang"),
+(1167, "MRL", "Manus"),
+(1167, "MBA", "Milne Bay"),
+(1167, "MPL", "Morobe"),
+(1167, "NIK", "New Ireland"),
+(1167, "NSA", "North Solomons"),
+(1167, "SAN", "Santaun"),
+(1167, "SHM", "Southern Highlands"),
+(1167, "WHM", "Western Highlands"),
+(1167, "WBK", "West New Britain"),
+(1170, "ABR", "Abra"),
+(1170, "AGN", "Agusan del Norte"),
+(1170, "AGS", "Agusan del Sur"),
+(1170, "AKL", "Aklan"),
+(1170, "ALB", "Albay"),
+(1170, "ANT", "Antique"),
+(1170, "APA", "Apayao"),
+(1170, "AUR", "Aurora"),
+(1170, "BAS", "Basilan"),
+(1170, "BAN", "Bataan"),
+(1170, "BTN", "Batanes"),
+(1170, "BTG", "Batangas"),
+(1170, "BEN", "Benguet"),
+(1170, "BIL", "Biliran"),
+(1170, "BOH", "Bohol"),
+(1170, "BUK", "Bukidnon"),
+(1170, "BUL", "Bulacan"),
+(1170, "CAG", "Cagayan"),
+(1170, "CAN", "Camarines Norte"),
+(1170, "CAS", "Camarines Sur"),
+(1170, "CAM", "Camiguin"),
+(1170, "CAP", "Capiz"),
+(1170, "CAT", "Catanduanes"),
+(1170, "CAV", "Cavite"),
+(1170, "CEB", "Cebu"),
+(1170, "COM", "Davao de Oro"),
+(1170, "DAV", "Davao del Norte"),
+(1170, "DAS", "Davao del Sur"),
+(1170, "DAO", "Davao Oriental"),
+(1170, "EAS", "Eastern Samar"),
+(1170, "GUI", "Guimaras"),
+(1170, "IFU", "Ifugao"),
+(1170, "ILN", "Ilocos Norte"),
+(1170, "ILS", "Ilocos Sur"),
+(1170, "ILI", "Iloilo"),
+(1170, "ISA", "Isabela"),
+(1170, "KAL", "Kalinga"),
+(1170, "LAG", "Laguna"),
+(1170, "LAN", "Lanao del Norte"),
+(1170, "LAS", "Lanao del Sur"),
+(1170, "LUN", "La Union"),
+(1170, "LEY", "Leyte"),
+(1170, "MAG", "Maguindanao"),
+(1170, "MAD", "Marinduque"),
+(1170, "MAS", "Masbate"),
+(1170, "MDC", "Mindoro Occidental"),
+(1170, "MDR", "Mindoro Oriental"),
+(1170, "MSC", "Misamis Occidental"),
+(1170, "MSR", "Misamis Oriental"),
+(1170, "MOU", "Mountain Province"),
+(1170, "NEC", "Negroe Occidental"),
+(1170, "NER", "Negros Oriental"),
+(1170, "NCO", "Cotabato"),
+(1170, "NSA", "Northern Samar"),
+(1170, "NUE", "Nueva Ecija"),
+(1170, "NUV", "Nueva Vizcaya"),
+(1170, "PLW", "Palawan"),
+(1170, "PAM", "Pampanga"),
+(1170, "PAN", "Pangasinan"),
+(1170, "QUE", "Quezon"),
+(1170, "QUI", "Quirino"),
+(1170, "RIZ", "Rizal"),
+(1170, "ROM", "Romblon"),
+(1170, "SAR", "Sarangani"),
+(1170, "SIG", "Siquijor"),
+(1170, "SOR", "Sorsogon"),
+(1170, "SCO", "South Cotabato"),
+(1170, "SLE", "Southern Leyte"),
+(1170, "SUK", "Sultan Kudarat"),
+(1170, "SLU", "Sulu"),
+(1170, "SUN", "Surigao del Norte"),
+(1170, "SUR", "Surigao del Sur"),
+(1170, "TAR", "Tarlac"),
+(1170, "TAW", "Tawi-Tawi"),
+(1170, "WSA", "Western Samar"),
+(1170, "ZMB", "Zambales"),
+(1170, "ZAN", "Zamboanga del Norte"),
+(1170, "ZAS", "Zamboanga del Sur"),
+(1170, "ZSI", "Zamboanga Sibiguey"),
+(1170, "DIN", "Dinagat Islands"),
+(1170, "MNL", "Metropolitan Manila"),
+(1163, "IS", "Islamabad Federal Capital Area"),
+(1163, "BA", "Baluchistan"),
+(1163, "NW", "Khyber Pakhtun Khawa"),
+(1163, "SD", "Sindh"),
+(1163, "TA", "Federally Administered Tribal Areas"),
+(1163, "JK", "Azad Kashmir"),
+(1163, "NA", "Gilgit-Baltistan"),
+(1163, "PB", "Punjab"),
+(1173, "01", "Aveiro"),
+(1173, "02", "Beja"),
+(1173, "03", "Braga"),
+(1173, "04", "Bragança"),
+(1173, "05", "Castelo Branco"),
+(1173, "06", "Coimbra"),
+(1173, "07", "Évora"),
+(1173, "08", "Faro"),
+(1173, "09", "Guarda"),
+(1173, "10", "Leiria"),
+(1173, "11", "Lisboa"),
+(1173, "12", "Portalegre"),
+(1173, "13", "Porto"),
+(1173, "14", "Santarém"),
+(1173, "15", "Setúbal"),
+(1173, "16", "Viana do Castelo"),
+(1173, "17", "Vila Real"),
+(1173, "18", "Viseu"),
+(1173, "20", "Região Autónoma dos Açores"),
+(1173, "30", "Região Autónoma da Madeira"),
+(1168, "ASU", "Asuncion"),
+(1168, "16", "Alto Paraguay"),
+(1168, "10", "Alto Parana"),
+(1168, "13", "Amambay"),
+(1168, "19", "Boqueron"),
+(1168, "5", "Caeguazu"),
+(1168, "6", "Caazapl"),
+(1168, "14", "Canindeyu"),
+(1168, "1", "Concepcion"),
+(1168, "3", "Cordillera"),
+(1168, "4", "Guaira"),
+(1168, "7", "Itapua"),
+(1168, "8", "Miaiones"),
+(1168, "12", "Neembucu"),
+(1168, "9", "Paraguari"),
+(1168, "15", "Presidente Hayes"),
+(1168, "2", "San Pedro"),
+(1175, "DA", "Ad Dawhah"),
+(1175, "GH", "Al Ghuwayriyah"),
+(1175, "JU", "Al Jumayliyah"),
+(1175, "KH", "Al Khawr"),
+(1175, "WA", "Al Wakrah"),
+(1175, "RA", "Ar Rayyan"),
+(1175, "JB", "Jariyan al Batnah"),
+(1175, "MS", "Madinat ash Shamal"),
+(1175, "US", "Umm Salal"),
+(1176, "B", "Bucuresti"),
+(1176, "AB", "Alba"),
+(1176, "AR", "Arad"),
+(1176, "AG", "ArgeÈ™"),
+(1176, "BC", "Bacău"),
+(1176, "BH", "Bihor"),
+(1176, "BN", "Bistrița-Năsăud"),
+(1176, "BT", "Botoșani"),
+(1176, "BV", "Brașov"),
+(1176, "BR", "Brăila"),
+(1176, "BZ", "Buzău"),
+(1176, "CS", "CaraÈ™-Severin"),
+(1176, "CL", "Călărași"),
+(1176, "CJ", "Cluj"),
+(1176, "CT", "Constanța"),
+(1176, "CV", "Covasna"),
+(1176, "DB", "Dâmbovița"),
+(1176, "DJ", "Dolj"),
+(1176, "GL", "Galați"),
+(1176, "GR", "Giurgiu"),
+(1176, "GJ", "Gorj"),
+(1176, "HR", "Harghita"),
+(1176, "HD", "Hunedoara"),
+(1176, "IL", "Ialomița"),
+(1176, "IS", "Iași"),
+(1176, "IF", "Ilfov"),
+(1176, "MM", "MaramureÈ™"),
+(1176, "MH", "Mehedinți"),
+(1176, "MS", "MureÈ™"),
+(1176, "NT", "NeamÈ›"),
+(1176, "OT", "Olt"),
+(1176, "PH", "Prahova"),
+(1176, "SM", "Satu Mare"),
+(1176, "SJ", "Sălaj"),
+(1176, "SB", "Sibiu"),
+(1176, "SV", "Suceava"),
+(1176, "TR", "Teleorman"),
+(1176, "TM", "TimiÈ™"),
+(1176, "TL", "Tulcea"),
+(1176, "VS", "Vaslui"),
+(1176, "VL", "Vâlcea"),
+(1176, "VN", "Vrancea"),
+(1177, "AD", "Adygeya, Respublika"),
+(1177, "AL", "Altay, Respublika"),
+(1177, "BA", "Bashkortostan, Respublika"),
+(1177, "BU", "Buryatiya, Respublika"),
+(1177, "CE", "Chechenskaya Respublika"),
+(1177, "CU", "Chuvashskaya Respublika"),
+(1177, "DA", "Dagestan, Respublika"),
+(1177, "IN", "Ingushskaya Respublika"),
+(1177, "KB", "Kabardino-Balkarskaya"),
+(1177, "KL", "Kalmykiya, Respublika"),
+(1177, "KC", "Karachayevo-Cherkesskaya Respublika"),
+(1177, "KR", "Kareliya, Respublika"),
+(1177, "KK", "Khakasiya, Respublika"),
+(1177, "KO", "Komi, Respublika"),
+(1177, "ME", "Mariy El, Respublika"),
+(1177, "MO", "Mordoviya, Respublika"),
+(1177, "SA", "Sakha, Respublika [Yakutiya]"),
+(1177, "SE", "Severnaya Osetiya, Respublika"),
+(1177, "TA", "Tatarstan, Respublika"),
+(1177, "TY", "Tyva, Respublika [Tuva]"),
+(1177, "UD", "Udmurtskaya Respublika"),
+(1177, "ALT", "Altayskiy kray"),
+(1177, "KHA", "Khabarovskiy kray"),
+(1177, "KDA", "Krasnodarskiy kray"),
+(1177, "KYA", "Krasnoyarskiy kray"),
+(1177, "PRI", "Primorskiy kray"),
+(1177, "STA", "Stavropol\'skiy kray"),
+(1177, "AMU", "Amurskaya oblast\'"),
+(1177, "ARK", "Arkhangel\'skaya oblast\'"),
+(1177, "AST", "Astrakhanskaya oblast\'"),
+(1177, "BEL", "Belgorodskaya oblast\'"),
+(1177, "BRY", "Bryanskaya oblast\'"),
+(1177, "CHE", "Chelyabinskaya oblast\'"),
+(1177, "ZSK", "Zabaykalsky Krai\'"),
+(1177, "IRK", "Irkutskaya oblast\'"),
+(1177, "IVA", "Ivanovskaya oblast\'"),
+(1177, "KGD", "Kaliningradskaya oblast\'"),
+(1177, "KLU", "Kaluzhskaya oblast\'"),
+(1177, "KAM", "Kamchatka Krai\'"),
+(1177, "KEM", "Kemerovskaya oblast\'"),
+(1177, "KIR", "Kirovskaya oblast\'"),
+(1177, "KOS", "Kostromskaya oblast\'"),
+(1177, "KGN", "Kurganskaya oblast\'"),
+(1177, "KRS", "Kurskaya oblast\'"),
+(1177, "LEN", "Leningradskaya oblast\'"),
+(1177, "LIP", "Lipetskaya oblast\'"),
+(1177, "MAG", "Magadanskaya oblast\'"),
+(1177, "MOS", "Moskovskaya oblast\'"),
+(1177, "MUR", "Murmanskaya oblast\'"),
+(1177, "NIZ", "Nizhegorodskaya oblast\'"),
+(1177, "NGR", "Novgorodskaya oblast\'"),
+(1177, "NVS", "Novosibirskaya oblast\'"),
+(1177, "OMS", "Omskaya oblast\'"),
+(1177, "ORE", "Orenburgskaya oblast\'"),
+(1177, "ORL", "Orlovskaya oblast\'"),
+(1177, "PNZ", "Penzenskaya oblast\'"),
+(1177, "PEK", "Perm krai\'"),
+(1177, "PSK", "Pskovskaya oblast\'"),
+(1177, "ROS", "Rostovskaya oblast\'"),
+(1177, "RYA", "Ryazanskaya oblast\'"),
+(1177, "SAK", "Sakhalinskaya oblast\'"),
+(1177, "SAM", "Samarskaya oblast\'"),
+(1177, "SAR", "Saratovskaya oblast\'"),
+(1177, "SMO", "Smolenskaya oblast\'"),
+(1177, "SVE", "Sverdlovskaya oblast\'"),
+(1177, "TAM", "Tambovskaya oblast\'"),
+(1177, "TOM", "Tomskaya oblast\'"),
+(1177, "TUL", "Tul\'skaya oblast\'"),
+(1177, "TVE", "Tverskaya oblast\'"),
+(1177, "TYU", "Tyumenskaya oblast\'"),
+(1177, "ULY", "Ul\'yanovskaya oblast\'"),
+(1177, "VLA", "Vladimirskaya oblast\'"),
+(1177, "VGG", "Volgogradskaya oblast\'"),
+(1177, "VLG", "Vologodskaya oblast\'"),
+(1177, "VOR", "Voronezhskaya oblast\'"),
+(1177, "YAR", "Yaroslavskaya oblast\'"),
+(1177, "MOW", "Moskva"),
+(1177, "SPE", "Sankt-Peterburg"),
+(1177, "YEV", "Yevreyskaya avtonomnaya oblast\'"),
+(1177, "CHU", "Chukotskiy avtonomnyy okrug"),
+(1177, "KHM", "Khanty-Mansiyskiy avtonomnyy okrug"),
+(1177, "NEN", "Nenetskiy avtonomnyy okrug"),
+(1177, "YAN", "Yamalo-Nenetskiy avtonomnyy okrug"),
+(1178, "C", "Butare"),
+(1178, "I", "Byumba"),
+(1178, "E", "Cyangugu"),
+(1178, "D", "Gikongoro"),
+(1178, "G", "Gisenyi"),
+(1178, "B", "Gitarama"),
+(1178, "J", "Kibungo"),
+(1178, "F", "Kibuye"),
+(1178, "K", "Kigali-Rural Kigali y\' Icyaro"),
+(1178, "L", "Kigali-Ville Kigali Ngari"),
+(1178, "M", "Mutara"),
+(1178, "H", "Ruhengeri"),
+(1181, "K", "Saint Kitts"),
+(1181, "N", "Nevis"),
+(1187, "11", "Al Bahah"),
+(1187, "08", "Al Hudud Ash Shamaliyah"),
+(1187, "12", "Al Jawf"),
+(1187, "03", "Al Madinah"),
+(1187, "05", "Al Qasim"),
+(1187, "01", "Ar Riyad"),
+(1187, "14", "Asir"),
+(1187, "06", "Ha\'il"),
+(1187, "09", "Jlzan"),
+(1187, "02", "Makkah"),
+(1187, "10", "Najran"),
+(1187, "07", "Tabuk"),
+(1187, "04", "Ash Sharqiyah"),
+(1194, "CT", "Capital Territory (Honiara)"),
+(1194, "GU", "Guadalcanal"),
+(1194, "IS", "Isabel"),
+(1194, "MK", "Makira"),
+(1194, "ML", "Malaita"),
+(1194, "TE", "Temotu"),
+(1200, "23", "A\'ali an Nil"),
+(1200, "26", "Al Bah al Ahmar"),
+(1200, "18", "Al Buhayrat"),
+(1200, "07", "Al Jazirah"),
+(1200, "03", "Al Khartum"),
+(1200, "06", "Al Qadarif"),
+(1200, "22", "Al Wahdah"),
+(1200, "04", "An Nil"),
+(1200, "08", "An Nil al Abyaq"),
+(1200, "24", "An Nil al Azraq"),
+(1200, "01", "Ash Shamallyah"),
+(1200, "17", "Bahr al Jabal"),
+(1200, "16", "Gharb al Istiwa\'iyah"),
+(1200, "14", "Gharb Ba~r al Ghazal"),
+(1200, "12", "Gharb Darfur"),
+(1200, "10", "Gharb Kurdufan"),
+(1200, "11", "Janub Darfur"),
+(1200, "13", "Janub Rurdufan"),
+(1200, "20", "Jnqall"),
+(1200, "05", "Kassala"),
+(1200, "15", "Shamal Batr al Ghazal"),
+(1200, "02", "Shamal Darfur"),
+(1200, "09", "Shamal Kurdufan"),
+(1200, "19", "Sharq al Istiwa\'iyah"),
+(1200, "25", "Sinnar"),
+(1200, "21", "Warab"),
+(1204, "K", "Blekinge län"),
+(1204, "W", "Dalarnas län"),
+(1204, "I", "Gotlands län"),
+(1204, "X", "Gävleborgs län"),
+(1204, "N", "Hallands län"),
+(1204, "Z", "Jämtlands län"),
+(1204, "F", "Jönkopings län"),
+(1204, "H", "Kalmar län"),
+(1204, "G", "Kronobergs län"),
+(1204, "BD", "Norrbottens län"),
+(1204, "M", "Skåne län"),
+(1204, "AB", "Stockholms län"),
+(1204, "D", "Södermanlands län"),
+(1204, "C", "Uppsala län"),
+(1204, "S", "Värmlands län"),
+(1204, "AC", "Västerbottens län"),
+(1204, "Y", "Västernorrlands län"),
+(1204, "U", "Västmanlands län"),
+(1204, "Q", "Västra Götalands län"),
+(1204, "T", "Örebro län"),
+(1204, "E", "Östergötlands län"),
+(1180, "SH", "Saint Helena"),
+(1180, "AC", "Ascension"),
+(1180, "TA", "Tristan da Cunha"),
+(1193, "001", "Ajdovščina"),
+(1193, "002", "Beltinci"),
+(1193, "148", "Benedikt"),
+(1193, "149", "Bistrica ob Sotli"),
+(1193, "003", "Bled"),
+(1193, "150", "Bloke"),
+(1193, "004", "Bohinj"),
+(1193, "005", "Borovnica"),
+(1193, "006", "Bovec"),
+(1193, "151", "Braslovče"),
+(1193, "007", "Brda"),
+(1193, "008", "Brezovica"),
+(1193, "009", "Brežice"),
+(1193, "152", "Cankova"),
+(1193, "011", "Celje"),
+(1193, "012", "Cerklje na Gorenjskem"),
+(1193, "013", "Cerknica"),
+(1193, "014", "Cerkno"),
+(1193, "153", "Cerkvenjak"),
+(1193, "015", "Črenšovci"),
+(1193, "016", "Črna na Koroškem"),
+(1193, "017", "ÄŒrnomelj"),
+(1193, "018", "Destrnik"),
+(1193, "019", "Divača"),
+(1193, "154", "Dobje"),
+(1193, "020", "Dobrepolje"),
+(1193, "155", "Dobrna"),
+(1193, "021", "Dobrova-Polhov Gradec"),
+(1193, "156", "Dobrovnik"),
+(1193, "022", "Dol pri Ljubljani"),
+(1193, "157", "Dolenjske Toplice"),
+(1193, "023", "Domžale"),
+(1193, "024", "Dornava"),
+(1193, "025", "Dravograd"),
+(1193, "026", "Duplek"),
+(1193, "027", "Gorenja vas-Poljane"),
+(1193, "028", "Gorišnica"),
+(1193, "029", "Gornja Radgona"),
+(1193, "030", "Gornji Grad"),
+(1193, "031", "Gornji Petrovci"),
+(1193, "158", "Grad"),
+(1193, "032", "Grosuplje"),
+(1193, "159", "Hajdina"),
+(1193, "160", "Hoče-Slivnica"),
+(1193, "161", "Hodoš"),
+(1193, "162", "Horjul"),
+(1193, "034", "Hrastnik"),
+(1193, "035", "Hrpelje-Kozina"),
+(1193, "036", "Idrija"),
+(1193, "037", "Ig"),
+(1193, "038", "Ilirska Bistrica"),
+(1193, "039", "Ivančna Gorica"),
+(1193, "040", "Izola"),
+(1193, "041", "Jesenice"),
+(1193, "163", "Jezersko"),
+(1193, "042", "Juršinci"),
+(1193, "043", "Kamnik"),
+(1193, "044", "Kanal"),
+(1193, "045", "Kidričevo"),
+(1193, "046", "Kobarid"),
+(1193, "047", "Kobilje"),
+(1193, "048", "Kočevje"),
+(1193, "049", "Komen"),
+(1193, "164", "Komenda"),
+(1193, "050", "Koper"),
+(1193, "165", "Kostel"),
+(1193, "051", "Kozje"),
+(1193, "052", "Kranj"),
+(1193, "053", "Kranjska Gora"),
+(1193, "166", "Križevci"),
+(1193, "054", "Krško"),
+(1193, "055", "Kungota"),
+(1193, "056", "Kuzma"),
+(1193, "057", "Laško"),
+(1193, "058", "Lenart"),
+(1193, "059", "Lendava"),
+(1193, "060", "Litija"),
+(1193, "061", "Ljubljana"),
+(1193, "062", "Ljubno"),
+(1193, "063", "Ljutomer"),
+(1193, "064", "Logatec"),
+(1193, "065", "Loška dolina"),
+(1193, "066", "Loški Potok"),
+(1193, "167", "Lovrenc na Pohorju"),
+(1193, "067", "Luče"),
+(1193, "068", "Lukovica"),
+(1193, "069", "Majšperk"),
+(1193, "070", "Maribor"),
+(1193, "168", "Markovci"),
+(1193, "071", "Medvode"),
+(1193, "072", "Mengeš"),
+(1193, "073", "Metlika"),
+(1193, "074", "Mežica"),
+(1193, "169", "Miklavž na Dravskem polju"),
+(1193, "075", "Miren-Kostanjevica"),
+(1193, "170", "Mirna Peč"),
+(1193, "076", "Mislinja"),
+(1193, "077", "Moravče"),
+(1193, "078", "Moravske Toplice"),
+(1193, "079", "Mozirje"),
+(1193, "080", "Murska Sobota"),
+(1193, "081", "Muta"),
+(1193, "082", "Naklo"),
+(1193, "083", "Nazarje"),
+(1193, "084", "Nova Gorica"),
+(1193, "085", "Novo mesto"),
+(1193, "181", "Sveta Ana"),
+(1193, "182", "Sveti Andraž v Slovenskih goricah"),
+(1193, "116", "Sveti Jurij"),
+(1193, "033", "Å alovci"),
+(1193, "183", "Å empeter-Vrtojba"),
+(1193, "117", "Šenčur"),
+(1193, "118", "Å entilj"),
+(1193, "119", "Å entjernej"),
+(1193, "120", "Å entjur"),
+(1193, "121", "Å kocjan"),
+(1193, "122", "Å kofja Loka"),
+(1193, "123", "Å kofljica"),
+(1193, "124", "Šmarje pri Jelšah"),
+(1193, "125", "Å martno ob Paki"),
+(1193, "194", "Å martno pri Litiji"),
+(1193, "126", "Šoštanj"),
+(1193, "127", "Å tore"),
+(1193, "184", "Tabor"),
+(1193, "010", "Tišina"),
+(1193, "128", "Tolmin"),
+(1193, "129", "Trbovlje"),
+(1193, "130", "Trebnje"),
+(1193, "185", "Trnovska vas"),
+(1193, "131", "Tržič"),
+(1193, "186", "Trzin"),
+(1193, "132", "Turnišče"),
+(1193, "133", "Velenje"),
+(1193, "187", "Velika Polana"),
+(1193, "134", "Velike Lašče"),
+(1193, "188", "Veržej"),
+(1193, "135", "Videm"),
+(1193, "136", "Vipava"),
+(1193, "137", "Vitanje"),
+(1193, "138", "Vojnik"),
+(1193, "189", "Vransko"),
+(1193, "140", "Vrhnika"),
+(1193, "141", "Vuzenica"),
+(1193, "142", "Zagorje ob Savi"),
+(1193, "143", "Zavrč"),
+(1193, "144", "Zreče"),
+(1193, "190", "Žalec"),
+(1193, "146", "Železniki"),
+(1193, "191", "Žetale"),
+(1193, "147", "Žiri"),
+(1193, "192", "Žirovnica"),
+(1193, "193", "Žužemberk"),
+(1193, "86", "Ankaran"),
+(1193, "87", "Apače"),
+(1193, "88", "Cirkulane"),
+(1193, "89", "Gorje"),
+(1193, "90", "Kostanjevica na Krki"),
+(1193, "91", "Log-Dragomer"),
+(1193, "92", "Makole"),
+(1193, "93", "Mirna"),
+(1193, "94", "Mokronog-Trebelno"),
+(1193, "95", "Odranci"),
+(1193, "96", "Oplotnica"),
+(1193, "97", "Ormož"),
+(1193, "98", "Osilnica"),
+(1193, "99", "Pesnica"),
+(1193, "100", "Piran"),
+(1193, "101", "Pivka"),
+(1193, "102", "Podčetrtek"),
+(1193, "103", "Podlehnik"),
+(1193, "104", "Podvelka"),
+(1193, "105", "Poljčane"),
+(1193, "106", "Polzela"),
+(1193, "107", "Postojna"),
+(1193, "108", "Prebold"),
+(1193, "109", "Preddvor"),
+(1193, "110", "Prevalje"),
+(1193, "111", "Ptuj"),
+(1193, "112", "Puconci"),
+(1193, "113", "Rače-Fram"),
+(1193, "114", "Radeče"),
+(1193, "115", "Radenci"),
+(1193, "139", "Radlje ob Dravi"),
+(1193, "145", "Radovljica"),
+(1193, "171", "Ravne na Koroškem"),
+(1193, "172", "Razkrižje"),
+(1193, "173", "Rečica ob Savinji"),
+(1193, "174", "Renče-Vogrsko"),
+(1193, "175", "Ribnica"),
+(1193, "176", "Ribnica na Pohorju"),
+(1193, "177", "Rogaška Slatina"),
+(1193, "178", "Rogašovci"),
+(1193, "179", "Rogatec"),
+(1193, "180", "Ruše"),
+(1193, "195", "Selnica ob Dravi"),
+(1193, "196", "Semič"),
+(1193, "197", "Å entrupert"),
+(1193, "198", "Sevnica"),
+(1193, "199", "Sežana"),
+(1193, "200", "Slovenj Gradec"),
+(1193, "201", "Slovenska Bistrica"),
+(1193, "202", "Slovenske Konjice"),
+(1193, "203", "Šmarješke Toplice"),
+(1193, "204", "Sodražica"),
+(1193, "205", "Solčava"),
+(1193, "206", "Središče ob Dravi"),
+(1193, "207", "Starše"),
+(1193, "208", "Straža"),
+(1193, "209", "Sveta Trojica v Slovenskih goricah"),
+(1193, "210", "Sveti Jurij v Slovenskih goricah"),
+(1193, "211", "Sveti Tomaž"),
+(1193, "212", "Vodice"),
+(1192, "BC", "Banskobystrický kraj"),
+(1192, "BL", "Bratislavský kraj"),
+(1192, "KI", "Košický kraj"),
+(1192, "NJ", "Nitriansky kraj"),
+(1192, "PV", "Prešovský kraj"),
+(1192, "TC", "Trenčiansky kraj"),
+(1192, "TA", "Trnavský kraj"),
+(1192, "ZI", "Žilinský kraj"),
+(1190, "W", "Western Area (Freetown)"),
+(1190, "E", "Eastern"),
+(1190, "N", "Northern"),
+(1190, "S", "Southern"),
+(1188, "DK", "Dakar"),
+(1188, "DB", "Diourbel"),
+(1188, "FK", "Fatick"),
+(1188, "KL", "Kaolack"),
+(1188, "KD", "Kolda"),
+(1188, "LG", "Louga"),
+(1188, "MT", "Matam"),
+(1188, "SL", "Saint-Louis"),
+(1188, "TC", "Tambacounda"),
+(1188, "TH", "Thies"),
+(1188, "ZG", "Ziguinchor"),
+(1195, "AW", "Awdal"),
+(1195, "BK", "Bakool"),
+(1195, "BN", "Banaadir"),
+(1195, "BY", "Bay"),
+(1195, "GA", "Galguduud"),
+(1195, "GE", "Gedo"),
+(1195, "HI", "Hiirsan"),
+(1195, "JD", "Jubbada Dhexe"),
+(1195, "JH", "Jubbada Hoose"),
+(1195, "MU", "Mudug"),
+(1195, "NU", "Nugaal"),
+(1195, "SA", "Saneag"),
+(1195, "SD", "Shabeellaha Dhexe"),
+(1195, "SH", "Shabeellaha Hoose"),
+(1195, "SO", "Sool"),
+(1195, "TO", "Togdheer"),
+(1195, "WO", "Woqooyi Galbeed"),
+(1201, "BR", "Brokopondo"),
+(1201, "CM", "Commewijne"),
+(1201, "CR", "Coronie"),
+(1201, "MA", "Marowijne"),
+(1201, "NI", "Nickerie"),
+(1201, "PM", "Paramaribo"),
+(1201, "SA", "Saramacca"),
+(1201, "SI", "Sipaliwini"),
+(1201, "WA", "Wanica"),
+(1207, "P", "Principe"),
+(1207, "S", "Sao Tome"),
+(1066, "AH", "Ahuachapan"),
+(1066, "CA", "Cabanas"),
+(1066, "CU", "Cuscatlan"),
+(1066, "CH", "Chalatenango"),
+(1066, "MO", "Morazan"),
+(1066, "SM", "San Miguel"),
+(1066, "SS", "San Salvador"),
+(1066, "SA", "Santa Ana"),
+(1066, "SV", "San Vicente"),
+(1066, "SO", "Sonsonate"),
+(1066, "US", "Usulutan"),
+(1066, "LI", "La Libertad"),
+(1066, "PA", "La Paz"),
+(1066, "UN", "La Union"),
+(1206, "HA", "Al Hasakah"),
+(1206, "LA", "Al Ladhiqiyah"),
+(1206, "QU", "Al Qunaytirah"),
+(1206, "RA", "Ar Raqqah"),
+(1206, "SU", "As Suwayda\'"),
+(1206, "DR", "Dar\'a"),
+(1206, "DY", "Dayr az Zawr"),
+(1206, "DI", "Dimashq"),
+(1206, "HL", "Halab"),
+(1206, "HM", "Hamah"),
+(1206, "HI", "Jim\'"),
+(1206, "ID", "Idlib"),
+(1206, "RD", "Rif Dimashq"),
+(1206, "TA", "Tarts"),
+(1203, "HH", "Hhohho"),
+(1203, "LU", "Lubombo"),
+(1203, "MA", "Manzini"),
+(1203, "SH", "Shiselweni"),
+(1043, "BA", "Batha"),
+(1043, "BI", "Biltine"),
+(1043, "BET", "Borkou-Ennedi-Tibesti"),
+(1043, "CB", "Chari-Baguirmi"),
+(1043, "GR", "Guera"),
+(1043, "KA", "Kanem"),
+(1043, "LC", "Lac"),
+(1043, "LO", "Logone-Occidental"),
+(1043, "LR", "Logone-Oriental"),
+(1043, "MK", "Mayo-Kebbi"),
+(1043, "MC", "Moyen-Chari"),
+(1043, "OD", "Ouaddai"),
+(1043, "SA", "Salamat"),
+(1043, "TA", "Tandjile"),
+(1214, "K", "Kara"),
+(1214, "M", "Maritime (Region)"),
+(1214, "S", "Savannes"),
+(1211, "10", "Krung Thep Maha Nakhon Bangkok"),
+(1211, "S", "Phatthaya"),
+(1211, "37", "Amnat Charoen"),
+(1211, "15", "Ang Thong"),
+(1211, "31", "Buri Ram"),
+(1211, "24", "Chachoengsao"),
+(1211, "18", "Chai Nat"),
+(1211, "36", "Chaiyaphum"),
+(1211, "22", "Chanthaburi"),
+(1211, "50", "Chiang Mai"),
+(1211, "57", "Chiang Rai"),
+(1211, "20", "Chon Buri"),
+(1211, "86", "Chumphon"),
+(1211, "46", "Kalasin"),
+(1211, "62", "Kamphasng Phet"),
+(1211, "71", "Kanchanaburi"),
+(1211, "40", "Khon Kaen"),
+(1211, "81", "Krabi"),
+(1211, "52", "Lampang"),
+(1211, "51", "Lamphun"),
+(1211, "42", "Loei"),
+(1211, "16", "Lop Buri"),
+(1211, "58", "Mae Hong Son"),
+(1211, "44", "Maha Sarakham"),
+(1211, "49", "Mukdahan"),
+(1211, "26", "Nakhon Nayok"),
+(1211, "73", "Nakhon Pathom"),
+(1211, "48", "Nakhon Phanom"),
+(1211, "30", "Nakhon Ratchasima"),
+(1211, "60", "Nakhon Sawan"),
+(1211, "80", "Nakhon Si Thammarat"),
+(1211, "55", "Nan"),
+(1211, "96", "Narathiwat"),
+(1211, "39", "Nong Bua Lam Phu"),
+(1211, "43", "Nong Khai"),
+(1211, "12", "Nonthaburi"),
+(1211, "13", "Pathum Thani"),
+(1211, "94", "Pattani"),
+(1211, "82", "Phangnga"),
+(1211, "93", "Phatthalung"),
+(1211, "56", "Phayao"),
+(1211, "67", "Phetchabun"),
+(1211, "76", "Phetchaburi"),
+(1211, "66", "Phichit"),
+(1211, "65", "Phitsanulok"),
+(1211, "54", "Phrae"),
+(1211, "14", "Phra Nakhon Si Ayutthaya"),
+(1211, "83", "Phuket"),
+(1211, "25", "Prachin Buri"),
+(1211, "77", "Prachuap Khiri Khan"),
+(1211, "85", "Ranong"),
+(1211, "70", "Ratchaburi"),
+(1211, "21", "Rayong"),
+(1211, "45", "Roi Et"),
+(1211, "27", "Sa Kaeo"),
+(1211, "47", "Sakon Nakhon"),
+(1211, "11", "Samut Prakan"),
+(1211, "74", "Samut Sakhon"),
+(1211, "75", "Samut Songkhram"),
+(1211, "19", "Saraburi"),
+(1211, "91", "Satun"),
+(1211, "17", "Sing Buri"),
+(1211, "33", "Si Sa Ket"),
+(1211, "90", "Songkhla"),
+(1211, "64", "Sukhothai"),
+(1211, "72", "Suphan Buri"),
+(1211, "84", "Surat Thani"),
+(1211, "32", "Surin"),
+(1211, "63", "Tak"),
+(1211, "92", "Trang"),
+(1211, "23", "Trat"),
+(1211, "34", "Ubon Ratchathani"),
+(1211, "41", "Udon Thani"),
+(1211, "61", "Uthai Thani"),
+(1211, "53", "Uttaradit"),
+(1211, "95", "Yala"),
+(1211, "35", "Yasothon"),
+(1209, "SU", "Sughd"),
+(1209, "KT", "Khatlon"),
+(1209, "GB", "Gorno-Badakhshan"),
+(1209, "DU", "Dushanbe"),
+(1209, "RA", "Nohiyahoi Tobei Jumhurí"),
+(1220, "A", "Ahal"),
+(1220, "B", "Balkan"),
+(1220, "D", "Dasoguz"),
+(1220, "L", "Lebap"),
+(1220, "M", "Mary"),
+(1218, "31", "Béja"),
+(1218, "13", "Ben Arous"),
+(1218, "23", "Bizerte"),
+(1218, "81", "Gabès"),
+(1218, "71", "Gafsa"),
+(1218, "32", "Jendouba"),
+(1218, "41", "Kairouan"),
+(1218, "42", "Rasserine"),
+(1218, "73", "Kebili"),
+(1218, "12", "L\'Ariana"),
+(1218, "33", "Le Ref"),
+(1218, "53", "Mahdia"),
+(1218, "14", "La Manouba"),
+(1218, "82", "Medenine"),
+(1218, "52", "Moneatir"),
+(1218, "21", "Naboul"),
+(1218, "61", "Sfax"),
+(1218, "43", "Sidi Bouxid"),
+(1218, "34", "Siliana"),
+(1218, "51", "Sousse"),
+(1218, "83", "Tataouine"),
+(1218, "72", "Tozeur"),
+(1218, "11", "Tunis"),
+(1218, "22", "Zaghouan"),
+(1219, "01", "Adana"),
+(1219, "02", "Ad yaman"),
+(1219, "03", "Afyon"),
+(1219, "04", "Ag r"),
+(1219, "68", "Aksaray"),
+(1219, "05", "Amasya"),
+(1219, "06", "Ankara"),
+(1219, "07", "Antalya"),
+(1219, "75", "Ardahan"),
+(1219, "08", "Artvin"),
+(1219, "09", "Aydin"),
+(1219, "10", "Bal kesir"),
+(1219, "74", "Bartin"),
+(1219, "72", "Batman"),
+(1219, "69", "Bayburt"),
+(1219, "11", "Bilecik"),
+(1219, "12", "Bingol"),
+(1219, "13", "Bitlis"),
+(1219, "14", "Bolu"),
+(1219, "15", "Burdur"),
+(1219, "16", "Bursa"),
+(1219, "17", "Canakkale"),
+(1219, "18", "Cankir"),
+(1219, "19", "Corum"),
+(1219, "20", "Denizli"),
+(1219, "21", "Diyarbakir"),
+(1219, "81", "Duzce"),
+(1219, "22", "Edirne"),
+(1219, "23", "Elazig"),
+(1219, "24", "Erzincan"),
+(1219, "25", "Erzurum"),
+(1219, "26", "Eskis\'ehir"),
+(1219, "27", "Gaziantep"),
+(1219, "28", "Giresun"),
+(1219, "29", "Gms\'hane"),
+(1219, "30", "Hakkari"),
+(1219, "31", "Hatay"),
+(1219, "76", "Igidir"),
+(1219, "32", "Isparta"),
+(1219, "33", "Icel"),
+(1219, "34", "Istanbul"),
+(1219, "35", "Izmir"),
+(1219, "46", "Kahramanmaras"),
+(1219, "78", "Karabk"),
+(1219, "70", "Karaman"),
+(1219, "36", "Kars"),
+(1219, "37", "Kastamonu"),
+(1219, "38", "Kayseri"),
+(1219, "71", "Kirikkale"),
+(1219, "39", "Kirklareli"),
+(1219, "40", "Kirs\'ehir"),
+(1219, "79", "Kilis"),
+(1219, "41", "Kocaeli"),
+(1219, "42", "Konya"),
+(1219, "43", "Ktahya"),
+(1219, "44", "Malatya"),
+(1219, "45", "Manisa"),
+(1219, "47", "Mardin"),
+(1219, "48", "Mugila"),
+(1219, "49", "Mus"),
+(1219, "50", "Nevs\'ehir"),
+(1219, "51", "Nigide"),
+(1219, "52", "Ordu"),
+(1219, "80", "Osmaniye"),
+(1219, "53", "Rize"),
+(1219, "54", "Sakarya"),
+(1219, "55", "Samsun"),
+(1219, "56", "Siirt"),
+(1219, "57", "Sinop"),
+(1219, "58", "Sivas"),
+(1219, "63", "S\'anliurfa"),
+(1219, "73", "S\'rnak"),
+(1219, "59", "Tekirdag"),
+(1219, "60", "Tokat"),
+(1219, "61", "Trabzon"),
+(1219, "62", "Tunceli"),
+(1219, "64", "Us\'ak"),
+(1219, "65", "Van"),
+(1219, "77", "Yalova"),
+(1219, "66", "Yozgat"),
+(1219, "67", "Zonguldak"),
+(1217, "CTT", "Couva-Tabaquite-Talparo"),
+(1217, "DMN", "Diego Martin"),
+(1217, "ETO", "Eastern Tobago"),
+(1217, "PED", "Penal-Debe"),
+(1217, "PRT", "Princes Town"),
+(1217, "RCM", "Rio Claro-Mayaro"),
+(1217, "SGE", "Sangre Grande"),
+(1217, "SJL", "San Juan-Laventille"),
+(1217, "SIP", "Siparia"),
+(1217, "TUP", "Tunapuna-Piarco"),
+(1217, "WTO", "Western Tobago"),
+(1217, "ARI", "Arima"),
+(1217, "CHA", "Chaguanas"),
+(1217, "PTF", "Point Fortin"),
+(1217, "POS", "Port of Spain"),
+(1217, "SFO", "San Fernando"),
+(1063, "AL", "Aileu"),
+(1063, "AN", "Ainaro"),
+(1063, "BA", "Bacucau"),
+(1063, "BO", "Bobonaro"),
+(1063, "CO", "Cova Lima"),
+(1063, "DI", "Dili"),
+(1063, "ER", "Ermera"),
+(1063, "LA", "Laulem"),
+(1063, "LI", "Liquica"),
+(1063, "MT", "Manatuto"),
+(1063, "MF", "Manafahi"),
+(1063, "OE", "Oecussi"),
+(1063, "VI", "Viqueque"),
+(1208, "CHA", "Changhua County"),
+(1208, "CYQ", "Chiayi County"),
+(1208, "HSQ", "Hsinchu County"),
+(1208, "HUA", "Hualien County"),
+(1208, "ILA", "Ilan County"),
+(1208, "KHQ", "Kaohsiung County"),
+(1208, "MIA", "Miaoli County"),
+(1208, "NAN", "Nantou County"),
+(1208, "PEN", "Penghu County"),
+(1208, "PIF", "Pingtung County"),
+(1208, "TXQ", "Taichung County"),
+(1208, "TNQ", "Tainan County"),
+(1208, "TPQ", "Taipei County"),
+(1208, "TTT", "Taitung County"),
+(1208, "TAO", "Taoyuan County"),
+(1208, "YUN", "Yunlin County"),
+(1208, "KEE", "Keelung City"),
+(1208, "TXG", "Taichung City"),
+(1208, "KHH", "Kaohsiung City"),
+(1208, "TPE", "Taipei City"),
+(1208, "CYI", "Chiayi City"),
+(1208, "HSZ", "Hsinchu City"),
+(1208, "TNN", "Tainan City"),
+(1210, "01", "Arusha"),
+(1210, "02", "Dar-es-Salaam"),
+(1210, "03", "Dodoma"),
+(1210, "04", "Iringa"),
+(1210, "05", "Kagera"),
+(1210, "06", "Kaskazini Pemba"),
+(1210, "07", "Kaskazini Unguja"),
+(1210, "08", "Xigoma"),
+(1210, "09", "Kilimanjaro"),
+(1210, "10", "Rusini Pemba"),
+(1210, "11", "Kusini Unguja"),
+(1210, "12", "Lindi"),
+(1210, "26", "Manyara"),
+(1210, "13", "Mara"),
+(1210, "14", "Mbeya"),
+(1210, "15", "Mjini Magharibi"),
+(1210, "16", "Morogoro"),
+(1210, "17", "Mtwara"),
+(1210, "19", "Pwani"),
+(1210, "20", "Rukwa"),
+(1210, "21", "Ruvuma"),
+(1210, "22", "Shinyanga"),
+(1210, "23", "Singida"),
+(1210, "24", "Tabora"),
+(1210, "25", "Tanga"),
+(1224, "71", "Cherkas\'ka Oblast\'"),
+(1224, "74", "Chernihivs\'ka Oblast\'"),
+(1224, "77", "Chernivets\'ka Oblast\'"),
+(1224, "12", "Dnipropetrovs\'ka Oblast\'"),
+(1224, "14", "Donets\'ka Oblast\'"),
+(1224, "26", "Ivano-Frankivs\'ka Oblast\'"),
+(1224, "63", "Kharkivs\'ka Oblast\'"),
+(1224, "65", "Khersons\'ka Oblast\'"),
+(1224, "68", "Khmel\'nyts\'ka Oblast\'"),
+(1224, "35", "Kirovohrads\'ka Oblast\'"),
+(1224, "32", "Kyivs\'ka Oblast\'"),
+(1224, "09", "Luhans\'ka Oblast\'"),
+(1224, "46", "L\'vivs\'ka Oblast\'"),
+(1224, "48", "Mykolaivs\'ka Oblast\'"),
+(1224, "51", "Odes \'ka Oblast\'"),
+(1224, "53", "Poltavs\'ka Oblast\'"),
+(1224, "56", "Rivnens\'ka Oblast\'"),
+(1224, "59", "Sums \'ka Oblast\'"),
+(1224, "61", "Ternopil\'s\'ka Oblast\'"),
+(1224, "05", "Vinnyts\'ka Oblast\'"),
+(1224, "07", "Volyos\'ka Oblast\'"),
+(1224, "21", "Zakarpats\'ka Oblast\'"),
+(1224, "23", "Zaporiz\'ka Oblast\'"),
+(1224, "18", "Zhytomyrs\'ka Oblast\'"),
+(1224, "43", "Respublika Krym"),
+(1224, "30", "Kyiv"),
+(1224, "40", "Sevastopol"),
+(1223, "301", "Adjumani"),
+(1223, "302", "Apac"),
+(1223, "303", "Arua"),
+(1223, "201", "Bugiri"),
+(1223, "401", "Bundibugyo"),
+(1223, "402", "Bushenyi"),
+(1223, "202", "Busia"),
+(1223, "304", "Gulu"),
+(1223, "403", "Hoima"),
+(1223, "203", "Iganga"),
+(1223, "204", "Jinja"),
+(1223, "404", "Kabale"),
+(1223, "405", "Kabarole"),
+(1223, "213", "Kaberamaido"),
+(1223, "101", "Kalangala"),
+(1223, "102", "Kampala"),
+(1223, "205", "Kamuli"),
+(1223, "413", "Kamwenge"),
+(1223, "414", "Kanungu"),
+(1223, "206", "Kapchorwa"),
+(1223, "406", "Kasese"),
+(1223, "207", "Katakwi"),
+(1223, "112", "Kayunga"),
+(1223, "407", "Kibaale"),
+(1223, "103", "Kiboga"),
+(1223, "408", "Kisoro"),
+(1223, "305", "Kitgum"),
+(1223, "306", "Kotido"),
+(1223, "208", "Kumi"),
+(1223, "415", "Kyenjojo"),
+(1223, "307", "Lira"),
+(1223, "104", "Luwero"),
+(1223, "105", "Masaka"),
+(1223, "409", "Masindi"),
+(1223, "214", "Mayuge"),
+(1223, "209", "Mbale"),
+(1223, "410", "Mbarara"),
+(1223, "308", "Moroto"),
+(1223, "309", "Moyo"),
+(1223, "106", "Mpigi"),
+(1223, "107", "Mubende"),
+(1223, "108", "Mukono"),
+(1223, "311", "Nakapiripirit"),
+(1223, "109", "Nakasongola"),
+(1223, "310", "Nebbi"),
+(1223, "411", "Ntungamo"),
+(1223, "312", "Pader"),
+(1223, "210", "Pallisa"),
+(1223, "110", "Rakai"),
+(1223, "412", "Rukungiri"),
+(1223, "111", "Sembabule"),
+(1223, "215", "Sironko"),
+(1223, "211", "Soroti"),
+(1223, "212", "Tororo"),
+(1223, "113", "Wakiso"),
+(1223, "313", "Yumbe"),
+(1227, "81", "Baker Island"),
+(1227, "84", "Howland Island"),
+(1227, "86", "Jarvis Island"),
+(1227, "67", "Johnston Atoll"),
+(1227, "89", "Kingman Reef"),
+(1227, "71", "Midway Islands"),
+(1227, "76", "Navassa Island"),
+(1227, "95", "Palmyra Atoll"),
+(1227, "79", "Wake Island"),
+(1229, "AR", "Artigsa"),
+(1229, "CA", "Canelones"),
+(1229, "CL", "Cerro Largo"),
+(1229, "CO", "Colonia"),
+(1229, "DU", "Durazno"),
+(1229, "FS", "Flores"),
+(1229, "LA", "Lavalleja"),
+(1229, "MA", "Maldonado"),
+(1229, "MO", "Montevideo"),
+(1229, "PA", "Paysandu"),
+(1229, "RV", "Rivera"),
+(1229, "RO", "Rocha"),
+(1229, "SA", "Salto"),
+(1229, "SO", "Soriano"),
+(1229, "TA", "Tacuarembo"),
+(1229, "TT", "Treinta y Tres"),
+(1229, "FL", "Florida"),
+(1229, "RN", "Rio Negro"),
+(1229, "SJ", "San Jose"),
+(1230, "TK", "Toshkent (city)"),
+(1230, "QR", "Qoraqalpogiston Respublikasi"),
+(1230, "AN", "Andijon"),
+(1230, "BU", "Buxoro"),
+(1230, "FA", "Farg\'ona"),
+(1230, "JI", "Jizzax"),
+(1230, "KH", "Khorazm"),
+(1230, "NG", "Namangan"),
+(1230, "NW", "Navoiy"),
+(1230, "QA", "Qashqadaryo"),
+(1230, "SA", "Samarqand"),
+(1230, "SI", "Sirdaryo"),
+(1230, "SU", "Surxondaryo"),
+(1230, "TO", "Toshkent"),
+(1230, "XO", "Xorazm"),
+(1232, "A", "Distrito Federal"),
+(1232, "B", "Anzoategui"),
+(1232, "C", "Apure"),
+(1232, "D", "Aragua"),
+(1232, "E", "Barinas"),
+(1232, "G", "Carabobo"),
+(1232, "H", "Cojedes"),
+(1232, "I", "Falcon"),
+(1232, "J", "Guarico"),
+(1232, "K", "Lara"),
+(1232, "L", "Merida"),
+(1232, "M", "Miranda"),
+(1232, "N", "Monagas"),
+(1232, "O", "Nueva Esparta"),
+(1232, "P", "Portuguesa"),
+(1232, "S", "Tachira"),
+(1232, "T", "Trujillo"),
+(1232, "X", "Vargas"),
+(1232, "U", "Yaracuy"),
+(1232, "V", "Zulia"),
+(1232, "Y", "Delta Amacuro"),
+(1232, "W", "Dependencias Federales"),
+(1233, "44", "An Giang"),
+(1233, "43", "Ba Ria - Vung Tau"),
+(1233, "53", "Bac Can"),
+(1233, "54", "Bac Giang"),
+(1233, "55", "Bac Lieu"),
+(1233, "56", "Bac Ninh"),
+(1233, "50", "Ben Tre"),
+(1233, "31", "Binh Dinh"),
+(1233, "57", "Binh Duong"),
+(1233, "58", "Binh Phuoc"),
+(1233, "40", "Binh Thuan"),
+(1233, "59", "Ca Mau"),
+(1233, "48", "Can Tho"),
+(1233, "04", "Cao Bang"),
+(1233, "60", "Da Nang, thanh pho"),
+(1233, "39", "Dong Nai"),
+(1233, "45", "Dong Thap"),
+(1233, "30", "Gia Lai"),
+(1233, "03", "Ha Giang"),
+(1233, "63", "Ha Nam"),
+(1233, "64", "Ha Noi, thu do"),
+(1233, "15", "Ha Tay"),
+(1233, "23", "Ha Tinh"),
+(1233, "61", "Hai Duong"),
+(1233, "62", "Hai Phong, thanh pho"),
+(1233, "14", "Hoa Binh"),
+(1233, "65", "Ho Chi Minh, thanh pho [Sai Gon]"),
+(1233, "66", "Hung Yen"),
+(1233, "34", "Khanh Hoa"),
+(1233, "47", "Kien Giang"),
+(1233, "28", "Kon Tum"),
+(1233, "01", "Lai Chau"),
+(1233, "35", "Lam Dong"),
+(1233, "09", "Lang Son"),
+(1233, "02", "Lao Cai"),
+(1233, "41", "Long An"),
+(1233, "67", "Nam Dinh"),
+(1233, "22", "Nghe An"),
+(1233, "18", "Ninh Binh"),
+(1233, "36", "Ninh Thuan"),
+(1233, "68", "Phu Tho"),
+(1233, "32", "Phu Yen"),
+(1233, "24", "Quang Binh"),
+(1233, "27", "Quang Nam"),
+(1233, "29", "Quang Ngai"),
+(1233, "13", "Quang Ninh"),
+(1233, "25", "Quang Tri"),
+(1233, "52", "Soc Trang"),
+(1233, "05", "Son La"),
+(1233, "37", "Tay Ninh"),
+(1233, "20", "Thai Binh"),
+(1233, "69", "Thai Nguyen"),
+(1233, "21", "Thanh Hoa"),
+(1233, "26", "Thua Thien-Hue"),
+(1233, "46", "Tien Giang"),
+(1233, "51", "Tra Vinh"),
+(1233, "07", "Tuyen Quang"),
+(1233, "49", "Vinh Long"),
+(1233, "70", "Vinh Phuc"),
+(1233, "06", "Yen Bai"),
+(1231, "MAP", "Malampa"),
+(1231, "PAM", "Penama"),
+(1231, "SAM", "Sanma"),
+(1231, "SEE", "Shefa"),
+(1231, "TAE", "Tafea"),
+(1231, "TOB", "Torba"),
+(1185, "AA", "A\'ana"),
+(1185, "AL", "Aiga-i-le-Tai"),
+(1185, "AT", "Atua"),
+(1185, "FA", "Fa\'aaaleleaga"),
+(1185, "GE", "Gaga\'emauga"),
+(1185, "GI", "Gagaifomauga"),
+(1185, "PA", "Palauli"),
+(1185, "SA", "Satupa\'itea"),
+(1185, "TU", "Tuamasaga"),
+(1185, "VF", "Va\'a-o-Fonoti"),
+(1185, "VS", "Vaisigano"),
+(1243, "CG", "Crna Gora"),
+(1242, "SR", "Srbija"),
+(1242, "KM", "Kosovo-Metohija"),
+(1242, "VO", "Vojvodina"),
+(1237, "AB", "Abyan"),
+(1237, "AD", "Adan"),
+(1237, "DA", "Ad Dali"),
+(1237, "BA", "Al Bayda\'"),
+(1237, "MU", "Al Hudaydah"),
+(1237, "MR", "Al Mahrah"),
+(1237, "MW", "Al Mahwit"),
+(1237, "AM", "Amran"),
+(1237, "DH", "Dhamar"),
+(1237, "HD", "Hadramawt"),
+(1237, "HJ", "Hajjah"),
+(1237, "IB", "Ibb"),
+(1237, "LA", "Lahij"),
+(1237, "MA", "Ma\'rib"),
+(1237, "SD", "Sa\'dah"),
+(1237, "SN", "San\'a\'"),
+(1237, "SH", "Shabwah"),
+(1237, "TA", "Ta\'izz"),
+(1196, "EC", "Eastern Cape"),
+(1196, "FS", "Free State"),
+(1196, "GT", "Gauteng"),
+(1196, "NL", "Kwazulu-Natal"),
+(1196, "MP", "Mpumalanga"),
+(1196, "NC", "Northern Cape"),
+(1196, "NP", "Limpopo"),
+(1196, "WC", "Western Cape"),
+(1196, "NW", "North West"),
+(1239, "08", "Copperbelt"),
+(1239, "04", "Luapula"),
+(1239, "09", "Lusaka"),
+(1239, "06", "North-Western"),
+(1239, 'C', 'Central'),
+(1239, 'E', 'Eastern'),
+(1239, 'M', 'Muchinga'),
+(1239, 'N', 'Northern'),
+(1239, 'S', 'Southern'),
+(1239, 'W', 'Western'),
+(1240, "BU", "Bulawayo"),
+(1240, "HA", "Harare"),
+(1240, "MA", "Manicaland"),
+(1240, "MC", "Mashonaland Central"),
+(1240, "ME", "Mashonaland East"),
+(1240, "MW", "Mashonaland West"),
+(1240, "MV", "Masvingo"),
+(1240, "MN", "Matabeleland North"),
+(1240, "MS", "Matabeleland South"),
+(1240, "MI", "Midlands"),
+(1075, "SK", "South Karelia"),
+(1075, "SO", "South Ostrobothnia"),
+(1075, "ES", "Etelä-Savo"),
+(1075, "HH", "Häme"),
+(1075, "IU", "Itä-Uusimaa"),
+(1075, "KA", "Kainuu"),
+(1075, "CO", "Central Ostrobothnia"),
+(1075, "CF", "Central Finland"),
+(1075, "KY", "Kymenlaakso"),
+(1075, "LA", "Lapland"),
+(1075, "TR", "Tampere Region"),
+(1075, "OB", "Ostrobothnia"),
+(1075, "NK", "North Karelia"),
+(1075, "NO", "Northern Ostrobothnia"),
+(1075, "NS", "Northern Savo"),
+(1075, "PH", "Päijät-Häme"),
+(1075, "SK", "Satakunta"),
+(1075, "UM", "Uusimaa"),
+(1075, "SW", "South-West Finland"),
+(1075, "AL", "Ã…land"),
+(1152, "LI", "Limburg"),
+(1098, "CW", "Central and Western"),
+(1098, "EA", "Eastern"),
+(1098, "SO", "Southern"),
+(1098, "WC", "Wan Chai"),
+(1098, "KC", "Kowloon City"),
+(1098, "KU", "Kwun Tong"),
+(1098, "SS", "Sham Shui Po"),
+(1098, "WT", "Wong Tai Sin"),
+(1098, "YT", "Yau Tsim Mong"),
+(1098, "IS", "Islands"),
+(1098, "KI", "Kwai Tsing"),
+(1098, "NO", "North"),
+(1098, "SK", "Sai Kung"),
+(1098, "ST", "Sha Tin"),
+(1098, "TP", "Tai Po"),
+(1098, "TW", "Tsuen Wan"),
+(1098, "TM", "Tuen Mun"),
+(1098, "YL", "Yuen Long"),
+(1108, "MR", "Manchester"),
+(1016, "13", "Al Manāmah (Al ‘Āşimah)"),
+(1016, "14", "Al Janūbīyah"),
+(1016, "16", "Al Wusţá"),
+(1016, "17", "Ash Shamālīyah");
 -- +--------------------------------------------------------------------+
 -- | Copyright CiviCRM LLC. All rights reserved.                        |
 -- |                                                                    |
@@ -4721,7 +4632,7 @@ INSERT INTO civicrm_tag (`color`,`description`,`label`,`name`,`parent_id`,`used_
 
 INSERT INTO civicrm_mailing_component (`body_html`,`body_text`,`component_type`,`is_active`,`is_default`,`name`,`subject`) VALUES
 ("Sample Header for HTML formatted content.","Sample Header for TEXT formatted content.","Header","1","1","Mailing Header","Descriptive Title for this Header"),
-("Sample Footer for HTML formatted content<br/><a href=\"{action.optOutUrl}\">Unsubscribe</a>  <br/> {domain.address}","to unsubscribe: {action.optOutUrl}\n{domain.address}","Footer","1","1","Mailing Footer","Descriptive Title for this Footer."),
+("Sample Footer for HTML formatted content<br/><a href=\"{action.optOutUrl}\">Opt out of any future emails</a>  <br/> {domain.address}","Opt out of any future emails: {action.optOutUrl}\n{domain.address}","Footer","1","1","Mailing Footer","Descriptive Title for this Footer."),
 ("You have a pending subscription to the {group.frontend_title} mailing list. To confirm this subscription, reply to this email or click <a href=\"{subscribe.url}\">here</a>.","You have a pending subscription to the {group.frontend_title} mailing list. To confirm this subscription, reply to this email or click on this link: {subscribe.url}","Subscribe","1","1","Subscribe Message","Subscription Confirmation Request"),
 ("Welcome. Your subscription to the {group.frontend_title} mailing list has been activated.","Welcome. Your subscription to the {group.frontend_title} mailing list has been activated.","Welcome","1","1","Welcome Message","Your Subscription has been Activated"),
 ("You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking <a href=\"{action.resubscribeUrl}\">here</a>.","You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking {action.resubscribeUrl}","Unsubscribe","1","1","Unsubscribe Message","Un-subscribe Confirmation"),
@@ -7443,7 +7354,7 @@ INSERT INTO civicrm_msg_template
 {$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
 ----------------------------------------------------------
 {foreach from=$lineItems item=line}
-{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}
+{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}
 {/foreach}
 {/if}
 
@@ -7613,7 +7524,7 @@ INSERT INTO civicrm_msg_template
             </td>
             {if $isShowTax && {contribution.tax_amount|boolean}}
               <td>
-                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}
+                {$line.line_total|crmMoney:\'{contribution.currency}\'}
               </td>
               {if $line.tax_rate || $line.tax_amount != ""}
                 <td>
@@ -7877,7 +7788,7 @@ INSERT INTO civicrm_msg_template
 {$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
 ----------------------------------------------------------
 {foreach from=$lineItems item=line}
-{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}
+{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}
 {/foreach}
 {/if}
 
@@ -8047,7 +7958,7 @@ INSERT INTO civicrm_msg_template
             </td>
             {if $isShowTax && {contribution.tax_amount|boolean}}
               <td>
-                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}
+                {$line.line_total|crmMoney:\'{contribution.currency}\'}
               </td>
               {if $line.tax_rate || $line.tax_amount != ""}
                 <td>
@@ -8284,210 +8195,7 @@ INSERT INTO civicrm_msg_template
       
       
       ('Contributions - Receipt (on-line)', '{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-{if !empty($receipt_text)}
-{$receipt_text}
-{/if}
-{if $is_pay_later}
-
-===========================================================
-{$pay_later_receipt}
-===========================================================
-{/if}
-
-{if {contribution.total_amount|boolean}}
-===========================================================
-{ts}Contribution Information{/ts}
-
-===========================================================
-{if $isShowLineItems}
-
----------------------------------------------------------
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_qty}{ts}Qty{/ts}{/capture}
-{capture assign=ts_each}{ts}Each{/ts}{/capture}
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
-{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
-{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
-{/if}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
-----------------------------------------------------------
-{foreach from=$lineItems item=line}
-{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total_inclusive|crmMoney:$currency|string_format:"%10s"}
-{/foreach}
-
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}
-  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
-    {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
-  {/foreach}
-{/if}
-
-{if $isShowTax}
-{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}
-{/if}
-
-{ts}Total Amount{/ts}: {contribution.total_amount}
-{else}
-{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}
-{/if}
-{/if}
-{if !empty($receive_date)}
-
-{ts}Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if {contribution.trxn_id|boolean}}
-{ts}Transaction #{/ts}: {contribution.trxn_id}
-{/if}
-
-{if !empty($is_recur)}
-{ts}This is a recurring contribution.{/ts}
-
-{if $cancelSubscriptionUrl}
-{ts}You can cancel future contributions at:{/ts}
-
-{$cancelSubscriptionUrl}
-
-{/if}
-
-{if $updateSubscriptionBillingUrl}
-{ts}You can update billing details for this recurring contribution at:{/ts}
-
-{$updateSubscriptionBillingUrl}
-
-{/if}
-
-{if $updateSubscriptionUrl}
-{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}
-
-{$updateSubscriptionUrl}
-
-{/if}
-{/if}
-
-{if $honor_block_is_active}
-===========================================================
-{$soft_credit_type}
-===========================================================
-{foreach from=$honoreeProfile item=value key=label}
-{$label}: {$value}
-{/foreach}
-{elseif !empty($softCreditTypes) and !empty($softCredits)}
-{foreach from=$softCreditTypes item=softCreditType key=n}
-===========================================================
-{$softCreditType}
-===========================================================
-{foreach from=$softCredits.$n item=value key=label}
-{$label}: {$value}
-{/foreach}
-{/foreach}
-{/if}
-{if !empty($pcpBlock)}
-===========================================================
-{ts}Personal Campaign Page{/ts}
-
-===========================================================
-{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-
-{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}
-
-{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}
-
-{/if}
-{if !empty($onBehalfProfile)}
-===========================================================
-{ts}On Behalf Of{/ts}
-
-===========================================================
-{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
-{$onBehalfName}: {$onBehalfValue}
-{/foreach}
-{/if}
-
-{if !empty($billingName)}
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-
-{$email}
-{elseif !empty($email)}
-===========================================================
-{ts}Registered Email{/ts}
-
-===========================================================
-{$email}
-{/if} {* End billingName or Email*}
-{if !empty($credit_card_type)}
-
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-{/if}
-
-{if !empty($selectPremium )}
-===========================================================
-{ts}Premium Information{/ts}
-
-===========================================================
-{$product_name}
-{if $option}
-{ts}Option{/ts}: {$option}
-{/if}
-{if $sku}
-{ts}SKU{/ts}: {$sku}
-{/if}
-{if $start_date}
-{ts}Start Date{/ts}: {$start_date|crmDate}
-{/if}
-{if $end_date}
-{ts}End Date{/ts}: {$end_date|crmDate}
-{/if}
-{if !empty($contact_email) OR !empty($contact_phone)}
-
-{ts}For information about this premium, contact:{/ts}
-
-{if !empty($contact_email)}
-  {$contact_email}
-{/if}
-{if !empty($contact_phone)}
-  {$contact_phone}
-{/if}
-{/if}
-{if $is_deductible AND !empty($price)}
-
-{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}
-{/if}
-
-{if !empty($customPre)}
-===========================================================
-{$customPre_grouptitle}
-
-===========================================================
-{foreach from=$customPre item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-
-
-{if !empty($customPost)}
-===========================================================
-{$customPost_grouptitle}
-
-===========================================================
-{foreach from=$customPost item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -8550,7 +8258,7 @@ INSERT INTO civicrm_msg_template
                 <td>{$line.qty}</td>
                 <td>{$line.unit_price|crmMoney:$currency}</td>
                 {if $isShowTax && {contribution.tax_amount|boolean}}
-                  <td>{$line.unit_price*$line.qty|crmMoney:$currency}</td>
+                  <td>{$line.line_total|crmMoney:$currency}</td>
                   {if $line.tax_rate || $line.tax_amount != ""}
                     <td>{$line.tax_rate|string_format:"%.2f"}%</td>
                     <td>{$line.tax_amount|crmMoney:$currency}</td>
@@ -8574,7 +8282,7 @@ INSERT INTO civicrm_msg_template
             {ts} Amount before Tax : {/ts}
           </td>
           <td {$valueStyle}>
-            {$amount-$totalTaxAmount|crmMoney:$currency}
+            {contribution.tax_exclusive_amount}
           </td>
         </tr>
 
@@ -8931,289 +8639,86 @@ INSERT INTO civicrm_msg_template
 </html>
 ', 'contribution_online_receipt', @tpl_ovid_contribution_online_receipt, 1,          0),
       ('Contributions - Receipt (on-line)', '{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-{if !empty($receipt_text)}
-{$receipt_text}
-{/if}
-{if $is_pay_later}
-
-===========================================================
-{$pay_later_receipt}
-===========================================================
-{/if}
-
-{if {contribution.total_amount|boolean}}
-===========================================================
-{ts}Contribution Information{/ts}
+', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title></title>
+</head>
+<body>
 
-===========================================================
-{if $isShowLineItems}
+{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture}
+{capture assign=labelStyle}style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
+{capture assign=valueStyle}style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
 
----------------------------------------------------------
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_qty}{ts}Qty{/ts}{/capture}
-{capture assign=ts_each}{ts}Each{/ts}{/capture}
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
-{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
-{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
-{/if}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
-----------------------------------------------------------
-{foreach from=$lineItems item=line}
-{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total_inclusive|crmMoney:$currency|string_format:"%10s"}
-{/foreach}
+<table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
 
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}
-  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
-    {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
-  {/foreach}
-{/if}
+  <!-- BEGIN HEADER -->
+  <!-- You can add table row(s) here with logo or other header elements -->
+  <!-- END HEADER -->
 
-{if $isShowTax}
-{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}
-{/if}
+  <!-- BEGIN CONTENT -->
 
-{ts}Total Amount{/ts}: {contribution.total_amount}
-{else}
-{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}
-{/if}
-{/if}
-{if !empty($receive_date)}
+  <tr>
+   <td>
+     {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {if !empty($receipt_text)}
+     <p>{$receipt_text|htmlize}</p>
+    {/if}
 
-{ts}Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if {contribution.trxn_id|boolean}}
-{ts}Transaction #{/ts}: {contribution.trxn_id}
-{/if}
+    {if $is_pay_later}
+     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}
+    {/if}
 
-{if !empty($is_recur)}
-{ts}This is a recurring contribution.{/ts}
+   </td>
+  </tr>
+</table>
+<table style="width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;">
+  {if {contribution.total_amount|boolean}}
+    <tr>
+      <th {$headerStyle}>
+        {ts}Contribution Information{/ts}
+      </th>
+    </tr>
 
-{if $cancelSubscriptionUrl}
-{ts}You can cancel future contributions at:{/ts}
-
-{$cancelSubscriptionUrl}
-
-{/if}
-
-{if $updateSubscriptionBillingUrl}
-{ts}You can update billing details for this recurring contribution at:{/ts}
-
-{$updateSubscriptionBillingUrl}
-
-{/if}
-
-{if $updateSubscriptionUrl}
-{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}
-
-{$updateSubscriptionUrl}
-
-{/if}
-{/if}
-
-{if $honor_block_is_active}
-===========================================================
-{$soft_credit_type}
-===========================================================
-{foreach from=$honoreeProfile item=value key=label}
-{$label}: {$value}
-{/foreach}
-{elseif !empty($softCreditTypes) and !empty($softCredits)}
-{foreach from=$softCreditTypes item=softCreditType key=n}
-===========================================================
-{$softCreditType}
-===========================================================
-{foreach from=$softCredits.$n item=value key=label}
-{$label}: {$value}
-{/foreach}
-{/foreach}
-{/if}
-{if !empty($pcpBlock)}
-===========================================================
-{ts}Personal Campaign Page{/ts}
-
-===========================================================
-{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-
-{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}
-
-{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}
-
-{/if}
-{if !empty($onBehalfProfile)}
-===========================================================
-{ts}On Behalf Of{/ts}
-
-===========================================================
-{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
-{$onBehalfName}: {$onBehalfValue}
-{/foreach}
-{/if}
-
-{if !empty($billingName)}
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-
-{$email}
-{elseif !empty($email)}
-===========================================================
-{ts}Registered Email{/ts}
-
-===========================================================
-{$email}
-{/if} {* End billingName or Email*}
-{if !empty($credit_card_type)}
-
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-{/if}
-
-{if !empty($selectPremium )}
-===========================================================
-{ts}Premium Information{/ts}
-
-===========================================================
-{$product_name}
-{if $option}
-{ts}Option{/ts}: {$option}
-{/if}
-{if $sku}
-{ts}SKU{/ts}: {$sku}
-{/if}
-{if $start_date}
-{ts}Start Date{/ts}: {$start_date|crmDate}
-{/if}
-{if $end_date}
-{ts}End Date{/ts}: {$end_date|crmDate}
-{/if}
-{if !empty($contact_email) OR !empty($contact_phone)}
-
-{ts}For information about this premium, contact:{/ts}
-
-{if !empty($contact_email)}
-  {$contact_email}
-{/if}
-{if !empty($contact_phone)}
-  {$contact_phone}
-{/if}
-{/if}
-{if $is_deductible AND !empty($price)}
-
-{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}
-{/if}
-
-{if !empty($customPre)}
-===========================================================
-{$customPre_grouptitle}
-
-===========================================================
-{foreach from=$customPre item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-
-
-{if !empty($customPost)}
-===========================================================
-{$customPost_grouptitle}
-
-===========================================================
-{foreach from=$customPost item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title></title>
-</head>
-<body>
-
-{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture}
-{capture assign=labelStyle}style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
-{capture assign=valueStyle}style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
-
-<table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
-
-  <!-- BEGIN HEADER -->
-  <!-- You can add table row(s) here with logo or other header elements -->
-  <!-- END HEADER -->
-
-  <!-- BEGIN CONTENT -->
-
-  <tr>
-   <td>
-     {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-    {if !empty($receipt_text)}
-     <p>{$receipt_text|htmlize}</p>
-    {/if}
-
-    {if $is_pay_later}
-     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}
-    {/if}
-
-   </td>
-  </tr>
-</table>
-<table style="width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;">
-  {if {contribution.total_amount|boolean}}
-    <tr>
-      <th {$headerStyle}>
-        {ts}Contribution Information{/ts}
-      </th>
-    </tr>
-
-    {if $isShowLineItems}
-      <tr>
-        <td colspan="2" {$valueStyle}>
-          <table>
-            <tr>
-              <th>{ts}Item{/ts}</th>
-              <th>{ts}Qty{/ts}</th>
-              <th>{ts}Each{/ts}</th>
-              {if $isShowTax && {contribution.tax_amount|boolean}}
-                <th>{ts}Subtotal{/ts}</th>
-                <th>{ts}Tax Rate{/ts}</th>
-                <th>{ts}Tax Amount{/ts}</th>
-              {/if}
-              <th>{ts}Total{/ts}</th>
-            </tr>
-            {foreach from=$lineItems item=line}
-              <tr>
-                <td>{$line.title}</td>
-                <td>{$line.qty}</td>
-                <td>{$line.unit_price|crmMoney:$currency}</td>
-                {if $isShowTax && {contribution.tax_amount|boolean}}
-                  <td>{$line.unit_price*$line.qty|crmMoney:$currency}</td>
-                  {if $line.tax_rate || $line.tax_amount != ""}
-                    <td>{$line.tax_rate|string_format:"%.2f"}%</td>
-                    <td>{$line.tax_amount|crmMoney:$currency}</td>
-                  {else}
-                    <td></td>
-                    <td></td>
-                  {/if}
-                {/if}
-                <td>
-                  {$line.line_total_inclusive|crmMoney:$currency}
-                </td>
-              </tr>
-            {/foreach}
-          </table>
-        </td>
-      </tr>
+    {if $isShowLineItems}
+      <tr>
+        <td colspan="2" {$valueStyle}>
+          <table>
+            <tr>
+              <th>{ts}Item{/ts}</th>
+              <th>{ts}Qty{/ts}</th>
+              <th>{ts}Each{/ts}</th>
+              {if $isShowTax && {contribution.tax_amount|boolean}}
+                <th>{ts}Subtotal{/ts}</th>
+                <th>{ts}Tax Rate{/ts}</th>
+                <th>{ts}Tax Amount{/ts}</th>
+              {/if}
+              <th>{ts}Total{/ts}</th>
+            </tr>
+            {foreach from=$lineItems item=line}
+              <tr>
+                <td>{$line.title}</td>
+                <td>{$line.qty}</td>
+                <td>{$line.unit_price|crmMoney:$currency}</td>
+                {if $isShowTax && {contribution.tax_amount|boolean}}
+                  <td>{$line.line_total|crmMoney:$currency}</td>
+                  {if $line.tax_rate || $line.tax_amount != ""}
+                    <td>{$line.tax_rate|string_format:"%.2f"}%</td>
+                    <td>{$line.tax_amount|crmMoney:$currency}</td>
+                  {else}
+                    <td></td>
+                    <td></td>
+                  {/if}
+                {/if}
+                <td>
+                  {$line.line_total_inclusive|crmMoney:$currency}
+                </td>
+              </tr>
+            {/foreach}
+          </table>
+        </td>
+      </tr>
 
       {if $isShowTax && {contribution.tax_amount|boolean}}
         <tr>
@@ -9221,7 +8726,7 @@ INSERT INTO civicrm_msg_template
             {ts} Amount before Tax : {/ts}
           </td>
           <td {$valueStyle}>
-            {$amount-$totalTaxAmount|crmMoney:$currency}
+            {contribution.tax_exclusive_amount}
           </td>
         </tr>
 
@@ -9608,9 +9113,9 @@ INSERT INTO civicrm_msg_template
       </table>
     {/if}
     <table style="font-family: Arial, Verdana, sans-serif;" width="100%" height="100" border="0" cellpadding="5" cellspacing="0">
-      {if $email_comment}
+      {if $userText}
         <tr>
-          <td><font size="1" colspan="3">{$email_comment}</font></td>
+          <td><font size="1" colspan="3">{$userText}</font></td>
         </tr>
       {/if}
       <tr>
@@ -9997,9 +9502,9 @@ INSERT INTO civicrm_msg_template
       </table>
     {/if}
     <table style="font-family: Arial, Verdana, sans-serif;" width="100%" height="100" border="0" cellpadding="5" cellspacing="0">
-      {if $email_comment}
+      {if $userText}
         <tr>
-          <td><font size="1" colspan="3">{$email_comment}</font></td>
+          <td><font size="1" colspan="3">{$userText}</font></td>
         </tr>
       {/if}
       <tr>
@@ -11963,124 +11468,276 @@ INSERT INTO civicrm_msg_template
 ', 'pcp_owner_notify', @tpl_ovid_pcp_owner_notify, 0,          1) ,                        
       
       
-      ('Additional Payment Receipt or Refund Notification', '{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}
-', '{if $emailGreeting}{$emailGreeting},
-{/if}
-
-{if $isRefund}
-{ts}A refund has been issued based on changes in your registration selections.{/ts}
-{else}
-{ts}Below you will find a receipt for this payment.{/ts}
-{/if}
-{if $paymentsComplete}
-{ts}Thank you for completing this payment.{/ts}
-{/if}
-
-{if $isRefund}
-===============================================================================
-
-{ts}Refund Details{/ts}
-
-===============================================================================
-{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}
-------------------------------------------------------------------------------------
-
-{else}
-===============================================================================
-
-{ts}Payment Details{/ts}
-
-===============================================================================
-{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}
-------------------------------------------------------------------------------------
-{/if}
-{if $receive_date}
-{ts}Transaction Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if !empty($trxn_id)}
-{ts}Transaction #{/ts}: {$trxn_id}
-{/if}
-{if !empty($paidBy)}
-{ts}Paid By{/ts}: {$paidBy}
-{/if}
-{if !empty($checkNumber)}
-{ts}Check Number{/ts}: {$checkNumber}
-{/if}
-
-===============================================================================
-
-{ts}Contribution Details{/ts}
-
-===============================================================================
-{if $totalAmount}
-{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}
-{/if}
-{if $totalPaid}
-{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}
-{/if}
-{if $amountOwed}
-{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}
-{/if}
-
-
-{if !empty($billingName) || !empty($address)}
-
-===============================================================================
-
-{ts}Billing Name and Address{/ts}
-
-===============================================================================
-{if !empty($billingName)}
-{$billingName}
-{/if}
-{if !empty($address)}
-{$address}
-{/if}
-{/if}
-
-{if !empty($credit_card_number)}
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===============================================================================
-
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-{/if}
-{if $component eq \'event\'}
-===============================================================================
+      ('Additional Payment Receipt or Refund Notification', '{if {financial_trxn.total_amount|raw} < 0}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if {event.title|boolean}} - {event.title}{/if} - {contact.display_name}
+', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title></title>
+</head>
+<body>
 
-{ts}Event Information and Location{/ts}
+{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture}
+{capture assign=labelStyle}style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
+{capture assign=valueStyle}style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
+{capture assign=emptyBlockStyle}style="padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;"{/capture}
+{capture assign=emptyBlockValueStyle}style="padding: 10px; border-bottom: 1px solid #999;"{/capture}
 
-===============================================================================
+ <table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
 
-{$event.event_title}
-{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
+  <!-- BEGIN HEADER -->
+  <!-- You can add table row(s) here with logo or other header elements -->
+  <!-- END HEADER -->
 
-{if !empty($event.participant_role)}
-{ts}Participant Role{/ts}: {$event.participant_role}
-{/if}
+  <!-- BEGIN CONTENT -->
+  <tr>
+    <td>
+      {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
+      {if {financial_trxn.total_amount|raw} < 0}
+        <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>
+      {else}
+        <p>{ts}Below you will find a receipt for this payment.{/ts}</p>
+        {if !{contribution.balance_amount|boolean}}
+          <p>{ts}Thank you for completing this contribution.{/ts}</p>
+        {/if}
+      {/if}
+    </td>
+  </tr>
+  <tr>
+   <td>
+    <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
+      {if {financial_trxn.total_amount|raw} < 0}
+      <tr>
+        <th {$headerStyle}>{ts}Refund Details{/ts}</th>
+      </tr>
+      <tr>
+        <td {$labelStyle}>
+        {ts}This Refund Amount{/ts}
+        </td>
+        <td {$valueStyle}>
+          {financial_trxn.total_amount}
+        </td>
+      </tr>
+    {else}
+      <tr>
+        <th {$headerStyle}>{ts}Payment Details{/ts}</th>
+      </tr>
+      <tr>
+        <td {$labelStyle}>
+        {ts}This Payment Amount{/ts}
+        </td>
+        <td {$valueStyle}>
+        {financial_trxn.total_amount}
+        </td>
+      </tr>
+    {/if}
+    {if {financial_trxn.trxn_date|boolean}}
+      <tr>
+        <td {$labelStyle}>
+        {ts}Transaction Date{/ts}
+        </td>
+        <td {$valueStyle}>
+         {financial_trxn.trxn_date}
+        </td>
+      </tr>
+    {/if}
+    {if {financial_trxn.trxn_id|boolean}}
+      <tr>
+        <td {$labelStyle}>
+        {ts}Transaction #{/ts}
+        </td>
+        <td {$valueStyle}>
+          {financial_trxn.trxn_id}
+        </td>
+      </tr>
+    {/if}
+    {if {financial_trxn.payment_instrument_id|boolean}}
+      <tr>
+        <td {$labelStyle}>
+        {ts}Paid By{/ts}
+        </td>
+        <td {$valueStyle}>
+          {financial_trxn.payment_instrument_id:label}
+        </td>
+      </tr>
+    {/if}
+    {if {financial_trxn.check_number|boolean}}
+      <tr>
+        <td {$labelStyle}>
+        {ts}Check Number{/ts}
+        </td>
+        <td {$valueStyle}>
+          {financial_trxn.check_number}
+        </td>
+      </tr>
+    {/if}
 
-{if !empty($isShowLocation)}
-{$location.address.1.display|strip_tags:false}
-{/if}{*End of isShowLocation condition*}
+  <tr>
+    <th {$headerStyle}>{ts}Contribution Details{/ts}</th>
+  </tr>
+  {if {contribution.total_amount|boolean}}
+  <tr>
+    <td {$labelStyle}>
+      {ts}Total Fee{/ts}
+    </td>
+    <td {$valueStyle}>
+      {contribution.total_amount}
+    </td>
+  </tr>
+  {/if}
+  {if {contribution.paid_amount|boolean}}
+  <tr>
+    <td {$labelStyle}>
+      {ts}Total Paid{/ts}
+    </td>
+    <td {$valueStyle}>
+      {contribution.paid_amount}
+    </td>
+  </tr>
+  {/if}
+  {if {contribution.balance_amount|boolean}}
+  <tr>
+    <td {$labelStyle}>
+      {ts}Balance Owed{/ts}
+    </td>
+    <td {$valueStyle}>
+      {contribution.balance_amount}
+    </td>
+  </tr>
+  {/if}
+  </table>
+
+  </td>
+  </tr>
+    <tr>
+      <td>
+  <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
+    {if !empty($billingName) || !empty($address)}
+        <tr>
+          <th {$headerStyle}>
+              {ts}Billing Name and Address{/ts}
+          </th>
+        </tr>
+        <tr>
+          <td colspan="2" {$valueStyle}>
+        {if !empty($billingName)}{$billingName}{/if}<br />
+        {if !empty($address)}{$address|nl2br}{/if}
+          </td>
+        </tr>
+      {/if}
+    {if {financial_trxn.pan_truncation|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Credit Card Information{/ts}
+        </th>
+      </tr>
+      <tr>
+        <td colspan="2" {$valueStyle}>
+          {financial_trxn.card_type_id:label}<br />
+          ************{financial_trxn.pan_truncation}<br />
+        </td>
+      </tr>
+    {/if}
+    {if {event.id|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Event Information and Location{/ts}
+        </th>
+      </tr>
+      <tr>
+        <td colspan="2" {$valueStyle}>
+          {event.event_title}<br />
+          {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date}{/if}{/if}
+        </td>
+      </tr>
 
-{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}
+      {if {participant.role_id|boolean}}
+      <tr>
+        <td {$labelStyle}>
+          {ts}Participant Role{/ts}
+        </td>
+        <td {$valueStyle}>
+         {participant.role_id:label}
+        </td>
+      </tr>
+      {/if}
 
-{ts}Event Contacts:{/ts}
-{foreach from=$location.phone item=phone}
-{if $phone.phone}
+      {if {event.is_show_location|boolean}}
+            <tr>
+              <td colspan="2" {$valueStyle}>
+                  {event.location}
+              </td>
+            </tr>
+          {/if}
+          {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}
+            <tr>
+              <td colspan="2" {$labelStyle}>
+                  {ts}Event Contacts:{/ts}
+              </td>
+            </tr>
 
-{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}
-{/foreach}
-{foreach from=$location.email item=eventEmail}
-{if $eventEmail.email}
+             {if {event.loc_block_id.phone_id.phone|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}
+                      {event.loc_block_id.phone_id.phone_type_id:label}
+                  {else}
+                      {ts}Phone{/ts}
+                  {/if}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}
+              </td>
+            </tr>
+          {/if}
+             {if {event.loc_block_id.phone_2_id.phone|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}
+                      {event.loc_block_id.phone_2_id.phone_type_id:label}
+                  {else}
+                      {ts}Phone{/ts}
+                  {/if}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}
+              </td>
+            </tr>
+          {/if}
 
-{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}
-{/if}
-{/if}
-', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+              {if {event.loc_block_id.email_id.email|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {ts}Email{/ts}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.email_id.email}
+              </td>
+            </tr>
+          {/if}
+
+              {if {event.loc_block_id.email_2_id.email|boolean}}
+                <tr>
+                  <td {$labelStyle}>
+                      {ts}Email{/ts}
+                  </td>
+                  <td {$valueStyle}>
+                      {event.loc_block_id.email_2_id.email}
+                  </td>
+                </tr>
+              {/if}
+            {/if}
+
+          {/if}
+        </table>
+      </td>
+    </tr>
+  </table>
+ </body>
+</html>
+', 'payment_or_refund_notification', @tpl_ovid_payment_or_refund_notification, 1,          0),
+      ('Additional Payment Receipt or Refund Notification', '{if {financial_trxn.total_amount|raw} < 0}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if {event.title|boolean}} - {event.title}{/if} - {contact.display_name}
+', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -12104,11 +11761,11 @@ INSERT INTO civicrm_msg_template
   <tr>
     <td>
       {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-      {if $isRefund}
+      {if {financial_trxn.total_amount|raw} < 0}
         <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>
       {else}
         <p>{ts}Below you will find a receipt for this payment.{/ts}</p>
-        {if $paymentsComplete}
+        {if !{contribution.balance_amount|boolean}}
           <p>{ts}Thank you for completing this contribution.{/ts}</p>
         {/if}
       {/if}
@@ -12117,7 +11774,7 @@ INSERT INTO civicrm_msg_template
   <tr>
    <td>
     <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
-    {if $isRefund}
+      {if {financial_trxn.total_amount|raw} < 0}
       <tr>
         <th {$headerStyle}>{ts}Refund Details{/ts}</th>
       </tr>
@@ -12126,7 +11783,7 @@ INSERT INTO civicrm_msg_template
         {ts}This Refund Amount{/ts}
         </td>
         <td {$valueStyle}>
-        {$refundAmount|crmMoney:$currency}
+          {financial_trxn.total_amount}
         </td>
       </tr>
     {else}
@@ -12138,47 +11795,47 @@ INSERT INTO civicrm_msg_template
         {ts}This Payment Amount{/ts}
         </td>
         <td {$valueStyle}>
-        {$paymentAmount|crmMoney:$currency}
+        {financial_trxn.total_amount}
         </td>
       </tr>
     {/if}
-    {if $receive_date}
+    {if {financial_trxn.trxn_date|boolean}}
       <tr>
         <td {$labelStyle}>
         {ts}Transaction Date{/ts}
         </td>
         <td {$valueStyle}>
-        {$receive_date|crmDate}
+         {financial_trxn.trxn_date}
         </td>
       </tr>
     {/if}
-    {if !empty($trxn_id)}
+    {if {financial_trxn.trxn_id|boolean}}
       <tr>
         <td {$labelStyle}>
         {ts}Transaction #{/ts}
         </td>
         <td {$valueStyle}>
-        {$trxn_id}
+          {financial_trxn.trxn_id}
         </td>
       </tr>
     {/if}
-    {if !empty($paidBy)}
+    {if {financial_trxn.payment_instrument_id|boolean}}
       <tr>
         <td {$labelStyle}>
         {ts}Paid By{/ts}
         </td>
         <td {$valueStyle}>
-        {$paidBy}
+          {financial_trxn.payment_instrument_id:label}
         </td>
       </tr>
     {/if}
-    {if !empty($checkNumber)}
+    {if {financial_trxn.check_number|boolean}}
       <tr>
         <td {$labelStyle}>
         {ts}Check Number{/ts}
         </td>
         <td {$valueStyle}>
-        {$checkNumber}
+          {financial_trxn.check_number}
         </td>
       </tr>
     {/if}
@@ -12186,34 +11843,34 @@ INSERT INTO civicrm_msg_template
   <tr>
     <th {$headerStyle}>{ts}Contribution Details{/ts}</th>
   </tr>
-  {if $totalAmount}
+  {if {contribution.total_amount|boolean}}
   <tr>
     <td {$labelStyle}>
       {ts}Total Fee{/ts}
     </td>
     <td {$valueStyle}>
-      {$totalAmount|crmMoney:$currency}
+      {contribution.total_amount}
     </td>
   </tr>
   {/if}
-  {if $totalPaid}
+  {if {contribution.paid_amount|boolean}}
   <tr>
     <td {$labelStyle}>
       {ts}Total Paid{/ts}
     </td>
     <td {$valueStyle}>
-      {$totalPaid|crmMoney:$currency}
+      {contribution.paid_amount}
     </td>
   </tr>
   {/if}
-  {if $amountOwed}
+  {if {contribution.balance_amount|boolean}}
   <tr>
     <td {$labelStyle}>
       {ts}Balance Owed{/ts}
     </td>
     <td {$valueStyle}>
-      {$amountOwed|crmMoney:$currency}
-    </td> {* This will be zero after final payment. *}
+      {contribution.balance_amount}
+    </td>
   </tr>
   {/if}
   </table>
@@ -12224,535 +11881,191 @@ INSERT INTO civicrm_msg_template
       <td>
   <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
     {if !empty($billingName) || !empty($address)}
-          <tr>
-            <th {$headerStyle}>
-        {ts}Billing Name and Address{/ts}
-            </th>
-          </tr>
-          <tr>
-            <td colspan="2" {$valueStyle}>
+        <tr>
+          <th {$headerStyle}>
+              {ts}Billing Name and Address{/ts}
+          </th>
+        </tr>
+        <tr>
+          <td colspan="2" {$valueStyle}>
         {if !empty($billingName)}{$billingName}{/if}<br />
         {if !empty($address)}{$address|nl2br}{/if}
-            </td>
-          </tr>
-    {/if}
-    {if !empty($credit_card_number)}
-          <tr>
-            <th {$headerStyle}>
-        {ts}Credit Card Information{/ts}
-            </th>
-          </tr>
-          <tr>
-            <td colspan="2" {$valueStyle}>
-        {$credit_card_type}<br />
-        {$credit_card_number}<br />
-        {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-            </td>
-          </tr>
+          </td>
+        </tr>
+      {/if}
+    {if {financial_trxn.pan_truncation|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Credit Card Information{/ts}
+        </th>
+      </tr>
+      <tr>
+        <td colspan="2" {$valueStyle}>
+          {financial_trxn.card_type_id:label}<br />
+          ************{financial_trxn.pan_truncation}<br />
+        </td>
+      </tr>
     {/if}
-    {if $component eq \'event\'}
-    <tr>
-      <th {$headerStyle}>
-        {ts}Event Information and Location{/ts}
-      </th>
-    </tr>
-    <tr>
-      <td colspan="2" {$valueStyle}>
-         {$event.event_title}<br />
-        {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
-      </td>
-    </tr>
+    {if {event.id|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Event Information and Location{/ts}
+        </th>
+      </tr>
+      <tr>
+        <td colspan="2" {$valueStyle}>
+          {event.event_title}<br />
+          {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date}{/if}{/if}
+        </td>
+      </tr>
 
-    {if !empty($event.participant_role)}
-    <tr>
-      <td {$labelStyle}>
-        {ts}Participant Role{/ts}
-      </td>
-      <td {$valueStyle}>
-        {$event.participant_role}
-      </td>
-    </tr>
-    {/if}
+      {if {participant.role_id|boolean}}
+      <tr>
+        <td {$labelStyle}>
+          {ts}Participant Role{/ts}
+        </td>
+        <td {$valueStyle}>
+         {participant.role_id:label}
+        </td>
+      </tr>
+      {/if}
 
-    {if !empty($isShowLocation)}
-    <tr>
-      <td colspan="2" {$valueStyle}>
-        {$location.address.1.display|nl2br}
-      </td>
-    </tr>
-    {/if}
+      {if {event.is_show_location|boolean}}
+            <tr>
+              <td colspan="2" {$valueStyle}>
+                  {event.location}
+              </td>
+            </tr>
+          {/if}
+          {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}
+            <tr>
+              <td colspan="2" {$labelStyle}>
+                  {ts}Event Contacts:{/ts}
+              </td>
+            </tr>
 
-    {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}
-    <tr>
-      <td colspan="2" {$labelStyle}>
-        {ts}Event Contacts:{/ts}
+             {if {event.loc_block_id.phone_id.phone|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}
+                      {event.loc_block_id.phone_id.phone_type_id:label}
+                  {else}
+                      {ts}Phone{/ts}
+                  {/if}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}
+              </td>
+            </tr>
+          {/if}
+             {if {event.loc_block_id.phone_2_id.phone|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}
+                      {event.loc_block_id.phone_2_id.phone_type_id:label}
+                  {else}
+                      {ts}Phone{/ts}
+                  {/if}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}
+              </td>
+            </tr>
+          {/if}
+
+              {if {event.loc_block_id.email_id.email|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {ts}Email{/ts}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.email_id.email}
+              </td>
+            </tr>
+          {/if}
+
+              {if {event.loc_block_id.email_2_id.email|boolean}}
+                <tr>
+                  <td {$labelStyle}>
+                      {ts}Email{/ts}
+                  </td>
+                  <td {$valueStyle}>
+                      {event.loc_block_id.email_2_id.email}
+                  </td>
+                </tr>
+              {/if}
+            {/if}
+
+          {/if}
+        </table>
       </td>
     </tr>
-    {foreach from=$location.phone item=phone}
-    {if $phone.phone}
-          <tr>
-            <td {$labelStyle}>
-        {if $phone.phone_type}
-        {$phone.phone_type_display}
-        {else}
-        {ts}Phone{/ts}
-        {/if}
-            </td>
-            <td {$valueStyle}>
-        {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}
-            </td>
-          </tr>
-    {/if}
-    {/foreach}
-    {foreach from=$location.email item=eventEmail}
-    {if $eventEmail.email}
-          <tr>
-            <td {$labelStyle}>
-        {ts}Email{/ts}
-            </td>
-            <td {$valueStyle}>
-        {$eventEmail.email}
-            </td>
-          </tr>
-    {/if}
-    {/foreach}
-    {/if} {*phone block close*}
-    {/if}
   </table>
-      </td>
-    </tr>
-
-    </table>
-
  </body>
 </html>
-', 'payment_or_refund_notification', @tpl_ovid_payment_or_refund_notification, 1,          0),
-      ('Additional Payment Receipt or Refund Notification', '{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}
-', '{if $emailGreeting}{$emailGreeting},
-{/if}
-
-{if $isRefund}
-{ts}A refund has been issued based on changes in your registration selections.{/ts}
-{else}
-{ts}Below you will find a receipt for this payment.{/ts}
-{/if}
-{if $paymentsComplete}
-{ts}Thank you for completing this payment.{/ts}
-{/if}
-
-{if $isRefund}
-===============================================================================
-
-{ts}Refund Details{/ts}
-
-===============================================================================
-{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}
-------------------------------------------------------------------------------------
-
-{else}
-===============================================================================
-
-{ts}Payment Details{/ts}
-
-===============================================================================
-{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}
-------------------------------------------------------------------------------------
-{/if}
-{if $receive_date}
-{ts}Transaction Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if !empty($trxn_id)}
-{ts}Transaction #{/ts}: {$trxn_id}
-{/if}
-{if !empty($paidBy)}
-{ts}Paid By{/ts}: {$paidBy}
-{/if}
-{if !empty($checkNumber)}
-{ts}Check Number{/ts}: {$checkNumber}
-{/if}
-
-===============================================================================
-
-{ts}Contribution Details{/ts}
-
-===============================================================================
-{if $totalAmount}
-{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}
-{/if}
-{if $totalPaid}
-{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}
-{/if}
-{if $amountOwed}
-{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}
-{/if}
-
-
-{if !empty($billingName) || !empty($address)}
-
-===============================================================================
-
-{ts}Billing Name and Address{/ts}
-
-===============================================================================
-{if !empty($billingName)}
-{$billingName}
-{/if}
-{if !empty($address)}
-{$address}
-{/if}
-{/if}
-
-{if !empty($credit_card_number)}
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===============================================================================
-
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-{/if}
-{if $component eq \'event\'}
-===============================================================================
-
-{ts}Event Information and Location{/ts}
-
-===============================================================================
-
-{$event.event_title}
-{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
-
-{if !empty($event.participant_role)}
-{ts}Participant Role{/ts}: {$event.participant_role}
-{/if}
-
-{if !empty($isShowLocation)}
-{$location.address.1.display|strip_tags:false}
-{/if}{*End of isShowLocation condition*}
-
-{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}
-
-{ts}Event Contacts:{/ts}
-{foreach from=$location.phone item=phone}
-{if $phone.phone}
-
-{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}
-{/foreach}
-{foreach from=$location.email item=eventEmail}
-{if $eventEmail.email}
-
-{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}
-{/if}
-{/if}
-', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+', 'payment_or_refund_notification', @tpl_ovid_payment_or_refund_notification, 0,          1) ,                        
+      
+      
+      ('Events - Registration Confirmation and Receipt (off-line)', '{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}
+', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title></title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+  <title></title>
 </head>
 <body>
 
 {capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture}
 {capture assign=labelStyle}style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
 {capture assign=valueStyle}style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
-{capture assign=emptyBlockStyle}style="padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;"{/capture}
-{capture assign=emptyBlockValueStyle}style="padding: 10px; border-bottom: 1px solid #999;"{/capture}
+{capture assign=tdfirstStyle}style="width: 180px; padding-bottom: 15px;"{/capture}
+{capture assign=tdStyle}style="width: 100px;"{/capture}
+{capture assign=participantTotalStyle}style="margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;"{/capture}
 
- <table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
+<table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
 
   <!-- BEGIN HEADER -->
   <!-- You can add table row(s) here with logo or other header elements -->
   <!-- END HEADER -->
 
   <!-- BEGIN CONTENT -->
+
   <tr>
-    <td>
-      {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-      {if $isRefund}
-        <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>
-      {else}
-        <p>{ts}Below you will find a receipt for this payment.{/ts}</p>
-        {if $paymentsComplete}
-          <p>{ts}Thank you for completing this contribution.{/ts}</p>
-        {/if}
-      {/if}
-    </td>
+   <td>
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
+
+    {if $userText}
+     <p>{$userText}</p>
+    {/if}
+
+    {if !empty($isOnWaitlist)}
+      <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>
+      <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>
+    {elseif !empty($isRequireApproval)}
+      <p>{ts}Your registration has been submitted.{/ts}</p>
+      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>
+    {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}
+     <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}
+    {/if}
+
+   </td>
   </tr>
   <tr>
    <td>
     <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
-    {if $isRefund}
-      <tr>
-        <th {$headerStyle}>{ts}Refund Details{/ts}</th>
-      </tr>
-      <tr>
-        <td {$labelStyle}>
-        {ts}This Refund Amount{/ts}
-        </td>
-        <td {$valueStyle}>
-        {$refundAmount|crmMoney:$currency}
-        </td>
-      </tr>
-    {else}
-      <tr>
-        <th {$headerStyle}>{ts}Payment Details{/ts}</th>
-      </tr>
-      <tr>
-        <td {$labelStyle}>
-        {ts}This Payment Amount{/ts}
-        </td>
-        <td {$valueStyle}>
-        {$paymentAmount|crmMoney:$currency}
-        </td>
-      </tr>
-    {/if}
-    {if $receive_date}
-      <tr>
-        <td {$labelStyle}>
-        {ts}Transaction Date{/ts}
-        </td>
-        <td {$valueStyle}>
-        {$receive_date|crmDate}
-        </td>
-      </tr>
-    {/if}
-    {if !empty($trxn_id)}
-      <tr>
-        <td {$labelStyle}>
-        {ts}Transaction #{/ts}
-        </td>
-        <td {$valueStyle}>
-        {$trxn_id}
-        </td>
-      </tr>
-    {/if}
-    {if !empty($paidBy)}
-      <tr>
-        <td {$labelStyle}>
-        {ts}Paid By{/ts}
-        </td>
-        <td {$valueStyle}>
-        {$paidBy}
-        </td>
-      </tr>
-    {/if}
-    {if !empty($checkNumber)}
-      <tr>
-        <td {$labelStyle}>
-        {ts}Check Number{/ts}
-        </td>
-        <td {$valueStyle}>
-        {$checkNumber}
-        </td>
-      </tr>
-    {/if}
-
-  <tr>
-    <th {$headerStyle}>{ts}Contribution Details{/ts}</th>
-  </tr>
-  {if $totalAmount}
-  <tr>
-    <td {$labelStyle}>
-      {ts}Total Fee{/ts}
-    </td>
-    <td {$valueStyle}>
-      {$totalAmount|crmMoney:$currency}
-    </td>
-  </tr>
-  {/if}
-  {if $totalPaid}
-  <tr>
-    <td {$labelStyle}>
-      {ts}Total Paid{/ts}
-    </td>
-    <td {$valueStyle}>
-      {$totalPaid|crmMoney:$currency}
-    </td>
-  </tr>
-  {/if}
-  {if $amountOwed}
-  <tr>
-    <td {$labelStyle}>
-      {ts}Balance Owed{/ts}
-    </td>
-    <td {$valueStyle}>
-      {$amountOwed|crmMoney:$currency}
-    </td> {* This will be zero after final payment. *}
-  </tr>
-  {/if}
-  </table>
-
-  </td>
-  </tr>
-    <tr>
-      <td>
-  <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
-    {if !empty($billingName) || !empty($address)}
-          <tr>
-            <th {$headerStyle}>
-        {ts}Billing Name and Address{/ts}
-            </th>
-          </tr>
-          <tr>
-            <td colspan="2" {$valueStyle}>
-        {if !empty($billingName)}{$billingName}{/if}<br />
-        {if !empty($address)}{$address|nl2br}{/if}
-            </td>
-          </tr>
-    {/if}
-    {if !empty($credit_card_number)}
-          <tr>
-            <th {$headerStyle}>
-        {ts}Credit Card Information{/ts}
-            </th>
-          </tr>
-          <tr>
-            <td colspan="2" {$valueStyle}>
-        {$credit_card_type}<br />
-        {$credit_card_number}<br />
-        {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-            </td>
-          </tr>
-    {/if}
-    {if $component eq \'event\'}
-    <tr>
-      <th {$headerStyle}>
-        {ts}Event Information and Location{/ts}
-      </th>
-    </tr>
-    <tr>
-      <td colspan="2" {$valueStyle}>
-         {$event.event_title}<br />
-        {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
-      </td>
-    </tr>
-
-    {if !empty($event.participant_role)}
-    <tr>
-      <td {$labelStyle}>
-        {ts}Participant Role{/ts}
-      </td>
-      <td {$valueStyle}>
-        {$event.participant_role}
-      </td>
-    </tr>
-    {/if}
-
-    {if !empty($isShowLocation)}
-    <tr>
-      <td colspan="2" {$valueStyle}>
-        {$location.address.1.display|nl2br}
-      </td>
-    </tr>
-    {/if}
-
-    {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}
-    <tr>
-      <td colspan="2" {$labelStyle}>
-        {ts}Event Contacts:{/ts}
-      </td>
-    </tr>
-    {foreach from=$location.phone item=phone}
-    {if $phone.phone}
-          <tr>
-            <td {$labelStyle}>
-        {if $phone.phone_type}
-        {$phone.phone_type_display}
-        {else}
-        {ts}Phone{/ts}
-        {/if}
-            </td>
-            <td {$valueStyle}>
-        {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}
-            </td>
-          </tr>
-    {/if}
-    {/foreach}
-    {foreach from=$location.email item=eventEmail}
-    {if $eventEmail.email}
-          <tr>
-            <td {$labelStyle}>
-        {ts}Email{/ts}
-            </td>
-            <td {$valueStyle}>
-        {$eventEmail.email}
-            </td>
-          </tr>
-    {/if}
-    {/foreach}
-    {/if} {*phone block close*}
-    {/if}
-  </table>
-      </td>
-    </tr>
-
-    </table>
-
- </body>
-</html>
-', 'payment_or_refund_notification', @tpl_ovid_payment_or_refund_notification, 0,          1) ,                        
-      
-      
-      ('Events - Registration Confirmation and Receipt (off-line)', '{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}
-', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-  <title></title>
-</head>
-<body>
-
-{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture}
-{capture assign=labelStyle}style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
-{capture assign=valueStyle}style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
-{capture assign=tdfirstStyle}style="width: 180px; padding-bottom: 15px;"{/capture}
-{capture assign=tdStyle}style="width: 100px;"{/capture}
-{capture assign=participantTotalStyle}style="margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;"{/capture}
-
-<table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
-
-  <!-- BEGIN HEADER -->
-  <!-- You can add table row(s) here with logo or other header elements -->
-  <!-- END HEADER -->
-
-  <!-- BEGIN CONTENT -->
-
-  <tr>
-   <td>
-    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-
-    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
-     <p>{$event.confirm_email_text}</p>
-    {/if}
-
-    {if !empty($isOnWaitlist)}
-      <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>
-      <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>
-    {elseif !empty($isRequireApproval)}
-      <p>{ts}Your registration has been submitted.{/ts}</p>
-      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>
-    {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}
-     <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}
-    {/if}
-
-   </td>
-  </tr>
-  <tr>
-   <td>
-    <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
-     <tr>
-      <th {$headerStyle}>
-       {ts}Event Information and Location{/ts}
-      </th>
-     </tr>
-     <tr>
-      <td colspan="2" {$valueStyle}>
-       {event.title}<br />
-       {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date}{/if}{/if}
-      </td>
-     </tr>
-
-     {if "{participant.role_id:label}" neq \'Attendee\'}
+     <tr>
+      <th {$headerStyle}>
+       {ts}Event Information and Location{/ts}
+      </th>
+     </tr>
+     <tr>
+      <td colspan="2" {$valueStyle}>
+       {event.title}<br />
+       {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date}{/if}{/if}
+      </td>
+     </tr>
+
+     {if "{participant.role_id:label}" neq \'Attendee\'}
       <tr>
        <td {$labelStyle}>
         {ts}Participant Role{/ts}
@@ -12830,7 +12143,7 @@ INSERT INTO civicrm_msg_template
        {/if}
      {/if}
 
-     {if {event.is_public|boolean}}
+     {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
       <tr>
        <td colspan="2" {$valueStyle}>
         {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
@@ -13164,8 +12477,8 @@ INSERT INTO civicrm_msg_template
    <td>
     {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
 
-    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
-     <p>{$event.confirm_email_text}</p>
+    {if $userText}
+     <p>{$userText}</p>
     {/if}
 
     {if !empty($isOnWaitlist)}
@@ -13273,7 +12586,7 @@ INSERT INTO civicrm_msg_template
        {/if}
      {/if}
 
-     {if {event.is_public|boolean}}
+     {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
       <tr>
        <td colspan="2" {$valueStyle}>
         {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
@@ -13654,7 +12967,7 @@ INSERT INTO civicrm_msg_template
 {if {event.loc_block_id.email_2_id.email|boolean}}
 {ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}
 {/if}
-{if {event.is_public|boolean}}
+{if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
 {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
 {ts}Download iCalendar entry for this event.{/ts} {$icalFeed}
 {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q="gCalendar=1&reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
@@ -13697,7 +13010,7 @@ You were registered by: {$payer.name}
 
 {foreach from=$value item=line}
 {if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}
-{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if}
+{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if}
 {/foreach}
 ----------------------------------------------------------------------------------------------------------------
 {if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:"%29s"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:"%33s"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:"%12s"}{/if}
@@ -13992,7 +13305,7 @@ You were registered by: {$payer.name}
           {/if}
         {/if}
 
-        {if {event.is_public|boolean}}
+        {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
           <tr>
             <td colspan="2" {$valueStyle}>
               {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
@@ -14056,7 +13369,7 @@ You were registered by: {$payer.name}
                               <th>{ts}Tax Amount{/ts}</th>
                             {/if}
                           <th>{ts}Total{/ts}</th>
-                          {if !empty($pricesetFieldsCount)}
+                          {if $isShowParticipantCount}
                             <th>{ts}Total Participants{/ts}</th>
                           {/if}
                         </tr>
@@ -14078,7 +13391,7 @@ You were registered by: {$payer.name}
                             <td {$tdStyle}>
                               {$line.line_total_inclusive|crmMoney:$currency}
                             </td>
-                            {if !empty($pricesetFieldsCount)}
+                            {if $isShowParticipantCount}
                               <td {$tdStyle}>{$line.participant_count}</td>
                             {/if}
                           </tr>
@@ -14150,25 +13463,12 @@ You were registered by: {$payer.name}
                   {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}
                 </td>
               </tr>
-              {if !empty($pricesetFieldsCount)}
+              {if $isShowParticipantCount}
                 <tr>
                   <td {$labelStyle}>
                     {ts}Total Participants{/ts}</td>
                   <td {$valueStyle}>
-                    {assign var="count" value= 0}
-                    {foreach from=$lineItem item=pcount}
-                      {assign var="lineItemCount" value=0}
-                      {if $pcount neq \'skip\'}
-                        {foreach from=$pcount item=p_count}
-                          {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count}
-                        {/foreach}
-                        {if $lineItemCount < 1}
-                          {assign var="lineItemCount" value=1}
-                        {/if}
-                        {assign var="count" value=$count+$lineItemCount}
-                      {/if}
-                    {/foreach}
-                    {$count}
+                    {$participantCount}
                   </td>
                 </tr>
               {/if}
@@ -14408,7 +13708,7 @@ You were registered by: {$payer.name}
 {if {event.loc_block_id.email_2_id.email|boolean}}
 {ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}
 {/if}
-{if {event.is_public|boolean}}
+{if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
 {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
 {ts}Download iCalendar entry for this event.{/ts} {$icalFeed}
 {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q="gCalendar=1&reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
@@ -14451,7 +13751,7 @@ You were registered by: {$payer.name}
 
 {foreach from=$value item=line}
 {if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}
-{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if}
+{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if}
 {/foreach}
 ----------------------------------------------------------------------------------------------------------------
 {if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:"%29s"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:"%33s"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:"%12s"}{/if}
@@ -14746,7 +14046,7 @@ You were registered by: {$payer.name}
           {/if}
         {/if}
 
-        {if {event.is_public|boolean}}
+        {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
           <tr>
             <td colspan="2" {$valueStyle}>
               {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
@@ -14810,7 +14110,7 @@ You were registered by: {$payer.name}
                               <th>{ts}Tax Amount{/ts}</th>
                             {/if}
                           <th>{ts}Total{/ts}</th>
-                          {if !empty($pricesetFieldsCount)}
+                          {if $isShowParticipantCount}
                             <th>{ts}Total Participants{/ts}</th>
                           {/if}
                         </tr>
@@ -14832,7 +14132,7 @@ You were registered by: {$payer.name}
                             <td {$tdStyle}>
                               {$line.line_total_inclusive|crmMoney:$currency}
                             </td>
-                            {if !empty($pricesetFieldsCount)}
+                            {if $isShowParticipantCount}
                               <td {$tdStyle}>{$line.participant_count}</td>
                             {/if}
                           </tr>
@@ -14904,25 +14204,12 @@ You were registered by: {$payer.name}
                   {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}
                 </td>
               </tr>
-              {if !empty($pricesetFieldsCount)}
+              {if $isShowParticipantCount}
                 <tr>
                   <td {$labelStyle}>
                     {ts}Total Participants{/ts}</td>
                   <td {$valueStyle}>
-                    {assign var="count" value= 0}
-                    {foreach from=$lineItem item=pcount}
-                      {assign var="lineItemCount" value=0}
-                      {if $pcount neq \'skip\'}
-                        {foreach from=$pcount item=p_count}
-                          {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count}
-                        {/foreach}
-                        {if $lineItemCount < 1}
-                          {assign var="lineItemCount" value=1}
-                        {/if}
-                        {assign var="count" value=$count+$lineItemCount}
-                      {/if}
-                    {/foreach}
-                    {$count}
+                    {$participantCount}
                   </td>
                 </tr>
               {/if}
@@ -17276,8 +16563,8 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 {/if} - {contact.display_name}
 ', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
-{if $receipt_text}
-{$receipt_text}
+{if $userTextPlain}
+{$userTextPlain}
 {else}{ts}Thank you for this contribution.{/ts}{/if}
 
 {if !$isShowLineItems}
@@ -17316,7 +16603,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 --------------------------------------------------------------------------------------------------
 
 {foreach from=$lineItems item=line}
-{line.title} {$line.line_total|crmMoney|string_format:"%10s"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:"%10s"} {/if} {$line.membership.start_date|string_format:"%20s"} {$line.membership.end_date|string_format:"%20s"}
+{line.title} {$line.line_total|crmMoney|string_format:"%10s"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:"%10s"} {/if} {$line.membership.start_date|string_format:"%20s"} {$line.membership.end_date|string_format:"%20s"}
 {/foreach}
 
 {if $isShowTax && {contribution.tax_amount|boolean}}
@@ -17402,8 +16689,8 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
     <tr>
       <td>
         {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-        {if $receipt_text}
-          <p>{$receipt_text|htmlize}</p>
+        {if $userText}
+          <p>{$userText}</p>
         {else}
           <p>{ts}Thank you for this contribution.{/ts}</p>
         {/if}
@@ -17487,7 +16774,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
                             </td>
                             {if $isShowTax && {contribution.tax_amount|boolean}}
                               <td>
-                                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}
+                                {$line.line_total|crmMoney:\'{contribution.currency}\'}
                               </td>
                               {if $line.tax_rate || $line.tax_amount != ""}
                                 <td>
@@ -17669,8 +16956,8 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 {/if} - {contact.display_name}
 ', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
-{if $receipt_text}
-{$receipt_text}
+{if $userTextPlain}
+{$userTextPlain}
 {else}{ts}Thank you for this contribution.{/ts}{/if}
 
 {if !$isShowLineItems}
@@ -17709,7 +16996,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 --------------------------------------------------------------------------------------------------
 
 {foreach from=$lineItems item=line}
-{line.title} {$line.line_total|crmMoney|string_format:"%10s"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:"%10s"} {/if} {$line.membership.start_date|string_format:"%20s"} {$line.membership.end_date|string_format:"%20s"}
+{line.title} {$line.line_total|crmMoney|string_format:"%10s"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:"%10s"} {/if} {$line.membership.start_date|string_format:"%20s"} {$line.membership.end_date|string_format:"%20s"}
 {/foreach}
 
 {if $isShowTax && {contribution.tax_amount|boolean}}
@@ -17795,8 +17082,8 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
     <tr>
       <td>
         {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-        {if $receipt_text}
-          <p>{$receipt_text|htmlize}</p>
+        {if $userText}
+          <p>{$userText}</p>
         {else}
           <p>{ts}Thank you for this contribution.{/ts}</p>
         {/if}
@@ -17880,7 +17167,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
                             </td>
                             {if $isShowTax && {contribution.tax_amount|boolean}}
                               <td>
-                                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}
+                                {$line.line_total|crmMoney:\'{contribution.currency}\'}
                               </td>
                               {if $line.tax_rate || $line.tax_amount != ""}
                                 <td>
@@ -18057,257 +17344,20 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 ', 'membership_offline_receipt', @tpl_ovid_membership_offline_receipt, 0,          1) ,                        
       
       
-      ('Memberships - Receipt (on-line)', '{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-{if !empty($receipt_text)}
-{$receipt_text}
-{/if}
-{if $is_pay_later}
+      ('Memberships - Receipt (on-line)', '{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {contribution.contribution_page_id.frontend_title} - {contact.display_name}
+', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title></title>
+</head>
+<body>
 
-===========================================================
-{$pay_later_receipt}
-===========================================================
-{/if}
+{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture}
+{capture assign=labelStyle}style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
+{capture assign=valueStyle}style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
 
-{if $membership_assign && !$useForMember}
-===========================================================
-{ts}Membership Information{/ts}
-
-===========================================================
-{ts}Membership Type{/ts}: {$membership_name}
-{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}
-{/if}
-{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}
-{/if}
-
-{/if}
-{if $amount}
-===========================================================
-{ts}Membership Fee{/ts}
-
-===========================================================
-{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}
-{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}
-{if $amount && !$is_separate_payment}
-{ts}Contribution Amount{/ts}: {$amount|crmMoney}
--------------------------------------------
-{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}
-{/if}
-{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}
-{foreach from=$lineItem item=value key=priceset}
----------------------------------------------------------
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_qty}{ts}Qty{/ts}{/capture}
-{capture assign=ts_each}{ts}Each{/ts}{/capture}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"}
-----------------------------------------------------------
-{foreach from=$value item=line}
-{$line.description|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {$line.line_total|crmMoney|string_format:"%10s"}
-{/foreach}
-{/foreach}
-
-{ts}Total Amount{/ts}: {$amount|crmMoney}
-{else}
-{if $useForMember && $lineItem && empty($is_quick_config)}
-{foreach from=$lineItem item=value key=priceset}
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_total}{ts}Fee{/ts}{/capture}
-{if !empty($dataArray)}
-{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
-{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
-{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{/if}
-{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}
-{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_total|string_format:"%10s"} {if !empty($dataArray)} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate|string_format:"%10s"} {$ts_taxAmount|string_format:"%10s"} {$ts_total|string_format:"%10s"} {/if} {$ts_start_date|string_format:"%20s"} {$ts_end_date|string_format:"%20s"}
---------------------------------------------------------------------------------------------------
-
-{foreach from=$value item=line}
-{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.line_total|crmMoney|string_format:"%10s"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:"%10s"} {/if} {$line.start_date|string_format:"%20s"} {$line.end_date|string_format:"%20s"}
-{/foreach}
-{/foreach}
-
-{if !empty($dataArray)}
-{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}
-
-{foreach from=$dataArray item=value key=priceset}
-{if $priceset || $priceset == 0}
-{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency}
-{else}
-{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}
-{/if}
-{/foreach}
-{/if}
---------------------------------------------------------------------------------------------------
-{/if}
-
-{if $totalTaxAmount}
-{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}
-{/if}
-
-{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}
-{/if}
-{elseif isset($membership_amount)}
-===========================================================
-{ts}Membership Fee{/ts}
-
-===========================================================
-{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}
-{/if}
-
-{if !empty($receive_date)}
-
-{ts}Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if !empty($is_monetary) and !empty($trxn_id)}
-{ts}Transaction #{/ts}: {$trxn_id}
-
-{/if}
-{if !empty($membership_trx_id)}
-{ts}Membership Transaction #{/ts}: {$membership_trx_id}
-
-{/if}
-{if !empty($is_recur)}
-{ts}This membership will be renewed automatically.{/ts}
-{if $cancelSubscriptionUrl}
-
-{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}
-
-{/if}
-
-{if $updateSubscriptionBillingUrl}
-
-{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
-{/if}
-{/if}
-
-{if $honor_block_is_active}
-===========================================================
-{$soft_credit_type}
-===========================================================
-{foreach from=$honoreeProfile item=value key=label}
-{$label}: {$value}
-{/foreach}
-
-{/if}
-{if !empty($pcpBlock)}
-===========================================================
-{ts}Personal Campaign Page{/ts}
-
-===========================================================
-{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-
-{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}
-
-{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}
-
-{/if}
-{if !empty($onBehalfProfile)}
-===========================================================
-{ts}On Behalf Of{/ts}
-
-===========================================================
-{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
-{$onBehalfName}: {$onBehalfValue}
-{/foreach}
-{/if}
-
-{if !empty($billingName)}
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-
-{$email}
-{elseif !empty($email)}
-===========================================================
-{ts}Registered Email{/ts}
-
-===========================================================
-{$email}
-{/if} {* End billingName or email *}
-{if !empty($credit_card_type)}
-
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-{/if}
-
-{if !empty($selectPremium)}
-===========================================================
-{ts}Premium Information{/ts}
-
-===========================================================
-{$product_name}
-{if $option}
-{ts}Option{/ts}: {$option}
-{/if}
-{if $sku}
-{ts}SKU{/ts}: {$sku}
-{/if}
-{if $start_date}
-{ts}Start Date{/ts}: {$start_date|crmDate}
-{/if}
-{if $end_date}
-{ts}End Date{/ts}: {$end_date|crmDate}
-{/if}
-{if !empty($contact_email) OR !empty($contact_phone)}
-
-{ts}For information about this premium, contact:{/ts}
-
-{if !empty($contact_email)}
-  {$contact_email}
-{/if}
-{if !empty($contact_phone)}
-  {$contact_phone}
-{/if}
-{/if}
-{if $is_deductible AND !empty($price)}
-
-{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}
-{/if}
-
-{if !empty($customPre)}
-===========================================================
-{$customPre_grouptitle}
-
-===========================================================
-{foreach from=$customPre item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-
-
-{if !empty($customPost)}
-===========================================================
-{$customPost_grouptitle}
-
-===========================================================
-{foreach from=$customPost item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title></title>
-</head>
-<body>
-
-{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture}
-{capture assign=labelStyle}style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
-{capture assign=valueStyle}style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
-
-  <table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
+  <table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
 
   <!-- BEGIN HEADER -->
   <!-- You can add table row(s) here with logo or other header elements -->
@@ -18318,20 +17368,18 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
   <tr>
    <td>
      {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-    {if !empty($receipt_text)}
-     <p>{$receipt_text|htmlize}</p>
+    {if $userText}
+     <p>{$userText}</p>
     {/if}
-
-    {if $is_pay_later}
-     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}
+    {if {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}
+      <p>{contribution.pay_later_receipt}</p>
     {/if}
 
    </td>
   </tr>
   </table>
   <table style="width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;">
-
-     {if $membership_assign && !$useForMember}
+    {if {membership.id|boolean} && !$isShowLineItems}
       <tr>
        <th {$headerStyle}>
         {ts}Membership Information{/ts}
@@ -18342,366 +17390,256 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
         {ts}Membership Type{/ts}
        </td>
        <td {$valueStyle}>
-        {$membership_name}
+         {ts}{membership.membership_type_id:label}{/ts}
        </td>
       </tr>
-      {if $mem_start_date}
+      {if {membership.start_date|boolean}}
        <tr>
         <td {$labelStyle}>
          {ts}Membership Start Date{/ts}
         </td>
         <td {$valueStyle}>
-         {$mem_start_date|crmDate}
+          {membership.start_date}
         </td>
        </tr>
       {/if}
-      {if $mem_end_date}
+      {if {membership.end_date|boolean}}
        <tr>
         <td {$labelStyle}>
          {ts}Membership Expiration Date{/ts}
         </td>
         <td {$valueStyle}>
-          {$mem_end_date|crmDate}
+          {membership.end_date}
         </td>
        </tr>
       {/if}
-     {/if}
-
-
-     {if $amount}
+    {/if}
+    {if {contribution.total_amount|boolean}}
       <tr>
-       <th {$headerStyle}>
-        {ts}Membership Fee{/ts}
-       </th>
+        <th {$headerStyle}>{ts}Membership Fee{/ts}</th>
       </tr>
 
-      {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}
+      {if !$isShowLineItems && {contribution.total_amount|boolean}}
+        {foreach from=$lineItems item=line}
+          <tr>
+            <td {$labelStyle}>
+              {if $line.membership_type_id}
+                {ts 1="{membership.membership_type_id:label}"}%1 Membership{/ts}
+              {else}
+                {ts}Contribution Amount{/ts}
+              {/if}
+            </td>
+            <td {$valueStyle}>
+              {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}
+            </td>
+          </tr>
+        {/foreach}
+      {elseif $isShowLineItems}
+        <tr>
+          <td colspan="2" {$valueStyle}>
+            <table>
+              <tr>
+                <th>{ts}Item{/ts}</th>
+                <th>{ts}Fee{/ts}</th>
+                {if $isShowTax && {contribution.tax_amount|boolean}}
+                  <th>{ts}SubTotal{/ts}</th>
+                  <th>{ts}Tax Rate{/ts}</th>
+                  <th>{ts}Tax Amount{/ts}</th>
+                  <th>{ts}Total{/ts}</th>
+                {/if}
+                <th>{ts}Membership Start Date{/ts}</th>
+                <th>{ts}Membership Expiration Date{/ts}</th>
+              </tr>
+              {foreach from=$lineItems item=line}
+                <tr>
+                  <td>{$line.title}</td>
+                  <td>
+                    {$line.line_total|crmMoney}
+                  </td>
+                  {if $isShowTax && {contribution.tax_amount|boolean}}
+                    <td>
+                      {$line.line_total|crmMoney:\'{contribution.currency}\'}
+                    </td>
+                    {if $line.tax_rate || $line.tax_amount != ""}
+                      <td>
+                        {$line.tax_rate|string_format:"%.2f"}%
+                      </td>
+                      <td>
+                        {$line.tax_amount|crmMoney:\'{contribution.currency}\'}
+                      </td>
+                    {else}
+                      <td></td>
+                      <td></td>
+                    {/if}
+                    <td>
+                      {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}
+                    </td>
+                  {/if}
+                  <td>
+                    {$line.membership.start_date|crmDate:"Full"}
+                  </td>
+                  <td>
+                    {$line.membership.end_date|crmDate:"Full"}
+                  </td>
+                </tr>
+              {/foreach}
+            </table>
+          </td>
+        </tr>
 
-       <tr>
+        {if $isShowTax && {contribution.tax_amount|boolean}}
+          <tr>
+            <td {$labelStyle}>
+                {ts}Amount Before Tax:{/ts}
+            </td>
+            <td {$valueStyle}>
+                {contribution.tax_exclusive_amount}
+            </td>
+          </tr>
+          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
+            <tr>
+              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>
+              <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>
+            </tr>
+          {/foreach}
+        {/if}
+      {/if}
+      <tr>
         <td {$labelStyle}>
-         {ts 1=$membership_name}%1 Membership{/ts}
+            {ts}Amount{/ts}
         </td>
         <td {$valueStyle}>
-         {$membership_amount|crmMoney}
+            {contribution.total_amount}
         </td>
-       </tr>
-       {if $amount && !$is_separate_payment}
-         <tr>
-          <td {$labelStyle}>
-           {ts}Contribution Amount{/ts}
-          </td>
-          <td {$valueStyle}>
-           {$amount|crmMoney}
-          </td>
-         </tr>
-         <tr>
-           <td {$labelStyle}>
-           {ts}Total{/ts}
-            </td>
-            <td {$valueStyle}>
-            {$amount+$membership_amount|crmMoney}
-           </td>
-         </tr>
-       {/if}
-
-      {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}
+      </tr>
+    {/if}
 
-       {foreach from=$lineItem item=value key=priceset}
-        <tr>
-         <td colspan="2" {$valueStyle}>
-          <table>
-           <tr>
-            <th>{ts}Item{/ts}</th>
-            <th>{ts}Qty{/ts}</th>
-            <th>{ts}Each{/ts}</th>
-            <th>{ts}Total{/ts}</th>
-           </tr>
-           {foreach from=$value item=line}
-            <tr>
-             <td>
-              {$line.description|truncate:30:"..."}
-             </td>
-             <td>
-              {$line.qty}
-             </td>
-             <td>
-              {$line.unit_price|crmMoney}
-             </td>
-             <td>
-              {$line.line_total|crmMoney}
-             </td>
-            </tr>
-           {/foreach}
-          </table>
-         </td>
-        </tr>
-       {/foreach}
-       <tr>
+    {if {contribution.receive_date|boolean}}
+      <tr>
         <td {$labelStyle}>
-         {ts}Total Amount{/ts}
+          {ts}Date{/ts}
         </td>
         <td {$valueStyle}>
-         {$amount|crmMoney}
+          {contribution.receive_date}
         </td>
-       </tr>
+      </tr>
+    {/if}
 
-      {else}
-       {if $useForMember && $lineItem and empty($is_quick_config)}
-       {foreach from=$lineItem item=value key=priceset}
-        <tr>
-         <td colspan="2" {$valueStyle}>
-          <table>
-           <tr>
-            <th>{ts}Item{/ts}</th>
-            <th>{ts}Fee{/ts}</th>
-            {if !empty($dataArray)}
-              <th>{ts}SubTotal{/ts}</th>
-              <th>{ts}Tax Rate{/ts}</th>
-              <th>{ts}Tax Amount{/ts}</th>
-              <th>{ts}Total{/ts}</th>
-            {/if}
-      <th>{ts}Membership Start Date{/ts}</th>
-      <th>{ts}Membership Expiration Date{/ts}</th>
-           </tr>
-           {foreach from=$value item=line}
-            <tr>
-             <td>
-             {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if}
-             </td>
-             <td>
-              {$line.line_total|crmMoney}
-             </td>
-             {if !empty($dataArray)}
-              <td>
-               {$line.unit_price*$line.qty|crmMoney}
-              </td>
-              {if ($line.tax_rate || $line.tax_amount != "")}
-               <td>
-                {$line.tax_rate|string_format:"%.2f"}%
-               </td>
-               <td>
-                {$line.tax_amount|crmMoney}
-               </td>
-              {else}
-               <td></td>
-               <td></td>
-              {/if}
-              <td>
-               {$line.line_total+$line.tax_amount|crmMoney}
-              </td>
-             {/if}
-             <td>
-              {$line.start_date}
-             </td>
-       <td>
-              {$line.end_date}
-             </td>
-            </tr>
-           {/foreach}
-          </table>
-         </td>
-        </tr>
-       {/foreach}
-       {if !empty($dataArray)}
-        <tr>
-         <td {$labelStyle}>
-          {ts}Amount Before Tax:{/ts}
-         </td>
-         <td {$valueStyle}>
-          {$amount-$totalTaxAmount|crmMoney}
-         </td>
-        </tr>
-        {foreach from=$dataArray item=value key=priceset}
-         <tr>
-         {if $priceset || $priceset == 0}
-           <td>&nbsp;{$taxTerm} {$priceset|string_format:"%.2f"}%</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-         {else}
-           <td>&nbsp;{ts}NO{/ts} {$taxTerm}</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-         {/if}
-         </tr>
-        {/foreach}
-       {/if}
-       {/if}
-       {if $totalTaxAmount}
-        <tr>
-         <td {$labelStyle}>
-          {ts}Total Tax Amount{/ts}
-         </td>
-         <td {$valueStyle}>
-          {$totalTaxAmount|crmMoney:$currency}
-         </td>
-        </tr>
-       {/if}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Amount{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}
-        </td>
-       </tr>
-
-      {/if}
-
-
-     {elseif isset($membership_amount)}
-
-
-      <tr>
-       <th {$headerStyle}>
-        {ts}Membership Fee{/ts}
-       </th>
-      </tr>
-      <tr>
-       <td {$labelStyle}>
-        {ts 1=$membership_name}%1 Membership{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$membership_amount|crmMoney}
-       </td>
-      </tr>
-
-
-     {/if}
-
-     {if !empty($receive_date)}
-      <tr>
-       <td {$labelStyle}>
-        {ts}Date{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$receive_date|crmDate}
-       </td>
-      </tr>
-     {/if}
-
-     {if !empty($is_monetary) and !empty($trxn_id)}
+    {if {contribution.trxn_id|boolean}}
       <tr>
        <td {$labelStyle}>
         {ts}Transaction #{/ts}
        </td>
        <td {$valueStyle}>
-        {$trxn_id}
+         {contribution.trxn_id}
        </td>
       </tr>
-     {/if}
+    {/if}
 
-     {if !empty($membership_trx_id)}
+    {if {contribution.contribution_recur_id|boolean}}
       <tr>
-       <td {$labelStyle}>
-        {ts}Membership Transaction #{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$membership_trx_id}
-       </td>
-      </tr>
-     {/if}
-     {if !empty($is_recur)}
-       <tr>
         <td colspan="2" {$labelStyle}>
-         {ts}This membership will be renewed automatically.{/ts}
-         {if $cancelSubscriptionUrl}
-           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href="%1">visiting this web page</a>.{/ts}
-         {/if}
+          {ts}This membership will be renewed automatically.{/ts}
+          {if $cancelSubscriptionUrl}
+            {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href="%1">visiting this web page</a>.{/ts}
+          {/if}
         </td>
-       </tr>
-       {if $updateSubscriptionBillingUrl}
-         <tr>
+      </tr>
+      {if $updateSubscriptionBillingUrl}
+        <tr>
           <td colspan="2" {$labelStyle}>
-           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
+            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
           </td>
-         </tr>
-       {/if}
-     {/if}
+        </tr>
+      {/if}
+    {/if}
 
-     {if $honor_block_is_active}
+    {if $honor_block_is_active}
       <tr>
-       <th {$headerStyle}>
-        {$soft_credit_type}
-       </th>
+        <th {$headerStyle}>
+          {$soft_credit_type}
+        </th>
       </tr>
       {foreach from=$honoreeProfile item=value key=label}
         <tr>
-         <td {$labelStyle}>
-          {$label}
-         </td>
-         <td {$valueStyle}>
-          {$value}
-         </td>
+          <td {$labelStyle}>
+            {$label}
+          </td>
+          <td {$valueStyle}>
+            {$value}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($pcpBlock)}
+    {if !empty($pcpBlock)}
       <tr>
-       <th {$headerStyle}>
-        {ts}Personal Campaign Page{/ts}
-       </th>
+        <th {$headerStyle}>
+          {ts}Personal Campaign Page{/ts}
+        </th>
       </tr>
       <tr>
-       <td {$labelStyle}>
-        {ts}Display In Honor Roll{/ts}
-       </td>
-       <td {$valueStyle}>
-        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-       </td>
-      </tr>
-      {if $pcp_roll_nickname}
-       <tr>
         <td {$labelStyle}>
-         {ts}Nickname{/ts}
+          {ts}Display In Honor Roll{/ts}
         </td>
         <td {$valueStyle}>
-         {$pcp_roll_nickname}
+          {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
         </td>
-       </tr>
+      </tr>
+      {if $pcp_roll_nickname}
+        <tr>
+          <td {$labelStyle}>
+            {ts}Nickname{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$pcp_roll_nickname}
+          </td>
+        </tr>
       {/if}
       {if $pcp_personal_note}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Personal Note{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$pcp_personal_note}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}Personal Note{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$pcp_personal_note}
+          </td>
+        </tr>
       {/if}
-     {/if}
+    {/if}
 
-     {if !empty($onBehalfProfile)}
+    {if !empty($onBehalfProfile)}
       <tr>
-       <th {$headerStyle}>
-        {$onBehalfProfile_grouptitle}
-       </th>
+        <th {$headerStyle}>
+          {$onBehalfProfile_grouptitle}
+        </th>
       </tr>
       {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
         <tr>
-         <td {$labelStyle}>
-          {$onBehalfName}
-         </td>
-         <td {$valueStyle}>
-          {$onBehalfValue}
-         </td>
+          <td {$labelStyle}>
+            {$onBehalfName}
+          </td>
+          <td {$valueStyle}>
+            {$onBehalfValue}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($billingName)}
-       <tr>
-         <th {$headerStyle}>
-           {ts}Billing Name and Address{/ts}
-         </th>
+    {if {contribution.address_id.display|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Billing Name and Address{/ts}
+        </th>
       </tr>
       <tr>
         <td colspan="2" {$valueStyle}>
-          {$billingName}<br />
-          {$address|nl2br}<br />
-          {$email}
+          {contribution.address_id.name}<br/>
+          {contribution.address_id.display}
         </td>
       </tr>
-    {elseif !empty($email)}
+    {/if}
+    {if {contact.email_primary.email|boolean}}
       <tr>
         <th {$headerStyle}>
           {ts}Registered Email{/ts}
@@ -18709,379 +17647,142 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
       </tr>
       <tr>
         <td colspan="2" {$valueStyle}>
-          {$email}
+          {contact.email_primary.email}
         </td>
       </tr>
     {/if}
 
-     {if !empty($credit_card_type)}
-      <tr>
-       <th {$headerStyle}>
-        {ts}Credit Card Information{/ts}
-       </th>
-      </tr>
-      <tr>
-       <td colspan="2" {$valueStyle}>
-        {$credit_card_type}<br />
-        {$credit_card_number}<br />
-        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />
-       </td>
-      </tr>
-     {/if}
-
-     {if !empty($selectPremium)}
+    {if !empty($credit_card_type)}
       <tr>
-       <th {$headerStyle}>
-        {ts}Premium Information{/ts}
-       </th>
+        <th {$headerStyle}>
+          {ts}Credit Card Information{/ts}
+         </th>
       </tr>
       <tr>
-       <td colspan="2" {$labelStyle}>
-        {$product_name}
-       </td>
-      </tr>
-      {if $option}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Option{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$option}
-        </td>
-       </tr>
-      {/if}
-      {if $sku}
-       <tr>
-        <td {$labelStyle}>
-         {ts}SKU{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$sku}
-        </td>
-       </tr>
-      {/if}
-      {if $start_date}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Start Date{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$start_date|crmDate}
-        </td>
-       </tr>
-      {/if}
-      {if $end_date}
-       <tr>
-        <td {$labelStyle}>
-         {ts}End Date{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$end_date|crmDate}
-        </td>
-       </tr>
-      {/if}
-      {if !empty($contact_email) OR !empty($contact_phone)}
-       <tr>
         <td colspan="2" {$valueStyle}>
-         <p>{ts}For information about this premium, contact:{/ts}</p>
-         {if !empty($contact_email)}
-          <p>{$contact_email}</p>
-         {/if}
-         {if !empty($contact_phone)}
-          <p>{$contact_phone}</p>
-         {/if}
+          {$credit_card_type}<br />
+          {$credit_card_number}<br />
+          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />
         </td>
-       </tr>
-      {/if}
-      {if $is_deductible AND !empty($price)}
-        <tr>
-         <td colspan="2" {$valueStyle}>
-          <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>
-         </td>
-        </tr>
-      {/if}
-     {/if}
-
-     {if !empty($customPre)}
-      <tr>
-       <th {$headerStyle}>
-        {$customPre_grouptitle}
-       </th>
       </tr>
-      {foreach from=$customPre item=customValue key=customName}
-        <tr>
-         <td {$labelStyle}>
-          {$customName}
-         </td>
-         <td {$valueStyle}>
-          {$customValue}
-         </td>
-        </tr>
-      {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($customPost)}
+    {if !empty($selectPremium)}
       <tr>
-       <th {$headerStyle}>
-        {$customPost_grouptitle}
-       </th>
-      </tr>
-      {foreach from=$customPost item=customValue key=customName}
-        <tr>
-         <td {$labelStyle}>
-          {$customName}
-         </td>
-         <td {$valueStyle}>
-          {$customValue}
-         </td>
-        </tr>
-      {/foreach}
-     {/if}
-
-  </table>
-
-</body>
-</html>
-', 'membership_online_receipt', @tpl_ovid_membership_online_receipt, 1,          0),
-      ('Memberships - Receipt (on-line)', '{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-{if !empty($receipt_text)}
-{$receipt_text}
-{/if}
-{if $is_pay_later}
-
-===========================================================
-{$pay_later_receipt}
-===========================================================
-{/if}
-
-{if $membership_assign && !$useForMember}
-===========================================================
-{ts}Membership Information{/ts}
-
-===========================================================
-{ts}Membership Type{/ts}: {$membership_name}
-{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}
-{/if}
-{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}
-{/if}
-
-{/if}
-{if $amount}
-===========================================================
-{ts}Membership Fee{/ts}
-
-===========================================================
-{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}
-{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}
-{if $amount && !$is_separate_payment}
-{ts}Contribution Amount{/ts}: {$amount|crmMoney}
--------------------------------------------
-{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}
-{/if}
-{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}
-{foreach from=$lineItem item=value key=priceset}
----------------------------------------------------------
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_qty}{ts}Qty{/ts}{/capture}
-{capture assign=ts_each}{ts}Each{/ts}{/capture}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"}
-----------------------------------------------------------
-{foreach from=$value item=line}
-{$line.description|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {$line.line_total|crmMoney|string_format:"%10s"}
-{/foreach}
-{/foreach}
-
-{ts}Total Amount{/ts}: {$amount|crmMoney}
-{else}
-{if $useForMember && $lineItem && empty($is_quick_config)}
-{foreach from=$lineItem item=value key=priceset}
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_total}{ts}Fee{/ts}{/capture}
-{if !empty($dataArray)}
-{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
-{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
-{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{/if}
-{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}
-{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_total|string_format:"%10s"} {if !empty($dataArray)} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate|string_format:"%10s"} {$ts_taxAmount|string_format:"%10s"} {$ts_total|string_format:"%10s"} {/if} {$ts_start_date|string_format:"%20s"} {$ts_end_date|string_format:"%20s"}
---------------------------------------------------------------------------------------------------
-
-{foreach from=$value item=line}
-{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.line_total|crmMoney|string_format:"%10s"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:"%10s"} {/if} {$line.start_date|string_format:"%20s"} {$line.end_date|string_format:"%20s"}
-{/foreach}
-{/foreach}
-
-{if !empty($dataArray)}
-{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}
-
-{foreach from=$dataArray item=value key=priceset}
-{if $priceset || $priceset == 0}
-{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency}
-{else}
-{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}
-{/if}
-{/foreach}
-{/if}
---------------------------------------------------------------------------------------------------
-{/if}
-
-{if $totalTaxAmount}
-{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}
-{/if}
-
-{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}
-{/if}
-{elseif isset($membership_amount)}
-===========================================================
-{ts}Membership Fee{/ts}
-
-===========================================================
-{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}
-{/if}
-
-{if !empty($receive_date)}
-
-{ts}Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if !empty($is_monetary) and !empty($trxn_id)}
-{ts}Transaction #{/ts}: {$trxn_id}
-
-{/if}
-{if !empty($membership_trx_id)}
-{ts}Membership Transaction #{/ts}: {$membership_trx_id}
-
-{/if}
-{if !empty($is_recur)}
-{ts}This membership will be renewed automatically.{/ts}
-{if $cancelSubscriptionUrl}
-
-{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}
-
-{/if}
-
-{if $updateSubscriptionBillingUrl}
-
-{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
-{/if}
-{/if}
-
-{if $honor_block_is_active}
-===========================================================
-{$soft_credit_type}
-===========================================================
-{foreach from=$honoreeProfile item=value key=label}
-{$label}: {$value}
-{/foreach}
-
-{/if}
-{if !empty($pcpBlock)}
-===========================================================
-{ts}Personal Campaign Page{/ts}
-
-===========================================================
-{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-
-{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}
-
-{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}
-
-{/if}
-{if !empty($onBehalfProfile)}
-===========================================================
-{ts}On Behalf Of{/ts}
-
-===========================================================
-{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
-{$onBehalfName}: {$onBehalfValue}
-{/foreach}
-{/if}
-
-{if !empty($billingName)}
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-
-{$email}
-{elseif !empty($email)}
-===========================================================
-{ts}Registered Email{/ts}
-
-===========================================================
-{$email}
-{/if} {* End billingName or email *}
-{if !empty($credit_card_type)}
-
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-{/if}
-
-{if !empty($selectPremium)}
-===========================================================
-{ts}Premium Information{/ts}
-
-===========================================================
-{$product_name}
-{if $option}
-{ts}Option{/ts}: {$option}
-{/if}
-{if $sku}
-{ts}SKU{/ts}: {$sku}
-{/if}
-{if $start_date}
-{ts}Start Date{/ts}: {$start_date|crmDate}
-{/if}
-{if $end_date}
-{ts}End Date{/ts}: {$end_date|crmDate}
-{/if}
-{if !empty($contact_email) OR !empty($contact_phone)}
-
-{ts}For information about this premium, contact:{/ts}
-
-{if !empty($contact_email)}
-  {$contact_email}
-{/if}
-{if !empty($contact_phone)}
-  {$contact_phone}
-{/if}
-{/if}
-{if $is_deductible AND !empty($price)}
-
-{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}
-{/if}
-
-{if !empty($customPre)}
-===========================================================
-{$customPre_grouptitle}
+        <th {$headerStyle}>
+          {ts}Premium Information{/ts}
+        </th>
+      </tr>
+      <tr>
+        <td colspan="2" {$labelStyle}>
+          {$product_name}
+        </td>
+      </tr>
+      {if $option}
+        <tr>
+          <td {$labelStyle}>
+            {ts}Option{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$option}
+          </td>
+        </tr>
+      {/if}
+      {if $sku}
+        <tr>
+          <td {$labelStyle}>
+            {ts}SKU{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$sku}
+          </td>
+        </tr>
+      {/if}
+      {if $start_date}
+        <tr>
+          <td {$labelStyle}>
+            {ts}Start Date{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$start_date|crmDate}
+          </td>
+        </tr>
+      {/if}
+      {if $end_date}
+        <tr>
+          <td {$labelStyle}>
+            {ts}End Date{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$end_date|crmDate}
+          </td>
+        </tr>
+      {/if}
+      {if !empty($contact_email) OR !empty($contact_phone)}
+        <tr>
+          <td colspan="2" {$valueStyle}>
+            <p>{ts}For information about this premium, contact:{/ts}</p>
+            {if !empty($contact_email)}
+              <p>{$contact_email}</p>
+            {/if}
+            {if !empty($contact_phone)}
+              <p>{$contact_phone}</p>
+            {/if}
+          </td>
+        </tr>
+      {/if}
+      {if $is_deductible AND !empty($price)}
+        <tr>
+          <td colspan="2" {$valueStyle}>
+            <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>
+         </td>
+        </tr>
+      {/if}
+    {/if}
 
-===========================================================
-{foreach from=$customPre item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
+    {if !empty($customPre)}
+      <tr>
+       <th {$headerStyle}>
+         {$customPre_grouptitle}
+       </th>
+      </tr>
+      {foreach from=$customPre item=customValue key=customName}
+        <tr>
+          <td {$labelStyle}>
+            {$customName}
+          </td>
+          <td {$valueStyle}>
+            {$customValue}
+          </td>
+        </tr>
+      {/foreach}
+    {/if}
 
+    {if !empty($customPost)}
+      <tr>
+        <th {$headerStyle}>
+          {$customPost_grouptitle}
+        </th>
+      </tr>
+      {foreach from=$customPost item=customValue key=customName}
+        <tr>
+          <td {$labelStyle}>
+            {$customName}
+          </td>
+          <td {$valueStyle}>
+            {$customValue}
+          </td>
+        </tr>
+      {/foreach}
+    {/if}
 
-{if !empty($customPost)}
-===========================================================
-{$customPost_grouptitle}
+  </table>
 
-===========================================================
-{foreach from=$customPost item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+</body>
+</html>
+', 'membership_online_receipt', @tpl_ovid_membership_online_receipt, 1,          0),
+      ('Memberships - Receipt (on-line)', '{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {contribution.contribution_page_id.frontend_title} - {contact.display_name}
+', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -19104,20 +17805,18 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
   <tr>
    <td>
      {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-    {if !empty($receipt_text)}
-     <p>{$receipt_text|htmlize}</p>
+    {if $userText}
+     <p>{$userText}</p>
     {/if}
-
-    {if $is_pay_later}
-     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}
+    {if {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}
+      <p>{contribution.pay_later_receipt}</p>
     {/if}
 
    </td>
   </tr>
   </table>
   <table style="width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;">
-
-     {if $membership_assign && !$useForMember}
+    {if {membership.id|boolean} && !$isShowLineItems}
       <tr>
        <th {$headerStyle}>
         {ts}Membership Information{/ts}
@@ -19128,366 +17827,256 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
         {ts}Membership Type{/ts}
        </td>
        <td {$valueStyle}>
-        {$membership_name}
+         {ts}{membership.membership_type_id:label}{/ts}
        </td>
       </tr>
-      {if $mem_start_date}
+      {if {membership.start_date|boolean}}
        <tr>
         <td {$labelStyle}>
          {ts}Membership Start Date{/ts}
         </td>
         <td {$valueStyle}>
-         {$mem_start_date|crmDate}
+          {membership.start_date}
         </td>
        </tr>
       {/if}
-      {if $mem_end_date}
+      {if {membership.end_date|boolean}}
        <tr>
         <td {$labelStyle}>
          {ts}Membership Expiration Date{/ts}
         </td>
         <td {$valueStyle}>
-          {$mem_end_date|crmDate}
+          {membership.end_date}
         </td>
        </tr>
       {/if}
-     {/if}
-
-
-     {if $amount}
+    {/if}
+    {if {contribution.total_amount|boolean}}
       <tr>
-       <th {$headerStyle}>
-        {ts}Membership Fee{/ts}
-       </th>
+        <th {$headerStyle}>{ts}Membership Fee{/ts}</th>
       </tr>
 
-      {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}
-
-       <tr>
-        <td {$labelStyle}>
-         {ts 1=$membership_name}%1 Membership{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$membership_amount|crmMoney}
-        </td>
-       </tr>
-       {if $amount && !$is_separate_payment}
-         <tr>
-          <td {$labelStyle}>
-           {ts}Contribution Amount{/ts}
-          </td>
-          <td {$valueStyle}>
-           {$amount|crmMoney}
-          </td>
-         </tr>
-         <tr>
-           <td {$labelStyle}>
-           {ts}Total{/ts}
+      {if !$isShowLineItems && {contribution.total_amount|boolean}}
+        {foreach from=$lineItems item=line}
+          <tr>
+            <td {$labelStyle}>
+              {if $line.membership_type_id}
+                {ts 1="{membership.membership_type_id:label}"}%1 Membership{/ts}
+              {else}
+                {ts}Contribution Amount{/ts}
+              {/if}
             </td>
             <td {$valueStyle}>
-            {$amount+$membership_amount|crmMoney}
-           </td>
-         </tr>
-       {/if}
-
-      {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}
-
-       {foreach from=$lineItem item=value key=priceset}
+              {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}
+            </td>
+          </tr>
+        {/foreach}
+      {elseif $isShowLineItems}
         <tr>
-         <td colspan="2" {$valueStyle}>
-          <table>
-           <tr>
-            <th>{ts}Item{/ts}</th>
-            <th>{ts}Qty{/ts}</th>
-            <th>{ts}Each{/ts}</th>
-            <th>{ts}Total{/ts}</th>
-           </tr>
-           {foreach from=$value item=line}
-            <tr>
-             <td>
-              {$line.description|truncate:30:"..."}
-             </td>
-             <td>
-              {$line.qty}
-             </td>
-             <td>
-              {$line.unit_price|crmMoney}
-             </td>
-             <td>
-              {$line.line_total|crmMoney}
-             </td>
-            </tr>
-           {/foreach}
-          </table>
-         </td>
+          <td colspan="2" {$valueStyle}>
+            <table>
+              <tr>
+                <th>{ts}Item{/ts}</th>
+                <th>{ts}Fee{/ts}</th>
+                {if $isShowTax && {contribution.tax_amount|boolean}}
+                  <th>{ts}SubTotal{/ts}</th>
+                  <th>{ts}Tax Rate{/ts}</th>
+                  <th>{ts}Tax Amount{/ts}</th>
+                  <th>{ts}Total{/ts}</th>
+                {/if}
+                <th>{ts}Membership Start Date{/ts}</th>
+                <th>{ts}Membership Expiration Date{/ts}</th>
+              </tr>
+              {foreach from=$lineItems item=line}
+                <tr>
+                  <td>{$line.title}</td>
+                  <td>
+                    {$line.line_total|crmMoney}
+                  </td>
+                  {if $isShowTax && {contribution.tax_amount|boolean}}
+                    <td>
+                      {$line.line_total|crmMoney:\'{contribution.currency}\'}
+                    </td>
+                    {if $line.tax_rate || $line.tax_amount != ""}
+                      <td>
+                        {$line.tax_rate|string_format:"%.2f"}%
+                      </td>
+                      <td>
+                        {$line.tax_amount|crmMoney:\'{contribution.currency}\'}
+                      </td>
+                    {else}
+                      <td></td>
+                      <td></td>
+                    {/if}
+                    <td>
+                      {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}
+                    </td>
+                  {/if}
+                  <td>
+                    {$line.membership.start_date|crmDate:"Full"}
+                  </td>
+                  <td>
+                    {$line.membership.end_date|crmDate:"Full"}
+                  </td>
+                </tr>
+              {/foreach}
+            </table>
+          </td>
         </tr>
-       {/foreach}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Total Amount{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$amount|crmMoney}
-        </td>
-       </tr>
 
-      {else}
-       {if $useForMember && $lineItem and empty($is_quick_config)}
-       {foreach from=$lineItem item=value key=priceset}
-        <tr>
-         <td colspan="2" {$valueStyle}>
-          <table>
-           <tr>
-            <th>{ts}Item{/ts}</th>
-            <th>{ts}Fee{/ts}</th>
-            {if !empty($dataArray)}
-              <th>{ts}SubTotal{/ts}</th>
-              <th>{ts}Tax Rate{/ts}</th>
-              <th>{ts}Tax Amount{/ts}</th>
-              <th>{ts}Total{/ts}</th>
-            {/if}
-      <th>{ts}Membership Start Date{/ts}</th>
-      <th>{ts}Membership Expiration Date{/ts}</th>
-           </tr>
-           {foreach from=$value item=line}
+        {if $isShowTax && {contribution.tax_amount|boolean}}
+          <tr>
+            <td {$labelStyle}>
+                {ts}Amount Before Tax:{/ts}
+            </td>
+            <td {$valueStyle}>
+                {contribution.tax_exclusive_amount}
+            </td>
+          </tr>
+          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
             <tr>
-             <td>
-             {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if}
-             </td>
-             <td>
-              {$line.line_total|crmMoney}
-             </td>
-             {if !empty($dataArray)}
-              <td>
-               {$line.unit_price*$line.qty|crmMoney}
-              </td>
-              {if ($line.tax_rate || $line.tax_amount != "")}
-               <td>
-                {$line.tax_rate|string_format:"%.2f"}%
-               </td>
-               <td>
-                {$line.tax_amount|crmMoney}
-               </td>
-              {else}
-               <td></td>
-               <td></td>
-              {/if}
-              <td>
-               {$line.line_total+$line.tax_amount|crmMoney}
-              </td>
-             {/if}
-             <td>
-              {$line.start_date}
-             </td>
-       <td>
-              {$line.end_date}
-             </td>
+              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>
+              <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>
             </tr>
-           {/foreach}
-          </table>
-         </td>
-        </tr>
-       {/foreach}
-       {if !empty($dataArray)}
-        <tr>
-         <td {$labelStyle}>
-          {ts}Amount Before Tax:{/ts}
-         </td>
-         <td {$valueStyle}>
-          {$amount-$totalTaxAmount|crmMoney}
-         </td>
-        </tr>
-        {foreach from=$dataArray item=value key=priceset}
-         <tr>
-         {if $priceset || $priceset == 0}
-           <td>&nbsp;{$taxTerm} {$priceset|string_format:"%.2f"}%</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-         {else}
-           <td>&nbsp;{ts}NO{/ts} {$taxTerm}</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-         {/if}
-         </tr>
-        {/foreach}
-       {/if}
-       {/if}
-       {if $totalTaxAmount}
-        <tr>
-         <td {$labelStyle}>
-          {ts}Total Tax Amount{/ts}
-         </td>
-         <td {$valueStyle}>
-          {$totalTaxAmount|crmMoney:$currency}
-         </td>
-        </tr>
-       {/if}
-       <tr>
+          {/foreach}
+        {/if}
+      {/if}
+      <tr>
         <td {$labelStyle}>
-         {ts}Amount{/ts}
+            {ts}Amount{/ts}
         </td>
         <td {$valueStyle}>
-         {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}
+            {contribution.total_amount}
         </td>
-       </tr>
-
-      {/if}
-
-
-     {elseif isset($membership_amount)}
-
-
-      <tr>
-       <th {$headerStyle}>
-        {ts}Membership Fee{/ts}
-       </th>
-      </tr>
-      <tr>
-       <td {$labelStyle}>
-        {ts 1=$membership_name}%1 Membership{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$membership_amount|crmMoney}
-       </td>
       </tr>
-
-
-     {/if}
-
-     {if !empty($receive_date)}
-      <tr>
-       <td {$labelStyle}>
-        {ts}Date{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$receive_date|crmDate}
-       </td>
+    {/if}
+
+    {if {contribution.receive_date|boolean}}
+      <tr>
+        <td {$labelStyle}>
+          {ts}Date{/ts}
+        </td>
+        <td {$valueStyle}>
+          {contribution.receive_date}
+        </td>
       </tr>
-     {/if}
+    {/if}
 
-     {if !empty($is_monetary) and !empty($trxn_id)}
+    {if {contribution.trxn_id|boolean}}
       <tr>
        <td {$labelStyle}>
         {ts}Transaction #{/ts}
        </td>
        <td {$valueStyle}>
-        {$trxn_id}
+         {contribution.trxn_id}
        </td>
       </tr>
-     {/if}
+    {/if}
 
-     {if !empty($membership_trx_id)}
+    {if {contribution.contribution_recur_id|boolean}}
       <tr>
-       <td {$labelStyle}>
-        {ts}Membership Transaction #{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$membership_trx_id}
-       </td>
-      </tr>
-     {/if}
-     {if !empty($is_recur)}
-       <tr>
         <td colspan="2" {$labelStyle}>
-         {ts}This membership will be renewed automatically.{/ts}
-         {if $cancelSubscriptionUrl}
-           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href="%1">visiting this web page</a>.{/ts}
-         {/if}
+          {ts}This membership will be renewed automatically.{/ts}
+          {if $cancelSubscriptionUrl}
+            {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href="%1">visiting this web page</a>.{/ts}
+          {/if}
         </td>
-       </tr>
-       {if $updateSubscriptionBillingUrl}
-         <tr>
+      </tr>
+      {if $updateSubscriptionBillingUrl}
+        <tr>
           <td colspan="2" {$labelStyle}>
-           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
+            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
           </td>
-         </tr>
-       {/if}
-     {/if}
+        </tr>
+      {/if}
+    {/if}
 
-     {if $honor_block_is_active}
+    {if $honor_block_is_active}
       <tr>
-       <th {$headerStyle}>
-        {$soft_credit_type}
-       </th>
+        <th {$headerStyle}>
+          {$soft_credit_type}
+        </th>
       </tr>
       {foreach from=$honoreeProfile item=value key=label}
         <tr>
-         <td {$labelStyle}>
-          {$label}
-         </td>
-         <td {$valueStyle}>
-          {$value}
-         </td>
+          <td {$labelStyle}>
+            {$label}
+          </td>
+          <td {$valueStyle}>
+            {$value}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($pcpBlock)}
+    {if !empty($pcpBlock)}
       <tr>
-       <th {$headerStyle}>
-        {ts}Personal Campaign Page{/ts}
-       </th>
+        <th {$headerStyle}>
+          {ts}Personal Campaign Page{/ts}
+        </th>
       </tr>
       <tr>
-       <td {$labelStyle}>
-        {ts}Display In Honor Roll{/ts}
-       </td>
-       <td {$valueStyle}>
-        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-       </td>
-      </tr>
-      {if $pcp_roll_nickname}
-       <tr>
         <td {$labelStyle}>
-         {ts}Nickname{/ts}
+          {ts}Display In Honor Roll{/ts}
         </td>
         <td {$valueStyle}>
-         {$pcp_roll_nickname}
+          {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
         </td>
-       </tr>
+      </tr>
+      {if $pcp_roll_nickname}
+        <tr>
+          <td {$labelStyle}>
+            {ts}Nickname{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$pcp_roll_nickname}
+          </td>
+        </tr>
       {/if}
       {if $pcp_personal_note}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Personal Note{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$pcp_personal_note}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}Personal Note{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$pcp_personal_note}
+          </td>
+        </tr>
       {/if}
-     {/if}
+    {/if}
 
-     {if !empty($onBehalfProfile)}
+    {if !empty($onBehalfProfile)}
       <tr>
-       <th {$headerStyle}>
-        {$onBehalfProfile_grouptitle}
-       </th>
+        <th {$headerStyle}>
+          {$onBehalfProfile_grouptitle}
+        </th>
       </tr>
       {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
         <tr>
-         <td {$labelStyle}>
-          {$onBehalfName}
-         </td>
-         <td {$valueStyle}>
-          {$onBehalfValue}
-         </td>
+          <td {$labelStyle}>
+            {$onBehalfName}
+          </td>
+          <td {$valueStyle}>
+            {$onBehalfValue}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($billingName)}
-       <tr>
-         <th {$headerStyle}>
-           {ts}Billing Name and Address{/ts}
-         </th>
+    {if {contribution.address_id.display|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Billing Name and Address{/ts}
+        </th>
       </tr>
       <tr>
         <td colspan="2" {$valueStyle}>
-          {$billingName}<br />
-          {$address|nl2br}<br />
-          {$email}
+          {contribution.address_id.name}<br/>
+          {contribution.address_id.display}
         </td>
       </tr>
-    {elseif !empty($email)}
+    {/if}
+    {if {contact.email_primary.email|boolean}}
       <tr>
         <th {$headerStyle}>
           {ts}Registered Email{/ts}
@@ -19495,134 +18084,134 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
       </tr>
       <tr>
         <td colspan="2" {$valueStyle}>
-          {$email}
+          {contact.email_primary.email}
         </td>
       </tr>
     {/if}
 
-     {if !empty($credit_card_type)}
+    {if !empty($credit_card_type)}
       <tr>
-       <th {$headerStyle}>
-        {ts}Credit Card Information{/ts}
-       </th>
+        <th {$headerStyle}>
+          {ts}Credit Card Information{/ts}
+         </th>
       </tr>
       <tr>
-       <td colspan="2" {$valueStyle}>
-        {$credit_card_type}<br />
-        {$credit_card_number}<br />
-        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />
-       </td>
+        <td colspan="2" {$valueStyle}>
+          {$credit_card_type}<br />
+          {$credit_card_number}<br />
+          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />
+        </td>
       </tr>
-     {/if}
+    {/if}
 
-     {if !empty($selectPremium)}
+    {if !empty($selectPremium)}
       <tr>
-       <th {$headerStyle}>
-        {ts}Premium Information{/ts}
-       </th>
+        <th {$headerStyle}>
+          {ts}Premium Information{/ts}
+        </th>
       </tr>
       <tr>
-       <td colspan="2" {$labelStyle}>
-        {$product_name}
-       </td>
+        <td colspan="2" {$labelStyle}>
+          {$product_name}
+        </td>
       </tr>
       {if $option}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Option{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$option}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}Option{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$option}
+          </td>
+        </tr>
       {/if}
       {if $sku}
-       <tr>
-        <td {$labelStyle}>
-         {ts}SKU{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$sku}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}SKU{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$sku}
+          </td>
+        </tr>
       {/if}
       {if $start_date}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Start Date{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$start_date|crmDate}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}Start Date{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$start_date|crmDate}
+          </td>
+        </tr>
       {/if}
       {if $end_date}
-       <tr>
-        <td {$labelStyle}>
-         {ts}End Date{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$end_date|crmDate}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}End Date{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$end_date|crmDate}
+          </td>
+        </tr>
       {/if}
       {if !empty($contact_email) OR !empty($contact_phone)}
-       <tr>
-        <td colspan="2" {$valueStyle}>
-         <p>{ts}For information about this premium, contact:{/ts}</p>
-         {if !empty($contact_email)}
-          <p>{$contact_email}</p>
-         {/if}
-         {if !empty($contact_phone)}
-          <p>{$contact_phone}</p>
-         {/if}
-        </td>
-       </tr>
+        <tr>
+          <td colspan="2" {$valueStyle}>
+            <p>{ts}For information about this premium, contact:{/ts}</p>
+            {if !empty($contact_email)}
+              <p>{$contact_email}</p>
+            {/if}
+            {if !empty($contact_phone)}
+              <p>{$contact_phone}</p>
+            {/if}
+          </td>
+        </tr>
       {/if}
       {if $is_deductible AND !empty($price)}
         <tr>
-         <td colspan="2" {$valueStyle}>
-          <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>
+          <td colspan="2" {$valueStyle}>
+            <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>
          </td>
         </tr>
       {/if}
-     {/if}
+    {/if}
 
-     {if !empty($customPre)}
+    {if !empty($customPre)}
       <tr>
        <th {$headerStyle}>
-        {$customPre_grouptitle}
+         {$customPre_grouptitle}
        </th>
       </tr>
       {foreach from=$customPre item=customValue key=customName}
         <tr>
-         <td {$labelStyle}>
-          {$customName}
-         </td>
-         <td {$valueStyle}>
-          {$customValue}
-         </td>
+          <td {$labelStyle}>
+            {$customName}
+          </td>
+          <td {$valueStyle}>
+            {$customValue}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($customPost)}
+    {if !empty($customPost)}
       <tr>
-       <th {$headerStyle}>
-        {$customPost_grouptitle}
-       </th>
+        <th {$headerStyle}>
+          {$customPost_grouptitle}
+        </th>
       </tr>
       {foreach from=$customPost item=customValue key=customName}
         <tr>
-         <td {$labelStyle}>
-          {$customName}
-         </td>
-         <td {$valueStyle}>
-          {$customValue}
-         </td>
+          <td {$labelStyle}>
+            {$customName}
+          </td>
+          <td {$valueStyle}>
+            {$customValue}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
   </table>
 
@@ -22181,23 +20770,27 @@ INSERT INTO civicrm_msg_template
 ' ,NULL, 1, 0);
 
 INSERT INTO civicrm_job (`api_action`,`api_entity`,`description`,`domain_id`,`is_active`,`last_run`,`name`,`parameters`,`run_frequency`) VALUES
-("version_check","Job","Checks for CiviCRM version updates. Important for keeping the database secure. Also sends anonymous usage statistics to civicrm.org to to assist in prioritizing ongoing development efforts.",@domainID,"1",NULL,"CiviCRM Update Check",NULL,"Daily"),
-("process_mailing","Job","Sends out scheduled CiviMail mailings",@domainID,"0",NULL,"Send Scheduled Mailings",NULL,"Always"),
-("fetch_bounces","Job","Fetches bounces from mailings and writes them to mailing statistics",@domainID,"0",NULL,"Fetch Bounces",NULL,"Hourly"),
-("fetch_activities","Job","Inserts activity for a contact or a case by retrieving inbound emails from a mail directory",@domainID,"0",NULL,"Process Inbound Emails",NULL,"Hourly"),
-("process_pledge","Job","Updates pledge records and sends out reminders",@domainID,"0",NULL,"Process Pledges","send_reminders=[1 or 0] optional- 1 to send payment reminders","Daily"),
-("geocode","Job","Retrieves geocodes (lat and long) and / or parses street addresses (populates street number, street name, etc.)",@domainID,"0",NULL,"Geocode and Parse Addresses","geocoding=[1 or 0] required\nparse=[1 or 0] required\nstart=[contact ID] optional-begin with this contact ID\nend=[contact ID] optional-process contacts with IDs less than this\nthrottle=[1 or 0] optional-1 adds five second sleep","Daily"),
-("update_greeting","Job","Goes through contact records and updates email and postal greetings, or addressee value",@domainID,"0",NULL,"Update Greetings and Addressees","ct=[Individual or Household or Organization] required\ngt=[email_greeting or postal_greeting or addressee] required\nforce=[0 or 1] optional-0 update contacts with null value, 1 update all\nlimit=Number optional-Limit the number of contacts to update","Daily"),
-("mail_report","Job","Generates and sends out reports via email",@domainID,"0",NULL,"Mail Reports","instanceId=[ID of report instance] required\nformat=[csv or print] optional-output CSV or print-friendly HTML, else PDF","Daily"),
-("send_reminder","Job","Sends out scheduled reminders via email",@domainID,"0",NULL,"Send Scheduled Reminders",NULL,"Hourly"),
-("process_participant","Job","Updates pending event participant statuses based on time",@domainID,"0",NULL,"Update Participant Statuses",NULL,"Always"),
-("process_membership","Job","Updates membership statuses. WARNING: Membership renewal reminders have been migrated to the Schedule Reminders functionality, which supports multiple renewal reminders.",@domainID,"0",NULL,"Update Membership Statuses",NULL,"Daily"),
-("process_respondent","Job","Releases reserved survey respondents when they have been reserved for longer than the Release Frequency days specified for that survey.",@domainID,"0",NULL,"Process Survey Respondents",NULL,"Always"),
-("cleanup","Job","Removes temporary data and files, and clears old data from cache tables. Recommend running this job every hour to help prevent database and file system bloat.",@domainID,"0",NULL,"Clean-up Temporary Data and Files",NULL,"Hourly"),
-("process_sms","Job","Sends out scheduled SMS",@domainID,"0",NULL,"Send Scheduled SMS",NULL,"Always"),
-("group_rebuild","Job","Rebuilds the smart group cache.",@domainID,"0",NULL,"Rebuild Smart Group Cache","limit=Number optional-Limit the number of smart groups rebuild","Always"),
-("disable_expired_relationships","Job","Disables relationships that have expired (ie. those relationships whose end date is in the past).",@domainID,"0",NULL,"Disable expired relationships",NULL,"Daily"),
-("update_email_resetdate","Mailing","Updates the reset_date on an email address to indicate that there was a valid delivery to this email address.",@domainID,"0",NULL,"Validate Email Address from Mailings.","minDays, maxDays=Consider mailings that have completed between minDays and maxDays","Daily")
+("version_check","Job","Checks for version updates. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_version_check",@domainID,"1",NULL,"CiviCRM Update Check",NULL,"Daily"),
+("process_mailing","Job","Sends out scheduled mailings. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_mailing",@domainID,"0",NULL,"Send Scheduled Mailings",NULL,"Always"),
+("fetch_bounces","Job","Fetches bounces from mailings. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_fetch_bounces",@domainID,"0",NULL,"Fetch Bounces","is_create_activities=0","Hourly"),
+("fetch_activities","Job","Inserts activity for a contact or a case by retrieving inbound emails. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_fetch_activities",@domainID,"0",NULL,"Process Inbound Emails",NULL,"Hourly"),
+("process_pledge","Job","Updates pledge records and sends out reminders. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_pledge",@domainID,"0",NULL,"Process Pledges","send_reminders=0","Daily"),
+("geocode","Job","Geocodes and/or parses street addresses. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_geocode",@domainID,"0",NULL,"Geocode and Parse Addresses","geocoding=1\n      parse=0\n      throttle=0","Daily"),
+("update_greeting","Job","Update Individual Email Greeting. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting",@domainID,"0",NULL,"Update Individual Email Greeting","ct=Individual\ngt=email_greeting","Daily"),
+("update_greeting","Job","Update Individual Postal Greeting. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting",@domainID,"0",NULL,"Update Individual Postal Greeting","ct=Individual\ngt=postal_greeting","Daily"),
+("update_greeting","Job","Update Individual Addressee. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting",@domainID,"0",NULL,"Update Individual Addressee","ct=Individual\ngt=addressee","Daily"),
+("mail_report","Job","Generates and sends out reports via email. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_mail_report",@domainID,"0",NULL,"Mail Reports","","Daily"),
+("send_reminder","Job","Sends out scheduled reminders via email. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_send_reminder",@domainID,"0",NULL,"Send Scheduled Reminders",NULL,"Hourly"),
+("process_participant","Job","Updates pending event participant statuses based on time. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_participant",@domainID,"0",NULL,"Update Participant Statuses",NULL,"Always"),
+("process_membership","Job","Updates membership statuses. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_membership",@domainID,"0",NULL,"Update Membership Statuses",NULL,"Daily"),
+("process_respondent","Job","Releases reserved survey respondents. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_respondent",@domainID,"0",NULL,"Process Survey Respondents",NULL,"Always"),
+("cleanup","Job","Removes temporary data and files. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_cleanup",@domainID,"0",NULL,"Clean-up Temporary Data and Files","session=0","Monthly"),
+("process_sms","Job","Sends out scheduled SMS. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_sms",@domainID,"0",NULL,"Send Scheduled SMS",NULL,"Always"),
+("group_rebuild","Job","Rebuilds the smart group cache. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_group_rebuild",@domainID,"0",NULL,"Rebuild Smart Group Cache","limit=0","Hourly"),
+("group_cache_flush","Job","Purges aged smart group cache data. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_group_cache_flush",@domainID,"0",NULL,"Group Cache Flush","","Hourly"),
+("disable_expired_relationships","Job","Disables relationships that have expired. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_disable_expired_relationships",@domainID,"0",NULL,"Disable expired relationships",NULL,"Daily"),
+("update_email_resetdate","Mailing","Updates the reset_date on an email address. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#mailing_update_email_resetdate",@domainID,"0",NULL,"Validate Email Address from Mailings.","minDays=5\n      maxDays=60","Daily"),
+("process_batch_merge","Job","Executes the Individual, Unsupervised redupe rule. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_batch_merge",@domainID,"0",NULL,"Dedupe Contacts",NULL,"Daily")
 ;
 
 
@@ -22312,6 +20905,8 @@ INSERT IGNORE INTO civicrm_extension (`file`,`full_name`,`is_active`,`label`,`na
 ("recaptcha","recaptcha","1","reCAPTCHA","reCAPTCHA","module"),
 ("ckeditor4","ckeditor4","1","CKEditor4","CKEditor4","module"),
 ("flexmailer","org.civicrm.flexmailer","1","FlexMailer","FlexMailer","module"),
+("civi_campaign","civi_campaign","1","CiviCampaign","CiviCampaign","module"),
+("civi_case","civi_case","1","CiviCase","CiviCase","module"),
 ("civi_contribute","civi_contribute","1","CiviContribute","CiviContribute","module"),
 ("civi_event","civi_event","1","CiviEvent","CiviEvent","module"),
 ("civi_mail","civi_mail","1","CiviMail","CiviMail","module"),
@@ -23108,4 +21703,4 @@ INSERT INTO `civicrm_report_instance`
     ( `domain_id`, `title`, `report_id`, `description`, `permission`, `form_values`)
 VALUES
     (  @domainID, 'Survey Details', 'survey/detail', 'Detailed report for canvassing, phone-banking, walk lists or other surveys.', 'access CiviReport', 'a:39:{s:6:"fields";a:2:{s:9:"sort_name";s:1:"1";s:6:"result";s:1:"1";}s:22:"assignee_contact_id_op";s:2:"eq";s:25:"assignee_contact_id_value";s:0:"";s:12:"sort_name_op";s:3:"has";s:15:"sort_name_value";s:0:"";s:17:"street_number_min";s:0:"";s:17:"street_number_max";s:0:"";s:16:"street_number_op";s:3:"lte";s:19:"street_number_value";s:0:"";s:14:"street_name_op";s:3:"has";s:17:"street_name_value";s:0:"";s:15:"postal_code_min";s:0:"";s:15:"postal_code_max";s:0:"";s:14:"postal_code_op";s:3:"lte";s:17:"postal_code_value";s:0:"";s:7:"city_op";s:3:"has";s:10:"city_value";s:0:"";s:20:"state_province_id_op";s:2:"in";s:23:"state_province_id_value";a:0:{}s:13:"country_id_op";s:2:"in";s:16:"country_id_value";a:0:{}s:12:"survey_id_op";s:2:"in";s:15:"survey_id_value";a:0:{}s:12:"status_id_op";s:2:"eq";s:15:"status_id_value";s:1:"1";s:11:"custom_1_op";s:2:"in";s:14:"custom_1_value";a:0:{}s:11:"custom_2_op";s:2:"in";s:14:"custom_2_value";a:0:{}s:17:"custom_3_relative";s:1:"0";s:13:"custom_3_from";s:0:"";s:11:"custom_3_to";s:0:"";s:11:"description";s:75:"Detailed report for canvassing, phone-banking, walk lists or other surveys.";s:13:"email_subject";s:0:"";s:8:"email_to";s:0:"";s:8:"email_cc";s:0:"";s:10:"permission";s:17:"access CiviReport";s:6:"groups";s:0:"";s:9:"domain_id";i:1;}');
-UPDATE civicrm_domain SET version = '5.68.1';
+UPDATE civicrm_domain SET version = '5.69.0';
diff --git a/civicrm/sql/civicrm_data/civicrm_extension.sqldata.php b/civicrm/sql/civicrm_data/civicrm_extension.sqldata.php
index 90b3c236686ff85521495995c683a4437b8bada5..641ea25309bf83093cc252068f4009d40d58d6a7 100644
--- a/civicrm/sql/civicrm_data/civicrm_extension.sqldata.php
+++ b/civicrm/sql/civicrm_data/civicrm_extension.sqldata.php
@@ -37,8 +37,14 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_extension', 'INSERT IGNORE INTO
       'name' => 'FlexMailer',
       'file' => 'flexmailer',
     ],
-
-    // The following should be kept in sync with the *default* list of components (`enable_components`).
+    [
+      'full_name' => 'civi_campaign',
+      'name' => 'CiviCampaign',
+    ],
+    [
+      'full_name' => 'civi_case',
+      'name' => 'CiviCase',
+    ],
     [
       'full_name' => 'civi_contribute',
       'name' => 'CiviContribute',
diff --git a/civicrm/sql/civicrm_data/civicrm_job.sqldata.php b/civicrm/sql/civicrm_data/civicrm_job.sqldata.php
index f3af14cddc9d1ed897b7726a8bdc916a822955fb..435096b8c8b4495afde9bf700ba6fc806e4131c7 100644
--- a/civicrm/sql/civicrm_data/civicrm_job.sqldata.php
+++ b/civicrm/sql/civicrm_data/civicrm_job.sqldata.php
@@ -11,8 +11,7 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_job')
     [
       'run_frequency' => 'Daily',
       'name' => 'CiviCRM Update Check',
-      'description' => 'Checks for CiviCRM version updates. Important for keeping the database secure. Also sends anonymous usage statistics to civicrm.org to to assist in prioritizing ongoing development efforts.',
-      // FIXME: "to to"
+      'description' => 'Checks for version updates. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_version_check',
       'api_entity' => 'Job',
       'api_action' => 'version_check',
       'is_active' => 1,
@@ -20,127 +19,158 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_job')
     [
       'run_frequency' => 'Always',
       'name' => 'Send Scheduled Mailings',
-      'description' => 'Sends out scheduled CiviMail mailings',
+      'description' => 'Sends out scheduled mailings. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_mailing',
       'api_entity' => 'Job',
       'api_action' => 'process_mailing',
     ],
     [
       'run_frequency' => 'Hourly',
       'name' => 'Fetch Bounces',
-      'description' => 'Fetches bounces from mailings and writes them to mailing statistics',
+      'description' => 'Fetches bounces from mailings. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_fetch_bounces',
       'api_entity' => 'Job',
       'api_action' => 'fetch_bounces',
+      'parameters' => 'is_create_activities=0',
     ],
     [
       'run_frequency' => 'Hourly',
       'name' => 'Process Inbound Emails',
-      'description' => 'Inserts activity for a contact or a case by retrieving inbound emails from a mail directory',
+      'description' => 'Inserts activity for a contact or a case by retrieving inbound emails. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_fetch_activities',
       'api_entity' => 'Job',
       'api_action' => 'fetch_activities',
     ],
     [
       'run_frequency' => 'Daily',
       'name' => 'Process Pledges',
-      'description' => 'Updates pledge records and sends out reminders',
+      'description' => 'Updates pledge records and sends out reminders. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_pledge',
       'api_entity' => 'Job',
       'api_action' => 'process_pledge',
-      'parameters' => 'send_reminders=[1 or 0] optional- 1 to send payment reminders',
+      'parameters' => 'send_reminders=0',
     ],
     [
       'run_frequency' => 'Daily',
       'name' => 'Geocode and Parse Addresses',
-      'description' => 'Retrieves geocodes (lat and long) and / or parses street addresses (populates street number, street name, etc.)',
+      'description' => 'Geocodes and/or parses street addresses. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_geocode',
       'api_entity' => 'Job',
       'api_action' => 'geocode',
-      'parameters' => 'geocoding=[1 or 0] required
-parse=[1 or 0] required
-start=[contact ID] optional-begin with this contact ID
-end=[contact ID] optional-process contacts with IDs less than this
-throttle=[1 or 0] optional-1 adds five second sleep',
+      'parameters' => 'geocoding=1
+      parse=0
+      throttle=0',
     ],
     [
       'run_frequency' => 'Daily',
-      'name' => 'Update Greetings and Addressees',
-      'description' => 'Goes through contact records and updates email and postal greetings, or addressee value',
+      'name' => 'Update Individual Email Greeting',
+      'description' => 'Update Individual Email Greeting. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting',
       'api_entity' => 'Job',
       'api_action' => 'update_greeting',
-      'parameters' => 'ct=[Individual or Household or Organization] required
-gt=[email_greeting or postal_greeting or addressee] required
-force=[0 or 1] optional-0 update contacts with null value, 1 update all
-limit=Number optional-Limit the number of contacts to update',
+      'parameters' => 'ct=Individual
+gt=email_greeting',
+    ],
+    [
+      'run_frequency' => 'Daily',
+      'name' => 'Update Individual Postal Greeting',
+      'description' => 'Update Individual Postal Greeting. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting',
+      'api_entity' => 'Job',
+      'api_action' => 'update_greeting',
+      'parameters' => 'ct=Individual
+gt=postal_greeting',
+    ],
+    [
+      'run_frequency' => 'Daily',
+      'name' => 'Update Individual Addressee',
+      'description' => 'Update Individual Addressee. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting',
+      'api_entity' => 'Job',
+      'api_action' => 'update_greeting',
+      'parameters' => 'ct=Individual
+gt=addressee',
     ],
     [
       'run_frequency' => 'Daily',
       'name' => 'Mail Reports',
-      'description' => 'Generates and sends out reports via email',
+      'description' => 'Generates and sends out reports via email. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_mail_report',
       'api_entity' => 'Job',
       'api_action' => 'mail_report',
-      'parameters' => 'instanceId=[ID of report instance] required
-format=[csv or print] optional-output CSV or print-friendly HTML, else PDF',
+      'parameters' => '',
     ],
     [
       'run_frequency' => 'Hourly',
       'name' => 'Send Scheduled Reminders',
-      'description' => 'Sends out scheduled reminders via email',
+      'description' => 'Sends out scheduled reminders via email. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_send_reminder',
       'api_entity' => 'Job',
       'api_action' => 'send_reminder',
     ],
     [
       'run_frequency' => 'Always',
       'name' => 'Update Participant Statuses',
-      'description' => 'Updates pending event participant statuses based on time',
+      'description' => 'Updates pending event participant statuses based on time. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_participant',
       'api_entity' => 'Job',
       'api_action' => 'process_participant',
     ],
     [
       'run_frequency' => 'Daily',
       'name' => 'Update Membership Statuses',
-      'description' => 'Updates membership statuses. WARNING: Membership renewal reminders have been migrated to the Schedule Reminders functionality, which supports multiple renewal reminders.',
+      'description' => 'Updates membership statuses. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_membership',
       'api_entity' => 'Job',
       'api_action' => 'process_membership',
     ],
     [
       'run_frequency' => 'Always',
       'name' => 'Process Survey Respondents',
-      'description' => 'Releases reserved survey respondents when they have been reserved for longer than the Release Frequency days specified for that survey.',
+      'description' => 'Releases reserved survey respondents. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_respondent',
       'api_entity' => 'Job',
       'api_action' => 'process_respondent',
     ],
     [
-      'run_frequency' => 'Hourly',
+      'run_frequency' => 'Monthly',
       'name' => 'Clean-up Temporary Data and Files',
-      'description' => 'Removes temporary data and files, and clears old data from cache tables. Recommend running this job every hour to help prevent database and file system bloat.',
+      'description' => 'Removes temporary data and files. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_cleanup',
       'api_entity' => 'Job',
       'api_action' => 'cleanup',
+      'parameters' => 'session=0',
     ],
     [
       'run_frequency' => 'Always',
       'name' => 'Send Scheduled SMS',
-      'description' => 'Sends out scheduled SMS',
+      'description' => 'Sends out scheduled SMS. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_sms',
       'api_entity' => 'Job',
       'api_action' => 'process_sms',
     ],
     [
-      'run_frequency' => 'Always',
+      'run_frequency' => 'Hourly',
       'name' => 'Rebuild Smart Group Cache',
-      'description' => 'Rebuilds the smart group cache.',
+      'description' => 'Rebuilds the smart group cache. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_group_rebuild',
       'api_entity' => 'Job',
       'api_action' => 'group_rebuild',
-      'parameters' => 'limit=Number optional-Limit the number of smart groups rebuild',
+      'parameters' => 'limit=0',
+    ],
+    [
+      'run_frequency' => 'Hourly',
+      'name' => 'Group Cache Flush',
+      'description' => 'Purges aged smart group cache data. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_group_cache_flush',
+      'api_entity' => 'Job',
+      'api_action' => 'group_cache_flush',
+      'parameters' => '',
     ],
     [
       'run_frequency' => 'Daily',
       'name' => 'Disable expired relationships',
-      'description' => 'Disables relationships that have expired (ie. those relationships whose end date is in the past).',
+      'description' => 'Disables relationships that have expired. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_disable_expired_relationships',
       'api_entity' => 'Job',
       'api_action' => 'disable_expired_relationships',
     ],
     [
       'run_frequency' => 'Daily',
       'name' => 'Validate Email Address from Mailings.',
-      'description' => 'Updates the reset_date on an email address to indicate that there was a valid delivery to this email address.',
+      'description' => 'Updates the reset_date on an email address. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#mailing_update_email_resetdate',
       'api_entity' => 'Mailing',
       'api_action' => 'update_email_resetdate',
-      'parameters' => 'minDays, maxDays=Consider mailings that have completed between minDays and maxDays',
+      'parameters' => 'minDays=5
+      maxDays=60',
+    ],
+    [
+      'run_frequency' => 'Daily',
+      'name' => 'Dedupe Contacts',
+      'description' => 'Executes the Individual, Unsupervised redupe rule. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_batch_merge',
+      'api_entity' => 'Job',
+      'api_action' => 'process_batch_merge',
     ],
   ]);
diff --git a/civicrm/sql/civicrm_data/civicrm_mailing_component.sqldata.php b/civicrm/sql/civicrm_data/civicrm_mailing_component.sqldata.php
index 7c9d2ee5ddf7b08deb1c7d04231c88d951ff6032..4bc340c09ac10ee5784fe1632b8974afcd8211e8 100644
--- a/civicrm/sql/civicrm_data/civicrm_mailing_component.sqldata.php
+++ b/civicrm/sql/civicrm_data/civicrm_mailing_component.sqldata.php
@@ -24,8 +24,8 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_mailing_component')
       'name' => ts("Mailing Footer"),
       "component_type" => "Footer",
       'subject' => ts("Descriptive Title for this Footer."),
-      'body_html' => ts('Sample Footer for HTML formatted content<br/><a href="{action.optOutUrl}">Unsubscribe</a>  <br/> {domain.address}'),
-      'body_text' => ts("to unsubscribe: {action.optOutUrl}\n{domain.address}"),
+      'body_html' => ts('Sample Footer for HTML formatted content<br/><a href="{action.optOutUrl}">Opt out of any future emails</a>  <br/> {domain.address}'),
+      'body_text' => ts("Opt out of any future emails: {action.optOutUrl}\n{domain.address}"),
     ],
     [
       'name' => ts('Subscribe Message'),
diff --git a/civicrm/sql/civicrm_drop.mysql b/civicrm/sql/civicrm_drop.mysql
index a4219b207f772d382f287ddc85889089755bcc94..43dd062fde0e9866652204f76c487b4b2ecd9227 100644
--- a/civicrm/sql/civicrm_drop.mysql
+++ b/civicrm/sql/civicrm_drop.mysql
@@ -8,9 +8,11 @@
 --
 -- Generated from drop.tpl
 -- DO NOT EDIT.  Generated by CRM_Core_CodeGen
----- /*******************************************************
+--
+-- /*******************************************************
+-- *
+-- * Clean up the existing tables
 -- *
--- * Clean up the existing tables-- *
 -- *******************************************************/
 
 SET FOREIGN_KEY_CHECKS=0;
diff --git a/civicrm/sql/civicrm_generated.mysql b/civicrm/sql/civicrm_generated.mysql
index 2345a0a1c1b4bea22be129d956e4cbea7f25efc0..a969cd1f841e42c9d71b3088a339ba28ae512cfd 100644
--- a/civicrm/sql/civicrm_generated.mysql
+++ b/civicrm/sql/civicrm_generated.mysql
@@ -1,13 +1,13 @@
--- MySQL dump 10.13  Distrib 5.7.37, for Linux (x86_64)
+-- MySQL dump 10.13  Distrib 8.0.35, for Linux (x86_64)
 --
--- Host: 127.0.0.1    Database: dmastercivi_ssc8b
+-- Host: 127.0.0.1    Database: db
 -- ------------------------------------------------------
--- Server version	5.7.37
+-- Server version	8.0.35
 
 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
 /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
+/*!50503 SET NAMES utf8mb4 */;
 /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
 /*!40103 SET TIME_ZONE='+00:00' */;
 /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
@@ -82,647 +82,647 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_activity` WRITE;
 /*!40000 ALTER TABLE `civicrm_activity` DISABLE KEYS */;
 INSERT INTO `civicrm_activity` (`id`, `source_record_id`, `activity_type_id`, `subject`, `activity_date_time`, `duration`, `location`, `phone_id`, `phone_number`, `details`, `status_id`, `priority_id`, `parent_id`, `is_test`, `medium_id`, `is_auto`, `relationship_id`, `is_current_revision`, `original_id`, `result`, `is_deleted`, `campaign_id`, `engagement_level`, `weight`, `is_star`, `created_date`, `modified_date`) VALUES
- (1,NULL,56,'Subject for Interview','2023-01-28 07:18:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (2,NULL,2,'Subject for Phone Call','2022-11-20 11:02:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (3,NULL,56,'Subject for Interview','2023-08-12 12:22:42',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (4,NULL,9,'Subject for Tell a Friend','2023-04-08 21:35:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (5,NULL,56,'Subject for Interview','2023-02-10 15:32:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (6,NULL,22,'Subject for Print/Merge Document','2023-08-18 18:03:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (7,NULL,2,'Subject for Phone Call','2023-07-04 18:36:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (8,NULL,1,'Subject for Meeting','2023-01-10 01:20:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (9,NULL,56,'Subject for Interview','2023-07-13 16:12:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (10,NULL,9,'Subject for Tell a Friend','2023-01-03 03:32:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (11,NULL,56,'Subject for Interview','2023-09-24 11:48:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (12,NULL,22,'Subject for Print/Merge Document','2023-04-05 10:50:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (13,NULL,2,'Subject for Phone Call','2023-01-11 06:46:15',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (14,NULL,2,'Subject for Phone Call','2023-04-24 05:54:34',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (15,NULL,9,'Subject for Tell a Friend','2023-01-27 11:35:35',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (16,NULL,22,'Subject for Print/Merge Document','2023-05-11 06:04:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (17,NULL,56,'Subject for Interview','2023-01-07 04:56:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (18,NULL,9,'Subject for Tell a Friend','2023-07-25 18:23:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (19,NULL,22,'Subject for Print/Merge Document','2023-08-11 13:34:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (20,NULL,56,'Subject for Interview','2023-07-18 06:51:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (21,NULL,9,'Subject for Tell a Friend','2023-05-13 21:41:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (22,NULL,2,'Subject for Phone Call','2023-02-01 08:50:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (23,NULL,22,'Subject for Print/Merge Document','2022-11-10 01:22:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (24,NULL,2,'Subject for Phone Call','2022-12-25 06:38:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (25,NULL,22,'Subject for Print/Merge Document','2022-11-17 02:00:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (26,NULL,1,'Subject for Meeting','2023-04-18 02:08:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (27,NULL,1,'Subject for Meeting','2022-12-24 01:00:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (28,NULL,56,'Subject for Interview','2022-10-25 16:52:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (29,NULL,1,'Subject for Meeting','2023-03-28 07:38:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (30,NULL,1,'Subject for Meeting','2023-02-02 08:32:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (31,NULL,22,'Subject for Print/Merge Document','2023-04-10 19:32:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (32,NULL,2,'Subject for Phone Call','2023-06-04 02:52:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (33,NULL,56,'Subject for Interview','2023-08-05 07:39:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (34,NULL,56,'Subject for Interview','2023-08-15 07:38:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (35,NULL,9,'Subject for Tell a Friend','2022-12-10 19:32:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (36,NULL,1,'Subject for Meeting','2023-04-27 05:55:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (37,NULL,56,'Subject for Interview','2023-05-20 09:05:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (38,NULL,56,'Subject for Interview','2023-08-18 15:55:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (39,NULL,1,'Subject for Meeting','2023-07-11 19:34:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (40,NULL,56,'Subject for Interview','2023-06-02 18:40:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (41,NULL,1,'Subject for Meeting','2023-04-13 14:53:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (42,NULL,56,'Subject for Interview','2023-03-28 17:34:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (43,NULL,1,'Subject for Meeting','2023-04-05 05:15:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (44,NULL,9,'Subject for Tell a Friend','2023-07-06 13:57:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (45,NULL,9,'Subject for Tell a Friend','2023-01-31 09:04:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (46,NULL,9,'Subject for Tell a Friend','2023-04-25 16:17:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (47,NULL,9,'Subject for Tell a Friend','2023-05-30 05:53:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (48,NULL,56,'Subject for Interview','2023-10-10 17:41:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (49,NULL,9,'Subject for Tell a Friend','2023-07-17 21:39:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (50,NULL,56,'Subject for Interview','2022-11-25 16:55:16',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (51,NULL,2,'Subject for Phone Call','2023-03-11 04:03:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (52,NULL,2,'Subject for Phone Call','2023-04-05 07:44:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (53,NULL,56,'Subject for Interview','2022-11-18 19:31:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (54,NULL,2,'Subject for Phone Call','2023-09-24 16:24:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (55,NULL,56,'Subject for Interview','2023-03-19 13:52:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (56,NULL,2,'Subject for Phone Call','2023-08-05 08:56:53',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (57,NULL,1,'Subject for Meeting','2022-11-24 17:31:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (58,NULL,1,'Subject for Meeting','2023-06-19 05:08:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (59,NULL,9,'Subject for Tell a Friend','2023-04-30 14:26:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (60,NULL,9,'Subject for Tell a Friend','2023-01-06 06:12:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (61,NULL,22,'Subject for Print/Merge Document','2023-07-06 00:30:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (62,NULL,22,'Subject for Print/Merge Document','2023-04-15 07:38:11',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (63,NULL,1,'Subject for Meeting','2023-10-05 10:45:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (64,NULL,56,'Subject for Interview','2022-12-05 10:31:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (65,NULL,22,'Subject for Print/Merge Document','2023-07-24 15:11:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (66,NULL,9,'Subject for Tell a Friend','2023-03-18 19:51:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (67,NULL,56,'Subject for Interview','2022-11-02 04:03:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (68,NULL,1,'Subject for Meeting','2023-03-30 17:13:11',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (69,NULL,9,'Subject for Tell a Friend','2022-10-29 01:38:51',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (70,NULL,9,'Subject for Tell a Friend','2023-06-16 20:18:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (71,NULL,56,'Subject for Interview','2023-07-07 21:11:58',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (72,NULL,2,'Subject for Phone Call','2023-07-20 12:28:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (73,NULL,1,'Subject for Meeting','2022-11-20 11:28:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (74,NULL,1,'Subject for Meeting','2023-08-22 10:20:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (75,NULL,56,'Subject for Interview','2023-05-30 15:20:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (76,NULL,9,'Subject for Tell a Friend','2023-01-20 20:14:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (77,NULL,22,'Subject for Print/Merge Document','2023-02-22 22:30:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (78,NULL,2,'Subject for Phone Call','2023-04-27 15:51:00',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (79,NULL,22,'Subject for Print/Merge Document','2023-04-12 11:36:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (80,NULL,2,'Subject for Phone Call','2023-01-13 18:53:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (81,NULL,9,'Subject for Tell a Friend','2022-12-06 12:21:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (82,NULL,2,'Subject for Phone Call','2023-07-11 09:11:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (83,NULL,1,'Subject for Meeting','2023-01-10 18:04:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (84,NULL,9,'Subject for Tell a Friend','2023-02-23 03:27:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (85,NULL,1,'Subject for Meeting','2022-10-20 07:12:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (86,NULL,22,'Subject for Print/Merge Document','2023-09-20 09:49:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (87,NULL,9,'Subject for Tell a Friend','2023-07-02 01:53:34',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (88,NULL,1,'Subject for Meeting','2023-02-23 15:55:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (89,NULL,9,'Subject for Tell a Friend','2023-09-30 05:08:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (90,NULL,2,'Subject for Phone Call','2023-06-21 10:13:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (91,NULL,9,'Subject for Tell a Friend','2023-06-07 10:29:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (92,NULL,56,'Subject for Interview','2023-04-13 12:15:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (93,NULL,2,'Subject for Phone Call','2023-08-06 10:00:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (94,NULL,1,'Subject for Meeting','2023-09-02 20:56:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (95,NULL,22,'Subject for Print/Merge Document','2023-09-22 17:25:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (96,NULL,22,'Subject for Print/Merge Document','2023-06-20 22:56:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (97,NULL,9,'Subject for Tell a Friend','2023-04-07 04:20:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (98,NULL,9,'Subject for Tell a Friend','2022-12-28 20:40:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (99,NULL,22,'Subject for Print/Merge Document','2023-05-22 12:18:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (100,NULL,9,'Subject for Tell a Friend','2023-04-22 12:57:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (101,NULL,9,'Subject for Tell a Friend','2023-07-30 02:38:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (102,NULL,1,'Subject for Meeting','2023-02-05 15:02:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (103,NULL,2,'Subject for Phone Call','2023-10-05 19:01:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (104,NULL,22,'Subject for Print/Merge Document','2022-12-15 14:17:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (105,NULL,56,'Subject for Interview','2023-08-06 05:49:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (106,NULL,1,'Subject for Meeting','2023-06-28 12:13:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (107,NULL,9,'Subject for Tell a Friend','2023-06-18 05:01:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (108,NULL,2,'Subject for Phone Call','2023-01-17 20:31:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (109,NULL,2,'Subject for Phone Call','2023-02-22 07:30:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (110,NULL,1,'Subject for Meeting','2023-01-12 22:14:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (111,NULL,2,'Subject for Phone Call','2022-10-27 21:05:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (112,NULL,9,'Subject for Tell a Friend','2022-11-24 01:21:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (113,NULL,22,'Subject for Print/Merge Document','2023-08-23 04:50:26',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (114,NULL,22,'Subject for Print/Merge Document','2023-06-10 11:07:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (115,NULL,1,'Subject for Meeting','2022-12-29 18:56:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (116,NULL,56,'Subject for Interview','2023-07-09 19:12:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (117,NULL,2,'Subject for Phone Call','2023-03-31 20:50:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (118,NULL,22,'Subject for Print/Merge Document','2023-06-11 15:03:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (119,NULL,2,'Subject for Phone Call','2023-09-15 06:13:07',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (120,NULL,56,'Subject for Interview','2022-11-22 03:03:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (121,NULL,9,'Subject for Tell a Friend','2023-04-12 15:52:24',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (122,NULL,9,'Subject for Tell a Friend','2023-09-15 22:56:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (123,NULL,1,'Subject for Meeting','2022-11-13 13:46:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (124,NULL,9,'Subject for Tell a Friend','2022-11-28 15:24:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (125,NULL,22,'Subject for Print/Merge Document','2022-10-29 13:57:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (126,NULL,1,'Subject for Meeting','2023-01-18 09:48:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (127,NULL,9,'Subject for Tell a Friend','2023-08-10 19:20:11',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (128,NULL,22,'Subject for Print/Merge Document','2023-01-17 11:26:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (129,NULL,56,'Subject for Interview','2023-06-23 12:17:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (130,NULL,2,'Subject for Phone Call','2022-12-02 03:08:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (131,NULL,2,'Subject for Phone Call','2022-12-29 13:20:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (132,NULL,9,'Subject for Tell a Friend','2023-08-02 20:11:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (133,NULL,1,'Subject for Meeting','2023-03-22 16:57:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (134,NULL,9,'Subject for Tell a Friend','2023-04-17 15:37:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (135,NULL,1,'Subject for Meeting','2023-03-08 17:15:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (136,NULL,22,'Subject for Print/Merge Document','2023-10-11 21:48:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (137,NULL,1,'Subject for Meeting','2022-11-17 22:03:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (138,NULL,1,'Subject for Meeting','2022-11-04 12:09:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (139,NULL,9,'Subject for Tell a Friend','2023-09-14 02:11:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (140,NULL,9,'Subject for Tell a Friend','2023-06-28 15:21:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (141,NULL,9,'Subject for Tell a Friend','2023-04-16 14:15:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (142,NULL,2,'Subject for Phone Call','2023-01-16 19:23:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (143,NULL,2,'Subject for Phone Call','2023-04-28 06:08:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (144,NULL,22,'Subject for Print/Merge Document','2023-04-13 21:34:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (145,NULL,22,'Subject for Print/Merge Document','2023-02-03 15:37:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (146,NULL,56,'Subject for Interview','2023-10-13 19:47:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (147,NULL,2,'Subject for Phone Call','2022-10-31 05:23:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (148,NULL,1,'Subject for Meeting','2022-12-25 10:29:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (149,NULL,9,'Subject for Tell a Friend','2023-05-05 12:11:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (150,NULL,56,'Subject for Interview','2023-02-05 16:40:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (151,NULL,22,'Subject for Print/Merge Document','2023-04-30 21:22:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (152,NULL,9,'Subject for Tell a Friend','2022-11-27 00:25:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (153,NULL,9,'Subject for Tell a Friend','2023-03-15 12:18:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (154,NULL,56,'Subject for Interview','2023-08-09 21:15:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (155,NULL,56,'Subject for Interview','2023-06-11 02:19:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (156,NULL,1,'Subject for Meeting','2023-08-12 20:43:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (157,NULL,9,'Subject for Tell a Friend','2023-04-18 10:13:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (158,NULL,22,'Subject for Print/Merge Document','2023-10-11 14:43:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (159,NULL,22,'Subject for Print/Merge Document','2022-12-18 18:44:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (160,NULL,56,'Subject for Interview','2023-01-29 07:45:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (161,NULL,1,'Subject for Meeting','2023-03-28 17:25:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (162,NULL,56,'Subject for Interview','2023-06-06 05:10:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (163,NULL,56,'Subject for Interview','2023-05-31 15:47:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (164,NULL,1,'Subject for Meeting','2023-09-09 23:05:31',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (165,NULL,2,'Subject for Phone Call','2023-01-18 21:13:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (166,NULL,9,'Subject for Tell a Friend','2022-11-07 03:35:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (167,NULL,1,'Subject for Meeting','2023-09-27 21:37:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (168,NULL,22,'Subject for Print/Merge Document','2023-03-20 19:33:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (169,NULL,1,'Subject for Meeting','2023-05-22 07:09:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (170,NULL,1,'Subject for Meeting','2023-01-31 20:37:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (171,NULL,56,'Subject for Interview','2023-03-27 22:15:54',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (172,NULL,56,'Subject for Interview','2023-09-10 00:35:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (173,NULL,2,'Subject for Phone Call','2023-01-18 10:22:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (174,NULL,2,'Subject for Phone Call','2023-09-30 10:05:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (175,NULL,22,'Subject for Print/Merge Document','2023-08-04 09:39:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (176,NULL,2,'Subject for Phone Call','2023-10-04 22:34:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (177,NULL,9,'Subject for Tell a Friend','2023-01-18 01:38:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (178,NULL,1,'Subject for Meeting','2023-01-13 03:05:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (179,NULL,1,'Subject for Meeting','2023-02-27 08:32:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (180,NULL,22,'Subject for Print/Merge Document','2023-03-22 06:23:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (181,NULL,22,'Subject for Print/Merge Document','2023-05-28 17:07:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (182,NULL,9,'Subject for Tell a Friend','2023-06-29 04:23:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (183,NULL,9,'Subject for Tell a Friend','2023-03-10 17:42:52',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (184,NULL,1,'Subject for Meeting','2023-07-21 14:33:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (185,NULL,2,'Subject for Phone Call','2023-08-25 09:42:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (186,NULL,22,'Subject for Print/Merge Document','2023-06-09 21:22:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (187,NULL,2,'Subject for Phone Call','2023-02-17 05:11:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (188,NULL,22,'Subject for Print/Merge Document','2023-01-20 14:56:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (189,NULL,2,'Subject for Phone Call','2023-02-18 04:16:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (190,NULL,56,'Subject for Interview','2023-09-15 04:51:03',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (191,NULL,56,'Subject for Interview','2023-05-18 10:15:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (192,NULL,2,'Subject for Phone Call','2023-08-24 14:18:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (193,NULL,56,'Subject for Interview','2023-07-24 17:06:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (194,NULL,22,'Subject for Print/Merge Document','2023-01-11 22:31:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (195,NULL,1,'Subject for Meeting','2023-07-20 21:50:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (196,NULL,2,'Subject for Phone Call','2022-12-23 09:49:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (197,NULL,1,'Subject for Meeting','2023-04-03 03:48:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (198,NULL,22,'Subject for Print/Merge Document','2023-10-05 00:47:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (199,NULL,2,'Subject for Phone Call','2022-12-21 22:57:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (200,NULL,1,'Subject for Meeting','2023-03-18 18:10:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (201,NULL,22,'Subject for Print/Merge Document','2022-11-03 12:41:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (202,NULL,1,'Subject for Meeting','2023-04-12 11:44:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (203,NULL,9,'Subject for Tell a Friend','2022-12-11 19:13:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (204,NULL,2,'Subject for Phone Call','2023-08-30 16:45:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (205,NULL,1,'Subject for Meeting','2022-12-09 17:17:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (206,NULL,56,'Subject for Interview','2023-04-19 10:23:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (207,NULL,1,'Subject for Meeting','2023-10-11 04:54:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (208,NULL,2,'Subject for Phone Call','2023-03-21 08:37:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (209,NULL,22,'Subject for Print/Merge Document','2023-10-19 11:38:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (210,NULL,9,'Subject for Tell a Friend','2023-09-04 13:22:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (211,NULL,56,'Subject for Interview','2022-11-27 20:44:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (212,NULL,9,'Subject for Tell a Friend','2023-07-18 23:16:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (213,NULL,9,'Subject for Tell a Friend','2023-03-09 01:27:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (214,NULL,22,'Subject for Print/Merge Document','2023-07-14 10:44:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (215,NULL,56,'Subject for Interview','2023-02-14 13:52:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (216,NULL,2,'Subject for Phone Call','2023-05-14 01:19:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (217,NULL,9,'Subject for Tell a Friend','2023-08-20 00:24:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (218,NULL,2,'Subject for Phone Call','2023-10-08 12:40:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (219,NULL,22,'Subject for Print/Merge Document','2023-09-27 08:07:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (220,NULL,22,'Subject for Print/Merge Document','2023-06-15 22:18:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (221,NULL,2,'Subject for Phone Call','2023-07-26 10:30:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (222,NULL,22,'Subject for Print/Merge Document','2023-07-05 23:47:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (223,NULL,56,'Subject for Interview','2023-06-06 11:19:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (224,NULL,2,'Subject for Phone Call','2023-09-28 21:58:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (225,NULL,2,'Subject for Phone Call','2023-05-01 14:42:08',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (226,NULL,2,'Subject for Phone Call','2023-04-27 15:47:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (227,NULL,2,'Subject for Phone Call','2023-07-15 16:21:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (228,NULL,22,'Subject for Print/Merge Document','2022-12-18 21:57:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (229,NULL,2,'Subject for Phone Call','2023-03-30 16:21:24',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (230,NULL,56,'Subject for Interview','2023-05-17 20:25:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (231,NULL,2,'Subject for Phone Call','2023-07-01 09:12:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (232,NULL,22,'Subject for Print/Merge Document','2022-11-21 12:23:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (233,NULL,2,'Subject for Phone Call','2023-03-13 01:16:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (234,NULL,2,'Subject for Phone Call','2023-03-14 01:57:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (235,NULL,22,'Subject for Print/Merge Document','2022-11-23 06:12:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (236,NULL,22,'Subject for Print/Merge Document','2022-12-07 23:01:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (237,NULL,2,'Subject for Phone Call','2023-01-15 06:14:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (238,NULL,56,'Subject for Interview','2023-01-16 08:23:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (239,NULL,9,'Subject for Tell a Friend','2022-12-07 10:43:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (240,NULL,22,'Subject for Print/Merge Document','2023-05-08 04:39:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (241,NULL,2,'Subject for Phone Call','2023-10-10 02:46:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (242,NULL,2,'Subject for Phone Call','2023-05-18 21:32:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (243,NULL,56,'Subject for Interview','2023-10-13 02:52:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (244,NULL,9,'Subject for Tell a Friend','2023-06-27 21:02:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (245,NULL,22,'Subject for Print/Merge Document','2023-04-12 21:44:48',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (246,NULL,9,'Subject for Tell a Friend','2023-10-14 10:54:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (247,NULL,1,'Subject for Meeting','2023-04-03 17:03:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (248,NULL,56,'Subject for Interview','2023-01-22 22:01:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (249,NULL,1,'Subject for Meeting','2023-04-26 08:05:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (250,NULL,56,'Subject for Interview','2023-08-11 04:25:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (251,NULL,1,'Subject for Meeting','2022-12-30 21:51:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (252,NULL,1,'Subject for Meeting','2023-01-25 10:14:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (253,NULL,2,'Subject for Phone Call','2022-11-01 18:09:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (254,NULL,56,'Subject for Interview','2023-06-12 16:29:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (255,NULL,22,'Subject for Print/Merge Document','2023-02-28 03:19:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (256,NULL,2,'Subject for Phone Call','2022-10-21 00:42:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (257,NULL,56,'Subject for Interview','2023-07-14 18:30:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (258,NULL,1,'Subject for Meeting','2022-10-25 15:02:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (259,NULL,2,'Subject for Phone Call','2023-02-26 01:39:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (260,NULL,22,'Subject for Print/Merge Document','2023-09-17 11:38:32',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (261,NULL,56,'Subject for Interview','2023-04-16 00:07:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (262,NULL,9,'Subject for Tell a Friend','2023-08-28 14:11:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (263,NULL,2,'Subject for Phone Call','2022-12-27 01:04:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (264,NULL,1,'Subject for Meeting','2023-02-27 01:06:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (265,NULL,22,'Subject for Print/Merge Document','2023-09-12 12:49:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (266,NULL,1,'Subject for Meeting','2023-08-30 05:46:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (267,NULL,1,'Subject for Meeting','2023-01-01 15:56:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (268,NULL,56,'Subject for Interview','2023-06-08 03:14:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (269,NULL,22,'Subject for Print/Merge Document','2023-01-31 08:43:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (270,NULL,2,'Subject for Phone Call','2023-08-19 09:42:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (271,NULL,1,'Subject for Meeting','2023-04-12 17:16:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (272,NULL,1,'Subject for Meeting','2023-03-17 07:33:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (273,NULL,22,'Subject for Print/Merge Document','2023-08-05 04:42:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (274,NULL,2,'Subject for Phone Call','2023-02-05 15:55:51',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (275,NULL,56,'Subject for Interview','2023-06-27 05:26:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (276,NULL,22,'Subject for Print/Merge Document','2022-11-21 12:00:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (277,NULL,56,'Subject for Interview','2022-12-22 19:24:56',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (278,NULL,9,'Subject for Tell a Friend','2023-02-25 12:54:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (279,NULL,56,'Subject for Interview','2023-03-01 22:20:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (280,NULL,56,'Subject for Interview','2023-03-23 11:08:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (281,NULL,22,'Subject for Print/Merge Document','2023-03-19 15:41:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (282,NULL,2,'Subject for Phone Call','2023-06-02 15:40:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (283,NULL,56,'Subject for Interview','2023-09-06 16:30:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (284,NULL,22,'Subject for Print/Merge Document','2023-10-10 16:32:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (285,NULL,9,'Subject for Tell a Friend','2023-02-28 19:45:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (286,NULL,22,'Subject for Print/Merge Document','2022-12-26 02:09:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (287,NULL,22,'Subject for Print/Merge Document','2023-07-13 21:30:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (288,NULL,9,'Subject for Tell a Friend','2023-07-16 01:07:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (289,NULL,1,'Subject for Meeting','2023-08-13 21:27:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (290,NULL,22,'Subject for Print/Merge Document','2023-03-02 19:56:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (291,NULL,2,'Subject for Phone Call','2023-01-01 14:09:09',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (292,NULL,22,'Subject for Print/Merge Document','2023-10-16 22:20:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (293,NULL,9,'Subject for Tell a Friend','2023-05-05 13:31:51',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (294,NULL,2,'Subject for Phone Call','2023-10-03 22:00:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (295,NULL,9,'Subject for Tell a Friend','2023-01-11 13:50:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (296,NULL,56,'Subject for Interview','2023-01-16 19:28:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (297,NULL,22,'Subject for Print/Merge Document','2023-06-15 12:50:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (298,NULL,2,'Subject for Phone Call','2023-04-29 20:32:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (299,NULL,2,'Subject for Phone Call','2023-10-15 18:59:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (300,NULL,56,'Subject for Interview','2023-10-13 22:52:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (301,NULL,9,'Subject for Tell a Friend','2023-09-27 00:31:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (302,NULL,9,'Subject for Tell a Friend','2023-07-15 16:34:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (303,NULL,1,'Subject for Meeting','2023-04-28 02:22:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (304,NULL,1,'Subject for Meeting','2023-10-03 04:09:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (305,NULL,22,'Subject for Print/Merge Document','2023-09-21 21:04:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (306,NULL,2,'Subject for Phone Call','2023-06-28 08:32:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (307,NULL,2,'Subject for Phone Call','2023-08-14 03:30:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (308,NULL,1,'Subject for Meeting','2023-08-24 07:35:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (309,NULL,1,'Subject for Meeting','2023-03-31 17:30:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (310,NULL,9,'Subject for Tell a Friend','2023-03-18 03:05:01',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (311,NULL,56,'Subject for Interview','2023-09-14 11:25:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (312,NULL,1,'Subject for Meeting','2022-12-03 09:06:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (313,NULL,2,'Subject for Phone Call','2022-11-10 18:33:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (314,NULL,1,'Subject for Meeting','2023-06-24 17:25:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (315,NULL,9,'Subject for Tell a Friend','2023-04-16 13:23:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (316,NULL,1,'Subject for Meeting','2023-01-08 21:38:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (317,NULL,22,'Subject for Print/Merge Document','2023-09-15 04:05:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (318,NULL,22,'Subject for Print/Merge Document','2022-11-05 22:37:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (319,NULL,56,'Subject for Interview','2023-02-18 23:04:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (320,NULL,2,'Subject for Phone Call','2023-04-13 05:04:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (321,NULL,1,'Subject for Meeting','2022-12-23 14:36:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (322,NULL,2,'Subject for Phone Call','2023-03-27 13:06:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (323,NULL,22,'Subject for Print/Merge Document','2023-10-13 13:41:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (324,NULL,1,'Subject for Meeting','2022-12-18 06:44:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (325,NULL,9,'Subject for Tell a Friend','2023-09-27 09:17:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (326,NULL,2,'Subject for Phone Call','2022-11-25 00:12:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (327,NULL,9,'Subject for Tell a Friend','2023-05-30 22:40:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (328,NULL,22,'Subject for Print/Merge Document','2023-03-04 08:35:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (329,NULL,2,'Subject for Phone Call','2023-07-17 20:37:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (330,NULL,2,'Subject for Phone Call','2023-05-18 15:25:00',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (331,NULL,1,'Subject for Meeting','2023-08-28 20:59:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (332,NULL,56,'Subject for Interview','2023-02-02 10:27:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (333,NULL,2,'Subject for Phone Call','2023-05-08 12:15:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (334,NULL,22,'Subject for Print/Merge Document','2023-07-05 23:57:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (335,NULL,9,'Subject for Tell a Friend','2023-04-22 00:38:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (336,NULL,22,'Subject for Print/Merge Document','2023-09-18 03:30:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (337,NULL,1,'Subject for Meeting','2023-05-27 13:34:05',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (338,NULL,1,'Subject for Meeting','2023-10-07 12:37:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (339,NULL,56,'Subject for Interview','2023-08-19 11:51:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (340,NULL,22,'Subject for Print/Merge Document','2022-12-07 15:32:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (341,NULL,56,'Subject for Interview','2022-12-26 16:49:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (342,NULL,1,'Subject for Meeting','2023-10-17 16:01:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (343,NULL,1,'Subject for Meeting','2023-03-08 02:19:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (344,NULL,1,'Subject for Meeting','2022-12-03 10:41:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (345,NULL,56,'Subject for Interview','2023-07-17 02:33:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (346,NULL,9,'Subject for Tell a Friend','2023-08-09 00:03:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (347,NULL,22,'Subject for Print/Merge Document','2022-12-23 20:14:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (348,NULL,2,'Subject for Phone Call','2022-11-26 17:02:59',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (349,NULL,1,'Subject for Meeting','2023-01-06 13:45:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (350,NULL,9,'Subject for Tell a Friend','2023-01-07 04:38:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (351,NULL,9,'Subject for Tell a Friend','2022-11-17 20:19:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (352,NULL,1,'Subject for Meeting','2023-06-13 01:46:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (353,NULL,9,'Subject for Tell a Friend','2023-07-15 01:01:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (354,NULL,22,'Subject for Print/Merge Document','2022-11-26 12:28:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (355,NULL,56,'Subject for Interview','2023-09-24 01:51:40',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (356,NULL,56,'Subject for Interview','2023-03-09 21:25:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (357,NULL,56,'Subject for Interview','2023-08-31 17:13:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (358,NULL,9,'Subject for Tell a Friend','2023-01-25 06:43:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (359,NULL,9,'Subject for Tell a Friend','2023-07-09 15:00:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (360,NULL,2,'Subject for Phone Call','2023-03-24 13:07:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (361,NULL,2,'Subject for Phone Call','2023-01-06 00:44:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (362,NULL,22,'Subject for Print/Merge Document','2023-02-28 14:22:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (363,NULL,1,'Subject for Meeting','2023-07-16 22:37:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (364,NULL,2,'Subject for Phone Call','2023-02-27 03:37:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (365,NULL,9,'Subject for Tell a Friend','2023-03-09 07:05:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (366,NULL,9,'Subject for Tell a Friend','2022-11-25 06:45:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (367,NULL,56,'Subject for Interview','2022-10-23 21:44:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (368,NULL,56,'Subject for Interview','2023-02-15 20:58:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (369,NULL,2,'Subject for Phone Call','2023-07-05 12:36:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (370,NULL,56,'Subject for Interview','2023-01-30 04:14:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (371,NULL,56,'Subject for Interview','2023-02-04 00:39:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (372,NULL,2,'Subject for Phone Call','2023-01-22 17:08:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (373,NULL,56,'Subject for Interview','2023-09-08 17:44:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (374,NULL,2,'Subject for Phone Call','2023-06-08 10:48:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (375,NULL,9,'Subject for Tell a Friend','2023-05-22 12:06:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (376,NULL,1,'Subject for Meeting','2023-06-26 15:56:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (377,NULL,56,'Subject for Interview','2023-04-09 02:38:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (378,NULL,1,'Subject for Meeting','2023-06-13 08:39:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (379,NULL,9,'Subject for Tell a Friend','2023-10-04 01:52:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (380,NULL,2,'Subject for Phone Call','2023-04-22 17:07:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (381,NULL,1,'Subject for Meeting','2023-04-11 06:02:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (382,NULL,9,'Subject for Tell a Friend','2023-08-31 12:23:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (383,NULL,1,'Subject for Meeting','2023-05-13 06:14:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (384,NULL,56,'Subject for Interview','2022-11-18 20:29:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (385,NULL,1,'Subject for Meeting','2022-11-25 17:43:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (386,NULL,56,'Subject for Interview','2023-03-11 23:21:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (387,NULL,22,'Subject for Print/Merge Document','2023-08-14 20:54:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (388,NULL,9,'Subject for Tell a Friend','2023-04-29 19:20:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (389,NULL,56,'Subject for Interview','2022-11-08 09:06:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (390,NULL,56,'Subject for Interview','2022-11-06 00:01:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (391,NULL,1,'Subject for Meeting','2023-06-22 20:01:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (392,NULL,2,'Subject for Phone Call','2022-11-11 00:49:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (393,NULL,56,'Subject for Interview','2023-01-13 17:40:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (394,NULL,9,'Subject for Tell a Friend','2022-10-24 14:27:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (395,NULL,56,'Subject for Interview','2023-04-13 12:59:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (396,NULL,9,'Subject for Tell a Friend','2022-11-08 09:12:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (397,NULL,9,'Subject for Tell a Friend','2023-09-11 05:18:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (398,NULL,2,'Subject for Phone Call','2023-01-01 21:32:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (399,NULL,1,'Subject for Meeting','2023-08-14 15:06:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (400,NULL,1,'Subject for Meeting','2023-08-27 23:03:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (401,NULL,22,'Subject for Print/Merge Document','2023-08-01 13:19:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (402,NULL,22,'Subject for Print/Merge Document','2023-05-08 04:21:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (403,NULL,2,'Subject for Phone Call','2023-10-06 13:00:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (404,NULL,9,'Subject for Tell a Friend','2023-09-26 09:13:23',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (405,NULL,2,'Subject for Phone Call','2022-11-15 13:35:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (406,NULL,56,'Subject for Interview','2023-08-25 03:26:25',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (407,NULL,2,'Subject for Phone Call','2022-12-08 23:34:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (408,NULL,2,'Subject for Phone Call','2023-05-06 20:50:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (409,NULL,2,'Subject for Phone Call','2023-09-24 15:02:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (410,NULL,56,'Subject for Interview','2023-04-21 22:45:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (411,NULL,2,'Subject for Phone Call','2022-11-01 08:39:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (412,NULL,2,'Subject for Phone Call','2022-12-07 11:45:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (413,NULL,2,'Subject for Phone Call','2023-04-15 21:27:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (414,NULL,9,'Subject for Tell a Friend','2023-07-27 13:46:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (415,NULL,9,'Subject for Tell a Friend','2022-12-12 21:57:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (416,NULL,1,'Subject for Meeting','2023-03-20 22:51:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (417,NULL,2,'Subject for Phone Call','2023-01-05 11:13:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (418,NULL,1,'Subject for Meeting','2023-02-26 07:15:23',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (419,NULL,9,'Subject for Tell a Friend','2023-09-06 21:13:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (420,NULL,56,'Subject for Interview','2023-08-04 14:49:45',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (421,NULL,22,'Subject for Print/Merge Document','2022-12-18 22:31:48',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (422,NULL,9,'Subject for Tell a Friend','2023-05-05 15:54:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (423,NULL,22,'Subject for Print/Merge Document','2023-10-06 16:01:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (424,NULL,22,'Subject for Print/Merge Document','2023-09-17 17:41:37',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (425,NULL,1,'Subject for Meeting','2023-07-27 15:31:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (426,NULL,2,'Subject for Phone Call','2022-12-29 04:01:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (427,NULL,2,'Subject for Phone Call','2023-03-18 03:08:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (428,NULL,1,'Subject for Meeting','2023-01-07 19:33:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (429,NULL,9,'Subject for Tell a Friend','2023-02-09 06:51:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (430,NULL,1,'Subject for Meeting','2023-03-21 08:02:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (431,NULL,9,'Subject for Tell a Friend','2023-08-26 02:15:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (432,NULL,22,'Subject for Print/Merge Document','2023-01-24 03:44:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (433,NULL,56,'Subject for Interview','2023-06-28 04:52:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (434,NULL,22,'Subject for Print/Merge Document','2023-07-01 19:22:47',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (435,NULL,1,'Subject for Meeting','2022-12-22 01:36:09',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (436,NULL,56,'Subject for Interview','2023-09-05 08:47:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (437,NULL,22,'Subject for Print/Merge Document','2023-04-26 21:27:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (438,NULL,9,'Subject for Tell a Friend','2023-04-27 17:26:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (439,NULL,22,'Subject for Print/Merge Document','2022-12-15 06:05:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (440,NULL,1,'Subject for Meeting','2023-08-09 02:06:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (441,NULL,2,'Subject for Phone Call','2023-08-29 10:06:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (442,NULL,1,'Subject for Meeting','2023-09-28 05:02:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (443,NULL,9,'Subject for Tell a Friend','2023-02-04 21:14:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (444,NULL,56,'Subject for Interview','2023-09-05 14:01:24',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (445,NULL,1,'Subject for Meeting','2023-09-19 00:06:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (446,NULL,1,'Subject for Meeting','2023-01-14 07:13:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (447,NULL,2,'Subject for Phone Call','2022-12-15 22:57:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (448,NULL,9,'Subject for Tell a Friend','2023-06-25 08:38:42',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (449,NULL,56,'Subject for Interview','2023-05-30 00:30:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (450,NULL,22,'Subject for Print/Merge Document','2023-02-23 12:29:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (451,1,6,'$ 125 April Mailer 1','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (452,2,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (453,3,6,'£ 25 April Mailer 1','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (454,4,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (455,5,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (456,6,6,'$ 500 April Mailer 1','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (457,7,6,'$ 1750 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (458,8,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (459,9,6,'$ 10 Online: Help CiviCRM','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (460,10,6,'$ 250 Online: Help CiviCRM','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (461,11,6,'Â¥ 500 ','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (462,12,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (463,13,6,'$ 50 ','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (464,14,6,'$ 50 ','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (465,15,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (466,16,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (467,17,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (468,18,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (469,19,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (470,20,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (471,21,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (472,22,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (473,23,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (474,24,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (475,25,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (476,26,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (477,27,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (478,28,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (479,29,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (480,30,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (481,31,6,'€ 5 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (482,1,7,'General','2023-10-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (483,2,7,'Student','2023-10-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (484,3,7,'General','2023-10-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (485,4,7,'Student','2023-10-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (486,5,7,'Student','2022-10-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (487,6,7,'Student','2023-10-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (488,7,7,'General','2023-10-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (489,8,7,'Student','2023-10-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (490,9,7,'General','2023-10-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (491,10,7,'Student','2022-10-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (492,11,7,'Lifetime','2023-10-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (493,12,7,'Student','2023-10-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (494,13,7,'General','2023-10-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (495,14,7,'Student','2023-10-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (496,15,7,'General','2021-06-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (497,16,7,'Student','2023-10-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (498,17,7,'General','2023-10-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (499,18,7,'Student','2023-10-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (500,19,7,'General','2023-10-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (501,20,7,'General','2021-05-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (502,21,7,'General','2023-09-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (503,22,7,'Lifetime','2023-09-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (504,23,7,'General','2023-09-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (505,24,7,'Student','2023-09-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (506,25,7,'General','2021-04-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (507,26,7,'Student','2023-09-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (508,27,7,'General','2023-09-23 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (509,28,7,'Student','2023-09-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (510,29,7,'General','2023-09-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (511,30,7,'General','2021-03-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (512,32,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (513,33,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (514,34,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (515,35,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (516,36,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (517,37,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (518,38,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (519,39,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (520,40,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (521,41,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (522,42,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (523,43,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (524,44,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (525,45,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (526,46,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (527,47,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (528,48,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (529,49,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (530,50,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (531,51,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (532,52,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (533,53,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (534,54,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (535,55,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (536,56,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (537,57,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (538,58,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (539,59,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (540,60,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (541,61,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (543,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (544,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (545,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (546,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (547,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (548,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (549,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (550,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (551,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (552,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (553,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (554,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (555,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (556,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (557,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (558,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (559,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (560,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (561,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (562,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (563,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (564,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (565,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (566,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (567,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (568,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (569,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (570,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (571,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (572,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (573,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (574,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (575,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (576,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (577,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (578,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (579,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (580,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (581,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (582,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (583,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (584,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (585,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (586,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (587,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (588,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (589,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (590,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (591,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (592,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (593,63,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (594,64,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (595,65,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (597,67,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (599,69,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (600,70,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (602,72,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (603,73,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (604,74,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (605,75,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (608,78,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (609,79,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (612,82,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (613,83,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (614,84,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (616,86,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (617,87,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (618,88,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (622,92,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (623,93,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (624,94,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (625,95,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (626,96,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (627,97,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (628,98,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (629,99,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (630,100,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (631,101,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (632,102,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (634,104,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (635,105,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (636,106,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (637,107,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (639,109,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (640,110,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (641,111,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (642,112,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30');
+ (1,NULL,22,'Subject for Print/Merge Document','2023-10-08 02:56:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (2,NULL,56,'Subject for Interview','2023-06-10 05:36:31',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (3,NULL,1,'Subject for Meeting','2023-05-01 21:21:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (4,NULL,9,'Subject for Tell a Friend','2023-08-02 04:54:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (5,NULL,9,'Subject for Tell a Friend','2023-03-20 05:19:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (6,NULL,9,'Subject for Tell a Friend','2023-08-08 05:44:42',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (7,NULL,56,'Subject for Interview','2023-06-17 01:16:02',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (8,NULL,1,'Subject for Meeting','2023-09-08 10:23:35',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (9,NULL,9,'Subject for Tell a Friend','2023-12-15 10:58:15',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (10,NULL,56,'Subject for Interview','2023-02-02 02:15:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (11,NULL,56,'Subject for Interview','2023-07-01 06:57:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (12,NULL,56,'Subject for Interview','2023-02-06 22:00:32',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (13,NULL,1,'Subject for Meeting','2023-05-02 09:47:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (14,NULL,22,'Subject for Print/Merge Document','2023-01-23 12:58:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (15,NULL,56,'Subject for Interview','2023-11-10 07:07:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (16,NULL,22,'Subject for Print/Merge Document','2023-07-01 17:41:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (17,NULL,56,'Subject for Interview','2022-12-27 16:58:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (18,NULL,9,'Subject for Tell a Friend','2023-04-01 09:36:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (19,NULL,2,'Subject for Phone Call','2023-03-16 06:37:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (20,NULL,2,'Subject for Phone Call','2023-04-04 13:49:21',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (21,NULL,9,'Subject for Tell a Friend','2023-04-01 23:33:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (22,NULL,56,'Subject for Interview','2023-06-09 22:15:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (23,NULL,2,'Subject for Phone Call','2023-07-08 12:22:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (24,NULL,22,'Subject for Print/Merge Document','2023-04-05 11:24:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (25,NULL,2,'Subject for Phone Call','2023-08-09 03:20:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (26,NULL,2,'Subject for Phone Call','2023-10-26 01:05:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (27,NULL,9,'Subject for Tell a Friend','2023-09-29 14:35:33',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (28,NULL,9,'Subject for Tell a Friend','2023-02-14 06:08:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (29,NULL,1,'Subject for Meeting','2023-03-01 14:08:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (30,NULL,56,'Subject for Interview','2023-09-16 23:16:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (31,NULL,2,'Subject for Phone Call','2023-01-27 20:22:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (32,NULL,2,'Subject for Phone Call','2023-01-30 05:56:43',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (33,NULL,56,'Subject for Interview','2023-09-16 18:31:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (34,NULL,9,'Subject for Tell a Friend','2023-10-20 04:30:48',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (35,NULL,1,'Subject for Meeting','2023-03-09 01:09:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (36,NULL,2,'Subject for Phone Call','2023-06-26 00:14:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (37,NULL,9,'Subject for Tell a Friend','2023-02-20 18:36:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (38,NULL,2,'Subject for Phone Call','2023-04-09 08:39:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (39,NULL,1,'Subject for Meeting','2023-11-09 08:03:54',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (40,NULL,22,'Subject for Print/Merge Document','2023-01-22 00:32:18',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (41,NULL,56,'Subject for Interview','2023-01-02 19:39:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (42,NULL,2,'Subject for Phone Call','2023-03-05 21:27:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (43,NULL,1,'Subject for Meeting','2023-07-11 05:07:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (44,NULL,9,'Subject for Tell a Friend','2023-11-24 00:54:09',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (45,NULL,56,'Subject for Interview','2023-04-08 07:43:51',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (46,NULL,56,'Subject for Interview','2023-03-14 03:06:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (47,NULL,22,'Subject for Print/Merge Document','2023-07-06 22:03:42',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (48,NULL,22,'Subject for Print/Merge Document','2023-03-21 15:50:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (49,NULL,56,'Subject for Interview','2023-07-15 11:03:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (50,NULL,22,'Subject for Print/Merge Document','2023-10-11 13:09:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (51,NULL,2,'Subject for Phone Call','2023-09-15 03:49:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (52,NULL,9,'Subject for Tell a Friend','2023-02-23 20:39:59',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (53,NULL,9,'Subject for Tell a Friend','2023-03-16 06:28:32',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (54,NULL,2,'Subject for Phone Call','2023-05-28 02:55:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (55,NULL,1,'Subject for Meeting','2023-05-23 14:45:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (56,NULL,56,'Subject for Interview','2023-07-23 01:45:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (57,NULL,1,'Subject for Meeting','2023-03-21 05:44:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (58,NULL,1,'Subject for Meeting','2023-06-19 04:45:25',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (59,NULL,9,'Subject for Tell a Friend','2023-11-06 03:35:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (60,NULL,22,'Subject for Print/Merge Document','2023-05-19 10:17:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (61,NULL,56,'Subject for Interview','2023-04-05 05:04:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (62,NULL,56,'Subject for Interview','2023-04-28 06:26:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (63,NULL,9,'Subject for Tell a Friend','2023-05-06 01:19:48',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (64,NULL,56,'Subject for Interview','2023-08-23 19:12:20',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (65,NULL,22,'Subject for Print/Merge Document','2023-11-30 13:53:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (66,NULL,9,'Subject for Tell a Friend','2023-11-09 19:37:55',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (67,NULL,1,'Subject for Meeting','2023-05-28 14:31:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (68,NULL,22,'Subject for Print/Merge Document','2023-09-05 09:47:44',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (69,NULL,56,'Subject for Interview','2023-04-27 02:48:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (70,NULL,2,'Subject for Phone Call','2023-04-22 17:53:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (71,NULL,22,'Subject for Print/Merge Document','2023-07-03 16:20:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (72,NULL,1,'Subject for Meeting','2023-03-30 22:26:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (73,NULL,22,'Subject for Print/Merge Document','2023-04-05 13:06:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (74,NULL,2,'Subject for Phone Call','2023-02-03 16:41:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (75,NULL,1,'Subject for Meeting','2023-05-28 11:55:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (76,NULL,56,'Subject for Interview','2023-04-28 11:57:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (77,NULL,1,'Subject for Meeting','2023-03-01 19:51:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (78,NULL,2,'Subject for Phone Call','2023-03-13 06:48:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (79,NULL,2,'Subject for Phone Call','2023-03-08 13:39:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (80,NULL,1,'Subject for Meeting','2023-07-07 11:05:34',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (81,NULL,2,'Subject for Phone Call','2023-09-28 04:07:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (82,NULL,22,'Subject for Print/Merge Document','2023-05-22 22:14:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (83,NULL,2,'Subject for Phone Call','2023-07-01 21:32:08',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (84,NULL,56,'Subject for Interview','2023-04-16 09:48:01',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (85,NULL,9,'Subject for Tell a Friend','2023-04-10 11:30:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (86,NULL,1,'Subject for Meeting','2023-04-16 11:16:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (87,NULL,2,'Subject for Phone Call','2023-09-19 22:01:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (88,NULL,56,'Subject for Interview','2023-11-16 15:42:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (89,NULL,1,'Subject for Meeting','2023-07-23 21:59:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (90,NULL,1,'Subject for Meeting','2023-01-06 08:13:46',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (91,NULL,2,'Subject for Phone Call','2023-08-28 01:55:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (92,NULL,9,'Subject for Tell a Friend','2023-12-14 22:42:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (93,NULL,9,'Subject for Tell a Friend','2023-04-01 06:34:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (94,NULL,9,'Subject for Tell a Friend','2023-06-19 15:27:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (95,NULL,2,'Subject for Phone Call','2023-08-25 21:25:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (96,NULL,22,'Subject for Print/Merge Document','2023-11-08 04:31:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (97,NULL,1,'Subject for Meeting','2023-04-24 14:09:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (98,NULL,9,'Subject for Tell a Friend','2023-02-08 07:00:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (99,NULL,9,'Subject for Tell a Friend','2022-12-30 16:02:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (100,NULL,1,'Subject for Meeting','2023-10-14 18:29:02',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (101,NULL,1,'Subject for Meeting','2023-10-24 01:33:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (102,NULL,56,'Subject for Interview','2023-11-06 15:52:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (103,NULL,56,'Subject for Interview','2023-07-11 14:44:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (104,NULL,2,'Subject for Phone Call','2023-05-08 02:50:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (105,NULL,56,'Subject for Interview','2023-10-22 12:38:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (106,NULL,1,'Subject for Meeting','2023-05-23 00:30:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (107,NULL,1,'Subject for Meeting','2023-02-19 22:36:02',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (108,NULL,22,'Subject for Print/Merge Document','2023-11-15 16:08:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (109,NULL,1,'Subject for Meeting','2023-10-06 14:47:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (110,NULL,56,'Subject for Interview','2023-11-05 20:03:51',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (111,NULL,22,'Subject for Print/Merge Document','2023-09-27 16:39:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (112,NULL,22,'Subject for Print/Merge Document','2023-07-20 21:27:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (113,NULL,1,'Subject for Meeting','2023-05-23 05:11:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (114,NULL,56,'Subject for Interview','2023-04-19 07:53:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (115,NULL,9,'Subject for Tell a Friend','2023-10-20 02:45:07',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (116,NULL,1,'Subject for Meeting','2023-02-10 19:14:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (117,NULL,56,'Subject for Interview','2023-01-13 17:31:26',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (118,NULL,9,'Subject for Tell a Friend','2023-06-25 17:19:06',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (119,NULL,9,'Subject for Tell a Friend','2023-06-21 15:56:28',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (120,NULL,9,'Subject for Tell a Friend','2023-06-10 17:20:59',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (121,NULL,1,'Subject for Meeting','2022-12-25 15:01:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (122,NULL,1,'Subject for Meeting','2023-04-13 13:55:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (123,NULL,1,'Subject for Meeting','2022-12-22 11:01:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (124,NULL,1,'Subject for Meeting','2023-10-11 09:40:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (125,NULL,22,'Subject for Print/Merge Document','2023-08-07 00:26:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (126,NULL,56,'Subject for Interview','2023-11-12 10:19:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (127,NULL,1,'Subject for Meeting','2023-09-02 06:50:25',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (128,NULL,9,'Subject for Tell a Friend','2023-12-15 23:03:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (129,NULL,1,'Subject for Meeting','2023-04-24 05:32:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (130,NULL,1,'Subject for Meeting','2023-02-12 12:43:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (131,NULL,56,'Subject for Interview','2022-12-28 04:32:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (132,NULL,56,'Subject for Interview','2023-07-06 00:51:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (133,NULL,9,'Subject for Tell a Friend','2023-12-03 16:13:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (134,NULL,22,'Subject for Print/Merge Document','2023-09-11 09:28:58',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (135,NULL,1,'Subject for Meeting','2023-03-23 11:31:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (136,NULL,56,'Subject for Interview','2023-07-19 14:21:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (137,NULL,1,'Subject for Meeting','2023-09-30 22:09:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (138,NULL,22,'Subject for Print/Merge Document','2023-01-05 03:07:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (139,NULL,2,'Subject for Phone Call','2023-10-01 00:33:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (140,NULL,22,'Subject for Print/Merge Document','2023-11-19 06:40:21',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (141,NULL,9,'Subject for Tell a Friend','2023-10-25 11:31:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (142,NULL,9,'Subject for Tell a Friend','2023-08-15 10:35:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (143,NULL,22,'Subject for Print/Merge Document','2023-02-06 17:48:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (144,NULL,56,'Subject for Interview','2023-10-05 18:18:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (145,NULL,9,'Subject for Tell a Friend','2023-12-07 01:18:37',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (146,NULL,56,'Subject for Interview','2023-03-04 16:41:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (147,NULL,1,'Subject for Meeting','2022-12-23 16:07:20',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (148,NULL,1,'Subject for Meeting','2023-08-12 04:54:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (149,NULL,22,'Subject for Print/Merge Document','2023-07-30 02:18:23',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (150,NULL,2,'Subject for Phone Call','2023-01-18 03:38:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (151,NULL,1,'Subject for Meeting','2023-09-21 06:01:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (152,NULL,2,'Subject for Phone Call','2023-01-01 16:47:39',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (153,NULL,56,'Subject for Interview','2023-06-17 01:08:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (154,NULL,56,'Subject for Interview','2023-03-25 09:41:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (155,NULL,22,'Subject for Print/Merge Document','2023-07-22 01:37:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (156,NULL,9,'Subject for Tell a Friend','2023-06-22 21:38:37',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (157,NULL,22,'Subject for Print/Merge Document','2023-08-07 06:26:21',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (158,NULL,56,'Subject for Interview','2023-06-26 16:02:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (159,NULL,56,'Subject for Interview','2023-07-12 15:13:20',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (160,NULL,2,'Subject for Phone Call','2023-08-17 09:52:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (161,NULL,56,'Subject for Interview','2023-08-15 05:59:14',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (162,NULL,22,'Subject for Print/Merge Document','2023-05-04 10:30:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (163,NULL,9,'Subject for Tell a Friend','2023-03-16 22:56:13',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (164,NULL,2,'Subject for Phone Call','2023-03-28 06:59:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (165,NULL,2,'Subject for Phone Call','2023-02-08 15:09:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (166,NULL,9,'Subject for Tell a Friend','2023-04-17 20:37:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (167,NULL,9,'Subject for Tell a Friend','2023-01-22 02:06:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (168,NULL,1,'Subject for Meeting','2023-03-31 22:05:37',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (169,NULL,9,'Subject for Tell a Friend','2023-12-05 10:35:30',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (170,NULL,56,'Subject for Interview','2023-07-08 20:21:15',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (171,NULL,22,'Subject for Print/Merge Document','2023-11-06 18:53:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (172,NULL,9,'Subject for Tell a Friend','2023-12-01 05:54:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (173,NULL,56,'Subject for Interview','2023-11-24 13:19:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (174,NULL,2,'Subject for Phone Call','2023-09-30 02:33:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (175,NULL,9,'Subject for Tell a Friend','2022-12-29 13:02:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (176,NULL,1,'Subject for Meeting','2023-10-24 18:05:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (177,NULL,9,'Subject for Tell a Friend','2023-04-30 10:34:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (178,NULL,22,'Subject for Print/Merge Document','2023-11-16 08:30:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (179,NULL,2,'Subject for Phone Call','2023-05-13 15:18:52',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (180,NULL,9,'Subject for Tell a Friend','2023-02-19 00:39:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (181,NULL,9,'Subject for Tell a Friend','2023-09-18 02:46:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (182,NULL,2,'Subject for Phone Call','2023-08-01 04:51:59',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (183,NULL,22,'Subject for Print/Merge Document','2023-08-19 07:09:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (184,NULL,1,'Subject for Meeting','2023-03-03 04:51:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (185,NULL,56,'Subject for Interview','2023-02-16 14:10:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (186,NULL,9,'Subject for Tell a Friend','2023-11-24 02:36:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (187,NULL,1,'Subject for Meeting','2023-05-09 04:54:16',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (188,NULL,9,'Subject for Tell a Friend','2023-08-08 01:27:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (189,NULL,9,'Subject for Tell a Friend','2023-11-19 14:13:48',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (190,NULL,22,'Subject for Print/Merge Document','2023-03-29 21:53:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (191,NULL,9,'Subject for Tell a Friend','2023-03-03 15:58:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (192,NULL,56,'Subject for Interview','2023-10-26 14:22:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (193,NULL,56,'Subject for Interview','2023-01-20 01:06:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (194,NULL,1,'Subject for Meeting','2023-08-01 17:34:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (195,NULL,1,'Subject for Meeting','2023-11-27 21:42:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (196,NULL,2,'Subject for Phone Call','2023-12-06 21:28:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (197,NULL,2,'Subject for Phone Call','2022-12-28 14:03:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (198,NULL,9,'Subject for Tell a Friend','2022-12-26 01:35:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (199,NULL,56,'Subject for Interview','2023-03-26 22:18:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (200,NULL,56,'Subject for Interview','2023-06-05 02:32:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (201,NULL,1,'Subject for Meeting','2023-03-30 05:40:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (202,NULL,1,'Subject for Meeting','2023-07-03 03:49:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (203,NULL,2,'Subject for Phone Call','2022-12-31 14:28:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (204,NULL,56,'Subject for Interview','2023-12-17 14:18:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (205,NULL,22,'Subject for Print/Merge Document','2023-08-05 01:54:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (206,NULL,9,'Subject for Tell a Friend','2023-08-15 19:25:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (207,NULL,9,'Subject for Tell a Friend','2023-07-08 20:00:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (208,NULL,56,'Subject for Interview','2023-06-21 21:29:52',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (209,NULL,1,'Subject for Meeting','2023-06-06 22:03:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (210,NULL,9,'Subject for Tell a Friend','2022-12-24 22:49:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (211,NULL,1,'Subject for Meeting','2023-01-23 20:10:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (212,NULL,9,'Subject for Tell a Friend','2023-02-10 08:17:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (213,NULL,22,'Subject for Print/Merge Document','2023-10-19 07:11:30',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (214,NULL,9,'Subject for Tell a Friend','2023-11-11 11:56:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (215,NULL,9,'Subject for Tell a Friend','2023-02-26 21:49:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (216,NULL,1,'Subject for Meeting','2023-11-18 08:36:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (217,NULL,9,'Subject for Tell a Friend','2023-10-22 01:28:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (218,NULL,22,'Subject for Print/Merge Document','2023-01-09 15:46:01',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (219,NULL,9,'Subject for Tell a Friend','2023-03-12 07:33:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (220,NULL,22,'Subject for Print/Merge Document','2023-10-19 07:19:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (221,NULL,22,'Subject for Print/Merge Document','2023-09-06 03:56:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (222,NULL,1,'Subject for Meeting','2023-04-06 11:42:58',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (223,NULL,1,'Subject for Meeting','2023-04-10 14:31:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (224,NULL,9,'Subject for Tell a Friend','2023-07-05 10:50:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (225,NULL,9,'Subject for Tell a Friend','2023-07-23 05:33:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (226,NULL,1,'Subject for Meeting','2023-07-03 22:30:09',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (227,NULL,1,'Subject for Meeting','2023-06-19 06:57:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (228,NULL,22,'Subject for Print/Merge Document','2023-01-24 23:42:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (229,NULL,9,'Subject for Tell a Friend','2023-09-14 13:20:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:36','2023-12-17 20:11:36'),
+ (230,NULL,22,'Subject for Print/Merge Document','2023-01-21 15:03:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (231,NULL,56,'Subject for Interview','2023-01-29 07:27:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (232,NULL,9,'Subject for Tell a Friend','2023-08-24 02:15:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (233,NULL,2,'Subject for Phone Call','2023-04-15 11:44:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (234,NULL,56,'Subject for Interview','2023-07-03 15:17:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (235,NULL,1,'Subject for Meeting','2022-12-26 02:09:55',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (236,NULL,2,'Subject for Phone Call','2022-12-20 08:21:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (237,NULL,9,'Subject for Tell a Friend','2023-01-25 09:09:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (238,NULL,2,'Subject for Phone Call','2023-12-06 13:22:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (239,NULL,9,'Subject for Tell a Friend','2022-12-21 15:25:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (240,NULL,22,'Subject for Print/Merge Document','2023-07-08 05:12:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (241,NULL,1,'Subject for Meeting','2023-07-28 16:16:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (242,NULL,56,'Subject for Interview','2023-03-09 01:48:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (243,NULL,9,'Subject for Tell a Friend','2023-01-16 00:37:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (244,NULL,9,'Subject for Tell a Friend','2023-08-01 19:33:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (245,NULL,22,'Subject for Print/Merge Document','2023-01-01 04:23:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (246,NULL,56,'Subject for Interview','2023-08-23 05:45:23',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (247,NULL,9,'Subject for Tell a Friend','2023-04-29 11:52:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (248,NULL,2,'Subject for Phone Call','2023-06-12 19:25:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (249,NULL,56,'Subject for Interview','2023-06-10 14:13:57',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (250,NULL,22,'Subject for Print/Merge Document','2023-02-06 21:48:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (251,NULL,9,'Subject for Tell a Friend','2023-02-08 21:32:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (252,NULL,9,'Subject for Tell a Friend','2023-01-08 23:08:02',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (253,NULL,22,'Subject for Print/Merge Document','2023-04-07 14:41:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (254,NULL,22,'Subject for Print/Merge Document','2023-04-24 10:07:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (255,NULL,9,'Subject for Tell a Friend','2023-11-03 20:55:51',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (256,NULL,56,'Subject for Interview','2023-10-03 11:05:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (257,NULL,22,'Subject for Print/Merge Document','2023-04-24 18:13:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (258,NULL,2,'Subject for Phone Call','2023-10-05 00:12:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (259,NULL,56,'Subject for Interview','2023-01-28 16:36:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (260,NULL,56,'Subject for Interview','2023-03-08 03:46:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (261,NULL,9,'Subject for Tell a Friend','2023-12-05 09:40:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (262,NULL,2,'Subject for Phone Call','2023-09-22 00:38:44',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (263,NULL,1,'Subject for Meeting','2023-02-06 02:10:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (264,NULL,2,'Subject for Phone Call','2023-03-26 23:21:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (265,NULL,1,'Subject for Meeting','2023-09-03 14:57:23',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (266,NULL,9,'Subject for Tell a Friend','2022-12-18 19:59:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (267,NULL,2,'Subject for Phone Call','2023-07-27 03:07:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (268,NULL,22,'Subject for Print/Merge Document','2023-08-03 15:09:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (269,NULL,2,'Subject for Phone Call','2023-09-20 08:11:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (270,NULL,22,'Subject for Print/Merge Document','2023-04-18 04:12:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (271,NULL,9,'Subject for Tell a Friend','2022-12-18 18:14:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (272,NULL,1,'Subject for Meeting','2023-05-14 17:33:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (273,NULL,1,'Subject for Meeting','2023-10-17 10:37:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (274,NULL,1,'Subject for Meeting','2023-09-29 02:05:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (275,NULL,9,'Subject for Tell a Friend','2023-04-24 23:30:42',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (276,NULL,1,'Subject for Meeting','2023-02-01 20:39:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (277,NULL,2,'Subject for Phone Call','2023-02-01 21:09:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (278,NULL,1,'Subject for Meeting','2023-08-25 14:47:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (279,NULL,56,'Subject for Interview','2023-06-25 08:11:50',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (280,NULL,56,'Subject for Interview','2023-05-04 22:18:16',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (281,NULL,2,'Subject for Phone Call','2023-02-16 15:05:31',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (282,NULL,56,'Subject for Interview','2023-03-06 02:50:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (283,NULL,1,'Subject for Meeting','2023-11-11 01:32:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (284,NULL,9,'Subject for Tell a Friend','2023-08-15 07:08:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (285,NULL,1,'Subject for Meeting','2023-04-27 15:50:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (286,NULL,2,'Subject for Phone Call','2023-11-27 07:46:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (287,NULL,1,'Subject for Meeting','2023-11-09 09:55:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (288,NULL,2,'Subject for Phone Call','2023-03-19 11:37:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (289,NULL,22,'Subject for Print/Merge Document','2023-06-12 07:31:44',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (290,NULL,56,'Subject for Interview','2023-07-29 16:41:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (291,NULL,9,'Subject for Tell a Friend','2023-09-17 20:19:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (292,NULL,9,'Subject for Tell a Friend','2023-04-10 04:38:46',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (293,NULL,22,'Subject for Print/Merge Document','2023-10-08 08:01:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (294,NULL,9,'Subject for Tell a Friend','2023-03-27 15:38:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (295,NULL,56,'Subject for Interview','2023-12-17 15:43:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (296,NULL,56,'Subject for Interview','2023-09-30 23:32:03',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (297,NULL,9,'Subject for Tell a Friend','2023-06-22 09:27:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (298,NULL,9,'Subject for Tell a Friend','2023-03-05 21:04:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (299,NULL,56,'Subject for Interview','2023-07-23 08:01:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (300,NULL,9,'Subject for Tell a Friend','2023-07-28 14:36:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (301,NULL,9,'Subject for Tell a Friend','2023-01-20 06:35:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (302,NULL,9,'Subject for Tell a Friend','2023-04-10 18:17:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (303,NULL,56,'Subject for Interview','2023-11-25 09:55:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (304,NULL,56,'Subject for Interview','2023-08-31 11:15:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (305,NULL,22,'Subject for Print/Merge Document','2023-09-22 07:11:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (306,NULL,22,'Subject for Print/Merge Document','2023-10-21 06:17:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (307,NULL,9,'Subject for Tell a Friend','2023-05-30 22:40:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (308,NULL,56,'Subject for Interview','2023-08-23 01:31:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (309,NULL,2,'Subject for Phone Call','2023-07-09 11:46:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (310,NULL,1,'Subject for Meeting','2022-12-31 03:22:12',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (311,NULL,1,'Subject for Meeting','2023-06-08 11:24:44',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (312,NULL,22,'Subject for Print/Merge Document','2023-10-24 14:30:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (313,NULL,56,'Subject for Interview','2023-10-04 01:34:32',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (314,NULL,9,'Subject for Tell a Friend','2023-06-21 18:22:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (315,NULL,2,'Subject for Phone Call','2023-07-17 20:01:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (316,NULL,9,'Subject for Tell a Friend','2023-07-24 01:00:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (317,NULL,1,'Subject for Meeting','2023-09-20 14:37:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (318,NULL,22,'Subject for Print/Merge Document','2023-01-23 06:32:26',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (319,NULL,22,'Subject for Print/Merge Document','2023-02-16 04:38:26',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (320,NULL,2,'Subject for Phone Call','2023-08-29 03:55:28',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (321,NULL,2,'Subject for Phone Call','2023-11-24 03:58:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (322,NULL,2,'Subject for Phone Call','2023-11-12 23:08:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (323,NULL,1,'Subject for Meeting','2023-02-07 16:08:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (324,NULL,56,'Subject for Interview','2023-06-05 15:26:53',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (325,NULL,2,'Subject for Phone Call','2023-08-31 18:54:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (326,NULL,2,'Subject for Phone Call','2023-09-01 00:45:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (327,NULL,1,'Subject for Meeting','2023-06-23 12:01:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (328,NULL,56,'Subject for Interview','2022-12-21 09:49:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (329,NULL,56,'Subject for Interview','2023-06-29 10:53:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (330,NULL,22,'Subject for Print/Merge Document','2023-07-22 03:26:32',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (331,NULL,22,'Subject for Print/Merge Document','2022-12-26 10:39:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (332,NULL,2,'Subject for Phone Call','2023-09-19 01:25:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (333,NULL,22,'Subject for Print/Merge Document','2023-08-18 04:26:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (334,NULL,1,'Subject for Meeting','2023-01-16 09:44:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (335,NULL,22,'Subject for Print/Merge Document','2023-01-04 11:25:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (336,NULL,2,'Subject for Phone Call','2023-08-11 09:48:28',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (337,NULL,56,'Subject for Interview','2023-07-03 07:56:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (338,NULL,22,'Subject for Print/Merge Document','2023-10-22 19:52:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (339,NULL,56,'Subject for Interview','2023-03-15 18:02:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (340,NULL,1,'Subject for Meeting','2023-05-21 14:45:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (341,NULL,2,'Subject for Phone Call','2023-01-15 20:34:55',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (342,NULL,22,'Subject for Print/Merge Document','2023-05-24 17:13:58',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (343,NULL,22,'Subject for Print/Merge Document','2023-07-29 19:40:02',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (344,NULL,22,'Subject for Print/Merge Document','2023-11-19 04:38:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (345,NULL,2,'Subject for Phone Call','2023-12-14 04:37:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (346,NULL,22,'Subject for Print/Merge Document','2023-09-26 23:50:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (347,NULL,1,'Subject for Meeting','2023-03-17 13:37:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (348,NULL,22,'Subject for Print/Merge Document','2023-01-28 07:26:35',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (349,NULL,22,'Subject for Print/Merge Document','2023-02-08 17:17:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (350,NULL,1,'Subject for Meeting','2023-07-22 21:39:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (351,NULL,1,'Subject for Meeting','2023-04-03 23:01:09',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (352,NULL,2,'Subject for Phone Call','2023-09-29 17:12:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (353,NULL,1,'Subject for Meeting','2023-08-10 12:39:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (354,NULL,2,'Subject for Phone Call','2023-08-13 19:53:57',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (355,NULL,1,'Subject for Meeting','2023-01-07 13:24:07',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (356,NULL,56,'Subject for Interview','2023-01-12 05:03:28',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (357,NULL,1,'Subject for Meeting','2023-03-11 10:51:20',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (358,NULL,22,'Subject for Print/Merge Document','2023-04-12 17:59:02',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (359,NULL,1,'Subject for Meeting','2023-10-17 18:03:02',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (360,NULL,56,'Subject for Interview','2023-09-16 00:13:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (361,NULL,1,'Subject for Meeting','2023-01-02 08:16:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (362,NULL,1,'Subject for Meeting','2023-11-25 10:56:21',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (363,NULL,56,'Subject for Interview','2023-06-02 06:42:03',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (364,NULL,56,'Subject for Interview','2023-09-12 20:29:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (365,NULL,22,'Subject for Print/Merge Document','2023-09-23 16:47:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (366,NULL,2,'Subject for Phone Call','2023-02-01 20:35:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (367,NULL,56,'Subject for Interview','2023-02-14 05:11:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (368,NULL,56,'Subject for Interview','2023-08-31 02:03:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (369,NULL,9,'Subject for Tell a Friend','2023-07-17 14:25:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (370,NULL,22,'Subject for Print/Merge Document','2023-03-11 20:22:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (371,NULL,2,'Subject for Phone Call','2023-10-02 21:46:43',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (372,NULL,9,'Subject for Tell a Friend','2023-08-05 06:24:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (373,NULL,56,'Subject for Interview','2023-11-10 08:18:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (374,NULL,1,'Subject for Meeting','2023-09-17 17:04:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (375,NULL,9,'Subject for Tell a Friend','2023-03-11 13:18:59',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (376,NULL,2,'Subject for Phone Call','2023-04-17 04:47:30',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (377,NULL,2,'Subject for Phone Call','2023-11-27 11:17:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (378,NULL,56,'Subject for Interview','2023-06-29 15:01:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (379,NULL,56,'Subject for Interview','2023-04-29 12:35:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (380,NULL,2,'Subject for Phone Call','2023-01-04 14:04:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (381,NULL,2,'Subject for Phone Call','2023-01-10 19:43:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (382,NULL,22,'Subject for Print/Merge Document','2023-11-17 17:34:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (383,NULL,56,'Subject for Interview','2023-03-10 12:46:42',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (384,NULL,2,'Subject for Phone Call','2023-04-16 14:55:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (385,NULL,9,'Subject for Tell a Friend','2023-04-04 18:24:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (386,NULL,9,'Subject for Tell a Friend','2023-07-24 15:21:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (387,NULL,22,'Subject for Print/Merge Document','2023-04-25 05:19:24',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (388,NULL,1,'Subject for Meeting','2023-01-09 04:49:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (389,NULL,56,'Subject for Interview','2023-08-28 02:12:26',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (390,NULL,22,'Subject for Print/Merge Document','2023-12-06 18:41:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (391,NULL,9,'Subject for Tell a Friend','2023-02-16 18:03:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (392,NULL,2,'Subject for Phone Call','2022-12-24 16:12:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (393,NULL,22,'Subject for Print/Merge Document','2023-07-05 20:08:56',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (394,NULL,22,'Subject for Print/Merge Document','2023-11-05 16:51:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (395,NULL,9,'Subject for Tell a Friend','2023-03-16 15:30:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (396,NULL,9,'Subject for Tell a Friend','2023-11-06 21:43:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (397,NULL,9,'Subject for Tell a Friend','2023-12-08 07:10:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (398,NULL,56,'Subject for Interview','2023-02-04 08:08:49',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (399,NULL,2,'Subject for Phone Call','2023-12-06 18:16:43',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (400,NULL,22,'Subject for Print/Merge Document','2023-11-25 01:56:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (401,NULL,2,'Subject for Phone Call','2023-11-06 18:52:28',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (402,NULL,1,'Subject for Meeting','2023-10-16 17:13:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (403,NULL,9,'Subject for Tell a Friend','2023-08-17 21:56:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (404,NULL,1,'Subject for Meeting','2023-04-19 14:40:25',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (405,NULL,1,'Subject for Meeting','2023-01-15 04:33:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (406,NULL,1,'Subject for Meeting','2023-10-24 06:07:41',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (407,NULL,1,'Subject for Meeting','2023-11-23 15:38:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (408,NULL,1,'Subject for Meeting','2023-10-06 02:53:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (409,NULL,56,'Subject for Interview','2023-10-10 19:17:23',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (410,NULL,56,'Subject for Interview','2023-06-08 09:01:25',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (411,NULL,2,'Subject for Phone Call','2023-04-27 10:47:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (412,NULL,2,'Subject for Phone Call','2023-06-14 21:22:12',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (413,NULL,1,'Subject for Meeting','2023-04-28 21:11:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (414,NULL,22,'Subject for Print/Merge Document','2023-08-06 12:02:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (415,NULL,56,'Subject for Interview','2023-01-09 12:53:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (416,NULL,2,'Subject for Phone Call','2023-08-09 17:30:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (417,NULL,1,'Subject for Meeting','2023-01-04 18:17:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (418,NULL,1,'Subject for Meeting','2023-04-12 11:17:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (419,NULL,1,'Subject for Meeting','2023-10-01 16:53:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (420,NULL,9,'Subject for Tell a Friend','2023-12-01 21:00:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (421,NULL,56,'Subject for Interview','2023-07-23 14:25:48',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (422,NULL,9,'Subject for Tell a Friend','2023-12-15 12:16:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (423,NULL,9,'Subject for Tell a Friend','2023-06-02 13:12:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (424,NULL,22,'Subject for Print/Merge Document','2023-06-02 20:04:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (425,NULL,56,'Subject for Interview','2023-07-09 18:30:47',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (426,NULL,56,'Subject for Interview','2023-08-27 04:11:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (427,NULL,2,'Subject for Phone Call','2023-09-20 03:48:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (428,NULL,9,'Subject for Tell a Friend','2023-02-21 05:18:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (429,NULL,1,'Subject for Meeting','2023-04-10 23:12:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (430,NULL,9,'Subject for Tell a Friend','2023-07-22 20:28:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (431,NULL,1,'Subject for Meeting','2023-04-06 14:04:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (432,NULL,1,'Subject for Meeting','2023-01-02 12:06:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (433,NULL,2,'Subject for Phone Call','2023-09-02 04:23:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (434,NULL,2,'Subject for Phone Call','2023-08-11 05:40:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (435,NULL,1,'Subject for Meeting','2022-12-20 07:41:16',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (436,NULL,2,'Subject for Phone Call','2023-12-02 16:26:12',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (437,NULL,2,'Subject for Phone Call','2023-05-15 13:55:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (438,NULL,22,'Subject for Print/Merge Document','2023-09-20 11:26:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (439,NULL,22,'Subject for Print/Merge Document','2023-03-12 20:54:05',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (440,NULL,56,'Subject for Interview','2023-07-02 05:16:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (441,NULL,1,'Subject for Meeting','2023-08-18 01:01:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (442,NULL,56,'Subject for Interview','2023-11-02 04:43:58',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (443,NULL,56,'Subject for Interview','2023-01-31 21:03:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (444,NULL,56,'Subject for Interview','2023-06-23 07:26:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (445,NULL,2,'Subject for Phone Call','2022-12-31 14:42:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (446,NULL,22,'Subject for Print/Merge Document','2023-02-19 13:17:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (447,NULL,2,'Subject for Phone Call','2023-11-18 08:03:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (448,NULL,2,'Subject for Phone Call','2023-09-09 04:46:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (449,NULL,1,'Subject for Meeting','2023-06-26 07:47:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (450,NULL,22,'Subject for Print/Merge Document','2023-12-11 13:20:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (451,1,6,'$ 125 April Mailer 1','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (452,2,6,'$ 50 Online: Save the Penguins','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (453,3,6,'£ 25 April Mailer 1','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (454,4,6,'$ 50 Online: Save the Penguins','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (455,5,6,'$ 50 Online: Save the Penguins','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (456,6,6,'$ 500 April Mailer 1','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (457,7,6,'$ 1750 Online: Save the Penguins','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (458,8,6,'$ 50 Online: Save the Penguins','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (459,9,6,'$ 10 Online: Help CiviCRM','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (460,10,6,'$ 250 Online: Help CiviCRM','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (461,11,6,'Â¥ 500 ','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (462,12,6,'$ 50 Online: Save the Penguins','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (463,13,6,'$ 50 ','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (464,14,6,'$ 50 ','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (465,15,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (466,16,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (467,17,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (468,18,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (469,19,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (470,20,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (471,21,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (472,22,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:37','2023-12-17 20:11:37'),
+ (473,23,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (474,24,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (475,25,6,'$ 25 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (476,26,6,'$ 10 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (477,27,6,'$ 10 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (478,28,6,'$ 10 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (479,29,6,'$ 10 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (480,30,6,'$ 10 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (481,31,6,'€ 5 Recurring contribution','2024-02-17 20:11:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (482,1,7,'General','2023-12-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (483,2,7,'Student','2023-12-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (484,3,7,'General','2023-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (485,4,7,'Student','2023-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (486,5,7,'General','2021-11-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (487,6,7,'Student','2023-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (488,7,7,'General','2023-12-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (489,8,7,'Student','2023-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (490,9,7,'General','2023-12-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (491,10,7,'General','2021-10-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (492,11,7,'Lifetime','2023-12-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (493,12,7,'Student','2023-12-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (494,13,7,'General','2023-12-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (495,14,7,'Student','2023-12-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (496,15,7,'Student','2022-12-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (497,16,7,'Student','2023-12-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (498,17,7,'General','2023-12-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (499,18,7,'Student','2023-11-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (500,19,7,'General','2023-11-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (501,20,7,'Student','2022-11-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (502,21,7,'General','2023-11-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (503,22,7,'Lifetime','2023-11-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (504,23,7,'General','2023-11-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (505,24,7,'Student','2023-11-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (506,25,7,'General','2021-06-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (507,26,7,'Student','2023-11-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (508,27,7,'General','2023-11-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (509,28,7,'Student','2023-11-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (510,29,7,'General','2023-11-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (511,30,7,'Student','2022-11-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (512,32,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (513,33,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (514,34,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (515,35,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (516,36,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (517,37,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (518,38,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (519,39,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (520,40,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (521,41,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (523,43,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (524,44,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (525,45,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (526,46,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (527,47,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (528,48,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (529,49,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (530,50,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (531,51,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (532,52,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (533,53,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (534,54,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (535,55,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (536,56,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (537,57,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (538,58,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (539,59,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (540,60,6,'$ 100.00 - General Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (541,61,6,'$ 50.00 - Student Membership: Offline signup','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (543,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (544,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (545,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (546,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (547,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (548,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (549,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (550,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (551,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (552,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (553,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (554,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (555,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (556,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (557,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (558,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (559,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (560,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (561,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (562,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (563,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (564,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (565,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (566,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (567,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (568,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (569,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (570,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (571,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (572,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (573,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (574,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (575,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (576,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (577,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (578,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (579,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (580,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (581,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (582,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (583,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (584,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (585,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (586,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (587,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (588,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (589,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (590,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (591,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (592,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (593,63,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (594,64,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (595,65,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (597,67,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (599,69,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (600,70,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (602,72,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (603,73,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (604,74,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (605,75,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (608,78,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (609,79,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (612,82,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (613,83,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (614,84,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (616,86,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (617,87,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (618,88,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (622,92,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (623,93,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (624,94,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (625,95,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (626,96,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (627,97,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (628,98,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (629,99,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (630,100,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (631,101,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (632,102,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (634,104,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (635,105,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (636,106,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (637,107,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (639,109,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (640,110,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (641,111,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38'),
+ (642,112,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-12-17 20:11:38',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-12-17 20:11:38','2023-12-17 20:11:38');
 /*!40000 ALTER TABLE `civicrm_activity` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -733,964 +733,968 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_activity_contact` WRITE;
 /*!40000 ALTER TABLE `civicrm_activity_contact` DISABLE KEYS */;
 INSERT INTO `civicrm_activity_contact` (`id`, `activity_id`, `contact_id`, `record_type_id`) VALUES
- (54,30,1,3),
- (61,34,1,3),
- (244,133,1,3),
- (576,320,1,3),
- (751,413,1,3),
- (759,417,1,3),
- (334,183,2,3),
- (417,230,2,3),
- (715,394,2,3),
- (818,451,2,2),
- (124,67,3,3),
- (171,92,3,3),
- (317,173,3,3),
- (395,217,3,3),
- (79,43,4,3),
- (134,72,4,3),
- (296,162,4,3),
- (338,185,4,3),
- (819,452,4,2),
- (822,455,4,2),
- (109,58,5,3),
- (215,117,5,3),
- (313,171,5,3),
- (444,246,5,3),
- (545,303,5,3),
- (647,359,5,3),
- (870,503,5,2),
- (908,541,5,2),
- (727,400,6,3),
- (820,453,6,2),
- (943,576,6,2),
- (528,294,7,3),
- (568,315,7,3),
- (613,341,7,3),
- (810,446,7,3),
- (150,81,8,3),
- (474,262,8,3),
- (570,316,8,3),
- (821,454,8,2),
- (865,498,8,2),
- (885,518,8,2),
- (935,568,8,2),
- (67,37,9,3),
- (226,123,10,3),
- (560,311,10,3),
- (643,357,10,3),
- (910,543,10,2),
- (341,187,11,3),
- (592,329,11,3),
- (119,64,12,3),
- (130,70,12,3),
- (175,94,12,3),
- (156,84,13,3),
- (275,150,13,3),
- (348,191,13,3),
- (379,208,13,3),
- (452,250,13,3),
- (919,552,13,2),
- (138,74,14,3),
- (220,120,14,3),
- (950,583,14,2),
- (154,83,15,3),
- (448,248,15,3),
- (483,267,15,3),
- (558,310,15,3),
- (670,371,15,3),
- (743,409,15,3),
- (276,151,16,2),
- (277,152,16,2),
- (279,153,16,2),
- (281,154,16,2),
- (283,155,16,2),
- (285,156,16,2),
- (286,156,16,3),
- (287,157,16,2),
- (289,158,16,2),
- (290,159,16,2),
- (291,160,16,2),
- (293,161,16,2),
- (295,162,16,2),
- (297,163,16,2),
- (299,164,16,2),
- (301,165,16,2),
- (303,166,16,2),
- (305,167,16,2),
- (307,168,16,2),
- (308,169,16,2),
- (310,170,16,2),
- (312,171,16,2),
- (314,172,16,2),
- (316,173,16,2),
- (318,174,16,2),
- (320,175,16,2),
- (321,176,16,2),
- (323,177,16,2),
- (325,178,16,2),
- (327,179,16,2),
- (329,180,16,2),
- (330,181,16,2),
- (331,182,16,2),
- (332,182,16,3),
- (333,183,16,2),
- (335,184,16,2),
- (337,185,16,2),
- (339,186,16,2),
- (340,187,16,2),
- (342,188,16,2),
- (343,189,16,2),
- (345,190,16,2),
- (347,191,16,2),
- (349,192,16,2),
- (351,193,16,2),
- (353,194,16,2),
- (354,195,16,2),
- (356,196,16,2),
- (358,197,16,2),
- (360,198,16,2),
- (361,199,16,2),
- (363,200,16,2),
- (365,201,16,2),
- (366,202,16,2),
- (368,203,16,2),
- (370,204,16,2),
- (372,205,16,2),
- (374,206,16,2),
- (376,207,16,2),
- (378,208,16,2),
- (380,209,16,2),
- (381,210,16,2),
- (383,211,16,2),
- (385,212,16,2),
- (387,213,16,2),
- (389,214,16,2),
- (390,215,16,2),
- (392,216,16,2),
- (394,217,16,2),
- (396,218,16,2),
- (398,219,16,2),
- (399,220,16,2),
- (400,221,16,2),
- (402,222,16,2),
- (403,223,16,2),
- (405,224,16,2),
- (407,225,16,2),
- (409,226,16,2),
- (411,227,16,2),
- (413,228,16,2),
- (414,229,16,2),
- (416,230,16,2),
- (418,231,16,2),
- (420,232,16,2),
- (421,233,16,2),
- (423,234,16,2),
- (425,235,16,2),
- (426,236,16,2),
- (427,237,16,2),
- (429,238,16,2),
- (431,239,16,2),
- (433,240,16,2),
- (434,241,16,2),
- (435,241,16,3),
- (436,242,16,2),
- (438,243,16,2),
- (440,244,16,2),
- (442,245,16,2),
- (443,246,16,2),
- (445,247,16,2),
- (447,248,16,2),
- (449,249,16,2),
- (451,250,16,2),
- (453,251,16,2),
- (455,252,16,2),
- (457,253,16,2),
- (459,254,16,2),
- (461,255,16,2),
- (462,256,16,2),
- (464,257,16,2),
- (466,258,16,2),
- (468,259,16,2),
- (470,260,16,2),
- (471,261,16,2),
- (473,262,16,2),
- (475,263,16,2),
- (477,264,16,2),
- (479,265,16,2),
- (480,266,16,2),
- (482,267,16,2),
- (484,268,16,2),
- (486,269,16,2),
- (487,270,16,2),
- (489,271,16,2),
- (491,272,16,2),
- (493,273,16,2),
- (494,274,16,2),
- (496,275,16,2),
- (498,276,16,2),
- (499,277,16,2),
- (501,278,16,2),
- (503,279,16,2),
- (505,280,16,2),
- (507,281,16,2),
- (508,282,16,2),
- (510,283,16,2),
- (512,284,16,2),
- (513,285,16,2),
- (515,286,16,2),
- (516,287,16,2),
- (517,288,16,2),
- (519,289,16,2),
- (521,290,16,2),
- (522,291,16,2),
- (524,292,16,2),
- (525,293,16,2),
- (527,294,16,2),
- (529,295,16,2),
- (531,296,16,2),
- (533,297,16,2),
- (534,298,16,2),
- (536,299,16,2),
- (538,300,16,2),
- (676,374,16,3),
- (707,390,16,3),
- (823,456,16,2),
- (924,557,16,2),
- (163,88,17,3),
- (497,275,17,3),
- (869,502,17,2),
- (888,521,17,2),
- (945,578,17,2),
- (231,126,18,3),
- (780,429,18,3),
- (81,44,19,3),
- (346,190,19,3),
- (432,239,19,3),
- (824,457,19,2),
- (938,571,19,2),
- (273,149,20,3),
- (369,203,20,3),
- (562,312,20,3),
- (619,344,20,3),
- (814,448,20,3),
- (28,15,21,3),
- (186,101,21,3),
- (526,293,21,3),
- (600,333,21,3),
- (610,339,21,3),
- (639,355,21,3),
- (733,404,21,3),
- (778,428,21,3),
- (284,155,22,3),
- (566,314,22,3),
- (628,349,22,3),
- (85,46,23,3),
- (140,75,23,3),
- (197,107,23,3),
- (278,152,23,3),
- (350,192,23,3),
- (382,210,23,3),
- (428,237,23,3),
- (918,551,23,2),
- (97,52,24,3),
- (240,131,26,3),
- (375,206,26,3),
- (502,278,26,3),
- (111,59,27,3),
- (218,119,27,3),
- (288,157,27,3),
- (617,343,27,3),
- (626,348,27,3),
- (649,360,27,3),
- (690,381,27,3),
- (713,393,27,3),
- (26,14,28,3),
- (103,55,28,3),
- (233,127,28,3),
- (292,160,28,3),
- (660,366,28,3),
- (688,380,28,3),
- (711,392,28,3),
- (761,418,28,3),
- (873,506,28,2),
- (890,523,28,2),
- (8,4,29,3),
- (532,296,29,3),
- (236,129,30,3),
- (328,179,30,3),
- (441,244,30,3),
- (485,268,30,3),
- (606,337,30,3),
- (682,377,30,3),
- (719,396,30,3),
- (923,556,30,2),
- (132,71,31,3),
- (488,270,31,3),
- (574,319,31,3),
- (169,91,32,3),
- (632,351,32,3),
- (717,395,32,3),
- (830,463,32,2),
- (831,464,32,2),
- (52,29,33,3),
- (128,69,33,3),
- (148,80,33,3),
- (709,391,33,3),
- (211,115,34,3),
- (415,229,34,3),
- (454,251,34,3),
- (598,332,34,3),
- (623,346,34,3),
- (800,441,34,3),
- (827,460,34,2),
- (393,216,35,3),
- (401,221,35,3),
- (705,389,35,3),
- (107,57,36,3),
- (228,124,36,3),
- (855,488,36,2),
- (881,514,36,2),
- (914,547,36,2),
- (145,78,37,3),
- (386,212,37,3),
- (564,313,37,3),
- (585,325,37,3),
- (680,376,37,3),
- (741,408,37,3),
- (792,436,37,3),
- (43,24,38,3),
- (630,350,38,3),
- (737,406,38,3),
- (13,7,39,3),
- (46,26,39,3),
- (808,445,39,3),
- (858,491,39,2),
- (899,532,39,2),
- (65,36,40,3),
- (654,363,40,3),
- (749,412,40,3),
- (915,548,40,2),
- (672,372,41,3),
- (698,385,41,3),
- (917,550,41,2),
- (203,110,42,3),
- (478,264,43,3),
- (829,462,43,2),
- (38,21,44,3),
- (48,27,44,3),
- (304,166,44,3),
- (446,247,44,3),
- (795,438,44,3),
- (248,135,45,3),
- (437,242,45,3),
- (656,364,45,3),
- (932,565,45,2),
- (306,167,46,3),
- (509,282,46,3),
- (253,138,47,3),
- (271,148,47,3),
- (377,207,47,3),
- (424,234,47,3),
- (554,308,47,3),
- (578,321,47,3),
- (747,411,47,3),
- (850,483,47,2),
- (894,527,47,2),
- (326,178,48,3),
- (861,494,48,2),
- (883,516,48,2),
- (31,17,49,3),
- (93,50,49,3),
- (193,105,49,3),
- (269,147,49,3),
- (860,493,49,2),
- (900,533,49,2),
- (15,8,50,3),
- (222,121,50,3),
- (324,177,50,3),
- (384,211,50,3),
- (745,410,50,3),
- (73,40,51,3),
- (83,45,51,3),
- (294,161,51,3),
- (543,302,51,3),
- (694,383,51,3),
- (2,1,52,3),
- (95,51,52,3),
- (122,66,52,3),
- (165,89,52,3),
- (280,153,52,3),
- (472,261,52,3),
- (10,5,53,3),
- (259,141,53,3),
- (636,353,53,3),
- (179,97,54,3),
- (397,218,54,3),
- (658,365,54,3),
- (731,403,54,3),
- (867,500,54,2),
- (886,519,54,2),
- (6,3,55,3),
- (261,142,55,3),
- (408,225,55,3),
- (422,233,55,3),
- (539,300,55,3),
- (674,373,55,3),
- (721,397,55,3),
- (849,482,55,2),
- (879,512,55,2),
- (535,298,56,3),
- (556,309,56,3),
- (651,361,56,3),
- (739,407,56,3),
- (812,447,56,3),
- (255,139,57,3),
- (302,165,57,3),
- (580,322,57,3),
- (787,433,57,3),
- (804,443,57,3),
- (955,588,57,2),
- (57,32,58,3),
- (136,73,58,3),
- (181,98,58,3),
- (300,164,58,3),
- (406,224,58,3),
- (832,465,59,2),
- (833,466,59,2),
- (834,467,59,2),
- (835,468,59,2),
- (836,469,59,2),
- (837,470,59,2),
- (838,471,59,2),
- (839,472,59,2),
- (840,473,59,2),
- (841,474,59,2),
- (842,475,59,2),
- (495,274,60,3),
- (763,419,60,3),
- (199,108,61,3),
- (520,289,61,3),
- (530,295,61,3),
- (184,100,62,3),
- (33,18,63,3),
- (195,106,63,3),
- (242,132,63,3),
- (500,277,63,3),
- (725,399,63,3),
- (735,405,63,3),
- (91,49,64,3),
- (641,356,64,3),
- (662,367,64,3),
- (21,11,65,3),
- (99,53,65,3),
- (404,223,65,3),
- (608,338,65,3),
- (615,342,65,3),
- (798,440,65,3),
- (336,184,66,3),
- (357,196,66,3),
- (456,252,66,3),
- (463,256,66,3),
- (753,414,66,3),
- (876,509,66,2),
- (906,539,66,2),
- (391,215,67,3),
- (547,304,67,3),
- (645,358,67,3),
- (450,249,68,3),
- (668,370,68,3),
- (700,386,68,3),
- (816,449,68,3),
- (158,85,69,3),
- (388,213,69,3),
- (666,369,69,3),
- (768,422,69,3),
- (958,591,69,2),
- (367,202,70,3),
- (583,324,70,3),
- (802,442,70,3),
- (69,38,71,3),
- (188,102,71,3),
- (309,169,71,3),
- (344,189,71,3),
- (828,461,71,2),
- (298,163,72,3),
- (439,243,72,3),
- (634,352,72,3),
- (59,33,73,3),
- (113,60,73,3),
- (207,112,73,3),
- (364,200,73,3),
- (371,204,73,3),
- (476,263,73,3),
- (772,425,73,3),
- (939,572,73,2),
- (87,47,74,3),
- (224,122,74,3),
- (755,415,74,3),
- (765,420,74,3),
- (774,426,74,3),
- (4,2,75,3),
- (117,63,75,3),
- (267,146,75,3),
- (311,170,76,3),
- (373,205,76,3),
- (460,254,76,3),
- (518,288,76,3),
- (940,573,76,2),
- (75,41,77,3),
- (315,172,77,3),
- (514,285,77,3),
- (537,299,77,3),
- (913,546,77,2),
- (126,68,78,3),
- (596,331,78,3),
- (874,507,78,2),
- (905,538,78,2),
- (161,87,79,3),
- (322,176,79,3),
- (410,226,80,3),
- (930,563,80,2),
- (71,39,81,3),
- (213,116,81,3),
- (469,259,81,3),
- (205,111,82,3),
- (504,279,82,3),
- (523,291,82,3),
- (825,458,82,2),
- (359,197,83,3),
- (678,375,83,3),
- (696,384,83,3),
- (19,10,84,3),
- (40,22,84,3),
- (89,48,84,3),
- (587,326,84,3),
- (948,581,84,2),
- (458,253,85,3),
- (257,140,86,3),
- (352,193,86,3),
- (550,306,86,3),
- (723,398,86,3),
- (877,510,86,2),
- (892,525,86,2),
- (77,42,87,3),
- (173,93,87,3),
- (362,199,87,3),
- (511,283,87,3),
- (686,379,87,3),
- (782,430,87,3),
- (857,490,87,2),
- (882,515,87,2),
- (24,13,88,3),
- (621,345,88,3),
- (684,378,88,3),
- (959,592,88,2),
- (17,9,89,3),
- (419,231,89,3),
- (506,280,89,3),
- (664,368,89,3),
- (692,382,89,3),
- (784,431,89,3),
- (167,90,90,3),
- (190,103,91,3),
- (263,143,91,3),
- (319,174,91,3),
- (355,195,91,3),
- (757,416,91,3),
- (63,35,92,3),
- (412,227,92,3),
- (481,266,92,3),
- (541,301,92,3),
- (552,307,92,3),
- (594,330,92,3),
- (826,459,92,2),
- (862,495,92,2),
- (901,534,92,2),
- (911,544,92,2),
- (36,20,93,3),
- (492,272,93,3),
- (859,492,93,2),
- (907,540,93,2),
- (467,258,94,3),
- (776,427,94,3),
- (916,549,94,2),
- (201,109,95,3),
- (282,154,95,3),
- (465,257,95,3),
- (603,335,95,3),
- (101,54,96,3),
- (251,137,96,3),
- (430,238,96,3),
- (806,444,96,3),
- (954,587,96,2),
- (142,76,97,3),
- (238,130,97,3),
- (942,575,97,2),
- (246,134,98,3),
- (589,327,98,3),
- (105,56,99,3),
- (490,271,99,3),
- (843,476,99,2),
- (844,477,99,2),
- (845,478,99,2),
- (846,479,99,2),
- (847,480,99,2),
- (50,28,100,3),
- (152,82,100,3),
- (703,388,100,3),
- (790,435,100,3),
- (872,505,100,2),
- (904,537,100,2),
- (936,569,101,2),
- (848,481,103,2),
- (868,501,106,2),
- (887,520,106,2),
- (853,486,113,2),
- (896,529,113,2),
- (875,508,117,2),
- (891,524,117,2),
- (949,582,117,2),
- (928,561,123,2),
- (852,485,126,2),
- (895,528,126,2),
- (540,301,127,2),
- (542,302,127,2),
- (544,303,127,2),
- (546,304,127,2),
- (548,305,127,2),
- (549,306,127,2),
- (551,307,127,2),
- (553,308,127,2),
- (555,309,127,2),
- (557,310,127,2),
- (559,311,127,2),
- (561,312,127,2),
- (563,313,127,2),
- (565,314,127,2),
- (567,315,127,2),
- (569,316,127,2),
- (571,317,127,2),
- (572,318,127,2),
- (573,319,127,2),
- (575,320,127,2),
- (577,321,127,2),
- (579,322,127,2),
- (581,323,127,2),
- (582,324,127,2),
- (584,325,127,2),
- (586,326,127,2),
- (588,327,127,2),
- (590,328,127,2),
- (591,329,127,2),
- (593,330,127,2),
- (595,331,127,2),
- (597,332,127,2),
- (599,333,127,2),
- (601,334,127,2),
- (602,335,127,2),
- (604,336,127,2),
- (605,337,127,2),
- (607,338,127,2),
- (609,339,127,2),
- (611,340,127,2),
- (612,341,127,2),
- (614,342,127,2),
- (616,343,127,2),
- (618,344,127,2),
- (620,345,127,2),
- (622,346,127,2),
- (624,347,127,2),
- (625,348,127,2),
- (627,349,127,2),
- (629,350,127,2),
- (631,351,127,2),
- (633,352,127,2),
- (635,353,127,2),
- (637,354,127,2),
- (638,355,127,2),
- (640,356,127,2),
- (642,357,127,2),
- (644,358,127,2),
- (646,359,127,2),
- (648,360,127,2),
- (650,361,127,2),
- (652,362,127,2),
- (653,363,127,2),
- (655,364,127,2),
- (657,365,127,2),
- (659,366,127,2),
- (661,367,127,2),
- (663,368,127,2),
- (665,369,127,2),
- (667,370,127,2),
- (669,371,127,2),
- (671,372,127,2),
- (673,373,127,2),
- (675,374,127,2),
- (677,375,127,2),
- (679,376,127,2),
- (681,377,127,2),
- (683,378,127,2),
- (685,379,127,2),
- (687,380,127,2),
- (689,381,127,2),
- (691,382,127,2),
- (693,383,127,2),
- (695,384,127,2),
- (697,385,127,2),
- (699,386,127,2),
- (701,387,127,2),
- (702,388,127,2),
- (704,389,127,2),
- (706,390,127,2),
- (708,391,127,2),
- (710,392,127,2),
- (712,393,127,2),
- (714,394,127,2),
- (716,395,127,2),
- (718,396,127,2),
- (720,397,127,2),
- (722,398,127,2),
- (724,399,127,2),
- (726,400,127,2),
- (728,401,127,2),
- (729,402,127,2),
- (730,403,127,2),
- (732,404,127,2),
- (734,405,127,2),
- (736,406,127,2),
- (738,407,127,2),
- (740,408,127,2),
- (742,409,127,2),
- (744,410,127,2),
- (746,411,127,2),
- (748,412,127,2),
- (750,413,127,2),
- (752,414,127,2),
- (754,415,127,2),
- (756,416,127,2),
- (758,417,127,2),
- (760,418,127,2),
- (762,419,127,2),
- (764,420,127,2),
- (766,421,127,2),
- (767,422,127,2),
- (769,423,127,2),
- (770,424,127,2),
- (771,425,127,2),
- (773,426,127,2),
- (775,427,127,2),
- (777,428,127,2),
- (779,429,127,2),
- (781,430,127,2),
- (783,431,127,2),
- (785,432,127,2),
- (786,433,127,2),
- (788,434,127,2),
- (789,435,127,2),
- (791,436,127,2),
- (793,437,127,2),
- (794,438,127,2),
- (796,439,127,2),
- (797,440,127,2),
- (799,441,127,2),
- (801,442,127,2),
- (803,443,127,2),
- (805,444,127,2),
- (807,445,127,2),
- (809,446,127,2),
- (811,447,127,2),
- (813,448,127,2),
- (815,449,127,2),
- (817,450,127,2),
- (946,579,127,2),
- (925,558,132,2),
- (922,555,135,2),
- (864,497,136,2),
- (902,535,136,2),
- (929,562,144,2),
- (878,511,149,2),
- (893,526,149,2),
- (947,580,154,2),
- (951,584,156,2),
- (937,570,158,2),
- (944,577,159,2),
- (1,1,160,2),
- (3,2,160,2),
- (5,3,160,2),
- (7,4,160,2),
- (9,5,160,2),
- (11,6,160,2),
- (12,7,160,2),
- (14,8,160,2),
- (16,9,160,2),
- (18,10,160,2),
- (20,11,160,2),
- (22,12,160,2),
- (23,13,160,2),
- (25,14,160,2),
- (27,15,160,2),
- (29,16,160,2),
- (30,17,160,2),
- (32,18,160,2),
- (34,19,160,2),
- (35,20,160,2),
- (37,21,160,2),
- (39,22,160,2),
- (41,23,160,2),
- (42,24,160,2),
- (44,25,160,2),
- (45,26,160,2),
- (47,27,160,2),
- (49,28,160,2),
- (51,29,160,2),
- (53,30,160,2),
- (55,31,160,2),
- (56,32,160,2),
- (58,33,160,2),
- (60,34,160,2),
- (62,35,160,2),
- (64,36,160,2),
- (66,37,160,2),
- (68,38,160,2),
- (70,39,160,2),
- (72,40,160,2),
- (74,41,160,2),
- (76,42,160,2),
- (78,43,160,2),
- (80,44,160,2),
- (82,45,160,2),
- (84,46,160,2),
- (86,47,160,2),
- (88,48,160,2),
- (90,49,160,2),
- (92,50,160,2),
- (94,51,160,2),
- (96,52,160,2),
- (98,53,160,2),
- (100,54,160,2),
- (102,55,160,2),
- (104,56,160,2),
- (106,57,160,2),
- (108,58,160,2),
- (110,59,160,2),
- (112,60,160,2),
- (114,61,160,2),
- (115,62,160,2),
- (116,63,160,2),
- (118,64,160,2),
- (120,65,160,2),
- (121,66,160,2),
- (123,67,160,2),
- (125,68,160,2),
- (127,69,160,2),
- (129,70,160,2),
- (131,71,160,2),
- (133,72,160,2),
- (135,73,160,2),
- (137,74,160,2),
- (139,75,160,2),
- (141,76,160,2),
- (143,77,160,2),
- (144,78,160,2),
- (146,79,160,2),
- (147,80,160,2),
- (149,81,160,2),
- (151,82,160,2),
- (153,83,160,2),
- (155,84,160,2),
- (157,85,160,2),
- (159,86,160,2),
- (160,87,160,2),
- (162,88,160,2),
- (164,89,160,2),
- (166,90,160,2),
- (168,91,160,2),
- (170,92,160,2),
- (172,93,160,2),
- (174,94,160,2),
- (176,95,160,2),
- (177,96,160,2),
- (178,97,160,2),
- (180,98,160,2),
- (182,99,160,2),
- (183,100,160,2),
- (185,101,160,2),
- (187,102,160,2),
- (189,103,160,2),
- (191,104,160,2),
- (192,105,160,2),
- (194,106,160,2),
- (196,107,160,2),
- (198,108,160,2),
- (200,109,160,2),
- (202,110,160,2),
- (204,111,160,2),
- (206,112,160,2),
- (208,113,160,2),
- (209,114,160,2),
- (210,115,160,2),
- (212,116,160,2),
- (214,117,160,2),
- (216,118,160,2),
- (217,119,160,2),
- (219,120,160,2),
- (221,121,160,2),
- (223,122,160,2),
- (225,123,160,2),
- (227,124,160,2),
- (229,125,160,2),
- (230,126,160,2),
- (232,127,160,2),
- (234,128,160,2),
- (235,129,160,2),
- (237,130,160,2),
- (239,131,160,2),
- (241,132,160,2),
- (243,133,160,2),
- (245,134,160,2),
- (247,135,160,2),
- (249,136,160,2),
- (250,137,160,2),
- (252,138,160,2),
- (254,139,160,2),
- (256,140,160,2),
- (258,141,160,2),
- (260,142,160,2),
- (262,143,160,2),
- (264,144,160,2),
- (265,145,160,2),
- (266,146,160,2),
- (268,147,160,2),
- (270,148,160,2),
- (272,149,160,2),
- (274,150,160,2),
- (912,545,160,2),
- (952,585,163,2),
- (856,489,164,2),
- (898,531,164,2),
- (851,484,168,2),
- (880,513,168,2),
- (854,487,169,2),
- (897,530,169,2),
- (957,590,172,2),
- (871,504,175,2),
- (889,522,175,2),
- (956,589,175,2),
- (931,564,178,2),
- (926,559,179,2),
- (863,496,180,2),
- (884,517,180,2),
- (934,567,182,2),
- (953,586,184,2),
- (866,499,187,2),
- (903,536,187,2),
- (927,560,189,2),
- (921,554,192,2),
- (920,553,195,2),
- (933,566,196,2),
- (941,574,197,2);
+ (160,87,1,3),
+ (210,114,1,3),
+ (542,295,1,3),
+ (318,173,2,3),
+ (535,291,2,3),
+ (768,421,2,3),
+ (822,451,2,2),
+ (250,135,3,3),
+ (410,223,3,3),
+ (452,246,3,3),
+ (691,379,3,3),
+ (392,212,4,3),
+ (546,297,4,3),
+ (823,452,4,2),
+ (826,455,4,2),
+ (170,92,5,3),
+ (438,238,5,3),
+ (488,266,5,3),
+ (369,200,6,3),
+ (388,210,6,3),
+ (724,398,6,3),
+ (753,413,6,3),
+ (824,453,6,2),
+ (19,10,7,3),
+ (43,23,7,3),
+ (168,91,7,3),
+ (316,172,7,3),
+ (693,380,7,3),
+ (98,53,8,3),
+ (311,169,8,3),
+ (445,242,8,3),
+ (825,454,8,2),
+ (865,494,8,2),
+ (895,524,8,2),
+ (226,122,9,3),
+ (359,195,9,3),
+ (530,288,9,3),
+ (208,113,10,3),
+ (540,294,10,3),
+ (805,441,10,3),
+ (41,22,11,3),
+ (743,408,11,3),
+ (956,585,12,2),
+ (408,222,13,3),
+ (421,229,13,3),
+ (518,282,13,3),
+ (179,97,14,3),
+ (220,119,14,3),
+ (762,418,14,3),
+ (33,18,15,3),
+ (262,142,15,3),
+ (333,181,15,3),
+ (685,376,15,3),
+ (779,427,15,3),
+ (28,15,16,3),
+ (269,146,16,3),
+ (390,211,16,3),
+ (528,287,16,3),
+ (655,360,16,3),
+ (827,456,16,2),
+ (122,66,17,3),
+ (124,67,17,3),
+ (132,72,17,3),
+ (260,141,17,3),
+ (363,197,17,3),
+ (377,204,17,3),
+ (386,209,17,3),
+ (603,328,17,3),
+ (456,248,18,3),
+ (785,430,18,3),
+ (945,574,18,2),
+ (74,39,19,3),
+ (85,45,19,3),
+ (512,279,19,3),
+ (581,316,19,3),
+ (737,405,19,3),
+ (828,457,19,2),
+ (942,571,19,2),
+ (202,109,20,3),
+ (212,115,20,3),
+ (516,281,20,3),
+ (593,323,21,3),
+ (807,442,21,3),
+ (329,179,22,3),
+ (149,81,23,3),
+ (416,226,23,3),
+ (570,310,23,3),
+ (587,320,23,3),
+ (760,417,23,3),
+ (811,444,23,3),
+ (66,35,24,3),
+ (687,377,24,3),
+ (46,25,25,3),
+ (953,582,25,2),
+ (3,2,26,3),
+ (135,74,26,3),
+ (147,80,26,3),
+ (174,94,26,3),
+ (344,187,26,3),
+ (15,8,27,3),
+ (25,13,27,3),
+ (79,42,27,3),
+ (346,188,27,3),
+ (428,233,27,3),
+ (638,351,27,3),
+ (714,392,27,3),
+ (741,407,27,3),
+ (373,202,28,3),
+ (873,502,28,2),
+ (903,532,28,2),
+ (241,130,29,3),
+ (309,168,29,3),
+ (661,363,29,3),
+ (62,33,30,3),
+ (751,412,30,3),
+ (335,182,31,3),
+ (382,207,31,3),
+ (955,584,31,2),
+ (166,90,32,3),
+ (770,422,32,3),
+ (834,463,32,2),
+ (835,464,32,2),
+ (695,381,33,3),
+ (145,79,34,3),
+ (414,225,34,3),
+ (831,460,34,2),
+ (854,483,34,2),
+ (884,513,34,2),
+ (554,301,35,3),
+ (772,423,35,3),
+ (245,132,36,3),
+ (467,255,36,3),
+ (620,339,36,3),
+ (119,64,37,3),
+ (189,102,37,3),
+ (320,174,37,3),
+ (474,259,37,3),
+ (500,273,37,3),
+ (820,449,37,3),
+ (524,285,38,3),
+ (681,374,38,3),
+ (962,591,38,2),
+ (72,38,39,3),
+ (83,44,39,3),
+ (181,98,39,3),
+ (216,117,39,3),
+ (418,227,39,3),
+ (463,252,39,3),
+ (9,5,40,3),
+ (13,7,40,3),
+ (193,104,40,3),
+ (440,239,40,3),
+ (280,152,41,3),
+ (326,177,41,3),
+ (482,263,41,3),
+ (577,314,41,3),
+ (766,420,41,3),
+ (252,136,42,3),
+ (572,311,42,3),
+ (575,313,42,3),
+ (629,345,42,3),
+ (795,435,42,3),
+ (948,577,42,2),
+ (152,83,43,3),
+ (338,184,43,3),
+ (458,249,43,3),
+ (490,267,43,3),
+ (544,296,43,3),
+ (722,397,43,3),
+ (733,403,43,3),
+ (833,462,43,2),
+ (60,32,44,3),
+ (271,147,44,3),
+ (404,219,44,3),
+ (605,329,44,3),
+ (789,432,44,3),
+ (412,224,45,3),
+ (558,303,45,3),
+ (48,26,46,3),
+ (129,70,46,3),
+ (447,243,46,3),
+ (601,327,46,3),
+ (670,368,46,3),
+ (96,52,47,3),
+ (197,106,47,3),
+ (526,286,47,3),
+ (709,389,47,3),
+ (868,497,48,2),
+ (898,527,48,2),
+ (102,55,49,3),
+ (276,150,49,3),
+ (432,235,49,3),
+ (749,411,49,3),
+ (566,308,50,3),
+ (595,324,50,3),
+ (624,341,50,3),
+ (729,401,50,3),
+ (803,440,50,3),
+ (636,350,51,3),
+ (290,158,52,3),
+ (478,261,52,3),
+ (510,278,52,3),
+ (718,395,52,3),
+ (797,436,52,3),
+ (957,586,52,2),
+ (191,103,53,3),
+ (486,265,53,3),
+ (650,357,53,3),
+ (775,425,53,3),
+ (117,63,54,3),
+ (267,145,54,3),
+ (666,366,54,3),
+ (322,175,55,3),
+ (361,196,55,3),
+ (564,307,55,3),
+ (707,388,55,3),
+ (940,569,55,2),
+ (380,206,56,3),
+ (443,241,56,3),
+ (781,428,56,3),
+ (158,86,57,3),
+ (689,378,57,3),
+ (282,153,58,3),
+ (313,170,58,3),
+ (367,199,58,3),
+ (384,208,58,3),
+ (397,215,58,3),
+ (560,304,58,3),
+ (589,321,58,3),
+ (818,448,58,3),
+ (154,84,59,3),
+ (533,290,59,3),
+ (657,361,59,3),
+ (816,447,59,3),
+ (836,465,59,2),
+ (837,466,59,2),
+ (838,467,59,2),
+ (839,468,59,2),
+ (840,469,59,2),
+ (841,470,59,2),
+ (842,471,59,2),
+ (843,472,59,2),
+ (844,473,59,2),
+ (845,474,59,2),
+ (846,475,59,2),
+ (882,511,59,2),
+ (912,541,59,2),
+ (939,568,59,2),
+ (70,37,60,3),
+ (640,352,60,3),
+ (331,180,61,3),
+ (552,300,61,3),
+ (949,578,61,2),
+ (113,61,62,3),
+ (353,192,62,3),
+ (514,280,62,3),
+ (881,510,62,2),
+ (911,540,62,2),
+ (935,564,62,2),
+ (278,151,63,3),
+ (305,166,63,3),
+ (799,437,63,3),
+ (324,176,64,3),
+ (399,216,64,3),
+ (469,256,64,3),
+ (508,277,64,3),
+ (597,325,64,3),
+ (39,21,65,3),
+ (247,133,65,3),
+ (583,317,65,3),
+ (700,384,65,3),
+ (704,386,65,3),
+ (938,567,65,2),
+ (58,31,66,3),
+ (342,186,66,3),
+ (395,214,66,3),
+ (472,258,66,3),
+ (199,107,67,3),
+ (502,274,67,3),
+ (877,506,67,2),
+ (907,536,67,2),
+ (932,561,67,2),
+ (371,201,68,3),
+ (430,234,68,3),
+ (454,247,68,3),
+ (110,59,69,3),
+ (222,120,69,3),
+ (301,164,69,3),
+ (642,353,69,3),
+ (644,354,69,3),
+ (185,100,70,3),
+ (679,373,70,3),
+ (871,500,70,2),
+ (901,530,70,2),
+ (64,34,71,3),
+ (449,244,71,3),
+ (476,260,71,3),
+ (832,461,71,2),
+ (936,565,71,2),
+ (504,275,72,3),
+ (683,375,72,3),
+ (735,404,72,3),
+ (923,552,72,2),
+ (54,29,73,3),
+ (106,57,73,3),
+ (632,347,73,3),
+ (35,19,74,3),
+ (50,27,74,3),
+ (143,78,74,3),
+ (284,154,74,3),
+ (756,415,74,3),
+ (348,189,75,3),
+ (612,334,75,3),
+ (648,356,75,3),
+ (777,426,75,3),
+ (878,507,75,2),
+ (908,537,75,2),
+ (230,124,76,3),
+ (237,128,76,3),
+ (239,129,76,3),
+ (243,131,76,3),
+ (484,264,76,3),
+ (141,77,77,3),
+ (646,355,77,3),
+ (813,445,77,3),
+ (927,556,77,2),
+ (522,284,78,3),
+ (556,302,78,3),
+ (357,194,79,3),
+ (365,198,79,3),
+ (548,298,79,3),
+ (943,572,79,2),
+ (21,11,80,3),
+ (23,12,80,3),
+ (292,159,80,3),
+ (726,399,80,3),
+ (739,406,80,3),
+ (424,231,81,3),
+ (498,272,81,3),
+ (783,429,81,3),
+ (793,434,81,3),
+ (52,28,82,3),
+ (68,36,82,3),
+ (520,283,82,3),
+ (829,458,82,2),
+ (853,482,82,2),
+ (883,512,82,2),
+ (961,590,82,2),
+ (115,62,83,3),
+ (137,75,83,3),
+ (204,110,83,3),
+ (287,156,83,3),
+ (922,551,83,2),
+ (104,56,84,3),
+ (214,116,84,3),
+ (872,501,84,2),
+ (902,531,84,2),
+ (17,9,85,3),
+ (100,54,85,3),
+ (139,76,85,3),
+ (176,95,85,3),
+ (254,137,85,3),
+ (506,276,85,3),
+ (675,371,85,3),
+ (747,410,85,3),
+ (299,163,86,3),
+ (496,271,86,3),
+ (668,367,86,3),
+ (677,372,86,3),
+ (712,391,86,3),
+ (7,4,87,3),
+ (164,89,87,3),
+ (296,161,87,3),
+ (375,203,87,3),
+ (550,299,87,3),
+ (915,544,87,2),
+ (94,51,88,3),
+ (172,93,88,3),
+ (426,232,88,3),
+ (461,251,88,3),
+ (37,20,89,3),
+ (493,269,89,3),
+ (745,409,89,3),
+ (930,559,89,2),
+ (91,49,90,3),
+ (162,88,90,3),
+ (265,144,90,3),
+ (5,3,91,3),
+ (31,17,91,3),
+ (127,69,91,3),
+ (617,337,91,3),
+ (731,402,91,3),
+ (856,485,91,2),
+ (886,515,91,2),
+ (224,121,92,3),
+ (235,127,92,3),
+ (591,322,92,3),
+ (830,459,92,2),
+ (303,165,93,3),
+ (401,217,93,3),
+ (609,332,93,3),
+ (663,364,93,3),
+ (56,30,94,3),
+ (81,43,94,3),
+ (277,151,94,2),
+ (279,152,94,2),
+ (281,153,94,2),
+ (283,154,94,2),
+ (285,155,94,2),
+ (286,156,94,2),
+ (288,157,94,2),
+ (289,158,94,2),
+ (291,159,94,2),
+ (293,160,94,2),
+ (295,161,94,2),
+ (297,162,94,2),
+ (298,163,94,2),
+ (300,164,94,2),
+ (302,165,94,2),
+ (304,166,94,2),
+ (306,167,94,2),
+ (307,167,94,3),
+ (308,168,94,2),
+ (310,169,94,2),
+ (312,170,94,2),
+ (314,171,94,2),
+ (315,172,94,2),
+ (317,173,94,2),
+ (319,174,94,2),
+ (321,175,94,2),
+ (323,176,94,2),
+ (325,177,94,2),
+ (327,178,94,2),
+ (328,179,94,2),
+ (330,180,94,2),
+ (332,181,94,2),
+ (334,182,94,2),
+ (336,183,94,2),
+ (337,184,94,2),
+ (339,185,94,2),
+ (341,186,94,2),
+ (343,187,94,2),
+ (345,188,94,2),
+ (347,189,94,2),
+ (349,190,94,2),
+ (350,191,94,2),
+ (352,192,94,2),
+ (354,193,94,2),
+ (356,194,94,2),
+ (358,195,94,2),
+ (360,196,94,2),
+ (362,197,94,2),
+ (364,198,94,2),
+ (366,199,94,2),
+ (368,200,94,2),
+ (370,201,94,2),
+ (372,202,94,2),
+ (374,203,94,2),
+ (376,204,94,2),
+ (378,205,94,2),
+ (379,206,94,2),
+ (381,207,94,2),
+ (383,208,94,2),
+ (385,209,94,2),
+ (387,210,94,2),
+ (389,211,94,2),
+ (391,212,94,2),
+ (393,213,94,2),
+ (394,214,94,2),
+ (396,215,94,2),
+ (398,216,94,2),
+ (400,217,94,2),
+ (402,218,94,2),
+ (403,219,94,2),
+ (405,220,94,2),
+ (406,221,94,2),
+ (407,222,94,2),
+ (409,223,94,2),
+ (411,224,94,2),
+ (413,225,94,2),
+ (415,226,94,2),
+ (417,227,94,2),
+ (419,228,94,2),
+ (420,229,94,2),
+ (422,230,94,2),
+ (423,231,94,2),
+ (425,232,94,2),
+ (427,233,94,2),
+ (429,234,94,2),
+ (431,235,94,2),
+ (433,236,94,2),
+ (435,237,94,2),
+ (437,238,94,2),
+ (439,239,94,2),
+ (441,240,94,2),
+ (442,241,94,2),
+ (444,242,94,2),
+ (446,243,94,2),
+ (448,244,94,2),
+ (450,245,94,2),
+ (451,246,94,2),
+ (453,247,94,2),
+ (455,248,94,2),
+ (457,249,94,2),
+ (459,250,94,2),
+ (460,251,94,2),
+ (462,252,94,2),
+ (464,253,94,2),
+ (465,254,94,2),
+ (466,255,94,2),
+ (468,256,94,2),
+ (470,257,94,2),
+ (471,258,94,2),
+ (473,259,94,2),
+ (475,260,94,2),
+ (477,261,94,2),
+ (479,262,94,2),
+ (481,263,94,2),
+ (483,264,94,2),
+ (485,265,94,2),
+ (487,266,94,2),
+ (489,267,94,2),
+ (491,268,94,2),
+ (492,269,94,2),
+ (494,270,94,2),
+ (495,271,94,2),
+ (497,272,94,2),
+ (499,273,94,2),
+ (501,274,94,2),
+ (503,275,94,2),
+ (505,276,94,2),
+ (507,277,94,2),
+ (509,278,94,2),
+ (511,279,94,2),
+ (513,280,94,2),
+ (515,281,94,2),
+ (517,282,94,2),
+ (519,283,94,2),
+ (521,284,94,2),
+ (523,285,94,2),
+ (525,286,94,2),
+ (527,287,94,2),
+ (529,288,94,2),
+ (531,289,94,2),
+ (532,290,94,2),
+ (534,291,94,2),
+ (536,292,94,2),
+ (538,293,94,2),
+ (539,294,94,2),
+ (541,295,94,2),
+ (543,296,94,2),
+ (545,297,94,2),
+ (547,298,94,2),
+ (549,299,94,2),
+ (551,300,94,2),
+ (720,396,94,3),
+ (764,419,94,3),
+ (436,237,95,3),
+ (659,362,95,3),
+ (702,385,95,3),
+ (937,566,95,2),
+ (11,6,96,3),
+ (77,41,96,3),
+ (156,85,96,3),
+ (599,326,96,3),
+ (672,369,96,3),
+ (870,499,96,2),
+ (900,529,96,2),
+ (294,160,97,3),
+ (537,292,97,3),
+ (568,309,97,3),
+ (622,340,97,3),
+ (787,431,97,3),
+ (653,359,98,3),
+ (108,58,99,3),
+ (183,99,99,3),
+ (195,105,99,3),
+ (228,123,99,3),
+ (233,126,99,3),
+ (351,191,99,3),
+ (355,193,99,3),
+ (615,336,99,3),
+ (698,383,99,3),
+ (809,443,99,3),
+ (847,476,99,2),
+ (848,477,99,2),
+ (849,478,99,2),
+ (850,479,99,2),
+ (851,480,99,2),
+ (869,498,99,2),
+ (899,528,99,2),
+ (87,46,100,3),
+ (187,101,100,3),
+ (273,148,100,3),
+ (340,185,100,3),
+ (434,236,100,3),
+ (480,262,100,3),
+ (758,416,100,3),
+ (921,550,100,2),
+ (218,118,101,3),
+ (257,139,101,3),
+ (579,315,101,3),
+ (791,433,101,3),
+ (852,481,103,2),
+ (857,486,105,2),
+ (887,516,105,2),
+ (944,573,106,2),
+ (855,484,110,2),
+ (885,514,110,2),
+ (954,583,110,2),
+ (879,508,112,2),
+ (909,538,112,2),
+ (918,547,113,2),
+ (861,490,114,2),
+ (891,520,114,2),
+ (860,489,119,2),
+ (890,519,119,2),
+ (553,301,120,2),
+ (555,302,120,2),
+ (557,303,120,2),
+ (559,304,120,2),
+ (561,305,120,2),
+ (562,306,120,2),
+ (563,307,120,2),
+ (565,308,120,2),
+ (567,309,120,2),
+ (569,310,120,2),
+ (571,311,120,2),
+ (573,312,120,2),
+ (574,313,120,2),
+ (576,314,120,2),
+ (578,315,120,2),
+ (580,316,120,2),
+ (582,317,120,2),
+ (584,318,120,2),
+ (585,319,120,2),
+ (586,320,120,2),
+ (588,321,120,2),
+ (590,322,120,2),
+ (592,323,120,2),
+ (594,324,120,2),
+ (596,325,120,2),
+ (598,326,120,2),
+ (600,327,120,2),
+ (602,328,120,2),
+ (604,329,120,2),
+ (606,330,120,2),
+ (607,331,120,2),
+ (608,332,120,2),
+ (610,333,120,2),
+ (611,334,120,2),
+ (613,335,120,2),
+ (614,336,120,2),
+ (616,337,120,2),
+ (618,338,120,2),
+ (619,339,120,2),
+ (621,340,120,2),
+ (623,341,120,2),
+ (625,342,120,2),
+ (626,343,120,2),
+ (627,344,120,2),
+ (628,345,120,2),
+ (630,346,120,2),
+ (631,347,120,2),
+ (633,348,120,2),
+ (634,349,120,2),
+ (635,350,120,2),
+ (637,351,120,2),
+ (639,352,120,2),
+ (641,353,120,2),
+ (643,354,120,2),
+ (645,355,120,2),
+ (647,356,120,2),
+ (649,357,120,2),
+ (651,358,120,2),
+ (652,359,120,2),
+ (654,360,120,2),
+ (656,361,120,2),
+ (658,362,120,2),
+ (660,363,120,2),
+ (662,364,120,2),
+ (664,365,120,2),
+ (665,366,120,2),
+ (667,367,120,2),
+ (669,368,120,2),
+ (671,369,120,2),
+ (673,370,120,2),
+ (674,371,120,2),
+ (676,372,120,2),
+ (678,373,120,2),
+ (680,374,120,2),
+ (682,375,120,2),
+ (684,376,120,2),
+ (686,377,120,2),
+ (688,378,120,2),
+ (690,379,120,2),
+ (692,380,120,2),
+ (694,381,120,2),
+ (696,382,120,2),
+ (697,383,120,2),
+ (699,384,120,2),
+ (701,385,120,2),
+ (703,386,120,2),
+ (705,387,120,2),
+ (706,388,120,2),
+ (708,389,120,2),
+ (710,390,120,2),
+ (711,391,120,2),
+ (713,392,120,2),
+ (715,393,120,2),
+ (716,394,120,2),
+ (717,395,120,2),
+ (719,396,120,2),
+ (721,397,120,2),
+ (723,398,120,2),
+ (725,399,120,2),
+ (727,400,120,2),
+ (728,401,120,2),
+ (730,402,120,2),
+ (732,403,120,2),
+ (734,404,120,2),
+ (736,405,120,2),
+ (738,406,120,2),
+ (740,407,120,2),
+ (742,408,120,2),
+ (744,409,120,2),
+ (746,410,120,2),
+ (748,411,120,2),
+ (750,412,120,2),
+ (752,413,120,2),
+ (754,414,120,2),
+ (755,415,120,2),
+ (757,416,120,2),
+ (759,417,120,2),
+ (761,418,120,2),
+ (763,419,120,2),
+ (765,420,120,2),
+ (767,421,120,2),
+ (769,422,120,2),
+ (771,423,120,2),
+ (773,424,120,2),
+ (774,425,120,2),
+ (776,426,120,2),
+ (778,427,120,2),
+ (780,428,120,2),
+ (782,429,120,2),
+ (784,430,120,2),
+ (786,431,120,2),
+ (788,432,120,2),
+ (790,433,120,2),
+ (792,434,120,2),
+ (794,435,120,2),
+ (796,436,120,2),
+ (798,437,120,2),
+ (800,438,120,2),
+ (801,439,120,2),
+ (802,440,120,2),
+ (804,441,120,2),
+ (806,442,120,2),
+ (808,443,120,2),
+ (810,444,120,2),
+ (812,445,120,2),
+ (814,446,120,2),
+ (815,447,120,2),
+ (817,448,120,2),
+ (819,449,120,2),
+ (821,450,120,2),
+ (920,549,120,2),
+ (916,545,124,2),
+ (917,546,127,2),
+ (931,560,129,2),
+ (958,587,130,2),
+ (950,579,132,2),
+ (933,562,139,2),
+ (862,491,146,2),
+ (892,521,146,2),
+ (1,1,147,2),
+ (2,2,147,2),
+ (4,3,147,2),
+ (6,4,147,2),
+ (8,5,147,2),
+ (10,6,147,2),
+ (12,7,147,2),
+ (14,8,147,2),
+ (16,9,147,2),
+ (18,10,147,2),
+ (20,11,147,2),
+ (22,12,147,2),
+ (24,13,147,2),
+ (26,14,147,2),
+ (27,15,147,2),
+ (29,16,147,2),
+ (30,17,147,2),
+ (32,18,147,2),
+ (34,19,147,2),
+ (36,20,147,2),
+ (38,21,147,2),
+ (40,22,147,2),
+ (42,23,147,2),
+ (44,24,147,2),
+ (45,25,147,2),
+ (47,26,147,2),
+ (49,27,147,2),
+ (51,28,147,2),
+ (53,29,147,2),
+ (55,30,147,2),
+ (57,31,147,2),
+ (59,32,147,2),
+ (61,33,147,2),
+ (63,34,147,2),
+ (65,35,147,2),
+ (67,36,147,2),
+ (69,37,147,2),
+ (71,38,147,2),
+ (73,39,147,2),
+ (75,40,147,2),
+ (76,41,147,2),
+ (78,42,147,2),
+ (80,43,147,2),
+ (82,44,147,2),
+ (84,45,147,2),
+ (86,46,147,2),
+ (88,47,147,2),
+ (89,48,147,2),
+ (90,49,147,2),
+ (92,50,147,2),
+ (93,51,147,2),
+ (95,52,147,2),
+ (97,53,147,2),
+ (99,54,147,2),
+ (101,55,147,2),
+ (103,56,147,2),
+ (105,57,147,2),
+ (107,58,147,2),
+ (109,59,147,2),
+ (111,60,147,2),
+ (112,61,147,2),
+ (114,62,147,2),
+ (116,63,147,2),
+ (118,64,147,2),
+ (120,65,147,2),
+ (121,66,147,2),
+ (123,67,147,2),
+ (125,68,147,2),
+ (126,69,147,2),
+ (128,70,147,2),
+ (130,71,147,2),
+ (131,72,147,2),
+ (133,73,147,2),
+ (134,74,147,2),
+ (136,75,147,2),
+ (138,76,147,2),
+ (140,77,147,2),
+ (142,78,147,2),
+ (144,79,147,2),
+ (146,80,147,2),
+ (148,81,147,2),
+ (150,82,147,2),
+ (151,83,147,2),
+ (153,84,147,2),
+ (155,85,147,2),
+ (157,86,147,2),
+ (159,87,147,2),
+ (161,88,147,2),
+ (163,89,147,2),
+ (165,90,147,2),
+ (167,91,147,2),
+ (169,92,147,2),
+ (171,93,147,2),
+ (173,94,147,2),
+ (175,95,147,2),
+ (177,96,147,2),
+ (178,97,147,2),
+ (180,98,147,2),
+ (182,99,147,2),
+ (184,100,147,2),
+ (186,101,147,2),
+ (188,102,147,2),
+ (190,103,147,2),
+ (192,104,147,2),
+ (194,105,147,2),
+ (196,106,147,2),
+ (198,107,147,2),
+ (200,108,147,2),
+ (201,109,147,2),
+ (203,110,147,2),
+ (205,111,147,2),
+ (206,112,147,2),
+ (207,113,147,2),
+ (209,114,147,2),
+ (211,115,147,2),
+ (213,116,147,2),
+ (215,117,147,2),
+ (217,118,147,2),
+ (219,119,147,2),
+ (221,120,147,2),
+ (223,121,147,2),
+ (225,122,147,2),
+ (227,123,147,2),
+ (229,124,147,2),
+ (231,125,147,2),
+ (232,126,147,2),
+ (234,127,147,2),
+ (236,128,147,2),
+ (238,129,147,2),
+ (240,130,147,2),
+ (242,131,147,2),
+ (244,132,147,2),
+ (246,133,147,2),
+ (248,134,147,2),
+ (249,135,147,2),
+ (251,136,147,2),
+ (253,137,147,2),
+ (255,138,147,2),
+ (256,139,147,2),
+ (258,140,147,2),
+ (259,141,147,2),
+ (261,142,147,2),
+ (263,143,147,2),
+ (264,144,147,2),
+ (266,145,147,2),
+ (268,146,147,2),
+ (270,147,147,2),
+ (272,148,147,2),
+ (274,149,147,2),
+ (275,150,147,2),
+ (926,555,149,2),
+ (925,554,150,2),
+ (875,504,153,2),
+ (905,534,153,2),
+ (863,492,154,2),
+ (893,522,154,2),
+ (924,553,155,2),
+ (874,503,156,2),
+ (904,533,156,2),
+ (914,543,156,2),
+ (919,548,160,2),
+ (963,592,162,2),
+ (859,488,163,2),
+ (889,518,163,2),
+ (960,589,168,2),
+ (864,493,170,2),
+ (894,523,170,2),
+ (951,580,173,2),
+ (934,563,174,2),
+ (947,576,175,2),
+ (858,487,176,2),
+ (888,517,176,2),
+ (946,575,177,2),
+ (867,496,179,2),
+ (897,526,179,2),
+ (928,557,183,2),
+ (880,509,188,2),
+ (910,539,188,2),
+ (866,495,190,2),
+ (896,525,190,2),
+ (959,588,193,2),
+ (941,570,194,2),
+ (876,505,195,2),
+ (906,535,195,2),
+ (952,581,195,2),
+ (929,558,199,2);
 /*!40000 ALTER TABLE `civicrm_activity_contact` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1701,186 +1705,185 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_address` WRITE;
 /*!40000 ALTER TABLE `civicrm_address` DISABLE KEYS */;
 INSERT INTO `civicrm_address` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `street_address`, `street_number`, `street_number_suffix`, `street_number_predirectional`, `street_name`, `street_type`, `street_number_postdirectional`, `street_unit`, `supplemental_address_1`, `supplemental_address_2`, `supplemental_address_3`, `city`, `county_id`, `state_province_id`, `postal_code_suffix`, `postal_code`, `usps_adc`, `country_id`, `geo_code_1`, `geo_code_2`, `manual_geo_code`, `timezone`, `name`, `master_id`) VALUES
- (1,25,1,1,0,'111A Lincoln Pl W',111,'A',NULL,'Lincoln','Pl','W',NULL,NULL,NULL,NULL,'Glen',1,1047,NULL,'25088',NULL,1228,38.382145,-81.19842,0,NULL,NULL,NULL),
- (2,35,1,1,0,'965W Maple Path S',965,'W',NULL,'Maple','Path','S',NULL,NULL,NULL,NULL,'Columbus',1,1042,NULL,'78934',NULL,1228,29.712052,-96.56134,0,NULL,NULL,NULL),
- (3,142,1,1,0,'805O Pine Ln W',805,'O',NULL,'Pine','Ln','W',NULL,NULL,NULL,NULL,'Collingswood',1,1029,NULL,'08108',NULL,1228,39.915263,-75.06401,0,NULL,NULL,NULL),
- (4,5,1,1,0,'173K Northpoint St W',173,'K',NULL,'Northpoint','St','W',NULL,NULL,NULL,NULL,'Valparaiso',1,1013,NULL,'46385',NULL,1228,41.484652,-87.11269,0,NULL,NULL,NULL),
- (5,4,1,1,0,'162H Bay Path W',162,'H',NULL,'Bay','Path','W',NULL,NULL,NULL,NULL,'Mound',1,1022,NULL,'55364',NULL,1228,44.933712,-93.66038,0,NULL,NULL,NULL),
- (6,9,1,1,0,'337O Caulder Path NE',337,'O',NULL,'Caulder','Path','NE',NULL,NULL,NULL,NULL,'Moro',1,1012,NULL,'62067',NULL,1228,38.91973,-90.01241,0,NULL,NULL,NULL),
- (7,123,1,1,0,'11U Cadell Pl W',11,'U',NULL,'Cadell','Pl','W',NULL,NULL,NULL,NULL,'Medford',1,1036,NULL,'97504',NULL,1228,42.334496,-122.83547,0,NULL,NULL,NULL),
- (8,83,1,1,0,'891B States Rd SE',891,'B',NULL,'States','Rd','SE',NULL,NULL,NULL,NULL,'Chappell',1,1016,NULL,'40816',NULL,1228,36.987495,-83.32795,0,NULL,NULL,NULL),
- (9,186,1,1,0,'933Q Cadell Pl SE',933,'Q',NULL,'Cadell','Pl','SE',NULL,NULL,NULL,NULL,'Perris',1,1004,NULL,'92599',NULL,1228,33.752886,-116.055617,0,NULL,NULL,NULL),
- (10,89,1,1,0,'531K El Camino Path SE',531,'K',NULL,'El Camino','Path','SE',NULL,NULL,NULL,NULL,'Bloomingburg',1,1031,NULL,'12721',NULL,1228,41.564426,-74.4265,0,NULL,NULL,NULL),
- (11,194,1,1,0,'101I Jackson Rd SE',101,'I',NULL,'Jackson','Rd','SE',NULL,NULL,NULL,NULL,'Hughesville',1,1019,NULL,'20637',NULL,1228,38.523408,-76.75435,0,NULL,NULL,NULL),
- (12,168,1,1,0,'559U El Camino Pl NW',559,'U',NULL,'El Camino','Pl','NW',NULL,NULL,NULL,NULL,'Youngsville',1,1037,NULL,'16371',NULL,1228,41.860809,-79.31703,0,NULL,NULL,NULL),
- (13,172,1,1,0,'552E States Way S',552,'E',NULL,'States','Way','S',NULL,NULL,NULL,NULL,'Bearden',1,1003,NULL,'71720',NULL,1228,33.733334,-92.64664,0,NULL,NULL,NULL),
- (14,117,1,1,0,'514D Main Ave SE',514,'D',NULL,'Main','Ave','SE',NULL,NULL,NULL,NULL,'Annandale',1,1022,NULL,'55302',NULL,1228,45.246631,-94.11692,0,NULL,NULL,NULL),
- (15,197,1,1,0,'671A Woodbridge Rd W',671,'A',NULL,'Woodbridge','Rd','W',NULL,NULL,NULL,NULL,'South Bend',1,1013,NULL,'46699',NULL,1228,41.596769,-86.292991,0,NULL,NULL,NULL),
- (16,185,1,1,0,'937U Maple Dr SE',937,'U',NULL,'Maple','Dr','SE',NULL,NULL,NULL,NULL,'San Antonio',1,1042,NULL,'78236',NULL,1228,29.389767,-98.61251,0,NULL,NULL,NULL),
- (17,132,1,1,0,'485W States Pl W',485,'W',NULL,'States','Pl','W',NULL,NULL,NULL,NULL,'Pocono Pines',1,1037,NULL,'18350',NULL,1228,41.116737,-75.46037,0,NULL,NULL,NULL),
- (18,94,1,1,0,'121D Woodbridge Rd N',121,'D',NULL,'Woodbridge','Rd','N',NULL,NULL,NULL,NULL,'Saint Louis',1,1024,NULL,'63195',NULL,1228,38.6531,-90.243462,0,NULL,NULL,NULL),
- (19,144,1,1,0,'468J Second Dr NE',468,'J',NULL,'Second','Dr','NE',NULL,NULL,NULL,NULL,'Wichita Falls',1,1042,NULL,'76305',NULL,1228,33.996515,-98.51781,0,NULL,NULL,NULL),
- (20,87,1,1,0,'668P Caulder Ave NE',668,'P',NULL,'Caulder','Ave','NE',NULL,NULL,NULL,NULL,'Lake Linden',1,1021,NULL,'49945',NULL,1228,47.17583,-88.32904,0,NULL,NULL,NULL),
- (21,42,1,1,0,'465R Lincoln Pl E',465,'R',NULL,'Lincoln','Pl','E',NULL,NULL,NULL,NULL,'Leon',1,1035,NULL,'73441',NULL,1228,33.877679,-97.42814,0,NULL,NULL,NULL),
- (22,80,1,1,0,'454W Beech Ln S',454,'W',NULL,'Beech','Ln','S',NULL,NULL,NULL,NULL,'Hawi',1,1010,NULL,'96719',NULL,1228,20.241109,-155.84459,0,NULL,NULL,NULL),
- (23,120,1,1,0,'48O Cadell Path S',48,'O',NULL,'Cadell','Path','S',NULL,NULL,NULL,NULL,'Danville',1,1037,NULL,'17821',NULL,1228,40.985594,-76.63449,0,NULL,NULL,NULL),
- (24,169,1,1,0,'382A Caulder Path N',382,'A',NULL,'Caulder','Path','N',NULL,NULL,NULL,NULL,'Mendota',1,1022,NULL,'55150',NULL,1228,44.884265,-93.16415,0,NULL,NULL,NULL),
- (25,130,1,1,0,'501Z Pine Ave N',501,'Z',NULL,'Pine','Ave','N',NULL,NULL,NULL,NULL,'Barnesville',1,1009,NULL,'30204',NULL,1228,33.05413,-84.14862,0,NULL,NULL,NULL),
- (26,17,1,1,0,'421M Beech Path SE',421,'M',NULL,'Beech','Path','SE',NULL,NULL,NULL,NULL,'Pope A F B',1,1032,NULL,'28308',NULL,1228,35.173377,-79.013799,0,NULL,NULL,NULL),
- (27,38,1,1,0,'138Q Caulder Pl N',138,'Q',NULL,'Caulder','Pl','N',NULL,NULL,NULL,NULL,'Lawen',1,1036,NULL,'97740',NULL,1228,43.019785,-119.069624,0,NULL,NULL,NULL),
- (28,174,1,1,0,'740V Cadell Blvd W',740,'V',NULL,'Cadell','Blvd','W',NULL,NULL,NULL,NULL,'Mineral Springs',1,1032,NULL,'28108',NULL,1228,34.916253,-80.640383,0,NULL,NULL,NULL),
- (29,113,1,1,0,'870B Main Rd NW',870,'B',NULL,'Main','Rd','NW',NULL,NULL,NULL,NULL,'Punta Gorda',1,1008,NULL,'33599',NULL,1228,26.871443,-82.007115,0,NULL,NULL,NULL),
- (30,171,1,1,0,'88Q Caulder Dr E',88,'Q',NULL,'Caulder','Dr','E',NULL,NULL,NULL,NULL,'Sutter',1,1012,NULL,'62373',NULL,1228,40.240004,-91.35197,0,NULL,NULL,NULL),
- (31,97,1,1,0,'723M Beech St SE',723,'M',NULL,'Beech','St','SE',NULL,NULL,NULL,NULL,'Pacific',1,1024,NULL,'63069',NULL,1228,38.482353,-90.73892,0,NULL,NULL,NULL),
- (32,29,1,1,0,'955M Lincoln Pl NE',955,'M',NULL,'Lincoln','Pl','NE',NULL,NULL,NULL,NULL,'Fort Myers',1,1008,NULL,'33913',NULL,1228,26.542097,-81.69984,0,NULL,NULL,NULL),
- (33,138,1,1,0,'396E Maple Way N',396,'E',NULL,'Maple','Way','N',NULL,NULL,NULL,NULL,'Vergennes',1,1012,NULL,'62994',NULL,1228,37.901441,-89.33485,0,NULL,NULL,NULL),
- (34,105,1,1,0,'806O Pine Way E',806,'O',NULL,'Pine','Way','E',NULL,NULL,NULL,NULL,'Vernal',1,1043,NULL,'84078',NULL,1228,40.514262,-109.54223,0,NULL,NULL,NULL),
- (35,192,1,1,0,'566U Dowlen Way NW',566,'U',NULL,'Dowlen','Way','NW',NULL,NULL,NULL,NULL,'Dodson',1,1042,NULL,'79230',NULL,1228,34.698438,-100.06623,0,NULL,NULL,NULL),
- (36,37,1,1,0,'21G Martin Luther King Pl E',21,'G',NULL,'Martin Luther King','Pl','E',NULL,NULL,NULL,NULL,'Haviland',1,1034,NULL,'45851',NULL,1228,41.030911,-84.60213,0,NULL,NULL,NULL),
- (37,165,1,1,0,'530L El Camino Pl NW',530,'L',NULL,'El Camino','Pl','NW',NULL,NULL,NULL,NULL,'Ringgold',1,1045,NULL,'24586',NULL,1228,36.595244,-79.28647,0,NULL,NULL,NULL),
- (38,184,1,1,0,'25P Cadell St W',25,'P',NULL,'Cadell','St','W',NULL,NULL,NULL,NULL,'Holder',1,1008,NULL,'34445',NULL,1228,28.948753,-82.406476,0,NULL,NULL,NULL),
- (39,158,1,1,0,'154C Dowlen Path S',154,'C',NULL,'Dowlen','Path','S',NULL,NULL,NULL,NULL,'Butternut',1,1048,NULL,'54514',NULL,1228,46.024995,-90.44778,0,NULL,NULL,NULL),
- (40,108,1,1,0,'419Q Dowlen Way SW',419,'Q',NULL,'Dowlen','Way','SW',NULL,NULL,NULL,NULL,'Port Washington',1,1048,NULL,'53074',NULL,1228,43.40181,-87.88001,0,NULL,NULL,NULL),
- (41,96,1,1,0,'975E College Path S',975,'E',NULL,'College','Path','S',NULL,NULL,NULL,NULL,'Squirrel',1,1011,NULL,'83447',NULL,1228,44.319199,-111.60171,0,NULL,NULL,NULL),
- (42,188,1,1,0,'377K Caulder Ave NW',377,'K',NULL,'Caulder','Ave','NW',NULL,NULL,NULL,NULL,'Newtown',1,1013,NULL,'47969',NULL,1228,40.205056,-87.15089,0,NULL,NULL,NULL),
- (43,58,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,NULL),
- (44,190,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,NULL),
- (45,155,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,NULL),
- (46,26,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,NULL),
- (47,53,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,NULL),
- (48,156,1,1,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,NULL),
- (49,131,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,NULL),
- (50,10,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,NULL),
- (51,177,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,NULL),
- (52,3,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL),
- (53,191,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,NULL),
- (54,134,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,NULL),
- (55,73,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,NULL),
- (56,88,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,NULL),
- (57,23,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,NULL),
- (58,51,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,NULL),
- (59,43,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,NULL),
- (60,75,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,NULL),
- (61,65,1,1,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,NULL),
- (62,159,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,NULL),
- (63,103,3,1,0,'615V Caulder Pl SW',615,'V',NULL,'Caulder','Pl','SW',NULL,'Community Relations',NULL,NULL,'Maupin',1,1036,NULL,'97037',NULL,1228,45.093643,-121.10814,0,NULL,NULL,NULL),
- (64,187,2,1,0,'615V Caulder Pl SW',615,'V',NULL,'Caulder','Pl','SW',NULL,'Community Relations',NULL,NULL,'Maupin',1,1036,NULL,'97037',NULL,1228,45.093643,-121.10814,0,NULL,NULL,63),
- (65,135,3,1,0,'506H Woodbridge Path E',506,'H',NULL,'Woodbridge','Path','E',NULL,'Editorial Dept',NULL,NULL,'Sacramento',1,1004,NULL,'95813',NULL,1228,38.377411,-121.444429,0,NULL,NULL,NULL),
- (66,115,2,1,0,'506H Woodbridge Path E',506,'H',NULL,'Woodbridge','Path','E',NULL,'Editorial Dept',NULL,NULL,'Sacramento',1,1004,NULL,'95813',NULL,1228,38.377411,-121.444429,0,NULL,NULL,65),
- (67,77,3,1,0,'45P Woodbridge Ln NE',45,'P',NULL,'Woodbridge','Ln','NE',NULL,'Churchgate',NULL,NULL,'Jerome',1,1011,NULL,'83338',NULL,1228,42.710124,-114.46394,0,NULL,NULL,NULL),
- (68,81,2,1,0,'45P Woodbridge Ln NE',45,'P',NULL,'Woodbridge','Ln','NE',NULL,'Churchgate',NULL,NULL,'Jerome',1,1011,NULL,'83338',NULL,1228,42.710124,-114.46394,0,NULL,NULL,67),
- (69,146,3,1,0,'810P Beech Pl SW',810,'P',NULL,'Beech','Pl','SW',NULL,'Receiving',NULL,NULL,'Winslow',1,1012,NULL,'61089',NULL,1228,42.475078,-89.81607,0,NULL,NULL,NULL),
- (70,178,2,1,0,'810P Beech Pl SW',810,'P',NULL,'Beech','Pl','SW',NULL,'Receiving',NULL,NULL,'Winslow',1,1012,NULL,'61089',NULL,1228,42.475078,-89.81607,0,NULL,NULL,69),
- (71,50,3,1,0,'763G College Ave S',763,'G',NULL,'College','Ave','S',NULL,'c/o PO Plus',NULL,NULL,'Herrick',1,1012,NULL,'62431',NULL,1228,39.228594,-88.98873,0,NULL,NULL,NULL),
- (72,22,3,1,0,'630O Main St S',630,'O',NULL,'Main','St','S',NULL,'Urgent',NULL,NULL,'Boston',1,1020,NULL,'02106',NULL,1228,42.354318,-71.073449,0,NULL,NULL,NULL),
- (73,33,2,1,0,'630O Main St S',630,'O',NULL,'Main','St','S',NULL,'Urgent',NULL,NULL,'Boston',1,1020,NULL,'02106',NULL,1228,42.354318,-71.073449,0,NULL,NULL,72),
- (74,59,3,1,0,'389N Northpoint Path NW',389,'N',NULL,'Northpoint','Path','NW',NULL,'Attn: Development',NULL,NULL,'Fresno',1,1004,NULL,'93779',NULL,1228,36.746375,-119.639658,0,NULL,NULL,NULL),
- (75,185,2,0,0,'389N Northpoint Path NW',389,'N',NULL,'Northpoint','Path','NW',NULL,'Attn: Development',NULL,NULL,'Fresno',1,1004,NULL,'93779',NULL,1228,36.746375,-119.639658,0,NULL,NULL,74),
- (76,68,3,1,0,'520Z Pine Pl NW',520,'Z',NULL,'Pine','Pl','NW',NULL,'c/o OPDC',NULL,NULL,'Flintstone',1,1019,NULL,'21530',NULL,1228,39.697548,-78.53893,0,NULL,NULL,NULL),
- (77,85,2,1,0,'520Z Pine Pl NW',520,'Z',NULL,'Pine','Pl','NW',NULL,'c/o OPDC',NULL,NULL,'Flintstone',1,1019,NULL,'21530',NULL,1228,39.697548,-78.53893,0,NULL,NULL,76),
- (78,133,3,1,0,'145A Caulder Ln N',145,'A',NULL,'Caulder','Ln','N',NULL,'Receiving',NULL,NULL,'Chester',1,1028,NULL,'03036',NULL,1228,42.967823,-71.23453,0,NULL,NULL,NULL),
- (79,72,2,1,0,'145A Caulder Ln N',145,'A',NULL,'Caulder','Ln','N',NULL,'Receiving',NULL,NULL,'Chester',1,1028,NULL,'03036',NULL,1228,42.967823,-71.23453,0,NULL,NULL,78),
- (80,52,3,1,0,'686T Lincoln Dr S',686,'T',NULL,'Lincoln','Dr','S',NULL,'c/o PO Plus',NULL,NULL,'Standish',1,1004,NULL,'96128',NULL,1228,40.34863,-120.4065,0,NULL,NULL,NULL),
- (81,109,2,1,0,'686T Lincoln Dr S',686,'T',NULL,'Lincoln','Dr','S',NULL,'c/o PO Plus',NULL,NULL,'Standish',1,1004,NULL,'96128',NULL,1228,40.34863,-120.4065,0,NULL,NULL,80),
- (82,19,3,1,0,'337X Beech Ln NE',337,'X',NULL,'Beech','Ln','NE',NULL,'Mailstop 101',NULL,NULL,'Helenwood',1,1041,NULL,'37755',NULL,1228,36.434757,-84.53288,0,NULL,NULL,NULL),
- (83,129,2,1,0,'337X Beech Ln NE',337,'X',NULL,'Beech','Ln','NE',NULL,'Mailstop 101',NULL,NULL,'Helenwood',1,1041,NULL,'37755',NULL,1228,36.434757,-84.53288,0,NULL,NULL,82),
- (84,161,3,1,0,'617Q Maple Dr SW',617,'Q',NULL,'Maple','Dr','SW',NULL,'Attn: Development',NULL,NULL,'Joppa',1,1000,NULL,'35087',NULL,1228,34.303718,-86.58323,0,NULL,NULL,NULL),
- (85,69,3,1,0,'326N Second Pl W',326,'N',NULL,'Second','Pl','W',NULL,'Community Relations',NULL,NULL,'Hyannis Port',1,1020,NULL,'02647',NULL,1228,41.63275,-70.30435,0,NULL,NULL,NULL),
- (86,4,2,0,0,'326N Second Pl W',326,'N',NULL,'Second','Pl','W',NULL,'Community Relations',NULL,NULL,'Hyannis Port',1,1020,NULL,'02647',NULL,1228,41.63275,-70.30435,0,NULL,NULL,85),
- (87,95,3,1,0,'571U El Camino Pl S',571,'U',NULL,'El Camino','Pl','S',NULL,'Donor Relations',NULL,NULL,'Lagrange',1,1034,NULL,'44050',NULL,1228,41.259352,-82.13542,0,NULL,NULL,NULL),
- (88,64,3,1,0,'475G Dowlen Ln SW',475,'G',NULL,'Dowlen','Ln','SW',NULL,'Donor Relations',NULL,NULL,'Yamhill',1,1036,NULL,'97148',NULL,1228,45.352399,-123.22502,0,NULL,NULL,NULL),
- (89,139,3,1,0,'446M Second Ln E',446,'M',NULL,'Second','Ln','E',NULL,'Donor Relations',NULL,NULL,'Jacksonville',1,1008,NULL,'32237',NULL,1228,30.34494,-81.683107,0,NULL,NULL,NULL),
- (90,197,2,0,0,'446M Second Ln E',446,'M',NULL,'Second','Ln','E',NULL,'Donor Relations',NULL,NULL,'Jacksonville',1,1008,NULL,'32237',NULL,1228,30.34494,-81.683107,0,NULL,NULL,89),
- (91,122,3,1,0,'20O Beech St SW',20,'O',NULL,'Beech','St','SW',NULL,'Attn: Development',NULL,NULL,'Cranfills Gap',1,1042,NULL,'76637',NULL,1228,31.771383,-97.82298,0,NULL,NULL,NULL),
- (92,18,2,1,0,'20O Beech St SW',20,'O',NULL,'Beech','St','SW',NULL,'Attn: Development',NULL,NULL,'Cranfills Gap',1,1042,NULL,'76637',NULL,1228,31.771383,-97.82298,0,NULL,NULL,91),
- (93,7,3,1,0,'21W Caulder Blvd SE',21,'W',NULL,'Caulder','Blvd','SE',NULL,'Urgent',NULL,NULL,'Hanover',1,1019,NULL,'21098',NULL,1228,38.974203,-76.594942,0,NULL,NULL,NULL),
- (94,148,3,1,0,'725M Cadell Rd NW',725,'M',NULL,'Cadell','Rd','NW',NULL,'Payables Dept.',NULL,NULL,'Mapleton',1,1012,NULL,'61547',NULL,1228,40.619174,-89.72628,0,NULL,NULL,NULL),
- (95,96,2,0,0,'725M Cadell Rd NW',725,'M',NULL,'Cadell','Rd','NW',NULL,'Payables Dept.',NULL,NULL,'Mapleton',1,1012,NULL,'61547',NULL,1228,40.619174,-89.72628,0,NULL,NULL,94),
- (96,67,3,1,0,'323S Bay Pl E',323,'S',NULL,'Bay','Pl','E',NULL,'Disbursements',NULL,NULL,'Owensboro',1,1016,NULL,'42302',NULL,1228,37.745491,-87.112823,0,NULL,NULL,NULL),
- (97,76,2,1,0,'323S Bay Pl E',323,'S',NULL,'Bay','Pl','E',NULL,'Disbursements',NULL,NULL,'Owensboro',1,1016,NULL,'42302',NULL,1228,37.745491,-87.112823,0,NULL,NULL,96),
- (98,16,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,43),
- (99,24,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,43),
- (100,189,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,43),
- (101,86,1,1,0,'258S Martin Luther King Pl W',258,'S',NULL,'Martin Luther King','Pl','W',NULL,NULL,NULL,NULL,'Stafford Springs',1,1006,NULL,'06076',NULL,1228,41.979871,-72.27863,0,NULL,NULL,NULL),
- (102,176,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44),
- (103,151,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44),
- (104,20,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44),
- (105,141,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44),
- (106,200,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45),
- (107,125,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45),
- (108,55,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45),
- (109,49,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45),
- (110,179,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,46),
- (111,34,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,46),
- (112,164,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,46),
- (113,150,1,1,0,'107Y Cadell Blvd S',107,'Y',NULL,'Cadell','Blvd','S',NULL,NULL,NULL,NULL,'Oklahoma City',1,1035,NULL,'73131',NULL,1228,35.576357,-97.46924,0,NULL,NULL,NULL),
- (114,193,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,47),
- (115,44,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,47),
- (116,60,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,47),
- (117,183,1,1,0,'885A Second Rd W',885,'A',NULL,'Second','Rd','W',NULL,NULL,NULL,NULL,'Bouse',1,1002,NULL,'85325',NULL,1228,33.946064,-113.9537,0,NULL,NULL,NULL),
- (118,109,1,0,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48),
- (119,76,1,0,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48),
- (120,126,1,1,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48),
- (121,84,1,1,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48),
- (122,149,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49),
- (123,147,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49),
- (124,74,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49),
- (125,46,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49),
- (126,163,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50),
- (127,162,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50),
- (128,66,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50),
- (129,140,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50),
- (130,14,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51),
- (131,170,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51),
- (132,45,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51),
- (133,21,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51),
- (134,199,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52),
- (135,112,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52),
- (136,79,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52),
- (137,124,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52),
- (138,91,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53),
- (139,104,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53),
- (140,92,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53),
- (141,48,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53),
- (142,100,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,54),
- (143,160,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,54),
- (144,57,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,54),
- (145,110,1,1,0,'717I Beech Ave SW',717,'I',NULL,'Beech','Ave','SW',NULL,NULL,NULL,NULL,'Shreveport',1,1017,NULL,'71161',NULL,1228,32.607556,-93.75256,0,NULL,NULL,NULL),
- (146,6,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,55),
- (147,13,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,55),
- (148,62,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,55),
- (149,198,1,1,0,'866W College Rd SE',866,'W',NULL,'College','Rd','SE',NULL,NULL,NULL,NULL,'Senoia',1,1009,NULL,'30276',NULL,1228,33.281102,-84.58017,0,NULL,NULL,NULL),
- (150,137,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56),
- (151,99,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56),
- (152,116,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56),
- (153,15,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56),
- (154,182,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57),
- (155,114,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57),
- (156,32,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57),
- (157,180,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57),
- (158,90,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,58),
- (159,39,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,58),
- (160,41,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,58),
- (161,18,1,0,0,'276T Caulder Blvd W',276,'T',NULL,'Caulder','Blvd','W',NULL,NULL,NULL,NULL,'Yanceyville',1,1032,NULL,'27379',NULL,1228,36.387904,-79.33107,0,NULL,NULL,NULL),
- (162,121,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,59),
- (163,196,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,59),
- (164,195,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,59),
- (165,2,1,1,0,'552C Pine Blvd W',552,'C',NULL,'Pine','Blvd','W',NULL,NULL,NULL,NULL,'Ozawkie',1,1015,NULL,'66070',NULL,1228,39.201834,-95.44963,0,NULL,NULL,NULL),
- (166,12,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60),
- (167,61,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60),
- (168,63,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60),
- (169,154,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60),
- (170,181,1,1,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,61),
- (171,175,1,1,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,61),
- (172,85,1,0,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,61),
- (173,47,1,1,0,'684E Second Ave NE',684,'E',NULL,'Second','Ave','NE',NULL,NULL,NULL,NULL,'Umatilla',1,1008,NULL,'32784',NULL,1228,28.948549,-81.70621,0,NULL,NULL,NULL),
- (174,118,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,62),
- (175,111,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,62),
- (176,152,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,62),
- (177,36,1,1,0,'917Y Bay Dr NW',917,'Y',NULL,'Bay','Dr','NW',NULL,NULL,NULL,NULL,'Woodstock',1,1012,NULL,'60098',NULL,1228,42.316121,-88.43884,0,NULL,NULL,NULL),
- (178,NULL,1,1,1,'14S El Camino Way E',14,'S',NULL,'El Camino','Way',NULL,NULL,NULL,NULL,NULL,'Collinsville',NULL,1006,NULL,'6022',NULL,1228,41.8328,-72.9253,0,NULL,NULL,NULL),
- (179,NULL,1,1,1,'11B Woodbridge Path SW',11,'B',NULL,'Woodbridge','Path',NULL,NULL,NULL,NULL,NULL,'Dayton',NULL,1034,NULL,'45417',NULL,1228,39.7531,-84.2471,0,NULL,NULL,NULL),
- (180,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL);
+ (1,19,1,1,0,'536O Maple Way NE',536,'O',NULL,'Maple','Way','NE',NULL,NULL,NULL,NULL,'San Fidel',1,1030,NULL,'87049',NULL,1228,35.087772,-107.63451,0,NULL,NULL,NULL),
+ (2,153,1,1,0,'969F Caulder Blvd W',969,'F',NULL,'Caulder','Blvd','W',NULL,NULL,NULL,NULL,'Thornton',1,1016,NULL,'41855',NULL,1228,37.156856,-82.76167,0,NULL,NULL,NULL),
+ (3,190,1,1,0,'679O Second Dr W',679,'O',NULL,'Second','Dr','W',NULL,NULL,NULL,NULL,'Wells',1,1044,NULL,'05774',NULL,1228,43.43357,-73.19578,0,NULL,NULL,NULL),
+ (4,65,1,1,0,'763N Caulder Dr NW',763,'N',NULL,'Caulder','Dr','NW',NULL,NULL,NULL,NULL,'Tipton',1,1015,NULL,'67495',NULL,1228,39.339801,-98.470661,0,NULL,NULL,NULL),
+ (5,70,1,1,0,'795D Pine Pl W',795,'D',NULL,'Pine','Pl','W',NULL,NULL,NULL,NULL,'Lexington',1,1026,NULL,'68850',NULL,1228,40.786048,-99.7424,0,NULL,NULL,NULL),
+ (6,120,1,1,0,'713Q Van Ness St NE',713,'Q',NULL,'Van Ness','St','NE',NULL,NULL,NULL,NULL,'Polson',1,1025,NULL,'59860',NULL,1228,47.696131,-114.16094,0,NULL,NULL,NULL),
+ (7,198,1,1,0,'180R Beech Path S',180,'R',NULL,'Beech','Path','S',NULL,NULL,NULL,NULL,'Lohman',1,1024,NULL,'65053',NULL,1228,38.543762,-92.35461,0,NULL,NULL,NULL),
+ (8,110,1,1,0,'762J States Path E',762,'J',NULL,'States','Path','E',NULL,NULL,NULL,NULL,'Provencal',1,1017,NULL,'71468',NULL,1228,31.494144,-93.17508,0,NULL,NULL,NULL),
+ (9,45,1,1,0,'761Y Van Ness Ave NW',761,'Y',NULL,'Van Ness','Ave','NW',NULL,NULL,NULL,NULL,'Tyler',1,1000,NULL,'36785',NULL,1228,32.282192,-86.8216,0,NULL,NULL,NULL),
+ (10,37,1,1,0,'412Q Caulder Path N',412,'Q',NULL,'Caulder','Path','N',NULL,NULL,NULL,NULL,'Downey',1,1004,NULL,'90239',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL),
+ (11,82,1,1,0,'296T Woodbridge St S',296,'T',NULL,'Woodbridge','St','S',NULL,NULL,NULL,NULL,'Washington',1,1050,NULL,'20060',NULL,1228,38.918011,-77.020398,0,NULL,NULL,NULL),
+ (12,102,1,1,0,'24L Bay Way NW',24,'L',NULL,'Bay','Way','NW',NULL,NULL,NULL,NULL,'Harrisburg',1,1037,NULL,'17107',NULL,1228,40.297031,-76.876437,0,NULL,NULL,NULL),
+ (13,192,1,1,0,'792R Woodbridge Path W',792,'R',NULL,'Woodbridge','Path','W',NULL,NULL,NULL,NULL,'Lee Center',1,1012,NULL,'61331',NULL,1228,41.747471,-89.27713,0,NULL,NULL,NULL),
+ (14,10,1,1,0,'980F Dowlen St NW',980,'F',NULL,'Dowlen','St','NW',NULL,NULL,NULL,NULL,'Brackney',1,1037,NULL,'18812',NULL,1228,41.964875,-75.95528,0,NULL,NULL,NULL),
+ (15,23,1,1,0,'937D Bay Dr W',937,'D',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Greenville',1,1039,NULL,'29611',NULL,1228,34.840717,-82.44234,0,NULL,NULL,NULL),
+ (16,94,1,1,0,'817W College Path W',817,'W',NULL,'College','Path','W',NULL,NULL,NULL,NULL,'Paterson',1,1029,NULL,'07502',NULL,1228,40.918948,-74.1939,0,NULL,NULL,NULL),
+ (17,108,1,1,0,'651X Martin Luther King Path NE',651,'X',NULL,'Martin Luther King','Path','NE',NULL,NULL,NULL,NULL,'New Kensington',1,1037,NULL,'15069',NULL,1228,40.360223,-79.439801,0,NULL,NULL,NULL),
+ (18,154,1,1,0,'197P Second Ln NE',197,'P',NULL,'Second','Ln','NE',NULL,NULL,NULL,NULL,'Amarillo',1,1042,NULL,'79186',NULL,1228,35.401475,-101.895089,0,NULL,NULL,NULL),
+ (19,86,1,1,0,'28S Pine Dr N',28,'S',NULL,'Pine','Dr','N',NULL,NULL,NULL,NULL,'Elkhart',1,1012,NULL,'62634',NULL,1228,40.02489,-89.46592,0,NULL,NULL,NULL),
+ (20,95,1,1,0,'426Q States Pl W',426,'Q',NULL,'States','Pl','W',NULL,NULL,NULL,NULL,'Chapman',1,1026,NULL,'68827',NULL,1228,41.031618,-98.17004,0,NULL,NULL,NULL),
+ (21,176,1,1,0,'703H Second Path E',703,'H',NULL,'Second','Path','E',NULL,NULL,NULL,NULL,'Baltimore',1,1019,NULL,'21211',NULL,1228,39.328957,-76.63361,0,NULL,NULL,NULL),
+ (22,74,1,1,0,'60I Dowlen Pl W',60,'I',NULL,'Dowlen','Pl','W',NULL,NULL,NULL,NULL,'Owyhee',1,1027,NULL,'89832',NULL,1228,41.951703,-116.17725,0,NULL,NULL,NULL),
+ (23,191,1,1,0,'654L Caulder Ave S',654,'L',NULL,'Caulder','Ave','S',NULL,NULL,NULL,NULL,'Harveys Lake',1,1037,NULL,'18618',NULL,1228,41.37649,-76.03662,0,NULL,NULL,NULL),
+ (24,117,1,1,0,'314F Jackson Path NE',314,'F',NULL,'Jackson','Path','NE',NULL,NULL,NULL,NULL,'Viola',1,1011,NULL,'83872',NULL,1228,46.861905,-116.96316,0,NULL,NULL,NULL),
+ (25,124,1,1,0,'694L Maple Path NW',694,'L',NULL,'Maple','Path','NW',NULL,NULL,NULL,NULL,'Central Village',1,1006,NULL,'06332',NULL,1228,41.725694,-71.909019,0,NULL,NULL,NULL),
+ (26,160,1,1,0,'511G Main Way SW',511,'G',NULL,'Main','Way','SW',NULL,NULL,NULL,NULL,'Burlington',1,1032,NULL,'27217',NULL,1228,36.132737,-79.41135,0,NULL,NULL,NULL),
+ (27,189,1,1,0,'27A Pine Path N',27,'A',NULL,'Pine','Path','N',NULL,NULL,NULL,NULL,'Boxborough',1,1020,NULL,'01719',NULL,1228,42.486259,-71.51244,0,NULL,NULL,NULL),
+ (28,135,1,1,0,'261E College Blvd SE',261,'E',NULL,'College','Blvd','SE',NULL,NULL,NULL,NULL,'Nazlini',1,1002,NULL,'86540',NULL,1228,35.952827,-109.41297,0,NULL,NULL,NULL),
+ (29,77,1,1,0,'485L Pine St N',485,'L',NULL,'Pine','St','N',NULL,NULL,NULL,NULL,'Lake Odessa',1,1021,NULL,'48849',NULL,1228,42.788151,-85.13565,0,NULL,NULL,NULL),
+ (30,178,1,1,0,'388Y Lincoln Blvd E',388,'Y',NULL,'Lincoln','Blvd','E',NULL,NULL,NULL,NULL,'Miami',1,1008,NULL,'33180',NULL,1228,25.962069,-80.14465,0,NULL,NULL,NULL),
+ (31,131,1,1,0,'376P Northpoint Ln W',376,'P',NULL,'Northpoint','Ln','W',NULL,NULL,NULL,NULL,'San Diego',1,1004,NULL,'92193',NULL,1228,33.016928,-116.846046,0,NULL,NULL,NULL),
+ (32,88,1,1,0,'972B Pine Way N',972,'B',NULL,'Pine','Way','N',NULL,NULL,NULL,NULL,'Salt Lake City',1,1043,NULL,'84132',NULL,1228,40.772743,-111.838541,0,NULL,NULL,NULL),
+ (33,200,1,1,0,'115J Lincoln St NE',115,'J',NULL,'Lincoln','St','NE',NULL,NULL,NULL,NULL,'Murrells Inlet',1,1039,NULL,'29875',NULL,1228,33.55016,-79.053838,0,NULL,NULL,NULL),
+ (34,48,1,1,0,'649Z Martin Luther King Pl NW',649,'Z',NULL,'Martin Luther King','Pl','NW',NULL,NULL,NULL,NULL,'Baileyton',1,1000,NULL,'35019',NULL,1228,34.29254,-86.63505,0,NULL,NULL,NULL),
+ (35,158,1,1,0,'711Q Jackson Path E',711,'Q',NULL,'Jackson','Path','E',NULL,NULL,NULL,NULL,'Mcnary',1,1002,NULL,'85930',NULL,1228,34.04421,-109.73709,0,NULL,NULL,NULL),
+ (36,148,1,1,0,'452M Jackson Way W',452,'M',NULL,'Jackson','Way','W',NULL,NULL,NULL,NULL,'Ivyton',1,1016,NULL,'41444',NULL,1228,37.690636,-83.074592,0,NULL,NULL,NULL),
+ (37,137,1,1,0,'726J Maple Dr S',726,'J',NULL,'Maple','Dr','S',NULL,NULL,NULL,NULL,'Boulder',1,1043,NULL,'84716',NULL,1228,37.94512,-111.09991,0,NULL,NULL,NULL),
+ (38,146,1,1,0,'241I Green Dr SE',241,'I',NULL,'Green','Dr','SE',NULL,NULL,NULL,NULL,'Yoder',1,1049,NULL,'82244',NULL,1228,41.907756,-104.3721,0,NULL,NULL,NULL),
+ (39,122,1,1,0,'270O Main Ln S',270,'O',NULL,'Main','Ln','S',NULL,NULL,NULL,NULL,'Enid',1,1035,NULL,'73705',NULL,1228,36.379072,-97.782595,0,NULL,NULL,NULL),
+ (40,159,1,1,0,'86L El Camino Path S',86,'L',NULL,'El Camino','Path','S',NULL,NULL,NULL,NULL,'Contoocook',1,1028,NULL,'03229',NULL,1228,43.204192,-71.70711,0,NULL,NULL,NULL),
+ (41,100,1,1,0,'324A Woodbridge Blvd N',324,'A',NULL,'Woodbridge','Blvd','N',NULL,NULL,NULL,NULL,'Girardville',1,1037,NULL,'17935',NULL,1228,40.793258,-76.28315,0,NULL,NULL,NULL),
+ (42,40,1,1,0,'659G Dowlen St N',659,'G',NULL,'Dowlen','St','N',NULL,NULL,NULL,NULL,'Mount Vision',1,1031,NULL,'13810',NULL,1228,42.609579,-75.09464,0,NULL,NULL,NULL),
+ (43,188,1,1,0,'127S Lincoln Blvd NE',127,'S',NULL,'Lincoln','Blvd','NE',NULL,NULL,NULL,NULL,'Fort Monmouth',1,1029,NULL,'07703',NULL,1228,40.309121,-74.0486,0,NULL,NULL,NULL),
+ (44,29,1,1,0,'613I Caulder Path N',613,'I',NULL,'Caulder','Path','N',NULL,NULL,NULL,NULL,'Ainsworth',1,1026,NULL,'69210',NULL,1228,42.530382,-99.88206,0,NULL,NULL,NULL),
+ (45,170,1,1,0,'851K Northpoint Rd N',851,'K',NULL,'Northpoint','Rd','N',NULL,NULL,NULL,NULL,'Maple Park',1,1012,NULL,'60151',NULL,1228,41.91842,-88.57626,0,NULL,NULL,NULL),
+ (46,3,1,1,0,'825J Second Dr SW',825,'J',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'South River',1,1029,NULL,'08877',NULL,1228,40.430006,-74.417344,0,NULL,NULL,NULL),
+ (47,111,1,1,0,'982A Woodbridge Rd NE',982,'A',NULL,'Woodbridge','Rd','NE',NULL,NULL,NULL,NULL,'West Palm Beach',1,1008,NULL,'33412',NULL,1228,26.795367,-80.24044,0,NULL,NULL,NULL),
+ (48,92,1,1,0,'348D El Camino Dr W',348,'D',NULL,'El Camino','Dr','W',NULL,NULL,NULL,NULL,'Dexter',1,1009,NULL,'31019',NULL,1228,32.427633,-83.05632,0,NULL,NULL,NULL),
+ (49,61,1,1,0,'432Z Beech Way E',432,'Z',NULL,'Beech','Way','E',NULL,NULL,NULL,NULL,'Cleveland',1,1034,NULL,'44112',NULL,1228,41.534101,-81.57558,0,NULL,NULL,NULL),
+ (50,106,1,1,0,'228G Woodbridge St S',228,'G',NULL,'Woodbridge','St','S',NULL,NULL,NULL,NULL,'Trenton',1,1029,NULL,'08608',NULL,1228,40.219158,-74.76481,0,NULL,NULL,NULL),
+ (51,56,1,1,0,'661A Cadell Pl SW',661,'A',NULL,'Cadell','Pl','SW',NULL,NULL,NULL,NULL,'Sparkill',1,1031,NULL,'10976',NULL,1228,41.028647,-73.92817,0,NULL,NULL,NULL),
+ (52,193,1,1,0,'841L Second Dr SW',841,'L',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'Lone',1,1016,NULL,'41347',NULL,1228,37.54418,-83.600784,0,NULL,NULL,NULL),
+ (53,151,1,1,0,'784W Second Ave NE',784,'W',NULL,'Second','Ave','NE',NULL,NULL,NULL,NULL,'Salt Lake City',1,1043,NULL,'84139',NULL,1228,40.668068,-111.908297,0,NULL,NULL,NULL),
+ (54,97,1,1,0,'324K Jackson St SW',324,'K',NULL,'Jackson','St','SW',NULL,NULL,NULL,NULL,'Mount Vernon',1,1003,NULL,'72111',NULL,1228,35.227869,-92.13033,0,NULL,NULL,NULL),
+ (55,53,1,1,0,'400P Cadell Way NE',400,'P',NULL,'Cadell','Way','NE',NULL,NULL,NULL,NULL,'Fremont',1,1004,NULL,'94537',NULL,1228,37.680181,-121.921498,0,NULL,NULL,NULL),
+ (56,138,1,1,0,'513R Jackson Path SW',513,'R',NULL,'Jackson','Path','SW',NULL,NULL,NULL,NULL,'Proctor',1,1035,NULL,'74457',NULL,1228,36.053046,-94.7768,0,NULL,NULL,NULL),
+ (57,199,1,1,0,'827L Dowlen Way NE',827,'L',NULL,'Dowlen','Way','NE',NULL,NULL,NULL,NULL,'Spring',1,1042,NULL,'77393',NULL,1228,30.329016,-95.463474,0,NULL,NULL,NULL),
+ (58,172,1,1,0,'736K Dowlen St E',736,'K',NULL,'Dowlen','St','E',NULL,NULL,NULL,NULL,'Woodlawn',1,1045,NULL,'24381',NULL,1228,36.714663,-80.82602,0,NULL,NULL,NULL),
+ (59,186,1,1,0,'249O Dowlen Blvd E',249,'O',NULL,'Dowlen','Blvd','E',NULL,NULL,NULL,NULL,'Central Falls',1,1038,NULL,'02863',NULL,1228,41.889863,-71.3926,0,NULL,NULL,NULL),
+ (60,167,1,1,0,'76N Beech Ave NE',76,'N',NULL,'Beech','Ave','NE',NULL,NULL,NULL,NULL,'New Freedom',1,1037,NULL,'17349',NULL,1228,39.753369,-76.68112,0,NULL,NULL,NULL),
+ (61,2,1,1,0,'531G El Camino Blvd S',531,'G',NULL,'El Camino','Blvd','S',NULL,NULL,NULL,NULL,'Seattle',1,1046,NULL,'98140',NULL,1228,47.432251,-121.803388,0,NULL,NULL,NULL),
+ (62,68,1,1,0,'324G Cadell Ln S',324,'G',NULL,'Cadell','Ln','S',NULL,NULL,NULL,NULL,'Newark',1,1007,NULL,'19716',NULL,1228,39.564499,-75.597047,0,NULL,NULL,NULL),
+ (63,25,1,1,0,'300O States Path S',300,'O',NULL,'States','Path','S',NULL,NULL,NULL,NULL,'Olney',1,1012,NULL,'62450',NULL,1228,38.72456,-88.08658,0,NULL,NULL,NULL),
+ (64,39,1,1,0,'753L Northpoint Ln W',753,'L',NULL,'Northpoint','Ln','W',NULL,NULL,NULL,NULL,'Cross Plains',1,1048,NULL,'53528',NULL,1228,43.116408,-89.64371,0,NULL,NULL,NULL),
+ (65,125,1,1,0,'164V Beech Dr S',164,'V',NULL,'Beech','Dr','S',NULL,NULL,NULL,NULL,'Malone',1,1048,NULL,'53049',NULL,1228,43.887372,-88.28802,0,NULL,NULL,NULL),
+ (66,47,3,1,0,'795P Bay Pl SE',795,'P',NULL,'Bay','Pl','SE',NULL,'Cuffe Parade',NULL,NULL,'Tipton',1,1037,NULL,'16684',NULL,1228,40.636691,-78.303614,0,NULL,NULL,NULL),
+ (67,118,3,1,0,'175W Dowlen Ave E',175,'W',NULL,'Dowlen','Ave','E',NULL,'Subscriptions Dept',NULL,NULL,'Mayslick',1,1016,NULL,'41055',NULL,1228,38.52217,-83.85894,0,NULL,NULL,NULL),
+ (68,18,3,1,0,'490T Cadell Ave W',490,'T',NULL,'Cadell','Ave','W',NULL,'Community Relations',NULL,NULL,'Harrisburg',1,1032,NULL,'28075',NULL,1228,35.335294,-80.6633,0,NULL,NULL,NULL),
+ (69,115,3,1,0,'667C Caulder Ln W',667,'C',NULL,'Caulder','Ln','W',NULL,'Attn: Development',NULL,NULL,'Covington',1,1035,NULL,'73730',NULL,1228,36.311257,-97.5597,0,NULL,NULL,NULL),
+ (70,9,3,1,0,'375N Maple Blvd SE',375,'N',NULL,'Maple','Blvd','SE',NULL,'Editorial Dept',NULL,NULL,'Nashville',1,1041,NULL,'37209',NULL,1228,36.151324,-86.8559,0,NULL,NULL,NULL),
+ (71,146,2,0,0,'375N Maple Blvd SE',375,'N',NULL,'Maple','Blvd','SE',NULL,'Editorial Dept',NULL,NULL,'Nashville',1,1041,NULL,'37209',NULL,1228,36.151324,-86.8559,0,NULL,NULL,70),
+ (72,71,3,1,0,'70V States Pl SW',70,'V',NULL,'States','Pl','SW',NULL,'Attn: Accounting',NULL,NULL,'Umpqua',1,1036,NULL,'97486',NULL,1228,43.38382,-123.53031,0,NULL,NULL,NULL),
+ (73,46,3,1,0,'276N Second Rd E',276,'N',NULL,'Second','Rd','E',NULL,'Payables Dept.',NULL,NULL,'Van Buren Point',1,1031,NULL,'14166',NULL,1228,42.4511,-79.415421,0,NULL,NULL,NULL),
+ (74,20,2,1,0,'276N Second Rd E',276,'N',NULL,'Second','Rd','E',NULL,'Payables Dept.',NULL,NULL,'Van Buren Point',1,1031,NULL,'14166',NULL,1228,42.4511,-79.415421,0,NULL,NULL,73),
+ (75,197,3,1,0,'944Z Pine Ave E',944,'Z',NULL,'Pine','Ave','E',NULL,'Payables Dept.',NULL,NULL,'North Platte',1,1026,NULL,'69103',NULL,1228,41.046447,-100.746912,0,NULL,NULL,NULL),
+ (76,41,2,1,0,'944Z Pine Ave E',944,'Z',NULL,'Pine','Ave','E',NULL,'Payables Dept.',NULL,NULL,'North Platte',1,1026,NULL,'69103',NULL,1228,41.046447,-100.746912,0,NULL,NULL,75),
+ (77,15,3,1,0,'185A Northpoint Pl NW',185,'A',NULL,'Northpoint','Pl','NW',NULL,'Subscriptions Dept',NULL,NULL,'Guilderland Center',1,1031,NULL,'12085',NULL,1228,42.694777,-73.905271,0,NULL,NULL,NULL),
+ (78,32,2,1,0,'185A Northpoint Pl NW',185,'A',NULL,'Northpoint','Pl','NW',NULL,'Subscriptions Dept',NULL,NULL,'Guilderland Center',1,1031,NULL,'12085',NULL,1228,42.694777,-73.905271,0,NULL,NULL,77),
+ (79,121,3,1,0,'172M El Camino Ln NW',172,'M',NULL,'El Camino','Ln','NW',NULL,'Subscriptions Dept',NULL,NULL,'Scottsdale',1,1002,NULL,'85266',NULL,1228,33.276539,-112.18717,0,NULL,NULL,NULL),
+ (80,35,3,1,0,'587F Northpoint St S',587,'F',NULL,'Northpoint','St','S',NULL,'Urgent',NULL,NULL,'Key Colony Beach',1,1008,NULL,'33051',NULL,1228,24.72339,-81.020281,0,NULL,NULL,NULL),
+ (81,152,2,1,0,'587F Northpoint St S',587,'F',NULL,'Northpoint','St','S',NULL,'Urgent',NULL,NULL,'Key Colony Beach',1,1008,NULL,'33051',NULL,1228,24.72339,-81.020281,0,NULL,NULL,80),
+ (82,78,3,1,0,'950X Beech Path SE',950,'X',NULL,'Beech','Path','SE',NULL,'Donor Relations',NULL,NULL,'Spring',1,1042,NULL,'77380',NULL,1228,30.143485,-95.46821,0,NULL,NULL,NULL),
+ (83,26,3,1,0,'438J Beech Blvd SE',438,'J',NULL,'Beech','Blvd','SE',NULL,'Editorial Dept',NULL,NULL,'Malad City',1,1011,NULL,'83252',NULL,1228,42.192579,-112.32902,0,NULL,NULL,NULL),
+ (84,145,2,1,0,'438J Beech Blvd SE',438,'J',NULL,'Beech','Blvd','SE',NULL,'Editorial Dept',NULL,NULL,'Malad City',1,1011,NULL,'83252',NULL,1228,42.192579,-112.32902,0,NULL,NULL,83),
+ (85,64,3,1,0,'95O College Way SE',95,'O',NULL,'College','Way','SE',NULL,'Receiving',NULL,NULL,'Odessa',1,1042,NULL,'79769',NULL,1228,31.746572,-102.566993,0,NULL,NULL,NULL),
+ (86,185,2,1,0,'95O College Way SE',95,'O',NULL,'College','Way','SE',NULL,'Receiving',NULL,NULL,'Odessa',1,1042,NULL,'79769',NULL,1228,31.746572,-102.566993,0,NULL,NULL,85),
+ (87,162,3,1,0,'602H College Dr N',602,'H',NULL,'College','Dr','N',NULL,'Community Relations',NULL,NULL,'Harvey',1,1017,NULL,'70058',NULL,1228,29.878578,-90.06903,0,NULL,NULL,NULL),
+ (88,55,2,1,0,'602H College Dr N',602,'H',NULL,'College','Dr','N',NULL,'Community Relations',NULL,NULL,'Harvey',1,1017,NULL,'70058',NULL,1228,29.878578,-90.06903,0,NULL,NULL,87),
+ (89,201,3,1,0,'270F Lincoln Ln NW',270,'F',NULL,'Lincoln','Ln','NW',NULL,'Attn: Development',NULL,NULL,'Gibsland',1,1017,NULL,'71028',NULL,1228,32.518748,-93.05705,0,NULL,NULL,NULL),
+ (90,123,3,1,0,'940H States Blvd E',940,'H',NULL,'States','Blvd','E',NULL,'Subscriptions Dept',NULL,NULL,'Emmonak',1,1001,NULL,'99581',NULL,1228,62.729019,-164.29917,0,NULL,NULL,NULL),
+ (91,51,3,1,0,'167E Lincoln Blvd SE',167,'E',NULL,'Lincoln','Blvd','SE',NULL,'Disbursements',NULL,NULL,'Minneapolis',1,1022,NULL,'55485',NULL,1228,45.015914,-93.47188,0,NULL,NULL,NULL),
+ (92,150,2,1,0,'167E Lincoln Blvd SE',167,'E',NULL,'Lincoln','Blvd','SE',NULL,'Disbursements',NULL,NULL,'Minneapolis',1,1022,NULL,'55485',NULL,1228,45.015914,-93.47188,0,NULL,NULL,91),
+ (93,17,3,1,0,'385S El Camino Pl E',385,'S',NULL,'El Camino','Pl','E',NULL,'Community Relations',NULL,NULL,'Climax Springs',1,1024,NULL,'65324',NULL,1228,38.151604,-92.99055,0,NULL,NULL,NULL),
+ (94,77,2,0,0,'385S El Camino Pl E',385,'S',NULL,'El Camino','Pl','E',NULL,'Community Relations',NULL,NULL,'Climax Springs',1,1024,NULL,'65324',NULL,1228,38.151604,-92.99055,0,NULL,NULL,93),
+ (95,60,3,1,0,'484J Beech Ave N',484,'J',NULL,'Beech','Ave','N',NULL,'c/o OPDC',NULL,NULL,'Central City',1,1026,NULL,'68226',NULL,1228,41.12044,-97.992289,0,NULL,NULL,NULL),
+ (96,109,2,1,0,'484J Beech Ave N',484,'J',NULL,'Beech','Ave','N',NULL,'c/o OPDC',NULL,NULL,'Central City',1,1026,NULL,'68226',NULL,1228,41.12044,-97.992289,0,NULL,NULL,95),
+ (97,13,1,1,0,'825J Second Dr SW',825,'J',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'South River',1,1029,NULL,'08877',NULL,1228,40.430006,-74.417344,0,NULL,NULL,46),
+ (98,156,1,1,0,'825J Second Dr SW',825,'J',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'South River',1,1029,NULL,'08877',NULL,1228,40.430006,-74.417344,0,NULL,NULL,46),
+ (99,144,1,1,0,'825J Second Dr SW',825,'J',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'South River',1,1029,NULL,'08877',NULL,1228,40.430006,-74.417344,0,NULL,NULL,46),
+ (100,170,1,0,0,'825J Second Dr SW',825,'J',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'South River',1,1029,NULL,'08877',NULL,1228,40.430006,-74.417344,0,NULL,NULL,46),
+ (101,75,1,1,0,'982A Woodbridge Rd NE',982,'A',NULL,'Woodbridge','Rd','NE',NULL,NULL,NULL,NULL,'West Palm Beach',1,1008,NULL,'33412',NULL,1228,26.795367,-80.24044,0,NULL,NULL,47),
+ (102,187,1,1,0,'982A Woodbridge Rd NE',982,'A',NULL,'Woodbridge','Rd','NE',NULL,NULL,NULL,NULL,'West Palm Beach',1,1008,NULL,'33412',NULL,1228,26.795367,-80.24044,0,NULL,NULL,47),
+ (103,140,1,1,0,'982A Woodbridge Rd NE',982,'A',NULL,'Woodbridge','Rd','NE',NULL,NULL,NULL,NULL,'West Palm Beach',1,1008,NULL,'33412',NULL,1228,26.795367,-80.24044,0,NULL,NULL,47),
+ (104,34,1,1,0,'982A Woodbridge Rd NE',982,'A',NULL,'Woodbridge','Rd','NE',NULL,NULL,NULL,NULL,'West Palm Beach',1,1008,NULL,'33412',NULL,1228,26.795367,-80.24044,0,NULL,NULL,47),
+ (105,14,1,1,0,'348D El Camino Dr W',348,'D',NULL,'El Camino','Dr','W',NULL,NULL,NULL,NULL,'Dexter',1,1009,NULL,'31019',NULL,1228,32.427633,-83.05632,0,NULL,NULL,48),
+ (106,139,1,1,0,'348D El Camino Dr W',348,'D',NULL,'El Camino','Dr','W',NULL,NULL,NULL,NULL,'Dexter',1,1009,NULL,'31019',NULL,1228,32.427633,-83.05632,0,NULL,NULL,48),
+ (107,98,1,1,0,'348D El Camino Dr W',348,'D',NULL,'El Camino','Dr','W',NULL,NULL,NULL,NULL,'Dexter',1,1009,NULL,'31019',NULL,1228,32.427633,-83.05632,0,NULL,NULL,48),
+ (108,81,1,1,0,'348D El Camino Dr W',348,'D',NULL,'El Camino','Dr','W',NULL,NULL,NULL,NULL,'Dexter',1,1009,NULL,'31019',NULL,1228,32.427633,-83.05632,0,NULL,NULL,48),
+ (109,196,1,1,0,'432Z Beech Way E',432,'Z',NULL,'Beech','Way','E',NULL,NULL,NULL,NULL,'Cleveland',1,1034,NULL,'44112',NULL,1228,41.534101,-81.57558,0,NULL,NULL,49),
+ (110,141,1,1,0,'432Z Beech Way E',432,'Z',NULL,'Beech','Way','E',NULL,NULL,NULL,NULL,'Cleveland',1,1034,NULL,'44112',NULL,1228,41.534101,-81.57558,0,NULL,NULL,49),
+ (111,103,1,1,0,'432Z Beech Way E',432,'Z',NULL,'Beech','Way','E',NULL,NULL,NULL,NULL,'Cleveland',1,1034,NULL,'44112',NULL,1228,41.534101,-81.57558,0,NULL,NULL,49),
+ (112,168,1,1,0,'74C Maple Way N',74,'C',NULL,'Maple','Way','N',NULL,NULL,NULL,NULL,'Pengilly',1,1022,NULL,'55775',NULL,1228,47.30797,-93.20693,0,NULL,NULL,NULL),
+ (113,58,1,1,0,'228G Woodbridge St S',228,'G',NULL,'Woodbridge','St','S',NULL,NULL,NULL,NULL,'Trenton',1,1029,NULL,'08608',NULL,1228,40.219158,-74.76481,0,NULL,NULL,50),
+ (114,185,1,0,0,'228G Woodbridge St S',228,'G',NULL,'Woodbridge','St','S',NULL,NULL,NULL,NULL,'Trenton',1,1029,NULL,'08608',NULL,1228,40.219158,-74.76481,0,NULL,NULL,50),
+ (115,127,1,1,0,'228G Woodbridge St S',228,'G',NULL,'Woodbridge','St','S',NULL,NULL,NULL,NULL,'Trenton',1,1029,NULL,'08608',NULL,1228,40.219158,-74.76481,0,NULL,NULL,50),
+ (116,6,1,1,0,'228G Woodbridge St S',228,'G',NULL,'Woodbridge','St','S',NULL,NULL,NULL,NULL,'Trenton',1,1029,NULL,'08608',NULL,1228,40.219158,-74.76481,0,NULL,NULL,50),
+ (117,145,1,0,0,'661A Cadell Pl SW',661,'A',NULL,'Cadell','Pl','SW',NULL,NULL,NULL,NULL,'Sparkill',1,1031,NULL,'10976',NULL,1228,41.028647,-73.92817,0,NULL,NULL,51),
+ (118,171,1,1,0,'661A Cadell Pl SW',661,'A',NULL,'Cadell','Pl','SW',NULL,NULL,NULL,NULL,'Sparkill',1,1031,NULL,'10976',NULL,1228,41.028647,-73.92817,0,NULL,NULL,51),
+ (119,49,1,1,0,'661A Cadell Pl SW',661,'A',NULL,'Cadell','Pl','SW',NULL,NULL,NULL,NULL,'Sparkill',1,1031,NULL,'10976',NULL,1228,41.028647,-73.92817,0,NULL,NULL,51),
+ (120,132,1,1,0,'155C Main Dr NE',155,'C',NULL,'Main','Dr','NE',NULL,NULL,NULL,NULL,'Leitchfield',1,1016,NULL,'42754',NULL,1228,37.479797,-86.30731,0,NULL,NULL,NULL),
+ (121,183,1,1,0,'841L Second Dr SW',841,'L',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'Lone',1,1016,NULL,'41347',NULL,1228,37.54418,-83.600784,0,NULL,NULL,52),
+ (122,69,1,1,0,'841L Second Dr SW',841,'L',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'Lone',1,1016,NULL,'41347',NULL,1228,37.54418,-83.600784,0,NULL,NULL,52),
+ (123,166,1,1,0,'841L Second Dr SW',841,'L',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'Lone',1,1016,NULL,'41347',NULL,1228,37.54418,-83.600784,0,NULL,NULL,52),
+ (124,157,1,1,0,'974I Woodbridge Blvd NE',974,'I',NULL,'Woodbridge','Blvd','NE',NULL,NULL,NULL,NULL,'Pauma Valley',1,1004,NULL,'92061',NULL,1228,33.311881,-116.96499,0,NULL,NULL,NULL),
+ (125,22,1,1,0,'784W Second Ave NE',784,'W',NULL,'Second','Ave','NE',NULL,NULL,NULL,NULL,'Salt Lake City',1,1043,NULL,'84139',NULL,1228,40.668068,-111.908297,0,NULL,NULL,53),
+ (126,33,1,1,0,'784W Second Ave NE',784,'W',NULL,'Second','Ave','NE',NULL,NULL,NULL,NULL,'Salt Lake City',1,1043,NULL,'84139',NULL,1228,40.668068,-111.908297,0,NULL,NULL,53),
+ (127,55,1,0,0,'784W Second Ave NE',784,'W',NULL,'Second','Ave','NE',NULL,NULL,NULL,NULL,'Salt Lake City',1,1043,NULL,'84139',NULL,1228,40.668068,-111.908297,0,NULL,NULL,53),
+ (128,195,1,1,0,'676Q Martin Luther King Ave S',676,'Q',NULL,'Martin Luther King','Ave','S',NULL,NULL,NULL,NULL,'Fort Smith',1,1003,NULL,'72908',NULL,1228,35.301623,-94.41283,0,NULL,NULL,NULL),
+ (129,8,1,1,0,'324K Jackson St SW',324,'K',NULL,'Jackson','St','SW',NULL,NULL,NULL,NULL,'Mount Vernon',1,1003,NULL,'72111',NULL,1228,35.227869,-92.13033,0,NULL,NULL,54),
+ (130,54,1,1,0,'324K Jackson St SW',324,'K',NULL,'Jackson','St','SW',NULL,NULL,NULL,NULL,'Mount Vernon',1,1003,NULL,'72111',NULL,1228,35.227869,-92.13033,0,NULL,NULL,54),
+ (131,89,1,1,0,'324K Jackson St SW',324,'K',NULL,'Jackson','St','SW',NULL,NULL,NULL,NULL,'Mount Vernon',1,1003,NULL,'72111',NULL,1228,35.227869,-92.13033,0,NULL,NULL,54),
+ (132,128,1,1,0,'154M Second Blvd NW',154,'M',NULL,'Second','Blvd','NW',NULL,NULL,NULL,NULL,'Hope Valley',1,1038,NULL,'02832',NULL,1228,41.511414,-71.72737,0,NULL,NULL,NULL),
+ (133,7,1,1,0,'400P Cadell Way NE',400,'P',NULL,'Cadell','Way','NE',NULL,NULL,NULL,NULL,'Fremont',1,1004,NULL,'94537',NULL,1228,37.680181,-121.921498,0,NULL,NULL,55),
+ (134,83,1,1,0,'400P Cadell Way NE',400,'P',NULL,'Cadell','Way','NE',NULL,NULL,NULL,NULL,'Fremont',1,1004,NULL,'94537',NULL,1228,37.680181,-121.921498,0,NULL,NULL,55),
+ (135,130,1,1,0,'400P Cadell Way NE',400,'P',NULL,'Cadell','Way','NE',NULL,NULL,NULL,NULL,'Fremont',1,1004,NULL,'94537',NULL,1228,37.680181,-121.921498,0,NULL,NULL,55),
+ (136,62,1,1,0,'400P Cadell Way NE',400,'P',NULL,'Cadell','Way','NE',NULL,NULL,NULL,NULL,'Fremont',1,1004,NULL,'94537',NULL,1228,37.680181,-121.921498,0,NULL,NULL,55),
+ (137,173,1,1,0,'513R Jackson Path SW',513,'R',NULL,'Jackson','Path','SW',NULL,NULL,NULL,NULL,'Proctor',1,1035,NULL,'74457',NULL,1228,36.053046,-94.7768,0,NULL,NULL,56),
+ (138,150,1,0,0,'513R Jackson Path SW',513,'R',NULL,'Jackson','Path','SW',NULL,NULL,NULL,NULL,'Proctor',1,1035,NULL,'74457',NULL,1228,36.053046,-94.7768,0,NULL,NULL,56),
+ (139,50,1,1,0,'513R Jackson Path SW',513,'R',NULL,'Jackson','Path','SW',NULL,NULL,NULL,NULL,'Proctor',1,1035,NULL,'74457',NULL,1228,36.053046,-94.7768,0,NULL,NULL,56),
+ (140,143,1,1,0,'349C Martin Luther King Blvd SE',349,'C',NULL,'Martin Luther King','Blvd','SE',NULL,NULL,NULL,NULL,'Shermans Dale',1,1037,NULL,'17090',NULL,1228,40.332785,-77.18464,0,NULL,NULL,NULL),
+ (141,177,1,1,0,'827L Dowlen Way NE',827,'L',NULL,'Dowlen','Way','NE',NULL,NULL,NULL,NULL,'Spring',1,1042,NULL,'77393',NULL,1228,30.329016,-95.463474,0,NULL,NULL,57),
+ (142,84,1,1,0,'827L Dowlen Way NE',827,'L',NULL,'Dowlen','Way','NE',NULL,NULL,NULL,NULL,'Spring',1,1042,NULL,'77393',NULL,1228,30.329016,-95.463474,0,NULL,NULL,57),
+ (143,119,1,1,0,'827L Dowlen Way NE',827,'L',NULL,'Dowlen','Way','NE',NULL,NULL,NULL,NULL,'Spring',1,1042,NULL,'77393',NULL,1228,30.329016,-95.463474,0,NULL,NULL,57),
+ (144,180,1,1,0,'909M Dowlen Ave E',909,'M',NULL,'Dowlen','Ave','E',NULL,NULL,NULL,NULL,'Tryon',1,1032,NULL,'28782',NULL,1228,35.221428,-82.21712,0,NULL,NULL,NULL),
+ (145,194,1,1,0,'736K Dowlen St E',736,'K',NULL,'Dowlen','St','E',NULL,NULL,NULL,NULL,'Woodlawn',1,1045,NULL,'24381',NULL,1228,36.714663,-80.82602,0,NULL,NULL,58),
+ (146,59,1,1,0,'736K Dowlen St E',736,'K',NULL,'Dowlen','St','E',NULL,NULL,NULL,NULL,'Woodlawn',1,1045,NULL,'24381',NULL,1228,36.714663,-80.82602,0,NULL,NULL,58),
+ (147,27,1,1,0,'736K Dowlen St E',736,'K',NULL,'Dowlen','St','E',NULL,NULL,NULL,NULL,'Woodlawn',1,1045,NULL,'24381',NULL,1228,36.714663,-80.82602,0,NULL,NULL,58),
+ (148,133,1,1,0,'736K Dowlen St E',736,'K',NULL,'Dowlen','St','E',NULL,NULL,NULL,NULL,'Woodlawn',1,1045,NULL,'24381',NULL,1228,36.714663,-80.82602,0,NULL,NULL,58),
+ (149,32,1,0,0,'249O Dowlen Blvd E',249,'O',NULL,'Dowlen','Blvd','E',NULL,NULL,NULL,NULL,'Central Falls',1,1038,NULL,'02863',NULL,1228,41.889863,-71.3926,0,NULL,NULL,59),
+ (150,52,1,1,0,'249O Dowlen Blvd E',249,'O',NULL,'Dowlen','Blvd','E',NULL,NULL,NULL,NULL,'Central Falls',1,1038,NULL,'02863',NULL,1228,41.889863,-71.3926,0,NULL,NULL,59),
+ (151,31,1,1,0,'249O Dowlen Blvd E',249,'O',NULL,'Dowlen','Blvd','E',NULL,NULL,NULL,NULL,'Central Falls',1,1038,NULL,'02863',NULL,1228,41.889863,-71.3926,0,NULL,NULL,59),
+ (152,91,1,1,0,'249O Dowlen Blvd E',249,'O',NULL,'Dowlen','Blvd','E',NULL,NULL,NULL,NULL,'Central Falls',1,1038,NULL,'02863',NULL,1228,41.889863,-71.3926,0,NULL,NULL,59),
+ (153,155,1,1,0,'76N Beech Ave NE',76,'N',NULL,'Beech','Ave','NE',NULL,NULL,NULL,NULL,'New Freedom',1,1037,NULL,'17349',NULL,1228,39.753369,-76.68112,0,NULL,NULL,60),
+ (154,11,1,1,0,'76N Beech Ave NE',76,'N',NULL,'Beech','Ave','NE',NULL,NULL,NULL,NULL,'New Freedom',1,1037,NULL,'17349',NULL,1228,39.753369,-76.68112,0,NULL,NULL,60),
+ (155,24,1,1,0,'76N Beech Ave NE',76,'N',NULL,'Beech','Ave','NE',NULL,NULL,NULL,NULL,'New Freedom',1,1037,NULL,'17349',NULL,1228,39.753369,-76.68112,0,NULL,NULL,60),
+ (156,80,1,1,0,'76N Beech Ave NE',76,'N',NULL,'Beech','Ave','NE',NULL,NULL,NULL,NULL,'New Freedom',1,1037,NULL,'17349',NULL,1228,39.753369,-76.68112,0,NULL,NULL,60),
+ (157,73,1,1,0,'531G El Camino Blvd S',531,'G',NULL,'El Camino','Blvd','S',NULL,NULL,NULL,NULL,'Seattle',1,1046,NULL,'98140',NULL,1228,47.432251,-121.803388,0,NULL,NULL,61),
+ (158,109,1,0,0,'531G El Camino Blvd S',531,'G',NULL,'El Camino','Blvd','S',NULL,NULL,NULL,NULL,'Seattle',1,1046,NULL,'98140',NULL,1228,47.432251,-121.803388,0,NULL,NULL,61),
+ (159,163,1,1,0,'531G El Camino Blvd S',531,'G',NULL,'El Camino','Blvd','S',NULL,NULL,NULL,NULL,'Seattle',1,1046,NULL,'98140',NULL,1228,47.432251,-121.803388,0,NULL,NULL,61),
+ (160,93,1,1,0,'531G El Camino Blvd S',531,'G',NULL,'El Camino','Blvd','S',NULL,NULL,NULL,NULL,'Seattle',1,1046,NULL,'98140',NULL,1228,47.432251,-121.803388,0,NULL,NULL,61),
+ (161,134,1,1,0,'324G Cadell Ln S',324,'G',NULL,'Cadell','Ln','S',NULL,NULL,NULL,NULL,'Newark',1,1007,NULL,'19716',NULL,1228,39.564499,-75.597047,0,NULL,NULL,62),
+ (162,4,1,1,0,'324G Cadell Ln S',324,'G',NULL,'Cadell','Ln','S',NULL,NULL,NULL,NULL,'Newark',1,1007,NULL,'19716',NULL,1228,39.564499,-75.597047,0,NULL,NULL,62),
+ (163,169,1,1,0,'324G Cadell Ln S',324,'G',NULL,'Cadell','Ln','S',NULL,NULL,NULL,NULL,'Newark',1,1007,NULL,'19716',NULL,1228,39.564499,-75.597047,0,NULL,NULL,62),
+ (164,5,1,1,0,'812S Jackson Path E',812,'S',NULL,'Jackson','Path','E',NULL,NULL,NULL,NULL,'Summertown',1,1009,NULL,'30466',NULL,1228,32.566594,-82.324475,0,NULL,NULL,NULL),
+ (165,90,1,1,0,'300O States Path S',300,'O',NULL,'States','Path','S',NULL,NULL,NULL,NULL,'Olney',1,1012,NULL,'62450',NULL,1228,38.72456,-88.08658,0,NULL,NULL,63),
+ (166,20,1,0,0,'300O States Path S',300,'O',NULL,'States','Path','S',NULL,NULL,NULL,NULL,'Olney',1,1012,NULL,'62450',NULL,1228,38.72456,-88.08658,0,NULL,NULL,63),
+ (167,104,1,1,0,'300O States Path S',300,'O',NULL,'States','Path','S',NULL,NULL,NULL,NULL,'Olney',1,1012,NULL,'62450',NULL,1228,38.72456,-88.08658,0,NULL,NULL,63),
+ (168,42,1,1,0,'866V College Rd SE',866,'V',NULL,'College','Rd','SE',NULL,NULL,NULL,NULL,'Lancaster',1,1034,NULL,'43130',NULL,1228,39.712887,-82.61216,0,NULL,NULL,NULL),
+ (169,184,1,1,0,'753L Northpoint Ln W',753,'L',NULL,'Northpoint','Ln','W',NULL,NULL,NULL,NULL,'Cross Plains',1,1048,NULL,'53528',NULL,1228,43.116408,-89.64371,0,NULL,NULL,64),
+ (170,152,1,0,0,'753L Northpoint Ln W',753,'L',NULL,'Northpoint','Ln','W',NULL,NULL,NULL,NULL,'Cross Plains',1,1048,NULL,'53528',NULL,1228,43.116408,-89.64371,0,NULL,NULL,64),
+ (171,129,1,1,0,'753L Northpoint Ln W',753,'L',NULL,'Northpoint','Ln','W',NULL,NULL,NULL,NULL,'Cross Plains',1,1048,NULL,'53528',NULL,1228,43.116408,-89.64371,0,NULL,NULL,64),
+ (172,28,1,1,0,'905E Main Pl NW',905,'E',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Trevett',1,1018,NULL,'04571',NULL,1228,43.88261,-69.680144,0,NULL,NULL,NULL),
+ (173,174,1,1,0,'164V Beech Dr S',164,'V',NULL,'Beech','Dr','S',NULL,NULL,NULL,NULL,'Malone',1,1048,NULL,'53049',NULL,1228,43.887372,-88.28802,0,NULL,NULL,65),
+ (174,181,1,1,0,'164V Beech Dr S',164,'V',NULL,'Beech','Dr','S',NULL,NULL,NULL,NULL,'Malone',1,1048,NULL,'53049',NULL,1228,43.887372,-88.28802,0,NULL,NULL,65),
+ (175,87,1,1,0,'164V Beech Dr S',164,'V',NULL,'Beech','Dr','S',NULL,NULL,NULL,NULL,'Malone',1,1048,NULL,'53049',NULL,1228,43.887372,-88.28802,0,NULL,NULL,65),
+ (176,165,1,1,0,'164V Beech Dr S',164,'V',NULL,'Beech','Dr','S',NULL,NULL,NULL,NULL,'Malone',1,1048,NULL,'53049',NULL,1228,43.887372,-88.28802,0,NULL,NULL,65),
+ (177,NULL,1,1,1,'14S El Camino Way E',14,'S',NULL,'El Camino','Way',NULL,NULL,NULL,NULL,NULL,'Collinsville',NULL,1006,NULL,'6022',NULL,1228,41.8328,-72.9253,0,NULL,NULL,NULL),
+ (178,NULL,1,1,1,'11B Woodbridge Path SW',11,'B',NULL,'Woodbridge','Path',NULL,NULL,NULL,NULL,NULL,'Dayton',NULL,1034,NULL,'45417',NULL,1228,39.7531,-84.2471,0,NULL,NULL,NULL),
+ (179,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_address` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1990,208 +1993,208 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_contact` WRITE;
 /*!40000 ALTER TABLE `civicrm_contact` DISABLE KEYS */;
 INSERT INTO `civicrm_contact` (`id`, `contact_type`, `external_identifier`, `display_name`, `organization_name`, `contact_sub_type`, `first_name`, `middle_name`, `last_name`, `do_not_email`, `do_not_phone`, `do_not_mail`, `do_not_sms`, `do_not_trade`, `is_opt_out`, `legal_identifier`, `sort_name`, `nick_name`, `legal_name`, `image_URL`, `preferred_communication_method`, `preferred_language`, `hash`, `api_key`, `source`, `prefix_id`, `suffix_id`, `formal_title`, `communication_style_id`, `email_greeting_id`, `email_greeting_custom`, `email_greeting_display`, `postal_greeting_id`, `postal_greeting_custom`, `postal_greeting_display`, `addressee_id`, `addressee_custom`, `addressee_display`, `job_title`, `gender_id`, `birth_date`, `is_deceased`, `deceased_date`, `household_name`, `primary_contact_id`, `sic_code`, `user_unique_id`, `employer_id`, `is_deleted`, `created_date`, `modified_date`, `preferred_mail_format`) VALUES
- (1,'Organization',NULL,'Default Organization','Default Organization',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Default Organization',NULL,'Default Organization',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'2023-10-19 21:22:28','Both'),
- (2,'Individual',NULL,'Mr. Elbert Terrell II',NULL,NULL,'Elbert','','Terrell',0,0,0,0,1,0,NULL,'Terrell, Elbert',NULL,NULL,NULL,NULL,NULL,'1862258278',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Mr. Elbert Terrell II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (3,'Household',NULL,'Müller family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Müller family',NULL,NULL,NULL,NULL,NULL,'1144797465',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Müller family',5,NULL,'Dear Müller family',2,NULL,'Müller family',NULL,NULL,NULL,0,NULL,'Müller family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (4,'Individual',NULL,'Mrs. Damaris Smith','Global Sports Center',NULL,'Damaris','A','Smith',0,0,0,0,0,0,NULL,'Smith, Damaris',NULL,NULL,NULL,'1',NULL,'3693080437',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Mrs. Damaris Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,69,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (5,'Individual',NULL,'jacobs.esta@testmail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jacobs.esta@testmail.co.nz',NULL,NULL,NULL,'4',NULL,'325908741',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear jacobs.esta@testmail.co.nz',1,NULL,'Dear jacobs.esta@testmail.co.nz',1,NULL,'jacobs.esta@testmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (6,'Individual',NULL,'Magan Reynolds',NULL,NULL,'Magan','','Reynolds',0,0,0,0,1,0,NULL,'Reynolds, Magan',NULL,NULL,NULL,'1',NULL,'2569744381',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Reynolds',NULL,1,'1968-09-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (7,'Organization',NULL,'Hanover Education School','Hanover Education School',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Hanover Education School',NULL,NULL,NULL,NULL,NULL,'3329437880',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Hanover Education School',NULL,NULL,NULL,0,NULL,NULL,15,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (8,'Individual',NULL,'Ms. Laree Blackwell',NULL,NULL,'Laree','T','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Laree',NULL,NULL,NULL,'4',NULL,'122613497',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Ms. Laree Blackwell',NULL,1,'1987-03-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (9,'Individual',NULL,'brigetter@notmail.co.uk',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'brigetter@notmail.co.uk',NULL,NULL,NULL,'1',NULL,'1346258529',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear brigetter@notmail.co.uk',1,NULL,'Dear brigetter@notmail.co.uk',1,NULL,'brigetter@notmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (10,'Household',NULL,'Terry family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Terry family',NULL,NULL,NULL,NULL,NULL,'558108751',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terry family',5,NULL,'Dear Terry family',2,NULL,'Terry family',NULL,NULL,NULL,0,NULL,'Terry family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (11,'Individual',NULL,'Mr. Carlos Cruz II',NULL,NULL,'Carlos','N','Cruz',0,1,0,0,0,0,NULL,'Cruz, Carlos',NULL,NULL,NULL,'1',NULL,'149105357',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Mr. Carlos Cruz II',NULL,NULL,'1970-02-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (12,'Individual',NULL,'Margaret Reynolds',NULL,NULL,'Margaret','','Reynolds',1,0,0,0,0,0,NULL,'Reynolds, Margaret',NULL,NULL,NULL,NULL,NULL,'1615992834',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Reynolds',NULL,1,'1995-09-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (13,'Individual',NULL,'Sonny Reynolds III',NULL,NULL,'Sonny','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Sonny',NULL,NULL,NULL,NULL,NULL,'2914964394',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Reynolds III',NULL,2,'1999-11-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (14,'Individual',NULL,'Delana Wattson',NULL,NULL,'Delana','','Wattson',1,0,0,0,0,0,NULL,'Wattson, Delana',NULL,NULL,NULL,'1',NULL,'4463545',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Wattson',NULL,1,'1958-04-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (15,'Individual',NULL,'olsenb@testmail.co.pl','Hanover Education School',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'olsenb@testmail.co.pl',NULL,NULL,NULL,'3',NULL,'3294760178',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear olsenb@testmail.co.pl',1,NULL,'Dear olsenb@testmail.co.pl',1,NULL,'olsenb@testmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,7,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (16,'Individual',NULL,'Mrs. Kiara Bachman',NULL,NULL,'Kiara','I','Bachman',0,0,0,0,0,0,NULL,'Bachman, Kiara',NULL,NULL,NULL,'2',NULL,'3047638217',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Mrs. Kiara Bachman',NULL,1,'1998-10-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (17,'Individual',NULL,'Alexia Olsen',NULL,NULL,'Alexia','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Alexia',NULL,NULL,NULL,NULL,NULL,'1565274268',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Olsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (18,'Individual',NULL,'Andrew Díaz Sr.','Cranfills Gap Health Trust',NULL,'Andrew','E','Díaz',1,0,0,0,0,0,NULL,'Díaz, Andrew',NULL,NULL,NULL,NULL,NULL,'2189664098',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Andrew Díaz Sr.',NULL,NULL,'1989-09-08',0,NULL,NULL,NULL,NULL,NULL,122,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (19,'Organization',NULL,'Creative Peace Solutions','Creative Peace Solutions',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Creative Peace Solutions',NULL,NULL,NULL,NULL,NULL,'2853948413',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Peace Solutions',NULL,NULL,NULL,0,NULL,NULL,129,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (20,'Individual',NULL,'Claudio Cruz-Reynolds',NULL,NULL,'Claudio','','Cruz-Reynolds',0,0,0,0,0,0,NULL,'Cruz-Reynolds, Claudio',NULL,NULL,NULL,NULL,NULL,'2191699643',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Cruz-Reynolds',NULL,2,'1987-12-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (21,'Individual',NULL,'Jackson Wattson',NULL,NULL,'Jackson','C','Wattson',0,0,0,0,1,0,NULL,'Wattson, Jackson',NULL,NULL,NULL,NULL,NULL,'1720434610',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Wattson',NULL,2,'1969-10-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (22,'Organization',NULL,'Boston Development Academy','Boston Development Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Boston Development Academy',NULL,NULL,NULL,NULL,NULL,'3712082957',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Boston Development Academy',NULL,NULL,NULL,0,NULL,NULL,33,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (23,'Household',NULL,'Samson-Terry family',NULL,NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Samson-Terry family',NULL,NULL,NULL,'1',NULL,'1196143838',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samson-Terry family',5,NULL,'Dear Samson-Terry family',2,NULL,'Samson-Terry family',NULL,NULL,NULL,0,NULL,'Samson-Terry family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (24,'Individual',NULL,'Sherman Bachman',NULL,NULL,'Sherman','','Bachman',0,1,0,0,0,0,NULL,'Bachman, Sherman',NULL,NULL,NULL,'4',NULL,'2672494279',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Bachman',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (25,'Individual',NULL,'Beula Wagner',NULL,NULL,'Beula','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Beula',NULL,NULL,NULL,NULL,NULL,'109524906',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Wagner',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (26,'Household',NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Prentice family',NULL,NULL,NULL,'2',NULL,'3313623671',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Prentice family',5,NULL,'Dear Prentice family',2,NULL,'Prentice family',NULL,NULL,NULL,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (27,'Individual',NULL,'Mrs. Merrie Robertson',NULL,NULL,'Merrie','A','Robertson',0,0,0,0,0,0,NULL,'Robertson, Merrie',NULL,NULL,NULL,'4',NULL,'2954108447',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Mrs. Merrie Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (28,'Individual',NULL,'Sharyn Nielsen',NULL,NULL,'Sharyn','','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Sharyn',NULL,NULL,NULL,'1',NULL,'3940504410',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn Nielsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (29,'Individual',NULL,'Ms. Beula Cruz',NULL,NULL,'Beula','G','Cruz',1,0,0,0,0,0,NULL,'Cruz, Beula',NULL,NULL,NULL,NULL,NULL,'3515356541',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Ms. Beula Cruz',NULL,1,'1943-06-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (30,'Individual',NULL,'Dr. Josefa Grant',NULL,NULL,'Josefa','R','Grant',0,0,0,0,1,0,NULL,'Grant, Josefa',NULL,NULL,NULL,NULL,NULL,'511786429',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Dr. Josefa Grant',NULL,NULL,'1983-07-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (31,'Individual',NULL,'Dr. Lincoln Yadav Sr.',NULL,NULL,'Lincoln','','Yadav',0,1,0,0,0,0,NULL,'Yadav, Lincoln',NULL,NULL,NULL,NULL,NULL,'3563160263',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Dr. Lincoln Yadav Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (32,'Individual',NULL,'jl.samson-terry93@notmail.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'jl.samson-terry93@notmail.biz',NULL,NULL,NULL,NULL,NULL,'3970115490',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear jl.samson-terry93@notmail.biz',1,NULL,'Dear jl.samson-terry93@notmail.biz',1,NULL,'jl.samson-terry93@notmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (33,'Individual',NULL,'dimitrovb20@infomail.co.uk','Boston Development Academy',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'dimitrovb20@infomail.co.uk',NULL,NULL,NULL,'2',NULL,'3487863784',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear dimitrovb20@infomail.co.uk',1,NULL,'Dear dimitrovb20@infomail.co.uk',1,NULL,'dimitrovb20@infomail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,22,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (34,'Individual',NULL,'Mr. Sonny Prentice II',NULL,NULL,'Sonny','G','Prentice',0,0,0,0,1,0,NULL,'Prentice, Sonny',NULL,NULL,NULL,'1',NULL,'2645636632',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Mr. Sonny Prentice II',NULL,2,'1977-10-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (35,'Individual',NULL,'Omar Müller',NULL,NULL,'Omar','','Müller',1,0,0,0,1,0,NULL,'Müller, Omar',NULL,NULL,NULL,NULL,NULL,'3845396679',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Müller',NULL,2,'1971-04-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (36,'Individual',NULL,'Mr. Lou Yadav',NULL,NULL,'Lou','J','Yadav',0,0,0,0,0,0,NULL,'Yadav, Lou',NULL,NULL,NULL,'5',NULL,'1442954395',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Mr. Lou Yadav',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (37,'Individual',NULL,'Josefa Dimitrov',NULL,NULL,'Josefa','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Josefa',NULL,NULL,NULL,'4',NULL,'1492067390',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa Dimitrov',NULL,1,'1976-03-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (38,'Individual',NULL,'Landon Blackwell',NULL,NULL,'Landon','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Landon',NULL,NULL,NULL,'2',NULL,'1569508638',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Blackwell',NULL,2,'1944-11-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (39,'Individual',NULL,'Ms. Delana Díaz-Łąchowski',NULL,NULL,'Delana','E','Díaz-Łąchowski',1,0,0,0,0,0,NULL,'Díaz-Łąchowski, Delana',NULL,NULL,NULL,NULL,NULL,'1952500554',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Ms. Delana Díaz-Łąchowski',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (40,'Individual',NULL,'Mrs. Megan Parker',NULL,NULL,'Megan','J','Parker',0,0,0,0,0,0,NULL,'Parker, Megan',NULL,NULL,NULL,NULL,NULL,'4204728620',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Mrs. Megan Parker',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (41,'Individual',NULL,'Landon Díaz-Łąchowski Jr.',NULL,NULL,'Landon','V','Díaz-Łąchowski',0,1,0,0,0,0,NULL,'Díaz-Łąchowski, Landon',NULL,NULL,NULL,'2',NULL,'1221970263',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Díaz-Łąchowski Jr.',NULL,NULL,'2011-04-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (42,'Individual',NULL,'Rolando Grant',NULL,NULL,'Rolando','','Grant',1,0,0,0,1,0,NULL,'Grant, Rolando',NULL,NULL,NULL,'2',NULL,'4031135000',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Grant',NULL,2,'1935-02-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (43,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,'1136333121',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell family',5,NULL,'Dear Terrell family',2,NULL,'Terrell family',NULL,NULL,NULL,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (44,'Individual',NULL,'Delana Ivanov',NULL,NULL,'Delana','','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Delana',NULL,NULL,NULL,'3',NULL,'1796516445',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Ivanov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (45,'Individual',NULL,'Esta Wattson',NULL,NULL,'Esta','B','Wattson',0,1,0,0,0,0,NULL,'Wattson, Esta',NULL,NULL,NULL,'2',NULL,'1484476563',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Wattson',NULL,NULL,'2001-08-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (46,'Individual',NULL,'Dr. Miguel Samuels',NULL,NULL,'Miguel','','Samuels',1,0,0,0,0,0,NULL,'Samuels, Miguel',NULL,NULL,NULL,'3',NULL,'1633688376',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Dr. Miguel Samuels',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (47,'Individual',NULL,'Ashley McReynolds Sr.',NULL,NULL,'Ashley','','McReynolds',0,1,0,0,0,0,NULL,'McReynolds, Ashley',NULL,NULL,NULL,NULL,NULL,'68872917',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley McReynolds Sr.',NULL,NULL,'1971-12-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (48,'Individual',NULL,'teddywilson@lol.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'teddywilson@lol.co.in',NULL,NULL,NULL,'2',NULL,'910006395',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear teddywilson@lol.co.in',1,NULL,'Dear teddywilson@lol.co.in',1,NULL,'teddywilson@lol.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (49,'Individual',NULL,'Dr. Carlos Ivanov Jr.',NULL,NULL,'Carlos','E','Ivanov',0,0,0,0,1,0,NULL,'Ivanov, Carlos',NULL,NULL,NULL,'5',NULL,'3509440467',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Dr. Carlos Ivanov Jr.',NULL,2,'1994-08-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (50,'Organization',NULL,'Illinois Food Fund','Illinois Food Fund',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Illinois Food Fund',NULL,NULL,NULL,'3',NULL,'1276770505',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Illinois Food Fund',NULL,NULL,NULL,0,NULL,NULL,74,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (51,'Household',NULL,'Díaz-Łąchowski family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Díaz-Łąchowski family',NULL,NULL,NULL,NULL,NULL,'1022464571',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Díaz-Łąchowski family',5,NULL,'Dear Díaz-Łąchowski family',2,NULL,'Díaz-Łąchowski family',NULL,NULL,NULL,0,NULL,'Díaz-Łąchowski family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (52,'Organization',NULL,'Lincoln Action Academy','Lincoln Action Academy',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Lincoln Action Academy',NULL,NULL,NULL,'4',NULL,'588269897',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Lincoln Action Academy',NULL,NULL,NULL,0,NULL,NULL,109,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (53,'Household',NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,'2450779112',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov family',5,NULL,'Dear Ivanov family',2,NULL,'Ivanov family',NULL,NULL,NULL,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (54,'Individual',NULL,'Dr. Teddy Nielsen',NULL,NULL,'Teddy','','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Teddy',NULL,NULL,NULL,'3',NULL,'1600610365',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Dr. Teddy Nielsen',NULL,2,'1945-06-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (55,'Individual',NULL,'Russell Ivanov Jr.',NULL,NULL,'Russell','P','Ivanov',0,0,0,0,1,0,NULL,'Ivanov, Russell',NULL,NULL,NULL,'5',NULL,'624189081',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Ivanov Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (56,'Individual',NULL,'Merrie Cooper',NULL,NULL,'Merrie','','Cooper',0,0,0,0,1,0,NULL,'Cooper, Merrie',NULL,NULL,NULL,'2',NULL,'340467569',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie Cooper',NULL,1,'1939-05-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (57,'Individual',NULL,'Dr. Maxwell Deforest',NULL,NULL,'Maxwell','','Deforest',0,1,0,0,0,0,NULL,'Deforest, Maxwell',NULL,NULL,NULL,'1',NULL,'1808949889',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Dr. Maxwell Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (58,'Household',NULL,'Bachman family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Bachman family',NULL,NULL,NULL,NULL,NULL,'1714131215',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Bachman family',5,NULL,'Dear Bachman family',2,NULL,'Bachman family',NULL,NULL,NULL,0,NULL,'Bachman family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (59,'Organization',NULL,'Global Sustainability Alliance','Global Sustainability Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Sustainability Alliance',NULL,NULL,NULL,'1',NULL,'842567976',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Sustainability Alliance',NULL,NULL,NULL,0,NULL,NULL,185,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (60,'Individual',NULL,'Dr. Lou Ivanov Jr.',NULL,NULL,'Lou','','Ivanov',0,1,0,0,0,0,NULL,'Ivanov, Lou',NULL,NULL,NULL,'2',NULL,'211844515',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Dr. Lou Ivanov Jr.',NULL,2,'1981-06-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (61,'Individual',NULL,'reynoldsa@spamalot.co.uk',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'reynoldsa@spamalot.co.uk',NULL,NULL,NULL,'1',NULL,'1093174039',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear reynoldsa@spamalot.co.uk',1,NULL,'Dear reynoldsa@spamalot.co.uk',1,NULL,'reynoldsa@spamalot.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (62,'Individual',NULL,'Alexia Reynolds',NULL,NULL,'Alexia','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Alexia',NULL,NULL,NULL,'5',NULL,'1389353396',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Reynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (63,'Individual',NULL,'Sonny Reynolds',NULL,NULL,'Sonny','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Sonny',NULL,NULL,NULL,NULL,NULL,'2914964394',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Reynolds',NULL,2,'2011-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (64,'Organization',NULL,'Dowlen Software Alliance','Dowlen Software Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Dowlen Software Alliance',NULL,NULL,NULL,NULL,NULL,'1260268914',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Dowlen Software Alliance',NULL,NULL,NULL,0,NULL,NULL,184,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (65,'Household',NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'McReynolds family',NULL,NULL,NULL,'4',NULL,'3032680972',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear McReynolds family',5,NULL,'Dear McReynolds family',2,NULL,'McReynolds family',NULL,NULL,NULL,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (66,'Individual',NULL,'Barry Terry',NULL,NULL,'Barry','N','Terry',0,1,0,0,0,0,NULL,'Terry, Barry',NULL,NULL,NULL,NULL,NULL,'929041000',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Terry',NULL,NULL,'2007-11-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (67,'Organization',NULL,'Bay Empowerment School','Bay Empowerment School',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Bay Empowerment School',NULL,NULL,NULL,NULL,NULL,'2478135666',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Bay Empowerment School',NULL,NULL,NULL,0,NULL,NULL,76,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (68,'Organization',NULL,'United Agriculture Academy','United Agriculture Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'United Agriculture Academy',NULL,NULL,NULL,'2',NULL,'2961780957',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Agriculture Academy',NULL,NULL,NULL,0,NULL,NULL,85,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (69,'Organization',NULL,'Global Sports Center','Global Sports Center',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Sports Center',NULL,NULL,NULL,NULL,NULL,'2901322748',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Sports Center',NULL,NULL,NULL,0,NULL,NULL,4,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (70,'Individual',NULL,'Irvin Díaz Jr.',NULL,NULL,'Irvin','','Díaz',0,0,0,0,0,0,NULL,'Díaz, Irvin',NULL,NULL,NULL,NULL,NULL,'2415400429',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Díaz Jr.',NULL,2,'1952-04-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (71,'Individual',NULL,'Ms. Bernadette Müller',NULL,NULL,'Bernadette','F','Müller',0,0,0,0,1,0,NULL,'Müller, Bernadette',NULL,NULL,NULL,NULL,NULL,'2804032609',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Ms. Bernadette Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (72,'Individual',NULL,'Mr. Miguel Wagner','Progressive Culture Partnership',NULL,'Miguel','D','Wagner',0,0,0,0,0,0,NULL,'Wagner, Miguel',NULL,NULL,NULL,NULL,NULL,'422482436',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Wagner',NULL,2,'1950-08-08',0,NULL,NULL,NULL,NULL,NULL,133,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (73,'Household',NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Reynolds family',NULL,NULL,NULL,'1',NULL,'4119726021',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Reynolds family',5,NULL,'Dear Reynolds family',2,NULL,'Reynolds family',NULL,NULL,NULL,0,NULL,'Reynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (74,'Individual',NULL,'Valene Samuels','Illinois Food Fund',NULL,'Valene','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Valene',NULL,NULL,NULL,NULL,NULL,'1762584511',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Samuels',NULL,1,'2020-03-07',0,NULL,NULL,NULL,NULL,NULL,50,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (75,'Household',NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Reynolds family',NULL,NULL,NULL,'1',NULL,'4119726021',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Reynolds family',5,NULL,'Dear Reynolds family',2,NULL,'Reynolds family',NULL,NULL,NULL,0,NULL,'Reynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (76,'Individual',NULL,'Mr. Miguel Prentice II','Bay Empowerment School',NULL,'Miguel','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Miguel',NULL,NULL,NULL,NULL,NULL,'3093767059',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Prentice II',NULL,NULL,'1978-08-28',0,NULL,NULL,NULL,NULL,NULL,67,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (77,'Organization',NULL,'Global Wellness Center','Global Wellness Center',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Wellness Center',NULL,NULL,NULL,'4',NULL,'2771241701',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Wellness Center',NULL,NULL,NULL,0,NULL,NULL,81,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (78,'Individual',NULL,'Shad Müller',NULL,NULL,'Shad','','Müller',0,0,0,0,0,0,NULL,'Müller, Shad',NULL,NULL,NULL,NULL,NULL,'233080666',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Müller',NULL,2,NULL,1,'2022-12-10',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (79,'Individual',NULL,'Irvin Müller',NULL,NULL,'Irvin','N','Müller',0,0,0,0,1,0,NULL,'Müller, Irvin',NULL,NULL,NULL,NULL,NULL,'1250430175',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Müller',NULL,2,'2016-02-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (80,'Individual',NULL,'Dr. Kathlyn Dimitrov',NULL,NULL,'Kathlyn','','Dimitrov',1,0,0,0,0,0,NULL,'Dimitrov, Kathlyn',NULL,NULL,NULL,NULL,NULL,'3934921435',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Dr. Kathlyn Dimitrov',NULL,NULL,'1970-02-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (81,'Individual',NULL,'Dr. Elina Smith','Global Wellness Center',NULL,'Elina','D','Smith',0,0,0,0,1,0,NULL,'Smith, Elina',NULL,NULL,NULL,'3',NULL,'1079819733',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Dr. Elina Smith',NULL,1,'1942-10-13',0,NULL,NULL,NULL,NULL,NULL,77,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (82,'Individual',NULL,'Mrs. Margaret Cruz',NULL,NULL,'Margaret','M','Cruz',0,0,0,0,1,0,NULL,'Cruz, Margaret',NULL,NULL,NULL,'2',NULL,'680750633',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Mrs. Margaret Cruz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (83,'Individual',NULL,'Toby Barkley',NULL,NULL,'Toby','F','Barkley',1,0,0,0,1,0,NULL,'Barkley, Toby',NULL,NULL,NULL,'3',NULL,'2112758075',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Barkley',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (84,'Individual',NULL,'Mr. Craig Prentice',NULL,NULL,'Craig','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Craig',NULL,NULL,NULL,'1',NULL,'3778069057',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Mr. Craig Prentice',NULL,2,'1964-12-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (85,'Individual',NULL,'Dr. Justina McReynolds','United Agriculture Academy',NULL,'Justina','','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Justina',NULL,NULL,NULL,'5',NULL,'1146130692',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Dr. Justina McReynolds',NULL,1,'1989-07-29',0,NULL,NULL,NULL,NULL,NULL,68,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (86,'Individual',NULL,'Eleonor Parker',NULL,NULL,'Eleonor','K','Parker',0,0,0,0,0,0,NULL,'Parker, Eleonor',NULL,NULL,NULL,NULL,NULL,'3234463672',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Parker',NULL,1,'1995-09-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (87,'Individual',NULL,'reynolds.q.laree29@fishmail.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'reynolds.q.laree29@fishmail.net',NULL,NULL,NULL,NULL,NULL,'2789926097',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear reynolds.q.laree29@fishmail.net',1,NULL,'Dear reynolds.q.laree29@fishmail.net',1,NULL,'reynolds.q.laree29@fishmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (88,'Household',NULL,'Olsen family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Olsen family',NULL,NULL,NULL,NULL,NULL,'1990073228',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Olsen family',5,NULL,'Dear Olsen family',2,NULL,'Olsen family',NULL,NULL,NULL,0,NULL,'Olsen family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (89,'Individual',NULL,'Kiara Nielsen',NULL,NULL,'Kiara','','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Kiara',NULL,NULL,NULL,'2',NULL,'4265488572',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Nielsen',NULL,1,'1968-02-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (90,'Individual',NULL,'Junko Łąchowski',NULL,NULL,'Junko','E','Łąchowski',0,0,0,0,0,0,NULL,'Łąchowski, Junko',NULL,NULL,NULL,'5',NULL,'213828340',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Junko Łąchowski',NULL,NULL,'1989-02-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (91,'Individual',NULL,'jameson.q.rebekah@fishmail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jameson.q.rebekah@fishmail.co.nz',NULL,NULL,NULL,NULL,NULL,'3825255427',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear jameson.q.rebekah@fishmail.co.nz',1,NULL,'Dear jameson.q.rebekah@fishmail.co.nz',1,NULL,'jameson.q.rebekah@fishmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (92,'Individual',NULL,'Mrs. Magan Wilson-Jameson',NULL,NULL,'Magan','','Wilson-Jameson',0,1,0,0,0,0,NULL,'Wilson-Jameson, Magan',NULL,NULL,NULL,NULL,NULL,'200719141',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Mrs. Magan Wilson-Jameson',NULL,1,'2002-10-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (93,'Individual',NULL,'Mr. Jackson McReynolds',NULL,NULL,'Jackson','Q','McReynolds',1,0,0,0,0,0,NULL,'McReynolds, Jackson',NULL,NULL,NULL,'3',NULL,'748161972',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Mr. Jackson McReynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (94,'Individual',NULL,'Omar Parker Jr.',NULL,NULL,'Omar','','Parker',0,1,0,0,0,0,NULL,'Parker, Omar',NULL,NULL,NULL,'2',NULL,'3921166397',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Parker Jr.',NULL,NULL,'1998-01-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (95,'Organization',NULL,'Rural Agriculture Trust','Rural Agriculture Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Rural Agriculture Trust',NULL,NULL,NULL,'3',NULL,'3564832016',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Agriculture Trust',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (96,'Individual',NULL,'blackwella@notmail.org','Local Environmental Trust',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'blackwella@notmail.org',NULL,NULL,NULL,NULL,NULL,'442145169',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear blackwella@notmail.org',1,NULL,'Dear blackwella@notmail.org',1,NULL,'blackwella@notmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,148,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (97,'Individual',NULL,'Bernadette Łąchowski',NULL,NULL,'Bernadette','','Łąchowski',0,0,0,0,0,0,NULL,'Łąchowski, Bernadette',NULL,NULL,NULL,'2',NULL,'2108681272',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Łąchowski',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (98,'Individual',NULL,'Shauna Patel',NULL,NULL,'Shauna','P','Patel',0,1,0,0,0,0,NULL,'Patel, Shauna',NULL,NULL,NULL,NULL,NULL,'607971339',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Patel',NULL,1,'1949-12-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (99,'Individual',NULL,'Ms. Mei Olsen',NULL,NULL,'Mei','R','Olsen',1,0,0,0,0,0,NULL,'Olsen, Mei',NULL,NULL,NULL,NULL,NULL,'258402374',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Ms. Mei Olsen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (100,'Individual',NULL,'justinawilson-deforest24@fishmail.co.in',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'justinawilson-deforest24@fishmail.co.in',NULL,NULL,NULL,NULL,NULL,'4287671736',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear justinawilson-deforest24@fishmail.co.in',1,NULL,'Dear justinawilson-deforest24@fishmail.co.in',1,NULL,'justinawilson-deforest24@fishmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (101,'Individual',NULL,'Delana Dimitrov',NULL,NULL,'Delana','L','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Delana',NULL,NULL,NULL,NULL,NULL,'4026480882',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Dimitrov',NULL,1,NULL,1,'2023-10-11',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (102,'Individual',NULL,'Mr. Barry Wagner',NULL,NULL,'Barry','N','Wagner',0,0,0,0,0,0,NULL,'Wagner, Barry',NULL,NULL,NULL,NULL,NULL,'1267143153',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Mr. Barry Wagner',NULL,2,'1953-12-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (103,'Organization',NULL,'Oregon Development Network','Oregon Development Network',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Oregon Development Network',NULL,NULL,NULL,'2',NULL,'784567487',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Oregon Development Network',NULL,NULL,NULL,0,NULL,NULL,187,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (104,'Individual',NULL,'bj.wilson-jameson@testing.co.uk',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'bj.wilson-jameson@testing.co.uk',NULL,NULL,NULL,NULL,NULL,'3914421875',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear bj.wilson-jameson@testing.co.uk',1,NULL,'Dear bj.wilson-jameson@testing.co.uk',1,NULL,'bj.wilson-jameson@testing.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (105,'Individual',NULL,'Dr. Elizabeth Roberts',NULL,NULL,'Elizabeth','D','Roberts',1,0,0,0,0,0,NULL,'Roberts, Elizabeth',NULL,NULL,NULL,'3',NULL,'3104864980',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Dr. Elizabeth Roberts',NULL,1,'1971-07-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (106,'Individual',NULL,'daz.rosario@fishmail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'daz.rosario@fishmail.info',NULL,NULL,NULL,NULL,NULL,'1568362394',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear daz.rosario@fishmail.info',1,NULL,'Dear daz.rosario@fishmail.info',1,NULL,'daz.rosario@fishmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (107,'Individual',NULL,'Esta Łąchowski',NULL,NULL,'Esta','G','Łąchowski',0,0,0,0,1,0,NULL,'Łąchowski, Esta',NULL,NULL,NULL,'1',NULL,'195412899',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Łąchowski',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (108,'Individual',NULL,'Dr. Kiara Łąchowski',NULL,NULL,'Kiara','O','Łąchowski',0,0,0,0,0,0,NULL,'Łąchowski, Kiara',NULL,NULL,NULL,NULL,NULL,'1559609409',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Dr. Kiara Łąchowski',NULL,NULL,'1982-01-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (109,'Individual',NULL,'Lashawnda Prentice','Lincoln Action Academy',NULL,'Lashawnda','','Prentice',0,0,0,0,1,0,NULL,'Prentice, Lashawnda',NULL,NULL,NULL,NULL,NULL,'2396624366',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Prentice',NULL,NULL,'1977-07-17',0,NULL,NULL,NULL,NULL,NULL,52,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (110,'Individual',NULL,'Mr. Lawerence Deforest',NULL,NULL,'Lawerence','','Deforest',1,0,0,0,0,0,NULL,'Deforest, Lawerence',NULL,NULL,NULL,NULL,NULL,'2962516652',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Mr. Lawerence Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (111,'Individual',NULL,'Kenny Yadav II',NULL,NULL,'Kenny','D','Yadav',0,0,0,0,0,0,NULL,'Yadav, Kenny',NULL,NULL,NULL,'4',NULL,'250746844',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Yadav II',NULL,NULL,'1995-06-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (112,'Individual',NULL,'Mr. Sherman Müller',NULL,NULL,'Sherman','H','Müller',1,0,0,0,0,0,NULL,'Müller, Sherman',NULL,NULL,NULL,'3',NULL,'1541323485',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Mr. Sherman Müller',NULL,2,'1991-05-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (113,'Individual',NULL,'Dr. Elizabeth Robertson',NULL,NULL,'Elizabeth','','Robertson',1,0,0,0,0,0,NULL,'Robertson, Elizabeth',NULL,NULL,NULL,NULL,NULL,'3762031116',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Dr. Elizabeth Robertson',NULL,NULL,'1954-06-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (114,'Individual',NULL,'Daren Samson-Terry',NULL,NULL,'Daren','F','Samson-Terry',1,0,0,0,0,0,NULL,'Samson-Terry, Daren',NULL,NULL,NULL,NULL,NULL,'1484741128',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Samson-Terry',NULL,2,'1982-06-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (115,'Individual',NULL,'Clint Deforest','Sacramento Empowerment Partners',NULL,'Clint','U','Deforest',0,0,0,0,0,0,NULL,'Deforest, Clint',NULL,NULL,NULL,'1',NULL,'2437706084',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,135,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (116,'Individual',NULL,'Teresa Olsen',NULL,NULL,'Teresa','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Teresa',NULL,NULL,NULL,NULL,NULL,'1784308763',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Teresa Olsen',NULL,1,'2007-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (117,'Individual',NULL,'Norris Reynolds',NULL,NULL,'Norris','S','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Norris',NULL,NULL,NULL,NULL,NULL,'3621358089',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Reynolds',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (118,'Individual',NULL,'Alexia Lee-Yadav',NULL,NULL,'Alexia','P','Lee-Yadav',0,1,0,0,1,0,NULL,'Lee-Yadav, Alexia',NULL,NULL,NULL,NULL,NULL,'147177678',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Lee-Yadav',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (119,'Individual',NULL,'Mr. Ashley Wagner',NULL,NULL,'Ashley','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Ashley',NULL,NULL,NULL,'1',NULL,'1660268830',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Mr. Ashley Wagner',NULL,2,'1981-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (120,'Individual',NULL,'blackwell.josefa@infomail.org',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'blackwell.josefa@infomail.org',NULL,NULL,NULL,'1',NULL,'2482041681',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear blackwell.josefa@infomail.org',1,NULL,'Dear blackwell.josefa@infomail.org',1,NULL,'blackwell.josefa@infomail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (121,'Individual',NULL,'terrells@mymail.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'terrells@mymail.co.pl',NULL,NULL,NULL,'5',NULL,'2359360083',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear terrells@mymail.co.pl',1,NULL,'Dear terrells@mymail.co.pl',1,NULL,'terrells@mymail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (122,'Organization',NULL,'Cranfills Gap Health Trust','Cranfills Gap Health Trust',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Cranfills Gap Health Trust',NULL,NULL,NULL,'1',NULL,'45920780',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Cranfills Gap Health Trust',NULL,NULL,NULL,0,NULL,NULL,18,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (123,'Individual',NULL,'Kathlyn Roberts',NULL,NULL,'Kathlyn','Z','Roberts',0,0,0,0,0,0,NULL,'Roberts, Kathlyn',NULL,NULL,NULL,NULL,NULL,'2944584126',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Roberts',NULL,1,'1942-07-12',1,'2023-02-07',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (124,'Individual',NULL,'Dr. Scott Müller',NULL,NULL,'Scott','Q','Müller',0,0,0,0,0,0,NULL,'Müller, Scott',NULL,NULL,NULL,NULL,NULL,'2575613599',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Dr. Scott Müller',NULL,2,'1963-11-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (125,'Individual',NULL,'Sharyn Ivanov',NULL,NULL,'Sharyn','','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Sharyn',NULL,NULL,NULL,NULL,NULL,'4099997756',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn Ivanov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (126,'Individual',NULL,'Troy Prentice',NULL,NULL,'Troy','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Troy',NULL,NULL,NULL,NULL,NULL,'2143976390',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Prentice',NULL,NULL,'1996-01-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (127,'Individual',NULL,'Dr. Kiara Bachman',NULL,NULL,'Kiara','','Bachman',0,0,0,0,0,0,NULL,'Bachman, Kiara',NULL,NULL,NULL,'1',NULL,'3047638217',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Dr. Kiara Bachman',NULL,1,'1947-07-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (128,'Individual',NULL,'Dr. Lincoln Cruz',NULL,NULL,'Lincoln','Y','Cruz',0,0,0,0,1,0,NULL,'Cruz, Lincoln',NULL,NULL,NULL,'2',NULL,'3085396026',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Dr. Lincoln Cruz',NULL,2,'1940-01-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (129,'Individual',NULL,'Erik Deforest','Creative Peace Solutions',NULL,'Erik','','Deforest',0,0,0,0,0,0,NULL,'Deforest, Erik',NULL,NULL,NULL,NULL,NULL,'1691264565',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Deforest',NULL,2,'1973-02-04',0,NULL,NULL,NULL,NULL,NULL,19,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (130,'Individual',NULL,'Justina Jensen',NULL,NULL,'Justina','','Jensen',0,0,0,0,1,0,NULL,'Jensen, Justina',NULL,NULL,NULL,'4',NULL,'3253764259',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina Jensen',NULL,1,'1982-07-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (131,'Household',NULL,'Samuels family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Samuels family',NULL,NULL,NULL,'5',NULL,'350459294',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samuels family',5,NULL,'Dear Samuels family',2,NULL,'Samuels family',NULL,NULL,NULL,0,NULL,'Samuels family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (132,'Individual',NULL,'Allen Cooper II',NULL,NULL,'Allen','K','Cooper',0,0,0,0,0,0,NULL,'Cooper, Allen',NULL,NULL,NULL,'3',NULL,'1888383899',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Cooper II',NULL,2,'1974-09-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (133,'Organization',NULL,'Progressive Culture Partnership','Progressive Culture Partnership',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Progressive Culture Partnership',NULL,NULL,NULL,'3',NULL,'3653775844',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Progressive Culture Partnership',NULL,NULL,NULL,0,NULL,NULL,72,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (134,'Household',NULL,'Deforest family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Deforest family',NULL,NULL,NULL,NULL,NULL,'3235379039',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Deforest family',5,NULL,'Dear Deforest family',2,NULL,'Deforest family',NULL,NULL,NULL,0,NULL,'Deforest family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (135,'Organization',NULL,'Sacramento Empowerment Partners','Sacramento Empowerment Partners',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Sacramento Empowerment Partners',NULL,NULL,NULL,'2',NULL,'3370788420',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sacramento Empowerment Partners',NULL,NULL,NULL,0,NULL,NULL,115,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (136,'Individual',NULL,'Ms. Merrie Smith',NULL,NULL,'Merrie','L','Smith',1,0,0,0,0,0,NULL,'Smith, Merrie',NULL,NULL,NULL,'1',NULL,'2728255522',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Ms. Merrie Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (137,'Individual',NULL,'Mrs. Alexia Olsen',NULL,NULL,'Alexia','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Alexia',NULL,NULL,NULL,NULL,NULL,'1565274268',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Mrs. Alexia Olsen',NULL,1,'1986-04-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (138,'Individual',NULL,'Mr. Toby Jacobs',NULL,NULL,'Toby','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Toby',NULL,NULL,NULL,NULL,NULL,'247886444',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Mr. Toby Jacobs',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (139,'Organization',NULL,'Rural Health Initiative','Rural Health Initiative',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Rural Health Initiative',NULL,NULL,NULL,NULL,NULL,'1369844291',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Health Initiative',NULL,NULL,NULL,0,NULL,NULL,197,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (140,'Individual',NULL,'Mr. Russell Terry',NULL,NULL,'Russell','','Terry',0,0,0,0,0,0,NULL,'Terry, Russell',NULL,NULL,NULL,NULL,NULL,'3994938484',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Mr. Russell Terry',NULL,2,'1952-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (141,'Individual',NULL,'Elbert Cruz',NULL,NULL,'Elbert','','Cruz',0,0,0,0,0,0,NULL,'Cruz, Elbert',NULL,NULL,NULL,NULL,NULL,'418027726',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Cruz',NULL,2,'1966-11-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (142,'Individual',NULL,'Dr. Tanya Blackwell',NULL,NULL,'Tanya','H','Blackwell',0,1,0,0,0,0,NULL,'Blackwell, Tanya',NULL,NULL,NULL,NULL,NULL,'2751001066',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Dr. Tanya Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (143,'Individual',NULL,'Kenny Olsen III',NULL,NULL,'Kenny','L','Olsen',0,0,0,0,0,0,NULL,'Olsen, Kenny',NULL,NULL,NULL,NULL,NULL,'293860292',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Olsen III',NULL,NULL,'1982-09-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (144,'Individual',NULL,'Princess Terry',NULL,NULL,'Princess','','Terry',0,0,0,0,0,0,NULL,'Terry, Princess',NULL,NULL,NULL,NULL,NULL,'383206962',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Terry',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (145,'Individual',NULL,'Dr. Shad Jacobs Sr.',NULL,NULL,'Shad','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Shad',NULL,NULL,NULL,NULL,NULL,'3732235082',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Dr. Shad Jacobs Sr.',NULL,NULL,'1973-09-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (146,'Organization',NULL,'United Culture Initiative','United Culture Initiative',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'United Culture Initiative',NULL,NULL,NULL,'3',NULL,'1902448514',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Culture Initiative',NULL,NULL,NULL,0,NULL,NULL,178,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (147,'Individual',NULL,'Toby Samuels III',NULL,NULL,'Toby','L','Samuels',0,0,0,0,0,0,NULL,'Samuels, Toby',NULL,NULL,NULL,NULL,NULL,'126496012',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Samuels III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (148,'Organization',NULL,'Local Environmental Trust','Local Environmental Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Local Environmental Trust',NULL,NULL,NULL,'3',NULL,'1375669844',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Environmental Trust',NULL,NULL,NULL,0,NULL,NULL,96,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (149,'Individual',NULL,'Dr. Nicole Samuels',NULL,NULL,'Nicole','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Nicole',NULL,NULL,NULL,'1',NULL,'3510229898',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Dr. Nicole Samuels',NULL,1,'1977-11-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (150,'Individual',NULL,'Mr. Allan Prentice',NULL,NULL,'Allan','H','Prentice',1,0,0,0,0,0,NULL,'Prentice, Allan',NULL,NULL,NULL,'5',NULL,'2464878706',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Mr. Allan Prentice',NULL,NULL,'1952-09-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (151,'Individual',NULL,'Kandace Cruz-Reynolds',NULL,NULL,'Kandace','Z','Cruz-Reynolds',0,0,0,0,1,0,NULL,'Cruz-Reynolds, Kandace',NULL,NULL,NULL,'1',NULL,'2077726550',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Cruz-Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (152,'Individual',NULL,'Alexia Yadav',NULL,NULL,'Alexia','','Yadav',0,0,0,0,0,0,NULL,'Yadav, Alexia',NULL,NULL,NULL,NULL,NULL,'1312807214',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Yadav',NULL,NULL,'1987-05-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (153,'Individual',NULL,'Dr. Esta Nielsen',NULL,NULL,'Esta','','Nielsen',1,0,0,0,0,0,NULL,'Nielsen, Esta',NULL,NULL,NULL,'3',NULL,'2804173952',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Dr. Esta Nielsen',NULL,NULL,'1938-02-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (154,'Individual',NULL,'Valene Reynolds',NULL,NULL,'Valene','Z','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Valene',NULL,NULL,NULL,'4',NULL,'2505441873',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Reynolds',NULL,1,'1974-08-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (155,'Household',NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,'2450779112',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov family',5,NULL,'Dear Ivanov family',2,NULL,'Ivanov family',NULL,NULL,NULL,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (156,'Household',NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,'3313623671',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Prentice family',5,NULL,'Dear Prentice family',2,NULL,'Prentice family',NULL,NULL,NULL,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (157,'Individual',NULL,'Mrs. Megan Jameson',NULL,NULL,'Megan','','Jameson',1,1,0,0,0,0,NULL,'Jameson, Megan',NULL,NULL,NULL,NULL,NULL,'1706411142',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Mrs. Megan Jameson',NULL,1,'1986-05-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (158,'Individual',NULL,'Dr. Rosario Robertson II',NULL,NULL,'Rosario','M','Robertson',0,0,0,0,0,0,NULL,'Robertson, Rosario',NULL,NULL,NULL,'2',NULL,'1907398578',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Dr. Rosario Robertson II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (159,'Household',NULL,'Yadav family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Yadav family',NULL,NULL,NULL,'4',NULL,'1777336212',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Yadav family',5,NULL,'Dear Yadav family',2,NULL,'Yadav family',NULL,NULL,NULL,0,NULL,'Yadav family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (160,'Individual',NULL,'alexiad24@fishmail.net',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'alexiad24@fishmail.net',NULL,NULL,NULL,NULL,NULL,'4284286130',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear alexiad24@fishmail.net',1,NULL,'Dear alexiad24@fishmail.net',1,NULL,'alexiad24@fishmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (161,'Organization',NULL,'Progressive Music Network','Progressive Music Network',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Progressive Music Network',NULL,NULL,NULL,'4',NULL,'2461489408',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Progressive Music Network',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (162,'Individual',NULL,'Dr. Brigette Terry',NULL,NULL,'Brigette','','Terry',0,0,0,0,0,0,NULL,'Terry, Brigette',NULL,NULL,NULL,NULL,NULL,'2789451544',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Dr. Brigette Terry',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (163,'Individual',NULL,'Mrs. Kathlyn Jensen-Terry',NULL,NULL,'Kathlyn','','Jensen-Terry',1,0,0,0,1,0,NULL,'Jensen-Terry, Kathlyn',NULL,NULL,NULL,'3',NULL,'4042544597',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Mrs. Kathlyn Jensen-Terry',NULL,1,'1967-04-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (164,'Individual',NULL,'Dr. Bob Prentice',NULL,NULL,'Bob','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Bob',NULL,NULL,NULL,'3',NULL,'912966256',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Dr. Bob Prentice',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (165,'Individual',NULL,'Landon Olsen',NULL,NULL,'Landon','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Landon',NULL,NULL,NULL,NULL,NULL,'496664817',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Olsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (166,'Individual',NULL,'Mr. Clint Terry',NULL,NULL,'Clint','A','Terry',0,0,0,0,0,0,NULL,'Terry, Clint',NULL,NULL,NULL,NULL,NULL,'1893701236',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Mr. Clint Terry',NULL,2,'1952-04-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (167,'Individual',NULL,'Dr. Errol Ivanov',NULL,NULL,'Errol','S','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Errol',NULL,NULL,NULL,NULL,NULL,'3859438937',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Dr. Errol Ivanov',NULL,2,'1959-08-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (168,'Individual',NULL,'Dr. Ivey Deforest',NULL,NULL,'Ivey','','Deforest',0,1,0,0,0,0,NULL,'Deforest, Ivey',NULL,NULL,NULL,NULL,NULL,'1981648661',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Dr. Ivey Deforest',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (169,'Individual',NULL,'Kathlyn Jones',NULL,NULL,'Kathlyn','','Jones',1,0,0,0,1,0,NULL,'Jones, Kathlyn',NULL,NULL,NULL,NULL,NULL,'1774529515',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Jones',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (170,'Individual',NULL,'wattsonm@infomail.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'wattsonm@infomail.net',NULL,NULL,NULL,NULL,NULL,'6529586',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear wattsonm@infomail.net',1,NULL,'Dear wattsonm@infomail.net',1,NULL,'wattsonm@infomail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (171,'Individual',NULL,'Mrs. Santina Robertson',NULL,NULL,'Santina','X','Robertson',1,0,0,0,0,0,NULL,'Robertson, Santina',NULL,NULL,NULL,'5',NULL,'2867920569',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Mrs. Santina Robertson',NULL,1,'1946-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (172,'Individual',NULL,'Allan Zope Sr.',NULL,NULL,'Allan','T','Zope',0,0,0,0,1,0,NULL,'Zope, Allan',NULL,NULL,NULL,'5',NULL,'891375066',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Zope Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (173,'Individual',NULL,'Mrs. Sharyn Yadav',NULL,NULL,'Sharyn','V','Yadav',0,0,0,0,0,0,NULL,'Yadav, Sharyn',NULL,NULL,NULL,NULL,NULL,'2905194815',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Mrs. Sharyn Yadav',NULL,1,NULL,1,'2023-03-11',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (174,'Individual',NULL,'Mr. Miguel Zope III',NULL,NULL,'Miguel','','Zope',0,0,0,0,0,0,NULL,'Zope, Miguel',NULL,NULL,NULL,'1',NULL,'1624097300',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Zope III',NULL,2,'1990-02-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (175,'Individual',NULL,'Betty McReynolds',NULL,NULL,'Betty','J','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Betty',NULL,NULL,NULL,NULL,NULL,'2136104008',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Betty McReynolds',NULL,NULL,'1982-07-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (176,'Individual',NULL,'Iris Reynolds',NULL,NULL,'Iris','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Iris',NULL,NULL,NULL,'4',NULL,'3509379571',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Reynolds',NULL,1,'1964-03-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (177,'Household',NULL,'Wattson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wattson family',NULL,NULL,NULL,'4',NULL,'2851339192',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wattson family',5,NULL,'Dear Wattson family',2,NULL,'Wattson family',NULL,NULL,NULL,0,NULL,'Wattson family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (178,'Individual',NULL,'Dr. Rodrigo Jameson','United Culture Initiative',NULL,'Rodrigo','','Jameson',0,0,0,0,0,0,NULL,'Jameson, Rodrigo',NULL,NULL,NULL,NULL,NULL,'2012648674',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Dr. Rodrigo Jameson',NULL,2,'1954-05-09',0,NULL,NULL,NULL,NULL,NULL,146,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (179,'Individual',NULL,'Dr. Bernadette Jacobs-Prentice',NULL,NULL,'Bernadette','','Jacobs-Prentice',1,0,0,0,1,0,NULL,'Jacobs-Prentice, Bernadette',NULL,NULL,NULL,'5',NULL,'2581639941',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Dr. Bernadette Jacobs-Prentice',NULL,1,'1974-06-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (180,'Individual',NULL,'Dr. Carlos Samson',NULL,NULL,'Carlos','F','Samson',0,1,0,0,0,0,NULL,'Samson, Carlos',NULL,NULL,NULL,'1',NULL,'3685526914',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Dr. Carlos Samson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (181,'Individual',NULL,'Ms. Tanya McReynolds',NULL,NULL,'Tanya','B','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Tanya',NULL,NULL,NULL,NULL,NULL,'2833475968',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Ms. Tanya McReynolds',NULL,1,'1989-08-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (182,'Individual',NULL,'Herminia Terry',NULL,NULL,'Herminia','Q','Terry',1,0,0,0,0,0,NULL,'Terry, Herminia',NULL,NULL,NULL,NULL,NULL,'356369010',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Terry',NULL,1,'1975-06-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (183,'Individual',NULL,'Mr. Kenny Ivanov',NULL,NULL,'Kenny','A','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Kenny',NULL,NULL,NULL,NULL,NULL,'4111336352',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Mr. Kenny Ivanov',NULL,2,'1980-09-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (184,'Individual',NULL,'Dr. Teddy Cooper III','Dowlen Software Alliance',NULL,'Teddy','','Cooper',0,0,0,0,0,0,NULL,'Cooper, Teddy',NULL,NULL,NULL,NULL,NULL,'828228061',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Dr. Teddy Cooper III',NULL,2,'1993-12-20',0,NULL,NULL,NULL,NULL,NULL,64,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (185,'Individual',NULL,'Sherman Robertson III','Global Sustainability Alliance',NULL,'Sherman','','Robertson',0,0,0,0,0,0,NULL,'Robertson, Sherman',NULL,NULL,NULL,'3',NULL,'3479857214',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Robertson III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,59,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (186,'Individual',NULL,'Mr. Kenny Jacobs III',NULL,NULL,'Kenny','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Kenny',NULL,NULL,NULL,NULL,NULL,'1044730065',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Mr. Kenny Jacobs III',NULL,NULL,'1944-01-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (187,'Individual',NULL,'Mr. Bob Terrell','Oregon Development Network',NULL,'Bob','','Terrell',0,1,0,0,1,0,NULL,'Terrell, Bob',NULL,NULL,NULL,NULL,NULL,'1949116278',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Mr. Bob Terrell',NULL,2,'1985-04-15',0,NULL,NULL,NULL,NULL,NULL,103,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (188,'Individual',NULL,'Mrs. Alexia Díaz',NULL,NULL,'Alexia','Q','Díaz',0,0,0,0,0,0,NULL,'Díaz, Alexia',NULL,NULL,NULL,'1',NULL,'352965868',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Mrs. Alexia Díaz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (189,'Individual',NULL,'bachman.maria@infomail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'bachman.maria@infomail.info',NULL,NULL,NULL,NULL,NULL,'356570904',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear bachman.maria@infomail.info',1,NULL,'Dear bachman.maria@infomail.info',1,NULL,'bachman.maria@infomail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (190,'Household',NULL,'Cruz-Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Cruz-Reynolds family',NULL,NULL,NULL,NULL,NULL,'3738961941',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Cruz-Reynolds family',5,NULL,'Dear Cruz-Reynolds family',2,NULL,'Cruz-Reynolds family',NULL,NULL,NULL,0,NULL,'Cruz-Reynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (191,'Household',NULL,'Wilson-Jameson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wilson-Jameson family',NULL,NULL,NULL,NULL,NULL,'1733530397',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wilson-Jameson family',5,NULL,'Dear Wilson-Jameson family',2,NULL,'Wilson-Jameson family',NULL,NULL,NULL,0,NULL,'Wilson-Jameson family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (192,'Individual',NULL,'Mrs. Josefa Wilson',NULL,NULL,'Josefa','L','Wilson',0,1,0,0,0,0,NULL,'Wilson, Josefa',NULL,NULL,NULL,'2',NULL,'244303065',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Mrs. Josefa Wilson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (193,'Individual',NULL,'Alexia Ivanov',NULL,NULL,'Alexia','','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Alexia',NULL,NULL,NULL,NULL,NULL,'393680941',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Ivanov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (194,'Individual',NULL,'Mr. Troy Müller',NULL,NULL,'Troy','','Müller',0,0,0,0,0,0,NULL,'Müller, Troy',NULL,NULL,NULL,NULL,NULL,'2080888850',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Mr. Troy Müller',NULL,NULL,'1958-02-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (195,'Individual',NULL,'Tanya Terrell',NULL,NULL,'Tanya','G','Terrell',0,0,0,0,1,0,NULL,'Terrell, Tanya',NULL,NULL,NULL,NULL,NULL,'1604022989',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Terrell',NULL,1,'1995-12-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (196,'Individual',NULL,'Barry Terrell',NULL,NULL,'Barry','','Terrell',0,1,0,0,1,0,NULL,'Terrell, Barry',NULL,NULL,NULL,'5',NULL,'1436486502',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Terrell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (197,'Individual',NULL,'Ray Grant Jr.','Rural Health Initiative',NULL,'Ray','X','Grant',0,1,0,0,0,0,NULL,'Grant, Ray',NULL,NULL,NULL,'3',NULL,'2294694701',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Grant Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,139,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (198,'Individual',NULL,'Dr. Brent Reynolds Sr.',NULL,NULL,'Brent','','Reynolds',0,1,0,0,0,0,NULL,'Reynolds, Brent',NULL,NULL,NULL,NULL,NULL,'547975558',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Dr. Brent Reynolds Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (199,'Individual',NULL,'Dr. Magan Müller',NULL,NULL,'Magan','O','Müller',0,0,0,0,0,0,NULL,'Müller, Magan',NULL,NULL,NULL,'3',NULL,'681120033',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Dr. Magan Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (200,'Individual',NULL,'Lashawnda Deforest-Ivanov',NULL,NULL,'Lashawnda','A','Deforest-Ivanov',0,0,0,0,0,0,NULL,'Deforest-Ivanov, Lashawnda',NULL,NULL,NULL,NULL,NULL,'1651460725',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Deforest-Ivanov',NULL,1,'1972-08-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (201,'Individual',NULL,'Beula Nielsen',NULL,NULL,'Beula','R','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Beula',NULL,NULL,NULL,'1',NULL,'1989597446',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Nielsen',NULL,1,'1980-02-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'),
- (202,'Individual',NULL,'Jenny Lee',NULL,NULL,'Jenny',NULL,'Lee',0,0,0,0,0,0,NULL,'Lee, Jenny',NULL,NULL,NULL,NULL,'en_US','2553ad08256bebb3da7d27de1801f4e3',NULL,NULL,NULL,NULL,NULL,1,1,NULL,'Dear Jenny',1,NULL,'Dear Jenny',1,NULL,'Jenny Lee','Volunteer coordinator',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both');
+ (1,'Organization',NULL,'Default Organization','Default Organization',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Default Organization',NULL,'Default Organization',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'2023-12-17 20:11:28','Both'),
+ (2,'Household',NULL,'Müller-Díaz family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Müller-Díaz family',NULL,NULL,NULL,NULL,NULL,'900322331',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Müller-Díaz family',5,NULL,'Dear Müller-Díaz family',2,NULL,'Müller-Díaz family',NULL,NULL,NULL,0,NULL,'Müller-Díaz family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (3,'Household',NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,'3218641510',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Blackwell family',5,NULL,'Dear Blackwell family',2,NULL,'Blackwell family',NULL,NULL,NULL,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (4,'Individual',NULL,'Mr. Norris Terrell Jr.',NULL,NULL,'Norris','X','Terrell',1,0,0,0,0,0,NULL,'Terrell, Norris',NULL,NULL,NULL,NULL,NULL,'1035663398',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Mr. Norris Terrell Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (5,'Individual',NULL,'Mr. Winford Terrell III',NULL,NULL,'Winford','I','Terrell',1,0,0,0,0,0,NULL,'Terrell, Winford',NULL,NULL,NULL,NULL,NULL,'152025201',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Mr. Winford Terrell III',NULL,2,'1964-04-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (6,'Individual',NULL,'Mr. Bryon Dimitrov',NULL,NULL,'Bryon','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Bryon',NULL,NULL,NULL,NULL,NULL,'3819077271',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Mr. Bryon Dimitrov',NULL,2,'1970-12-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (7,'Individual',NULL,'Mr. Ashley Dimitrov-Ivanov',NULL,NULL,'Ashley','','Dimitrov-Ivanov',0,0,0,0,0,0,NULL,'Dimitrov-Ivanov, Ashley',NULL,NULL,NULL,NULL,NULL,'3849146505',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Mr. Ashley Dimitrov-Ivanov',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (8,'Individual',NULL,'Brittney Parker-Roberts','Creative Peace Network',NULL,'Brittney','','Parker-Roberts',1,0,0,0,0,0,NULL,'Parker-Roberts, Brittney',NULL,NULL,NULL,'1',NULL,'450084777',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Parker-Roberts',NULL,1,'1982-11-06',0,NULL,NULL,NULL,NULL,NULL,115,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (9,'Organization',NULL,'United Technology Center','United Technology Center',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'United Technology Center',NULL,NULL,NULL,'2',NULL,'94652750',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Technology Center',NULL,NULL,NULL,0,NULL,NULL,146,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (10,'Individual',NULL,'Lincoln Jameson',NULL,NULL,'Lincoln','','Jameson',0,1,0,0,0,0,NULL,'Jameson, Lincoln',NULL,NULL,NULL,'5',NULL,'2753899992',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Jameson',NULL,2,'1963-07-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (11,'Individual',NULL,'Carlos McReynolds III',NULL,NULL,'Carlos','','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Carlos',NULL,NULL,NULL,'5',NULL,'1986804051',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos McReynolds III',NULL,2,'2022-09-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (12,'Individual',NULL,'barkleys23@airmail.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'barkleys23@airmail.co.pl',NULL,NULL,NULL,'2',NULL,'1984904105',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear barkleys23@airmail.co.pl',1,NULL,'Dear barkleys23@airmail.co.pl',1,NULL,'barkleys23@airmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (13,'Individual',NULL,'Ms. Elina Blackwell',NULL,NULL,'Elina','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Elina',NULL,NULL,NULL,NULL,NULL,'215876886',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Ms. Elina Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (14,'Individual',NULL,'Kandace Blackwell',NULL,NULL,'Kandace','T','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Kandace',NULL,NULL,NULL,NULL,NULL,'1864345149',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Blackwell',NULL,1,'1992-11-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (15,'Organization',NULL,'Guilderland Center Family Association','Guilderland Center Family Association',NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'Guilderland Center Family Association',NULL,NULL,NULL,'2',NULL,'338343310',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Guilderland Center Family Association',NULL,NULL,NULL,0,NULL,NULL,32,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (16,'Individual',NULL,'Sanford Lee',NULL,NULL,'Sanford','C','Lee',0,0,0,0,0,0,NULL,'Lee, Sanford',NULL,NULL,NULL,NULL,NULL,'952477375',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Lee',NULL,2,'1945-04-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (17,'Organization',NULL,'El Camino Action Services','El Camino Action Services',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'El Camino Action Services',NULL,NULL,NULL,'4',NULL,'1062106639',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'El Camino Action Services',NULL,NULL,NULL,0,NULL,NULL,77,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (18,'Organization',NULL,'Creative Sports Fellowship','Creative Sports Fellowship',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Creative Sports Fellowship',NULL,NULL,NULL,'3',NULL,'2285812137',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Sports Fellowship',NULL,NULL,NULL,0,NULL,NULL,66,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (19,'Individual',NULL,'Claudio Yadav',NULL,NULL,'Claudio','','Yadav',0,0,0,0,1,0,NULL,'Yadav, Claudio',NULL,NULL,NULL,NULL,NULL,'2212747069',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Yadav',NULL,2,'1955-10-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (20,'Individual',NULL,'Brent Jones III','New York Education Collective',NULL,'Brent','','Jones',0,0,0,0,0,0,NULL,'Jones, Brent',NULL,NULL,NULL,'4',NULL,'2534822524',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Jones III',NULL,2,'2020-04-01',0,NULL,NULL,NULL,NULL,NULL,46,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (21,'Individual',NULL,'Iris Jensen',NULL,NULL,'Iris','','Jensen',1,0,0,0,0,0,NULL,'Jensen, Iris',NULL,NULL,NULL,'5',NULL,'3094691992',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Jensen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (22,'Individual',NULL,'Truman Wattson',NULL,NULL,'Truman','W','Wattson',0,0,0,0,0,0,NULL,'Wattson, Truman',NULL,NULL,NULL,'4',NULL,'3799954079',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Wattson',NULL,2,'1962-05-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (23,'Individual',NULL,'Kiara Terry',NULL,NULL,'Kiara','','Terry',1,0,0,0,1,0,NULL,'Terry, Kiara',NULL,NULL,NULL,'1',NULL,'4073244041',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Terry',NULL,NULL,'1978-04-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (24,'Individual',NULL,'Herminia McReynolds',NULL,NULL,'Herminia','S','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Herminia',NULL,NULL,NULL,'5',NULL,'2752519462',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia McReynolds',NULL,1,'1986-11-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (25,'Household',NULL,'Jones family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Jones family',NULL,NULL,NULL,NULL,NULL,'1110516799',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Jones family',5,NULL,'Dear Jones family',2,NULL,'Jones family',NULL,NULL,NULL,0,NULL,'Jones family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (26,'Organization',NULL,'United Family Trust','United Family Trust',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'United Family Trust',NULL,NULL,NULL,'1',NULL,'1690052502',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Family Trust',NULL,NULL,NULL,0,NULL,NULL,145,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (27,'Individual',NULL,'santinac@mymail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'santinac@mymail.info',NULL,NULL,NULL,'5',NULL,'908074764',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear santinac@mymail.info',1,NULL,'Dear santinac@mymail.info',1,NULL,'santinac@mymail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (28,'Individual',NULL,'Dr. Russell Terrell',NULL,NULL,'Russell','','Terrell',0,0,0,0,0,0,NULL,'Terrell, Russell',NULL,NULL,NULL,NULL,NULL,'127505299',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Dr. Russell Terrell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (29,'Individual',NULL,'Mr. Scott Wilson',NULL,NULL,'Scott','','Wilson',1,1,0,0,0,0,NULL,'Wilson, Scott',NULL,NULL,NULL,'2',NULL,'3378305352',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Mr. Scott Wilson',NULL,2,'1992-09-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (30,'Individual',NULL,'Mrs. Felisha Terry',NULL,NULL,'Felisha','','Terry',0,1,0,0,0,0,NULL,'Terry, Felisha',NULL,NULL,NULL,'4',NULL,'2704836577',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Mrs. Felisha Terry',NULL,1,'1935-10-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (31,'Individual',NULL,'Lawerence Ivanov Sr.',NULL,NULL,'Lawerence','','Ivanov',0,1,0,0,0,0,NULL,'Ivanov, Lawerence',NULL,NULL,NULL,'2',NULL,'268329993',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Ivanov Sr.',NULL,2,'2004-05-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (32,'Individual',NULL,'sivanov@testing.org','Guilderland Center Family Association',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'sivanov@testing.org',NULL,NULL,NULL,'2',NULL,'1207816225',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear sivanov@testing.org',1,NULL,'Dear sivanov@testing.org',1,NULL,'sivanov@testing.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,15,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (33,'Individual',NULL,'wattson.justina@example.biz',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'wattson.justina@example.biz',NULL,NULL,NULL,NULL,NULL,'2165606156',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear wattson.justina@example.biz',1,NULL,'Dear wattson.justina@example.biz',1,NULL,'wattson.justina@example.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (34,'Individual',NULL,'Ray Grant',NULL,NULL,'Ray','','Grant',0,0,0,0,0,0,NULL,'Grant, Ray',NULL,NULL,NULL,'2',NULL,'2294694701',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Grant',NULL,NULL,'1950-08-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (35,'Organization',NULL,'Florida Empowerment Fellowship','Florida Empowerment Fellowship',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Florida Empowerment Fellowship',NULL,NULL,NULL,NULL,NULL,'3420668028',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Florida Empowerment Fellowship',NULL,NULL,NULL,0,NULL,NULL,152,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (36,'Individual',NULL,'Dr. Roland Blackwell III',NULL,NULL,'Roland','','Blackwell',1,0,0,0,0,0,NULL,'Blackwell, Roland',NULL,NULL,NULL,'3',NULL,'2389492395',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Dr. Roland Blackwell III',NULL,NULL,'1984-04-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (37,'Individual',NULL,'Herminia Deforest',NULL,NULL,'Herminia','F','Deforest',0,0,0,0,0,0,NULL,'Deforest, Herminia',NULL,NULL,NULL,NULL,NULL,'1898104374',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Deforest',NULL,NULL,'1943-04-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (38,'Individual',NULL,'Troy Smith',NULL,NULL,'Troy','R','Smith',1,0,0,0,0,0,NULL,'Smith, Troy',NULL,NULL,NULL,'4',NULL,'2806538092',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Smith',NULL,2,'1970-08-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (39,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Terrell family',NULL,NULL,NULL,'3',NULL,'1136333121',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell family',5,NULL,'Dear Terrell family',2,NULL,'Terrell family',NULL,NULL,NULL,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (40,'Individual',NULL,'Dr. Shauna Lee',NULL,NULL,'Shauna','F','Lee',0,0,0,0,0,0,NULL,'Lee, Shauna',NULL,NULL,NULL,'2',NULL,'3300398193',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Dr. Shauna Lee',NULL,1,'1980-12-31',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (41,'Individual',NULL,'Iris Nielsen','Pine Food Partners',NULL,'Iris','F','Nielsen',1,0,0,0,0,0,NULL,'Nielsen, Iris',NULL,NULL,NULL,NULL,NULL,'3773138011',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Nielsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,197,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (42,'Individual',NULL,'Dr. Barry Jones Jr.',NULL,NULL,'Barry','','Jones',0,1,0,0,0,0,NULL,'Jones, Barry',NULL,NULL,NULL,'3',NULL,'1410678296',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Dr. Barry Jones Jr.',NULL,2,'1970-05-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (43,'Individual',NULL,'Brigette Roberts',NULL,NULL,'Brigette','B','Roberts',0,0,0,0,0,0,NULL,'Roberts, Brigette',NULL,NULL,NULL,NULL,NULL,'1915771894',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Roberts',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (44,'Individual',NULL,'Mr. Lincoln Prentice',NULL,NULL,'Lincoln','','Prentice',1,0,0,0,1,0,NULL,'Prentice, Lincoln',NULL,NULL,NULL,NULL,NULL,'3258245727',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Mr. Lincoln Prentice',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (45,'Individual',NULL,'scottolsen@lol.com',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'scottolsen@lol.com',NULL,NULL,NULL,NULL,NULL,'2001168533',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear scottolsen@lol.com',1,NULL,'Dear scottolsen@lol.com',1,NULL,'scottolsen@lol.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (46,'Organization',NULL,'New York Education Collective','New York Education Collective',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'New York Education Collective',NULL,NULL,NULL,NULL,NULL,'1984282827',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'New York Education Collective',NULL,NULL,NULL,0,NULL,NULL,20,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (47,'Organization',NULL,'Tipton Development Trust','Tipton Development Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Tipton Development Trust',NULL,NULL,NULL,'5',NULL,'3144310708',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Tipton Development Trust',NULL,NULL,NULL,0,NULL,NULL,187,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (48,'Individual',NULL,'Troy Robertson II',NULL,NULL,'Troy','Q','Robertson',0,1,0,0,1,0,NULL,'Robertson, Troy',NULL,NULL,NULL,'2',NULL,'3729972619',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Robertson II',NULL,2,'1994-03-31',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (49,'Individual',NULL,'Iris Lee',NULL,NULL,'Iris','','Lee',0,0,0,0,0,0,NULL,'Lee, Iris',NULL,NULL,NULL,'3',NULL,'3806304392',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Lee',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (50,'Individual',NULL,'kandacez51@mymail.co.uk',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'kandacez51@mymail.co.uk',NULL,NULL,NULL,NULL,NULL,'189211021',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear kandacez51@mymail.co.uk',1,NULL,'Dear kandacez51@mymail.co.uk',1,NULL,'kandacez51@mymail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (51,'Organization',NULL,'Minneapolis Culture Systems','Minneapolis Culture Systems',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Minneapolis Culture Systems',NULL,NULL,NULL,'5',NULL,'3675234497',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Minneapolis Culture Systems',NULL,NULL,NULL,0,NULL,NULL,150,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (52,'Individual',NULL,'Kacey Ivanov',NULL,NULL,'Kacey','D','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Kacey',NULL,NULL,NULL,NULL,NULL,'2436947567',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Ivanov',NULL,1,'2006-12-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (53,'Household',NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,'2450779112',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov family',5,NULL,'Dear Ivanov family',2,NULL,'Ivanov family',NULL,NULL,NULL,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (54,'Individual',NULL,'Bob Roberts',NULL,NULL,'Bob','','Roberts',0,0,0,0,1,0,NULL,'Roberts, Bob',NULL,NULL,NULL,'3',NULL,'1182740119',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Roberts',NULL,NULL,'1979-10-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (55,'Individual',NULL,'Erik Wattson III','Harvey Agriculture Fellowship',NULL,'Erik','T','Wattson',0,0,0,0,0,0,NULL,'Wattson, Erik',NULL,NULL,NULL,'2',NULL,'1174454182',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Wattson III',NULL,NULL,'2013-10-13',0,NULL,NULL,NULL,NULL,NULL,162,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (56,'Household',NULL,'Lee family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Lee family',NULL,NULL,NULL,NULL,NULL,'845831176',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Lee family',5,NULL,'Dear Lee family',2,NULL,'Lee family',NULL,NULL,NULL,0,NULL,'Lee family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (57,'Individual',NULL,'Mrs. Santina Patel',NULL,NULL,'Santina','I','Patel',0,0,0,0,0,0,NULL,'Patel, Santina',NULL,NULL,NULL,NULL,NULL,'3765825557',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Mrs. Santina Patel',NULL,1,'1937-10-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (58,'Individual',NULL,'Dr. Nicole Dimitrov',NULL,NULL,'Nicole','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Nicole',NULL,NULL,NULL,'5',NULL,'3962727762',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Dr. Nicole Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (59,'Individual',NULL,'Omar Cooper',NULL,NULL,'Omar','Q','Cooper',0,0,0,0,0,0,NULL,'Cooper, Omar',NULL,NULL,NULL,NULL,NULL,'1015907011',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Cooper',NULL,NULL,'1984-03-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (60,'Organization',NULL,'Nebraska Arts Alliance','Nebraska Arts Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Nebraska Arts Alliance',NULL,NULL,NULL,NULL,NULL,'1293132894',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Nebraska Arts Alliance',NULL,NULL,NULL,0,NULL,NULL,109,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (61,'Household',NULL,'Grant family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Grant family',NULL,NULL,NULL,NULL,NULL,'3228000340',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Grant family',5,NULL,'Dear Grant family',2,NULL,'Grant family',NULL,NULL,NULL,0,NULL,'Grant family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (62,'Individual',NULL,'ly.ivanov37@fishmail.net',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'ly.ivanov37@fishmail.net',NULL,NULL,NULL,NULL,NULL,'397215980',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear ly.ivanov37@fishmail.net',1,NULL,'Dear ly.ivanov37@fishmail.net',1,NULL,'ly.ivanov37@fishmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (63,'Individual',NULL,'Megan Terry',NULL,NULL,'Megan','K','Terry',0,0,0,0,0,0,NULL,'Terry, Megan',NULL,NULL,NULL,NULL,NULL,'3263409952',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Terry',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (64,'Organization',NULL,'College Music Trust','College Music Trust',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'College Music Trust',NULL,NULL,NULL,'1',NULL,'1964637119',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'College Music Trust',NULL,NULL,NULL,0,NULL,NULL,185,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (65,'Individual',NULL,'Elbert Jones II',NULL,NULL,'Elbert','P','Jones',0,0,0,0,0,0,NULL,'Jones, Elbert',NULL,NULL,NULL,'5',NULL,'3645053032',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Jones II',NULL,2,'1948-06-24',1,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (66,'Individual',NULL,'Mr. Maria Patel III','Creative Sports Fellowship',NULL,'Maria','','Patel',1,1,0,0,0,0,NULL,'Patel, Maria',NULL,NULL,NULL,NULL,NULL,'1297212984',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Mr. Maria Patel III',NULL,2,'1939-10-28',0,NULL,NULL,NULL,NULL,NULL,18,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (67,'Individual',NULL,'Mrs. Lashawnda Cruz',NULL,NULL,'Lashawnda','','Cruz',0,0,0,0,0,0,NULL,'Cruz, Lashawnda',NULL,NULL,NULL,'5',NULL,'2604537313',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Mrs. Lashawnda Cruz',NULL,NULL,'2000-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (68,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,'1136333121',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell family',5,NULL,'Dear Terrell family',2,NULL,'Terrell family',NULL,NULL,NULL,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (69,'Individual',NULL,'terrell.russell@testing.co.nz',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'terrell.russell@testing.co.nz',NULL,NULL,NULL,NULL,NULL,'1659650771',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear terrell.russell@testing.co.nz',1,NULL,'Dear terrell.russell@testing.co.nz',1,NULL,'terrell.russell@testing.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (70,'Individual',NULL,'Sherman Cruz Sr.',NULL,NULL,'Sherman','','Cruz',0,0,0,0,0,0,NULL,'Cruz, Sherman',NULL,NULL,NULL,'5',NULL,'3295870064',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Cruz Sr.',NULL,2,NULL,1,'2023-07-23',NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (71,'Organization',NULL,'Oregon Development Association','Oregon Development Association',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Oregon Development Association',NULL,NULL,NULL,'1',NULL,'3443119254',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Oregon Development Association',NULL,NULL,NULL,0,NULL,NULL,200,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (72,'Individual',NULL,'Mei Nielsen',NULL,NULL,'Mei','','Nielsen',1,0,0,0,0,0,NULL,'Nielsen, Mei',NULL,NULL,NULL,NULL,NULL,'1032657173',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Nielsen',NULL,1,'1992-09-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (73,'Individual',NULL,'Mrs. Elizabeth Díaz',NULL,NULL,'Elizabeth','J','Díaz',0,0,0,0,0,0,NULL,'Díaz, Elizabeth',NULL,NULL,NULL,'1',NULL,'1884711539',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Mrs. Elizabeth Díaz',NULL,NULL,'1993-10-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (74,'Individual',NULL,'Russell Olsen',NULL,NULL,'Russell','M','Olsen',1,0,0,0,1,0,NULL,'Olsen, Russell',NULL,NULL,NULL,'1',NULL,'2568545963',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Olsen',NULL,2,'1995-03-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (75,'Individual',NULL,'Dr. Magan Wilson-Grant',NULL,NULL,'Magan','D','Wilson-Grant',0,1,0,0,0,0,NULL,'Wilson-Grant, Magan',NULL,NULL,NULL,NULL,NULL,'3008529488',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Dr. Magan Wilson-Grant',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (76,'Individual',NULL,'Mrs. Felisha Lee',NULL,NULL,'Felisha','','Lee',0,0,0,0,0,0,NULL,'Lee, Felisha',NULL,NULL,NULL,'1',NULL,'1634353334',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Mrs. Felisha Lee',NULL,1,'1986-06-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (77,'Individual',NULL,'robertse@testing.info','El Camino Action Services',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'robertse@testing.info',NULL,NULL,NULL,'4',NULL,'4169959986',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear robertse@testing.info',1,NULL,'Dear robertse@testing.info',1,NULL,'robertse@testing.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,17,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (78,'Organization',NULL,'Sierra Peace Fellowship','Sierra Peace Fellowship',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Sierra Peace Fellowship',NULL,NULL,NULL,NULL,NULL,'658617080',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sierra Peace Fellowship',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (79,'Individual',NULL,'Delana Jones',NULL,NULL,'Delana','N','Jones',0,1,0,0,0,0,NULL,'Jones, Delana',NULL,NULL,NULL,NULL,NULL,'1936969701',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Jones',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (80,'Individual',NULL,'Mr. Billy McReynolds',NULL,NULL,'Billy','B','McReynolds',1,0,0,0,0,0,NULL,'McReynolds, Billy',NULL,NULL,NULL,NULL,NULL,'2779416929',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Mr. Billy McReynolds',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (81,'Individual',NULL,'Dr. Jacob Blackwell Sr.',NULL,NULL,'Jacob','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Jacob',NULL,NULL,NULL,'2',NULL,'4049710903',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Dr. Jacob Blackwell Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (82,'Individual',NULL,'Dr. Kacey Blackwell',NULL,NULL,'Kacey','','Blackwell',0,1,0,0,0,0,NULL,'Blackwell, Kacey',NULL,NULL,NULL,NULL,NULL,'3163269089',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Dr. Kacey Blackwell',NULL,1,'1935-04-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (83,'Individual',NULL,'Bob Ivanov',NULL,NULL,'Bob','','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Bob',NULL,NULL,NULL,'2',NULL,'2246956398',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Ivanov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (84,'Individual',NULL,'wagner-smithr@testmail.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'wagner-smithr@testmail.net',NULL,NULL,NULL,'1',NULL,'1361124795',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear wagner-smithr@testmail.net',1,NULL,'Dear wagner-smithr@testmail.net',1,NULL,'wagner-smithr@testmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (85,'Individual',NULL,'Lou Blackwell',NULL,NULL,'Lou','','Blackwell',0,0,0,0,1,0,NULL,'Blackwell, Lou',NULL,NULL,NULL,NULL,NULL,'2525168848',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Lou Blackwell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (86,'Individual',NULL,'bryons@fakemail.co.in',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'bryons@fakemail.co.in',NULL,NULL,NULL,NULL,NULL,'3847604605',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear bryons@fakemail.co.in',1,NULL,'Dear bryons@fakemail.co.in',1,NULL,'bryons@fakemail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (87,'Individual',NULL,'Santina Nielsen',NULL,NULL,'Santina','Y','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Santina',NULL,NULL,NULL,'4',NULL,'4294042447',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina Nielsen',NULL,1,'1989-03-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (88,'Individual',NULL,'Jacob Terry',NULL,NULL,'Jacob','P','Terry',0,1,0,0,0,0,NULL,'Terry, Jacob',NULL,NULL,NULL,'4',NULL,'1878863134',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Terry',NULL,2,'1977-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (89,'Individual',NULL,'Brittney Roberts',NULL,NULL,'Brittney','','Roberts',0,0,0,0,1,0,NULL,'Roberts, Brittney',NULL,NULL,NULL,'3',NULL,'3955023783',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Roberts',NULL,1,'2010-07-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (90,'Individual',NULL,'jones.junko@lol.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jones.junko@lol.co.pl',NULL,NULL,NULL,'3',NULL,'3514749205',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear jones.junko@lol.co.pl',1,NULL,'Dear jones.junko@lol.co.pl',1,NULL,'jones.junko@lol.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (91,'Individual',NULL,'Claudio Ivanov',NULL,NULL,'Claudio','S','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Claudio',NULL,NULL,NULL,'2',NULL,'447991366',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Ivanov',NULL,NULL,'1976-12-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (92,'Household',NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Blackwell family',NULL,NULL,NULL,'5',NULL,'3218641510',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Blackwell family',5,NULL,'Dear Blackwell family',2,NULL,'Blackwell family',NULL,NULL,NULL,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (93,'Individual',NULL,'Claudio Müller Sr.',NULL,NULL,'Claudio','Q','Müller',0,1,0,0,0,0,NULL,'Müller, Claudio',NULL,NULL,NULL,NULL,NULL,'2143910765',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Müller Sr.',NULL,NULL,'1974-05-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (94,'Individual',NULL,'Dr. Rosario Bachman',NULL,NULL,'Rosario','','Bachman',0,0,0,0,1,0,NULL,'Bachman, Rosario',NULL,NULL,NULL,NULL,NULL,'563214667',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Dr. Rosario Bachman',NULL,NULL,'1970-07-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (95,'Individual',NULL,'Princess Robertson',NULL,NULL,'Princess','I','Robertson',0,0,0,0,0,0,NULL,'Robertson, Princess',NULL,NULL,NULL,'3',NULL,'1575581088',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (96,'Individual',NULL,'Dr. Rebekah Blackwell',NULL,NULL,'Rebekah','F','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Rebekah',NULL,NULL,NULL,'5',NULL,'982789307',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Dr. Rebekah Blackwell',NULL,1,'1942-04-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (97,'Household',NULL,'Roberts family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'Roberts family',NULL,NULL,NULL,NULL,NULL,'2097305882',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Roberts family',5,NULL,'Dear Roberts family',2,NULL,'Roberts family',NULL,NULL,NULL,0,NULL,'Roberts family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (98,'Individual',NULL,'Delana Blackwell',NULL,NULL,'Delana','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Delana',NULL,NULL,NULL,NULL,NULL,'1631178499',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Blackwell',NULL,1,'2007-11-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (99,'Individual',NULL,'Allen Robertson',NULL,NULL,'Allen','N','Robertson',0,0,0,0,1,0,NULL,'Robertson, Allen',NULL,NULL,NULL,NULL,NULL,'4266356989',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Robertson',NULL,2,'1948-04-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (100,'Individual',NULL,'Magan Łąchowski',NULL,NULL,'Magan','','Łąchowski',0,1,0,0,0,0,NULL,'Łąchowski, Magan',NULL,NULL,NULL,'1',NULL,'3822861759',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Łąchowski',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (101,'Individual',NULL,'Ms. Alida Roberts',NULL,NULL,'Alida','','Roberts',1,1,0,0,0,0,NULL,'Roberts, Alida',NULL,NULL,NULL,'5',NULL,'3245047840',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Ms. Alida Roberts',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (102,'Individual',NULL,'Dr. Craig Blackwell',NULL,NULL,'Craig','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Craig',NULL,NULL,NULL,'2',NULL,'2607395408',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Dr. Craig Blackwell',NULL,2,'1999-07-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (103,'Individual',NULL,'Maxwell Grant Sr.',NULL,NULL,'Maxwell','','Grant',0,1,0,0,0,0,NULL,'Grant, Maxwell',NULL,NULL,NULL,'3',NULL,'3863854365',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Grant Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (104,'Individual',NULL,'Dr. Truman Jones II',NULL,NULL,'Truman','','Jones',0,0,0,0,0,0,NULL,'Jones, Truman',NULL,NULL,NULL,'4',NULL,'2437506755',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Dr. Truman Jones II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (105,'Individual',NULL,'brzczysawb@example.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'brzczysawb@example.biz',NULL,NULL,NULL,NULL,NULL,'1399890309',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear brzczysawb@example.biz',1,NULL,'Dear brzczysawb@example.biz',1,NULL,'brzczysawb@example.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (106,'Household',NULL,'Dimitrov family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Dimitrov family',NULL,NULL,NULL,'4',NULL,'3351288571',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Dimitrov family',5,NULL,'Dear Dimitrov family',2,NULL,'Dimitrov family',NULL,NULL,NULL,0,NULL,'Dimitrov family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (107,'Individual',NULL,'Elizabeth Patel',NULL,NULL,'Elizabeth','','Patel',0,0,0,0,0,0,NULL,'Patel, Elizabeth',NULL,NULL,NULL,NULL,NULL,'87465579',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Patel',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (108,'Individual',NULL,'Dr. Laree Lee',NULL,NULL,'Laree','U','Lee',0,0,0,0,1,0,NULL,'Lee, Laree',NULL,NULL,NULL,'3',NULL,'2331779223',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Dr. Laree Lee',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (109,'Individual',NULL,'erikmller-daz@fakemail.biz','Nebraska Arts Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'erikmller-daz@fakemail.biz',NULL,NULL,NULL,NULL,NULL,'1292151553',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear erikmller-daz@fakemail.biz',1,NULL,'Dear erikmller-daz@fakemail.biz',1,NULL,'erikmller-daz@fakemail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,60,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (110,'Individual',NULL,'Clint Díaz',NULL,NULL,'Clint','','Díaz',0,0,0,0,1,0,NULL,'Díaz, Clint',NULL,NULL,NULL,'2',NULL,'3503793680',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Díaz',NULL,2,'1986-09-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (111,'Household',NULL,'Grant family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Grant family',NULL,NULL,NULL,NULL,NULL,'3228000340',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Grant family',5,NULL,'Dear Grant family',2,NULL,'Grant family',NULL,NULL,NULL,0,NULL,'Grant family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (112,'Individual',NULL,'Brigette Prentice',NULL,NULL,'Brigette','Y','Prentice',0,0,0,0,0,0,NULL,'Prentice, Brigette',NULL,NULL,NULL,NULL,NULL,'1103079124',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Prentice',NULL,1,'1947-05-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (113,'Individual',NULL,'Ray Roberts II',NULL,NULL,'Ray','Q','Roberts',1,0,0,0,0,0,NULL,'Roberts, Ray',NULL,NULL,NULL,NULL,NULL,'1321167237',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Roberts II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (114,'Individual',NULL,'Dr. Bernadette Terrell','Lincoln Poetry Association',NULL,'Bernadette','','Terrell',0,0,0,0,0,0,NULL,'Terrell, Bernadette',NULL,NULL,NULL,'2',NULL,'1643953272',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Dr. Bernadette Terrell',NULL,NULL,'1977-11-28',0,NULL,NULL,NULL,NULL,NULL,201,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (115,'Organization',NULL,'Creative Peace Network','Creative Peace Network',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Creative Peace Network',NULL,NULL,NULL,'2',NULL,'6924904',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Peace Network',NULL,NULL,NULL,0,NULL,NULL,8,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (116,'Individual',NULL,'Princess Parker',NULL,NULL,'Princess','','Parker',0,0,0,0,0,0,NULL,'Parker, Princess',NULL,NULL,NULL,NULL,NULL,'1904893975',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Parker',NULL,NULL,'1969-08-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (117,'Individual',NULL,'Claudio Yadav',NULL,NULL,'Claudio','H','Yadav',0,0,0,0,0,0,NULL,'Yadav, Claudio',NULL,NULL,NULL,'4',NULL,'2212747069',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Yadav',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (118,'Organization',NULL,'Rural Development Network','Rural Development Network',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Rural Development Network',NULL,NULL,NULL,NULL,NULL,'1539214508',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Development Network',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (119,'Individual',NULL,'Eleonor Wagner-Smith',NULL,NULL,'Eleonor','','Wagner-Smith',0,0,0,0,0,0,NULL,'Wagner-Smith, Eleonor',NULL,NULL,NULL,'5',NULL,'1511260799',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Wagner-Smith',NULL,NULL,'2008-06-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (120,'Individual',NULL,'Ashley Barkley',NULL,NULL,'Ashley','E','Barkley',0,0,0,0,0,0,NULL,'Barkley, Ashley',NULL,NULL,NULL,NULL,NULL,'2198515289',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Barkley',NULL,1,'1940-12-26',1,'2023-03-17',NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (121,'Organization',NULL,'Urban Family Center','Urban Family Center',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Urban Family Center',NULL,NULL,NULL,NULL,NULL,'216761887',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Family Center',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (122,'Individual',NULL,'Winford Zope',NULL,NULL,'Winford','B','Zope',0,1,0,0,0,0,NULL,'Zope, Winford',NULL,NULL,NULL,'1',NULL,'3617829114',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Winford Zope',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (123,'Organization',NULL,'States Wellness Partnership','States Wellness Partnership',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'States Wellness Partnership',NULL,NULL,NULL,'5',NULL,'3510888814',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'States Wellness Partnership',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (124,'Individual',NULL,'Mrs. Carylon Prentice',NULL,NULL,'Carylon','K','Prentice',0,0,0,0,0,0,NULL,'Prentice, Carylon',NULL,NULL,NULL,'4',NULL,'1810903097',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Mrs. Carylon Prentice',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (125,'Household',NULL,'Nielsen family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Nielsen family',NULL,NULL,NULL,'5',NULL,'766698874',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Nielsen family',5,NULL,'Dear Nielsen family',2,NULL,'Nielsen family',NULL,NULL,NULL,0,NULL,'Nielsen family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (126,'Individual',NULL,'Maxwell Dimitrov',NULL,NULL,'Maxwell','I','Dimitrov',1,0,0,0,0,0,NULL,'Dimitrov, Maxwell',NULL,NULL,NULL,'5',NULL,'2461663646',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Dimitrov',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (127,'Individual',NULL,'Dr. Jackson Dimitrov',NULL,NULL,'Jackson','','Dimitrov',1,0,0,0,0,0,NULL,'Dimitrov, Jackson',NULL,NULL,NULL,'1',NULL,'2271911049',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Dr. Jackson Dimitrov',NULL,2,'1983-12-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (128,'Individual',NULL,'Rolando Roberts Jr.',NULL,NULL,'Rolando','','Roberts',0,1,0,0,0,0,NULL,'Roberts, Rolando',NULL,NULL,NULL,'2',NULL,'3250154238',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Roberts Jr.',NULL,NULL,'1957-02-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (129,'Individual',NULL,'Maxwell Terrell',NULL,NULL,'Maxwell','','Terrell',0,1,0,0,0,0,NULL,'Terrell, Maxwell',NULL,NULL,NULL,'4',NULL,'4143618431',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Terrell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (130,'Individual',NULL,'ivanov.troy62@lol.co.uk',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'ivanov.troy62@lol.co.uk',NULL,NULL,NULL,NULL,NULL,'2937065213',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear ivanov.troy62@lol.co.uk',1,NULL,'Dear ivanov.troy62@lol.co.uk',1,NULL,'ivanov.troy62@lol.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (131,'Individual',NULL,'Dr. Jay Zope',NULL,NULL,'Jay','N','Zope',0,0,0,0,1,0,NULL,'Zope, Jay',NULL,NULL,NULL,'2',NULL,'819910080',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Dr. Jay Zope',NULL,2,'1982-09-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (132,'Individual',NULL,'Dr. Junko Lee',NULL,NULL,'Junko','','Lee',0,1,0,0,1,0,NULL,'Lee, Junko',NULL,NULL,NULL,'5',NULL,'2980940667',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Dr. Junko Lee',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (133,'Individual',NULL,'Dr. Clint Cooper Sr.',NULL,NULL,'Clint','O','Cooper',0,0,0,0,0,0,NULL,'Cooper, Clint',NULL,NULL,NULL,'4',NULL,'303284897',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Dr. Clint Cooper Sr.',NULL,2,'1978-06-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (134,'Individual',NULL,'Brittney Terrell',NULL,NULL,'Brittney','C','Terrell',0,0,0,0,0,0,NULL,'Terrell, Brittney',NULL,NULL,NULL,NULL,NULL,'21549293',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Terrell',NULL,1,'1978-01-31',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (135,'Individual',NULL,'Elina Grant',NULL,NULL,'Elina','','Grant',1,1,0,0,0,0,NULL,'Grant, Elina',NULL,NULL,NULL,'4',NULL,'1935800100',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Grant',NULL,1,'1961-11-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (136,'Individual',NULL,'Dr. Mei Jensen',NULL,NULL,'Mei','','Jensen',0,0,0,0,0,0,NULL,'Jensen, Mei',NULL,NULL,NULL,NULL,NULL,'3305491240',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Dr. Mei Jensen',NULL,1,'1985-01-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (137,'Individual',NULL,'Laree Cooper',NULL,NULL,'Laree','V','Cooper',0,0,0,0,0,0,NULL,'Cooper, Laree',NULL,NULL,NULL,'2',NULL,'4213061637',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Laree Cooper',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (138,'Household',NULL,'Zope family',NULL,NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Zope family',NULL,NULL,NULL,'2',NULL,'1649131487',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Zope family',5,NULL,'Dear Zope family',2,NULL,'Zope family',NULL,NULL,NULL,0,NULL,'Zope family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (139,'Individual',NULL,'Clint Blackwell',NULL,NULL,'Clint','S','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Clint',NULL,NULL,NULL,'3',NULL,'3997373533',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Blackwell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (140,'Individual',NULL,'Arlyne Grant',NULL,NULL,'Arlyne','U','Grant',0,0,0,0,0,0,NULL,'Grant, Arlyne',NULL,NULL,NULL,NULL,NULL,'1053085057',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne Grant',NULL,1,'1994-07-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (141,'Individual',NULL,'Mr. Billy Grant Sr.',NULL,NULL,'Billy','B','Grant',0,0,0,0,1,0,NULL,'Grant, Billy',NULL,NULL,NULL,'1',NULL,'3507413817',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Mr. Billy Grant Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (142,'Individual',NULL,'Lashawnda Prentice',NULL,NULL,'Lashawnda','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Lashawnda',NULL,NULL,NULL,'5',NULL,'2396624366',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Prentice',NULL,1,'1944-10-31',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (143,'Individual',NULL,'Norris Zope III',NULL,NULL,'Norris','F','Zope',0,0,0,0,0,0,NULL,'Zope, Norris',NULL,NULL,NULL,NULL,NULL,'707573451',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Zope III',NULL,2,'1980-08-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (144,'Individual',NULL,'Bob Blackwell Jr.',NULL,NULL,'Bob','G','Blackwell',0,0,0,0,1,0,NULL,'Blackwell, Bob',NULL,NULL,NULL,NULL,NULL,'533638173',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Blackwell Jr.',NULL,NULL,'2012-08-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (145,'Individual',NULL,'Valene Wagner-Lee','United Family Trust',NULL,'Valene','','Wagner-Lee',1,0,0,0,0,0,NULL,'Wagner-Lee, Valene',NULL,NULL,NULL,NULL,NULL,'3257288206',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Wagner-Lee',NULL,NULL,'1967-01-18',0,NULL,NULL,NULL,NULL,NULL,26,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (146,'Individual',NULL,'Dr. Brent Łąchowski','United Technology Center',NULL,'Brent','','Łąchowski',1,1,0,0,0,0,NULL,'Łąchowski, Brent',NULL,NULL,NULL,'4',NULL,'1516135364',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Dr. Brent Łąchowski',NULL,2,'1993-11-21',0,NULL,NULL,NULL,NULL,NULL,9,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (147,'Individual',NULL,'Dr. Jed Bachman Sr.',NULL,NULL,'Jed','A','Bachman',1,0,0,0,0,0,NULL,'Bachman, Jed',NULL,NULL,NULL,'3',NULL,'876018088',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Dr. Jed Bachman Sr.',NULL,2,'1944-01-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (148,'Individual',NULL,'Dr. Winford Terrell Jr.',NULL,NULL,'Winford','','Terrell',0,1,0,0,0,0,NULL,'Terrell, Winford',NULL,NULL,NULL,'2',NULL,'152025201',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Dr. Winford Terrell Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (149,'Individual',NULL,'Truman Zope',NULL,NULL,'Truman','','Zope',0,0,0,0,0,0,NULL,'Zope, Truman',NULL,NULL,NULL,NULL,NULL,'828636704',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Zope',NULL,2,'1937-08-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (150,'Individual',NULL,'Brigette Zope','Minneapolis Culture Systems',NULL,'Brigette','M','Zope',0,0,0,0,0,0,NULL,'Zope, Brigette',NULL,NULL,NULL,'5',NULL,'3799032348',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Zope',NULL,1,'1998-12-07',0,NULL,NULL,NULL,NULL,NULL,51,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (151,'Household',NULL,'Wattson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wattson family',NULL,NULL,NULL,'3',NULL,'2851339192',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wattson family',5,NULL,'Dear Wattson family',2,NULL,'Wattson family',NULL,NULL,NULL,0,NULL,'Wattson family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (152,'Individual',NULL,'terrelle@infomail.com','Florida Empowerment Fellowship',NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'terrelle@infomail.com',NULL,NULL,NULL,'3',NULL,'840866343',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear terrelle@infomail.com',1,NULL,'Dear terrelle@infomail.com',1,NULL,'terrelle@infomail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,35,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (153,'Individual',NULL,'Dr. Princess Łąchowski',NULL,NULL,'Princess','C','Łąchowski',1,0,0,0,0,0,NULL,'Łąchowski, Princess',NULL,NULL,NULL,'4',NULL,'2893297968',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Dr. Princess Łąchowski',NULL,NULL,'1976-03-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (154,'Individual',NULL,'Jed Roberts',NULL,NULL,'Jed','','Roberts',1,0,0,0,0,0,NULL,'Roberts, Jed',NULL,NULL,NULL,NULL,NULL,'1541419664',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Jed Roberts',NULL,2,'2000-06-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (155,'Individual',NULL,'Jina Roberts-McReynolds',NULL,NULL,'Jina','R','Roberts-McReynolds',0,1,0,0,0,0,NULL,'Roberts-McReynolds, Jina',NULL,NULL,NULL,'5',NULL,'2439939152',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Roberts-McReynolds',NULL,1,'1966-07-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (156,'Individual',NULL,'Mr. Norris Blackwell Jr.',NULL,NULL,'Norris','I','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Norris',NULL,NULL,NULL,'1',NULL,'2555129550',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Mr. Norris Blackwell Jr.',NULL,NULL,'1999-10-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (157,'Individual',NULL,'Sherman Terrell Sr.',NULL,NULL,'Sherman','D','Terrell',1,0,0,0,0,0,NULL,'Terrell, Sherman',NULL,NULL,NULL,NULL,NULL,'470401788',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Terrell Sr.',NULL,2,'1980-09-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (158,'Individual',NULL,'Ms. Santina Wattson',NULL,NULL,'Santina','','Wattson',0,0,0,0,0,0,NULL,'Wattson, Santina',NULL,NULL,NULL,NULL,NULL,'4231196577',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Ms. Santina Wattson',NULL,NULL,'1950-02-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (159,'Individual',NULL,'Dr. Andrew Prentice Sr.',NULL,NULL,'Andrew','','Prentice',0,0,0,0,1,0,NULL,'Prentice, Andrew',NULL,NULL,NULL,'5',NULL,'3759820671',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Dr. Andrew Prentice Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (160,'Individual',NULL,'Toby Nielsen Jr.',NULL,NULL,'Toby','R','Nielsen',1,0,0,0,0,0,NULL,'Nielsen, Toby',NULL,NULL,NULL,NULL,NULL,'1430850543',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Nielsen Jr.',NULL,2,'1942-12-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (161,'Individual',NULL,'Troy Łąchowski',NULL,NULL,'Troy','T','Łąchowski',0,0,0,0,0,0,NULL,'Łąchowski, Troy',NULL,NULL,NULL,NULL,NULL,'1486408354',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Łąchowski',NULL,2,'1988-09-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (162,'Organization',NULL,'Harvey Agriculture Fellowship','Harvey Agriculture Fellowship',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Harvey Agriculture Fellowship',NULL,NULL,NULL,NULL,NULL,'606107641',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Harvey Agriculture Fellowship',NULL,NULL,NULL,0,NULL,NULL,55,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (163,'Individual',NULL,'Kathleen Müller-Díaz',NULL,NULL,'Kathleen','G','Müller-Díaz',0,0,0,0,0,0,NULL,'Müller-Díaz, Kathleen',NULL,NULL,NULL,'4',NULL,'1818085974',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Müller-Díaz',NULL,1,'2007-09-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (164,'Individual',NULL,'Dr. Miguel González',NULL,NULL,'Miguel','','González',0,0,0,0,0,0,NULL,'González, Miguel',NULL,NULL,NULL,NULL,NULL,'833815017',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Dr. Miguel González',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (165,'Individual',NULL,'Mr. Irvin Terry-Nielsen',NULL,NULL,'Irvin','M','Terry-Nielsen',0,1,0,0,0,0,NULL,'Terry-Nielsen, Irvin',NULL,NULL,NULL,NULL,NULL,'962565424',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Mr. Irvin Terry-Nielsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (166,'Individual',NULL,'Carylon Terrell',NULL,NULL,'Carylon','','Terrell',0,0,0,0,0,0,NULL,'Terrell, Carylon',NULL,NULL,NULL,'4',NULL,'3327689936',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon Terrell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (167,'Household',NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,'3032680972',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear McReynolds family',5,NULL,'Dear McReynolds family',2,NULL,'McReynolds family',NULL,NULL,NULL,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (168,'Individual',NULL,'Mr. Jed Grant',NULL,NULL,'Jed','','Grant',0,0,0,0,1,0,NULL,'Grant, Jed',NULL,NULL,NULL,NULL,NULL,'2644056120',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Mr. Jed Grant',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (169,'Individual',NULL,'Mei Terrell',NULL,NULL,'Mei','','Terrell',1,1,0,0,0,0,NULL,'Terrell, Mei',NULL,NULL,NULL,'5',NULL,'306991433',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Terrell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (170,'Individual',NULL,'wagner.k.beula@testing.com',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'wagner.k.beula@testing.com',NULL,NULL,NULL,'3',NULL,'2820426487',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear wagner.k.beula@testing.com',1,NULL,'Dear wagner.k.beula@testing.com',1,NULL,'wagner.k.beula@testing.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (171,'Individual',NULL,'Rodrigo Lee',NULL,NULL,'Rodrigo','N','Lee',0,1,0,0,0,0,NULL,'Lee, Rodrigo',NULL,NULL,NULL,'4',NULL,'2509854524',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Rodrigo Lee',NULL,2,'1987-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (172,'Household',NULL,'Cooper family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Cooper family',NULL,NULL,NULL,'4',NULL,'1133003930',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Cooper family',5,NULL,'Dear Cooper family',2,NULL,'Cooper family',NULL,NULL,NULL,0,NULL,'Cooper family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (173,'Individual',NULL,'Ms. Valene Prentice-Zope',NULL,NULL,'Valene','','Prentice-Zope',1,0,0,0,0,0,NULL,'Prentice-Zope, Valene',NULL,NULL,NULL,'2',NULL,'527568177',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Ms. Valene Prentice-Zope',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (174,'Individual',NULL,'Herminia Nielsen',NULL,NULL,'Herminia','','Nielsen',0,1,0,0,0,0,NULL,'Nielsen, Herminia',NULL,NULL,NULL,NULL,NULL,'176728020',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Nielsen',NULL,NULL,'1983-05-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (175,'Individual',NULL,'Ms. Rebekah Prentice',NULL,NULL,'Rebekah','','Prentice',0,1,0,0,0,0,NULL,'Prentice, Rebekah',NULL,NULL,NULL,'1',NULL,'961021134',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Ms. Rebekah Prentice',NULL,1,'1947-11-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (176,'Individual',NULL,'Mrs. Justina Blackwell',NULL,NULL,'Justina','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Justina',NULL,NULL,NULL,NULL,NULL,'630587972',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Mrs. Justina Blackwell',NULL,1,'1989-01-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (177,'Individual',NULL,'Ms. Damaris Smith',NULL,NULL,'Damaris','Q','Smith',0,0,0,0,1,0,NULL,'Smith, Damaris',NULL,NULL,NULL,NULL,NULL,'3693080437',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Ms. Damaris Smith',NULL,NULL,'1967-02-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (178,'Individual',NULL,'Dr. Allen Parker Jr.',NULL,NULL,'Allen','D','Parker',0,1,0,0,0,0,NULL,'Parker, Allen',NULL,NULL,NULL,NULL,NULL,'710842690',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Dr. Allen Parker Jr.',NULL,2,'1981-12-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (179,'Individual',NULL,'Mrs. Josefa Wagner',NULL,NULL,'Josefa','C','Wagner',0,0,0,0,0,0,NULL,'Wagner, Josefa',NULL,NULL,NULL,'5',NULL,'497687514',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Mrs. Josefa Wagner',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (180,'Individual',NULL,'Dr. Ashley Wagner',NULL,NULL,'Ashley','S','Wagner',0,0,0,0,0,0,NULL,'Wagner, Ashley',NULL,NULL,NULL,NULL,NULL,'1660268830',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Dr. Ashley Wagner',NULL,2,'1950-09-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (181,'Individual',NULL,'nielsen.t.brent@mymail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'nielsen.t.brent@mymail.co.nz',NULL,NULL,NULL,'1',NULL,'1891169823',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear nielsen.t.brent@mymail.co.nz',1,NULL,'Dear nielsen.t.brent@mymail.co.nz',1,NULL,'nielsen.t.brent@mymail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (182,'Individual',NULL,'josefai3@sample.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'josefai3@sample.net',NULL,NULL,NULL,NULL,NULL,'1994317403',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear josefai3@sample.net',1,NULL,'Dear josefai3@sample.net',1,NULL,'josefai3@sample.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (183,'Individual',NULL,'Mrs. Tanya Terrell',NULL,NULL,'Tanya','','Terrell',0,0,0,0,0,0,NULL,'Terrell, Tanya',NULL,NULL,NULL,'5',NULL,'1604022989',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Mrs. Tanya Terrell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (184,'Individual',NULL,'Roland Terrell',NULL,NULL,'Roland','','Terrell',0,1,0,0,0,0,NULL,'Terrell, Roland',NULL,NULL,NULL,'3',NULL,'731518019',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Terrell',NULL,NULL,'1974-07-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (185,'Individual',NULL,'Heidi Dimitrov','College Music Trust',NULL,'Heidi','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Heidi',NULL,NULL,NULL,NULL,NULL,'90891784',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Heidi Dimitrov',NULL,NULL,'2012-02-22',0,NULL,NULL,NULL,NULL,NULL,64,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (186,'Household',NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Ivanov family',NULL,NULL,NULL,'5',NULL,'2450779112',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov family',5,NULL,'Dear Ivanov family',2,NULL,'Ivanov family',NULL,NULL,NULL,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (187,'Individual',NULL,'grant.princess@testmail.co.nz','Tipton Development Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'grant.princess@testmail.co.nz',NULL,NULL,NULL,'1',NULL,'2066741182',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear grant.princess@testmail.co.nz',1,NULL,'Dear grant.princess@testmail.co.nz',1,NULL,'grant.princess@testmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,47,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (188,'Individual',NULL,'Felisha Deforest',NULL,NULL,'Felisha','','Deforest',0,1,0,0,0,0,NULL,'Deforest, Felisha',NULL,NULL,NULL,'2',NULL,'3583247352',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Felisha Deforest',NULL,1,'1982-03-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (189,'Individual',NULL,'Josefa Patel',NULL,NULL,'Josefa','D','Patel',0,1,0,0,0,0,NULL,'Patel, Josefa',NULL,NULL,NULL,NULL,NULL,'2620051748',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa Patel',NULL,NULL,'1971-05-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (190,'Individual',NULL,'Dr. Ashley Blackwell III',NULL,NULL,'Ashley','','Blackwell',1,0,0,0,0,0,NULL,'Blackwell, Ashley',NULL,NULL,NULL,'1',NULL,'2843113739',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Dr. Ashley Blackwell III',NULL,2,'1936-06-24',1,'2023-04-03',NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (191,'Individual',NULL,'Dr. Shad Samuels',NULL,NULL,'Shad','S','Samuels',0,0,0,0,1,0,NULL,'Samuels, Shad',NULL,NULL,NULL,NULL,NULL,'3610852394',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Dr. Shad Samuels',NULL,2,'1947-02-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (192,'Individual',NULL,'Merrie González',NULL,NULL,'Merrie','','González',0,0,0,0,0,0,NULL,'González, Merrie',NULL,NULL,NULL,'4',NULL,'1134733928',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie González',NULL,1,'1953-03-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (193,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Terrell family',NULL,NULL,NULL,'3',NULL,'1136333121',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell family',5,NULL,'Dear Terrell family',2,NULL,'Terrell family',NULL,NULL,NULL,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (194,'Individual',NULL,'Scarlet Cooper',NULL,NULL,'Scarlet','M','Cooper',1,0,0,0,0,0,NULL,'Cooper, Scarlet',NULL,NULL,NULL,NULL,NULL,'1649376042',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Cooper',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:35','Both'),
+ (195,'Individual',NULL,'Mei Wattson',NULL,NULL,'Mei','N','Wattson',0,0,0,0,0,0,NULL,'Wattson, Mei',NULL,NULL,NULL,NULL,NULL,'1845197516',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Wattson',NULL,1,'1990-02-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (196,'Individual',NULL,'Dr. Tanya Nielsen-Grant',NULL,NULL,'Tanya','L','Nielsen-Grant',1,0,0,0,1,0,NULL,'Nielsen-Grant, Tanya',NULL,NULL,NULL,'4',NULL,'3762760163',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Dr. Tanya Nielsen-Grant',NULL,1,'1992-11-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (197,'Organization',NULL,'Pine Food Partners','Pine Food Partners',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Pine Food Partners',NULL,NULL,NULL,'3',NULL,'3921206649',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Pine Food Partners',NULL,NULL,NULL,0,NULL,NULL,41,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (198,'Individual',NULL,'Omar Łąchowski III',NULL,NULL,'Omar','','Łąchowski',0,1,0,0,1,0,NULL,'Łąchowski, Omar',NULL,NULL,NULL,'3',NULL,'3249212023',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Łąchowski III',NULL,2,'1996-09-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:33','Both'),
+ (199,'Household',NULL,'Wagner-Smith family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wagner-Smith family',NULL,NULL,NULL,'5',NULL,'2318725151',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wagner-Smith family',5,NULL,'Dear Wagner-Smith family',2,NULL,'Wagner-Smith family',NULL,NULL,NULL,0,NULL,'Wagner-Smith family',NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (200,'Individual',NULL,'Dr. Jacob Jones','Oregon Development Association',NULL,'Jacob','','Jones',0,0,0,0,0,0,NULL,'Jones, Jacob',NULL,NULL,NULL,'1',NULL,'210245998',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Dr. Jacob Jones',NULL,NULL,'1969-09-19',0,NULL,NULL,NULL,NULL,NULL,71,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (201,'Organization',NULL,'Lincoln Poetry Association','Lincoln Poetry Association',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Lincoln Poetry Association',NULL,NULL,NULL,NULL,NULL,'1465356771',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Lincoln Poetry Association',NULL,NULL,NULL,0,NULL,NULL,114,NULL,NULL,NULL,0,'2023-12-17 20:11:33','2023-12-17 20:11:34','Both'),
+ (202,'Individual',NULL,'Jenny Lee',NULL,NULL,'Jenny',NULL,'Lee',0,0,0,0,0,0,NULL,'Lee, Jenny',NULL,NULL,NULL,NULL,'en_US','f4b3bbf951ca454e8175f4a281a7e2cc',NULL,NULL,NULL,NULL,NULL,1,1,NULL,'Dear Jenny',1,NULL,'Dear Jenny',1,NULL,'Jenny Lee','Volunteer coordinator',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-12-17 20:11:35','2023-12-17 20:11:35','Both');
 /*!40000 ALTER TABLE `civicrm_contact` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -2220,117 +2223,117 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_contribution` WRITE;
 /*!40000 ALTER TABLE `civicrm_contribution` DISABLE KEYS */;
 INSERT INTO `civicrm_contribution` (`id`, `contact_id`, `financial_type_id`, `contribution_page_id`, `payment_instrument_id`, `receive_date`, `non_deductible_amount`, `total_amount`, `fee_amount`, `net_amount`, `trxn_id`, `invoice_id`, `invoice_number`, `currency`, `cancel_date`, `cancel_reason`, `receipt_date`, `thankyou_date`, `source`, `amount_level`, `contribution_recur_id`, `is_test`, `is_pay_later`, `contribution_status_id`, `address_id`, `check_number`, `campaign_id`, `creditnote_id`, `tax_amount`, `revenue_recognition_date`, `is_template`) VALUES
- (1,2,1,NULL,4,'2013-10-19 14:22:30',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,0.00,NULL,0),
- (2,4,1,NULL,1,'2021-07-19 14:22:30',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (3,6,1,NULL,4,'2017-09-24 01:22:30',0.00,25.00,NULL,NULL,'GBP12',NULL,NULL,'GBP',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,0.00,NULL,0),
- (4,8,1,NULL,4,'2021-07-19 14:22:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,0.00,NULL,0),
- (5,4,1,NULL,1,'2021-07-19 14:22:30',0.00,50.00,NULL,NULL,'Q90901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (6,16,1,NULL,4,'2023-07-26 13:40:30',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,0.00,NULL,0),
- (7,19,1,NULL,1,'2023-10-17 14:22:30',0.00,1750.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,0.00,NULL,0),
- (8,82,1,NULL,1,'2023-02-24 22:33:30',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (9,92,1,NULL,1,'2022-11-19 14:22:30',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (10,34,1,NULL,1,'2019-05-27 16:22:30',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (11,71,1,NULL,1,'2023-10-18 10:22:30',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'JPY',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (12,43,1,NULL,1,'2022-07-19 03:49:10',0.00,50.00,NULL,NULL,'P291X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (13,32,1,NULL,1,'2023-07-19 00:00:00',0.00,50.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (14,32,1,NULL,1,'2023-08-19 00:00:00',0.00,50.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (15,59,1,NULL,1,'2022-07-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I591',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (16,59,1,NULL,1,'2022-08-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I592',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (17,59,1,NULL,1,'2022-09-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I593',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (18,59,1,NULL,1,'2022-10-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I594',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (19,59,1,NULL,1,'2022-11-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I595',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (20,59,1,NULL,1,'2022-12-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I596',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (21,59,1,NULL,1,'2023-01-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I597',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (22,59,1,NULL,1,'2023-02-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I598',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (23,59,1,NULL,1,'2023-03-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I599',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (24,59,1,NULL,1,'2023-04-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I5910',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (25,59,1,NULL,1,'2023-05-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I5911',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (26,99,1,NULL,1,'2023-02-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I991',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (27,99,1,NULL,1,'2023-03-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I992',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (28,99,1,NULL,1,'2023-04-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I993',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (29,99,1,NULL,1,'2023-05-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I994',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (30,99,1,NULL,1,'2023-06-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I995',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (31,103,1,NULL,1,'2023-09-19 14:22:30',0.00,5.00,NULL,NULL,'PL32I1031',NULL,NULL,'EUR',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,3,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (32,55,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'c908bcfa0cd5be20',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (33,168,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'4d24ed19cb02ed0c',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (34,36,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'c7f53644ae2a7abd',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (35,87,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'df65e9305cdef133',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (36,48,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'9e43d605091634b7',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (37,180,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'e6d81f09a41d0f35',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (38,8,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'e38f6ec37b9fabb3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (39,54,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'f739f79d40e7bd2d',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (40,106,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'0937a86d9856d20f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (41,17,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'386a76c90a983717',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (42,175,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'1d446a98d22519c5',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (43,28,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'6f302a92a8d039f4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (44,117,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'184c1625a0ab7dc0',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (45,86,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'fd4792bd3a50da87',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (46,149,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'2ae34338151a8c31',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (47,47,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'62904aaad7687d16',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (48,126,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'58c722d9ea8f60e4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (49,113,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'0e4d2cc74726c33e',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (50,169,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'46fff670fdd88c83',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (51,164,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'126eb1cbca88ac46',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (52,39,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'8e1a4f823c309e35',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (53,49,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'9183e73af132fbd1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (54,92,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'e7836a1040fc6647',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (55,136,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'dc8c98604902da07',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (56,187,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'9668e4798e266def',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (57,100,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ef096073ba84bc0a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (58,78,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'aa13673d8ef85a65',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (59,66,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'32f851d09a3775f2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (60,93,2,NULL,1,'2023-10-19 14:22:30',0.00,1200.00,NULL,NULL,'fe44a2c192ab18be',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (61,5,2,NULL,1,'2023-10-19 14:22:30',0.00,1200.00,NULL,NULL,'ffed5868e9951a95',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (63,6,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'b28927dfa09ab7b4',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (64,8,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'52b5a6a76b142227',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (65,10,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'7245aac602b546bb',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (66,13,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ff5b5537da44c970',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (67,14,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'fad72a1cf34cf68e',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (68,16,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'95a80169077a3dea',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (69,17,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'413cb05032f4ef86',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (70,19,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'755c91f4df5025f2',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (71,23,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'d39bcc7bf0e51cab',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (72,30,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'2169580b75789814',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (73,36,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'25a9f0b5ed29df0a',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (74,40,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'3eb2384d79bdaa10',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (75,41,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ed07590fe067cb07',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (76,45,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'96af8634550c39ac',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (77,57,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'a2542bee3dc332de',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (78,69,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'6cc8dd5a5b8e8913',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (79,73,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'a720e6fdf9eea694',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (80,76,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'732d30e0d1d41ca5',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (81,77,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ac8995759a7a3270',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (82,80,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'6ba712ac9576b7b6',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (83,84,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'b056ac8b83186f79',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (84,88,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'24cc9f9c83795713',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (85,92,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'548746b3839860da',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (86,94,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'472bf4e471ef125f',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (87,96,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'188d57636c31422a',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (88,97,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'c8d10d10dd2d66bb',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (89,101,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'082640d22f20fcf6',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (90,117,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'7a53e74599f788ac',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (91,123,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'f78524f14cda217c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (92,127,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'3de19df12cf6886c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (93,132,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'b7c48e40295cdc9a',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (94,135,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'648327e05cdee0ac',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (95,144,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'9dc4f36b0500ac35',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (96,154,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'fe477a4cedeef016',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (97,156,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'bd1cbf336bcdc529',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (98,158,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'146f0c5184fd503c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (99,159,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'6def5a3cac235219',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (100,160,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'0ab78d1432305653',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (101,163,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'4bc019d5fcebe204',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (102,172,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'44c3f7faa315a724',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (103,175,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'7749b8e4f077e05c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (104,178,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'7e35b99bd91e7b4c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (105,179,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'504a9107e1c840c3',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (106,182,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'cca171d375cdc8f6',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (107,184,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'656d8e5060576829',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (108,189,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'b7318d85efca799b',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (109,192,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'4feacc260963ba72',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (110,195,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'f82bc2b76969d315',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (111,196,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'a96ed671bbd3ea09',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (112,197,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'60f19d9651d20536',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0);
+ (1,2,1,NULL,4,'2013-12-17 20:11:37',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,0.00,NULL,0),
+ (2,4,1,NULL,1,'2021-09-17 20:11:37',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (3,6,1,NULL,4,'2017-11-22 07:11:37',0.00,25.00,NULL,NULL,'GBP12',NULL,NULL,'GBP',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,0.00,NULL,0),
+ (4,8,1,NULL,4,'2021-09-17 20:11:37',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,0.00,NULL,0),
+ (5,4,1,NULL,1,'2021-09-17 20:11:37',0.00,50.00,NULL,NULL,'Q90901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (6,16,1,NULL,4,'2023-09-23 19:29:37',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,0.00,NULL,0),
+ (7,19,1,NULL,1,'2023-12-15 20:11:37',0.00,1750.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,0.00,NULL,0),
+ (8,82,1,NULL,1,'2023-04-25 04:22:37',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (9,92,1,NULL,1,'2023-01-17 20:11:37',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (10,34,1,NULL,1,'2019-07-25 22:11:37',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (11,71,1,NULL,1,'2023-12-16 16:11:37',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'JPY',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (12,43,1,NULL,1,'2022-09-17 09:38:17',0.00,50.00,NULL,NULL,'P291X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (13,32,1,NULL,1,'2023-09-17 00:00:00',0.00,50.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (14,32,1,NULL,1,'2023-10-17 00:00:00',0.00,50.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (15,59,1,NULL,1,'2022-09-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I591',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (16,59,1,NULL,1,'2022-10-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I592',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (17,59,1,NULL,1,'2022-11-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I593',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (18,59,1,NULL,1,'2022-12-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I594',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (19,59,1,NULL,1,'2023-01-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I595',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (20,59,1,NULL,1,'2023-02-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I596',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (21,59,1,NULL,1,'2023-03-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I597',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (22,59,1,NULL,1,'2023-04-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I598',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (23,59,1,NULL,1,'2023-05-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I599',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (24,59,1,NULL,1,'2023-06-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I5910',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (25,59,1,NULL,1,'2023-07-17 20:11:37',0.00,25.00,NULL,NULL,'PL32I5911',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (26,99,1,NULL,1,'2023-04-17 20:11:37',0.00,10.00,NULL,NULL,'PL32I991',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (27,99,1,NULL,1,'2023-05-17 20:11:37',0.00,10.00,NULL,NULL,'PL32I992',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (28,99,1,NULL,1,'2023-06-17 20:11:37',0.00,10.00,NULL,NULL,'PL32I993',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (29,99,1,NULL,1,'2023-07-17 20:11:37',0.00,10.00,NULL,NULL,'PL32I994',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (30,99,1,NULL,1,'2023-08-17 20:11:37',0.00,10.00,NULL,NULL,'PL32I995',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (31,103,1,NULL,1,'2023-11-17 20:11:37',0.00,5.00,NULL,NULL,'PL32I1031',NULL,NULL,'EUR',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,3,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (32,82,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'830461b5ad84c1e7',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (33,34,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'ff8cf92f9773545c',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (34,110,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'a5415e027d83717c',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (35,91,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'1ca376a7b8d0e2d5',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (36,105,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'9555523ece178b6a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (37,176,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'a7c0f89867c8a428',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (38,163,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'57ca21492529910f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (39,119,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'99991cb2ffe28b8b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (40,114,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'7fc2d080a0d70d5f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (41,146,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'1d0aac8b34ff8b84',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (42,154,2,NULL,1,'2023-12-17 20:11:38',0.00,1200.00,NULL,NULL,'c75d99ea7586de97',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (43,170,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'20e577eba5667eae',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (44,8,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'2ccc981e3e5a1e8d',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (45,190,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'fe4e0f13e7eb09bf',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (46,179,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'e254b4f121439b6f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (47,48,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'ebd306ae8053c70f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (48,99,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'60cce134dbd4af13',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (49,96,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'624424ef23bab211',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (50,70,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'2ba05d7beabc92a6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (51,84,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'f0b56ae2e34b40b2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (52,28,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'42542107efb6f295',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (53,156,2,NULL,1,'2023-12-17 20:11:38',0.00,1200.00,NULL,NULL,'15093bca050f76cb',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (54,153,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'b707c69168d7550b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (55,195,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'10336515977ecfd6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (56,67,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'4af2784315e9f068',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (57,75,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'60040a9003287de2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (58,112,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'d05b6eb57e4fa850',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (59,188,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'acd346f2fe5f77bc',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (60,62,2,NULL,1,'2023-12-17 20:11:38',0.00,100.00,NULL,NULL,'023a722551f3e725',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (61,59,2,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'1202258df77a0fa2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (63,156,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'25fd6030886b7c5c',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (64,87,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'ba8f69f88fe9a279',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (65,124,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'15af525cf42e5b33',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (66,127,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'1afc702ecb5219fd',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (67,113,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'cad86325b8d974d2',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (68,160,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'91dcd9fea13e4d34',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (69,120,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'2f37622da3edd416',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (70,100,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'0cd0fead7f55fc4f',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (71,83,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'c6de9a43eb5b7aa3',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (72,72,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'0f56e1a0dd6ab6f3',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (73,155,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'776e13db77b1f674',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (74,150,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'8905d5e48dc6442a',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (75,149,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'86063ee6b2a9e896',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (76,77,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'22e53d83c72810f6',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (77,183,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'c14f7f184fe25f15',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (78,199,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'e4af20137ce2bdd5',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (79,89,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'11449abd78f15f83',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (80,129,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'797deb5dffdce687',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (81,67,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'27cc8136671b8d16',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (82,139,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'8e76e6c92073b839',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (83,174,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'13382d88dcdbf9c5',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (84,62,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'36af07a9a33d3f5d',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (85,71,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'b65d48375f052b5e',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (86,95,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'99f3b4bbbe0e2de3',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (87,65,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'55b9c4d23cf793e4',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (88,59,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'4a5cc20b54e1bf2d',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (89,55,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'49ca8e2d4f12f02b',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (90,194,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'35ec8cec4d7b3e0c',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (91,19,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'9d526f8939ed06bc',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (92,79,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'026ebccce765774b',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (93,106,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'a747e70aae3e2c37',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (94,18,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'c8661d25b19cc20a',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (95,177,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'23c1977d50939b3e',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (96,175,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'5900a1f4d9db201b',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (97,42,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'034acdc1fa387ffc',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (98,61,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'19b9fc43ca780269',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (99,132,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'8fa3d088dff273af',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (100,173,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'055d24ef0c16aeb2',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (101,195,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'23c029b556d782cd',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (102,25,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'422bb0afad03efe1',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (103,110,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'c55c272423d8f92b',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (104,31,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'96cda567448aa26b',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (105,12,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'44ac28a2795797e3',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (106,52,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'36371153332378fc',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (107,130,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'3231adeb2f830242',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (108,193,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'bec2677521a23f70',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (109,168,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'c73781dd9dfc1d86',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (110,82,4,NULL,1,'2023-12-17 20:11:38',0.00,50.00,NULL,NULL,'febc54389846736e',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (111,38,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'1272470c83cadd49',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (112,162,4,NULL,1,'2023-12-17 20:11:38',0.00,800.00,NULL,NULL,'bd7ec6b46ece178f',NULL,NULL,'USD',NULL,NULL,'2023-12-17 20:11:38',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0);
 /*!40000 ALTER TABLE `civicrm_contribution` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -2363,9 +2366,9 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_contribution_recur` WRITE;
 /*!40000 ALTER TABLE `civicrm_contribution_recur` DISABLE KEYS */;
 INSERT INTO `civicrm_contribution_recur` (`id`, `contact_id`, `amount`, `currency`, `frequency_unit`, `frequency_interval`, `installments`, `start_date`, `create_date`, `modified_date`, `cancel_date`, `cancel_reason`, `end_date`, `processor_id`, `payment_token_id`, `trxn_id`, `invoice_id`, `contribution_status_id`, `is_test`, `cycle_day`, `next_sched_contribution_date`, `failure_count`, `failure_retry_date`, `auto_renew`, `payment_processor_id`, `financial_type_id`, `payment_instrument_id`, `campaign_id`, `is_email_receipt`) VALUES
- (1,59,25.00,'USD','month',1,12,'2022-07-19 14:22:30','2023-10-19 14:22:30','2023-10-19 21:22:30',NULL,'',NULL,'CLC45',NULL,'56799',NULL,1,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1),
- (2,99,10.00,'CAD','month',1,6,'2023-02-19 14:22:30','2023-10-19 14:22:30','2023-10-19 21:22:30','2023-09-19 14:22:30','No longer interested',NULL,'CLR35',NULL,'22799',NULL,3,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1),
- (3,103,5.00,'EUR','month',3,3,'2023-09-19 14:22:30','2023-10-19 14:22:30','2023-10-19 21:22:30',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2023-12-19 14:22:30',0,NULL,0,1,NULL,NULL,NULL,1);
+ (1,59,25.00,'USD','month',1,12,'2022-09-17 20:11:37','2023-12-17 20:11:37','2023-12-17 20:11:37',NULL,'',NULL,'CLC45',NULL,'56799',NULL,1,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1),
+ (2,99,10.00,'CAD','month',1,6,'2023-04-17 20:11:37','2023-12-17 20:11:37','2023-12-17 20:11:37','2023-11-17 20:11:37','No longer interested',NULL,'CLR35',NULL,'22799',NULL,3,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1),
+ (3,103,5.00,'EUR','month',3,3,'2023-11-17 20:11:37','2023-12-17 20:11:37','2023-12-17 20:11:37',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2024-02-17 20:11:37',0,NULL,0,1,NULL,NULL,NULL,1);
 /*!40000 ALTER TABLE `civicrm_contribution_recur` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -2376,8 +2379,8 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_contribution_soft` WRITE;
 /*!40000 ALTER TABLE `civicrm_contribution_soft` DISABLE KEYS */;
 INSERT INTO `civicrm_contribution_soft` (`id`, `contribution_id`, `contact_id`, `amount`, `currency`, `pcp_id`, `pcp_display_in_roll`, `pcp_roll_nickname`, `pcp_personal_note`, `soft_credit_type_id`) VALUES
- (1,9,142,10.00,'USD',1,1,'Jones Family','Helping Hands',10),
- (2,10,142,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10);
+ (1,9,190,10.00,'USD',1,1,'Jones Family','Helping Hands',10),
+ (2,10,190,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10);
 /*!40000 ALTER TABLE `civicrm_contribution_soft` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -2975,7 +2978,7 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_domain` WRITE;
 /*!40000 ALTER TABLE `civicrm_domain` DISABLE KEYS */;
 INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES
- (1,'Default Domain Name',NULL,'5.68.1',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}');
+ (1,'Default Domain Name',NULL,'5.69.0',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}');
 /*!40000 ALTER TABLE `civicrm_domain` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -2987,196 +2990,197 @@ LOCK TABLES `civicrm_email` WRITE;
 /*!40000 ALTER TABLE `civicrm_email` DISABLE KEYS */;
 INSERT INTO `civicrm_email` (`id`, `contact_id`, `location_type_id`, `email`, `is_primary`, `is_billing`, `on_hold`, `is_bulkmail`, `hold_date`, `reset_date`, `signature_text`, `signature_html`) VALUES
  (1,1,1,'fixme.domainemail@example.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (2,25,1,'beulaw59@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (3,25,1,'wagnerb94@notmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (4,35,1,'mllero90@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (5,35,1,'omarmller@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (6,5,1,'jacobs.esta@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (7,54,1,'teddynielsen@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (8,4,1,'smith.a.damaris42@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (9,4,1,'smith.a.damaris@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (10,9,1,'brigetteroberts@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (11,9,1,'brigetter@notmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (12,143,1,'olsenk90@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (13,143,1,'olsenk@sample.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (14,123,1,'kz.roberts@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (15,123,1,'kathlynroberts79@lol.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (16,70,1,'daz.irvin@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (17,70,1,'irvindaz@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL),
- (18,173,1,'yadav.sharyn@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (19,186,1,'jacobs.kenny@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (20,186,1,'jacobsk50@sample.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (21,127,1,'kiarab15@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (22,101,1,'delanadimitrov@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (23,30,1,'josefag39@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (24,30,1,'grant.josefa82@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (25,89,1,'nielsenk60@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (26,187,1,'bobt59@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (27,194,1,'troymller@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (28,115,1,'deforest.u.clint2@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (29,115,1,'deforest.u.clint61@testing.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (30,129,1,'erikd57@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (31,129,1,'deforest.erik32@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (32,168,1,'ideforest7@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (33,168,1,'iveyd@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (34,157,1,'jameson.megan@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (35,157,1,'jameson.megan@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (36,172,1,'allanz@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (37,172,1,'at.zope30@testmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
- (38,197,1,'rayg@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (39,197,1,'raygrant@fishmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (40,98,1,'shaunapatel@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (41,94,1,'omarp@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (42,94,1,'omarp59@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (43,11,1,'cruzc@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (44,178,1,'rjameson4@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (45,144,1,'princessterry@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (46,201,1,'beulanielsen@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (47,87,1,'reynolds.q.laree29@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (48,8,1,'lt.blackwell40@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (49,8,1,'blackwell.t.laree45@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (50,33,1,'dimitrovb@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (51,33,1,'dimitrovb20@infomail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (52,42,1,'grantr7@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (53,120,1,'blackwell.josefa@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (54,169,1,'kathlynj@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (55,169,1,'kjones@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (56,17,1,'aolsen@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (57,17,1,'alexiao17@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL),
- (58,174,1,'miguelzope@example.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (59,71,1,'mllerb@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (60,71,1,'bf.mller@mymail.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (61,56,1,'cooper.merrie@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (62,171,1,'sx.robertson@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (63,171,1,'robertson.santina5@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (64,97,1,'chowski.bernadette@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (65,29,1,'cruz.beula75@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (66,138,1,'tobyj@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (67,138,1,'tjacobs90@fakemail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (68,107,1,'estachowski@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (69,107,1,'chowski.g.esta16@airmail.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (70,167,1,'ivanov.errol42@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (71,167,1,'ivanov.errol@testing.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (72,27,1,'robertson.merrie@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (73,27,1,'robertsonm44@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (74,184,1,'cooper.teddy48@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (75,184,1,'teddycooper72@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (76,102,1,'wagner.n.barry@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (77,102,1,'barryw56@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (78,96,1,'blackwella@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (79,106,1,'dazr@sample.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (80,106,1,'daz.rosario@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (81,86,1,'eleonorp@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (82,86,1,'eleonorparker61@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (83,24,1,'sbachman@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (84,189,1,'bachman.maria@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (85,176,1,'reynolds.iris@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (86,176,1,'ireynolds85@notmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (87,151,1,'kandacecruz-reynolds@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (88,49,1,'carlosivanov25@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (89,49,1,'carlosi64@example.biz',0,0,0,0,NULL,NULL,NULL,NULL),
- (90,200,1,'deforest-ivanov.lashawnda36@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (91,125,1,'ivanov.sharyn@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (92,125,1,'sharyni93@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (93,55,1,'ivanov.p.russell30@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (94,55,1,'russelli@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (95,150,1,'prentice.h.allan58@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (96,150,1,'prenticea@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (97,34,1,'sonnyprentice32@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (98,34,1,'sonnyprentice47@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (99,183,1,'ivanov.a.kenny24@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (100,183,1,'ivanovk@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (101,193,1,'ivanova@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (102,44,1,'divanov@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (103,44,1,'delanai@example.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (104,60,1,'louivanov85@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (105,60,1,'livanov@fakemail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (106,109,1,'lashawndaprentice31@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (107,109,1,'lashawndap@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (108,76,1,'prenticem4@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (109,76,1,'prenticem86@fakemail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (110,126,1,'troyp@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (111,126,1,'tprentice83@infomail.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (112,46,1,'miguels@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (113,74,1,'samuels.valene96@example.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (114,163,1,'kjensen-terry@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (115,162,1,'terry.brigette@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (116,162,1,'brigettet@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (117,21,1,'jc.wattson@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (118,14,1,'delanaw69@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (119,14,1,'wattson.delana@lol.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (120,170,1,'wattsonm@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (121,45,1,'estaw12@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (122,45,1,'estawattson@lol.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (123,199,1,'mo.mller8@testing.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (124,199,1,'mllerm@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (125,112,1,'mller.h.sherman73@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (126,79,1,'irvinmller41@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (127,79,1,'mlleri@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (128,48,1,'teddywilson@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (129,91,1,'rebekahj@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (130,91,1,'jameson.q.rebekah@fishmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (131,104,1,'wilson-jameson.brittney@example.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (132,104,1,'bj.wilson-jameson@testing.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (133,92,1,'maganwilson-jameson9@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (134,100,1,'justinawilson-deforest24@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (135,160,1,'alexiad24@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (136,198,1,'brentr@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (137,198,1,'reynoldsb42@fakemail.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (138,6,1,'reynolds.magan75@infomail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (139,15,1,'olsenb@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (140,137,1,'olsena@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (141,180,1,'cf.samson37@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (142,180,1,'cf.samson29@spamalot.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (143,114,1,'darens@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (144,114,1,'darens48@testing.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (145,32,1,'jl.samson-terry93@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (146,18,1,'andrewd35@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (147,18,1,'ae.daz94@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (148,90,1,'junkochowski28@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (149,39,1,'daz-chowskid16@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (150,121,1,'terrell.g.sherman70@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (151,121,1,'terrells@mymail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (152,196,1,'terrell.barry@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (153,154,1,'vz.reynolds@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (154,61,1,'arlynereynolds@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (155,61,1,'reynoldsa@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (156,63,1,'sreynolds21@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (157,63,1,'sonnyreynolds@airmail.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (158,85,1,'mcreynolds.justina@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (159,85,1,'mcreynolds.justina@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (160,36,1,'yadav.j.lou79@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (161,36,1,'louyadav@testing.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (162,118,1,'ap.lee-yadav10@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (163,118,1,'lee-yadava5@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (164,103,3,'info@oregondevelopment.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (165,187,2,'bterrell@oregondevelopment.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (166,135,3,'service@sacramentopartners.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (167,115,2,'clintdeforest@sacramentopartners.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (168,77,3,'contact@globalwellnesscenter.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (169,81,2,'smith.elina@globalwellnesscenter.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (170,22,3,'info@bostonacademy.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (171,33,2,'angelikaterrell45@bostonacademy.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (172,68,3,'contact@unitedagriculture.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (173,85,2,'mcreynolds.justina@unitedagriculture.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (174,133,3,'feedback@progressivepartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (175,72,2,'wagner.miguel@progressivepartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (176,19,3,'info@creativesolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (177,129,2,'erikd10@creativesolutions.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (178,161,3,'info@progressivenetwork.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (179,69,3,'info@globalsportscenter.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (180,4,2,'smith.damaris@globalsportscenter.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (181,95,3,'info@ruralagriculturetrust.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (182,139,3,'sales@ruralinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (183,197,2,'raygrant48@ruralinitiative.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (184,7,3,'sales@hanovereducation.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (185,15,2,'juliannt81@hanovereducation.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (186,148,3,'contact@localtrust.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (187,96,2,'valeneb@localtrust.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (188,202,1,'jenny@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (189,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (190,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (191,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL);
+ (2,19,1,'claudioy@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (3,153,1,'princesschowski44@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (4,153,1,'princesschowski66@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (5,16,1,'lees@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (6,16,1,'sanfordlee29@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (7,65,1,'ep.jones@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (8,70,1,'shermanc@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (9,120,1,'ae.barkley94@example.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (10,110,1,'daz.clint@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (11,45,1,'olsen.scott@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (12,45,1,'scottolsen@lol.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (13,12,1,'barkleys23@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (14,102,1,'blackwell.craig50@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (15,10,1,'jameson.lincoln@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (16,10,1,'lincolnjameson5@lol.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
+ (17,23,1,'kiarat54@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (18,94,1,'bachmanr46@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (19,38,1,'smith.troy@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (20,38,1,'smitht70@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (21,154,1,'jedroberts32@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (22,86,1,'bryons@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (23,95,1,'robertson.i.princess15@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (24,95,1,'robertson.princess@fakemail.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (25,182,1,'josefai3@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (26,74,1,'olsen.russell62@infomail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (27,74,1,'olsenr36@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (28,191,1,'samuels.s.shad@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (29,191,1,'ss.samuels40@infomail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (30,112,1,'brigettep12@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (31,117,1,'yadavc@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (32,117,1,'ch.yadav@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (33,57,1,'santinap44@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (34,57,1,'si.patel@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (35,124,1,'carylonp@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (36,124,1,'prenticec84@example.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (37,79,1,'dn.jones@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (38,79,1,'dn.jones52@mymail.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (39,76,1,'felishal74@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (40,67,1,'cruz.lashawnda@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (41,149,1,'trumanz@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (42,149,1,'trumanzope@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (43,160,1,'tr.nielsen@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (44,160,1,'nielsen.toby57@testmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (45,135,1,'elinag@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (46,114,1,'terrell.bernadette@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (47,114,1,'terrell.bernadette32@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (48,77,1,'robertse@lol.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (49,77,1,'robertse@testing.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (50,178,1,'ad.parker13@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (51,178,1,'allenparker@testmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (52,147,1,'bachman.jed@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (53,147,1,'bachmanj@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (54,131,1,'zope.n.jay14@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (55,200,1,'jones.jacob@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (56,200,1,'jonesj45@fakemail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (57,48,1,'robertsont41@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (58,179,1,'josefawagner10@spamalot.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (59,107,1,'elizabethpatel14@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (60,105,1,'bm.barkley30@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (61,105,1,'brzczysawb@example.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (62,136,1,'meijensen@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (63,136,1,'jensen.mei@testing.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
+ (64,142,1,'lashawndap47@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (65,142,1,'lashawndap41@sample.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (66,148,1,'winfordterrell@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (67,137,1,'cooperl22@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (68,137,1,'cooper.v.laree55@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (69,146,1,'brentchowski70@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (70,30,1,'fterry91@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (71,122,1,'winfordz@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (72,100,1,'mchowski@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (73,40,1,'lees@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (74,44,1,'lincolnprentice27@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (75,44,1,'prentice.lincoln@sample.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (76,63,1,'terry.megan@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (77,63,1,'mk.terry@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (78,96,1,'blackwell.rebekah@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (79,66,1,'patel.maria@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (80,66,1,'mariap9@lol.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (81,170,1,'beulawagner33@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (82,170,1,'wagner.k.beula@testing.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (83,13,1,'blackwell.elina@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (84,156,1,'blackwelln23@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (85,144,1,'bobb34@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (86,34,1,'raygrant61@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (87,75,1,'md.wilson-grant@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (88,187,1,'grant.princess@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (89,140,1,'grant.u.arlyne@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (90,81,1,'jblackwell84@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (91,81,1,'blackwellj25@spamalot.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
+ (92,139,1,'cs.blackwell@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (93,139,1,'blackwell.s.clint@lol.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (94,141,1,'grant.b.billy41@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (95,185,1,'dimitrov.heidi@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (96,185,1,'heididimitrov@infomail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
+ (97,127,1,'dimitrov.jackson@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (98,145,1,'wagner-lee.valene@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (99,145,1,'valenew@example.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (100,171,1,'rodrigolee@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (101,157,1,'terrell.d.sherman@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (102,69,1,'rterrell@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (103,69,1,'terrell.russell@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (104,195,1,'wattson.n.mei@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (105,195,1,'wattson.n.mei39@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (106,22,1,'tw.wattson90@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (107,33,1,'wattson.justina@sample.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (108,33,1,'wattson.justina@example.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (109,55,1,'erikwattson@lol.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (110,8,1,'parker-robertsb@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (111,8,1,'brittneyp@mymail.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (112,54,1,'roberts.bob@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (113,89,1,'robertsb@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (114,89,1,'brittneyr@notmail.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (115,62,1,'ivanov.lawerence@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (116,62,1,'ly.ivanov37@fishmail.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (117,83,1,'ivanov.bob@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (118,83,1,'ivanovb@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (119,130,1,'ts.ivanov@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (120,130,1,'ivanov.troy62@lol.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
+ (121,143,1,'nf.zope@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (122,150,1,'zopeb19@testmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (123,50,1,'zope.q.kandace@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (124,50,1,'kandacez51@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
+ (125,177,1,'smith.q.damaris68@sample.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (126,84,1,'wagner-smith.rosario@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (127,84,1,'wagner-smithr@testmail.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (128,59,1,'oq.cooper@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (129,27,1,'santinac@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (130,32,1,'sivanov@testing.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (131,24,1,'herminiam@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (132,24,1,'mcreynolds.s.herminia70@testing.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (133,93,1,'mller.q.claudio@spamalot.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (134,93,1,'mllerc51@infomail.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (135,109,1,'erikmller-daz@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (136,163,1,'mller-dazk@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (137,134,1,'terrell.brittney@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (138,134,1,'brittneyt@infomail.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (139,4,1,'terrell.x.norris67@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (140,4,1,'terrell.norris@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (141,169,1,'meit@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (142,90,1,'jones.junko@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (143,20,1,'jonesb@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (144,20,1,'jones.brent@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (145,104,1,'tjones@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (146,104,1,'trumanj@testmail.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (147,28,1,'rterrell@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (148,28,1,'rterrell@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (149,184,1,'terrell.roland@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (150,184,1,'terrell.roland@fakemail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
+ (151,152,1,'terrelle@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (152,165,1,'im.terry-nielsen@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (153,174,1,'nielsen.herminia@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (154,174,1,'herminianielsen@fakemail.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (155,181,1,'nielsen.t.brent@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (156,87,1,'santinan76@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (157,47,3,'info@tiptondevelopment.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (158,187,2,'olsen.sonny@tiptondevelopment.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (159,118,3,'feedback@ruraldevelopment.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (160,18,3,'sales@creativefellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (161,66,2,'patelm@creativefellowship.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (162,115,3,'info@creativepeace.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (163,8,2,'parker-roberts.brittney@creativepeace.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (164,9,3,'sales@unitedcenter.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (165,146,2,'bchowski@unitedcenter.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (166,46,3,'service@nyeducationcollective.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (167,20,2,'jones.brent@nyeducationcollective.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (168,197,3,'contact@pinefoodpartners.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (169,41,2,'nielseni@pinefoodpartners.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (170,15,3,'contact@gcfamilyassociation.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (171,32,2,'smith.ashley@gcfamilyassociation.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (172,121,3,'contact@urbanfamilycenter.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (173,35,3,'sales@floridafellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (174,152,2,'rsamson@floridafellowship.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (175,78,3,'info@sierrapeacefellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (176,26,3,'service@unitedfamily.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (177,145,2,'vwagner-lee84@unitedfamily.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (178,64,3,'sales@collegemusic.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (179,185,2,'dimitrov.heidi@collegemusic.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (180,162,3,'service@harveyagriculturefellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (181,55,2,'erikw@harveyagriculturefellowship.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (182,201,3,'contact@lincolnpoetry.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (183,114,2,'terrellb@lincolnpoetry.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (184,123,3,'feedback@statespartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (185,51,3,'feedback@minneapolissystems.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (186,150,2,'zope.m.brigette@minneapolissystems.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (187,17,3,'info@ecactionservices.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (188,77,2,'irisn@ecactionservices.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (189,202,1,'jenny@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (190,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (191,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (192,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_email` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -3300,165 +3304,165 @@ INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`,
  (60,'civicrm_financial_item',30,30,10.00),
  (61,'civicrm_contribution',31,31,5.00),
  (62,'civicrm_financial_item',31,31,5.00),
- (63,'civicrm_contribution',61,32,1200.00),
- (64,'civicrm_financial_item',32,32,1200.00),
- (65,'civicrm_contribution',38,33,100.00),
+ (63,'civicrm_contribution',32,32,100.00),
+ (64,'civicrm_financial_item',32,32,100.00),
+ (65,'civicrm_contribution',34,33,100.00),
  (66,'civicrm_financial_item',33,33,100.00),
- (67,'civicrm_contribution',41,34,100.00),
+ (67,'civicrm_contribution',36,34,100.00),
  (68,'civicrm_financial_item',34,34,100.00),
- (69,'civicrm_contribution',43,35,100.00),
+ (69,'civicrm_contribution',38,35,100.00),
  (70,'civicrm_financial_item',35,35,100.00),
- (71,'civicrm_contribution',34,36,100.00),
+ (71,'civicrm_contribution',40,36,100.00),
  (72,'civicrm_financial_item',36,36,100.00),
- (73,'civicrm_contribution',52,37,50.00),
- (74,'civicrm_financial_item',37,37,50.00),
- (75,'civicrm_contribution',47,38,50.00),
- (76,'civicrm_financial_item',38,38,50.00),
- (77,'civicrm_contribution',36,39,100.00),
+ (73,'civicrm_contribution',41,37,100.00),
+ (74,'civicrm_financial_item',37,37,100.00),
+ (75,'civicrm_contribution',44,38,100.00),
+ (76,'civicrm_financial_item',38,38,100.00),
+ (77,'civicrm_contribution',48,39,100.00),
  (78,'civicrm_financial_item',39,39,100.00),
- (79,'civicrm_contribution',53,40,50.00),
- (80,'civicrm_financial_item',40,40,50.00),
- (81,'civicrm_contribution',39,41,100.00),
+ (79,'civicrm_contribution',50,40,100.00),
+ (80,'civicrm_financial_item',40,40,100.00),
+ (81,'civicrm_contribution',52,41,100.00),
  (82,'civicrm_financial_item',41,41,100.00),
- (83,'civicrm_contribution',32,42,100.00),
+ (83,'civicrm_contribution',54,42,100.00),
  (84,'civicrm_financial_item',42,42,100.00),
- (85,'civicrm_contribution',59,43,50.00),
- (86,'civicrm_financial_item',43,43,50.00),
- (87,'civicrm_contribution',58,44,50.00),
- (88,'civicrm_financial_item',44,44,50.00),
- (89,'civicrm_contribution',45,45,100.00),
+ (85,'civicrm_contribution',56,43,100.00),
+ (86,'civicrm_financial_item',43,43,100.00),
+ (87,'civicrm_contribution',58,44,100.00),
+ (88,'civicrm_financial_item',44,44,100.00),
+ (89,'civicrm_contribution',60,45,100.00),
  (90,'civicrm_financial_item',45,45,100.00),
- (91,'civicrm_contribution',35,46,100.00),
- (92,'civicrm_financial_item',46,46,100.00),
- (93,'civicrm_contribution',54,47,50.00),
+ (91,'civicrm_contribution',33,46,50.00),
+ (92,'civicrm_financial_item',46,46,50.00),
+ (93,'civicrm_contribution',35,47,50.00),
  (94,'civicrm_financial_item',47,47,50.00),
- (95,'civicrm_contribution',60,48,1200.00),
- (96,'civicrm_financial_item',48,48,1200.00),
- (97,'civicrm_contribution',57,49,50.00),
+ (95,'civicrm_contribution',37,48,50.00),
+ (96,'civicrm_financial_item',48,48,50.00),
+ (97,'civicrm_contribution',39,49,50.00),
  (98,'civicrm_financial_item',49,49,50.00),
- (99,'civicrm_contribution',40,50,100.00),
- (100,'civicrm_financial_item',50,50,100.00),
- (101,'civicrm_contribution',49,51,50.00),
+ (99,'civicrm_contribution',43,50,50.00),
+ (100,'civicrm_financial_item',50,50,50.00),
+ (101,'civicrm_contribution',45,51,50.00),
  (102,'civicrm_financial_item',51,51,50.00),
- (103,'civicrm_contribution',44,52,100.00),
- (104,'civicrm_financial_item',52,52,100.00),
- (105,'civicrm_contribution',48,53,50.00),
+ (103,'civicrm_contribution',46,52,50.00),
+ (104,'civicrm_financial_item',52,52,50.00),
+ (105,'civicrm_contribution',47,53,50.00),
  (106,'civicrm_financial_item',53,53,50.00),
- (107,'civicrm_contribution',55,54,50.00),
+ (107,'civicrm_contribution',49,54,50.00),
  (108,'civicrm_financial_item',54,54,50.00),
- (109,'civicrm_contribution',46,55,100.00),
- (110,'civicrm_financial_item',55,55,100.00),
- (111,'civicrm_contribution',51,56,50.00),
+ (109,'civicrm_contribution',51,55,50.00),
+ (110,'civicrm_financial_item',55,55,50.00),
+ (111,'civicrm_contribution',55,56,50.00),
  (112,'civicrm_financial_item',56,56,50.00),
- (113,'civicrm_contribution',33,57,100.00),
- (114,'civicrm_financial_item',57,57,100.00),
- (115,'civicrm_contribution',50,58,50.00),
+ (113,'civicrm_contribution',57,57,50.00),
+ (114,'civicrm_financial_item',57,57,50.00),
+ (115,'civicrm_contribution',59,58,50.00),
  (116,'civicrm_financial_item',58,58,50.00),
- (117,'civicrm_contribution',42,59,100.00),
- (118,'civicrm_financial_item',59,59,100.00),
- (119,'civicrm_contribution',37,60,100.00),
- (120,'civicrm_financial_item',60,60,100.00),
- (121,'civicrm_contribution',56,61,50.00),
- (122,'civicrm_financial_item',61,61,50.00),
- (123,'civicrm_contribution',85,62,50.00),
+ (117,'civicrm_contribution',61,59,50.00),
+ (118,'civicrm_financial_item',59,59,50.00),
+ (119,'civicrm_contribution',42,60,1200.00),
+ (120,'civicrm_financial_item',60,60,1200.00),
+ (121,'civicrm_contribution',53,61,1200.00),
+ (122,'civicrm_financial_item',61,61,1200.00),
+ (123,'civicrm_contribution',64,62,50.00),
  (124,'civicrm_financial_item',62,62,50.00),
- (125,'civicrm_contribution',73,63,50.00),
+ (125,'civicrm_contribution',67,63,50.00),
  (126,'civicrm_financial_item',63,63,50.00),
- (127,'civicrm_contribution',75,64,50.00),
+ (127,'civicrm_contribution',70,64,50.00),
  (128,'civicrm_financial_item',64,64,50.00),
- (129,'civicrm_contribution',110,65,50.00),
+ (129,'civicrm_contribution',73,65,50.00),
  (130,'civicrm_financial_item',65,65,50.00),
- (131,'civicrm_contribution',72,66,50.00),
+ (131,'civicrm_contribution',76,66,50.00),
  (132,'civicrm_financial_item',66,66,50.00),
- (133,'civicrm_contribution',105,67,50.00),
+ (133,'civicrm_contribution',79,67,50.00),
  (134,'civicrm_financial_item',67,67,50.00),
- (135,'civicrm_contribution',95,68,50.00),
+ (135,'civicrm_contribution',82,68,50.00),
  (136,'civicrm_financial_item',68,68,50.00),
- (137,'civicrm_contribution',76,69,50.00),
+ (137,'civicrm_contribution',85,69,50.00),
  (138,'civicrm_financial_item',69,69,50.00),
  (139,'civicrm_contribution',89,70,50.00),
  (140,'civicrm_financial_item',70,70,50.00),
- (141,'civicrm_contribution',79,71,50.00),
+ (141,'civicrm_contribution',92,71,50.00),
  (142,'civicrm_financial_item',71,71,50.00),
- (143,'civicrm_contribution',88,72,50.00),
+ (143,'civicrm_contribution',95,72,50.00),
  (144,'civicrm_financial_item',72,72,50.00),
- (145,'civicrm_contribution',69,73,50.00),
+ (145,'civicrm_contribution',98,73,50.00),
  (146,'civicrm_financial_item',73,73,50.00),
- (147,'civicrm_contribution',83,74,50.00),
+ (147,'civicrm_contribution',101,74,50.00),
  (148,'civicrm_financial_item',74,74,50.00),
- (149,'civicrm_contribution',97,75,50.00),
+ (149,'civicrm_contribution',104,75,50.00),
  (150,'civicrm_financial_item',75,75,50.00),
- (151,'civicrm_contribution',87,76,50.00),
+ (151,'civicrm_contribution',107,76,50.00),
  (152,'civicrm_financial_item',76,76,50.00),
- (153,'civicrm_contribution',102,77,50.00),
+ (153,'civicrm_contribution',110,77,50.00),
  (154,'civicrm_financial_item',77,77,50.00),
- (155,'civicrm_contribution',100,78,800.00),
+ (155,'civicrm_contribution',65,78,800.00),
  (156,'civicrm_financial_item',78,78,800.00),
- (157,'civicrm_contribution',74,79,800.00),
+ (157,'civicrm_contribution',68,79,800.00),
  (158,'civicrm_financial_item',79,79,800.00),
  (159,'civicrm_contribution',71,80,800.00),
  (160,'civicrm_financial_item',80,80,800.00),
- (161,'civicrm_contribution',109,81,800.00),
+ (161,'civicrm_contribution',74,81,800.00),
  (162,'civicrm_financial_item',81,81,800.00),
- (163,'civicrm_contribution',68,82,800.00),
+ (163,'civicrm_contribution',77,82,800.00),
  (164,'civicrm_financial_item',82,82,800.00),
- (165,'civicrm_contribution',108,83,800.00),
+ (165,'civicrm_contribution',80,83,800.00),
  (166,'civicrm_financial_item',83,83,800.00),
- (167,'civicrm_contribution',82,84,800.00),
+ (167,'civicrm_contribution',83,84,800.00),
  (168,'civicrm_financial_item',84,84,800.00),
- (169,'civicrm_contribution',111,85,800.00),
+ (169,'civicrm_contribution',86,85,800.00),
  (170,'civicrm_financial_item',85,85,800.00),
- (171,'civicrm_contribution',106,86,800.00),
+ (171,'civicrm_contribution',87,86,800.00),
  (172,'civicrm_financial_item',86,86,800.00),
- (173,'civicrm_contribution',98,87,800.00),
+ (173,'civicrm_contribution',90,87,800.00),
  (174,'civicrm_financial_item',87,87,800.00),
- (175,'civicrm_contribution',80,88,800.00),
+ (175,'civicrm_contribution',93,88,800.00),
  (176,'civicrm_financial_item',88,88,800.00),
- (177,'civicrm_contribution',63,89,800.00),
+ (177,'civicrm_contribution',96,89,800.00),
  (178,'civicrm_financial_item',89,89,800.00),
- (179,'civicrm_contribution',92,90,800.00),
+ (179,'civicrm_contribution',99,90,800.00),
  (180,'civicrm_financial_item',90,90,800.00),
- (181,'civicrm_contribution',90,91,800.00),
+ (181,'civicrm_contribution',102,91,800.00),
  (182,'civicrm_financial_item',91,91,800.00),
- (183,'civicrm_contribution',101,92,800.00),
+ (183,'civicrm_contribution',105,92,800.00),
  (184,'civicrm_financial_item',92,92,800.00),
- (185,'civicrm_contribution',77,93,800.00),
+ (185,'civicrm_contribution',108,93,800.00),
  (186,'civicrm_financial_item',93,93,800.00),
- (187,'civicrm_contribution',78,94,800.00),
+ (187,'civicrm_contribution',111,94,800.00),
  (188,'civicrm_financial_item',94,94,800.00),
- (189,'civicrm_contribution',84,95,800.00),
+ (189,'civicrm_contribution',112,95,800.00),
  (190,'civicrm_financial_item',95,95,800.00),
- (191,'civicrm_contribution',65,96,50.00),
+ (191,'civicrm_contribution',63,96,50.00),
  (192,'civicrm_financial_item',96,96,50.00),
- (193,'civicrm_contribution',81,97,50.00),
+ (193,'civicrm_contribution',66,97,50.00),
  (194,'civicrm_financial_item',97,97,50.00),
- (195,'civicrm_contribution',86,98,50.00),
+ (195,'civicrm_contribution',69,98,50.00),
  (196,'civicrm_financial_item',98,98,50.00),
- (197,'civicrm_contribution',66,99,50.00),
+ (197,'civicrm_contribution',72,99,50.00),
  (198,'civicrm_financial_item',99,99,50.00),
- (199,'civicrm_contribution',94,100,50.00),
+ (199,'civicrm_contribution',75,100,50.00),
  (200,'civicrm_financial_item',100,100,50.00),
- (201,'civicrm_contribution',93,101,50.00),
+ (201,'civicrm_contribution',78,101,50.00),
  (202,'civicrm_financial_item',101,101,50.00),
- (203,'civicrm_contribution',91,102,50.00),
+ (203,'civicrm_contribution',81,102,50.00),
  (204,'civicrm_financial_item',102,102,50.00),
- (205,'civicrm_contribution',104,103,50.00),
+ (205,'civicrm_contribution',84,103,50.00),
  (206,'civicrm_financial_item',103,103,50.00),
- (207,'civicrm_contribution',64,104,50.00),
+ (207,'civicrm_contribution',88,104,50.00),
  (208,'civicrm_financial_item',104,104,50.00),
- (209,'civicrm_contribution',70,105,50.00),
+ (209,'civicrm_contribution',91,105,50.00),
  (210,'civicrm_financial_item',105,105,50.00),
- (211,'civicrm_contribution',112,106,50.00),
+ (211,'civicrm_contribution',94,106,50.00),
  (212,'civicrm_financial_item',106,106,50.00),
- (213,'civicrm_contribution',99,107,50.00),
+ (213,'civicrm_contribution',97,107,50.00),
  (214,'civicrm_financial_item',107,107,50.00),
- (215,'civicrm_contribution',96,108,50.00),
+ (215,'civicrm_contribution',100,108,50.00),
  (216,'civicrm_financial_item',108,108,50.00),
- (217,'civicrm_contribution',67,109,50.00),
+ (217,'civicrm_contribution',103,109,50.00),
  (218,'civicrm_financial_item',109,109,50.00),
- (219,'civicrm_contribution',107,110,50.00),
+ (219,'civicrm_contribution',106,110,50.00),
  (220,'civicrm_financial_item',110,110,50.00),
- (221,'civicrm_contribution',103,111,50.00),
+ (221,'civicrm_contribution',109,111,50.00),
  (222,'civicrm_financial_item',111,111,50.00);
 /*!40000 ALTER TABLE `civicrm_entity_financial_trxn` ENABLE KEYS */;
 UNLOCK TABLES;
@@ -3470,126 +3474,126 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_entity_tag` WRITE;
 /*!40000 ALTER TABLE `civicrm_entity_tag` DISABLE KEYS */;
 INSERT INTO `civicrm_entity_tag` (`id`, `entity_table`, `entity_id`, `tag_id`) VALUES
- (111,'civicrm_contact',2,5),
- (14,'civicrm_contact',4,4),
- (13,'civicrm_contact',5,4),
- (15,'civicrm_contact',9,4),
- (16,'civicrm_contact',9,5),
- (98,'civicrm_contact',13,5),
- (99,'civicrm_contact',15,4),
- (100,'civicrm_contact',15,5),
- (107,'civicrm_contact',18,4),
- (108,'civicrm_contact',18,5),
- (6,'civicrm_contact',19,3),
- (86,'civicrm_contact',21,4),
- (87,'civicrm_contact',21,5),
- (64,'civicrm_contact',24,4),
- (65,'civicrm_contact',24,5),
- (51,'civicrm_contact',29,4),
- (11,'civicrm_contact',31,5),
- (37,'civicrm_contact',33,4),
- (38,'civicrm_contact',33,5),
- (73,'civicrm_contact',34,4),
- (12,'civicrm_contact',35,4),
- (117,'civicrm_contact',36,4),
- (118,'civicrm_contact',36,5),
- (55,'civicrm_contact',37,4),
- (45,'civicrm_contact',38,5),
- (109,'civicrm_contact',39,4),
- (110,'civicrm_contact',39,5),
- (56,'civicrm_contact',40,4),
- (76,'civicrm_contact',44,4),
- (80,'civicrm_contact',46,4),
- (115,'civicrm_contact',47,4),
- (91,'civicrm_contact',48,4),
- (92,'civicrm_contact',48,5),
- (69,'civicrm_contact',49,5),
- (3,'civicrm_contact',50,3),
- (4,'civicrm_contact',59,2),
- (114,'civicrm_contact',61,4),
- (8,'civicrm_contact',64,1),
- (7,'civicrm_contact',69,3),
- (19,'civicrm_contact',70,5),
- (48,'civicrm_contact',71,4),
- (79,'civicrm_contact',76,5),
- (2,'civicrm_contact',77,1),
- (39,'civicrm_contact',80,5),
- (46,'civicrm_contact',81,4),
- (47,'civicrm_contact',81,5),
- (20,'civicrm_contact',83,5),
- (77,'civicrm_contact',84,4),
- (78,'civicrm_contact',84,5),
- (63,'civicrm_contact',86,5),
- (24,'civicrm_contact',89,5),
- (43,'civicrm_contact',93,4),
- (44,'civicrm_contact',93,5),
- (32,'civicrm_contact',94,5),
- (60,'civicrm_contact',96,4),
- (61,'civicrm_contact',96,5),
- (101,'civicrm_contact',99,4),
- (102,'civicrm_contact',99,5),
- (23,'civicrm_contact',101,4),
- (58,'civicrm_contact',102,4),
- (59,'civicrm_contact',102,5),
- (1,'civicrm_contact',103,1),
- (93,'civicrm_contact',104,5),
- (53,'civicrm_contact',107,5),
- (94,'civicrm_contact',110,5),
- (119,'civicrm_contact',111,4),
- (120,'civicrm_contact',111,5),
- (90,'civicrm_contact',112,4),
- (105,'civicrm_contact',114,4),
- (106,'civicrm_contact',114,5),
- (26,'civicrm_contact',115,5),
- (62,'civicrm_contact',119,4),
- (40,'civicrm_contact',120,4),
- (41,'civicrm_contact',120,5),
- (9,'civicrm_contact',122,1),
- (17,'civicrm_contact',123,4),
- (18,'civicrm_contact',123,5),
- (89,'civicrm_contact',124,4),
- (70,'civicrm_contact',125,4),
- (36,'civicrm_contact',128,4),
- (42,'civicrm_contact',130,5),
- (5,'civicrm_contact',133,2),
- (83,'civicrm_contact',140,4),
- (66,'civicrm_contact',141,4),
- (67,'civicrm_contact',141,5),
- (52,'civicrm_contact',145,5),
- (81,'civicrm_contact',147,4),
- (82,'civicrm_contact',147,5),
- (10,'civicrm_contact',148,2),
- (71,'civicrm_contact',150,4),
- (72,'civicrm_contact',150,5),
- (68,'civicrm_contact',151,4),
- (113,'civicrm_contact',154,5),
- (95,'civicrm_contact',160,4),
- (84,'civicrm_contact',162,4),
- (85,'civicrm_contact',162,5),
- (54,'civicrm_contact',167,5),
- (27,'civicrm_contact',168,4),
- (28,'civicrm_contact',168,5),
- (88,'civicrm_contact',170,4),
- (49,'civicrm_contact',171,4),
- (50,'civicrm_contact',171,5),
- (29,'civicrm_contact',172,4),
- (116,'civicrm_contact',175,5),
- (33,'civicrm_contact',178,5),
- (103,'civicrm_contact',180,4),
- (104,'civicrm_contact',180,5),
- (74,'civicrm_contact',183,4),
- (75,'civicrm_contact',183,5),
- (57,'civicrm_contact',184,5),
- (31,'civicrm_contact',185,5),
- (21,'civicrm_contact',186,4),
- (22,'civicrm_contact',186,5),
- (25,'civicrm_contact',194,4),
- (112,'civicrm_contact',196,4),
- (30,'civicrm_contact',197,4),
- (96,'civicrm_contact',198,4),
- (97,'civicrm_contact',198,5),
- (34,'civicrm_contact',201,4),
- (35,'civicrm_contact',201,5);
+ (112,'civicrm_contact',4,4),
+ (111,'civicrm_contact',5,4),
+ (76,'civicrm_contact',6,4),
+ (77,'civicrm_contact',6,5),
+ (3,'civicrm_contact',9,1),
+ (107,'civicrm_contact',11,4),
+ (20,'civicrm_contact',12,4),
+ (21,'civicrm_contact',12,5),
+ (5,'civicrm_contact',15,1),
+ (15,'civicrm_contact',16,5),
+ (10,'civicrm_contact',17,3),
+ (2,'civicrm_contact',18,1),
+ (115,'civicrm_contact',20,4),
+ (47,'civicrm_contact',21,4),
+ (48,'civicrm_contact',21,5),
+ (24,'civicrm_contact',23,4),
+ (7,'civicrm_contact',26,3),
+ (116,'civicrm_contact',28,5),
+ (61,'civicrm_contact',29,4),
+ (55,'civicrm_contact',30,4),
+ (56,'civicrm_contact',30,5),
+ (88,'civicrm_contact',33,4),
+ (89,'civicrm_contact',33,5),
+ (67,'civicrm_contact',34,4),
+ (6,'civicrm_contact',35,3),
+ (19,'civicrm_contact',37,5),
+ (59,'civicrm_contact',40,4),
+ (113,'civicrm_contact',42,4),
+ (114,'civicrm_contact',42,5),
+ (4,'civicrm_contact',46,2),
+ (1,'civicrm_contact',47,2),
+ (105,'civicrm_contact',52,4),
+ (91,'civicrm_contact',54,4),
+ (92,'civicrm_contact',54,5),
+ (34,'civicrm_contact',57,4),
+ (35,'civicrm_contact',57,5),
+ (103,'civicrm_contact',59,5),
+ (93,'civicrm_contact',62,4),
+ (62,'civicrm_contact',66,4),
+ (63,'civicrm_contact',66,5),
+ (84,'civicrm_contact',69,4),
+ (85,'civicrm_contact',69,5),
+ (16,'civicrm_contact',70,5),
+ (11,'civicrm_contact',72,4),
+ (12,'civicrm_contact',72,5),
+ (30,'civicrm_contact',74,4),
+ (36,'civicrm_contact',79,4),
+ (106,'civicrm_contact',80,5),
+ (69,'civicrm_contact',81,4),
+ (70,'civicrm_contact',81,5),
+ (94,'civicrm_contact',83,4),
+ (100,'civicrm_contact',84,4),
+ (101,'civicrm_contact',84,5),
+ (17,'civicrm_contact',85,5),
+ (28,'civicrm_contact',86,5),
+ (46,'civicrm_contact',88,4),
+ (104,'civicrm_contact',91,4),
+ (108,'civicrm_contact',93,4),
+ (109,'civicrm_contact',93,5),
+ (50,'civicrm_contact',107,5),
+ (25,'civicrm_contact',108,4),
+ (26,'civicrm_contact',108,5),
+ (110,'civicrm_contact',109,4),
+ (18,'civicrm_contact',110,4),
+ (37,'civicrm_contact',113,4),
+ (42,'civicrm_contact',114,4),
+ (43,'civicrm_contact',114,5),
+ (38,'civicrm_contact',116,5),
+ (32,'civicrm_contact',117,4),
+ (33,'civicrm_contact',117,5),
+ (9,'civicrm_contact',123,2),
+ (90,'civicrm_contact',128,4),
+ (45,'civicrm_contact',131,4),
+ (79,'civicrm_contact',132,4),
+ (80,'civicrm_contact',132,5),
+ (102,'civicrm_contact',133,5),
+ (51,'civicrm_contact',136,5),
+ (54,'civicrm_contact',137,5),
+ (71,'civicrm_contact',139,4),
+ (74,'civicrm_contact',141,4),
+ (75,'civicrm_contact',141,5),
+ (52,'civicrm_contact',142,5),
+ (95,'civicrm_contact',143,5),
+ (39,'civicrm_contact',149,5),
+ (96,'civicrm_contact',150,4),
+ (97,'civicrm_contact',150,5),
+ (117,'civicrm_contact',152,4),
+ (13,'civicrm_contact',153,4),
+ (14,'civicrm_contact',153,5),
+ (27,'civicrm_contact',154,5),
+ (65,'civicrm_contact',156,4),
+ (66,'civicrm_contact',156,5),
+ (83,'civicrm_contact',157,5),
+ (53,'civicrm_contact',158,4),
+ (57,'civicrm_contact',159,4),
+ (58,'civicrm_contact',159,5),
+ (8,'civicrm_contact',162,3),
+ (118,'civicrm_contact',165,4),
+ (119,'civicrm_contact',165,5),
+ (72,'civicrm_contact',168,4),
+ (73,'civicrm_contact',168,5),
+ (64,'civicrm_contact',170,5),
+ (81,'civicrm_contact',171,4),
+ (82,'civicrm_contact',171,5),
+ (44,'civicrm_contact',178,4),
+ (49,'civicrm_contact',179,4),
+ (98,'civicrm_contact',180,4),
+ (99,'civicrm_contact',180,5),
+ (120,'civicrm_contact',181,4),
+ (29,'civicrm_contact',182,4),
+ (78,'civicrm_contact',185,4),
+ (68,'civicrm_contact',187,4),
+ (60,'civicrm_contact',188,4),
+ (40,'civicrm_contact',189,4),
+ (41,'civicrm_contact',189,5),
+ (31,'civicrm_contact',191,4),
+ (22,'civicrm_contact',192,4),
+ (23,'civicrm_contact',192,5),
+ (86,'civicrm_contact',195,4),
+ (87,'civicrm_contact',195,5);
 /*!40000 ALTER TABLE `civicrm_entity_tag` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -3599,13 +3603,13 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_event` WRITE;
 /*!40000 ALTER TABLE `civicrm_event` DISABLE KEYS */;
-INSERT INTO `civicrm_event` (`id`, `title`, `summary`, `description`, `event_type_id`, `participant_listing_id`, `is_public`, `start_date`, `end_date`, `is_online_registration`, `registration_link_text`, `registration_start_date`, `registration_end_date`, `max_participants`, `event_full_text`, `is_monetary`, `financial_type_id`, `payment_processor`, `is_map`, `is_active`, `fee_label`, `is_show_location`, `loc_block_id`, `default_role_id`, `intro_text`, `footer_text`, `confirm_title`, `confirm_text`, `confirm_footer_text`, `is_email_confirm`, `confirm_email_text`, `confirm_from_name`, `confirm_from_email`, `cc_confirm`, `bcc_confirm`, `default_fee_id`, `default_discount_fee_id`, `thankyou_title`, `thankyou_text`, `thankyou_footer_text`, `is_pay_later`, `pay_later_text`, `pay_later_receipt`, `is_partial_payment`, `initial_amount_label`, `initial_amount_help_text`, `min_initial_amount`, `is_multiple_registrations`, `max_additional_participants`, `allow_same_participant_emails`, `has_waitlist`, `requires_approval`, `expiration_time`, `allow_selfcancelxfer`, `selfcancelxfer_time`, `waitlist_text`, `approval_req_text`, `is_template`, `template_title`, `created_id`, `created_date`, `currency`, `campaign_id`, `is_share`, `is_confirm_enabled`, `parent_event_id`, `slot_label_id`, `dedupe_rule_group_id`, `is_billing_required`) VALUES
- (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2024-04-19 17:00:00','2024-04-21 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','<p>Thank you for your support. Your contribution will help us build even better tools.</p><p>Please tell your friends and colleagues about this wonderful event.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),
- (2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together,  and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2023-10-18 12:00:00','2023-10-18 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,0,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','<p>Thank you for your support. Your participation will help build new parks.</p><p>Please tell your friends and colleagues about the concert.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),
- (3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2024-05-19 07:00:00','2024-05-22 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,0,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','<em>A Soccer Youth Event</em>','Review and Confirm Your Registration Information','','<em>A Soccer Youth Event</em>',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','<p>Thank you for your support. Your participation will help save thousands of acres of rainforest.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),
- (4,NULL,NULL,NULL,4,1,1,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting without Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),
- (5,NULL,NULL,NULL,4,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),
- (6,NULL,NULL,NULL,1,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,1,4,NULL,0,1,'Conference Fee',1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,1,NULL,'Event Template Dept.','event_templates@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0);
+INSERT INTO `civicrm_event` (`id`, `title`, `summary`, `description`, `event_type_id`, `participant_listing_id`, `is_public`, `start_date`, `end_date`, `is_online_registration`, `registration_link_text`, `registration_start_date`, `registration_end_date`, `max_participants`, `event_full_text`, `is_monetary`, `financial_type_id`, `payment_processor`, `is_map`, `is_active`, `fee_label`, `is_show_location`, `loc_block_id`, `default_role_id`, `intro_text`, `footer_text`, `confirm_title`, `confirm_text`, `confirm_footer_text`, `is_email_confirm`, `confirm_email_text`, `confirm_from_name`, `confirm_from_email`, `cc_confirm`, `bcc_confirm`, `default_fee_id`, `default_discount_fee_id`, `thankyou_title`, `thankyou_text`, `thankyou_footer_text`, `is_pay_later`, `pay_later_text`, `pay_later_receipt`, `is_partial_payment`, `initial_amount_label`, `initial_amount_help_text`, `min_initial_amount`, `is_multiple_registrations`, `max_additional_participants`, `allow_same_participant_emails`, `has_waitlist`, `requires_approval`, `expiration_time`, `allow_selfcancelxfer`, `selfcancelxfer_time`, `waitlist_text`, `approval_req_text`, `is_template`, `template_title`, `created_id`, `created_date`, `currency`, `campaign_id`, `is_share`, `is_confirm_enabled`, `parent_event_id`, `slot_label_id`, `dedupe_rule_group_id`, `is_billing_required`, `is_show_calendar_links`) VALUES
+ (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2024-06-17 17:00:00','2024-06-19 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','<p>Thank you for your support. Your contribution will help us build even better tools.</p><p>Please tell your friends and colleagues about this wonderful event.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
+ (2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together,  and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2023-12-16 12:00:00','2023-12-16 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,0,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','<p>Thank you for your support. Your participation will help build new parks.</p><p>Please tell your friends and colleagues about the concert.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
+ (3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2024-07-17 07:00:00','2024-07-20 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,0,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','<em>A Soccer Youth Event</em>','Review and Confirm Your Registration Information','','<em>A Soccer Youth Event</em>',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','<p>Thank you for your support. Your participation will help save thousands of acres of rainforest.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
+ (4,NULL,NULL,NULL,4,1,1,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting without Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
+ (5,NULL,NULL,NULL,4,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
+ (6,NULL,NULL,NULL,1,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,1,4,NULL,0,1,'Conference Fee',1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,1,NULL,'Event Template Dept.','event_templates@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1);
 /*!40000 ALTER TABLE `civicrm_event` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -3640,12 +3644,14 @@ INSERT INTO `civicrm_extension` (`id`, `type`, `full_name`, `name`, `label`, `fi
  (4,'module','recaptcha','reCAPTCHA','reCAPTCHA','recaptcha',NULL,1),
  (5,'module','ckeditor4','CKEditor4','CKEditor4','ckeditor4',NULL,1),
  (6,'module','org.civicrm.flexmailer','FlexMailer','FlexMailer','flexmailer',NULL,1),
- (7,'module','civi_contribute','CiviContribute','CiviContribute','civi_contribute',NULL,1),
- (8,'module','civi_event','CiviEvent','CiviEvent','civi_event',NULL,1),
- (9,'module','civi_mail','CiviMail','CiviMail','civi_mail',NULL,1),
- (10,'module','civi_member','CiviMember','CiviMember','civi_member',NULL,1),
- (11,'module','civi_pledge','CiviPledge','CiviPledge','civi_pledge',NULL,1),
- (12,'module','civi_report','CiviReport','CiviReport','civi_report',NULL,1);
+ (7,'module','civi_campaign','CiviCampaign','CiviCampaign','civi_campaign',NULL,1),
+ (8,'module','civi_case','CiviCase','CiviCase','civi_case',NULL,1),
+ (9,'module','civi_contribute','CiviContribute','CiviContribute','civi_contribute',NULL,1),
+ (10,'module','civi_event','CiviEvent','CiviEvent','civi_event',NULL,1),
+ (11,'module','civi_mail','CiviMail','CiviMail','civi_mail',NULL,1),
+ (12,'module','civi_member','CiviMember','CiviMember','civi_member',NULL,1),
+ (13,'module','civi_pledge','CiviPledge','CiviPledge','civi_pledge',NULL,1),
+ (14,'module','civi_report','CiviReport','CiviReport','civi_report',NULL,1);
 /*!40000 ALTER TABLE `civicrm_extension` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -3689,117 +3695,117 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_financial_item` WRITE;
 /*!40000 ALTER TABLE `civicrm_financial_item` DISABLE KEYS */;
 INSERT INTO `civicrm_financial_item` (`id`, `created_date`, `transaction_date`, `contact_id`, `description`, `amount`, `currency`, `financial_account_id`, `status_id`, `entity_table`, `entity_id`) VALUES
- (1,'2023-10-19 21:22:30','2013-10-19 14:22:30',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),
- (2,'2023-10-19 21:22:30','2021-07-19 14:22:30',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),
- (3,'2023-10-19 21:22:30','2017-09-24 01:22:30',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3),
- (4,'2023-10-19 21:22:30','2021-07-19 14:22:30',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),
- (5,'2023-10-19 21:22:30','2021-07-19 14:22:30',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5),
- (6,'2023-10-19 21:22:30','2023-07-26 13:40:30',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6),
- (7,'2023-10-19 21:22:30','2023-10-17 14:22:30',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7),
- (8,'2023-10-19 21:22:30','2023-02-24 22:33:30',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8),
- (9,'2023-10-19 21:22:30','2022-11-19 14:22:30',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9),
- (10,'2023-10-19 21:22:30','2019-05-27 16:22:30',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10),
- (11,'2023-10-19 21:22:30','2023-10-18 10:22:30',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11),
- (12,'2023-10-19 21:22:30','2022-07-19 03:49:10',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12),
- (13,'2023-10-19 21:22:30','2023-07-19 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13),
- (14,'2023-10-19 21:22:30','2023-08-19 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14),
- (15,'2023-10-19 21:22:30','2022-07-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15),
- (16,'2023-10-19 21:22:30','2022-08-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16),
- (17,'2023-10-19 21:22:30','2022-09-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17),
- (18,'2023-10-19 21:22:30','2022-10-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18),
- (19,'2023-10-19 21:22:30','2022-11-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19),
- (20,'2023-10-19 21:22:30','2022-12-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20),
- (21,'2023-10-19 21:22:30','2023-01-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21),
- (22,'2023-10-19 21:22:30','2023-02-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22),
- (23,'2023-10-19 21:22:30','2023-03-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23),
- (24,'2023-10-19 21:22:30','2023-04-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24),
- (25,'2023-10-19 21:22:30','2023-05-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25),
- (26,'2023-10-19 21:22:30','2023-02-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26),
- (27,'2023-10-19 21:22:30','2023-03-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27),
- (28,'2023-10-19 21:22:30','2023-04-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28),
- (29,'2023-10-19 21:22:30','2023-05-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29),
- (30,'2023-10-19 21:22:30','2023-06-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30),
- (31,'2023-10-19 21:22:30','2023-09-19 14:22:30',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31),
- (32,'2023-10-19 21:22:30','2023-10-19 14:22:30',5,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61),
- (33,'2023-10-19 21:22:30','2023-10-19 14:22:30',8,'General',100.00,'USD',2,1,'civicrm_line_item',38),
- (34,'2023-10-19 21:22:30','2023-10-19 14:22:30',17,'General',100.00,'USD',2,1,'civicrm_line_item',41),
- (35,'2023-10-19 21:22:30','2023-10-19 14:22:30',28,'General',100.00,'USD',2,1,'civicrm_line_item',43),
- (36,'2023-10-19 21:22:30','2023-10-19 14:22:30',36,'General',100.00,'USD',2,1,'civicrm_line_item',34),
- (37,'2023-10-19 21:22:30','2023-10-19 14:22:30',39,'Student',50.00,'USD',2,1,'civicrm_line_item',52),
- (38,'2023-10-19 21:22:30','2023-10-19 14:22:30',47,'Student',50.00,'USD',2,1,'civicrm_line_item',47),
- (39,'2023-10-19 21:22:30','2023-10-19 14:22:30',48,'General',100.00,'USD',2,1,'civicrm_line_item',36),
- (40,'2023-10-19 21:22:30','2023-10-19 14:22:30',49,'Student',50.00,'USD',2,1,'civicrm_line_item',53),
- (41,'2023-10-19 21:22:30','2023-10-19 14:22:30',54,'General',100.00,'USD',2,1,'civicrm_line_item',39),
- (42,'2023-10-19 21:22:30','2023-10-19 14:22:30',55,'General',100.00,'USD',2,1,'civicrm_line_item',32),
- (43,'2023-10-19 21:22:30','2023-10-19 14:22:30',66,'Student',50.00,'USD',2,1,'civicrm_line_item',59),
- (44,'2023-10-19 21:22:30','2023-10-19 14:22:30',78,'Student',50.00,'USD',2,1,'civicrm_line_item',58),
- (45,'2023-10-19 21:22:30','2023-10-19 14:22:30',86,'General',100.00,'USD',2,1,'civicrm_line_item',45),
- (46,'2023-10-19 21:22:30','2023-10-19 14:22:30',87,'General',100.00,'USD',2,1,'civicrm_line_item',35),
- (47,'2023-10-19 21:22:30','2023-10-19 14:22:30',92,'Student',50.00,'USD',2,1,'civicrm_line_item',54),
- (48,'2023-10-19 21:22:30','2023-10-19 14:22:30',93,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60),
- (49,'2023-10-19 21:22:30','2023-10-19 14:22:30',100,'Student',50.00,'USD',2,1,'civicrm_line_item',57),
- (50,'2023-10-19 21:22:30','2023-10-19 14:22:30',106,'General',100.00,'USD',2,1,'civicrm_line_item',40),
- (51,'2023-10-19 21:22:30','2023-10-19 14:22:30',113,'Student',50.00,'USD',2,1,'civicrm_line_item',49),
- (52,'2023-10-19 21:22:30','2023-10-19 14:22:30',117,'General',100.00,'USD',2,1,'civicrm_line_item',44),
- (53,'2023-10-19 21:22:30','2023-10-19 14:22:30',126,'Student',50.00,'USD',2,1,'civicrm_line_item',48),
- (54,'2023-10-19 21:22:30','2023-10-19 14:22:30',136,'Student',50.00,'USD',2,1,'civicrm_line_item',55),
- (55,'2023-10-19 21:22:30','2023-10-19 14:22:30',149,'General',100.00,'USD',2,1,'civicrm_line_item',46),
- (56,'2023-10-19 21:22:30','2023-10-19 14:22:30',164,'Student',50.00,'USD',2,1,'civicrm_line_item',51),
- (57,'2023-10-19 21:22:30','2023-10-19 14:22:30',168,'General',100.00,'USD',2,1,'civicrm_line_item',33),
- (58,'2023-10-19 21:22:30','2023-10-19 14:22:30',169,'Student',50.00,'USD',2,1,'civicrm_line_item',50),
- (59,'2023-10-19 21:22:30','2023-10-19 14:22:30',175,'General',100.00,'USD',2,1,'civicrm_line_item',42),
- (60,'2023-10-19 21:22:30','2023-10-19 14:22:30',180,'General',100.00,'USD',2,1,'civicrm_line_item',37),
- (61,'2023-10-19 21:22:30','2023-10-19 14:22:30',187,'Student',50.00,'USD',2,1,'civicrm_line_item',56),
- (62,'2023-10-19 21:22:30','2023-10-19 14:22:30',92,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97),
- (63,'2023-10-19 21:22:30','2023-10-19 14:22:30',36,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98),
- (64,'2023-10-19 21:22:30','2023-10-19 14:22:30',41,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99),
- (65,'2023-10-19 21:22:30','2023-10-19 14:22:30',195,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100),
- (66,'2023-10-19 21:22:30','2023-10-19 14:22:30',30,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101),
- (67,'2023-10-19 21:22:30','2023-10-19 14:22:30',179,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102),
- (68,'2023-10-19 21:22:30','2023-10-19 14:22:30',144,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103),
- (69,'2023-10-19 21:22:30','2023-10-19 14:22:30',45,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104),
- (70,'2023-10-19 21:22:30','2023-10-19 14:22:30',101,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105),
- (71,'2023-10-19 21:22:30','2023-10-19 14:22:30',73,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106),
- (72,'2023-10-19 21:22:30','2023-10-19 14:22:30',97,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107),
- (73,'2023-10-19 21:22:30','2023-10-19 14:22:30',17,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108),
- (74,'2023-10-19 21:22:30','2023-10-19 14:22:30',84,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109),
- (75,'2023-10-19 21:22:30','2023-10-19 14:22:30',156,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110),
- (76,'2023-10-19 21:22:30','2023-10-19 14:22:30',96,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111),
- (77,'2023-10-19 21:22:30','2023-10-19 14:22:30',172,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112),
- (78,'2023-10-19 21:22:30','2023-10-19 14:22:30',160,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),
- (79,'2023-10-19 21:22:30','2023-10-19 14:22:30',40,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),
- (80,'2023-10-19 21:22:30','2023-10-19 14:22:30',23,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65),
- (81,'2023-10-19 21:22:30','2023-10-19 14:22:30',192,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66),
- (82,'2023-10-19 21:22:30','2023-10-19 14:22:30',16,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67),
- (83,'2023-10-19 21:22:30','2023-10-19 14:22:30',189,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68),
- (84,'2023-10-19 21:22:30','2023-10-19 14:22:30',80,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69),
- (85,'2023-10-19 21:22:30','2023-10-19 14:22:30',196,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70),
- (86,'2023-10-19 21:22:30','2023-10-19 14:22:30',182,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71),
- (87,'2023-10-19 21:22:30','2023-10-19 14:22:30',158,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72),
- (88,'2023-10-19 21:22:30','2023-10-19 14:22:30',76,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73),
- (89,'2023-10-19 21:22:30','2023-10-19 14:22:30',6,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74),
- (90,'2023-10-19 21:22:30','2023-10-19 14:22:30',127,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75),
- (91,'2023-10-19 21:22:30','2023-10-19 14:22:30',117,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76),
- (92,'2023-10-19 21:22:30','2023-10-19 14:22:30',163,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77),
- (93,'2023-10-19 21:22:30','2023-10-19 14:22:30',57,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78),
- (94,'2023-10-19 21:22:30','2023-10-19 14:22:30',69,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79),
- (95,'2023-10-19 21:22:30','2023-10-19 14:22:30',88,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80),
- (96,'2023-10-19 21:22:30','2023-10-19 14:22:30',10,'Single',50.00,'USD',4,1,'civicrm_line_item',81),
- (97,'2023-10-19 21:22:30','2023-10-19 14:22:30',77,'Single',50.00,'USD',4,1,'civicrm_line_item',82),
- (98,'2023-10-19 21:22:30','2023-10-19 14:22:30',94,'Single',50.00,'USD',4,1,'civicrm_line_item',83),
- (99,'2023-10-19 21:22:30','2023-10-19 14:22:30',13,'Single',50.00,'USD',4,1,'civicrm_line_item',84),
- (100,'2023-10-19 21:22:30','2023-10-19 14:22:30',135,'Single',50.00,'USD',4,1,'civicrm_line_item',85),
- (101,'2023-10-19 21:22:30','2023-10-19 14:22:30',132,'Single',50.00,'USD',4,1,'civicrm_line_item',86),
- (102,'2023-10-19 21:22:30','2023-10-19 14:22:30',123,'Single',50.00,'USD',4,1,'civicrm_line_item',87),
- (103,'2023-10-19 21:22:30','2023-10-19 14:22:30',178,'Single',50.00,'USD',4,1,'civicrm_line_item',88),
- (104,'2023-10-19 21:22:30','2023-10-19 14:22:30',8,'Single',50.00,'USD',4,1,'civicrm_line_item',89),
- (105,'2023-10-19 21:22:30','2023-10-19 14:22:30',19,'Single',50.00,'USD',4,1,'civicrm_line_item',90),
- (106,'2023-10-19 21:22:30','2023-10-19 14:22:30',197,'Single',50.00,'USD',4,1,'civicrm_line_item',91),
- (107,'2023-10-19 21:22:30','2023-10-19 14:22:30',159,'Single',50.00,'USD',4,1,'civicrm_line_item',92),
- (108,'2023-10-19 21:22:30','2023-10-19 14:22:30',154,'Single',50.00,'USD',4,1,'civicrm_line_item',93),
- (109,'2023-10-19 21:22:30','2023-10-19 14:22:30',14,'Single',50.00,'USD',4,1,'civicrm_line_item',94),
- (110,'2023-10-19 21:22:30','2023-10-19 14:22:30',184,'Single',50.00,'USD',4,1,'civicrm_line_item',95),
- (111,'2023-10-19 21:22:30','2023-10-19 14:22:30',175,'Single',50.00,'USD',4,1,'civicrm_line_item',96);
+ (1,'2023-12-17 20:11:38','2013-12-17 20:11:37',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),
+ (2,'2023-12-17 20:11:38','2021-09-17 20:11:37',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),
+ (3,'2023-12-17 20:11:38','2017-11-22 07:11:37',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3),
+ (4,'2023-12-17 20:11:38','2021-09-17 20:11:37',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),
+ (5,'2023-12-17 20:11:38','2021-09-17 20:11:37',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5),
+ (6,'2023-12-17 20:11:38','2023-09-23 19:29:37',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6),
+ (7,'2023-12-17 20:11:38','2023-12-15 20:11:37',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7),
+ (8,'2023-12-17 20:11:38','2023-04-25 04:22:37',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8),
+ (9,'2023-12-17 20:11:38','2023-01-17 20:11:37',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9),
+ (10,'2023-12-17 20:11:38','2019-07-25 22:11:37',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10),
+ (11,'2023-12-17 20:11:38','2023-12-16 16:11:37',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11),
+ (12,'2023-12-17 20:11:38','2022-09-17 09:38:17',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12),
+ (13,'2023-12-17 20:11:38','2023-09-17 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13),
+ (14,'2023-12-17 20:11:38','2023-10-17 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14),
+ (15,'2023-12-17 20:11:38','2022-09-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15),
+ (16,'2023-12-17 20:11:38','2022-10-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16),
+ (17,'2023-12-17 20:11:38','2022-11-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17),
+ (18,'2023-12-17 20:11:38','2022-12-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18),
+ (19,'2023-12-17 20:11:38','2023-01-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19),
+ (20,'2023-12-17 20:11:38','2023-02-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20),
+ (21,'2023-12-17 20:11:38','2023-03-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21),
+ (22,'2023-12-17 20:11:38','2023-04-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22),
+ (23,'2023-12-17 20:11:38','2023-05-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23),
+ (24,'2023-12-17 20:11:38','2023-06-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24),
+ (25,'2023-12-17 20:11:38','2023-07-17 20:11:37',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25),
+ (26,'2023-12-17 20:11:38','2023-04-17 20:11:37',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26),
+ (27,'2023-12-17 20:11:38','2023-05-17 20:11:37',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27),
+ (28,'2023-12-17 20:11:38','2023-06-17 20:11:37',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28),
+ (29,'2023-12-17 20:11:38','2023-07-17 20:11:37',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29),
+ (30,'2023-12-17 20:11:38','2023-08-17 20:11:37',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30),
+ (31,'2023-12-17 20:11:38','2023-11-17 20:11:37',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31),
+ (32,'2023-12-17 20:11:38','2023-12-17 20:11:38',82,'General',100.00,'USD',2,1,'civicrm_line_item',32),
+ (33,'2023-12-17 20:11:38','2023-12-17 20:11:38',110,'General',100.00,'USD',2,1,'civicrm_line_item',33),
+ (34,'2023-12-17 20:11:38','2023-12-17 20:11:38',105,'General',100.00,'USD',2,1,'civicrm_line_item',34),
+ (35,'2023-12-17 20:11:38','2023-12-17 20:11:38',163,'General',100.00,'USD',2,1,'civicrm_line_item',35),
+ (36,'2023-12-17 20:11:38','2023-12-17 20:11:38',114,'General',100.00,'USD',2,1,'civicrm_line_item',36),
+ (37,'2023-12-17 20:11:38','2023-12-17 20:11:38',146,'General',100.00,'USD',2,1,'civicrm_line_item',37),
+ (38,'2023-12-17 20:11:38','2023-12-17 20:11:38',8,'General',100.00,'USD',2,1,'civicrm_line_item',38),
+ (39,'2023-12-17 20:11:38','2023-12-17 20:11:38',99,'General',100.00,'USD',2,1,'civicrm_line_item',39),
+ (40,'2023-12-17 20:11:38','2023-12-17 20:11:38',70,'General',100.00,'USD',2,1,'civicrm_line_item',40),
+ (41,'2023-12-17 20:11:38','2023-12-17 20:11:38',28,'General',100.00,'USD',2,1,'civicrm_line_item',41),
+ (42,'2023-12-17 20:11:38','2023-12-17 20:11:38',153,'General',100.00,'USD',2,1,'civicrm_line_item',42),
+ (43,'2023-12-17 20:11:38','2023-12-17 20:11:38',67,'General',100.00,'USD',2,1,'civicrm_line_item',43),
+ (44,'2023-12-17 20:11:38','2023-12-17 20:11:38',112,'General',100.00,'USD',2,1,'civicrm_line_item',44),
+ (45,'2023-12-17 20:11:38','2023-12-17 20:11:38',62,'General',100.00,'USD',2,1,'civicrm_line_item',45),
+ (46,'2023-12-17 20:11:38','2023-12-17 20:11:38',34,'Student',50.00,'USD',2,1,'civicrm_line_item',46),
+ (47,'2023-12-17 20:11:38','2023-12-17 20:11:38',91,'Student',50.00,'USD',2,1,'civicrm_line_item',47),
+ (48,'2023-12-17 20:11:38','2023-12-17 20:11:38',176,'Student',50.00,'USD',2,1,'civicrm_line_item',48),
+ (49,'2023-12-17 20:11:38','2023-12-17 20:11:38',119,'Student',50.00,'USD',2,1,'civicrm_line_item',49),
+ (50,'2023-12-17 20:11:38','2023-12-17 20:11:38',170,'Student',50.00,'USD',2,1,'civicrm_line_item',50),
+ (51,'2023-12-17 20:11:38','2023-12-17 20:11:38',190,'Student',50.00,'USD',2,1,'civicrm_line_item',51),
+ (52,'2023-12-17 20:11:38','2023-12-17 20:11:38',179,'Student',50.00,'USD',2,1,'civicrm_line_item',52),
+ (53,'2023-12-17 20:11:38','2023-12-17 20:11:38',48,'Student',50.00,'USD',2,1,'civicrm_line_item',53),
+ (54,'2023-12-17 20:11:38','2023-12-17 20:11:38',96,'Student',50.00,'USD',2,1,'civicrm_line_item',54),
+ (55,'2023-12-17 20:11:38','2023-12-17 20:11:38',84,'Student',50.00,'USD',2,1,'civicrm_line_item',55),
+ (56,'2023-12-17 20:11:38','2023-12-17 20:11:38',195,'Student',50.00,'USD',2,1,'civicrm_line_item',56),
+ (57,'2023-12-17 20:11:38','2023-12-17 20:11:38',75,'Student',50.00,'USD',2,1,'civicrm_line_item',57),
+ (58,'2023-12-17 20:11:38','2023-12-17 20:11:38',188,'Student',50.00,'USD',2,1,'civicrm_line_item',58),
+ (59,'2023-12-17 20:11:38','2023-12-17 20:11:38',59,'Student',50.00,'USD',2,1,'civicrm_line_item',59),
+ (60,'2023-12-17 20:11:38','2023-12-17 20:11:38',154,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60),
+ (61,'2023-12-17 20:11:38','2023-12-17 20:11:38',156,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61),
+ (62,'2023-12-17 20:11:38','2023-12-17 20:11:38',87,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97),
+ (63,'2023-12-17 20:11:38','2023-12-17 20:11:38',113,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98),
+ (64,'2023-12-17 20:11:38','2023-12-17 20:11:38',100,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99),
+ (65,'2023-12-17 20:11:38','2023-12-17 20:11:38',155,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100),
+ (66,'2023-12-17 20:11:38','2023-12-17 20:11:38',77,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101),
+ (67,'2023-12-17 20:11:38','2023-12-17 20:11:38',89,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102),
+ (68,'2023-12-17 20:11:38','2023-12-17 20:11:38',139,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103),
+ (69,'2023-12-17 20:11:38','2023-12-17 20:11:38',71,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104),
+ (70,'2023-12-17 20:11:38','2023-12-17 20:11:38',55,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105),
+ (71,'2023-12-17 20:11:38','2023-12-17 20:11:38',79,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106),
+ (72,'2023-12-17 20:11:38','2023-12-17 20:11:38',177,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107),
+ (73,'2023-12-17 20:11:38','2023-12-17 20:11:38',61,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108),
+ (74,'2023-12-17 20:11:38','2023-12-17 20:11:38',195,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109),
+ (75,'2023-12-17 20:11:38','2023-12-17 20:11:38',31,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110),
+ (76,'2023-12-17 20:11:38','2023-12-17 20:11:38',130,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111),
+ (77,'2023-12-17 20:11:38','2023-12-17 20:11:38',82,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112),
+ (78,'2023-12-17 20:11:38','2023-12-17 20:11:38',124,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),
+ (79,'2023-12-17 20:11:38','2023-12-17 20:11:38',160,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),
+ (80,'2023-12-17 20:11:38','2023-12-17 20:11:38',83,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65),
+ (81,'2023-12-17 20:11:38','2023-12-17 20:11:38',150,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66),
+ (82,'2023-12-17 20:11:38','2023-12-17 20:11:38',183,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67),
+ (83,'2023-12-17 20:11:38','2023-12-17 20:11:38',129,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68),
+ (84,'2023-12-17 20:11:38','2023-12-17 20:11:38',174,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69),
+ (85,'2023-12-17 20:11:38','2023-12-17 20:11:38',95,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70),
+ (86,'2023-12-17 20:11:38','2023-12-17 20:11:38',65,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71),
+ (87,'2023-12-17 20:11:38','2023-12-17 20:11:38',194,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72),
+ (88,'2023-12-17 20:11:38','2023-12-17 20:11:38',106,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73),
+ (89,'2023-12-17 20:11:38','2023-12-17 20:11:38',175,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74),
+ (90,'2023-12-17 20:11:38','2023-12-17 20:11:38',132,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75),
+ (91,'2023-12-17 20:11:38','2023-12-17 20:11:38',25,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76),
+ (92,'2023-12-17 20:11:38','2023-12-17 20:11:38',12,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77),
+ (93,'2023-12-17 20:11:38','2023-12-17 20:11:38',193,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78),
+ (94,'2023-12-17 20:11:38','2023-12-17 20:11:38',38,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79),
+ (95,'2023-12-17 20:11:38','2023-12-17 20:11:38',162,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80),
+ (96,'2023-12-17 20:11:38','2023-12-17 20:11:38',156,'Single',50.00,'USD',4,1,'civicrm_line_item',81),
+ (97,'2023-12-17 20:11:38','2023-12-17 20:11:38',127,'Single',50.00,'USD',4,1,'civicrm_line_item',82),
+ (98,'2023-12-17 20:11:38','2023-12-17 20:11:38',120,'Single',50.00,'USD',4,1,'civicrm_line_item',83),
+ (99,'2023-12-17 20:11:38','2023-12-17 20:11:38',72,'Single',50.00,'USD',4,1,'civicrm_line_item',84),
+ (100,'2023-12-17 20:11:38','2023-12-17 20:11:38',149,'Single',50.00,'USD',4,1,'civicrm_line_item',85),
+ (101,'2023-12-17 20:11:38','2023-12-17 20:11:38',199,'Single',50.00,'USD',4,1,'civicrm_line_item',86),
+ (102,'2023-12-17 20:11:38','2023-12-17 20:11:38',67,'Single',50.00,'USD',4,1,'civicrm_line_item',87),
+ (103,'2023-12-17 20:11:38','2023-12-17 20:11:38',62,'Single',50.00,'USD',4,1,'civicrm_line_item',88),
+ (104,'2023-12-17 20:11:38','2023-12-17 20:11:38',59,'Single',50.00,'USD',4,1,'civicrm_line_item',89),
+ (105,'2023-12-17 20:11:38','2023-12-17 20:11:38',19,'Single',50.00,'USD',4,1,'civicrm_line_item',90),
+ (106,'2023-12-17 20:11:38','2023-12-17 20:11:38',18,'Single',50.00,'USD',4,1,'civicrm_line_item',91),
+ (107,'2023-12-17 20:11:38','2023-12-17 20:11:38',42,'Single',50.00,'USD',4,1,'civicrm_line_item',92),
+ (108,'2023-12-17 20:11:38','2023-12-17 20:11:38',173,'Single',50.00,'USD',4,1,'civicrm_line_item',93),
+ (109,'2023-12-17 20:11:38','2023-12-17 20:11:38',110,'Single',50.00,'USD',4,1,'civicrm_line_item',94),
+ (110,'2023-12-17 20:11:38','2023-12-17 20:11:38',52,'Single',50.00,'USD',4,1,'civicrm_line_item',95),
+ (111,'2023-12-17 20:11:38','2023-12-17 20:11:38',168,'Single',50.00,'USD',4,1,'civicrm_line_item',96);
 /*!40000 ALTER TABLE `civicrm_financial_item` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -3810,117 +3816,117 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_financial_trxn` WRITE;
 /*!40000 ALTER TABLE `civicrm_financial_trxn` DISABLE KEYS */;
 INSERT INTO `civicrm_financial_trxn` (`id`, `from_financial_account_id`, `to_financial_account_id`, `trxn_date`, `total_amount`, `fee_amount`, `net_amount`, `currency`, `is_payment`, `trxn_id`, `trxn_result_code`, `status_id`, `payment_processor_id`, `payment_instrument_id`, `card_type_id`, `check_number`, `pan_truncation`, `order_reference`) VALUES
- (1,NULL,6,'2013-10-19 14:22:30',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL),
- (2,NULL,6,'2021-07-19 14:22:30',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (3,NULL,6,'2017-09-24 01:22:30',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL),
- (4,NULL,6,'2021-07-19 14:22:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL),
- (5,NULL,6,'2021-07-19 14:22:30',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (6,NULL,6,'2023-07-26 13:40:30',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL),
- (7,NULL,6,'2023-10-17 14:22:30',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL),
- (8,NULL,6,'2023-02-24 22:33:30',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (9,NULL,6,'2022-11-19 14:22:30',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (10,NULL,6,'2019-05-27 16:22:30',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (11,NULL,6,'2023-10-18 10:22:30',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (12,NULL,6,'2022-07-19 03:49:10',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (13,NULL,6,'2023-07-19 00:00:00',50.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (14,NULL,6,'2023-08-19 00:00:00',50.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (15,NULL,6,'2022-07-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (16,NULL,6,'2022-08-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (17,NULL,6,'2022-09-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (18,NULL,6,'2022-10-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (19,NULL,6,'2022-11-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (20,NULL,6,'2022-12-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (21,NULL,6,'2023-01-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (22,NULL,6,'2023-02-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (23,NULL,6,'2023-03-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (24,NULL,6,'2023-04-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (25,NULL,6,'2023-05-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (26,NULL,6,'2023-02-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (27,NULL,6,'2023-03-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (28,NULL,6,'2023-04-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (29,NULL,6,'2023-05-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (30,NULL,6,'2023-06-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (31,NULL,6,'2023-09-19 14:22:30',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (32,NULL,6,'2023-10-19 14:22:30',1200.00,NULL,NULL,'USD',1,'ffed5868e9951a95',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (33,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'e38f6ec37b9fabb3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (34,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'386a76c90a983717',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (35,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'6f302a92a8d039f4',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (36,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'c7f53644ae2a7abd',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (37,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'8e1a4f823c309e35',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (38,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'62904aaad7687d16',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (39,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'9e43d605091634b7',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (40,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'9183e73af132fbd1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (41,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'f739f79d40e7bd2d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (42,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'c908bcfa0cd5be20',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (43,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'32f851d09a3775f2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (44,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'aa13673d8ef85a65',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (45,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'fd4792bd3a50da87',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (46,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'df65e9305cdef133',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (47,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'e7836a1040fc6647',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (48,NULL,6,'2023-10-19 14:22:30',1200.00,NULL,NULL,'USD',1,'fe44a2c192ab18be',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (49,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ef096073ba84bc0a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (50,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'0937a86d9856d20f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (51,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'0e4d2cc74726c33e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (52,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'184c1625a0ab7dc0',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (53,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'58c722d9ea8f60e4',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (54,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'dc8c98604902da07',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (55,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'2ae34338151a8c31',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (56,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'126eb1cbca88ac46',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (57,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'4d24ed19cb02ed0c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (58,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'46fff670fdd88c83',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (59,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'1d446a98d22519c5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (60,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'e6d81f09a41d0f35',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (61,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'9668e4798e266def',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (62,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'548746b3839860da',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (63,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'25a9f0b5ed29df0a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (64,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ed07590fe067cb07',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (65,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'f82bc2b76969d315',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (66,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'2169580b75789814',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (67,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'504a9107e1c840c3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (68,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'9dc4f36b0500ac35',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (69,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'96af8634550c39ac',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (70,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'082640d22f20fcf6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (71,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'a720e6fdf9eea694',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (72,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'c8d10d10dd2d66bb',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (73,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'413cb05032f4ef86',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (74,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'b056ac8b83186f79',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (75,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'bd1cbf336bcdc529',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (76,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'188d57636c31422a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (77,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'44c3f7faa315a724',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (78,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'0ab78d1432305653',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (79,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'3eb2384d79bdaa10',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (80,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'d39bcc7bf0e51cab',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (81,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'4feacc260963ba72',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (82,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'95a80169077a3dea',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (83,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'b7318d85efca799b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (84,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'6ba712ac9576b7b6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (85,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'a96ed671bbd3ea09',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (86,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'cca171d375cdc8f6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (87,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'146f0c5184fd503c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (88,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'732d30e0d1d41ca5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (89,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'b28927dfa09ab7b4',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (90,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'3de19df12cf6886c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (91,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'7a53e74599f788ac',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (92,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'4bc019d5fcebe204',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (93,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'a2542bee3dc332de',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (94,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'6cc8dd5a5b8e8913',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (95,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'24cc9f9c83795713',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (96,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'7245aac602b546bb',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (97,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ac8995759a7a3270',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (98,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'472bf4e471ef125f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (99,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ff5b5537da44c970',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (100,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'648327e05cdee0ac',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (101,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'b7c48e40295cdc9a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (102,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'f78524f14cda217c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (103,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'7e35b99bd91e7b4c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (104,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'52b5a6a76b142227',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (105,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'755c91f4df5025f2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (106,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'60f19d9651d20536',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (107,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'6def5a3cac235219',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (108,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'fe477a4cedeef016',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (109,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'fad72a1cf34cf68e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (110,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'656d8e5060576829',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (111,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'7749b8e4f077e05c',NULL,1,NULL,1,NULL,NULL,NULL,NULL);
+ (1,NULL,6,'2013-12-17 20:11:37',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL),
+ (2,NULL,6,'2021-09-17 20:11:37',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (3,NULL,6,'2017-11-22 07:11:37',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL),
+ (4,NULL,6,'2021-09-17 20:11:37',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL),
+ (5,NULL,6,'2021-09-17 20:11:37',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (6,NULL,6,'2023-09-23 19:29:37',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL),
+ (7,NULL,6,'2023-12-15 20:11:37',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL),
+ (8,NULL,6,'2023-04-25 04:22:37',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (9,NULL,6,'2023-01-17 20:11:37',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (10,NULL,6,'2019-07-25 22:11:37',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (11,NULL,6,'2023-12-16 16:11:37',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (12,NULL,6,'2022-09-17 09:38:17',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (13,NULL,6,'2023-09-17 00:00:00',50.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (14,NULL,6,'2023-10-17 00:00:00',50.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (15,NULL,6,'2022-09-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (16,NULL,6,'2022-10-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (17,NULL,6,'2022-11-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (18,NULL,6,'2022-12-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (19,NULL,6,'2023-01-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (20,NULL,6,'2023-02-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (21,NULL,6,'2023-03-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (22,NULL,6,'2023-04-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (23,NULL,6,'2023-05-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (24,NULL,6,'2023-06-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (25,NULL,6,'2023-07-17 20:11:37',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (26,NULL,6,'2023-04-17 20:11:37',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (27,NULL,6,'2023-05-17 20:11:37',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (28,NULL,6,'2023-06-17 20:11:37',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (29,NULL,6,'2023-07-17 20:11:37',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (30,NULL,6,'2023-08-17 20:11:37',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (31,NULL,6,'2023-11-17 20:11:37',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (32,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'830461b5ad84c1e7',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (33,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'a5415e027d83717c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (34,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'9555523ece178b6a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (35,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'57ca21492529910f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (36,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'7fc2d080a0d70d5f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (37,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'1d0aac8b34ff8b84',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (38,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'2ccc981e3e5a1e8d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (39,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'60cce134dbd4af13',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (40,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'2ba05d7beabc92a6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (41,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'42542107efb6f295',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (42,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'b707c69168d7550b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (43,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'4af2784315e9f068',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (44,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'d05b6eb57e4fa850',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (45,NULL,6,'2023-12-17 20:11:38',100.00,NULL,NULL,'USD',1,'023a722551f3e725',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (46,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'ff8cf92f9773545c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (47,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'1ca376a7b8d0e2d5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (48,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'a7c0f89867c8a428',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (49,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'99991cb2ffe28b8b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (50,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'20e577eba5667eae',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (51,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'fe4e0f13e7eb09bf',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (52,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'e254b4f121439b6f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (53,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'ebd306ae8053c70f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (54,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'624424ef23bab211',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (55,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'f0b56ae2e34b40b2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (56,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'10336515977ecfd6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (57,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'60040a9003287de2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (58,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'acd346f2fe5f77bc',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (59,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'1202258df77a0fa2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (60,NULL,6,'2023-12-17 20:11:38',1200.00,NULL,NULL,'USD',1,'c75d99ea7586de97',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (61,NULL,6,'2023-12-17 20:11:38',1200.00,NULL,NULL,'USD',1,'15093bca050f76cb',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (62,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'ba8f69f88fe9a279',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (63,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'cad86325b8d974d2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (64,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'0cd0fead7f55fc4f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (65,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'776e13db77b1f674',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (66,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'22e53d83c72810f6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (67,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'11449abd78f15f83',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (68,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'8e76e6c92073b839',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (69,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'b65d48375f052b5e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (70,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'49ca8e2d4f12f02b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (71,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'026ebccce765774b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (72,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'23c1977d50939b3e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (73,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'19b9fc43ca780269',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (74,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'23c029b556d782cd',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (75,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'96cda567448aa26b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (76,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'3231adeb2f830242',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (77,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'febc54389846736e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (78,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'15af525cf42e5b33',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (79,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'91dcd9fea13e4d34',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (80,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'c6de9a43eb5b7aa3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (81,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'8905d5e48dc6442a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (82,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'c14f7f184fe25f15',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (83,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'797deb5dffdce687',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (84,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'13382d88dcdbf9c5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (85,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'99f3b4bbbe0e2de3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (86,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'55b9c4d23cf793e4',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (87,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'35ec8cec4d7b3e0c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (88,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'a747e70aae3e2c37',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (89,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'5900a1f4d9db201b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (90,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'8fa3d088dff273af',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (91,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'422bb0afad03efe1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (92,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'44ac28a2795797e3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (93,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'bec2677521a23f70',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (94,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'1272470c83cadd49',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (95,NULL,6,'2023-12-17 20:11:38',800.00,NULL,NULL,'USD',1,'bd7ec6b46ece178f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (96,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'25fd6030886b7c5c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (97,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'1afc702ecb5219fd',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (98,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'2f37622da3edd416',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (99,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'0f56e1a0dd6ab6f3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (100,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'86063ee6b2a9e896',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (101,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'e4af20137ce2bdd5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (102,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'27cc8136671b8d16',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (103,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'36af07a9a33d3f5d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (104,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'4a5cc20b54e1bf2d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (105,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'9d526f8939ed06bc',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (106,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'c8661d25b19cc20a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (107,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'034acdc1fa387ffc',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (108,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'055d24ef0c16aeb2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (109,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'c55c272423d8f92b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (110,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'36371153332378fc',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (111,NULL,6,'2023-12-17 20:11:38',50.00,NULL,NULL,'USD',1,'c73781dd9dfc1d86',NULL,1,NULL,1,NULL,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_financial_trxn` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -3959,89 +3965,89 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_group_contact` WRITE;
 /*!40000 ALTER TABLE `civicrm_group_contact` DISABLE KEYS */;
 INSERT INTO `civicrm_group_contact` (`id`, `group_id`, `contact_id`, `status`, `location_id`, `email_id`) VALUES
- (1,2,31,'Added',NULL,NULL),
- (2,2,25,'Added',NULL,NULL),
- (3,2,35,'Added',NULL,NULL),
- (4,2,142,'Added',NULL,NULL),
- (5,2,5,'Added',NULL,NULL),
- (6,2,54,'Added',NULL,NULL),
- (7,2,4,'Added',NULL,NULL),
- (8,2,82,'Added',NULL,NULL),
- (9,2,9,'Added',NULL,NULL),
- (10,2,143,'Added',NULL,NULL),
- (11,2,123,'Added',NULL,NULL),
- (12,2,78,'Added',NULL,NULL),
- (13,2,70,'Added',NULL,NULL),
- (14,2,173,'Added',NULL,NULL),
- (15,2,83,'Added',NULL,NULL),
- (16,2,72,'Added',NULL,NULL),
- (17,2,186,'Added',NULL,NULL),
- (18,2,127,'Added',NULL,NULL),
- (19,2,101,'Added',NULL,NULL),
- (20,2,30,'Added',NULL,NULL),
- (21,2,89,'Added',NULL,NULL),
- (22,2,187,'Added',NULL,NULL),
- (23,2,194,'Added',NULL,NULL),
- (24,2,136,'Added',NULL,NULL),
- (25,2,115,'Added',NULL,NULL),
- (26,2,129,'Added',NULL,NULL),
- (27,2,168,'Added',NULL,NULL),
- (28,2,157,'Added',NULL,NULL),
- (29,2,172,'Added',NULL,NULL),
- (30,2,117,'Added',NULL,NULL),
- (31,2,197,'Added',NULL,NULL),
- (32,2,98,'Added',NULL,NULL),
- (33,2,185,'Added',NULL,NULL),
- (34,2,132,'Added',NULL,NULL),
- (35,2,94,'Added',NULL,NULL),
- (36,2,11,'Added',NULL,NULL),
- (37,2,178,'Added',NULL,NULL),
- (38,2,144,'Added',NULL,NULL),
- (39,2,201,'Added',NULL,NULL),
- (40,2,87,'Added',NULL,NULL),
- (41,2,128,'Added',NULL,NULL),
- (42,2,8,'Added',NULL,NULL),
- (43,2,33,'Added',NULL,NULL),
- (44,2,42,'Added',NULL,NULL),
- (45,2,80,'Added',NULL,NULL),
- (46,2,153,'Added',NULL,NULL),
- (47,2,120,'Added',NULL,NULL),
- (48,2,169,'Added',NULL,NULL),
- (49,2,130,'Added',NULL,NULL),
- (50,2,28,'Added',NULL,NULL),
- (51,2,93,'Added',NULL,NULL),
- (52,2,17,'Added',NULL,NULL),
- (53,2,38,'Added',NULL,NULL),
- (54,2,174,'Added',NULL,NULL),
- (55,2,81,'Added',NULL,NULL),
- (56,2,113,'Added',NULL,NULL),
- (57,2,71,'Added',NULL,NULL),
- (58,2,56,'Added',NULL,NULL),
- (59,2,171,'Added',NULL,NULL),
- (60,2,97,'Added',NULL,NULL),
- (61,3,29,'Added',NULL,NULL),
- (62,3,138,'Added',NULL,NULL),
- (63,3,145,'Added',NULL,NULL),
- (64,3,166,'Added',NULL,NULL),
- (65,3,107,'Added',NULL,NULL),
- (66,3,105,'Added',NULL,NULL),
- (67,3,167,'Added',NULL,NULL),
- (68,3,192,'Added',NULL,NULL),
- (69,3,37,'Added',NULL,NULL),
- (70,3,27,'Added',NULL,NULL),
- (71,3,40,'Added',NULL,NULL),
- (72,3,165,'Added',NULL,NULL),
- (73,3,184,'Added',NULL,NULL),
- (74,3,158,'Added',NULL,NULL),
- (75,3,102,'Added',NULL,NULL),
- (76,4,31,'Added',NULL,NULL),
- (77,4,82,'Added',NULL,NULL),
- (78,4,83,'Added',NULL,NULL),
- (79,4,187,'Added',NULL,NULL),
- (80,4,172,'Added',NULL,NULL),
- (81,4,11,'Added',NULL,NULL),
- (82,4,33,'Added',NULL,NULL),
- (83,4,28,'Added',NULL,NULL),
+ (1,2,72,'Added',NULL,NULL),
+ (2,2,19,'Added',NULL,NULL),
+ (3,2,153,'Added',NULL,NULL),
+ (4,2,190,'Added',NULL,NULL),
+ (5,2,16,'Added',NULL,NULL),
+ (6,2,65,'Added',NULL,NULL),
+ (7,2,70,'Added',NULL,NULL),
+ (8,2,120,'Added',NULL,NULL),
+ (9,2,85,'Added',NULL,NULL),
+ (10,2,198,'Added',NULL,NULL),
+ (11,2,110,'Added',NULL,NULL),
+ (12,2,45,'Added',NULL,NULL),
+ (13,2,37,'Added',NULL,NULL),
+ (14,2,82,'Added',NULL,NULL),
+ (15,2,12,'Added',NULL,NULL),
+ (16,2,102,'Added',NULL,NULL),
+ (17,2,192,'Added',NULL,NULL),
+ (18,2,10,'Added',NULL,NULL),
+ (19,2,23,'Added',NULL,NULL),
+ (20,2,94,'Added',NULL,NULL),
+ (21,2,108,'Added',NULL,NULL),
+ (22,2,38,'Added',NULL,NULL),
+ (23,2,154,'Added',NULL,NULL),
+ (24,2,41,'Added',NULL,NULL),
+ (25,2,86,'Added',NULL,NULL),
+ (26,2,95,'Added',NULL,NULL),
+ (27,2,182,'Added',NULL,NULL),
+ (28,2,176,'Added',NULL,NULL),
+ (29,2,74,'Added',NULL,NULL),
+ (30,2,161,'Added',NULL,NULL),
+ (31,2,191,'Added',NULL,NULL),
+ (32,2,112,'Added',NULL,NULL),
+ (33,2,117,'Added',NULL,NULL),
+ (34,2,101,'Added',NULL,NULL),
+ (35,2,57,'Added',NULL,NULL),
+ (36,2,124,'Added',NULL,NULL),
+ (37,2,79,'Added',NULL,NULL),
+ (38,2,126,'Added',NULL,NULL),
+ (39,2,113,'Added',NULL,NULL),
+ (40,2,76,'Added',NULL,NULL),
+ (41,2,116,'Added',NULL,NULL),
+ (42,2,67,'Added',NULL,NULL),
+ (43,2,149,'Added',NULL,NULL),
+ (44,2,160,'Added',NULL,NULL),
+ (45,2,189,'Added',NULL,NULL),
+ (46,2,135,'Added',NULL,NULL),
+ (47,2,114,'Added',NULL,NULL),
+ (48,2,77,'Added',NULL,NULL),
+ (49,2,178,'Added',NULL,NULL),
+ (50,2,147,'Added',NULL,NULL),
+ (51,2,131,'Added',NULL,NULL),
+ (52,2,43,'Added',NULL,NULL),
+ (53,2,88,'Added',NULL,NULL),
+ (54,2,200,'Added',NULL,NULL),
+ (55,2,21,'Added',NULL,NULL),
+ (56,2,48,'Added',NULL,NULL),
+ (57,2,179,'Added',NULL,NULL),
+ (58,2,99,'Added',NULL,NULL),
+ (59,2,107,'Added',NULL,NULL),
+ (60,2,105,'Added',NULL,NULL),
+ (61,3,136,'Added',NULL,NULL),
+ (62,3,164,'Added',NULL,NULL),
+ (63,3,142,'Added',NULL,NULL),
+ (64,3,175,'Added',NULL,NULL),
+ (65,3,158,'Added',NULL,NULL),
+ (66,3,148,'Added',NULL,NULL),
+ (67,3,137,'Added',NULL,NULL),
+ (68,3,146,'Added',NULL,NULL),
+ (69,3,30,'Added',NULL,NULL),
+ (70,3,122,'Added',NULL,NULL),
+ (71,3,159,'Added',NULL,NULL),
+ (72,3,100,'Added',NULL,NULL),
+ (73,3,40,'Added',NULL,NULL),
+ (74,3,44,'Added',NULL,NULL),
+ (75,3,188,'Added',NULL,NULL),
+ (76,4,72,'Added',NULL,NULL),
+ (77,4,120,'Added',NULL,NULL),
+ (78,4,12,'Added',NULL,NULL),
+ (79,4,38,'Added',NULL,NULL),
+ (80,4,74,'Added',NULL,NULL),
+ (81,4,124,'Added',NULL,NULL),
+ (82,4,149,'Added',NULL,NULL),
+ (83,4,147,'Added',NULL,NULL),
  (84,4,202,'Added',NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_group_contact` ENABLE KEYS */;
 UNLOCK TABLES;
@@ -4089,23 +4095,27 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_job` WRITE;
 /*!40000 ALTER TABLE `civicrm_job` DISABLE KEYS */;
 INSERT INTO `civicrm_job` (`id`, `domain_id`, `run_frequency`, `last_run`, `scheduled_run_date`, `name`, `description`, `api_entity`, `api_action`, `parameters`, `is_active`) VALUES
- (1,1,'Daily',NULL,NULL,'CiviCRM Update Check','Checks for CiviCRM version updates. Important for keeping the database secure. Also sends anonymous usage statistics to civicrm.org to to assist in prioritizing ongoing development efforts.','Job','version_check',NULL,1),
- (2,1,'Always',NULL,NULL,'Send Scheduled Mailings','Sends out scheduled CiviMail mailings','Job','process_mailing',NULL,0),
- (3,1,'Hourly',NULL,NULL,'Fetch Bounces','Fetches bounces from mailings and writes them to mailing statistics','Job','fetch_bounces',NULL,0),
- (4,1,'Hourly',NULL,NULL,'Process Inbound Emails','Inserts activity for a contact or a case by retrieving inbound emails from a mail directory','Job','fetch_activities',NULL,0),
- (5,1,'Daily',NULL,NULL,'Process Pledges','Updates pledge records and sends out reminders','Job','process_pledge','send_reminders=[1 or 0] optional- 1 to send payment reminders',0),
- (6,1,'Daily',NULL,NULL,'Geocode and Parse Addresses','Retrieves geocodes (lat and long) and / or parses street addresses (populates street number, street name, etc.)','Job','geocode','geocoding=[1 or 0] required\nparse=[1 or 0] required\nstart=[contact ID] optional-begin with this contact ID\nend=[contact ID] optional-process contacts with IDs less than this\nthrottle=[1 or 0] optional-1 adds five second sleep',0),
- (7,1,'Daily',NULL,NULL,'Update Greetings and Addressees','Goes through contact records and updates email and postal greetings, or addressee value','Job','update_greeting','ct=[Individual or Household or Organization] required\ngt=[email_greeting or postal_greeting or addressee] required\nforce=[0 or 1] optional-0 update contacts with null value, 1 update all\nlimit=Number optional-Limit the number of contacts to update',0),
- (8,1,'Daily',NULL,NULL,'Mail Reports','Generates and sends out reports via email','Job','mail_report','instanceId=[ID of report instance] required\nformat=[csv or print] optional-output CSV or print-friendly HTML, else PDF',0),
- (9,1,'Hourly',NULL,NULL,'Send Scheduled Reminders','Sends out scheduled reminders via email','Job','send_reminder',NULL,0),
- (10,1,'Always',NULL,NULL,'Update Participant Statuses','Updates pending event participant statuses based on time','Job','process_participant',NULL,0),
- (11,1,'Daily',NULL,NULL,'Update Membership Statuses','Updates membership statuses. WARNING: Membership renewal reminders have been migrated to the Schedule Reminders functionality, which supports multiple renewal reminders.','Job','process_membership',NULL,0),
- (12,1,'Always',NULL,NULL,'Process Survey Respondents','Releases reserved survey respondents when they have been reserved for longer than the Release Frequency days specified for that survey.','Job','process_respondent',NULL,0),
- (13,1,'Hourly',NULL,NULL,'Clean-up Temporary Data and Files','Removes temporary data and files, and clears old data from cache tables. Recommend running this job every hour to help prevent database and file system bloat.','Job','cleanup',NULL,0),
- (14,1,'Always',NULL,NULL,'Send Scheduled SMS','Sends out scheduled SMS','Job','process_sms',NULL,0),
- (15,1,'Always',NULL,NULL,'Rebuild Smart Group Cache','Rebuilds the smart group cache.','Job','group_rebuild','limit=Number optional-Limit the number of smart groups rebuild',0),
- (16,1,'Daily',NULL,NULL,'Disable expired relationships','Disables relationships that have expired (ie. those relationships whose end date is in the past).','Job','disable_expired_relationships',NULL,0),
- (17,1,'Daily',NULL,NULL,'Validate Email Address from Mailings.','Updates the reset_date on an email address to indicate that there was a valid delivery to this email address.','Mailing','update_email_resetdate','minDays, maxDays=Consider mailings that have completed between minDays and maxDays',0);
+ (1,1,'Daily',NULL,NULL,'CiviCRM Update Check','Checks for version updates. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_version_check','Job','version_check',NULL,1),
+ (2,1,'Always',NULL,NULL,'Send Scheduled Mailings','Sends out scheduled mailings. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_mailing','Job','process_mailing',NULL,0),
+ (3,1,'Hourly',NULL,NULL,'Fetch Bounces','Fetches bounces from mailings. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_fetch_bounces','Job','fetch_bounces','is_create_activities=0',0),
+ (4,1,'Hourly',NULL,NULL,'Process Inbound Emails','Inserts activity for a contact or a case by retrieving inbound emails. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_fetch_activities','Job','fetch_activities',NULL,0),
+ (5,1,'Daily',NULL,NULL,'Process Pledges','Updates pledge records and sends out reminders. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_pledge','Job','process_pledge','send_reminders=0',0),
+ (6,1,'Daily',NULL,NULL,'Geocode and Parse Addresses','Geocodes and/or parses street addresses. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_geocode','Job','geocode','geocoding=1\n      parse=0\n      throttle=0',0),
+ (7,1,'Daily',NULL,NULL,'Update Individual Email Greeting','Update Individual Email Greeting. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting','Job','update_greeting','ct=Individual\ngt=email_greeting',0),
+ (8,1,'Daily',NULL,NULL,'Update Individual Postal Greeting','Update Individual Postal Greeting. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting','Job','update_greeting','ct=Individual\ngt=postal_greeting',0),
+ (9,1,'Daily',NULL,NULL,'Update Individual Addressee','Update Individual Addressee. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting','Job','update_greeting','ct=Individual\ngt=addressee',0),
+ (10,1,'Daily',NULL,NULL,'Mail Reports','Generates and sends out reports via email. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_mail_report','Job','mail_report','',0),
+ (11,1,'Hourly',NULL,NULL,'Send Scheduled Reminders','Sends out scheduled reminders via email. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_send_reminder','Job','send_reminder',NULL,0),
+ (12,1,'Always',NULL,NULL,'Update Participant Statuses','Updates pending event participant statuses based on time. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_participant','Job','process_participant',NULL,0),
+ (13,1,'Daily',NULL,NULL,'Update Membership Statuses','Updates membership statuses. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_membership','Job','process_membership',NULL,0),
+ (14,1,'Always',NULL,NULL,'Process Survey Respondents','Releases reserved survey respondents. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_respondent','Job','process_respondent',NULL,0),
+ (15,1,'Monthly',NULL,NULL,'Clean-up Temporary Data and Files','Removes temporary data and files. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_cleanup','Job','cleanup','session=0',0),
+ (16,1,'Always',NULL,NULL,'Send Scheduled SMS','Sends out scheduled SMS. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_sms','Job','process_sms',NULL,0),
+ (17,1,'Hourly',NULL,NULL,'Rebuild Smart Group Cache','Rebuilds the smart group cache. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_group_rebuild','Job','group_rebuild','limit=0',0),
+ (18,1,'Hourly',NULL,NULL,'Group Cache Flush','Purges aged smart group cache data. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_group_cache_flush','Job','group_cache_flush','',0),
+ (19,1,'Daily',NULL,NULL,'Disable expired relationships','Disables relationships that have expired. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_disable_expired_relationships','Job','disable_expired_relationships',NULL,0),
+ (20,1,'Daily',NULL,NULL,'Validate Email Address from Mailings.','Updates the reset_date on an email address. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#mailing_update_email_resetdate','Mailing','update_email_resetdate','minDays=5\n      maxDays=60',0),
+ (21,1,'Daily',NULL,NULL,'Dedupe Contacts','Executes the Individual, Unsupervised redupe rule. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_batch_merge','Job','process_batch_merge',NULL,0);
 /*!40000 ALTER TABLE `civicrm_job` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4157,85 +4167,85 @@ INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contributio
  (30,'civicrm_contribution',30,30,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,0.00,NULL),
  (31,'civicrm_contribution',31,31,1,'Contribution Amount',1.00,5.00,5.00,0,1,1,0.00,0.00,NULL),
  (32,'civicrm_membership',1,32,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (33,'civicrm_membership',3,33,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (34,'civicrm_membership',7,34,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (35,'civicrm_membership',9,35,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (36,'civicrm_membership',13,36,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (37,'civicrm_membership',15,37,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (38,'civicrm_membership',17,38,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (39,'civicrm_membership',19,39,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (40,'civicrm_membership',20,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (41,'civicrm_membership',21,41,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (42,'civicrm_membership',23,42,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (43,'civicrm_membership',25,43,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (44,'civicrm_membership',27,44,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (45,'civicrm_membership',29,45,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (46,'civicrm_membership',30,46,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (47,'civicrm_membership',2,47,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (48,'civicrm_membership',4,48,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (49,'civicrm_membership',5,49,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (50,'civicrm_membership',6,50,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (51,'civicrm_membership',8,51,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (52,'civicrm_membership',10,52,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (53,'civicrm_membership',12,53,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (54,'civicrm_membership',14,54,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (55,'civicrm_membership',16,55,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (56,'civicrm_membership',18,56,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (57,'civicrm_membership',24,57,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (58,'civicrm_membership',26,58,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (59,'civicrm_membership',28,59,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (60,'civicrm_membership',11,60,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL),
- (61,'civicrm_membership',22,61,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL),
- (63,'civicrm_participant',3,100,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (64,'civicrm_participant',6,74,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (33,'civicrm_membership',3,34,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (34,'civicrm_membership',5,36,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (35,'civicrm_membership',7,38,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (36,'civicrm_membership',9,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (37,'civicrm_membership',10,41,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (38,'civicrm_membership',13,44,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (39,'civicrm_membership',17,48,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (40,'civicrm_membership',19,50,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (41,'civicrm_membership',21,52,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (42,'civicrm_membership',23,54,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (43,'civicrm_membership',25,56,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (44,'civicrm_membership',27,58,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (45,'civicrm_membership',29,60,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (46,'civicrm_membership',2,33,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (47,'civicrm_membership',4,35,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (48,'civicrm_membership',6,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (49,'civicrm_membership',8,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (50,'civicrm_membership',12,43,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (51,'civicrm_membership',14,45,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (52,'civicrm_membership',15,46,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (53,'civicrm_membership',16,47,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (54,'civicrm_membership',18,49,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (55,'civicrm_membership',20,51,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (56,'civicrm_membership',24,55,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (57,'civicrm_membership',26,57,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (58,'civicrm_membership',28,59,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (59,'civicrm_membership',30,61,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (60,'civicrm_membership',11,42,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL),
+ (61,'civicrm_membership',22,53,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL),
+ (63,'civicrm_participant',3,65,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (64,'civicrm_participant',6,68,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
  (65,'civicrm_participant',9,71,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (66,'civicrm_participant',12,109,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (67,'civicrm_participant',15,68,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (68,'civicrm_participant',18,108,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (69,'civicrm_participant',21,82,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (70,'civicrm_participant',24,111,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (71,'civicrm_participant',25,106,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (72,'civicrm_participant',28,98,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (73,'civicrm_participant',31,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (74,'civicrm_participant',34,63,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (75,'civicrm_participant',37,92,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (76,'civicrm_participant',40,90,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (77,'civicrm_participant',43,101,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (78,'civicrm_participant',46,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (79,'civicrm_participant',49,78,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (80,'civicrm_participant',50,84,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (81,'civicrm_participant',1,65,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (82,'civicrm_participant',4,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (83,'civicrm_participant',7,86,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (84,'civicrm_participant',10,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (85,'civicrm_participant',13,94,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (86,'civicrm_participant',16,93,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (87,'civicrm_participant',19,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (88,'civicrm_participant',22,104,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (89,'civicrm_participant',26,64,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (90,'civicrm_participant',29,70,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (91,'civicrm_participant',32,112,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (92,'civicrm_participant',35,99,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (93,'civicrm_participant',38,96,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (94,'civicrm_participant',41,67,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (95,'civicrm_participant',44,107,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (96,'civicrm_participant',47,103,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (97,'civicrm_participant',2,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (98,'civicrm_participant',5,73,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (99,'civicrm_participant',8,75,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (100,'civicrm_participant',11,110,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (101,'civicrm_participant',14,72,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (102,'civicrm_participant',17,105,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (103,'civicrm_participant',20,95,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (104,'civicrm_participant',23,76,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (66,'civicrm_participant',12,74,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (67,'civicrm_participant',15,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (68,'civicrm_participant',18,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (69,'civicrm_participant',21,83,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (70,'civicrm_participant',24,86,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (71,'civicrm_participant',25,87,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (72,'civicrm_participant',28,90,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (73,'civicrm_participant',31,93,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (74,'civicrm_participant',34,96,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (75,'civicrm_participant',37,99,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (76,'civicrm_participant',40,102,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (77,'civicrm_participant',43,105,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (78,'civicrm_participant',46,108,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (79,'civicrm_participant',49,111,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (80,'civicrm_participant',50,112,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (81,'civicrm_participant',1,63,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (82,'civicrm_participant',4,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (83,'civicrm_participant',7,69,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (84,'civicrm_participant',10,72,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (85,'civicrm_participant',13,75,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (86,'civicrm_participant',16,78,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (87,'civicrm_participant',19,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (88,'civicrm_participant',22,84,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (89,'civicrm_participant',26,88,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (90,'civicrm_participant',29,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (91,'civicrm_participant',32,94,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (92,'civicrm_participant',35,97,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (93,'civicrm_participant',38,100,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (94,'civicrm_participant',41,103,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (95,'civicrm_participant',44,106,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (96,'civicrm_participant',47,109,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (97,'civicrm_participant',2,64,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (98,'civicrm_participant',5,67,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (99,'civicrm_participant',8,70,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (100,'civicrm_participant',11,73,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (101,'civicrm_participant',14,76,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (102,'civicrm_participant',17,79,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (103,'civicrm_participant',20,82,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (104,'civicrm_participant',23,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
  (105,'civicrm_participant',27,89,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (106,'civicrm_participant',30,79,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (107,'civicrm_participant',33,88,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (108,'civicrm_participant',36,69,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (109,'civicrm_participant',39,83,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (110,'civicrm_participant',42,97,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (111,'civicrm_participant',45,87,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (112,'civicrm_participant',48,102,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL);
+ (106,'civicrm_participant',30,92,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (107,'civicrm_participant',33,95,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (108,'civicrm_participant',36,98,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (109,'civicrm_participant',39,101,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (110,'civicrm_participant',42,104,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (111,'civicrm_participant',45,107,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (112,'civicrm_participant',48,110,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL);
 /*!40000 ALTER TABLE `civicrm_line_item` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4246,9 +4256,9 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_loc_block` WRITE;
 /*!40000 ALTER TABLE `civicrm_loc_block` DISABLE KEYS */;
 INSERT INTO `civicrm_loc_block` (`id`, `address_id`, `email_id`, `phone_id`, `im_id`, `address_2_id`, `email_2_id`, `phone_2_id`, `im_2_id`) VALUES
- (1,178,189,175,NULL,NULL,NULL,NULL,NULL),
- (2,179,190,176,NULL,NULL,NULL,NULL,NULL),
- (3,180,191,177,NULL,NULL,NULL,NULL,NULL);
+ (1,177,190,160,NULL,NULL,NULL,NULL,NULL),
+ (2,178,191,161,NULL,NULL,NULL,NULL,NULL),
+ (3,179,192,162,NULL,NULL,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_loc_block` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4274,7 +4284,7 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_log` WRITE;
 /*!40000 ALTER TABLE `civicrm_log` DISABLE KEYS */;
 INSERT INTO `civicrm_log` (`id`, `entity_table`, `entity_id`, `data`, `modified_id`, `modified_date`) VALUES
- (1,'civicrm_contact',202,'civicrm_contact,202',202,'2023-10-19 14:22:30');
+ (1,'civicrm_contact',202,'civicrm_contact,202',202,'2023-12-17 20:11:35');
 /*!40000 ALTER TABLE `civicrm_log` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4511,7 +4521,7 @@ LOCK TABLES `civicrm_mailing_component` WRITE;
 /*!40000 ALTER TABLE `civicrm_mailing_component` DISABLE KEYS */;
 INSERT INTO `civicrm_mailing_component` (`id`, `name`, `component_type`, `subject`, `body_html`, `body_text`, `is_default`, `is_active`) VALUES
  (1,'Mailing Header','Header','Descriptive Title for this Header','Sample Header for HTML formatted content.','Sample Header for TEXT formatted content.',1,1),
- (2,'Mailing Footer','Footer','Descriptive Title for this Footer.','Sample Footer for HTML formatted content<br/><a href=\"{action.optOutUrl}\">Unsubscribe</a>  <br/> {domain.address}','to unsubscribe: {action.optOutUrl}\n{domain.address}',1,1),
+ (2,'Mailing Footer','Footer','Descriptive Title for this Footer.','Sample Footer for HTML formatted content<br/><a href=\"{action.optOutUrl}\">Opt out of any future emails</a>  <br/> {domain.address}','Opt out of any future emails: {action.optOutUrl}\n{domain.address}',1,1),
  (3,'Subscribe Message','Subscribe','Subscription Confirmation Request','You have a pending subscription to the {group.frontend_title} mailing list. To confirm this subscription, reply to this email or click <a href=\"{subscribe.url}\">here</a>.','You have a pending subscription to the {group.frontend_title} mailing list. To confirm this subscription, reply to this email or click on this link: {subscribe.url}',1,1),
  (4,'Welcome Message','Welcome','Your Subscription has been Activated','Welcome. Your subscription to the {group.frontend_title} mailing list has been activated.','Welcome. Your subscription to the {group.frontend_title} mailing list has been activated.',1,1),
  (5,'Unsubscribe Message','Unsubscribe','Un-subscribe Confirmation','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking <a href=\"{action.resubscribeUrl}\">here</a>.','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking {action.resubscribeUrl}',1,1),
@@ -4663,9 +4673,13 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_managed` WRITE;
 /*!40000 ALTER TABLE `civicrm_managed` DISABLE KEYS */;
 INSERT INTO `civicrm_managed` (`id`, `module`, `name`, `entity_type`, `entity_id`, `cleanup`, `entity_modified_date`) VALUES
- (1,'civi_mail','SavedSearch_Email_Bounce_History','SavedSearch',1,'always',NULL),
- (2,'civicrm','SavedSearch_Contact_Summary_Notes','SavedSearch',2,'always',NULL),
- (3,'civicrm','SavedSearch_Contact_Summary_Relationships','SavedSearch',3,'unused',NULL);
+ (1,'civi_campaign','SavedSearch_Administer_Campaigns','SavedSearch',1,'always',NULL),
+ (2,'civi_campaign','SavedSearch_Administer_Petitions','SavedSearch',2,'always',NULL),
+ (3,'civi_campaign','SavedSearch_Administer_Survey_Options','SavedSearch',3,'always',NULL),
+ (4,'civi_campaign','SavedSearch_Administer_Surveys','SavedSearch',4,'always',NULL),
+ (5,'civi_mail','SavedSearch_Email_Bounce_History','SavedSearch',5,'always',NULL),
+ (6,'civicrm','SavedSearch_Contact_Summary_Notes','SavedSearch',6,'always',NULL),
+ (7,'civicrm','SavedSearch_Contact_Summary_Relationships','SavedSearch',7,'unused',NULL);
 /*!40000 ALTER TABLE `civicrm_managed` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4694,36 +4708,36 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_membership` WRITE;
 /*!40000 ALTER TABLE `civicrm_membership` DISABLE KEYS */;
 INSERT INTO `civicrm_membership` (`id`, `contact_id`, `membership_type_id`, `join_date`, `start_date`, `end_date`, `source`, `status_id`, `is_override`, `status_override_end_date`, `owner_membership_id`, `max_related`, `is_test`, `is_pay_later`, `contribution_recur_id`, `campaign_id`) VALUES
- (1,55,1,'2023-10-19','2023-10-19','2025-10-18','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (2,47,2,'2023-10-18','2023-10-18','2024-10-17','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (3,168,1,'2023-10-17','2023-10-17','2025-10-16','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (4,126,2,'2023-10-16','2023-10-16','2024-10-15','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (5,113,2,'2022-10-15','2022-10-15','2023-10-14','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (6,169,2,'2023-10-14','2023-10-14','2024-10-13','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (7,36,1,'2023-10-13','2023-10-13','2025-10-12','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (8,164,2,'2023-10-12','2023-10-12','2024-10-11','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (9,87,1,'2023-10-11','2023-10-11','2025-10-10','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (10,39,2,'2022-10-10','2022-10-10','2023-10-09','Check',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (11,93,3,'2023-10-09','2023-10-09',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (12,49,2,'2023-10-08','2023-10-08','2024-10-07','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (13,48,1,'2023-10-07','2023-10-07','2025-10-06','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (14,92,2,'2023-10-06','2023-10-06','2024-10-05','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (15,180,1,'2021-06-29','2021-06-29','2023-06-28','Check',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (16,136,2,'2023-10-04','2023-10-04','2024-10-03','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (17,8,1,'2023-10-03','2023-10-03','2025-10-02','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (18,187,2,'2023-10-02','2023-10-02','2024-10-01','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (19,54,1,'2023-10-01','2023-10-01','2025-09-30','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (20,106,1,'2021-05-20','2021-05-20','2023-05-19','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (21,17,1,'2023-09-29','2023-09-29','2025-09-28','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (22,5,3,'2023-09-28','2023-09-28',NULL,'Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (23,175,1,'2023-09-27','2023-09-27','2025-09-26','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (24,100,2,'2023-09-26','2023-09-26','2024-09-25','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (25,28,1,'2021-04-10','2021-04-10','2023-04-09','Donation',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (26,78,2,'2023-09-24','2023-09-24','2024-09-23','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (27,117,1,'2023-09-23','2023-09-23','2025-09-22','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (28,66,2,'2023-09-22','2023-09-22','2024-09-21','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (29,86,1,'2023-09-21','2023-09-21','2025-09-20','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (30,149,1,'2021-03-01','2021-03-01','2023-02-28','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL);
+ (1,82,1,'2023-12-17','2023-12-17','2025-12-16','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (2,34,2,'2023-12-16','2023-12-16','2024-12-15','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (3,110,1,'2023-12-15','2023-12-15','2025-12-14','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (4,91,2,'2023-12-14','2023-12-14','2024-12-13','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (5,105,1,'2021-11-15','2021-11-15','2023-11-14','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (6,176,2,'2023-12-12','2023-12-12','2024-12-11','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (7,163,1,'2023-12-11','2023-12-11','2025-12-10','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (8,119,2,'2023-12-10','2023-12-10','2024-12-09','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (9,114,1,'2023-12-09','2023-12-09','2025-12-08','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (10,146,1,'2021-10-06','2021-10-06','2023-10-05','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (11,154,3,'2023-12-07','2023-12-07',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (12,170,2,'2023-12-06','2023-12-06','2024-12-05','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (13,8,1,'2023-12-05','2023-12-05','2025-12-04','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (14,190,2,'2023-12-04','2023-12-04','2024-12-03','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (15,179,2,'2022-12-03','2022-12-03','2023-12-02','Check',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (16,48,2,'2023-12-02','2023-12-02','2024-12-01','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (17,99,1,'2023-12-01','2023-12-01','2025-11-30','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (18,96,2,'2023-11-30','2023-11-30','2024-11-29','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (19,70,1,'2023-11-29','2023-11-29','2025-11-28','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (20,84,2,'2022-11-28','2022-11-28','2023-11-27','Payment',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (21,28,1,'2023-11-27','2023-11-27','2025-11-26','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (22,156,3,'2023-11-26','2023-11-26',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (23,153,1,'2023-11-25','2023-11-25','2025-11-24','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (24,195,2,'2023-11-24','2023-11-24','2024-11-23','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (25,67,1,'2021-06-08','2021-06-08','2023-06-07','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (26,75,2,'2023-11-22','2023-11-22','2024-11-21','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (27,112,1,'2023-11-21','2023-11-21','2025-11-20','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (28,188,2,'2023-11-20','2023-11-20','2024-11-19','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (29,62,1,'2023-11-19','2023-11-19','2025-11-18','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (30,59,2,'2022-11-18','2022-11-18','2023-11-17','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_membership` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4745,36 +4759,36 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_membership_log` WRITE;
 /*!40000 ALTER TABLE `civicrm_membership_log` DISABLE KEYS */;
 INSERT INTO `civicrm_membership_log` (`id`, `membership_id`, `status_id`, `start_date`, `end_date`, `modified_id`, `modified_date`, `membership_type_id`, `max_related`) VALUES
- (1,22,1,'2023-09-28',NULL,5,'2023-10-19',3,NULL),
- (2,17,1,'2023-10-03','2025-10-02',8,'2023-10-19',1,NULL),
- (3,21,1,'2023-09-29','2025-09-28',17,'2023-10-19',1,NULL),
- (4,25,3,'2021-04-10','2023-04-09',28,'2023-10-19',1,NULL),
- (5,7,1,'2023-10-13','2025-10-12',36,'2023-10-19',1,NULL),
- (6,10,4,'2022-10-10','2023-10-09',39,'2023-10-19',2,NULL),
- (7,2,1,'2023-10-18','2024-10-17',47,'2023-10-19',2,NULL),
- (8,13,1,'2023-10-07','2025-10-06',48,'2023-10-19',1,NULL),
- (9,12,1,'2023-10-08','2024-10-07',49,'2023-10-19',2,NULL),
- (10,19,1,'2023-10-01','2025-09-30',54,'2023-10-19',1,NULL),
- (11,1,1,'2023-10-19','2025-10-18',55,'2023-10-19',1,NULL),
- (12,28,1,'2023-09-22','2024-09-21',66,'2023-10-19',2,NULL),
- (13,26,1,'2023-09-24','2024-09-23',78,'2023-10-19',2,NULL),
- (14,29,1,'2023-09-21','2025-09-20',86,'2023-10-19',1,NULL),
- (15,9,1,'2023-10-11','2025-10-10',87,'2023-10-19',1,NULL),
- (16,14,1,'2023-10-06','2024-10-05',92,'2023-10-19',2,NULL),
- (17,11,1,'2023-10-09',NULL,93,'2023-10-19',3,NULL),
- (18,24,1,'2023-09-26','2024-09-25',100,'2023-10-19',2,NULL),
- (19,20,3,'2021-05-20','2023-05-19',106,'2023-10-19',1,NULL),
- (20,5,4,'2022-10-15','2023-10-14',113,'2023-10-19',2,NULL),
- (21,27,1,'2023-09-23','2025-09-22',117,'2023-10-19',1,NULL),
- (22,4,1,'2023-10-16','2024-10-15',126,'2023-10-19',2,NULL),
- (23,16,1,'2023-10-04','2024-10-03',136,'2023-10-19',2,NULL),
- (24,30,3,'2021-03-01','2023-02-28',149,'2023-10-19',1,NULL),
- (25,8,1,'2023-10-12','2024-10-11',164,'2023-10-19',2,NULL),
- (26,3,1,'2023-10-17','2025-10-16',168,'2023-10-19',1,NULL),
- (27,6,1,'2023-10-14','2024-10-13',169,'2023-10-19',2,NULL),
- (28,23,1,'2023-09-27','2025-09-26',175,'2023-10-19',1,NULL),
- (29,15,3,'2021-06-29','2023-06-28',180,'2023-10-19',1,NULL),
- (30,18,1,'2023-10-02','2024-10-01',187,'2023-10-19',2,NULL);
+ (1,13,1,'2023-12-05','2025-12-04',8,'2023-12-17',1,NULL),
+ (2,21,1,'2023-11-27','2025-11-26',28,'2023-12-17',1,NULL),
+ (3,2,1,'2023-12-16','2024-12-15',34,'2023-12-17',2,NULL),
+ (4,16,1,'2023-12-02','2024-12-01',48,'2023-12-17',2,NULL),
+ (5,30,4,'2022-11-18','2023-11-17',59,'2023-12-17',2,NULL),
+ (6,29,1,'2023-11-19','2025-11-18',62,'2023-12-17',1,NULL),
+ (7,25,3,'2021-06-08','2023-06-07',67,'2023-12-17',1,NULL),
+ (8,19,1,'2023-11-29','2025-11-28',70,'2023-12-17',1,NULL),
+ (9,26,1,'2023-11-22','2024-11-21',75,'2023-12-17',2,NULL),
+ (10,1,1,'2023-12-17','2025-12-16',82,'2023-12-17',1,NULL),
+ (11,20,4,'2022-11-28','2023-11-27',84,'2023-12-17',2,NULL),
+ (12,4,1,'2023-12-14','2024-12-13',91,'2023-12-17',2,NULL),
+ (13,18,1,'2023-11-30','2024-11-29',96,'2023-12-17',2,NULL),
+ (14,17,1,'2023-12-01','2025-11-30',99,'2023-12-17',1,NULL),
+ (15,5,3,'2021-11-15','2023-11-14',105,'2023-12-17',1,NULL),
+ (16,3,1,'2023-12-15','2025-12-14',110,'2023-12-17',1,NULL),
+ (17,27,1,'2023-11-21','2025-11-20',112,'2023-12-17',1,NULL),
+ (18,9,1,'2023-12-09','2025-12-08',114,'2023-12-17',1,NULL),
+ (19,8,1,'2023-12-10','2024-12-09',119,'2023-12-17',2,NULL),
+ (20,10,3,'2021-10-06','2023-10-05',146,'2023-12-17',1,NULL),
+ (21,23,1,'2023-11-25','2025-11-24',153,'2023-12-17',1,NULL),
+ (22,11,1,'2023-12-07',NULL,154,'2023-12-17',3,NULL),
+ (23,22,1,'2023-11-26',NULL,156,'2023-12-17',3,NULL),
+ (24,7,1,'2023-12-11','2025-12-10',163,'2023-12-17',1,NULL),
+ (25,12,1,'2023-12-06','2024-12-05',170,'2023-12-17',2,NULL),
+ (26,6,1,'2023-12-12','2024-12-11',176,'2023-12-17',2,NULL),
+ (27,15,4,'2022-12-03','2023-12-02',179,'2023-12-17',2,NULL),
+ (28,28,1,'2023-11-20','2024-11-19',188,'2023-12-17',2,NULL),
+ (29,14,1,'2023-12-04','2024-12-03',190,'2023-12-17',2,NULL),
+ (30,24,1,'2023-11-24','2024-11-23',195,'2023-12-17',2,NULL);
 /*!40000 ALTER TABLE `civicrm_membership_log` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4786,35 +4800,35 @@ LOCK TABLES `civicrm_membership_payment` WRITE;
 /*!40000 ALTER TABLE `civicrm_membership_payment` DISABLE KEYS */;
 INSERT INTO `civicrm_membership_payment` (`id`, `membership_id`, `contribution_id`) VALUES
  (1,1,32),
- (2,3,33),
- (3,7,34),
- (4,9,35),
- (5,13,36),
- (6,15,37),
- (7,17,38),
- (8,19,39),
- (9,20,40),
- (10,21,41),
- (11,23,42),
- (12,25,43),
- (13,27,44),
- (14,29,45),
- (15,30,46),
- (16,2,47),
- (17,4,48),
- (18,5,49),
- (19,6,50),
- (20,8,51),
- (21,10,52),
- (22,12,53),
- (23,14,54),
- (24,16,55),
- (25,18,56),
- (26,24,57),
- (27,26,58),
+ (2,2,33),
+ (3,3,34),
+ (4,4,35),
+ (5,5,36),
+ (6,6,37),
+ (7,7,38),
+ (8,8,39),
+ (9,9,40),
+ (10,10,41),
+ (11,11,42),
+ (12,12,43),
+ (13,13,44),
+ (14,14,45),
+ (15,15,46),
+ (16,16,47),
+ (17,17,48),
+ (18,18,49),
+ (19,19,50),
+ (20,20,51),
+ (21,21,52),
+ (22,22,53),
+ (23,23,54),
+ (24,24,55),
+ (25,25,56),
+ (26,26,57),
+ (27,27,58),
  (28,28,59),
- (29,11,60),
- (30,22,61);
+ (29,29,60),
+ (30,30,61);
 /*!40000 ALTER TABLE `civicrm_membership_payment` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4855,311 +4869,311 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_menu` WRITE;
 /*!40000 ALTER TABLE `civicrm_menu` DISABLE KEYS */;
 INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title`, `access_callback`, `access_arguments`, `page_callback`, `page_arguments`, `breadcrumb`, `return_url`, `return_url_args`, `component_id`, `is_active`, `is_public`, `is_exposed`, `is_ssl`, `weight`, `type`, `page_type`, `skipBreadcrumb`, `module_data`) VALUES
- (1,1,'civicrm/tag',NULL,'Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,25,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (2,1,'civicrm/tag/edit','action=add','New Tag','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:17:\"CRM_Tag_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (3,1,'civicrm/tag/merge',NULL,'Merge Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:18:\"CRM_Tag_Form_Merge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (4,1,'civicrm/ajax/tagTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:10:\"getTagTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (5,1,'civicrm/ajax/jqState',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:7:\"jqState\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (6,1,'civicrm/ajax/jqCounty',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:8:\"jqCounty\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (7,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (8,1,'civicrm/admin/custom/group/edit',NULL,'Configure Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (9,1,'civicrm/admin/custom/group/preview',NULL,'Custom Field Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:23:\"CRM_Custom_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (10,1,'civicrm/admin/custom/group/delete',NULL,'Delete Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteGroup\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (11,1,'civicrm/admin/custom/group/field',NULL,'Custom Data Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,11,1,0,0,'a:0:{}'),
- (12,1,'civicrm/admin/custom/group/field/delete',NULL,'Delete Custom Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (13,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (14,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (15,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (16,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (17,1,'civicrm/admin/uf/group',NULL,'Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (18,1,'civicrm/admin/uf/group/preview',NULL,'Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_UF_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (19,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,21,1,0,0,'a:0:{}'),
- (20,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,22,1,0,0,'a:0:{}'),
- (21,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,23,1,0,0,'a:0:{}'),
- (22,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,24,1,0,0,'a:0:{}'),
- (23,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,25,1,0,0,'a:0:{}'),
- (24,1,'civicrm/admin/uf/group/copy',NULL,'Profile Copy','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,26,1,0,0,'a:0:{}'),
- (25,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,0,1,0,0,'a:0:{}'),
- (26,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (27,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,35,1,0,0,'a:2:{s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (28,1,'civicrm/admin/reltype/edit',NULL,'Edit Relationship Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_RelationshipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Relationship Types\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (29,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (30,1,'civicrm/admin/options/subtype/edit',NULL,'Edit Contact Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_ContactType\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:13:\"Contact Types\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (31,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,45,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (32,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (33,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,55,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (34,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (35,1,'civicrm/admin/locationType/edit',NULL,'Edit Location Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_LocationType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (36,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,65,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (37,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (38,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (39,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n    Mobile, Fax, Pager)\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (40,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (41,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,95,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (42,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (43,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (44,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (45,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (46,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (47,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (48,1,'civicrm/admin/messageTemplates',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (49,1,'civicrm/admin/messageTemplates/add',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,262,1,0,0,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'),
- (50,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (51,1,'civicrm/admin/scheduleReminders/edit',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCRM data\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Form_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Schedule Reminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (52,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (53,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (54,1,'civicrm/admin/labelFormats',NULL,'Label Page Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (55,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (56,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (57,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (58,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (59,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (60,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
- (61,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
- (62,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
- (63,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'),
- (64,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),
- (65,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'),
- (66,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),
- (67,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}','civicrm/admin/configtask',NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (68,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (69,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (70,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (71,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (72,1,'civicrm/admin/paymentProcessor',NULL,'Settings - Payment Processor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_PaymentProcessor\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (73,1,'civicrm/admin/paymentProcessor/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_PaymentProcessor\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (74,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (75,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (76,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (77,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (78,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (79,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (80,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (81,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (82,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (83,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (84,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,130,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (85,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (86,1,'civicrm/admin/setting/preferences/event',NULL,'CiviEvent Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (87,1,'civicrm/admin/setting/preferences/mailing',NULL,'CiviMail Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Mailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (88,1,'civicrm/admin/setting/preferences/member',NULL,'CiviMember Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Admin_Form_Preferences_Member\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
- (89,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'),
- (90,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1370,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (91,1,'civicrm/admin/job/add',NULL,'Add Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Form_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:31:\"Add a periodially running task.\";}'),
- (92,1,'civicrm/admin/job/edit',NULL,'Edit Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1372,1,0,0,'a:2:{s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (93,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1380,1,0,0,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),
- (94,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";}'),
- (95,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'),
- (96,1,'civicrm/admin',NULL,'Administer','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,9000,1,1,0,'a:0:{}'),
- (97,1,'civicrm/ajax/navmenu',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:7:\"navMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (98,1,'civicrm/ajax/menutree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:8:\"menuTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
- (99,1,'civicrm/ajax/statusmsg',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:12:\"getStatusMsg\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (100,1,'civicrm/admin/price',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:10:\"adminGroup\";s:9:\"Customize\";}'),
- (101,1,'civicrm/admin/price/add','action=add','New Price Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'),
- (102,1,'civicrm/admin/price/edit',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (103,1,'civicrm/admin/price/field',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (104,1,'civicrm/admin/price/field/edit',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (105,1,'civicrm/admin/price/field/option',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (106,1,'civicrm/admin/price/field/option/edit',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}i:3;a:2:{s:5:\"title\";s:19:\"Price Field Options\";s:3:\"url\";s:41:\"/civicrm/admin/price/field/option?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (107,1,'civicrm/admin/sms/provider',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Provider\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,500,1,0,0,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (108,1,'civicrm/sms/send',NULL,'New Mass SMS','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:23:\"CRM_SMS_Controller_Send\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,1,0,'a:0:{}'),
- (109,1,'civicrm/sms/callback',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Callback\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (110,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,399,1,0,0,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (111,1,'civicrm/admin/badgelayout/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Form_Layout\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?reset=1&amp;action=browse\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (112,1,'civicrm/import',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,400,1,1,0,'a:0:{}'),
- (113,1,'civicrm/import/contact',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'),
- (114,1,'civicrm/import/contact/summary',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Import_Form_Summary\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Import Contacts\";s:3:\"url\";s:31:\"/civicrm/import/contact?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'),
- (115,1,'civicrm/import/outcome',NULL,'Import results','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Import_Forms\";i:1;s:9:\"outputCSV\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (116,1,'civicrm/import/activity',NULL,'Import Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'),
- (117,1,'civicrm/import/contribution',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,520,1,1,0,'a:0:{}'),
- (118,1,'civicrm/import/custom','id=%%id%%','Import Multi-value Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Custom_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'),
- (119,1,'civicrm/ajax/status',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Contact_Import_Page_AJAX\";i:1;s:6:\"status\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (120,1,'civicrm/import/datasource',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Import_Form_DataSourceConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,450,1,1,0,'a:0:{}'),
- (121,1,'civicrm/payment/form',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Financial_Form_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
- (122,1,'civicrm/payment/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Financial_Form_PaymentEdit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (123,1,'civicrm/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Custom_Form_CustomDataByType\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (124,1,'civicrm/group',NULL,'Manage Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Page_Group\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,30,1,1,0,'a:0:{}'),
- (125,1,'civicrm/group/search',NULL,'Group Members','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'),
- (126,1,'civicrm/group/add',NULL,'New Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (127,1,'civicrm/group/edit',NULL,'Edit Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:19:\"CRM_Group_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (128,1,'civicrm/ajax/grouplist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Group_Page_AJAX\";i:1;s:12:\"getGroupList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (129,1,'civicrm/upgrade',NULL,'Upgrade CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Upgrade_Page_Upgrade\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (130,1,'civicrm/export',NULL,'Download Errors','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (131,1,'civicrm/export/contact',NULL,'Export Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'),
- (132,1,'civicrm/export/standalone',NULL,'Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Export_Controller_Standalone\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (133,1,'civicrm/admin/options/acl_role',NULL,'ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (134,1,'civicrm/acl',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Page_ACL\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (135,1,'civicrm/acl/edit',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (136,1,'civicrm/acl/delete',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (137,1,'civicrm/acl/entityrole',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Page_EntityRole\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (138,1,'civicrm/acl/entityrole/edit',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Form_EntityRole\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Assign Users to ACL Roles\";s:3:\"url\";s:31:\"/civicrm/acl/entityrole?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (139,1,'civicrm/file',NULL,'Browse Uploaded files','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_Page_File\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (140,1,'civicrm/file/delete',NULL,'Delete File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:17:\"CRM_Core_BAO_File\";i:1;s:16:\"deleteAttachment\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:21:\"Browse Uploaded files\";s:3:\"url\";s:21:\"/civicrm/file?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (141,1,'civicrm/friend',NULL,'Tell a Friend','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:15:\"CRM_Friend_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (142,1,'civicrm/logout',NULL,'Log out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:6:\"logout\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,9999,1,1,0,'a:0:{}'),
- (143,1,'civicrm/i18n',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"translate CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_I18n_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (144,1,'civicrm/ajax/attachment',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:29:\"CRM_Core_Page_AJAX_Attachment\";i:1;s:10:\"attachFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (145,1,'civicrm/api',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (146,1,'civicrm/api3',NULL,'CiviCRM API v3','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_APIExplorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (147,1,'civicrm/ajax/apidoc',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:6:\"getDoc\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (148,1,'civicrm/ajax/rest',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:4:\"ajax\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (149,1,'civicrm/api/json',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:8:\"ajaxJson\";}','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (150,1,'civicrm/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:12:\"loadTemplate\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (151,1,'civicrm/ajax/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (152,1,'civicrm/asset/builder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"\\Civi\\Core\\AssetBuilder\";i:1;s:7:\"pageRun\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (153,1,'civicrm/contribute/ajax/tableview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (154,1,'civicrm/payment/ipn',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Core_Payment\";i:1;s:9:\"handleIPN\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,1,1,1,0,1,1,0,0,'a:0:{}'),
- (155,1,'civicrm/batch',NULL,'Batch Data Entry','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (156,1,'civicrm/batch/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Batch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (157,1,'civicrm/batch/entry',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Entry\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (158,1,'civicrm/ajax/batch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:9:\"batchSave\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (159,1,'civicrm/ajax/batchlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:12:\"getBatchList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (160,1,'civicrm/ajax/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Page_AJAX\";i:1;s:3:\"run\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (161,1,'civicrm/dev/qunit',NULL,'QUnit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_Core_Page_QUnit\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (162,1,'civicrm/dev/fake-error',NULL,'Fake Error','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Page_FakeError\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (163,1,'civicrm/profile-editor/schema',NULL,'ProfileEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:25:\"CRM_UF_Page_ProfileEditor\";i:1;s:13:\"getSchemaJSON\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (164,1,'civicrm/a',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"\\Civi\\Angular\\Page\\Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (165,1,'civicrm/ajax/angular-modules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"\\Civi\\Angular\\Page\\Modules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (166,1,'civicrm/ajax/recurringentity/update-mode',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:34:\"CRM_Core_Page_AJAX_RecurringEntity\";i:1;s:10:\"updateMode\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (167,1,'civicrm/recurringentity/preview',NULL,'Confirm dates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Core_Page_RecurringEntityPreview\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (168,1,'civicrm/shortcode',NULL,'Insert CiviCRM Content','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Form_ShortCode\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (169,1,'civicrm/task/add-to-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Form_Task_AddToGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (170,1,'civicrm/task/remove-from-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contact_Form_Task_RemoveFromGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (171,1,'civicrm/task/add-to-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contact_Form_Task_AddToTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (172,1,'civicrm/task/remove-from-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Form_Task_RemoveFromTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (173,1,'civicrm/task/send-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (174,1,'civicrm/task/make-mailing-label',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Label\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (175,1,'civicrm/task/pick-profile',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contact_Form_Task_PickProfile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (176,1,'civicrm/task/print-document',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (177,1,'civicrm/task/unhold-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Unhold\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (178,1,'civicrm/task/alter-contact-preference',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contact_Form_Task_AlterPreferences\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (179,1,'civicrm/task/delete-contact',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (180,1,'civicrm/task/add-activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (181,1,'civicrm/note',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Note_Form_Note\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (182,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (183,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
- (184,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (185,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,362,1,0,0,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (186,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'),
- (187,1,'civicrm/dashboard',NULL,'CiviCRM Home','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,1,0,'a:0:{}'),
- (188,1,'civicrm/contact/search',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,10,1,1,0,'a:0:{}'),
- (189,1,'civicrm/contact/image',NULL,'Process Uploaded Images','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"CRM_Contact_BAO_Contact\";i:1;s:12:\"processImage\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (190,1,'civicrm/contact/imagefile',NULL,'Get Image File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_ImageFile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (191,1,'civicrm/contact/search/basic',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (192,1,'civicrm/contact/search/advanced',NULL,'Advanced Search','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=512\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,12,1,1,0,'a:0:{}'),
- (193,1,'civicrm/contact/search/builder',NULL,'Search Builder','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:9:\"mode=8192\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,14,1,1,0,'a:0:{}'),
- (194,1,'civicrm/contact/add',NULL,'New Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (195,1,'civicrm/contact/add/individual','ct=Individual','New Individual','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (196,1,'civicrm/contact/add/household','ct=Household','New Household','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (197,1,'civicrm/contact/add/organization','ct=Organization','New Organization','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (198,1,'civicrm/contact/relatedcontact',NULL,'Edit Related Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_RelatedContact\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (199,1,'civicrm/contact/merge',NULL,'Merge Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:22:\"CRM_Contact_Form_Merge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (200,1,'civicrm/contact/email',NULL,'Email a Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (201,1,'civicrm/contact/map',NULL,'Map Location(s)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_Map\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (202,1,'civicrm/contact/map/event',NULL,'Map Event Location','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_Task_Map_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:28:\"/civicrm/contact/map?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (203,1,'civicrm/contact/view','cid=%%cid%%','Contact Summary','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Summary\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (204,1,'civicrm/contact/view/delete',NULL,'Delete Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (205,1,'civicrm/contact/view/activity','show=1,cid=%%cid%%','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:21:\"CRM_Activity_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (206,1,'civicrm/activity/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (207,1,'civicrm/activity/email/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (208,1,'civicrm/activity/pdf/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (209,1,'civicrm/contact/view/rel','cid=%%cid%%','Relationships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_Relationship\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (210,1,'civicrm/contact/view/group','cid=%%cid%%','Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_GroupContact\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (211,1,'civicrm/contact/view/smartgroup','cid=%%cid%%','Smart Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:39:\"CRM_Contact_Page_View_ContactSmartGroup\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (212,1,'civicrm/contact/view/tag','cid=%%cid%%','Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Tag\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (213,1,'civicrm/contact/view/cd',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:32:\"CRM_Contact_Page_View_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (214,1,'civicrm/contact/view/cd/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Form_CustomData\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (215,1,'civicrm/contact/view/vcard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Vcard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (216,1,'civicrm/contact/view/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Print\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (217,1,'civicrm/contact/view/log',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Log\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (218,1,'civicrm/user',NULL,'Contact Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Page_View_UserDashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
- (219,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (220,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (221,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (222,1,'civicrm/ajax/relation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"relationship\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
- (223,1,'civicrm/ajax/groupTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"groupTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (224,1,'civicrm/ajax/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:11:\"customField\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (225,1,'civicrm/ajax/customvalue',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:17:\"deleteCustomValue\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
- (226,1,'civicrm/ajax/cmsuser',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"checkUserName\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (227,1,'civicrm/ajax/checkemail',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactEmail\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (228,1,'civicrm/ajax/checkphone',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactPhone\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (229,1,'civicrm/ajax/subtype',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"buildSubTypes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (230,1,'civicrm/ajax/signature',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"getSignature\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (231,1,'civicrm/ajax/pdfFormat',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"pdfFormat\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (232,1,'civicrm/ajax/paperSize',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"paperSize\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (233,1,'civicrm/ajax/contactref',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:31:\"access contact reference fields\";i:1;s:15:\" access CiviCRM\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"contactReference\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (234,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (235,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (236,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (237,1,'civicrm/contact/deduperules',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer dedupe rules\";i:1;s:24:\"merge duplicate contacts\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Page_DedupeRules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,105,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),
- (238,1,'civicrm/contact/dedupefind',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Page_DedupeFind\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (239,1,'civicrm/ajax/dedupefind',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:10:\"getDedupes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (240,1,'civicrm/contact/dedupemerge',NULL,'Batch Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Page_DedupeMerge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (241,1,'civicrm/dedupe/exception',NULL,'Dedupe Exceptions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Page_DedupeException\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,110,1,0,0,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'),
- (242,1,'civicrm/ajax/dedupeRules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"buildDedupeRules\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (243,1,'civicrm/contact/view/useradd','cid=%%cid%%','Add User','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Useradd\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (244,1,'civicrm/ajax/markSelection',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:22:\"selectUnselectContacts\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (245,1,'civicrm/ajax/toggleDedupeSelect',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:18:\"toggleDedupeSelect\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (246,1,'civicrm/ajax/flipDupePairs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"flipDupePairs\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (247,1,'civicrm/activity/sms/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_SMS\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (248,1,'civicrm/ajax/contactrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"view my contact\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:23:\"getContactRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (249,1,'civicrm/ajax/api4',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Api4_Page_AJAX\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (250,1,'civicrm/api4',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Api4_Page_Api4Explorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (251,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
- (252,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
- (253,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (254,1,'civicrm/custom/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Custom_Form_CustomData\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (255,1,'civicrm/ajax/optionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:13:\"getOptionList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (256,1,'civicrm/ajax/reorder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:11:\"fixOrdering\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (257,1,'civicrm/ajax/multirecordfieldlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:23:\"getMultiRecordFieldList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (258,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (259,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (260,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (261,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (262,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (263,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (264,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (265,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
- (266,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (267,1,'civicrm/event/manage/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_PCP_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,540,1,1,0,'a:0:{}'),
- (268,1,'civicrm/event/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'),
- (269,1,'civicrm/event/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
- (270,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,1,0,1,0,800,1,1,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),
- (271,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),
- (272,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'),
- (273,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'),
- (274,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'),
- (275,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_ICalendar\";i:1;s:3:\"run\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
- (276,1,'civicrm/event/list',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:19:\"CRM_Event_Page_List\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
- (277,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
- (278,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (279,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,375,1,0,0,'a:2:{s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (280,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (281,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (282,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (283,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,398,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (284,1,'civicrm/event/search',NULL,'Find Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,810,1,1,0,'a:0:{}'),
- (285,1,'civicrm/event/manage',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,1,820,1,1,0,'a:0:{}'),
- (286,1,'civicrm/event/badge',NULL,'Print Event Name Badge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:25:\"CRM_Event_Form_Task_Badge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'),
- (287,1,'civicrm/event/manage/settings',NULL,'Event Info and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,910,1,0,0,'a:0:{}'),
- (288,1,'civicrm/event/manage/location',NULL,'Event Location','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:35:\"CRM_Event_Form_ManageEvent_Location\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'),
- (289,1,'civicrm/event/manage/fee',NULL,'Event Fees','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_ManageEvent_Fee\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,920,1,0,0,'a:0:{}'),
- (290,1,'civicrm/event/manage/registration',NULL,'Event Online Registration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:39:\"CRM_Event_Form_ManageEvent_Registration\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'),
- (291,1,'civicrm/event/manage/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Friend_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,940,1,0,0,'a:0:{}'),
- (292,1,'civicrm/event/manage/reminder',NULL,'Schedule Reminders','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:44:\"CRM_Event_Form_ManageEvent_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,950,1,0,0,'a:0:{}'),
- (293,1,'civicrm/event/manage/repeat',NULL,'Repeat Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_ManageEvent_Repeat\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,960,1,0,0,'a:0:{}'),
- (294,1,'civicrm/event/add','action=add','New Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,830,1,0,0,'a:0:{}'),
- (295,1,'civicrm/event/import',NULL,'Import Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:23:\"edit event participants\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,840,1,1,0,'a:0:{}'),
- (296,1,'civicrm/event/price',NULL,'Manage Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,850,1,1,0,'a:0:{}'),
- (297,1,'civicrm/event/selfsvcupdate',NULL,'Self-service Registration Update','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Form_SelfSvcUpdate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,880,1,1,0,'a:0:{}'),
- (298,1,'civicrm/event/selfsvctransfer',NULL,'Self-service Registration Transfer','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_SelfSvcTransfer\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,890,1,1,0,'a:0:{}'),
- (299,1,'civicrm/contact/view/participant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'),
- (300,1,'civicrm/participant/delete',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"delete in CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_Participant_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'),
- (301,1,'civicrm/ajax/eventFee',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_Page_AJAX\";i:1;s:8:\"eventFee\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (302,1,'civicrm/ajax/locBlock',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:11:\"getLocBlock\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (303,1,'civicrm/event/participant/feeselection',NULL,'Change Registration Selections','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:38:\"CRM_Event_Form_ParticipantFeeSelection\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:34:\"/civicrm/event/participant?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'),
- (304,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,450,1,0,0,'a:0:{}'),
- (305,1,'civicrm/contribute/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (1,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (2,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (3,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (4,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (5,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (6,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (7,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (8,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (9,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (10,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (11,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (12,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (13,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,362,1,0,0,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (14,1,'civicrm/ajax/api4',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Api4_Page_AJAX\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (15,1,'civicrm/api4',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Api4_Page_Api4Explorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (16,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (17,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (18,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (19,1,'civicrm/import',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,400,1,1,0,'a:0:{}'),
+ (20,1,'civicrm/import/contact',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'),
+ (21,1,'civicrm/import/contact/summary',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Import_Form_Summary\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Import Contacts\";s:3:\"url\";s:31:\"/civicrm/import/contact?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'),
+ (22,1,'civicrm/import/outcome',NULL,'Import results','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Import_Forms\";i:1;s:9:\"outputCSV\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (23,1,'civicrm/import/activity',NULL,'Import Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'),
+ (24,1,'civicrm/import/contribution',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,520,1,1,0,'a:0:{}'),
+ (25,1,'civicrm/import/custom','id=%%id%%','Import Multi-value Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Custom_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'),
+ (26,1,'civicrm/ajax/status',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Contact_Import_Page_AJAX\";i:1;s:6:\"status\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (27,1,'civicrm/import/datasource',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Import_Form_DataSourceConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,450,1,1,0,'a:0:{}'),
+ (28,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'),
+ (29,1,'civicrm/dashboard',NULL,'CiviCRM Home','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,1,0,'a:0:{}'),
+ (30,1,'civicrm/contact/search',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,10,1,1,0,'a:0:{}'),
+ (31,1,'civicrm/contact/image',NULL,'Process Uploaded Images','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"CRM_Contact_BAO_Contact\";i:1;s:12:\"processImage\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (32,1,'civicrm/contact/imagefile',NULL,'Get Image File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_ImageFile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (33,1,'civicrm/contact/search/basic',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (34,1,'civicrm/contact/search/advanced',NULL,'Advanced Search','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=512\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,12,1,1,0,'a:0:{}'),
+ (35,1,'civicrm/contact/search/builder',NULL,'Search Builder','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:9:\"mode=8192\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,14,1,1,0,'a:0:{}'),
+ (36,1,'civicrm/contact/add',NULL,'New Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (37,1,'civicrm/contact/add/individual','ct=Individual','New Individual','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (38,1,'civicrm/contact/add/household','ct=Household','New Household','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (39,1,'civicrm/contact/add/organization','ct=Organization','New Organization','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (40,1,'civicrm/contact/relatedcontact',NULL,'Edit Related Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_RelatedContact\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (41,1,'civicrm/contact/merge',NULL,'Merge Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:22:\"CRM_Contact_Form_Merge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (42,1,'civicrm/contact/email',NULL,'Email a Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (43,1,'civicrm/contact/map',NULL,'Map Location(s)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_Map\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (44,1,'civicrm/contact/map/event',NULL,'Map Event Location','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_Task_Map_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:28:\"/civicrm/contact/map?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (45,1,'civicrm/contact/view','cid=%%cid%%','Contact Summary','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Summary\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (46,1,'civicrm/contact/view/delete',NULL,'Delete Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (47,1,'civicrm/contact/view/activity','show=1,cid=%%cid%%','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:21:\"CRM_Activity_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (48,1,'civicrm/activity/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (49,1,'civicrm/activity/email/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (50,1,'civicrm/activity/pdf/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (51,1,'civicrm/contact/view/rel','cid=%%cid%%','Relationships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_Relationship\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (52,1,'civicrm/contact/view/group','cid=%%cid%%','Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_GroupContact\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (53,1,'civicrm/contact/view/smartgroup','cid=%%cid%%','Smart Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:39:\"CRM_Contact_Page_View_ContactSmartGroup\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (54,1,'civicrm/contact/view/tag','cid=%%cid%%','Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Tag\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (55,1,'civicrm/contact/view/cd',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:32:\"CRM_Contact_Page_View_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (56,1,'civicrm/contact/view/cd/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Form_CustomData\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (57,1,'civicrm/contact/view/vcard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Vcard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (58,1,'civicrm/contact/view/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Print\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (59,1,'civicrm/contact/view/log',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Log\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (60,1,'civicrm/user',NULL,'Contact Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Page_View_UserDashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (61,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (62,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (63,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (64,1,'civicrm/ajax/relation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"relationship\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (65,1,'civicrm/ajax/groupTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"groupTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (66,1,'civicrm/ajax/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:11:\"customField\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (67,1,'civicrm/ajax/customvalue',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:17:\"deleteCustomValue\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (68,1,'civicrm/ajax/cmsuser',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"checkUserName\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (69,1,'civicrm/ajax/checkemail',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactEmail\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (70,1,'civicrm/ajax/checkphone',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactPhone\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (71,1,'civicrm/ajax/subtype',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"buildSubTypes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (72,1,'civicrm/ajax/signature',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"getSignature\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (73,1,'civicrm/ajax/pdfFormat',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"pdfFormat\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (74,1,'civicrm/ajax/paperSize',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"paperSize\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (75,1,'civicrm/ajax/contactref',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:31:\"access contact reference fields\";i:1;s:15:\" access CiviCRM\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"contactReference\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (76,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (77,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (78,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (79,1,'civicrm/contact/deduperules',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer dedupe rules\";i:1;s:24:\"merge duplicate contacts\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Page_DedupeRules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,105,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),
+ (80,1,'civicrm/contact/dedupefind',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Page_DedupeFind\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (81,1,'civicrm/ajax/dedupefind',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:10:\"getDedupes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (82,1,'civicrm/contact/dedupemerge',NULL,'Batch Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Page_DedupeMerge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (83,1,'civicrm/dedupe/exception',NULL,'Dedupe Exceptions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Page_DedupeException\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,110,1,0,0,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'),
+ (84,1,'civicrm/ajax/dedupeRules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"buildDedupeRules\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (85,1,'civicrm/contact/view/useradd','cid=%%cid%%','Add User','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Useradd\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (86,1,'civicrm/ajax/markSelection',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:22:\"selectUnselectContacts\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (87,1,'civicrm/ajax/toggleDedupeSelect',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:18:\"toggleDedupeSelect\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (88,1,'civicrm/ajax/flipDupePairs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"flipDupePairs\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (89,1,'civicrm/activity/sms/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_SMS\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (90,1,'civicrm/ajax/contactrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"view my contact\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:23:\"getContactRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (91,1,'civicrm/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Custom_Form_CustomDataByType\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (92,1,'civicrm/ajax/jqState',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:7:\"jqState\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (93,1,'civicrm/ajax/jqCounty',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:8:\"jqCounty\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (94,1,'civicrm/upgrade',NULL,'Upgrade CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Upgrade_Page_Upgrade\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (95,1,'civicrm/export',NULL,'Download Errors','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (96,1,'civicrm/export/contact',NULL,'Export Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'),
+ (97,1,'civicrm/export/standalone',NULL,'Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Export_Controller_Standalone\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (98,1,'civicrm/admin/options/acl_role',NULL,'ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (99,1,'civicrm/acl',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Page_ACL\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (100,1,'civicrm/acl/edit',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (101,1,'civicrm/acl/delete',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (102,1,'civicrm/acl/entityrole',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Page_EntityRole\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (103,1,'civicrm/acl/entityrole/edit',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Form_EntityRole\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Assign Users to ACL Roles\";s:3:\"url\";s:31:\"/civicrm/acl/entityrole?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (104,1,'civicrm/file',NULL,'Browse Uploaded files','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_Page_File\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (105,1,'civicrm/file/delete',NULL,'Delete File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:17:\"CRM_Core_BAO_File\";i:1;s:16:\"deleteAttachment\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:21:\"Browse Uploaded files\";s:3:\"url\";s:21:\"/civicrm/file?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (106,1,'civicrm/friend',NULL,'Tell a Friend','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:15:\"CRM_Friend_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (107,1,'civicrm/logout',NULL,'Log out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:6:\"logout\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,9999,1,1,0,'a:0:{}'),
+ (108,1,'civicrm/i18n',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"translate CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_I18n_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (109,1,'civicrm/ajax/attachment',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:29:\"CRM_Core_Page_AJAX_Attachment\";i:1;s:10:\"attachFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (110,1,'civicrm/api',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (111,1,'civicrm/api3',NULL,'CiviCRM API v3','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_APIExplorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (112,1,'civicrm/ajax/apidoc',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:6:\"getDoc\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (113,1,'civicrm/ajax/rest',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:4:\"ajax\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (114,1,'civicrm/api/json',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:8:\"ajaxJson\";}','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (115,1,'civicrm/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:12:\"loadTemplate\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (116,1,'civicrm/ajax/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (117,1,'civicrm/asset/builder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"\\Civi\\Core\\AssetBuilder\";i:1;s:7:\"pageRun\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (118,1,'civicrm/contribute/ajax/tableview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (119,1,'civicrm/payment/ipn',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Core_Payment\";i:1;s:9:\"handleIPN\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (120,1,'civicrm/batch',NULL,'Batch Data Entry','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (121,1,'civicrm/batch/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Batch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (122,1,'civicrm/batch/entry',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Entry\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (123,1,'civicrm/ajax/batch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:9:\"batchSave\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (124,1,'civicrm/ajax/batchlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:12:\"getBatchList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (125,1,'civicrm/ajax/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Page_AJAX\";i:1;s:3:\"run\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (126,1,'civicrm/dev/qunit',NULL,'QUnit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_Core_Page_QUnit\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (127,1,'civicrm/dev/fake-error',NULL,'Fake Error','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Page_FakeError\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (128,1,'civicrm/profile-editor/schema',NULL,'ProfileEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:25:\"CRM_UF_Page_ProfileEditor\";i:1;s:13:\"getSchemaJSON\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (129,1,'civicrm/a',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"\\Civi\\Angular\\Page\\Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (130,1,'civicrm/ajax/angular-modules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"\\Civi\\Angular\\Page\\Modules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (131,1,'civicrm/ajax/recurringentity/update-mode',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:34:\"CRM_Core_Page_AJAX_RecurringEntity\";i:1;s:10:\"updateMode\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (132,1,'civicrm/recurringentity/preview',NULL,'Confirm dates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Core_Page_RecurringEntityPreview\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (133,1,'civicrm/shortcode',NULL,'Insert CiviCRM Content','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Form_ShortCode\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (134,1,'civicrm/task/add-to-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Form_Task_AddToGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (135,1,'civicrm/task/remove-from-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contact_Form_Task_RemoveFromGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (136,1,'civicrm/task/add-to-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contact_Form_Task_AddToTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (137,1,'civicrm/task/remove-from-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Form_Task_RemoveFromTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (138,1,'civicrm/task/send-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (139,1,'civicrm/task/make-mailing-label',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Label\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (140,1,'civicrm/task/pick-profile',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contact_Form_Task_PickProfile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (141,1,'civicrm/task/print-document',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (142,1,'civicrm/task/unhold-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Unhold\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (143,1,'civicrm/task/alter-contact-preference',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contact_Form_Task_AlterPreferences\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (144,1,'civicrm/task/delete-contact',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (145,1,'civicrm/task/add-activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (146,1,'civicrm/note',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Note_Form_Note\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (147,1,'civicrm/custom/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Custom_Form_CustomData\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (148,1,'civicrm/ajax/optionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:13:\"getOptionList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (149,1,'civicrm/ajax/reorder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:11:\"fixOrdering\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (150,1,'civicrm/ajax/multirecordfieldlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:23:\"getMultiRecordFieldList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (151,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (152,1,'civicrm/admin/custom/group/edit',NULL,'Configure Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (153,1,'civicrm/admin/custom/group/preview',NULL,'Custom Field Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:23:\"CRM_Custom_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (154,1,'civicrm/admin/custom/group/delete',NULL,'Delete Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteGroup\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (155,1,'civicrm/admin/custom/group/field',NULL,'Custom Data Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,11,1,0,0,'a:0:{}'),
+ (156,1,'civicrm/admin/custom/group/field/delete',NULL,'Delete Custom Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (157,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (158,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (159,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (160,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (161,1,'civicrm/admin/uf/group',NULL,'Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (162,1,'civicrm/admin/uf/group/preview',NULL,'Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_UF_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (163,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,21,1,0,0,'a:0:{}'),
+ (164,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,22,1,0,0,'a:0:{}'),
+ (165,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,23,1,0,0,'a:0:{}'),
+ (166,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,24,1,0,0,'a:0:{}'),
+ (167,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,25,1,0,0,'a:0:{}'),
+ (168,1,'civicrm/admin/uf/group/copy',NULL,'Profile Copy','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,26,1,0,0,'a:0:{}'),
+ (169,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,0,1,0,0,'a:0:{}'),
+ (170,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (171,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,35,1,0,0,'a:2:{s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (172,1,'civicrm/admin/reltype/edit',NULL,'Edit Relationship Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_RelationshipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Relationship Types\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (173,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (174,1,'civicrm/admin/options/subtype/edit',NULL,'Edit Contact Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_ContactType\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:13:\"Contact Types\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (175,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,45,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (176,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (177,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,55,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (178,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (179,1,'civicrm/admin/locationType/edit',NULL,'Edit Location Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_LocationType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (180,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,65,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (181,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (182,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (183,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n    Mobile, Fax, Pager)\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (184,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (185,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,95,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (186,1,'civicrm/admin/setting/preferences/date/edit',NULL,'Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_PreferencesDate\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:21:\"View Date Preferences\";s:3:\"url\";s:47:\"/civicrm/admin/setting/preferences/date?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,97,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (187,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (188,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (189,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (190,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (191,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (192,1,'civicrm/admin/messageTemplates',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (193,1,'civicrm/admin/messageTemplates/add',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,262,1,0,0,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'),
+ (194,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (195,1,'civicrm/admin/scheduleReminders/edit',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCRM data\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Form_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Schedule Reminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (196,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (197,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (198,1,'civicrm/admin/labelFormats',NULL,'Label Page Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (199,1,'civicrm/admin/labelFormats/edit',NULL,'Label Page Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Label Page Formats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (200,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (201,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (202,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (203,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (204,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (205,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
+ (206,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
+ (207,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
+ (208,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'),
+ (209,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),
+ (210,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'),
+ (211,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),
+ (212,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}','civicrm/admin/configtask',NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (213,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (214,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (215,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (216,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (217,1,'civicrm/admin/paymentProcessor',NULL,'Settings - Payment Processor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_PaymentProcessor\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (218,1,'civicrm/admin/paymentProcessor/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_PaymentProcessor\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (219,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (220,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (221,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (222,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (223,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (224,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (225,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (226,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (227,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (228,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (229,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,130,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (230,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (231,1,'civicrm/admin/setting/preferences/event',NULL,'CiviEvent Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (232,1,'civicrm/admin/setting/preferences/mailing',NULL,'CiviMail Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Mailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (233,1,'civicrm/admin/setting/preferences/member',NULL,'CiviMember Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Admin_Form_Preferences_Member\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
+ (234,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (235,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'),
+ (236,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1370,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (237,1,'civicrm/admin/job/add',NULL,'Add Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Form_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:31:\"Add a periodially running task.\";}'),
+ (238,1,'civicrm/admin/job/edit',NULL,'Edit Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1372,1,0,0,'a:2:{s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (239,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1380,1,0,0,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),
+ (240,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";}'),
+ (241,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'),
+ (242,1,'civicrm/admin',NULL,'Administer','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,9000,1,1,0,'a:0:{}'),
+ (243,1,'civicrm/ajax/navmenu',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:7:\"navMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (244,1,'civicrm/ajax/menutree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:8:\"menuTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (245,1,'civicrm/ajax/statusmsg',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:12:\"getStatusMsg\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (246,1,'civicrm/admin/price',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:10:\"adminGroup\";s:9:\"Customize\";}'),
+ (247,1,'civicrm/admin/price/add','action=add','New Price Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'),
+ (248,1,'civicrm/admin/price/edit',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (249,1,'civicrm/admin/price/field',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (250,1,'civicrm/admin/price/field/edit',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (251,1,'civicrm/admin/price/field/option',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (252,1,'civicrm/admin/price/field/option/edit',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}i:3;a:2:{s:5:\"title\";s:19:\"Price Field Options\";s:3:\"url\";s:41:\"/civicrm/admin/price/field/option?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (253,1,'civicrm/admin/sms/provider',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Provider\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,500,1,0,0,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (254,1,'civicrm/sms/send',NULL,'New Mass SMS','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:23:\"CRM_SMS_Controller_Send\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,1,0,'a:0:{}'),
+ (255,1,'civicrm/sms/callback',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Callback\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (256,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,399,1,0,0,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (257,1,'civicrm/admin/badgelayout/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Form_Layout\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?reset=1&amp;action=browse\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (258,1,'civicrm/tag',NULL,'Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,25,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (259,1,'civicrm/tag/edit','action=add','New Tag','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:17:\"CRM_Tag_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (260,1,'civicrm/tag/merge',NULL,'Merge Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:18:\"CRM_Tag_Form_Merge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (261,1,'civicrm/ajax/tagTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:10:\"getTagTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (262,1,'civicrm/payment/form',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Financial_Form_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (263,1,'civicrm/payment/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Financial_Form_PaymentEdit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (264,1,'civicrm/group',NULL,'Manage Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Page_Group\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,30,1,1,0,'a:0:{}'),
+ (265,1,'civicrm/group/search',NULL,'Group Members','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'),
+ (266,1,'civicrm/group/add',NULL,'New Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (267,1,'civicrm/group/edit',NULL,'Edit Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:19:\"CRM_Group_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (268,1,'civicrm/ajax/grouplist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Group_Page_AJAX\";i:1;s:12:\"getGroupList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (269,1,'civicrm/event/manage/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_PCP_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,540,1,1,0,'a:0:{}'),
+ (270,1,'civicrm/event/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (271,1,'civicrm/event/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (272,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,1,0,1,0,800,1,1,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),
+ (273,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),
+ (274,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (275,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'),
+ (276,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'),
+ (277,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_ICalendar\";i:1;s:3:\"run\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (278,1,'civicrm/event/list',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:19:\"CRM_Event_Page_List\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (279,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (280,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (281,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,375,1,0,0,'a:2:{s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (282,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (283,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (284,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (285,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,398,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (286,1,'civicrm/event/search',NULL,'Find Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,810,1,1,0,'a:0:{}'),
+ (287,1,'civicrm/event/manage',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,1,820,1,1,0,'a:0:{}'),
+ (288,1,'civicrm/event/badge',NULL,'Print Event Name Badge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:25:\"CRM_Event_Form_Task_Badge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (289,1,'civicrm/event/manage/settings',NULL,'Event Info and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,910,1,0,0,'a:0:{}'),
+ (290,1,'civicrm/event/manage/location',NULL,'Event Location','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:35:\"CRM_Event_Form_ManageEvent_Location\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'),
+ (291,1,'civicrm/event/manage/fee',NULL,'Event Fees','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_ManageEvent_Fee\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,920,1,0,0,'a:0:{}'),
+ (292,1,'civicrm/event/manage/registration',NULL,'Event Online Registration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:39:\"CRM_Event_Form_ManageEvent_Registration\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'),
+ (293,1,'civicrm/event/manage/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Friend_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,940,1,0,0,'a:0:{}'),
+ (294,1,'civicrm/event/manage/reminder',NULL,'Schedule Reminders','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:44:\"CRM_Event_Form_ManageEvent_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,950,1,0,0,'a:0:{}'),
+ (295,1,'civicrm/event/manage/repeat',NULL,'Repeat Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_ManageEvent_Repeat\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,960,1,0,0,'a:0:{}'),
+ (296,1,'civicrm/event/add','action=add','New Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,830,1,0,0,'a:0:{}'),
+ (297,1,'civicrm/event/import',NULL,'Import Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:23:\"edit event participants\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,840,1,1,0,'a:0:{}'),
+ (298,1,'civicrm/event/price',NULL,'Manage Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,850,1,1,0,'a:0:{}'),
+ (299,1,'civicrm/event/selfsvcupdate',NULL,'Self-service Registration Update','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Form_SelfSvcUpdate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,880,1,1,0,'a:0:{}'),
+ (300,1,'civicrm/event/selfsvctransfer',NULL,'Self-service Registration Transfer','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_SelfSvcTransfer\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,890,1,1,0,'a:0:{}'),
+ (301,1,'civicrm/contact/view/participant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'),
+ (302,1,'civicrm/participant/delete',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"delete in CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_Participant_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'),
+ (303,1,'civicrm/ajax/eventFee',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_Page_AJAX\";i:1;s:8:\"eventFee\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (304,1,'civicrm/ajax/locBlock',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:11:\"getLocBlock\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (305,1,'civicrm/event/participant/feeselection',NULL,'Change Registration Selections','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:38:\"CRM_Event_Form_ParticipantFeeSelection\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:34:\"/civicrm/event/participant?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'),
  (306,1,'civicrm/contribute',NULL,'CiviContribute Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,500,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
  (307,1,'civicrm/contribute/add','action=add','New Contribution','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
  (308,1,'civicrm/contribute/chart',NULL,'Contribution Summary - Chart View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
@@ -5176,139 +5190,143 @@ INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title`
  (319,1,'civicrm/admin/contribute/addProductToPage',NULL,'Add Products to This Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:47:\"CRM_Contribute_Form_ContributionPage_AddProduct\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,480,1,0,0,'a:0:{}'),
  (320,1,'civicrm/admin/contribute/add','action=add','New Contribution Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Contribute_Controller_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
  (321,1,'civicrm/admin/contribute/managePremiums',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Page_ManagePremiums\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,365,1,0,0,'a:2:{s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (322,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,580,1,0,0,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (323,1,'civicrm/admin/financial/financialType/edit',NULL,'Edit Financial Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Form_FinancialType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (324,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (325,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (326,1,'civicrm/admin/financial/financialAccount/edit',NULL,'Edit Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Form_FinancialAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Financial Accounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (327,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (328,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (329,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (330,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (331,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (332,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (333,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,510,1,1,0,'a:0:{}'),
- (334,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,588,1,1,0,'a:0:{}'),
- (335,1,'civicrm/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,530,1,1,0,'a:0:{}'),
- (336,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,0,1,0,0,'a:0:{}'),
- (337,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (338,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (339,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (340,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (341,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (342,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (343,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,581,1,0,0,'a:0:{}'),
- (344,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,585,1,0,0,'a:0:{}'),
- (345,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,586,1,0,0,'a:0:{}'),
- (346,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,600,1,0,0,'a:0:{}'),
- (347,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,0,0,'a:0:{}'),
- (348,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (349,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (350,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,620,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (351,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,1,0,1,0,630,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (352,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (353,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (354,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (355,1,'civicrm/contribute/widget',NULL,'CiviContribute','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contribute_Page_Widget\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
- (356,1,'civicrm/contribute/task',NULL,'Contribution Task','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contribute_Controller_Task\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (357,1,'civicrm/member',NULL,'CiviMember Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:25:\"CRM_Member_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,3,1,0,1,0,700,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),
- (358,1,'civicrm/member/add','action=add','New Membership','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),
- (359,1,'civicrm/admin/member/membershipType',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Page_MembershipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
- (360,1,'civicrm/admin/member/membershipStatus',NULL,'Membership Status Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Member_Page_MembershipStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
- (361,1,'civicrm/contact/view/membership','force=1,cid=%%cid%%','Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,2,1,0,0,'a:0:{}'),
- (362,1,'civicrm/membership/view',NULL,'Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipView\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,390,1,0,0,'a:0:{}'),
- (363,1,'civicrm/member/search',NULL,'Find Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,710,1,1,0,'a:0:{}'),
- (364,1,'civicrm/member/import',NULL,'Import Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:16:\"edit memberships\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,720,1,1,0,'a:0:{}'),
- (365,1,'civicrm/ajax/memType',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Member_Page_AJAX\";i:1;s:21:\"getMemberTypeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (366,1,'civicrm/admin/member/membershipType/add',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:16:\"Membership Types\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (367,1,'civicrm/mailing',NULL,'CiviMail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,4,1,0,1,0,600,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'),
- (368,1,'civicrm/admin/mail',NULL,'Mailer Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Mail\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (369,1,'civicrm/admin/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,410,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (370,1,'civicrm/admin/options/from_email_address/civimail',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:20:\"From Email Addresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,415,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (371,1,'civicrm/admin/mailSettings',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_MailSettings\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:20:\"List email accounts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (372,1,'civicrm/admin/mailSettings/edit',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_MailSettings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Mail Accounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'),
- (373,1,'civicrm/mailing/send',NULL,'New Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:27:\"CRM_Mailing_Controller_Send\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,610,1,1,0,'a:0:{}'),
- (374,1,'civicrm/mailing/browse/scheduled','scheduled=true','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:5:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";i:4;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'),
- (375,1,'civicrm/mailing/browse/unscheduled','scheduled=false','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'),
- (376,1,'civicrm/mailing/browse/archived',NULL,'Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,625,1,1,0,'a:0:{}'),
- (377,1,'civicrm/mailing/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,630,1,1,0,'a:0:{}'),
- (378,1,'civicrm/mailing/unsubscribe',NULL,'Unsubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Form_Unsubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,640,1,0,0,'a:0:{}'),
- (379,1,'civicrm/mailing/resubscribe',NULL,'Resubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Page_Resubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,645,1,0,0,'a:0:{}'),
- (380,1,'civicrm/mailing/optout',NULL,'Opt-out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Form_Optout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,650,1,0,0,'a:0:{}'),
- (381,1,'civicrm/mailing/confirm',NULL,'Confirm','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:24:\"CRM_Mailing_Page_Confirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'),
- (382,1,'civicrm/mailing/subscribe',NULL,'Subscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Subscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'),
- (383,1,'civicrm/mailing/report','mid=%%mid%%','Mailing Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,680,1,0,0,'a:0:{}'),
- (384,1,'civicrm/mailing/forward',NULL,'Forward Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:31:\"CRM_Mailing_Form_ForwardMailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,685,1,0,0,'a:0:{}'),
- (385,1,'civicrm/mailing/report/event',NULL,'Mailing Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:22:\"CRM_Mailing_Page_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Mailing Report\";s:3:\"url\";s:47:\"/civicrm/mailing/report?reset=1&amp;mid=%%mid%%\";}}',NULL,NULL,4,1,0,1,0,695,1,0,0,'a:0:{}'),
- (386,1,'civicrm/ajax/template',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:8:\"template\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (387,1,'civicrm/mailing/view',NULL,'View Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:28:\"view public CiviMail content\";i:1;s:15:\"access CiviMail\";i:2;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:21:\"CRM_Mailing_Page_View\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,800,1,0,0,'a:0:{}'),
- (388,1,'civicrm/mailing/approve',NULL,'Approve Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Form_Approve\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,850,1,0,0,'a:0:{}'),
- (389,1,'civicrm/contact/view/mailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:20:\"CRM_Mailing_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (390,1,'civicrm/ajax/contactmailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:18:\"getContactMailings\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (391,1,'civicrm/ajax/setupMailAccount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:5:\"setup\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (392,1,'civicrm/mailing/url',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:20:\"CRM_Mailing_Page_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'),
- (393,1,'civicrm/mailing/open',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:21:\"CRM_Mailing_Page_Open\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'),
- (394,1,'civicrm/pledge',NULL,'CiviPledge Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:25:\"CRM_Pledge_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,6,1,0,1,0,550,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),
- (395,1,'civicrm/pledge/search',NULL,'Find Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:28:\"CRM_Pledge_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,560,1,1,0,'a:0:{}'),
- (396,1,'civicrm/contact/view/pledge','force=1,cid=%%cid%%','Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,570,1,0,0,'a:0:{}'),
- (397,1,'civicrm/pledge/add','action=add','New Pledge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),
- (398,1,'civicrm/pledge/payment',NULL,'Pledge Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:23:\"CRM_Pledge_Page_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,580,1,0,0,'a:0:{}'),
- (399,1,'civicrm/ajax/pledgeAmount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviPledge\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Pledge_Page_AJAX\";i:1;s:17:\"getPledgeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (400,1,'civicrm/case',NULL,'CiviCase Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Case_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,7,1,0,1,0,900,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),
- (401,1,'civicrm/case/add',NULL,'Open Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Case_Form_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),
- (402,1,'civicrm/case/search',NULL,'Find Cases','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,910,1,1,0,'a:0:{}'),
- (403,1,'civicrm/case/activity',NULL,'Case Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Case_Form_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (404,1,'civicrm/case/report',NULL,'Case Activity Audit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:20:\"CRM_Case_Form_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (405,1,'civicrm/case/cd/edit',NULL,'Case Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (406,1,'civicrm/contact/view/case',NULL,'Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:17:\"CRM_Case_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (407,1,'civicrm/case/activity/view',NULL,'Activity View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Form_ActivityView\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Case Activity\";s:3:\"url\";s:30:\"/civicrm/case/activity?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (408,1,'civicrm/contact/view/case/editClient',NULL,'Assign to Another Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Case_Form_EditClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (409,1,'civicrm/case/addToCase',NULL,'File on Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Case_Form_ActivityToCase\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (410,1,'civicrm/case/details',NULL,'Case Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Case_Page_CaseDetails\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (411,1,'civicrm/admin/setting/case',NULL,'CiviCase Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:1:{s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (412,1,'civicrm/admin/options/case_type',NULL,'Case Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:24:\"url=civicrm/a/#/caseType\";','a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (413,1,'civicrm/admin/options/redaction_rule',NULL,'Redaction Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (414,1,'civicrm/admin/options/case_status',NULL,'Case Statuses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (415,1,'civicrm/admin/options/encounter_medium',NULL,'Encounter Mediums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (416,1,'civicrm/case/report/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Case_XMLProcessor_Report\";i:1;s:15:\"printCaseReport\";}',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:19:\"Case Activity Audit\";s:3:\"url\";s:28:\"/civicrm/case/report?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (417,1,'civicrm/case/ajax/addclient',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:9:\"addClient\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (418,1,'civicrm/case/ajax/processtags',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"processCaseTags\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,3,0,'a:0:{}'),
- (419,1,'civicrm/case/ajax/details',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:11:\"CaseDetails\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (420,1,'civicrm/ajax/delcaserole',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"deleteCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (421,1,'civicrm/ajax/get-cases',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:8:\"getCases\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (422,1,'civicrm/case/email/add','action=add,task=email','Email','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_Task_Email\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (423,1,'civicrm/contact/view/case/deleteClient',NULL,'Remove Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:26:\"CRM_Case_Form_DeleteClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (424,1,'civicrm/report',NULL,'CiviReport','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:22:\"CRM_Report_Page_Report\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,8,1,0,1,0,1200,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'),
- (425,1,'civicrm/report/list',NULL,'CiviCRM Reports','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'),
- (426,1,'civicrm/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1220,1,1,0,'a:0:{}'),
- (427,1,'civicrm/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1241,1,1,0,'a:0:{}'),
- (428,1,'civicrm/admin/report/register',NULL,'Register Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Form_Register\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:30:\"Register the Report templates.\";}'),
- (429,1,'civicrm/report/instance',NULL,'Report','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Page_Instance\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'),
- (430,1,'civicrm/admin/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
- (431,1,'civicrm/admin/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
- (432,1,'civicrm/admin/report/list',NULL,'Reports Listing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
- (433,1,'civicrm/campaign/add',NULL,'New Campaign','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Campaign\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (434,1,'civicrm/survey/add',NULL,'New Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (435,1,'civicrm/campaign/vote',NULL,'Conduct Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"reserve campaign contacts\";i:3;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Page_Vote\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (436,1,'civicrm/admin/campaign/surveyType',NULL,'Survey Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCampaign\";}i:1;s:3:\"and\";}','s:28:\"CRM_Campaign_Page_SurveyType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (437,1,'civicrm/admin/options/campaign_type',NULL,'Campaign Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,2,1,0,0,'a:3:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (438,1,'civicrm/admin/options/campaign_status',NULL,'Campaign Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,3,1,0,0,'a:3:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (439,1,'civicrm/admin/options/engagement_index',NULL,'Engagement Index','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,4,1,0,0,'a:3:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (440,1,'civicrm/survey/search','op=interview','Record Respondents Interview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:30:\"CRM_Campaign_Controller_Search\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (441,1,'civicrm/campaign/gotv',NULL,'GOTV (Track Voters)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"release campaign contacts\";i:3;s:22:\"gotv campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Form_Gotv\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (442,1,'civicrm/petition/add',NULL,'New Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (443,1,'civicrm/petition/sign',NULL,'Sign Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:36:\"CRM_Campaign_Form_Petition_Signature\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (444,1,'civicrm/petition/browse',NULL,'View Petition Signatures','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Campaign_Page_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (445,1,'civicrm/petition/confirm',NULL,'Email address verified','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:34:\"CRM_Campaign_Page_Petition_Confirm\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (446,1,'civicrm/petition/thankyou',NULL,'Thank You','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:35:\"CRM_Campaign_Page_Petition_ThankYou\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (447,1,'civicrm/campaign/registerInterview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','a:2:{i:0;s:22:\"CRM_Campaign_Page_AJAX\";i:1;s:17:\"registerInterview\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (448,1,'civicrm/survey/configure/main',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (449,1,'civicrm/survey/configure/questions',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:34:\"CRM_Campaign_Form_Survey_Questions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (450,1,'civicrm/survey/configure/results',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:32:\"CRM_Campaign_Form_Survey_Results\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (451,1,'civicrm/survey/delete',NULL,'Delete Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:31:\"CRM_Campaign_Form_Survey_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (452,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor 4','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Ckeditor4_Form_CKEditorConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (453,1,'civicrm/admin/setting/recaptcha',NULL,'reCAPTCHA Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:20:\"administer recaptcha\";}i:1;s:2:\"or\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";}'),
- (454,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:26:\"Customize Data and Screens\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{s:13:\"{weight}.Tags\";a:6:{s:5:\"title\";s:4:\"Tags\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n    Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"Communications\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:11:{s:46:\"{weight}.Organization Address and Contact Info\";a:6:{s:5:\"title\";s:37:\"Organization Address and Contact Info\";s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:2:\"id\";s:33:\"OrganizationAddressandContactInfo\";s:3:\"url\";s:47:\"/civicrm/admin/domain?action=update&amp;reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Message Templates\";a:6:{s:5:\"title\";s:17:\"Message Templates\";s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:2:\"id\";s:16:\"MessageTemplates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Schedule Reminders\";a:6:{s:5:\"title\";s:18:\"Schedule Reminders\";s:4:\"desc\";s:19:\"Schedule Reminders.\";s:2:\"id\";s:17:\"ScheduleReminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Preferred Communication Methods\";a:6:{s:5:\"title\";s:31:\"Preferred Communication Methods\";s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:2:\"id\";s:29:\"PreferredCommunicationMethods\";s:3:\"url\";s:61:\"/civicrm/admin/options/preferred_communication_method?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Label Page Formats\";a:6:{s:5:\"title\";s:18:\"Label Page Formats\";s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:2:\"id\";s:16:\"LabelPageFormats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Print Page (PDF) Formats\";a:6:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:2:\"id\";s:20:\"PrintPage_PDFFormats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Communication Style Options\";a:6:{s:5:\"title\";s:27:\"Communication Style Options\";s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:2:\"id\";s:25:\"CommunicationStyleOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/communication_style?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Email Greeting Formats\";a:6:{s:5:\"title\";s:22:\"Email Greeting Formats\";s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:2:\"id\";s:20:\"EmailGreetingFormats\";s:3:\"url\";s:45:\"/civicrm/admin/options/email_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Postal Greeting Formats\";a:6:{s:5:\"title\";s:23:\"Postal Greeting Formats\";s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:2:\"id\";s:21:\"PostalGreetingFormats\";s:3:\"url\";s:46:\"/civicrm/admin/options/postal_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Addressee Formats\";a:6:{s:5:\"title\";s:17:\"Addressee Formats\";s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:2:\"id\";s:16:\"AddresseeFormats\";s:3:\"url\";s:40:\"/civicrm/admin/options/addressee?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Localization\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:4:{s:39:\"{weight}.Languages, Currency, Locations\";a:6:{s:5:\"title\";s:30:\"Languages, Currency, Locations\";s:4:\"desc\";N;s:2:\"id\";s:28:\"Languages_Currency_Locations\";s:3:\"url\";s:43:\"/civicrm/admin/setting/localization?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Address Settings\";a:6:{s:5:\"title\";s:16:\"Address Settings\";s:4:\"desc\";N;s:2:\"id\";s:15:\"AddressSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Date Formats\";a:6:{s:5:\"title\";s:12:\"Date Formats\";s:4:\"desc\";N;s:2:\"id\";s:11:\"DateFormats\";s:3:\"url\";s:35:\"/civicrm/admin/setting/date?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Preferred Languages\";a:6:{s:5:\"title\";s:19:\"Preferred Languages\";s:4:\"desc\";s:30:\"Options for contact languages.\";s:2:\"id\";s:18:\"PreferredLanguages\";s:3:\"url\";s:40:\"/civicrm/admin/options/languages?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:21:\"Users and Permissions\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:2:{s:23:\"{weight}.Access Control\";a:6:{s:5:\"title\";s:14:\"Access Control\";s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:2:\"id\";s:13:\"AccessControl\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Synchronize Users to Contacts\";a:6:{s:5:\"title\";s:29:\"Synchronize Users to Contacts\";s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:2:\"id\";s:26:\"SynchronizeUserstoContacts\";s:3:\"url\";s:32:\"/civicrm/admin/synchUser?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:15:\"System Settings\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:20:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:33:\"/civicrm/admin/configtask?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Enable CiviCRM Components\";a:6:{s:5:\"title\";s:25:\"Enable CiviCRM Components\";s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:2:\"id\";s:23:\"EnableCiviCRMComponents\";s:3:\"url\";s:40:\"/civicrm/admin/setting/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Manage Extensions\";a:6:{s:5:\"title\";s:17:\"Manage Extensions\";s:4:\"desc\";s:0:\"\";s:2:\"id\";s:16:\"ManageExtensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Outbound Email Settings\";a:6:{s:5:\"title\";s:23:\"Outbound Email Settings\";s:4:\"desc\";N;s:2:\"id\";s:21:\"OutboundEmailSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/smtp?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:37:\"{weight}.Settings - Payment Processor\";a:6:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:2:\"id\";s:25:\"Settings-PaymentProcessor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Mapping and Geocoding\";a:6:{s:5:\"title\";s:21:\"Mapping and Geocoding\";s:4:\"desc\";N;s:2:\"id\";s:19:\"MappingandGeocoding\";s:3:\"url\";s:38:\"/civicrm/admin/setting/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:53:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, etc.)\";a:6:{s:5:\"title\";s:44:\"Misc (Undelete, PDFs, Limits, Logging, etc.)\";s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:2:\"id\";s:38:\"Misc_Undelete_PDFs_Limits_Logging_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Directories\";a:6:{s:5:\"title\";s:11:\"Directories\";s:4:\"desc\";N;s:2:\"id\";s:11:\"Directories\";s:3:\"url\";s:35:\"/civicrm/admin/setting/path?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Resource URLs\";a:6:{s:5:\"title\";s:13:\"Resource URLs\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ResourceURLs\";s:3:\"url\";s:34:\"/civicrm/admin/setting/url?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Cleanup Caches and Update Paths\";a:6:{s:5:\"title\";s:31:\"Cleanup Caches and Update Paths\";s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:2:\"id\";s:27:\"CleanupCachesandUpdatePaths\";s:3:\"url\";s:50:\"/civicrm/admin/setting/updateConfigBackend?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.CMS Database Integration\";a:6:{s:5:\"title\";s:24:\"CMS Database Integration\";s:4:\"desc\";N;s:2:\"id\";s:22:\"CMSDatabaseIntegration\";s:3:\"url\";s:33:\"/civicrm/admin/setting/uf?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Safe File Extension Options\";a:6:{s:5:\"title\";s:27:\"Safe File Extension Options\";s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:2:\"id\";s:24:\"SafeFileExtensionOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/safe_file_extension?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Option Groups\";a:6:{s:5:\"title\";s:13:\"Option Groups\";s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:2:\"id\";s:12:\"OptionGroups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Import/Export Mappings\";a:6:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:2:\"id\";s:21:\"Import_ExportMappings\";s:3:\"url\";s:30:\"/civicrm/admin/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:18:\"{weight}.Debugging\";a:6:{s:5:\"title\";s:9:\"Debugging\";s:4:\"desc\";N;s:2:\"id\";s:9:\"Debugging\";s:3:\"url\";s:36:\"/civicrm/admin/setting/debug?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Multi Site Settings\";a:6:{s:5:\"title\";s:19:\"Multi Site Settings\";s:4:\"desc\";N;s:2:\"id\";s:17:\"MultiSiteSettings\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/multisite?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Scheduled Jobs\";a:6:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:2:\"id\";s:13:\"ScheduledJobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Edit Scheduled Job\";a:6:{s:5:\"title\";s:18:\"Edit Scheduled Job\";s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:2:\"id\";s:16:\"EditScheduledJob\";s:3:\"url\";s:31:\"/civicrm/admin/job/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Sms Providers\";a:6:{s:5:\"title\";s:13:\"Sms Providers\";s:4:\"desc\";s:27:\"To configure a sms provider\";s:2:\"id\";s:12:\"SmsProviders\";s:3:\"url\";s:35:\"/civicrm/admin/sms/provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.reCAPTCHA Settings\";a:6:{s:5:\"title\";s:18:\"reCAPTCHA Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";s:2:\"id\";s:17:\"reCAPTCHASettings\";s:3:\"url\";s:40:\"/civicrm/admin/setting/recaptcha?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"CiviCampaign\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:40:\"{weight}.CiviCampaign Component Settings\";a:6:{s:5:\"title\";s:31:\"CiviCampaign Component Settings\";s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:2:\"id\";s:29:\"CiviCampaignComponentSettings\";s:3:\"url\";s:51:\"/civicrm/admin/setting/preferences/campaign?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Survey Types\";a:6:{s:5:\"title\";s:12:\"Survey Types\";s:4:\"desc\";N;s:2:\"id\";s:11:\"SurveyTypes\";s:3:\"url\";s:42:\"/civicrm/admin/campaign/surveyType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Campaign Types\";a:6:{s:5:\"title\";s:14:\"Campaign Types\";s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:2:\"id\";s:13:\"CampaignTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/campaign_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Campaign Status\";a:6:{s:5:\"title\";s:15:\"Campaign Status\";s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:2:\"id\";s:14:\"CampaignStatus\";s:3:\"url\";s:46:\"/civicrm/admin/options/campaign_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Engagement Index\";a:6:{s:5:\"title\";s:16:\"Engagement Index\";s:4:\"desc\";s:18:\"Engagement levels.\";s:2:\"id\";s:15:\"EngagementIndex\";s:3:\"url\";s:47:\"/civicrm/admin/options/engagement_index?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"CiviEvent\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:8:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:48:\"/civicrm/admin/setting/preferences/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Event Name Badge Layouts\";a:6:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:2:\"id\";s:21:\"EventNameBadgeLayouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?action=browse&amp;reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Manage Events\";a:6:{s:5:\"title\";s:13:\"Manage Events\";s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:2:\"id\";s:12:\"ManageEvents\";s:3:\"url\";s:28:\"/civicrm/admin/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Event Templates\";a:6:{s:5:\"title\";s:15:\"Event Templates\";s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:2:\"id\";s:14:\"EventTemplates\";s:3:\"url\";s:36:\"/civicrm/admin/eventTemplate?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Event Types\";a:6:{s:5:\"title\";s:11:\"Event Types\";s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:2:\"id\";s:10:\"EventTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/event_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Participant Status\";a:6:{s:5:\"title\";s:18:\"Participant Status\";s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:2:\"id\";s:17:\"ParticipantStatus\";s:3:\"url\";s:41:\"/civicrm/admin/participant_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Participant Role\";a:6:{s:5:\"title\";s:16:\"Participant Role\";s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:2:\"id\";s:15:\"ParticipantRole\";s:3:\"url\";s:47:\"/civicrm/admin/options/participant_role?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Participant Listing Templates\";a:6:{s:5:\"title\";s:29:\"Participant Listing Templates\";s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:2:\"id\";s:27:\"ParticipantListingTemplates\";s:3:\"url\";s:50:\"/civicrm/admin/options/participant_listing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviMail\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:36:\"{weight}.CiviMail Component Settings\";a:6:{s:5:\"title\";s:27:\"CiviMail Component Settings\";s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:2:\"id\";s:25:\"CiviMailComponentSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/mailing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Mailer Settings\";a:6:{s:5:\"title\";s:15:\"Mailer Settings\";s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:2:\"id\";s:14:\"MailerSettings\";s:3:\"url\";s:27:\"/civicrm/admin/mail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:49:\"{weight}.Headers, Footers, and Automated Messages\";a:6:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:2:\"id\";s:36:\"Headers_Footers_andAutomatedMessages\";s:3:\"url\";s:32:\"/civicrm/admin/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:58:\"/civicrm/admin/options/from_email_address/civimail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:20:\"List email accounts.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviMember\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:38:\"{weight}.CiviMember Component Settings\";a:6:{s:5:\"title\";s:29:\"CiviMember Component Settings\";s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:2:\"id\";s:27:\"CiviMemberComponentSettings\";s:3:\"url\";s:49:\"/civicrm/admin/setting/preferences/member?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Membership Types\";a:6:{s:5:\"title\";s:16:\"Membership Types\";s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:2:\"id\";s:15:\"MembershipTypes\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Membership Status Rules\";a:6:{s:5:\"title\";s:23:\"Membership Status Rules\";s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:2:\"id\";s:21:\"MembershipStatusRules\";s:3:\"url\";s:46:\"/civicrm/admin/member/membershipStatus?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:6:\"Manage\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Option Lists\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"Customize\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:19:\"{weight}.Price Sets\";a:6:{s:5:\"title\";s:10:\"Price Sets\";s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:2:\"id\";s:9:\"PriceSets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"CiviContribute\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&amp;reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviCase\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:26:\"{weight}.CiviCase Settings\";a:6:{s:5:\"title\";s:17:\"CiviCase Settings\";s:4:\"desc\";N;s:2:\"id\";s:16:\"CiviCaseSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/case?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Case Types\";a:6:{s:5:\"title\";s:10:\"Case Types\";s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:2:\"id\";s:9:\"CaseTypes\";s:3:\"url\";s:40:\"/civicrm/admin/options/case_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Redaction Rules\";a:6:{s:5:\"title\";s:15:\"Redaction Rules\";s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:2:\"id\";s:14:\"RedactionRules\";s:3:\"url\";s:45:\"/civicrm/admin/options/redaction_rule?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Case Statuses\";a:6:{s:5:\"title\";s:13:\"Case Statuses\";s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:2:\"id\";s:12:\"CaseStatuses\";s:3:\"url\";s:42:\"/civicrm/admin/options/case_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Encounter Mediums\";a:6:{s:5:\"title\";s:17:\"Encounter Mediums\";s:4:\"desc\";s:26:\"List of encounter mediums.\";s:2:\"id\";s:16:\"EncounterMediums\";s:3:\"url\";s:47:\"/civicrm/admin/options/encounter_medium?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviReport\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:40:\"{weight}.Create New Report from Template\";a:6:{s:5:\"title\";s:31:\"Create New Report from Template\";s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:2:\"id\";s:27:\"CreateNewReportfromTemplate\";s:3:\"url\";s:43:\"/civicrm/admin/report/template/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Manage Templates\";a:6:{s:5:\"title\";s:16:\"Manage Templates\";s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:2:\"id\";s:15:\"ManageTemplates\";s:3:\"url\";s:53:\"/civicrm/admin/report/options/report_template?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Reports Listing\";a:6:{s:5:\"title\";s:15:\"Reports Listing\";s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:2:\"id\";s:14:\"ReportsListing\";s:3:\"url\";s:34:\"/civicrm/admin/report/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}}',NULL,NULL,NULL,1,0,1,1,1,1,1,0,'a:0:{}');
+ (322,1,'civicrm/admin/contribute/managePremiums/edit',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_ManagePremiums\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}i:3;a:2:{s:5:\"title\";s:15:\"Manage Premiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (323,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,580,1,0,0,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (324,1,'civicrm/admin/financial/financialType/edit',NULL,'Edit Financial Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Form_FinancialType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (325,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (326,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (327,1,'civicrm/admin/financial/financialAccount/edit',NULL,'Edit Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Form_FinancialAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Financial Accounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (328,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (329,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (330,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (331,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (332,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (333,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (334,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,510,1,1,0,'a:0:{}'),
+ (335,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,588,1,1,0,'a:0:{}'),
+ (336,1,'civicrm/admin/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,530,1,1,0,'a:0:{}'),
+ (337,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,0,1,0,0,'a:0:{}'),
+ (338,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (339,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (340,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (341,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (342,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (343,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (344,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,581,1,0,0,'a:0:{}'),
+ (345,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,585,1,0,0,'a:0:{}'),
+ (346,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,586,1,0,0,'a:0:{}'),
+ (347,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,600,1,0,0,'a:0:{}'),
+ (348,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,0,0,'a:0:{}'),
+ (349,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (350,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (351,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,620,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (352,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,1,0,1,0,630,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (353,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (354,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (355,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (356,1,'civicrm/contribute/widget',NULL,'CiviContribute','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contribute_Page_Widget\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (357,1,'civicrm/contribute/task',NULL,'Contribution Task','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contribute_Controller_Task\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (358,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,450,1,0,0,'a:0:{}'),
+ (359,1,'civicrm/contribute/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (360,1,'civicrm/member',NULL,'CiviMember Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:25:\"CRM_Member_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,3,1,0,1,0,700,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),
+ (361,1,'civicrm/member/add','action=add','New Membership','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),
+ (362,1,'civicrm/admin/member/membershipType',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Page_MembershipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
+ (363,1,'civicrm/admin/member/membershipStatus',NULL,'Membership Status Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Member_Page_MembershipStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
+ (364,1,'civicrm/contact/view/membership','force=1,cid=%%cid%%','Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,2,1,0,0,'a:0:{}'),
+ (365,1,'civicrm/membership/view',NULL,'Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipView\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,390,1,0,0,'a:0:{}'),
+ (366,1,'civicrm/member/search',NULL,'Find Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,710,1,1,0,'a:0:{}'),
+ (367,1,'civicrm/member/import',NULL,'Import Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:16:\"edit memberships\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,720,1,1,0,'a:0:{}'),
+ (368,1,'civicrm/ajax/memType',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Member_Page_AJAX\";i:1;s:21:\"getMemberTypeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (369,1,'civicrm/admin/member/membershipType/add',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:16:\"Membership Types\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (370,1,'civicrm/mailing',NULL,'CiviMail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,4,1,0,1,0,600,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'),
+ (371,1,'civicrm/admin/mail',NULL,'Mailer Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Mail\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (372,1,'civicrm/admin/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,410,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (373,1,'civicrm/admin/component/edit',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Component\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:3:\"url\";s:32:\"/civicrm/admin/component?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,411,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (374,1,'civicrm/admin/options/from_email_address/civimail',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:20:\"From Email Addresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,415,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (375,1,'civicrm/admin/mailSettings',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_MailSettings\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:20:\"List email accounts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (376,1,'civicrm/admin/mailSettings/edit',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_MailSettings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Mail Accounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'),
+ (377,1,'civicrm/mailing/send',NULL,'New Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:27:\"CRM_Mailing_Controller_Send\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,610,1,1,0,'a:0:{}'),
+ (378,1,'civicrm/mailing/browse/scheduled','scheduled=true','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:5:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";i:4;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'),
+ (379,1,'civicrm/mailing/browse/unscheduled','scheduled=false','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'),
+ (380,1,'civicrm/mailing/browse/archived',NULL,'Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,625,1,1,0,'a:0:{}'),
+ (381,1,'civicrm/mailing/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,630,1,1,0,'a:0:{}'),
+ (382,1,'civicrm/mailing/unsubscribe',NULL,'Unsubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Form_Unsubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,640,1,0,0,'a:0:{}'),
+ (383,1,'civicrm/mailing/resubscribe',NULL,'Resubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Page_Resubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,645,1,0,0,'a:0:{}'),
+ (384,1,'civicrm/mailing/optout',NULL,'Opt-out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Form_Optout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,650,1,0,0,'a:0:{}'),
+ (385,1,'civicrm/mailing/confirm',NULL,'Confirm','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:24:\"CRM_Mailing_Page_Confirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'),
+ (386,1,'civicrm/mailing/subscribe',NULL,'Subscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Subscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'),
+ (387,1,'civicrm/mailing/report','mid=%%mid%%','Mailing Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,680,1,0,0,'a:0:{}'),
+ (388,1,'civicrm/mailing/forward',NULL,'Forward Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:31:\"CRM_Mailing_Form_ForwardMailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,685,1,0,0,'a:0:{}'),
+ (389,1,'civicrm/mailing/report/event',NULL,'Mailing Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:22:\"CRM_Mailing_Page_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Mailing Report\";s:3:\"url\";s:47:\"/civicrm/mailing/report?reset=1&amp;mid=%%mid%%\";}}',NULL,NULL,4,1,0,1,0,695,1,0,0,'a:0:{}'),
+ (390,1,'civicrm/ajax/template',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:8:\"template\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (391,1,'civicrm/mailing/view',NULL,'View Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:28:\"view public CiviMail content\";i:1;s:15:\"access CiviMail\";i:2;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:21:\"CRM_Mailing_Page_View\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,800,1,0,0,'a:0:{}'),
+ (392,1,'civicrm/mailing/approve',NULL,'Approve Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Form_Approve\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,850,1,0,0,'a:0:{}'),
+ (393,1,'civicrm/contact/view/mailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:20:\"CRM_Mailing_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (394,1,'civicrm/ajax/contactmailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:18:\"getContactMailings\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (395,1,'civicrm/ajax/setupMailAccount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:5:\"setup\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (396,1,'civicrm/mailing/url',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:20:\"CRM_Mailing_Page_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (397,1,'civicrm/mailing/open',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:21:\"CRM_Mailing_Page_Open\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (398,1,'civicrm/pledge',NULL,'CiviPledge Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:25:\"CRM_Pledge_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,6,1,0,1,0,550,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),
+ (399,1,'civicrm/pledge/search',NULL,'Find Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:28:\"CRM_Pledge_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,560,1,1,0,'a:0:{}'),
+ (400,1,'civicrm/contact/view/pledge','force=1,cid=%%cid%%','Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,570,1,0,0,'a:0:{}'),
+ (401,1,'civicrm/pledge/add','action=add','New Pledge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),
+ (402,1,'civicrm/pledge/payment',NULL,'Pledge Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:23:\"CRM_Pledge_Page_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,580,1,0,0,'a:0:{}'),
+ (403,1,'civicrm/ajax/pledgeAmount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviPledge\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Pledge_Page_AJAX\";i:1;s:17:\"getPledgeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (404,1,'civicrm/case',NULL,'CiviCase Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Case_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,7,1,0,1,0,900,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),
+ (405,1,'civicrm/case/add',NULL,'Open Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Case_Form_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),
+ (406,1,'civicrm/case/search',NULL,'Find Cases','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,910,1,1,0,'a:0:{}'),
+ (407,1,'civicrm/case/activity',NULL,'Case Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Case_Form_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (408,1,'civicrm/case/report',NULL,'Case Activity Audit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:20:\"CRM_Case_Form_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (409,1,'civicrm/case/cd/edit',NULL,'Case Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (410,1,'civicrm/contact/view/case',NULL,'Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:17:\"CRM_Case_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (411,1,'civicrm/case/activity/view',NULL,'Activity View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Form_ActivityView\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Case Activity\";s:3:\"url\";s:30:\"/civicrm/case/activity?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (412,1,'civicrm/contact/view/case/editClient',NULL,'Assign to Another Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Case_Form_EditClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (413,1,'civicrm/case/addToCase',NULL,'File on Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Case_Form_ActivityToCase\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (414,1,'civicrm/case/details',NULL,'Case Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Case_Page_CaseDetails\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (415,1,'civicrm/admin/setting/case',NULL,'CiviCase Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:1:{s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (416,1,'civicrm/admin/options/case_type',NULL,'Case Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:24:\"url=civicrm/a/#/caseType\";','a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (417,1,'civicrm/admin/options/redaction_rule',NULL,'Redaction Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (418,1,'civicrm/admin/options/case_status',NULL,'Case Statuses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (419,1,'civicrm/admin/options/encounter_medium',NULL,'Encounter Mediums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (420,1,'civicrm/case/report/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Case_XMLProcessor_Report\";i:1;s:15:\"printCaseReport\";}',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:19:\"Case Activity Audit\";s:3:\"url\";s:28:\"/civicrm/case/report?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (421,1,'civicrm/case/ajax/addclient',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:9:\"addClient\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (422,1,'civicrm/case/ajax/processtags',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"processCaseTags\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (423,1,'civicrm/case/ajax/details',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:11:\"CaseDetails\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (424,1,'civicrm/ajax/delcaserole',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"deleteCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (425,1,'civicrm/ajax/get-cases',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:8:\"getCases\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (426,1,'civicrm/case/email/add','action=add,task=email','Email','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_Task_Email\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (427,1,'civicrm/contact/view/case/deleteClient',NULL,'Remove Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:26:\"CRM_Case_Form_DeleteClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (428,1,'civicrm/report',NULL,'CiviReport','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:22:\"CRM_Report_Page_Report\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,8,1,0,1,0,1200,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'),
+ (429,1,'civicrm/report/list',NULL,'CiviCRM Reports','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (430,1,'civicrm/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1220,1,1,0,'a:0:{}'),
+ (431,1,'civicrm/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1241,1,1,0,'a:0:{}'),
+ (432,1,'civicrm/admin/report/register',NULL,'Register Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Form_Register\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:30:\"Register the Report templates.\";}'),
+ (433,1,'civicrm/report/instance',NULL,'Report','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Page_Instance\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (434,1,'civicrm/admin/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
+ (435,1,'civicrm/admin/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
+ (436,1,'civicrm/admin/report/list',NULL,'Reports Listing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
+ (437,1,'civicrm/campaign/add',NULL,'New Campaign','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Campaign\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (438,1,'civicrm/survey/add',NULL,'New Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (439,1,'civicrm/campaign/vote',NULL,'Conduct Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"reserve campaign contacts\";i:3;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Page_Vote\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (440,1,'civicrm/admin/campaign/surveyType',NULL,'Survey Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCampaign\";}i:1;s:3:\"and\";}','s:28:\"CRM_Campaign_Page_SurveyType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (441,1,'civicrm/admin/options/campaign_type',NULL,'Campaign Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,2,1,0,0,'a:3:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (442,1,'civicrm/admin/options/campaign_status',NULL,'Campaign Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,3,1,0,0,'a:3:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (443,1,'civicrm/admin/options/engagement_index',NULL,'Engagement Index','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,4,1,0,0,'a:3:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (444,1,'civicrm/survey/search','op=interview','Record Respondents Interview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:30:\"CRM_Campaign_Controller_Search\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (445,1,'civicrm/campaign/gotv',NULL,'GOTV (Track Voters)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"release campaign contacts\";i:3;s:22:\"gotv campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Form_Gotv\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (446,1,'civicrm/petition/add',NULL,'New Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (447,1,'civicrm/petition/sign',NULL,'Sign Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:36:\"CRM_Campaign_Form_Petition_Signature\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (448,1,'civicrm/petition/browse',NULL,'View Petition Signatures','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Campaign_Page_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (449,1,'civicrm/petition/confirm',NULL,'Email address verified','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:34:\"CRM_Campaign_Page_Petition_Confirm\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (450,1,'civicrm/petition/thankyou',NULL,'Thank You','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:35:\"CRM_Campaign_Page_Petition_ThankYou\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (451,1,'civicrm/campaign/registerInterview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','a:2:{i:0;s:22:\"CRM_Campaign_Page_AJAX\";i:1;s:17:\"registerInterview\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (452,1,'civicrm/survey/configure/main',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (453,1,'civicrm/survey/configure/questions',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:34:\"CRM_Campaign_Form_Survey_Questions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (454,1,'civicrm/survey/configure/results',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:32:\"CRM_Campaign_Form_Survey_Results\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (455,1,'civicrm/survey/delete',NULL,'Delete Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:31:\"CRM_Campaign_Form_Survey_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (456,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor 4','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Ckeditor4_Form_CKEditorConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (457,1,'civicrm/admin/setting/recaptcha',NULL,'reCAPTCHA Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:20:\"administer recaptcha\";}i:1;s:2:\"or\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";}'),
+ (458,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:14:\"CiviContribute\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&amp;reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:6:\"Manage\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:26:\"Customize Data and Screens\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:20:{s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n    Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Date Preferences\";a:6:{s:5:\"title\";s:16:\"Date Preferences\";s:4:\"desc\";N;s:2:\"id\";s:15:\"DatePreferences\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/date/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:13:\"{weight}.Tags\";a:6:{s:5:\"title\";s:4:\"Tags\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"Communications\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:11:{s:46:\"{weight}.Organization Address and Contact Info\";a:6:{s:5:\"title\";s:37:\"Organization Address and Contact Info\";s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:2:\"id\";s:33:\"OrganizationAddressandContactInfo\";s:3:\"url\";s:47:\"/civicrm/admin/domain?action=update&amp;reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Message Templates\";a:6:{s:5:\"title\";s:17:\"Message Templates\";s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:2:\"id\";s:16:\"MessageTemplates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Schedule Reminders\";a:6:{s:5:\"title\";s:18:\"Schedule Reminders\";s:4:\"desc\";s:19:\"Schedule Reminders.\";s:2:\"id\";s:17:\"ScheduleReminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Preferred Communication Methods\";a:6:{s:5:\"title\";s:31:\"Preferred Communication Methods\";s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:2:\"id\";s:29:\"PreferredCommunicationMethods\";s:3:\"url\";s:61:\"/civicrm/admin/options/preferred_communication_method?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Label Page Formats\";a:6:{s:5:\"title\";s:18:\"Label Page Formats\";s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:2:\"id\";s:16:\"LabelPageFormats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Print Page (PDF) Formats\";a:6:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:2:\"id\";s:20:\"PrintPage_PDFFormats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Communication Style Options\";a:6:{s:5:\"title\";s:27:\"Communication Style Options\";s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:2:\"id\";s:25:\"CommunicationStyleOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/communication_style?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Email Greeting Formats\";a:6:{s:5:\"title\";s:22:\"Email Greeting Formats\";s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:2:\"id\";s:20:\"EmailGreetingFormats\";s:3:\"url\";s:45:\"/civicrm/admin/options/email_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Postal Greeting Formats\";a:6:{s:5:\"title\";s:23:\"Postal Greeting Formats\";s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:2:\"id\";s:21:\"PostalGreetingFormats\";s:3:\"url\";s:46:\"/civicrm/admin/options/postal_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Addressee Formats\";a:6:{s:5:\"title\";s:17:\"Addressee Formats\";s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:2:\"id\";s:16:\"AddresseeFormats\";s:3:\"url\";s:40:\"/civicrm/admin/options/addressee?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Localization\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:4:{s:39:\"{weight}.Languages, Currency, Locations\";a:6:{s:5:\"title\";s:30:\"Languages, Currency, Locations\";s:4:\"desc\";N;s:2:\"id\";s:28:\"Languages_Currency_Locations\";s:3:\"url\";s:43:\"/civicrm/admin/setting/localization?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Address Settings\";a:6:{s:5:\"title\";s:16:\"Address Settings\";s:4:\"desc\";N;s:2:\"id\";s:15:\"AddressSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Date Formats\";a:6:{s:5:\"title\";s:12:\"Date Formats\";s:4:\"desc\";N;s:2:\"id\";s:11:\"DateFormats\";s:3:\"url\";s:35:\"/civicrm/admin/setting/date?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Preferred Languages\";a:6:{s:5:\"title\";s:19:\"Preferred Languages\";s:4:\"desc\";s:30:\"Options for contact languages.\";s:2:\"id\";s:18:\"PreferredLanguages\";s:3:\"url\";s:40:\"/civicrm/admin/options/languages?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:21:\"Users and Permissions\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:2:{s:23:\"{weight}.Access Control\";a:6:{s:5:\"title\";s:14:\"Access Control\";s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:2:\"id\";s:13:\"AccessControl\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Synchronize Users to Contacts\";a:6:{s:5:\"title\";s:29:\"Synchronize Users to Contacts\";s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:2:\"id\";s:26:\"SynchronizeUserstoContacts\";s:3:\"url\";s:32:\"/civicrm/admin/synchUser?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:15:\"System Settings\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:20:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:33:\"/civicrm/admin/configtask?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Enable CiviCRM Components\";a:6:{s:5:\"title\";s:25:\"Enable CiviCRM Components\";s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:2:\"id\";s:23:\"EnableCiviCRMComponents\";s:3:\"url\";s:40:\"/civicrm/admin/setting/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Manage Extensions\";a:6:{s:5:\"title\";s:17:\"Manage Extensions\";s:4:\"desc\";s:0:\"\";s:2:\"id\";s:16:\"ManageExtensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Outbound Email Settings\";a:6:{s:5:\"title\";s:23:\"Outbound Email Settings\";s:4:\"desc\";N;s:2:\"id\";s:21:\"OutboundEmailSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/smtp?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:37:\"{weight}.Settings - Payment Processor\";a:6:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:2:\"id\";s:25:\"Settings-PaymentProcessor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Mapping and Geocoding\";a:6:{s:5:\"title\";s:21:\"Mapping and Geocoding\";s:4:\"desc\";N;s:2:\"id\";s:19:\"MappingandGeocoding\";s:3:\"url\";s:38:\"/civicrm/admin/setting/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:53:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, etc.)\";a:6:{s:5:\"title\";s:44:\"Misc (Undelete, PDFs, Limits, Logging, etc.)\";s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:2:\"id\";s:38:\"Misc_Undelete_PDFs_Limits_Logging_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Directories\";a:6:{s:5:\"title\";s:11:\"Directories\";s:4:\"desc\";N;s:2:\"id\";s:11:\"Directories\";s:3:\"url\";s:35:\"/civicrm/admin/setting/path?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Resource URLs\";a:6:{s:5:\"title\";s:13:\"Resource URLs\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ResourceURLs\";s:3:\"url\";s:34:\"/civicrm/admin/setting/url?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Cleanup Caches and Update Paths\";a:6:{s:5:\"title\";s:31:\"Cleanup Caches and Update Paths\";s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:2:\"id\";s:27:\"CleanupCachesandUpdatePaths\";s:3:\"url\";s:50:\"/civicrm/admin/setting/updateConfigBackend?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.CMS Database Integration\";a:6:{s:5:\"title\";s:24:\"CMS Database Integration\";s:4:\"desc\";N;s:2:\"id\";s:22:\"CMSDatabaseIntegration\";s:3:\"url\";s:33:\"/civicrm/admin/setting/uf?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Safe File Extension Options\";a:6:{s:5:\"title\";s:27:\"Safe File Extension Options\";s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:2:\"id\";s:24:\"SafeFileExtensionOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/safe_file_extension?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Option Groups\";a:6:{s:5:\"title\";s:13:\"Option Groups\";s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:2:\"id\";s:12:\"OptionGroups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Import/Export Mappings\";a:6:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:2:\"id\";s:21:\"Import_ExportMappings\";s:3:\"url\";s:30:\"/civicrm/admin/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:18:\"{weight}.Debugging\";a:6:{s:5:\"title\";s:9:\"Debugging\";s:4:\"desc\";N;s:2:\"id\";s:9:\"Debugging\";s:3:\"url\";s:36:\"/civicrm/admin/setting/debug?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Multi Site Settings\";a:6:{s:5:\"title\";s:19:\"Multi Site Settings\";s:4:\"desc\";N;s:2:\"id\";s:17:\"MultiSiteSettings\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/multisite?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Scheduled Jobs\";a:6:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:2:\"id\";s:13:\"ScheduledJobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Edit Scheduled Job\";a:6:{s:5:\"title\";s:18:\"Edit Scheduled Job\";s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:2:\"id\";s:16:\"EditScheduledJob\";s:3:\"url\";s:31:\"/civicrm/admin/job/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Sms Providers\";a:6:{s:5:\"title\";s:13:\"Sms Providers\";s:4:\"desc\";s:27:\"To configure a sms provider\";s:2:\"id\";s:12:\"SmsProviders\";s:3:\"url\";s:35:\"/civicrm/admin/sms/provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.reCAPTCHA Settings\";a:6:{s:5:\"title\";s:18:\"reCAPTCHA Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";s:2:\"id\";s:17:\"reCAPTCHASettings\";s:3:\"url\";s:40:\"/civicrm/admin/setting/recaptcha?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"CiviCampaign\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:40:\"{weight}.CiviCampaign Component Settings\";a:6:{s:5:\"title\";s:31:\"CiviCampaign Component Settings\";s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:2:\"id\";s:29:\"CiviCampaignComponentSettings\";s:3:\"url\";s:51:\"/civicrm/admin/setting/preferences/campaign?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Survey Types\";a:6:{s:5:\"title\";s:12:\"Survey Types\";s:4:\"desc\";N;s:2:\"id\";s:11:\"SurveyTypes\";s:3:\"url\";s:42:\"/civicrm/admin/campaign/surveyType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Campaign Types\";a:6:{s:5:\"title\";s:14:\"Campaign Types\";s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:2:\"id\";s:13:\"CampaignTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/campaign_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Campaign Status\";a:6:{s:5:\"title\";s:15:\"Campaign Status\";s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:2:\"id\";s:14:\"CampaignStatus\";s:3:\"url\";s:46:\"/civicrm/admin/options/campaign_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Engagement Index\";a:6:{s:5:\"title\";s:16:\"Engagement Index\";s:4:\"desc\";s:18:\"Engagement levels.\";s:2:\"id\";s:15:\"EngagementIndex\";s:3:\"url\";s:47:\"/civicrm/admin/options/engagement_index?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"CiviEvent\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:8:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:48:\"/civicrm/admin/setting/preferences/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Event Name Badge Layouts\";a:6:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:2:\"id\";s:21:\"EventNameBadgeLayouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?action=browse&amp;reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Manage Events\";a:6:{s:5:\"title\";s:13:\"Manage Events\";s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:2:\"id\";s:12:\"ManageEvents\";s:3:\"url\";s:28:\"/civicrm/admin/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Event Templates\";a:6:{s:5:\"title\";s:15:\"Event Templates\";s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:2:\"id\";s:14:\"EventTemplates\";s:3:\"url\";s:36:\"/civicrm/admin/eventTemplate?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Event Types\";a:6:{s:5:\"title\";s:11:\"Event Types\";s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:2:\"id\";s:10:\"EventTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/event_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Participant Status\";a:6:{s:5:\"title\";s:18:\"Participant Status\";s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:2:\"id\";s:17:\"ParticipantStatus\";s:3:\"url\";s:41:\"/civicrm/admin/participant_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Participant Role\";a:6:{s:5:\"title\";s:16:\"Participant Role\";s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:2:\"id\";s:15:\"ParticipantRole\";s:3:\"url\";s:47:\"/civicrm/admin/options/participant_role?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Participant Listing Templates\";a:6:{s:5:\"title\";s:29:\"Participant Listing Templates\";s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:2:\"id\";s:27:\"ParticipantListingTemplates\";s:3:\"url\";s:50:\"/civicrm/admin/options/participant_listing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviMail\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:36:\"{weight}.CiviMail Component Settings\";a:6:{s:5:\"title\";s:27:\"CiviMail Component Settings\";s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:2:\"id\";s:25:\"CiviMailComponentSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/mailing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Mailer Settings\";a:6:{s:5:\"title\";s:15:\"Mailer Settings\";s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:2:\"id\";s:14:\"MailerSettings\";s:3:\"url\";s:27:\"/civicrm/admin/mail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:49:\"{weight}.Headers, Footers, and Automated Messages\";a:6:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:2:\"id\";s:36:\"Headers_Footers_andAutomatedMessages\";s:3:\"url\";s:37:\"/civicrm/admin/component/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:58:\"/civicrm/admin/options/from_email_address/civimail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:20:\"List email accounts.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviMember\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:38:\"{weight}.CiviMember Component Settings\";a:6:{s:5:\"title\";s:29:\"CiviMember Component Settings\";s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:2:\"id\";s:27:\"CiviMemberComponentSettings\";s:3:\"url\";s:49:\"/civicrm/admin/setting/preferences/member?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Membership Types\";a:6:{s:5:\"title\";s:16:\"Membership Types\";s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:2:\"id\";s:15:\"MembershipTypes\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Membership Status Rules\";a:6:{s:5:\"title\";s:23:\"Membership Status Rules\";s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:2:\"id\";s:21:\"MembershipStatusRules\";s:3:\"url\";s:46:\"/civicrm/admin/member/membershipStatus?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Option Lists\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"Customize\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:19:\"{weight}.Price Sets\";a:6:{s:5:\"title\";s:10:\"Price Sets\";s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:2:\"id\";s:9:\"PriceSets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviCase\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:26:\"{weight}.CiviCase Settings\";a:6:{s:5:\"title\";s:17:\"CiviCase Settings\";s:4:\"desc\";N;s:2:\"id\";s:16:\"CiviCaseSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/case?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Case Types\";a:6:{s:5:\"title\";s:10:\"Case Types\";s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:2:\"id\";s:9:\"CaseTypes\";s:3:\"url\";s:40:\"/civicrm/admin/options/case_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Redaction Rules\";a:6:{s:5:\"title\";s:15:\"Redaction Rules\";s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:2:\"id\";s:14:\"RedactionRules\";s:3:\"url\";s:45:\"/civicrm/admin/options/redaction_rule?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Case Statuses\";a:6:{s:5:\"title\";s:13:\"Case Statuses\";s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:2:\"id\";s:12:\"CaseStatuses\";s:3:\"url\";s:42:\"/civicrm/admin/options/case_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Encounter Mediums\";a:6:{s:5:\"title\";s:17:\"Encounter Mediums\";s:4:\"desc\";s:26:\"List of encounter mediums.\";s:2:\"id\";s:16:\"EncounterMediums\";s:3:\"url\";s:47:\"/civicrm/admin/options/encounter_medium?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviReport\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:40:\"{weight}.Create New Report from Template\";a:6:{s:5:\"title\";s:31:\"Create New Report from Template\";s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:2:\"id\";s:27:\"CreateNewReportfromTemplate\";s:3:\"url\";s:43:\"/civicrm/admin/report/template/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Manage Templates\";a:6:{s:5:\"title\";s:16:\"Manage Templates\";s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:2:\"id\";s:15:\"ManageTemplates\";s:3:\"url\";s:53:\"/civicrm/admin/report/options/report_template?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Reports Listing\";a:6:{s:5:\"title\";s:15:\"Reports Listing\";s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:2:\"id\";s:14:\"ReportsListing\";s:3:\"url\";s:34:\"/civicrm/admin/report/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}}',NULL,NULL,NULL,1,0,1,1,1,1,1,0,'a:0:{}');
 /*!40000 ALTER TABLE `civicrm_menu` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -5323,12 +5341,12 @@ INSERT INTO `civicrm_msg_template` (`id`, `msg_title`, `msg_subject`, `msg_text`
  (2,'Cases - Send Copy of an Activity','{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject}\n','===========================================================\n{ts}Activity Summary{/ts} - {$activityTypeName}\n===========================================================\n{if !empty($isCaseActivity)}\n{ts}Your Case Role(s){/ts} : {$contact.role|default:\'\'}\n{if !empty($manageCaseURL)}\n{ts}Manage Case{/ts} : {$manageCaseURL}\n{/if}\n{/if}\n\n{if !empty($editActURL)}\n{ts}Edit activity{/ts} : {$editActURL}\n{/if}\n{if !empty($viewActURL)}\n{ts}View activity{/ts} : {$viewActURL}\n{/if}\n\n{foreach from=$activity.fields item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{if !empty($activity.customGroups)}\n{foreach from=$activity.customGroups key=customGroupName item=customGroup}\n==========================================================\n{$customGroupName}\n==========================================================\n{foreach from=$customGroup item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n  {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n  {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n  {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n    <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n    <!-- BEGIN HEADER -->\n    <!-- You can add table row(s) here with logo or other header elements -->\n    <!-- END HEADER -->\n\n    <!-- BEGIN CONTENT -->\n\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n            <tr>\n              <th {$headerStyle}>\n                {ts}Activity Summary{/ts} - {$activityTypeName}\n              </th>\n            </tr>\n            {if !empty($isCaseActivity)}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Your Case Role(s){/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$contact.role|default:\'\'}\n                </td>\n              </tr>\n              {if !empty($manageCaseURL)}\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    <a href=\"{$manageCaseURL}\" title=\"{ts}Manage Case{/ts}\">{ts}Manage Case{/ts}</a>\n                  </td>\n                </tr>\n              {/if}\n            {/if}\n            {if !empty($editActURL)}\n              <tr>\n                <td colspan=\"2\" {$valueStyle}>\n                  <a href=\"{$editActURL}\" title=\"{ts}Edit activity{/ts}\">{ts}Edit activity{/ts}</a>\n                </td>\n              </tr>\n            {/if}\n            {if !empty($viewActURL)}\n              <tr>\n                <td colspan=\"2\" {$valueStyle}>\n                  <a href=\"{$viewActURL}\" title=\"{ts}View activity{/ts}\">{ts}View activity{/ts}</a>\n                </td>\n              </tr>\n            {/if}\n            {foreach from=$activity.fields item=field}\n              <tr>\n                <td {$labelStyle}>\n                  {$field.label}\n                </td>\n                <td {$valueStyle}>\n                  {if $field.type eq \'Date\'}\n                    {$field.value|crmDate:$config->dateformatDatetime}\n                  {else}\n                    {$field.value}\n                  {/if}\n                </td>\n              </tr>\n            {/foreach}\n\n            {if !empty($activity.customGroups)}\n              {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n                <tr>\n                  <th {$headerStyle}>\n                    {$customGroupName}\n                  </th>\n                </tr>\n                {foreach from=$customGroup item=field}\n                  <tr>\n                    <td {$labelStyle}>\n                      {$field.label}\n                    </td>\n                    <td {$valueStyle}>\n                      {if $field.type eq \'Date\'}\n                        {$field.value|crmDate:$config->dateformatDatetime}\n                      {else}\n                        {$field.value}\n                      {/if}\n                    </td>\n                  </tr>\n                {/foreach}\n              {/foreach}\n            {/if}\n          </table>\n        </td>\n      </tr>\n    </table>\n</body>\n</html>\n',1,814,'case_activity',0,1,0,NULL),
  (3,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    <p>{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}</p>\n    <p>{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfName}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Email{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfEmail}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Contact ID{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfID}\n      </td>\n     </tr>\n    </table>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <p>{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}</p>\n   </td>\n  </tr>\n  {if $receiptMessage}\n   <tr>\n    <td>\n     <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      <tr>\n       <th {$headerStyle}>\n        {ts}Copy of Contribution Receipt{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {* FIXME: the below is most probably not HTML-ised *}\n        {$receiptMessage}\n       </td>\n      </tr>\n     </table>\n    </td>\n   </tr>\n  {/if}\n </table>\n</body>\n</html>\n',1,815,'contribution_dupalert',1,0,0,NULL),
  (4,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    <p>{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}</p>\n    <p>{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfName}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Email{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfEmail}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Contact ID{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfID}\n      </td>\n     </tr>\n    </table>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <p>{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}</p>\n   </td>\n  </tr>\n  {if $receiptMessage}\n   <tr>\n    <td>\n     <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      <tr>\n       <th {$headerStyle}>\n        {ts}Copy of Contribution Receipt{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {* FIXME: the below is most probably not HTML-ised *}\n        {$receiptMessage}\n       </td>\n      </tr>\n     </table>\n    </td>\n   </tr>\n  {/if}\n </table>\n</body>\n</html>\n',1,815,'contribution_dupalert',0,1,0,NULL),
- (5,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if {contribution.contribution_page_id.receipt_text|boolean}}\n{contribution.contribution_page_id.receipt_text}\n{elseif {contribution.paid_amount|boolean}} {ts}Below you will find a receipt for this contribution.{/ts}\n{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      <p>\n        {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n        {elseif {contribution.paid_amount|boolean}}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n      </p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Contribution Information{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Contributor Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {contact.display_name}\n      </td>\n     </tr>\n     <tr>\n      {if \'{contribution.financial_type_id}\'}\n        <td {$labelStyle}>\n         {ts}Financial Type{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.financial_type_id:label}\n        </td>\n      {/if}\n     </tr>\n\n     {if $isShowLineItems}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <table>\n          <tr>\n           <th>{ts}Item{/ts}</th>\n           <th>{ts}Qty{/ts}</th>\n           <th>{ts}Each{/ts}</th>\n           {if $isShowTax && {contribution.tax_amount|boolean}}\n             <th>{ts}Subtotal{/ts}</th>\n             <th>{ts}Tax Rate{/ts}</th>\n             <th>{ts}Tax Amount{/ts}</th>\n           {/if}\n           <th>{ts}Total{/ts}</th>\n          </tr>\n          {foreach from=$lineItems item=line}\n           <tr>\n            <td>\n              {$line.title}\n            </td>\n            <td>\n             {$line.qty}\n            </td>\n            <td>\n             {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n            </td>\n            {if $isShowTax && {contribution.tax_amount|boolean}}\n              <td>\n                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n              </td>\n              {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td>\n                  {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td>\n                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                </td>\n              {else}\n                <td></td>\n                <td></td>\n              {/if}\n            {/if}\n            <td>\n             {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n            </td>\n           </tr>\n          {/foreach}\n         </table>\n        </td>\n       </tr>\n\n     {/if}\n     {if $isShowTax && {contribution.tax_amount|boolean}}\n       <tr>\n         <td {$labelStyle}>\n           {ts} Amount before Tax : {/ts}\n         </td>\n         <td {$valueStyle}>\n           {contribution.tax_exclusive_amount}\n         </td>\n       </tr>\n\n       {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n         <tr>\n          <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n          <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if $isShowTax}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.tax_amount}\n        </td>\n      </tr>\n     {/if}\n\n     <tr>\n      <td {$labelStyle}>\n       {ts}Total Amount{/ts}\n      </td>\n      <td {$valueStyle}>\n        {contribution.total_amount}\n      </td>\n     </tr>\n\n     {if \'{contribution.receive_date}\'}\n       <tr>\n       <td {$labelStyle}>\n        {ts}Contribution Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receive_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n      {if \'{contribution.receipt_date}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Receipt Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receipt_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n     {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Paid By{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.payment_instrument_id:label}\n       </td>\n      </tr>\n      {if \'{contribution.check_number}\'}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.check_number}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if \'{contribution.trxn_id}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction ID{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($ccContribution)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$billingName}<br />\n        {$address|nl2br}\n       </td>\n      </tr>\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n     {if !empty($formValues.product_name)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$formValues.product_name}\n       </td>\n      </tr>\n      {if $formValues.product_option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_option}\n        </td>\n       </tr>\n      {/if}\n      {if $formValues.product_sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_sku}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($fulfilled_date)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Sent{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$fulfilled_date|truncate:10:\'\'|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,816,'contribution_offline_receipt',1,0,0,NULL),
- (6,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if {contribution.contribution_page_id.receipt_text|boolean}}\n{contribution.contribution_page_id.receipt_text}\n{elseif {contribution.paid_amount|boolean}} {ts}Below you will find a receipt for this contribution.{/ts}\n{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      <p>\n        {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n        {elseif {contribution.paid_amount|boolean}}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n      </p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Contribution Information{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Contributor Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {contact.display_name}\n      </td>\n     </tr>\n     <tr>\n      {if \'{contribution.financial_type_id}\'}\n        <td {$labelStyle}>\n         {ts}Financial Type{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.financial_type_id:label}\n        </td>\n      {/if}\n     </tr>\n\n     {if $isShowLineItems}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <table>\n          <tr>\n           <th>{ts}Item{/ts}</th>\n           <th>{ts}Qty{/ts}</th>\n           <th>{ts}Each{/ts}</th>\n           {if $isShowTax && {contribution.tax_amount|boolean}}\n             <th>{ts}Subtotal{/ts}</th>\n             <th>{ts}Tax Rate{/ts}</th>\n             <th>{ts}Tax Amount{/ts}</th>\n           {/if}\n           <th>{ts}Total{/ts}</th>\n          </tr>\n          {foreach from=$lineItems item=line}\n           <tr>\n            <td>\n              {$line.title}\n            </td>\n            <td>\n             {$line.qty}\n            </td>\n            <td>\n             {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n            </td>\n            {if $isShowTax && {contribution.tax_amount|boolean}}\n              <td>\n                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n              </td>\n              {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td>\n                  {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td>\n                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                </td>\n              {else}\n                <td></td>\n                <td></td>\n              {/if}\n            {/if}\n            <td>\n             {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n            </td>\n           </tr>\n          {/foreach}\n         </table>\n        </td>\n       </tr>\n\n     {/if}\n     {if $isShowTax && {contribution.tax_amount|boolean}}\n       <tr>\n         <td {$labelStyle}>\n           {ts} Amount before Tax : {/ts}\n         </td>\n         <td {$valueStyle}>\n           {contribution.tax_exclusive_amount}\n         </td>\n       </tr>\n\n       {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n         <tr>\n          <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n          <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if $isShowTax}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.tax_amount}\n        </td>\n      </tr>\n     {/if}\n\n     <tr>\n      <td {$labelStyle}>\n       {ts}Total Amount{/ts}\n      </td>\n      <td {$valueStyle}>\n        {contribution.total_amount}\n      </td>\n     </tr>\n\n     {if \'{contribution.receive_date}\'}\n       <tr>\n       <td {$labelStyle}>\n        {ts}Contribution Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receive_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n      {if \'{contribution.receipt_date}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Receipt Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receipt_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n     {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Paid By{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.payment_instrument_id:label}\n       </td>\n      </tr>\n      {if \'{contribution.check_number}\'}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.check_number}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if \'{contribution.trxn_id}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction ID{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($ccContribution)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$billingName}<br />\n        {$address|nl2br}\n       </td>\n      </tr>\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n     {if !empty($formValues.product_name)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$formValues.product_name}\n       </td>\n      </tr>\n      {if $formValues.product_option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_option}\n        </td>\n       </tr>\n      {/if}\n      {if $formValues.product_sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_sku}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($fulfilled_date)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Sent{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$fulfilled_date|truncate:10:\'\'|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,816,'contribution_offline_receipt',0,1,0,NULL),
- (7,'Contributions - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $isShowLineItems}\n\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total_inclusive|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n    {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n  {/foreach}\n{/if}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}\n{/if}\n\n{ts}Total Amount{/ts}: {contribution.total_amount}\n{else}\n{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n{/if}\n{/if}\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if {contribution.trxn_id|boolean}}\n{ts}Transaction #{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($is_recur)}\n{ts}This is a recurring contribution.{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts}You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n{elseif !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or Email*}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium )}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n  {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n  {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n</table>\n<table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n  {if {contribution.total_amount|boolean}}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Contribution Information{/ts}\n      </th>\n    </tr>\n\n    {if $isShowLineItems}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          <table>\n            <tr>\n              <th>{ts}Item{/ts}</th>\n              <th>{ts}Qty{/ts}</th>\n              <th>{ts}Each{/ts}</th>\n              {if $isShowTax && {contribution.tax_amount|boolean}}\n                <th>{ts}Subtotal{/ts}</th>\n                <th>{ts}Tax Rate{/ts}</th>\n                <th>{ts}Tax Amount{/ts}</th>\n              {/if}\n              <th>{ts}Total{/ts}</th>\n            </tr>\n            {foreach from=$lineItems item=line}\n              <tr>\n                <td>{$line.title}</td>\n                <td>{$line.qty}</td>\n                <td>{$line.unit_price|crmMoney:$currency}</td>\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <td>{$line.unit_price*$line.qty|crmMoney:$currency}</td>\n                  {if $line.tax_rate || $line.tax_amount != \"\"}\n                    <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                    <td>{$line.tax_amount|crmMoney:$currency}</td>\n                  {else}\n                    <td></td>\n                    <td></td>\n                  {/if}\n                {/if}\n                <td>\n                  {$line.line_total_inclusive|crmMoney:$currency}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n\n      {if $isShowTax && {contribution.tax_amount|boolean}}\n        <tr>\n          <td {$labelStyle}>\n            {ts} Amount before Tax : {/ts}\n          </td>\n          <td {$valueStyle}>\n            {$amount-$totalTaxAmount|crmMoney:$currency}\n          </td>\n        </tr>\n\n        {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n          <tr>\n            <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n            <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n          </tr>\n        {/foreach}\n\n      {/if}\n      {if $isShowTax}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n        </tr>\n      {/if}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.total_amount}\n        </td>\n      </tr>\n    {else}\n      {if {contribution.tax_amount|boolean}}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n         </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n  {/if}\n\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if {contribution.trxn_id|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n    {if !empty($is_recur)}\n      <tr>\n        <td  colspan=\"2\" {$labelStyle}>\n          {ts}This is a recurring contribution.{/ts}\n          {if $cancelSubscriptionUrl}\n            {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by <a href=\"%1\">visiting this web page</a>.{/ts}\n          {/if}\n        </td>\n      </tr>\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n      {elseif !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if {contribution.contribution_page_id.is_share|boolean}}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n            {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id={contribution.contribution_page_id}\" a=true fe=1 h=1}{/capture}\n            {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n        </td>\n      </tr>\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n     {elseif !empty($email)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Registered Email{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$email}\n        </td>\n       </tr>\n     {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if $is_deductible AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,817,'contribution_online_receipt',1,0,0,NULL),
- (8,'Contributions - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $isShowLineItems}\n\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total_inclusive|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n    {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n  {/foreach}\n{/if}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}\n{/if}\n\n{ts}Total Amount{/ts}: {contribution.total_amount}\n{else}\n{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n{/if}\n{/if}\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if {contribution.trxn_id|boolean}}\n{ts}Transaction #{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($is_recur)}\n{ts}This is a recurring contribution.{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts}You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n{elseif !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or Email*}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium )}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n  {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n  {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n</table>\n<table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n  {if {contribution.total_amount|boolean}}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Contribution Information{/ts}\n      </th>\n    </tr>\n\n    {if $isShowLineItems}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          <table>\n            <tr>\n              <th>{ts}Item{/ts}</th>\n              <th>{ts}Qty{/ts}</th>\n              <th>{ts}Each{/ts}</th>\n              {if $isShowTax && {contribution.tax_amount|boolean}}\n                <th>{ts}Subtotal{/ts}</th>\n                <th>{ts}Tax Rate{/ts}</th>\n                <th>{ts}Tax Amount{/ts}</th>\n              {/if}\n              <th>{ts}Total{/ts}</th>\n            </tr>\n            {foreach from=$lineItems item=line}\n              <tr>\n                <td>{$line.title}</td>\n                <td>{$line.qty}</td>\n                <td>{$line.unit_price|crmMoney:$currency}</td>\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <td>{$line.unit_price*$line.qty|crmMoney:$currency}</td>\n                  {if $line.tax_rate || $line.tax_amount != \"\"}\n                    <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                    <td>{$line.tax_amount|crmMoney:$currency}</td>\n                  {else}\n                    <td></td>\n                    <td></td>\n                  {/if}\n                {/if}\n                <td>\n                  {$line.line_total_inclusive|crmMoney:$currency}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n\n      {if $isShowTax && {contribution.tax_amount|boolean}}\n        <tr>\n          <td {$labelStyle}>\n            {ts} Amount before Tax : {/ts}\n          </td>\n          <td {$valueStyle}>\n            {$amount-$totalTaxAmount|crmMoney:$currency}\n          </td>\n        </tr>\n\n        {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n          <tr>\n            <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n            <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n          </tr>\n        {/foreach}\n\n      {/if}\n      {if $isShowTax}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n        </tr>\n      {/if}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.total_amount}\n        </td>\n      </tr>\n    {else}\n      {if {contribution.tax_amount|boolean}}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n         </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n  {/if}\n\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if {contribution.trxn_id|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n    {if !empty($is_recur)}\n      <tr>\n        <td  colspan=\"2\" {$labelStyle}>\n          {ts}This is a recurring contribution.{/ts}\n          {if $cancelSubscriptionUrl}\n            {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by <a href=\"%1\">visiting this web page</a>.{/ts}\n          {/if}\n        </td>\n      </tr>\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n      {elseif !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if {contribution.contribution_page_id.is_share|boolean}}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n            {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id={contribution.contribution_page_id}\" a=true fe=1 h=1}{/capture}\n            {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n        </td>\n      </tr>\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n     {elseif !empty($email)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Registered Email{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$email}\n        </td>\n       </tr>\n     {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if $is_deductible AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,817,'contribution_online_receipt',0,1,0,NULL),
- (9,'Contributions - Invoice','{if $title}\n  {if $component}\n    {if $component == \'event\'}\n      {ts 1=$title}Event Registration Invoice: %1{/ts}\n    {else}\n      {ts 1=$title}Contribution Invoice: %1{/ts}\n    {/if}\n  {/if}\n{else}\n  {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n      <title></title>\n  </head>\n  <body>\n  <div style=\"padding-top:100px;margin-right:50px;border-style: none;\">\n    {if $config->empoweredBy}\n      <table style=\"margin-top:5px;padding-bottom:50px;\" cellpadding=\"5\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{domain.empowered_by_civicrm_image_url}\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n    <table style=\"font-family: Arial, Verdana, sans-serif;\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      {if $email_comment}\n        <tr>\n          <td><font size=\"1\" colspan=\"3\">{$email_comment}</font></td>\n        </tr>\n      {/if}\n      <tr>\n        <td width=\"30%\"><b><font size=\"4\" align=\"center\">{ts}INVOICE{/ts}</font></b></td>\n        <td width=\"50%\" valign=\"bottom\"><b><font size=\"1\" align=\"center\">{ts}Invoice Date:{/ts}</font></b></td>\n        <td valign=\"bottom\" style=\"white-space: nowrap\"><b><font size=\"1\" align=\"right\">{domain.name}</font></b></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n        <td><b><font size=\"1\" align=\"right\">{ts}Invoice Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.country_id:label}</font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\"> {$country}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td valign=\"top\" style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{domain.email}</font> </td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td valign=\"top\"><font size=\"1\" align=\"right\">{domain.phone}</font> </td>\n      </tr>\n    </table>\n\n    <table style=\"padding-top:75px;font-family: Arial, Verdana, sans-serif;\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      <tr>\n        <th style=\"text-align:left;font-weight:bold;width:100%\"><font size=\"1\">{ts}Description{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{domain.tax_term}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n      </tr>\n      {foreach from=$lineItems item=line}\n        <tr>\n          <td style=\"text-align:left;nowrap\"><font size=\"1\">\n            {$line.title}\n          </font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n            {if $line.tax_amount != \'\'}\n              <td style=\"text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n            {else}\n              <td style=\"text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}</font></td>\n            {/if}\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n        </tr>\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n      </tr>\n      {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n        {if $taxRate != 0}\n          <tr>\n            <td colspan=\"3\"></td>\n            <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n            <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n          </tr>\n        {/if}\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">\n          {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n            {ts}Amount Credited{/ts}\n          {else}\n            {ts}Amount Paid{/ts}\n          {/if}\n        </font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amountPaid|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td colspan=\"2\"><hr></hr></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\" ><b><font size=\"1\">{ts}AMOUNT DUE:{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n      </tr>\n      <tr>\n        <td colspan=\"5\"></td>\n      </tr>\n      {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n        <tr>\n          <td colspan=\"3\"><b><font size=\"1\" align=\"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n          <td colspan=\"2\"></td>\n        </tr>\n      {/if}\n    </table>\n\n    {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n      <table style=\"margin-top:5px;\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\"></td>\n        </tr>\n      </table>\n\n      <table style=\"margin-top:5px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" id=\"desc\">\n        <tr>\n          <td width=\"60%\"><b><font size=\"4\" align=\"right\">{ts}PAYMENT ADVICE{/ts}</font></b><br/><br/>\n            <font size=\"1\" align=\"left\"><b>{ts}To:{/ts}</b><div style=\"width:24em;word-wrap:break-word;\">\n              {domain.name}<br />\n              {domain.street_address} {domain.supplemental_address_1}<br />\n              {domain.supplemental_address_2} {domain.state_province_id:label}<br />\n              {domain.city} {domain.postal_code}<br />\n              {domain.country_id:label}<br />\n              {domain.email}</div>\n              {domain.phone}<br />\n            </font>\n            <br/><br/><font size=\"1\" align=\"left\">{$notes}</font>\n          </td>\n          <td width=\"40%\">\n            <table cellpadding=\"5\" cellspacing=\"0\"  width=\"100%\" border=\"0\">\n              <tr>\n                <td width=\"100%\"><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n                <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n              </tr>\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Invoice Number:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n              </tr>\n              <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td></tr>\n              {if $is_pay_later == 1}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n                </tr>\n              {else}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n                </tr>\n              {/if}\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Due Date:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{$dueDate}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td>\n              </tr>\n            </table>\n          </td>\n        </tr>\n      </table>\n    {/if}\n\n    {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n    {if $config->empoweredBy}\n      <table style=\"margin-top:2px;padding-left:7px;page-break-before: always;\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n\n    <table style=\"font-family: Arial, Verdana, sans-serif\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\">\n      <tr>\n        <td style=\"padding-left:15px;\"><b><font size=\"4\" align=\"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Date:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.name}</font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n         </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$street_address}   {$supplemental_address_1}</font></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$supplemental_address_2}  {$stateProvinceAbbreviation}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\" style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.country_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.email}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.phone}\n        </font></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td colspan=\"2\">\n          <table>\n            <tr>\n              <th style=\"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size=\"1\">{ts}Description{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{domain.tax_term}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n            </tr>\n            {foreach from=$lineItems item=line key=index}\n              <tr><td colspan=\"5\"><hr {if $index == 0}size=\"3\" style=\"color:#000;\"{else}style=\"color:#F5F5F5;\"{/if}></hr></td></tr>\n              <tr>\n                <td style =\"text-align:left;\"  ><font size=\"1\">\n                  {$line.title}\n                </font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n                {if $line.tax_amount != \'\'}\n                  <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n                {else}\n                  <td style=\"padding-left:28px;text-align:right\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}</font></td>\n                {/if}\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n              </tr>\n            {/foreach}\n            <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n            </tr>\n            {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                {if $taxRate != 0}\n                  <tr>\n                    <td colspan=\"3\"></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            <tr>\n              <td colspan=\"3\"></td>\n              <td colspan=\"2\"><hr></hr></td>\n            </tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n            {if \'{contribution.is_pay_later}\' == 0}\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}LESS Credit to invoice(s){/ts}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td colspan=\"2\"><hr></hr></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n                <td style=\"padding-left:28px;\"><font size=\"1\" align=\"right\"></font></td>\n              </tr>\n            {/if}\n            <br/><br/><br/>\n            <tr>\n              <td colspan=\"3\"></td>\n            </tr>\n            <tr>\n              <td></td>\n              <td colspan=\"3\"></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n\n    <table width=\"100%\" style=\"margin-top:5px;padding-right:45px;\">\n      <tr>\n        <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\" width=\"100%\"></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:6px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td width=\"60%\"><font size=\"4\" align=\"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n        <td width=\"40%\">\n          <table align=\"right\">\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n            </tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n            </tr>\n            <tr><td colspan=\"5\"style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n              <td width=\'50px\'><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n  {/if}\n\n  </div>\n  </body>\n</html>\n',1,818,'contribution_invoice_receipt',1,0,0,NULL),
- (10,'Contributions - Invoice','{if $title}\n  {if $component}\n    {if $component == \'event\'}\n      {ts 1=$title}Event Registration Invoice: %1{/ts}\n    {else}\n      {ts 1=$title}Contribution Invoice: %1{/ts}\n    {/if}\n  {/if}\n{else}\n  {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n      <title></title>\n  </head>\n  <body>\n  <div style=\"padding-top:100px;margin-right:50px;border-style: none;\">\n    {if $config->empoweredBy}\n      <table style=\"margin-top:5px;padding-bottom:50px;\" cellpadding=\"5\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{domain.empowered_by_civicrm_image_url}\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n    <table style=\"font-family: Arial, Verdana, sans-serif;\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      {if $email_comment}\n        <tr>\n          <td><font size=\"1\" colspan=\"3\">{$email_comment}</font></td>\n        </tr>\n      {/if}\n      <tr>\n        <td width=\"30%\"><b><font size=\"4\" align=\"center\">{ts}INVOICE{/ts}</font></b></td>\n        <td width=\"50%\" valign=\"bottom\"><b><font size=\"1\" align=\"center\">{ts}Invoice Date:{/ts}</font></b></td>\n        <td valign=\"bottom\" style=\"white-space: nowrap\"><b><font size=\"1\" align=\"right\">{domain.name}</font></b></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n        <td><b><font size=\"1\" align=\"right\">{ts}Invoice Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.country_id:label}</font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\"> {$country}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td valign=\"top\" style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{domain.email}</font> </td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td valign=\"top\"><font size=\"1\" align=\"right\">{domain.phone}</font> </td>\n      </tr>\n    </table>\n\n    <table style=\"padding-top:75px;font-family: Arial, Verdana, sans-serif;\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      <tr>\n        <th style=\"text-align:left;font-weight:bold;width:100%\"><font size=\"1\">{ts}Description{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{domain.tax_term}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n      </tr>\n      {foreach from=$lineItems item=line}\n        <tr>\n          <td style=\"text-align:left;nowrap\"><font size=\"1\">\n            {$line.title}\n          </font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n            {if $line.tax_amount != \'\'}\n              <td style=\"text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n            {else}\n              <td style=\"text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}</font></td>\n            {/if}\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n        </tr>\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n      </tr>\n      {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n        {if $taxRate != 0}\n          <tr>\n            <td colspan=\"3\"></td>\n            <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n            <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n          </tr>\n        {/if}\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">\n          {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n            {ts}Amount Credited{/ts}\n          {else}\n            {ts}Amount Paid{/ts}\n          {/if}\n        </font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amountPaid|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td colspan=\"2\"><hr></hr></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\" ><b><font size=\"1\">{ts}AMOUNT DUE:{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n      </tr>\n      <tr>\n        <td colspan=\"5\"></td>\n      </tr>\n      {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n        <tr>\n          <td colspan=\"3\"><b><font size=\"1\" align=\"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n          <td colspan=\"2\"></td>\n        </tr>\n      {/if}\n    </table>\n\n    {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n      <table style=\"margin-top:5px;\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\"></td>\n        </tr>\n      </table>\n\n      <table style=\"margin-top:5px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" id=\"desc\">\n        <tr>\n          <td width=\"60%\"><b><font size=\"4\" align=\"right\">{ts}PAYMENT ADVICE{/ts}</font></b><br/><br/>\n            <font size=\"1\" align=\"left\"><b>{ts}To:{/ts}</b><div style=\"width:24em;word-wrap:break-word;\">\n              {domain.name}<br />\n              {domain.street_address} {domain.supplemental_address_1}<br />\n              {domain.supplemental_address_2} {domain.state_province_id:label}<br />\n              {domain.city} {domain.postal_code}<br />\n              {domain.country_id:label}<br />\n              {domain.email}</div>\n              {domain.phone}<br />\n            </font>\n            <br/><br/><font size=\"1\" align=\"left\">{$notes}</font>\n          </td>\n          <td width=\"40%\">\n            <table cellpadding=\"5\" cellspacing=\"0\"  width=\"100%\" border=\"0\">\n              <tr>\n                <td width=\"100%\"><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n                <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n              </tr>\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Invoice Number:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n              </tr>\n              <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td></tr>\n              {if $is_pay_later == 1}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n                </tr>\n              {else}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n                </tr>\n              {/if}\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Due Date:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{$dueDate}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td>\n              </tr>\n            </table>\n          </td>\n        </tr>\n      </table>\n    {/if}\n\n    {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n    {if $config->empoweredBy}\n      <table style=\"margin-top:2px;padding-left:7px;page-break-before: always;\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n\n    <table style=\"font-family: Arial, Verdana, sans-serif\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\">\n      <tr>\n        <td style=\"padding-left:15px;\"><b><font size=\"4\" align=\"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Date:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.name}</font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n         </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$street_address}   {$supplemental_address_1}</font></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$supplemental_address_2}  {$stateProvinceAbbreviation}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\" style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.country_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.email}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.phone}\n        </font></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td colspan=\"2\">\n          <table>\n            <tr>\n              <th style=\"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size=\"1\">{ts}Description{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{domain.tax_term}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n            </tr>\n            {foreach from=$lineItems item=line key=index}\n              <tr><td colspan=\"5\"><hr {if $index == 0}size=\"3\" style=\"color:#000;\"{else}style=\"color:#F5F5F5;\"{/if}></hr></td></tr>\n              <tr>\n                <td style =\"text-align:left;\"  ><font size=\"1\">\n                  {$line.title}\n                </font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n                {if $line.tax_amount != \'\'}\n                  <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n                {else}\n                  <td style=\"padding-left:28px;text-align:right\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}</font></td>\n                {/if}\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n              </tr>\n            {/foreach}\n            <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n            </tr>\n            {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                {if $taxRate != 0}\n                  <tr>\n                    <td colspan=\"3\"></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            <tr>\n              <td colspan=\"3\"></td>\n              <td colspan=\"2\"><hr></hr></td>\n            </tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n            {if \'{contribution.is_pay_later}\' == 0}\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}LESS Credit to invoice(s){/ts}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td colspan=\"2\"><hr></hr></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n                <td style=\"padding-left:28px;\"><font size=\"1\" align=\"right\"></font></td>\n              </tr>\n            {/if}\n            <br/><br/><br/>\n            <tr>\n              <td colspan=\"3\"></td>\n            </tr>\n            <tr>\n              <td></td>\n              <td colspan=\"3\"></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n\n    <table width=\"100%\" style=\"margin-top:5px;padding-right:45px;\">\n      <tr>\n        <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\" width=\"100%\"></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:6px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td width=\"60%\"><font size=\"4\" align=\"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n        <td width=\"40%\">\n          <table align=\"right\">\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n            </tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n            </tr>\n            <tr><td colspan=\"5\"style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n              <td width=\'50px\'><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n  {/if}\n\n  </div>\n  </body>\n</html>\n',1,818,'contribution_invoice_receipt',0,1,0,NULL),
+ (5,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if {contribution.contribution_page_id.receipt_text|boolean}}\n{contribution.contribution_page_id.receipt_text}\n{elseif {contribution.paid_amount|boolean}} {ts}Below you will find a receipt for this contribution.{/ts}\n{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      <p>\n        {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n        {elseif {contribution.paid_amount|boolean}}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n      </p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Contribution Information{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Contributor Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {contact.display_name}\n      </td>\n     </tr>\n     <tr>\n      {if \'{contribution.financial_type_id}\'}\n        <td {$labelStyle}>\n         {ts}Financial Type{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.financial_type_id:label}\n        </td>\n      {/if}\n     </tr>\n\n     {if $isShowLineItems}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <table>\n          <tr>\n           <th>{ts}Item{/ts}</th>\n           <th>{ts}Qty{/ts}</th>\n           <th>{ts}Each{/ts}</th>\n           {if $isShowTax && {contribution.tax_amount|boolean}}\n             <th>{ts}Subtotal{/ts}</th>\n             <th>{ts}Tax Rate{/ts}</th>\n             <th>{ts}Tax Amount{/ts}</th>\n           {/if}\n           <th>{ts}Total{/ts}</th>\n          </tr>\n          {foreach from=$lineItems item=line}\n           <tr>\n            <td>\n              {$line.title}\n            </td>\n            <td>\n             {$line.qty}\n            </td>\n            <td>\n             {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n            </td>\n            {if $isShowTax && {contribution.tax_amount|boolean}}\n              <td>\n                {$line.line_total|crmMoney:\'{contribution.currency}\'}\n              </td>\n              {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td>\n                  {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td>\n                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                </td>\n              {else}\n                <td></td>\n                <td></td>\n              {/if}\n            {/if}\n            <td>\n             {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n            </td>\n           </tr>\n          {/foreach}\n         </table>\n        </td>\n       </tr>\n\n     {/if}\n     {if $isShowTax && {contribution.tax_amount|boolean}}\n       <tr>\n         <td {$labelStyle}>\n           {ts} Amount before Tax : {/ts}\n         </td>\n         <td {$valueStyle}>\n           {contribution.tax_exclusive_amount}\n         </td>\n       </tr>\n\n       {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n         <tr>\n          <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n          <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if $isShowTax}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.tax_amount}\n        </td>\n      </tr>\n     {/if}\n\n     <tr>\n      <td {$labelStyle}>\n       {ts}Total Amount{/ts}\n      </td>\n      <td {$valueStyle}>\n        {contribution.total_amount}\n      </td>\n     </tr>\n\n     {if \'{contribution.receive_date}\'}\n       <tr>\n       <td {$labelStyle}>\n        {ts}Contribution Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receive_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n      {if \'{contribution.receipt_date}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Receipt Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receipt_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n     {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Paid By{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.payment_instrument_id:label}\n       </td>\n      </tr>\n      {if \'{contribution.check_number}\'}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.check_number}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if \'{contribution.trxn_id}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction ID{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($ccContribution)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$billingName}<br />\n        {$address|nl2br}\n       </td>\n      </tr>\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n     {if !empty($formValues.product_name)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$formValues.product_name}\n       </td>\n      </tr>\n      {if $formValues.product_option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_option}\n        </td>\n       </tr>\n      {/if}\n      {if $formValues.product_sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_sku}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($fulfilled_date)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Sent{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$fulfilled_date|truncate:10:\'\'|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,816,'contribution_offline_receipt',1,0,0,NULL),
+ (6,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if {contribution.contribution_page_id.receipt_text|boolean}}\n{contribution.contribution_page_id.receipt_text}\n{elseif {contribution.paid_amount|boolean}} {ts}Below you will find a receipt for this contribution.{/ts}\n{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      <p>\n        {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n        {elseif {contribution.paid_amount|boolean}}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n      </p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Contribution Information{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Contributor Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {contact.display_name}\n      </td>\n     </tr>\n     <tr>\n      {if \'{contribution.financial_type_id}\'}\n        <td {$labelStyle}>\n         {ts}Financial Type{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.financial_type_id:label}\n        </td>\n      {/if}\n     </tr>\n\n     {if $isShowLineItems}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <table>\n          <tr>\n           <th>{ts}Item{/ts}</th>\n           <th>{ts}Qty{/ts}</th>\n           <th>{ts}Each{/ts}</th>\n           {if $isShowTax && {contribution.tax_amount|boolean}}\n             <th>{ts}Subtotal{/ts}</th>\n             <th>{ts}Tax Rate{/ts}</th>\n             <th>{ts}Tax Amount{/ts}</th>\n           {/if}\n           <th>{ts}Total{/ts}</th>\n          </tr>\n          {foreach from=$lineItems item=line}\n           <tr>\n            <td>\n              {$line.title}\n            </td>\n            <td>\n             {$line.qty}\n            </td>\n            <td>\n             {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n            </td>\n            {if $isShowTax && {contribution.tax_amount|boolean}}\n              <td>\n                {$line.line_total|crmMoney:\'{contribution.currency}\'}\n              </td>\n              {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td>\n                  {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td>\n                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                </td>\n              {else}\n                <td></td>\n                <td></td>\n              {/if}\n            {/if}\n            <td>\n             {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n            </td>\n           </tr>\n          {/foreach}\n         </table>\n        </td>\n       </tr>\n\n     {/if}\n     {if $isShowTax && {contribution.tax_amount|boolean}}\n       <tr>\n         <td {$labelStyle}>\n           {ts} Amount before Tax : {/ts}\n         </td>\n         <td {$valueStyle}>\n           {contribution.tax_exclusive_amount}\n         </td>\n       </tr>\n\n       {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n         <tr>\n          <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n          <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if $isShowTax}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.tax_amount}\n        </td>\n      </tr>\n     {/if}\n\n     <tr>\n      <td {$labelStyle}>\n       {ts}Total Amount{/ts}\n      </td>\n      <td {$valueStyle}>\n        {contribution.total_amount}\n      </td>\n     </tr>\n\n     {if \'{contribution.receive_date}\'}\n       <tr>\n       <td {$labelStyle}>\n        {ts}Contribution Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receive_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n      {if \'{contribution.receipt_date}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Receipt Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receipt_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n     {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Paid By{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.payment_instrument_id:label}\n       </td>\n      </tr>\n      {if \'{contribution.check_number}\'}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.check_number}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if \'{contribution.trxn_id}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction ID{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($ccContribution)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$billingName}<br />\n        {$address|nl2br}\n       </td>\n      </tr>\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n     {if !empty($formValues.product_name)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$formValues.product_name}\n       </td>\n      </tr>\n      {if $formValues.product_option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_option}\n        </td>\n       </tr>\n      {/if}\n      {if $formValues.product_sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_sku}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($fulfilled_date)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Sent{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$fulfilled_date|truncate:10:\'\'|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,816,'contribution_offline_receipt',0,1,0,NULL),
+ (7,'Contributions - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n</table>\n<table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n  {if {contribution.total_amount|boolean}}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Contribution Information{/ts}\n      </th>\n    </tr>\n\n    {if $isShowLineItems}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          <table>\n            <tr>\n              <th>{ts}Item{/ts}</th>\n              <th>{ts}Qty{/ts}</th>\n              <th>{ts}Each{/ts}</th>\n              {if $isShowTax && {contribution.tax_amount|boolean}}\n                <th>{ts}Subtotal{/ts}</th>\n                <th>{ts}Tax Rate{/ts}</th>\n                <th>{ts}Tax Amount{/ts}</th>\n              {/if}\n              <th>{ts}Total{/ts}</th>\n            </tr>\n            {foreach from=$lineItems item=line}\n              <tr>\n                <td>{$line.title}</td>\n                <td>{$line.qty}</td>\n                <td>{$line.unit_price|crmMoney:$currency}</td>\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <td>{$line.line_total|crmMoney:$currency}</td>\n                  {if $line.tax_rate || $line.tax_amount != \"\"}\n                    <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                    <td>{$line.tax_amount|crmMoney:$currency}</td>\n                  {else}\n                    <td></td>\n                    <td></td>\n                  {/if}\n                {/if}\n                <td>\n                  {$line.line_total_inclusive|crmMoney:$currency}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n\n      {if $isShowTax && {contribution.tax_amount|boolean}}\n        <tr>\n          <td {$labelStyle}>\n            {ts} Amount before Tax : {/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_exclusive_amount}\n          </td>\n        </tr>\n\n        {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n          <tr>\n            <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n            <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n          </tr>\n        {/foreach}\n\n      {/if}\n      {if $isShowTax}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n        </tr>\n      {/if}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.total_amount}\n        </td>\n      </tr>\n    {else}\n      {if {contribution.tax_amount|boolean}}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n         </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n  {/if}\n\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if {contribution.trxn_id|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n    {if !empty($is_recur)}\n      <tr>\n        <td  colspan=\"2\" {$labelStyle}>\n          {ts}This is a recurring contribution.{/ts}\n          {if $cancelSubscriptionUrl}\n            {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by <a href=\"%1\">visiting this web page</a>.{/ts}\n          {/if}\n        </td>\n      </tr>\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n      {elseif !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if {contribution.contribution_page_id.is_share|boolean}}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n            {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id={contribution.contribution_page_id}\" a=true fe=1 h=1}{/capture}\n            {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n        </td>\n      </tr>\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n     {elseif !empty($email)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Registered Email{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$email}\n        </td>\n       </tr>\n     {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if $is_deductible AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,817,'contribution_online_receipt',1,0,0,NULL),
+ (8,'Contributions - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n</table>\n<table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n  {if {contribution.total_amount|boolean}}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Contribution Information{/ts}\n      </th>\n    </tr>\n\n    {if $isShowLineItems}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          <table>\n            <tr>\n              <th>{ts}Item{/ts}</th>\n              <th>{ts}Qty{/ts}</th>\n              <th>{ts}Each{/ts}</th>\n              {if $isShowTax && {contribution.tax_amount|boolean}}\n                <th>{ts}Subtotal{/ts}</th>\n                <th>{ts}Tax Rate{/ts}</th>\n                <th>{ts}Tax Amount{/ts}</th>\n              {/if}\n              <th>{ts}Total{/ts}</th>\n            </tr>\n            {foreach from=$lineItems item=line}\n              <tr>\n                <td>{$line.title}</td>\n                <td>{$line.qty}</td>\n                <td>{$line.unit_price|crmMoney:$currency}</td>\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <td>{$line.line_total|crmMoney:$currency}</td>\n                  {if $line.tax_rate || $line.tax_amount != \"\"}\n                    <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                    <td>{$line.tax_amount|crmMoney:$currency}</td>\n                  {else}\n                    <td></td>\n                    <td></td>\n                  {/if}\n                {/if}\n                <td>\n                  {$line.line_total_inclusive|crmMoney:$currency}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n\n      {if $isShowTax && {contribution.tax_amount|boolean}}\n        <tr>\n          <td {$labelStyle}>\n            {ts} Amount before Tax : {/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_exclusive_amount}\n          </td>\n        </tr>\n\n        {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n          <tr>\n            <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n            <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n          </tr>\n        {/foreach}\n\n      {/if}\n      {if $isShowTax}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n        </tr>\n      {/if}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.total_amount}\n        </td>\n      </tr>\n    {else}\n      {if {contribution.tax_amount|boolean}}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n         </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n  {/if}\n\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if {contribution.trxn_id|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n    {if !empty($is_recur)}\n      <tr>\n        <td  colspan=\"2\" {$labelStyle}>\n          {ts}This is a recurring contribution.{/ts}\n          {if $cancelSubscriptionUrl}\n            {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by <a href=\"%1\">visiting this web page</a>.{/ts}\n          {/if}\n        </td>\n      </tr>\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n      {elseif !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if {contribution.contribution_page_id.is_share|boolean}}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n            {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id={contribution.contribution_page_id}\" a=true fe=1 h=1}{/capture}\n            {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n        </td>\n      </tr>\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n     {elseif !empty($email)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Registered Email{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$email}\n        </td>\n       </tr>\n     {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if $is_deductible AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,817,'contribution_online_receipt',0,1,0,NULL),
+ (9,'Contributions - Invoice','{if $title}\n  {if $component}\n    {if $component == \'event\'}\n      {ts 1=$title}Event Registration Invoice: %1{/ts}\n    {else}\n      {ts 1=$title}Contribution Invoice: %1{/ts}\n    {/if}\n  {/if}\n{else}\n  {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n      <title></title>\n  </head>\n  <body>\n  <div style=\"padding-top:100px;margin-right:50px;border-style: none;\">\n    {if $config->empoweredBy}\n      <table style=\"margin-top:5px;padding-bottom:50px;\" cellpadding=\"5\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{domain.empowered_by_civicrm_image_url}\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n    <table style=\"font-family: Arial, Verdana, sans-serif;\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      {if $userText}\n        <tr>\n          <td><font size=\"1\" colspan=\"3\">{$userText}</font></td>\n        </tr>\n      {/if}\n      <tr>\n        <td width=\"30%\"><b><font size=\"4\" align=\"center\">{ts}INVOICE{/ts}</font></b></td>\n        <td width=\"50%\" valign=\"bottom\"><b><font size=\"1\" align=\"center\">{ts}Invoice Date:{/ts}</font></b></td>\n        <td valign=\"bottom\" style=\"white-space: nowrap\"><b><font size=\"1\" align=\"right\">{domain.name}</font></b></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n        <td><b><font size=\"1\" align=\"right\">{ts}Invoice Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.country_id:label}</font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\"> {$country}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td valign=\"top\" style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{domain.email}</font> </td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td valign=\"top\"><font size=\"1\" align=\"right\">{domain.phone}</font> </td>\n      </tr>\n    </table>\n\n    <table style=\"padding-top:75px;font-family: Arial, Verdana, sans-serif;\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      <tr>\n        <th style=\"text-align:left;font-weight:bold;width:100%\"><font size=\"1\">{ts}Description{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{domain.tax_term}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n      </tr>\n      {foreach from=$lineItems item=line}\n        <tr>\n          <td style=\"text-align:left;nowrap\"><font size=\"1\">\n            {$line.title}\n          </font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n            {if $line.tax_amount != \'\'}\n              <td style=\"text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n            {else}\n              <td style=\"text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}</font></td>\n            {/if}\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n        </tr>\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n      </tr>\n      {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n        {if $taxRate != 0}\n          <tr>\n            <td colspan=\"3\"></td>\n            <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n            <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n          </tr>\n        {/if}\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">\n          {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n            {ts}Amount Credited{/ts}\n          {else}\n            {ts}Amount Paid{/ts}\n          {/if}\n        </font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amountPaid|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td colspan=\"2\"><hr></hr></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\" ><b><font size=\"1\">{ts}AMOUNT DUE:{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n      </tr>\n      <tr>\n        <td colspan=\"5\"></td>\n      </tr>\n      {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n        <tr>\n          <td colspan=\"3\"><b><font size=\"1\" align=\"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n          <td colspan=\"2\"></td>\n        </tr>\n      {/if}\n    </table>\n\n    {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n      <table style=\"margin-top:5px;\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\"></td>\n        </tr>\n      </table>\n\n      <table style=\"margin-top:5px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" id=\"desc\">\n        <tr>\n          <td width=\"60%\"><b><font size=\"4\" align=\"right\">{ts}PAYMENT ADVICE{/ts}</font></b><br/><br/>\n            <font size=\"1\" align=\"left\"><b>{ts}To:{/ts}</b><div style=\"width:24em;word-wrap:break-word;\">\n              {domain.name}<br />\n              {domain.street_address} {domain.supplemental_address_1}<br />\n              {domain.supplemental_address_2} {domain.state_province_id:label}<br />\n              {domain.city} {domain.postal_code}<br />\n              {domain.country_id:label}<br />\n              {domain.email}</div>\n              {domain.phone}<br />\n            </font>\n            <br/><br/><font size=\"1\" align=\"left\">{$notes}</font>\n          </td>\n          <td width=\"40%\">\n            <table cellpadding=\"5\" cellspacing=\"0\"  width=\"100%\" border=\"0\">\n              <tr>\n                <td width=\"100%\"><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n                <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n              </tr>\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Invoice Number:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n              </tr>\n              <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td></tr>\n              {if $is_pay_later == 1}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n                </tr>\n              {else}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n                </tr>\n              {/if}\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Due Date:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{$dueDate}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td>\n              </tr>\n            </table>\n          </td>\n        </tr>\n      </table>\n    {/if}\n\n    {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n    {if $config->empoweredBy}\n      <table style=\"margin-top:2px;padding-left:7px;page-break-before: always;\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n\n    <table style=\"font-family: Arial, Verdana, sans-serif\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\">\n      <tr>\n        <td style=\"padding-left:15px;\"><b><font size=\"4\" align=\"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Date:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.name}</font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n         </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$street_address}   {$supplemental_address_1}</font></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$supplemental_address_2}  {$stateProvinceAbbreviation}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\" style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.country_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.email}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.phone}\n        </font></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td colspan=\"2\">\n          <table>\n            <tr>\n              <th style=\"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size=\"1\">{ts}Description{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{domain.tax_term}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n            </tr>\n            {foreach from=$lineItems item=line key=index}\n              <tr><td colspan=\"5\"><hr {if $index == 0}size=\"3\" style=\"color:#000;\"{else}style=\"color:#F5F5F5;\"{/if}></hr></td></tr>\n              <tr>\n                <td style =\"text-align:left;\"  ><font size=\"1\">\n                  {$line.title}\n                </font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n                {if $line.tax_amount != \'\'}\n                  <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n                {else}\n                  <td style=\"padding-left:28px;text-align:right\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}</font></td>\n                {/if}\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n              </tr>\n            {/foreach}\n            <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n            </tr>\n            {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                {if $taxRate != 0}\n                  <tr>\n                    <td colspan=\"3\"></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            <tr>\n              <td colspan=\"3\"></td>\n              <td colspan=\"2\"><hr></hr></td>\n            </tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n            {if \'{contribution.is_pay_later}\' == 0}\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}LESS Credit to invoice(s){/ts}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td colspan=\"2\"><hr></hr></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n                <td style=\"padding-left:28px;\"><font size=\"1\" align=\"right\"></font></td>\n              </tr>\n            {/if}\n            <br/><br/><br/>\n            <tr>\n              <td colspan=\"3\"></td>\n            </tr>\n            <tr>\n              <td></td>\n              <td colspan=\"3\"></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n\n    <table width=\"100%\" style=\"margin-top:5px;padding-right:45px;\">\n      <tr>\n        <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\" width=\"100%\"></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:6px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td width=\"60%\"><font size=\"4\" align=\"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n        <td width=\"40%\">\n          <table align=\"right\">\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n            </tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n            </tr>\n            <tr><td colspan=\"5\"style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n              <td width=\'50px\'><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n  {/if}\n\n  </div>\n  </body>\n</html>\n',1,818,'contribution_invoice_receipt',1,0,0,NULL),
+ (10,'Contributions - Invoice','{if $title}\n  {if $component}\n    {if $component == \'event\'}\n      {ts 1=$title}Event Registration Invoice: %1{/ts}\n    {else}\n      {ts 1=$title}Contribution Invoice: %1{/ts}\n    {/if}\n  {/if}\n{else}\n  {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n      <title></title>\n  </head>\n  <body>\n  <div style=\"padding-top:100px;margin-right:50px;border-style: none;\">\n    {if $config->empoweredBy}\n      <table style=\"margin-top:5px;padding-bottom:50px;\" cellpadding=\"5\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{domain.empowered_by_civicrm_image_url}\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n    <table style=\"font-family: Arial, Verdana, sans-serif;\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      {if $userText}\n        <tr>\n          <td><font size=\"1\" colspan=\"3\">{$userText}</font></td>\n        </tr>\n      {/if}\n      <tr>\n        <td width=\"30%\"><b><font size=\"4\" align=\"center\">{ts}INVOICE{/ts}</font></b></td>\n        <td width=\"50%\" valign=\"bottom\"><b><font size=\"1\" align=\"center\">{ts}Invoice Date:{/ts}</font></b></td>\n        <td valign=\"bottom\" style=\"white-space: nowrap\"><b><font size=\"1\" align=\"right\">{domain.name}</font></b></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n        <td><b><font size=\"1\" align=\"right\">{ts}Invoice Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.country_id:label}</font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\"> {$country}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td valign=\"top\" style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{domain.email}</font> </td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td valign=\"top\"><font size=\"1\" align=\"right\">{domain.phone}</font> </td>\n      </tr>\n    </table>\n\n    <table style=\"padding-top:75px;font-family: Arial, Verdana, sans-serif;\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      <tr>\n        <th style=\"text-align:left;font-weight:bold;width:100%\"><font size=\"1\">{ts}Description{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{domain.tax_term}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n      </tr>\n      {foreach from=$lineItems item=line}\n        <tr>\n          <td style=\"text-align:left;nowrap\"><font size=\"1\">\n            {$line.title}\n          </font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n            {if $line.tax_amount != \'\'}\n              <td style=\"text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n            {else}\n              <td style=\"text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}</font></td>\n            {/if}\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n        </tr>\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n      </tr>\n      {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n        {if $taxRate != 0}\n          <tr>\n            <td colspan=\"3\"></td>\n            <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n            <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n          </tr>\n        {/if}\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">\n          {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n            {ts}Amount Credited{/ts}\n          {else}\n            {ts}Amount Paid{/ts}\n          {/if}\n        </font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amountPaid|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td colspan=\"2\"><hr></hr></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\" ><b><font size=\"1\">{ts}AMOUNT DUE:{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n      </tr>\n      <tr>\n        <td colspan=\"5\"></td>\n      </tr>\n      {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n        <tr>\n          <td colspan=\"3\"><b><font size=\"1\" align=\"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n          <td colspan=\"2\"></td>\n        </tr>\n      {/if}\n    </table>\n\n    {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n      <table style=\"margin-top:5px;\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\"></td>\n        </tr>\n      </table>\n\n      <table style=\"margin-top:5px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" id=\"desc\">\n        <tr>\n          <td width=\"60%\"><b><font size=\"4\" align=\"right\">{ts}PAYMENT ADVICE{/ts}</font></b><br/><br/>\n            <font size=\"1\" align=\"left\"><b>{ts}To:{/ts}</b><div style=\"width:24em;word-wrap:break-word;\">\n              {domain.name}<br />\n              {domain.street_address} {domain.supplemental_address_1}<br />\n              {domain.supplemental_address_2} {domain.state_province_id:label}<br />\n              {domain.city} {domain.postal_code}<br />\n              {domain.country_id:label}<br />\n              {domain.email}</div>\n              {domain.phone}<br />\n            </font>\n            <br/><br/><font size=\"1\" align=\"left\">{$notes}</font>\n          </td>\n          <td width=\"40%\">\n            <table cellpadding=\"5\" cellspacing=\"0\"  width=\"100%\" border=\"0\">\n              <tr>\n                <td width=\"100%\"><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n                <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n              </tr>\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Invoice Number:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n              </tr>\n              <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td></tr>\n              {if $is_pay_later == 1}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n                </tr>\n              {else}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n                </tr>\n              {/if}\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Due Date:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{$dueDate}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td>\n              </tr>\n            </table>\n          </td>\n        </tr>\n      </table>\n    {/if}\n\n    {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n    {if $config->empoweredBy}\n      <table style=\"margin-top:2px;padding-left:7px;page-break-before: always;\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n\n    <table style=\"font-family: Arial, Verdana, sans-serif\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\">\n      <tr>\n        <td style=\"padding-left:15px;\"><b><font size=\"4\" align=\"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Date:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.name}</font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n         </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$street_address}   {$supplemental_address_1}</font></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$supplemental_address_2}  {$stateProvinceAbbreviation}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\" style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.country_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.email}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.phone}\n        </font></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td colspan=\"2\">\n          <table>\n            <tr>\n              <th style=\"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size=\"1\">{ts}Description{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{domain.tax_term}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n            </tr>\n            {foreach from=$lineItems item=line key=index}\n              <tr><td colspan=\"5\"><hr {if $index == 0}size=\"3\" style=\"color:#000;\"{else}style=\"color:#F5F5F5;\"{/if}></hr></td></tr>\n              <tr>\n                <td style =\"text-align:left;\"  ><font size=\"1\">\n                  {$line.title}\n                </font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n                {if $line.tax_amount != \'\'}\n                  <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n                {else}\n                  <td style=\"padding-left:28px;text-align:right\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}</font></td>\n                {/if}\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n              </tr>\n            {/foreach}\n            <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n            </tr>\n            {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                {if $taxRate != 0}\n                  <tr>\n                    <td colspan=\"3\"></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            <tr>\n              <td colspan=\"3\"></td>\n              <td colspan=\"2\"><hr></hr></td>\n            </tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n            {if \'{contribution.is_pay_later}\' == 0}\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}LESS Credit to invoice(s){/ts}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td colspan=\"2\"><hr></hr></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n                <td style=\"padding-left:28px;\"><font size=\"1\" align=\"right\"></font></td>\n              </tr>\n            {/if}\n            <br/><br/><br/>\n            <tr>\n              <td colspan=\"3\"></td>\n            </tr>\n            <tr>\n              <td></td>\n              <td colspan=\"3\"></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n\n    <table width=\"100%\" style=\"margin-top:5px;padding-right:45px;\">\n      <tr>\n        <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\" width=\"100%\"></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:6px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td width=\"60%\"><font size=\"4\" align=\"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n        <td width=\"40%\">\n          <table align=\"right\">\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n            </tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n            </tr>\n            <tr><td colspan=\"5\"style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n              <td width=\'50px\'><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n  {/if}\n\n  </div>\n  </body>\n</html>\n',1,818,'contribution_invoice_receipt',0,1,0,NULL),
  (11,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments} {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}:  {$recur_start_date|crmDate}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n   </td>\n  </tr>\n\n  <tr>\n   <td>&nbsp;</td>\n  </tr>\n\n    {if $recur_txnType eq \'START\'}\n     {if $auto_renew_membership}\n       <tr>\n        <td>\n         <p>{ts}Thanks for your auto renew membership sign-up.{/ts}</p>\n         <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}</p>\n        </td>\n       </tr>\n       {if $cancelSubscriptionUrl}\n       <tr>\n         <td {$labelStyle}>\n           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n         </td>\n       </tr>\n       {/if}\n       {if $updateSubscriptionBillingUrl}\n         <tr>\n          <td {$labelStyle}>\n           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n         </tr>\n       {/if}\n     {else}\n      <tr>\n       <td>\n        <p>{ts}Thanks for your recurring contribution sign-up.{/ts}</p>\n        <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments}{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.</p>\n        <p>{ts}Start Date{/ts}: {$recur_start_date|crmDate}</p>\n       </td>\n      </tr>\n      {if $cancelSubscriptionUrl}\n      <tr>\n        <td {$labelStyle}>\n          {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n        </td>\n      </tr>\n      {/if}\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n      <tr>\n        <td {$labelStyle}>\n          {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n        </td>\n      </tr>\n      {/if}\n     {/if}\n\n    {elseif $recur_txnType eq \'END\'}\n\n     {if $auto_renew_membership}\n      <tr>\n       <td>\n        <p>{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}</p>\n       </td>\n      </tr>\n     {else}\n      <tr>\n       <td>\n        <p>{ts}Your recurring contribution term has ended.{/ts}</p>\n        <p>{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}</p>\n       </td>\n      </tr>\n      <tr>\n       <td>\n     <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      <tr>\n       <th {$headerStyle}>\n        {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Start Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$recur_start_date|crmDate}\n       </td>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}End Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$recur_end_date|crmDate}\n       </td>\n      </tr>\n     </table>\n       </td>\n      </tr>\n\n     {/if}\n    {/if}\n\n </table>\n\n</body>\n</html>\n',1,819,'contribution_recurring_notify',1,0,0,NULL),
  (12,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments} {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}:  {$recur_start_date|crmDate}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n   </td>\n  </tr>\n\n  <tr>\n   <td>&nbsp;</td>\n  </tr>\n\n    {if $recur_txnType eq \'START\'}\n     {if $auto_renew_membership}\n       <tr>\n        <td>\n         <p>{ts}Thanks for your auto renew membership sign-up.{/ts}</p>\n         <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}</p>\n        </td>\n       </tr>\n       {if $cancelSubscriptionUrl}\n       <tr>\n         <td {$labelStyle}>\n           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n         </td>\n       </tr>\n       {/if}\n       {if $updateSubscriptionBillingUrl}\n         <tr>\n          <td {$labelStyle}>\n           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n         </tr>\n       {/if}\n     {else}\n      <tr>\n       <td>\n        <p>{ts}Thanks for your recurring contribution sign-up.{/ts}</p>\n        <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments}{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.</p>\n        <p>{ts}Start Date{/ts}: {$recur_start_date|crmDate}</p>\n       </td>\n      </tr>\n      {if $cancelSubscriptionUrl}\n      <tr>\n        <td {$labelStyle}>\n          {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n        </td>\n      </tr>\n      {/if}\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n      <tr>\n        <td {$labelStyle}>\n          {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n        </td>\n      </tr>\n      {/if}\n     {/if}\n\n    {elseif $recur_txnType eq \'END\'}\n\n     {if $auto_renew_membership}\n      <tr>\n       <td>\n        <p>{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}</p>\n       </td>\n      </tr>\n     {else}\n      <tr>\n       <td>\n        <p>{ts}Your recurring contribution term has ended.{/ts}</p>\n        <p>{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}</p>\n       </td>\n      </tr>\n      <tr>\n       <td>\n     <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      <tr>\n       <th {$headerStyle}>\n        {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Start Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$recur_start_date|crmDate}\n       </td>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}End Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$recur_end_date|crmDate}\n       </td>\n      </tr>\n     </table>\n       </td>\n      </tr>\n\n     {/if}\n    {/if}\n\n </table>\n\n</body>\n</html>\n',1,819,'contribution_recurring_notify',0,1,0,NULL),
  (13,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n</body>\n</html>\n',1,820,'contribution_recurring_cancelled',1,0,0,NULL),
@@ -5345,12 +5363,12 @@ INSERT INTO `civicrm_msg_template` (`id`, `msg_title`, `msg_subject`, `msg_text`
  (24,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}</p>\n   </td>\n  </tr>\n\n  {if $pcpStatus eq \'Approved\'}\n\n    <tr>\n     <td>\n      <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n       <tr>\n        <th {$headerStyle}>\n         {ts}Promoting Your Page{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {if $isTellFriendEnabled}\n          <p>{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:</p>\n          <ol>\n           <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n           <li><a href=\"{$pcpTellFriendURL}\">{ts}Click this link and follow the prompts{/ts}</a></li>\n          </ol>\n         {else}\n          <p>{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}</p>\n         {/if}\n        </td>\n       </tr>\n       <tr>\n        <th {$headerStyle}>\n         {ts}Managing Your Page{/ts}\n        </th>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n         <ol>\n          <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n          <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n         </ol>\n         <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n        </td>\n       </tr>\n       </tr>\n      </table>\n     </td>\n    </tr>\n\n   {elseif $pcpStatus EQ \'Waiting Review\'}\n\n    <tr>\n     <td>\n      <p>{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}</p>\n      <p>{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}</p>\n      <p>{ts}You can still preview your page prior to approval{/ts}:</p>\n      <ol>\n       <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n       <li><a href=\"{$pcpInfoURL}\">{ts}Click this link{/ts}</a></li>\n      </ol>\n     </td>\n    </tr>\n\n   {/if}\n\n   {if $pcpNotifyEmailAddress}\n    <tr>\n     <td>\n      <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n     </td>\n    </tr>\n   {/if}\n\n </table>\n\n</body>\n</html>\n',1,825,'pcp_supporter_notify',0,1,0,NULL),
  (25,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\n===========================================================\n{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}You have received a donation at your personal page{/ts}: {$page_title}\n>> {$pcpInfoURL}\n\n{ts}Your fundraising total has been updated.{/ts}\n{ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts}\n{if $is_honor_roll_enabled}\n    {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}\n{/if}\n\n{ts}Contribution Date{/ts}: {$receive_date|crmDate}\n\n{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}\n\n{ts}Name{/ts}: {$donors_display_name}\n\n{ts}Email{/ts}: {$donors_email}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n  <p>{ts}You have received a donation at your personal page{/ts}: <a href=\"{$pcpInfoURL}\">{$page_title}</a></p>\n  <p>{ts}Your fundraising total has been updated.{/ts}<br/>\n    {ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts} <br/>\n    {if $is_honor_roll_enabled}\n      {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}<br/>\n    {/if}\n  </p>\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n    <tr><td>{ts}Contribution Date{/ts}:</td><td> {$receive_date|crmDate}</td></tr>\n    <tr><td>{ts}Amount{/ts}:</td><td> {$total_amount|crmMoney:$currency}</td></tr>\n    <tr><td>{ts}Name{/ts}:</td><td> {$donors_display_name}</td></tr>\n    <tr><td>{ts}Email{/ts}:</td><td> {$donors_email}</td></tr>\n  </table>\n</body>\n</html>\n',1,826,'pcp_owner_notify',1,0,0,NULL),
  (26,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\n===========================================================\n{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}You have received a donation at your personal page{/ts}: {$page_title}\n>> {$pcpInfoURL}\n\n{ts}Your fundraising total has been updated.{/ts}\n{ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts}\n{if $is_honor_roll_enabled}\n    {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}\n{/if}\n\n{ts}Contribution Date{/ts}: {$receive_date|crmDate}\n\n{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}\n\n{ts}Name{/ts}: {$donors_display_name}\n\n{ts}Email{/ts}: {$donors_email}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n  <p>{ts}You have received a donation at your personal page{/ts}: <a href=\"{$pcpInfoURL}\">{$page_title}</a></p>\n  <p>{ts}Your fundraising total has been updated.{/ts}<br/>\n    {ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts} <br/>\n    {if $is_honor_roll_enabled}\n      {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}<br/>\n    {/if}\n  </p>\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n    <tr><td>{ts}Contribution Date{/ts}:</td><td> {$receive_date|crmDate}</td></tr>\n    <tr><td>{ts}Amount{/ts}:</td><td> {$total_amount|crmMoney:$currency}</td></tr>\n    <tr><td>{ts}Name{/ts}:</td><td> {$donors_display_name}</td></tr>\n    <tr><td>{ts}Email{/ts}:</td><td> {$donors_email}</td></tr>\n  </table>\n</body>\n</html>\n',1,826,'pcp_owner_notify',0,1,0,NULL),
- (27,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle}style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle}style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if $isRefund}\n        <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n      {else}\n        <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n        {if $paymentsComplete}\n          <p>{ts}Thank you for completing this contribution.{/ts}</p>\n        {/if}\n      {/if}\n    </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if $isRefund}\n      <tr>\n        <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Refund Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$refundAmount|crmMoney:$currency}\n        </td>\n      </tr>\n    {else}\n      <tr>\n        <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Payment Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$paymentAmount|crmMoney:$currency}\n        </td>\n      </tr>\n    {/if}\n    {if $receive_date}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction Date{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$receive_date|crmDate}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($trxn_id)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$trxn_id}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($paidBy)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Paid By{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$paidBy}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($checkNumber)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$checkNumber}\n        </td>\n      </tr>\n    {/if}\n\n  <tr>\n    <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n  </tr>\n  {if $totalAmount}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Fee{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$totalAmount|crmMoney:$currency}\n    </td>\n  </tr>\n  {/if}\n  {if $totalPaid}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Paid{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$totalPaid|crmMoney:$currency}\n    </td>\n  </tr>\n  {/if}\n  {if $amountOwed}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Balance Owed{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$amountOwed|crmMoney:$currency}\n    </td> {* This will be zero after final payment. *}\n  </tr>\n  {/if}\n  </table>\n\n  </td>\n  </tr>\n    <tr>\n      <td>\n  <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if !empty($billingName) || !empty($address)}\n          <tr>\n            <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n        {if !empty($billingName)}{$billingName}{/if}<br />\n        {if !empty($address)}{$address|nl2br}{/if}\n            </td>\n          </tr>\n    {/if}\n    {if !empty($credit_card_number)}\n          <tr>\n            <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n            </td>\n          </tr>\n    {/if}\n    {if $component eq \'event\'}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Event Information and Location{/ts}\n      </th>\n    </tr>\n    <tr>\n      <td colspan=\"2\" {$valueStyle}>\n         {$event.event_title}<br />\n        {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n    </tr>\n\n    {if !empty($event.participant_role)}\n    <tr>\n      <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n      </td>\n      <td {$valueStyle}>\n        {$event.participant_role}\n      </td>\n    </tr>\n    {/if}\n\n    {if !empty($isShowLocation)}\n    <tr>\n      <td colspan=\"2\" {$valueStyle}>\n        {$location.address.1.display|nl2br}\n      </td>\n    </tr>\n    {/if}\n\n    {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n    <tr>\n      <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n      </td>\n    </tr>\n    {foreach from=$location.phone item=phone}\n    {if $phone.phone}\n          <tr>\n            <td {$labelStyle}>\n        {if $phone.phone_type}\n        {$phone.phone_type_display}\n        {else}\n        {ts}Phone{/ts}\n        {/if}\n            </td>\n            <td {$valueStyle}>\n        {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}\n            </td>\n          </tr>\n    {/if}\n    {/foreach}\n    {foreach from=$location.email item=eventEmail}\n    {if $eventEmail.email}\n          <tr>\n            <td {$labelStyle}>\n        {ts}Email{/ts}\n            </td>\n            <td {$valueStyle}>\n        {$eventEmail.email}\n            </td>\n          </tr>\n    {/if}\n    {/foreach}\n    {/if} {*phone block close*}\n    {/if}\n  </table>\n      </td>\n    </tr>\n\n    </table>\n\n </body>\n</html>\n',1,827,'payment_or_refund_notification',1,0,0,NULL),
- (28,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle}style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle}style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if $isRefund}\n        <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n      {else}\n        <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n        {if $paymentsComplete}\n          <p>{ts}Thank you for completing this contribution.{/ts}</p>\n        {/if}\n      {/if}\n    </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if $isRefund}\n      <tr>\n        <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Refund Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$refundAmount|crmMoney:$currency}\n        </td>\n      </tr>\n    {else}\n      <tr>\n        <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Payment Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$paymentAmount|crmMoney:$currency}\n        </td>\n      </tr>\n    {/if}\n    {if $receive_date}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction Date{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$receive_date|crmDate}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($trxn_id)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$trxn_id}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($paidBy)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Paid By{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$paidBy}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($checkNumber)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$checkNumber}\n        </td>\n      </tr>\n    {/if}\n\n  <tr>\n    <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n  </tr>\n  {if $totalAmount}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Fee{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$totalAmount|crmMoney:$currency}\n    </td>\n  </tr>\n  {/if}\n  {if $totalPaid}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Paid{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$totalPaid|crmMoney:$currency}\n    </td>\n  </tr>\n  {/if}\n  {if $amountOwed}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Balance Owed{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$amountOwed|crmMoney:$currency}\n    </td> {* This will be zero after final payment. *}\n  </tr>\n  {/if}\n  </table>\n\n  </td>\n  </tr>\n    <tr>\n      <td>\n  <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if !empty($billingName) || !empty($address)}\n          <tr>\n            <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n        {if !empty($billingName)}{$billingName}{/if}<br />\n        {if !empty($address)}{$address|nl2br}{/if}\n            </td>\n          </tr>\n    {/if}\n    {if !empty($credit_card_number)}\n          <tr>\n            <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n            </td>\n          </tr>\n    {/if}\n    {if $component eq \'event\'}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Event Information and Location{/ts}\n      </th>\n    </tr>\n    <tr>\n      <td colspan=\"2\" {$valueStyle}>\n         {$event.event_title}<br />\n        {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n    </tr>\n\n    {if !empty($event.participant_role)}\n    <tr>\n      <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n      </td>\n      <td {$valueStyle}>\n        {$event.participant_role}\n      </td>\n    </tr>\n    {/if}\n\n    {if !empty($isShowLocation)}\n    <tr>\n      <td colspan=\"2\" {$valueStyle}>\n        {$location.address.1.display|nl2br}\n      </td>\n    </tr>\n    {/if}\n\n    {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n    <tr>\n      <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n      </td>\n    </tr>\n    {foreach from=$location.phone item=phone}\n    {if $phone.phone}\n          <tr>\n            <td {$labelStyle}>\n        {if $phone.phone_type}\n        {$phone.phone_type_display}\n        {else}\n        {ts}Phone{/ts}\n        {/if}\n            </td>\n            <td {$valueStyle}>\n        {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}\n            </td>\n          </tr>\n    {/if}\n    {/foreach}\n    {foreach from=$location.email item=eventEmail}\n    {if $eventEmail.email}\n          <tr>\n            <td {$labelStyle}>\n        {ts}Email{/ts}\n            </td>\n            <td {$valueStyle}>\n        {$eventEmail.email}\n            </td>\n          </tr>\n    {/if}\n    {/foreach}\n    {/if} {*phone block close*}\n    {/if}\n  </table>\n      </td>\n    </tr>\n\n    </table>\n\n </body>\n</html>\n',1,827,'payment_or_refund_notification',0,1,0,NULL),
- (29,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n     <p>{$event.confirm_email_text}</p>\n    {/if}\n\n    {if !empty($isOnWaitlist)}\n      <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n      <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n    {elseif !empty($isRequireApproval)}\n      <p>{ts}Your registration has been submitted.{/ts}</p>\n      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n    {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n     <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {event.title}<br />\n       {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n      </td>\n     </tr>\n\n     {if \"{participant.role_id:label}\" neq \'Attendee\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n       </td>\n       <td {$valueStyle}>\n         {participant.role_id:label}\n       </td>\n      </tr>\n     {/if}\n\n     {if {event.is_show_location|boolean}}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n         {event.location}\n       </td>\n      </tr>\n     {/if}\n\n     {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n       <tr>\n         <td colspan=\"2\" {$labelStyle}>\n           {ts}Event Contacts:{/ts}\n         </td>\n       </tr>\n\n       {if {event.loc_block_id.phone_id.phone|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n               {event.loc_block_id.phone_id.phone_type_id:label}\n             {else}\n               {ts}Phone{/ts}\n             {/if}\n           </td>\n         <td {$valueStyle}>\n          {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n         </td>\n        </tr>\n       {/if}\n       {if {event.loc_block_id.phone_2_id.phone|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n               {event.loc_block_id.phone_2_id.phone_type_id:label}\n             {else}\n               {ts}Phone{/ts}\n             {/if}\n           </td>\n           <td {$valueStyle}>\n             {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n           </td>\n         </tr>\n       {/if}\n\n       {if {event.loc_block_id.email_id.email|boolean}}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n           {event.loc_block_id.email_id.email}\n         </td>\n        </tr>\n       {/if}\n\n       {if {event.loc_block_id.email_2_id.email|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {ts}Email{/ts}\n           </td>\n           <td {$valueStyle}>\n               {event.loc_block_id.email_2_id.email}\n           </td>\n         </tr>\n       {/if}\n     {/if}\n\n     {if {event.is_public|boolean}}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n         <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n      </tr>\n     {/if}\n\n     {if {contact.email_primary.email|boolean}}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n         {contact.email_primary.email}\n       </td>\n      </tr>\n     {/if}\n\n\n     {if {event.is_monetary|boolean}}\n      <tr>\n        <th {$headerStyle}>\n            {event.fee_label}\n        </th>\n      </tr>\n        {if $isShowLineItems}\n          {foreach from=$participants key=index item=currentParticipant}\n            {if $isPrimary || {participant.id} === $currentParticipant.id}\n              {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n                <tr>\n                  <td colspan=\"2\" {$labelStyle}>\n                    {$currentParticipant.contact.display_name}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td colspan=\"2\" {$valueStyle}>\n                  <table>\n                    <tr>\n                      <th>{ts}Item{/ts}</th>\n                      <th>{ts}Qty{/ts}</th>\n                      <th>{ts}Each{/ts}</th>\n                      {if $isShowTax && {contribution.tax_amount|boolean}}\n                        <th>{ts}Subtotal{/ts}</th>\n                        <th>{ts}Tax Rate{/ts}</th>\n                        <th>{ts}Tax Amount{/ts}</th>\n                      {/if}\n                      <th>{ts}Total{/ts}</th>\n                        {if $isShowParticipantCount}\n                          <th>{ts}Total Participants{/ts}</th>\n                        {/if}\n                    </tr>\n                    {foreach from=$currentParticipant.line_items item=line}\n                      <tr>\n                        <td {$tdfirstStyle}>{$line.title}</td>\n                        <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n                        <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                            <td>{$line.line_total|crmMoney:$currency}</td>\n                            {if $line.tax_rate || $line.tax_amount != \"\"}\n                              <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                              <td>{$line.tax_amount|crmMoney:$currency}</td>\n                            {else}\n                              <td></td>\n                              <td></td>\n                            {/if}\n                          {/if}\n                        <td {$tdStyle}>\n                            {$line.line_total_inclusive|crmMoney:$currency}\n                        </td>\n                        {if $isShowParticipantCount}\n                          <td {$tdStyle}>{$line.participant_count}</td>\n                        {/if}\n                      </tr>\n                    {/foreach}\n                    {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n                      <tr {$participantTotalStyle}>\n                        <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n                        <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n                        <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n                        <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n                      </tr>\n                    {/if}\n                  </table>\n                </td>\n              </tr>\n            {/if}\n          {/foreach}\n        {/if}\n        {if !$isShowLineItems}\n          {foreach from=$participants key=index item=currentParticipant}\n            {if $isPrimary || {participant.id} === $currentParticipant.id}\n              {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n                <tr>\n                  <td {$valueStyle}>\n                    {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n                  </td>\n                  <td {$valueStyle}>\n                    {$currentLineItem.line_total|crmMoney:$currency}\n                  </td>\n                </tr>\n              {/foreach}\n            {/if}\n          {/foreach}\n       {/if}\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n                {ts}Amount Before Tax:{/ts}\n            </td>\n            <td {$valueStyle}>\n                {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n            </td>\n          </tr>\n          {if !$isPrimary}\n            {* Use the participant specific tax rate breakdown *}\n            {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n          {/if}\n          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n            <tr>\n              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n              <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n            </tr>\n          {/foreach}\n        {/if}\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Total Tax Amount{/ts}\n            </td>\n            <td {$valueStyle}>\n              {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n            </td>\n          </tr>\n        {/if}\n        {if $isPrimary}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Total Amount{/ts}\n            </td>\n            <td {$valueStyle}>\n              {contribution.total_amount}\n            </td>\n          </tr>\n          {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n            <tr>\n              <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n              <td {$valueStyle}>\n                {contribution.paid_amount|crmMoney}\n              </td>\n            </tr>\n            <tr>\n              <td {$labelStyle}>{ts}Balance{/ts}</td>\n              <td {$valueStyle}>{contribution.balance_amount}</td>\n            </tr>\n          {/if}\n          {if $isShowParticipantCount}\n            <tr>\n              <td {$labelStyle}>{ts}Total Participants{/ts}</td>\n              <td {$valueStyle}>{$line.participant_count}</td>\n            </tr>\n          {/if}\n          {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n            <tr>\n              <td colspan=\"2\" {$labelStyle}>\n                {event.pay_later_receipt}\n              </td>\n            </tr>\n          {/if}\n\n          {if {participant.register_date|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Registration Date{/ts}\n              </td>\n              <td {$valueStyle}>\n                {participant.register_date}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.receive_date|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Transaction Date{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.receive_date}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.financial_type_id|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Financial Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.financial_type_id:label}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.trxn_id|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Transaction #{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.trxn_id}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Paid By{/ts}\n              </td>\n              <td {$valueStyle}>\n                  {contribution.payment_instrument_id:label}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.check_number|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Check Number{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.check_number}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.address_id.display|boolean}}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Billing Name and Address{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                {contribution.address_id.name}<br/>\n                {contribution.address_id.display}\n              </td>\n            </tr>\n          {/if}\n\n          {if !empty($credit_card_type)}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Credit Card Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                {$credit_card_type}<br/>\n                {$credit_card_number}<br/>\n                {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n              </td>\n            </tr>\n          {/if}\n        {/if}\n     {/if} {* End of conditional section for Paid events *}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,828,'event_offline_receipt',1,0,0,NULL),
- (30,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n     <p>{$event.confirm_email_text}</p>\n    {/if}\n\n    {if !empty($isOnWaitlist)}\n      <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n      <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n    {elseif !empty($isRequireApproval)}\n      <p>{ts}Your registration has been submitted.{/ts}</p>\n      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n    {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n     <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {event.title}<br />\n       {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n      </td>\n     </tr>\n\n     {if \"{participant.role_id:label}\" neq \'Attendee\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n       </td>\n       <td {$valueStyle}>\n         {participant.role_id:label}\n       </td>\n      </tr>\n     {/if}\n\n     {if {event.is_show_location|boolean}}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n         {event.location}\n       </td>\n      </tr>\n     {/if}\n\n     {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n       <tr>\n         <td colspan=\"2\" {$labelStyle}>\n           {ts}Event Contacts:{/ts}\n         </td>\n       </tr>\n\n       {if {event.loc_block_id.phone_id.phone|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n               {event.loc_block_id.phone_id.phone_type_id:label}\n             {else}\n               {ts}Phone{/ts}\n             {/if}\n           </td>\n         <td {$valueStyle}>\n          {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n         </td>\n        </tr>\n       {/if}\n       {if {event.loc_block_id.phone_2_id.phone|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n               {event.loc_block_id.phone_2_id.phone_type_id:label}\n             {else}\n               {ts}Phone{/ts}\n             {/if}\n           </td>\n           <td {$valueStyle}>\n             {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n           </td>\n         </tr>\n       {/if}\n\n       {if {event.loc_block_id.email_id.email|boolean}}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n           {event.loc_block_id.email_id.email}\n         </td>\n        </tr>\n       {/if}\n\n       {if {event.loc_block_id.email_2_id.email|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {ts}Email{/ts}\n           </td>\n           <td {$valueStyle}>\n               {event.loc_block_id.email_2_id.email}\n           </td>\n         </tr>\n       {/if}\n     {/if}\n\n     {if {event.is_public|boolean}}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n         <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n      </tr>\n     {/if}\n\n     {if {contact.email_primary.email|boolean}}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n         {contact.email_primary.email}\n       </td>\n      </tr>\n     {/if}\n\n\n     {if {event.is_monetary|boolean}}\n      <tr>\n        <th {$headerStyle}>\n            {event.fee_label}\n        </th>\n      </tr>\n        {if $isShowLineItems}\n          {foreach from=$participants key=index item=currentParticipant}\n            {if $isPrimary || {participant.id} === $currentParticipant.id}\n              {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n                <tr>\n                  <td colspan=\"2\" {$labelStyle}>\n                    {$currentParticipant.contact.display_name}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td colspan=\"2\" {$valueStyle}>\n                  <table>\n                    <tr>\n                      <th>{ts}Item{/ts}</th>\n                      <th>{ts}Qty{/ts}</th>\n                      <th>{ts}Each{/ts}</th>\n                      {if $isShowTax && {contribution.tax_amount|boolean}}\n                        <th>{ts}Subtotal{/ts}</th>\n                        <th>{ts}Tax Rate{/ts}</th>\n                        <th>{ts}Tax Amount{/ts}</th>\n                      {/if}\n                      <th>{ts}Total{/ts}</th>\n                        {if $isShowParticipantCount}\n                          <th>{ts}Total Participants{/ts}</th>\n                        {/if}\n                    </tr>\n                    {foreach from=$currentParticipant.line_items item=line}\n                      <tr>\n                        <td {$tdfirstStyle}>{$line.title}</td>\n                        <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n                        <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                            <td>{$line.line_total|crmMoney:$currency}</td>\n                            {if $line.tax_rate || $line.tax_amount != \"\"}\n                              <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                              <td>{$line.tax_amount|crmMoney:$currency}</td>\n                            {else}\n                              <td></td>\n                              <td></td>\n                            {/if}\n                          {/if}\n                        <td {$tdStyle}>\n                            {$line.line_total_inclusive|crmMoney:$currency}\n                        </td>\n                        {if $isShowParticipantCount}\n                          <td {$tdStyle}>{$line.participant_count}</td>\n                        {/if}\n                      </tr>\n                    {/foreach}\n                    {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n                      <tr {$participantTotalStyle}>\n                        <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n                        <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n                        <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n                        <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n                      </tr>\n                    {/if}\n                  </table>\n                </td>\n              </tr>\n            {/if}\n          {/foreach}\n        {/if}\n        {if !$isShowLineItems}\n          {foreach from=$participants key=index item=currentParticipant}\n            {if $isPrimary || {participant.id} === $currentParticipant.id}\n              {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n                <tr>\n                  <td {$valueStyle}>\n                    {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n                  </td>\n                  <td {$valueStyle}>\n                    {$currentLineItem.line_total|crmMoney:$currency}\n                  </td>\n                </tr>\n              {/foreach}\n            {/if}\n          {/foreach}\n       {/if}\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n                {ts}Amount Before Tax:{/ts}\n            </td>\n            <td {$valueStyle}>\n                {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n            </td>\n          </tr>\n          {if !$isPrimary}\n            {* Use the participant specific tax rate breakdown *}\n            {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n          {/if}\n          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n            <tr>\n              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n              <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n            </tr>\n          {/foreach}\n        {/if}\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Total Tax Amount{/ts}\n            </td>\n            <td {$valueStyle}>\n              {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n            </td>\n          </tr>\n        {/if}\n        {if $isPrimary}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Total Amount{/ts}\n            </td>\n            <td {$valueStyle}>\n              {contribution.total_amount}\n            </td>\n          </tr>\n          {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n            <tr>\n              <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n              <td {$valueStyle}>\n                {contribution.paid_amount|crmMoney}\n              </td>\n            </tr>\n            <tr>\n              <td {$labelStyle}>{ts}Balance{/ts}</td>\n              <td {$valueStyle}>{contribution.balance_amount}</td>\n            </tr>\n          {/if}\n          {if $isShowParticipantCount}\n            <tr>\n              <td {$labelStyle}>{ts}Total Participants{/ts}</td>\n              <td {$valueStyle}>{$line.participant_count}</td>\n            </tr>\n          {/if}\n          {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n            <tr>\n              <td colspan=\"2\" {$labelStyle}>\n                {event.pay_later_receipt}\n              </td>\n            </tr>\n          {/if}\n\n          {if {participant.register_date|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Registration Date{/ts}\n              </td>\n              <td {$valueStyle}>\n                {participant.register_date}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.receive_date|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Transaction Date{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.receive_date}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.financial_type_id|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Financial Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.financial_type_id:label}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.trxn_id|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Transaction #{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.trxn_id}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Paid By{/ts}\n              </td>\n              <td {$valueStyle}>\n                  {contribution.payment_instrument_id:label}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.check_number|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Check Number{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.check_number}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.address_id.display|boolean}}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Billing Name and Address{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                {contribution.address_id.name}<br/>\n                {contribution.address_id.display}\n              </td>\n            </tr>\n          {/if}\n\n          {if !empty($credit_card_type)}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Credit Card Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                {$credit_card_type}<br/>\n                {$credit_card_number}<br/>\n                {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n              </td>\n            </tr>\n          {/if}\n        {/if}\n     {/if} {* End of conditional section for Paid events *}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,828,'event_offline_receipt',0,1,0,NULL),
- (31,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n  {ts}Thank you for your registration.{/ts}\n  {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n  {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n  {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}   {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n      {if $lineItemCount < 1}\n        {assign var=\"lineItemCount\" value=1}\n      {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if {contribution.address_id.display|boolean}}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{contribution.address_id.name}\n{contribution.address_id.display}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n   {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n        <p>{event.confirm_email_text}</p>\n      {else}\n        <p>{ts}Thank you for your registration.{/ts}\n            {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to<strong> %1</strong>.{/ts}\n            {else}\n              {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to<strong>waitlisted</strong>.{/ts}\n              {else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}\n              {/if}\n            {/if}\n        </p>\n      {/if}\n\n      {if !empty($isOnWaitlist)}\n          <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n            {if $isPrimary}\n              <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n            {/if}\n        {elseif !empty($isRequireApproval)}\n          <p>{ts}Your registration has been submitted.{/ts}</p>\n            {if $isPrimary}\n              <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n            {/if}\n        {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n          <p>{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}</p>\n        {/if}\n    </td>\n  </tr>\n  <tr>\n    <td>\n      <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n        <tr>\n          <th {$headerStyle}>\n            {ts}Event Information and Location{/ts}\n          </th>\n        </tr>\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            {event.title}<br/>\n            {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n          </td>\n        </tr>\n\n        {if \"{participant.role_id:label}\" neq \'Attendee\'}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Participant Role{/ts}\n            </td>\n            <td {$valueStyle}>\n              {participant.role_id:label}\n            </td>\n          </tr>\n        {/if}\n\n        {if !empty($isShowLocation)}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {event.location}\n            </td>\n          </tr>\n        {/if}\n\n        {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n          <tr>\n            <td colspan=\"2\" {$labelStyle}>\n              {ts}Event Contacts:{/ts}\n            </td>\n          </tr>\n\n          {if {event.loc_block_id.phone_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.phone_2_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_2_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.email_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                {event.loc_block_id.email_id.email}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.email_2_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                {event.loc_block_id.email_2_id.email}\n              </td>\n            </tr>\n          {/if}\n        {/if}\n\n        {if {event.is_public|boolean}}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n              <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n            </td>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n              <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n            </td>\n          </tr>\n        {/if}\n\n        {if {event.is_share|boolean}}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n              {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n            </td>\n          </tr>\n        {/if}\n        {if !empty($payer.name)}\n          <tr>\n            <th {$headerStyle}>\n              {ts}You were registered by:{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {$payer.name}\n            </td>\n          </tr>\n        {/if}\n        {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n          <tr>\n            <th {$headerStyle}>\n              {event.fee_label}\n            </th>\n          </tr>\n            {if $isShowLineItems}\n              {foreach from=$participants key=index item=currentParticipant}\n                {if $isPrimary || {participant.id} === $currentParticipant.id}\n                  {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n                    <tr>\n                      <td colspan=\"2\" {$labelStyle}>\n                        {$currentParticipant.contact.display_name}\n                      </td>\n                    </tr>\n                  {/if}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Qty{/ts}</th>\n                          <th>{ts}Each{/ts}</th>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <th>{ts}Subtotal{/ts}</th>\n                              <th>{ts}Tax Rate{/ts}</th>\n                              <th>{ts}Tax Amount{/ts}</th>\n                            {/if}\n                          <th>{ts}Total{/ts}</th>\n                          {if !empty($pricesetFieldsCount)}\n                            <th>{ts}Total Participants{/ts}</th>\n                          {/if}\n                        </tr>\n                        {foreach from=$currentParticipant.line_items item=line}\n                          <tr>\n                            <td {$tdfirstStyle}>{$line.title}</td>\n                            <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n                            <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n                            {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <td>{$line.line_total|crmMoney:$currency}</td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                                <td>{$line.tax_amount|crmMoney:$currency}</td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                            {/if}\n                            <td {$tdStyle}>\n                              {$line.line_total_inclusive|crmMoney:$currency}\n                            </td>\n                            {if !empty($pricesetFieldsCount)}\n                              <td {$tdStyle}>{$line.participant_count}</td>\n                            {/if}\n                          </tr>\n                        {/foreach}\n                        {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n                          <tr {$participantTotalStyle}>\n                            <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n                            <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n                            <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n                            <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n                          </tr>\n                        {/if}\n                      </table>\n                    </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            {/if}\n            {if !$isShowLineItems}\n              {foreach from=$participants key=index item=currentParticipant}\n                {if $isPrimary || {participant.id} === $currentParticipant.id}\n                  {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n                  <tr>\n                    <td {$valueStyle}>\n                      {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n                    </td>\n                    <td {$valueStyle}>\n                      {$currentLineItem.line_total|crmMoney:$currency}\n                    </td>\n                  </tr>\n                  {/foreach}\n                {/if}\n              {/foreach}\n            {/if}\n            {if $isShowTax && {contribution.tax_amount|boolean}}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount Before Tax:{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n                </td>\n              </tr>\n              {if !$isPrimary}\n                {* Use the participant specific tax rate breakdown *}\n                {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n              {/if}\n              {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                <tr>\n                  <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n                  <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n                </tr>\n              {/foreach}\n              <tr>\n                <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                    {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n                </td>\n              </tr>\n            {/if}\n            {if $isPrimary}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Total Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n                </td>\n              </tr>\n              {if !empty($pricesetFieldsCount)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Participants{/ts}</td>\n                  <td {$valueStyle}>\n                    {assign var=\"count\" value= 0}\n                    {foreach from=$lineItem item=pcount}\n                      {assign var=\"lineItemCount\" value=0}\n                      {if $pcount neq \'skip\'}\n                        {foreach from=$pcount item=p_count}\n                          {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n                        {/foreach}\n                        {if $lineItemCount < 1}\n                          {assign var=\"lineItemCount\" value=1}\n                        {/if}\n                        {assign var=\"count\" value=$count+$lineItemCount}\n                      {/if}\n                    {/foreach}\n                    {$count}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {participant.register_date|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Registration Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {participant.register_date}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($receive_date)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Transaction Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$receive_date|crmDate}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($financialTypeName)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$financialTypeName}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($trxn_id)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Transaction #{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$trxn_id}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.payment_instrument_id:label}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($checkNumber)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Check Number{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$checkNumber}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {contribution.address_id.display|boolean}}\n                <tr>\n                  <th {$headerStyle}>\n                    {ts}Billing Name and Address{/ts}\n                  </th>\n                </tr>\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    {contribution.address_id.name}<br/>\n                    {contribution.address_id.display}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($credit_card_type)}\n                <tr>\n                  <th {$headerStyle}>\n                    {ts}Credit Card Information{/ts}\n                  </th>\n                </tr>\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    {$credit_card_type}<br/>\n                    {$credit_card_number}<br/>\n                    {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                  </td>\n                </tr>\n              {/if}\n            {/if}\n\n          {/if} {* End of conditional section for Paid events *}\n\n        {if !empty($customPre)}\n          {foreach from=$customPre item=customPr key=i}\n            <tr>\n              <th {$headerStyle}>{$customPre_grouptitle.$i}</th>\n            </tr>\n            {foreach from=$customPr item=customValue key=customName}\n              <tr>\n                <td {$labelStyle}>{$customName}</td>\n                <td {$valueStyle}>{$customValue}</td>\n              </tr>\n            {/foreach}\n          {/foreach}\n        {/if}\n\n        {if !empty($customPost)}\n          {foreach from=$customPost item=customPos key=j}\n            <tr>\n              <th {$headerStyle}>{$customPost_grouptitle.$j}</th>\n            </tr>\n            {foreach from=$customPos item=customValue key=customName}\n              <tr>\n                <td {$labelStyle}>{$customName}</td>\n                <td {$valueStyle}>{$customValue}</td>\n              </tr>\n            {/foreach}\n          {/foreach}\n        {/if}\n\n        {if !empty($customProfile)}\n          {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n            <tr>\n              <th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th>\n            </tr>\n            {foreach from=$eachParticipant item=eachProfile key=pid}\n              <tr>\n                <th {$headerStyle}>{$customProfile.title.$pid}</th>\n              </tr>\n              {foreach from=$eachProfile item=val key=field}\n                <tr>\n                  {foreach from=$val item=v key=f}\n                    <td {$labelStyle}>{$field}</td>\n                    <td {$valueStyle}>{$v}</td>\n                  {/foreach}\n                </tr>\n              {/foreach}\n            {/foreach}\n          {/foreach}\n        {/if}\n\n      </table>\n      {if !empty($event.allow_selfcancelxfer)}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br/>\n            {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n            <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n          </td>\n        </tr>\n      {/if}\n </table>\n\n</body>\n</html>\n',1,829,'event_online_receipt',1,0,0,NULL),
- (32,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n  {ts}Thank you for your registration.{/ts}\n  {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n  {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n  {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}   {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n      {if $lineItemCount < 1}\n        {assign var=\"lineItemCount\" value=1}\n      {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if {contribution.address_id.display|boolean}}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{contribution.address_id.name}\n{contribution.address_id.display}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n   {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n        <p>{event.confirm_email_text}</p>\n      {else}\n        <p>{ts}Thank you for your registration.{/ts}\n            {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to<strong> %1</strong>.{/ts}\n            {else}\n              {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to<strong>waitlisted</strong>.{/ts}\n              {else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}\n              {/if}\n            {/if}\n        </p>\n      {/if}\n\n      {if !empty($isOnWaitlist)}\n          <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n            {if $isPrimary}\n              <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n            {/if}\n        {elseif !empty($isRequireApproval)}\n          <p>{ts}Your registration has been submitted.{/ts}</p>\n            {if $isPrimary}\n              <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n            {/if}\n        {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n          <p>{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}</p>\n        {/if}\n    </td>\n  </tr>\n  <tr>\n    <td>\n      <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n        <tr>\n          <th {$headerStyle}>\n            {ts}Event Information and Location{/ts}\n          </th>\n        </tr>\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            {event.title}<br/>\n            {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n          </td>\n        </tr>\n\n        {if \"{participant.role_id:label}\" neq \'Attendee\'}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Participant Role{/ts}\n            </td>\n            <td {$valueStyle}>\n              {participant.role_id:label}\n            </td>\n          </tr>\n        {/if}\n\n        {if !empty($isShowLocation)}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {event.location}\n            </td>\n          </tr>\n        {/if}\n\n        {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n          <tr>\n            <td colspan=\"2\" {$labelStyle}>\n              {ts}Event Contacts:{/ts}\n            </td>\n          </tr>\n\n          {if {event.loc_block_id.phone_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.phone_2_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_2_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.email_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                {event.loc_block_id.email_id.email}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.email_2_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                {event.loc_block_id.email_2_id.email}\n              </td>\n            </tr>\n          {/if}\n        {/if}\n\n        {if {event.is_public|boolean}}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n              <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n            </td>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n              <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n            </td>\n          </tr>\n        {/if}\n\n        {if {event.is_share|boolean}}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n              {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n            </td>\n          </tr>\n        {/if}\n        {if !empty($payer.name)}\n          <tr>\n            <th {$headerStyle}>\n              {ts}You were registered by:{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {$payer.name}\n            </td>\n          </tr>\n        {/if}\n        {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n          <tr>\n            <th {$headerStyle}>\n              {event.fee_label}\n            </th>\n          </tr>\n            {if $isShowLineItems}\n              {foreach from=$participants key=index item=currentParticipant}\n                {if $isPrimary || {participant.id} === $currentParticipant.id}\n                  {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n                    <tr>\n                      <td colspan=\"2\" {$labelStyle}>\n                        {$currentParticipant.contact.display_name}\n                      </td>\n                    </tr>\n                  {/if}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Qty{/ts}</th>\n                          <th>{ts}Each{/ts}</th>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <th>{ts}Subtotal{/ts}</th>\n                              <th>{ts}Tax Rate{/ts}</th>\n                              <th>{ts}Tax Amount{/ts}</th>\n                            {/if}\n                          <th>{ts}Total{/ts}</th>\n                          {if !empty($pricesetFieldsCount)}\n                            <th>{ts}Total Participants{/ts}</th>\n                          {/if}\n                        </tr>\n                        {foreach from=$currentParticipant.line_items item=line}\n                          <tr>\n                            <td {$tdfirstStyle}>{$line.title}</td>\n                            <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n                            <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n                            {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <td>{$line.line_total|crmMoney:$currency}</td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                                <td>{$line.tax_amount|crmMoney:$currency}</td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                            {/if}\n                            <td {$tdStyle}>\n                              {$line.line_total_inclusive|crmMoney:$currency}\n                            </td>\n                            {if !empty($pricesetFieldsCount)}\n                              <td {$tdStyle}>{$line.participant_count}</td>\n                            {/if}\n                          </tr>\n                        {/foreach}\n                        {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n                          <tr {$participantTotalStyle}>\n                            <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n                            <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n                            <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n                            <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n                          </tr>\n                        {/if}\n                      </table>\n                    </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            {/if}\n            {if !$isShowLineItems}\n              {foreach from=$participants key=index item=currentParticipant}\n                {if $isPrimary || {participant.id} === $currentParticipant.id}\n                  {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n                  <tr>\n                    <td {$valueStyle}>\n                      {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n                    </td>\n                    <td {$valueStyle}>\n                      {$currentLineItem.line_total|crmMoney:$currency}\n                    </td>\n                  </tr>\n                  {/foreach}\n                {/if}\n              {/foreach}\n            {/if}\n            {if $isShowTax && {contribution.tax_amount|boolean}}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount Before Tax:{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n                </td>\n              </tr>\n              {if !$isPrimary}\n                {* Use the participant specific tax rate breakdown *}\n                {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n              {/if}\n              {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                <tr>\n                  <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n                  <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n                </tr>\n              {/foreach}\n              <tr>\n                <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                    {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n                </td>\n              </tr>\n            {/if}\n            {if $isPrimary}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Total Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n                </td>\n              </tr>\n              {if !empty($pricesetFieldsCount)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Participants{/ts}</td>\n                  <td {$valueStyle}>\n                    {assign var=\"count\" value= 0}\n                    {foreach from=$lineItem item=pcount}\n                      {assign var=\"lineItemCount\" value=0}\n                      {if $pcount neq \'skip\'}\n                        {foreach from=$pcount item=p_count}\n                          {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n                        {/foreach}\n                        {if $lineItemCount < 1}\n                          {assign var=\"lineItemCount\" value=1}\n                        {/if}\n                        {assign var=\"count\" value=$count+$lineItemCount}\n                      {/if}\n                    {/foreach}\n                    {$count}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {participant.register_date|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Registration Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {participant.register_date}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($receive_date)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Transaction Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$receive_date|crmDate}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($financialTypeName)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$financialTypeName}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($trxn_id)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Transaction #{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$trxn_id}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.payment_instrument_id:label}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($checkNumber)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Check Number{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$checkNumber}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {contribution.address_id.display|boolean}}\n                <tr>\n                  <th {$headerStyle}>\n                    {ts}Billing Name and Address{/ts}\n                  </th>\n                </tr>\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    {contribution.address_id.name}<br/>\n                    {contribution.address_id.display}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($credit_card_type)}\n                <tr>\n                  <th {$headerStyle}>\n                    {ts}Credit Card Information{/ts}\n                  </th>\n                </tr>\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    {$credit_card_type}<br/>\n                    {$credit_card_number}<br/>\n                    {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                  </td>\n                </tr>\n              {/if}\n            {/if}\n\n          {/if} {* End of conditional section for Paid events *}\n\n        {if !empty($customPre)}\n          {foreach from=$customPre item=customPr key=i}\n            <tr>\n              <th {$headerStyle}>{$customPre_grouptitle.$i}</th>\n            </tr>\n            {foreach from=$customPr item=customValue key=customName}\n              <tr>\n                <td {$labelStyle}>{$customName}</td>\n                <td {$valueStyle}>{$customValue}</td>\n              </tr>\n            {/foreach}\n          {/foreach}\n        {/if}\n\n        {if !empty($customPost)}\n          {foreach from=$customPost item=customPos key=j}\n            <tr>\n              <th {$headerStyle}>{$customPost_grouptitle.$j}</th>\n            </tr>\n            {foreach from=$customPos item=customValue key=customName}\n              <tr>\n                <td {$labelStyle}>{$customName}</td>\n                <td {$valueStyle}>{$customValue}</td>\n              </tr>\n            {/foreach}\n          {/foreach}\n        {/if}\n\n        {if !empty($customProfile)}\n          {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n            <tr>\n              <th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th>\n            </tr>\n            {foreach from=$eachParticipant item=eachProfile key=pid}\n              <tr>\n                <th {$headerStyle}>{$customProfile.title.$pid}</th>\n              </tr>\n              {foreach from=$eachProfile item=val key=field}\n                <tr>\n                  {foreach from=$val item=v key=f}\n                    <td {$labelStyle}>{$field}</td>\n                    <td {$valueStyle}>{$v}</td>\n                  {/foreach}\n                </tr>\n              {/foreach}\n            {/foreach}\n          {/foreach}\n        {/if}\n\n      </table>\n      {if !empty($event.allow_selfcancelxfer)}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br/>\n            {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n            <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n          </td>\n        </tr>\n      {/if}\n </table>\n\n</body>\n</html>\n',1,829,'event_online_receipt',0,1,0,NULL),
+ (27,'Additional Payment Receipt or Refund Notification','{if {financial_trxn.total_amount|raw} < 0}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if {event.title|boolean}} - {event.title}{/if} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle}style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle}style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if {financial_trxn.total_amount|raw} < 0}\n        <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n      {else}\n        <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n        {if !{contribution.balance_amount|boolean}}\n          <p>{ts}Thank you for completing this contribution.{/ts}</p>\n        {/if}\n      {/if}\n    </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      {if {financial_trxn.total_amount|raw} < 0}\n      <tr>\n        <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Refund Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {financial_trxn.total_amount}\n        </td>\n      </tr>\n    {else}\n      <tr>\n        <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Payment Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {financial_trxn.total_amount}\n        </td>\n      </tr>\n    {/if}\n    {if {financial_trxn.trxn_date|boolean}}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {financial_trxn.trxn_date}\n        </td>\n      </tr>\n    {/if}\n    {if {financial_trxn.trxn_id|boolean}}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n        </td>\n        <td {$valueStyle}>\n          {financial_trxn.trxn_id}\n        </td>\n      </tr>\n    {/if}\n    {if {financial_trxn.payment_instrument_id|boolean}}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Paid By{/ts}\n        </td>\n        <td {$valueStyle}>\n          {financial_trxn.payment_instrument_id:label}\n        </td>\n      </tr>\n    {/if}\n    {if {financial_trxn.check_number|boolean}}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n          {financial_trxn.check_number}\n        </td>\n      </tr>\n    {/if}\n\n  <tr>\n    <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n  </tr>\n  {if {contribution.total_amount|boolean}}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Fee{/ts}\n    </td>\n    <td {$valueStyle}>\n      {contribution.total_amount}\n    </td>\n  </tr>\n  {/if}\n  {if {contribution.paid_amount|boolean}}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Paid{/ts}\n    </td>\n    <td {$valueStyle}>\n      {contribution.paid_amount}\n    </td>\n  </tr>\n  {/if}\n  {if {contribution.balance_amount|boolean}}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Balance Owed{/ts}\n    </td>\n    <td {$valueStyle}>\n      {contribution.balance_amount}\n    </td>\n  </tr>\n  {/if}\n  </table>\n\n  </td>\n  </tr>\n    <tr>\n      <td>\n  <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if !empty($billingName) || !empty($address)}\n        <tr>\n          <th {$headerStyle}>\n              {ts}Billing Name and Address{/ts}\n          </th>\n        </tr>\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n        {if !empty($billingName)}{$billingName}{/if}<br />\n        {if !empty($address)}{$address|nl2br}{/if}\n          </td>\n        </tr>\n      {/if}\n    {if {financial_trxn.pan_truncation|boolean}}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Credit Card Information{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {financial_trxn.card_type_id:label}<br />\n          ************{financial_trxn.pan_truncation}<br />\n        </td>\n      </tr>\n    {/if}\n    {if {event.id|boolean}}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Event Information and Location{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {event.event_title}<br />\n          {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n        </td>\n      </tr>\n\n      {if {participant.role_id|boolean}}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Participant Role{/ts}\n        </td>\n        <td {$valueStyle}>\n         {participant.role_id:label}\n        </td>\n      </tr>\n      {/if}\n\n      {if {event.is_show_location|boolean}}\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                  {event.location}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n            <tr>\n              <td colspan=\"2\" {$labelStyle}>\n                  {ts}Event Contacts:{/ts}\n              </td>\n            </tr>\n\n             {if {event.loc_block_id.phone_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n             {if {event.loc_block_id.phone_2_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_2_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n\n              {if {event.loc_block_id.email_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.email_id.email}\n              </td>\n            </tr>\n          {/if}\n\n              {if {event.loc_block_id.email_2_id.email|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                      {ts}Email{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                      {event.loc_block_id.email_2_id.email}\n                  </td>\n                </tr>\n              {/if}\n            {/if}\n\n          {/if}\n        </table>\n      </td>\n    </tr>\n  </table>\n </body>\n</html>\n',1,827,'payment_or_refund_notification',1,0,0,NULL),
+ (28,'Additional Payment Receipt or Refund Notification','{if {financial_trxn.total_amount|raw} < 0}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if {event.title|boolean}} - {event.title}{/if} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle}style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle}style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if {financial_trxn.total_amount|raw} < 0}\n        <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n      {else}\n        <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n        {if !{contribution.balance_amount|boolean}}\n          <p>{ts}Thank you for completing this contribution.{/ts}</p>\n        {/if}\n      {/if}\n    </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      {if {financial_trxn.total_amount|raw} < 0}\n      <tr>\n        <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Refund Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {financial_trxn.total_amount}\n        </td>\n      </tr>\n    {else}\n      <tr>\n        <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Payment Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {financial_trxn.total_amount}\n        </td>\n      </tr>\n    {/if}\n    {if {financial_trxn.trxn_date|boolean}}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {financial_trxn.trxn_date}\n        </td>\n      </tr>\n    {/if}\n    {if {financial_trxn.trxn_id|boolean}}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n        </td>\n        <td {$valueStyle}>\n          {financial_trxn.trxn_id}\n        </td>\n      </tr>\n    {/if}\n    {if {financial_trxn.payment_instrument_id|boolean}}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Paid By{/ts}\n        </td>\n        <td {$valueStyle}>\n          {financial_trxn.payment_instrument_id:label}\n        </td>\n      </tr>\n    {/if}\n    {if {financial_trxn.check_number|boolean}}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n          {financial_trxn.check_number}\n        </td>\n      </tr>\n    {/if}\n\n  <tr>\n    <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n  </tr>\n  {if {contribution.total_amount|boolean}}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Fee{/ts}\n    </td>\n    <td {$valueStyle}>\n      {contribution.total_amount}\n    </td>\n  </tr>\n  {/if}\n  {if {contribution.paid_amount|boolean}}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Paid{/ts}\n    </td>\n    <td {$valueStyle}>\n      {contribution.paid_amount}\n    </td>\n  </tr>\n  {/if}\n  {if {contribution.balance_amount|boolean}}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Balance Owed{/ts}\n    </td>\n    <td {$valueStyle}>\n      {contribution.balance_amount}\n    </td>\n  </tr>\n  {/if}\n  </table>\n\n  </td>\n  </tr>\n    <tr>\n      <td>\n  <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if !empty($billingName) || !empty($address)}\n        <tr>\n          <th {$headerStyle}>\n              {ts}Billing Name and Address{/ts}\n          </th>\n        </tr>\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n        {if !empty($billingName)}{$billingName}{/if}<br />\n        {if !empty($address)}{$address|nl2br}{/if}\n          </td>\n        </tr>\n      {/if}\n    {if {financial_trxn.pan_truncation|boolean}}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Credit Card Information{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {financial_trxn.card_type_id:label}<br />\n          ************{financial_trxn.pan_truncation}<br />\n        </td>\n      </tr>\n    {/if}\n    {if {event.id|boolean}}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Event Information and Location{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {event.event_title}<br />\n          {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n        </td>\n      </tr>\n\n      {if {participant.role_id|boolean}}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Participant Role{/ts}\n        </td>\n        <td {$valueStyle}>\n         {participant.role_id:label}\n        </td>\n      </tr>\n      {/if}\n\n      {if {event.is_show_location|boolean}}\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                  {event.location}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n            <tr>\n              <td colspan=\"2\" {$labelStyle}>\n                  {ts}Event Contacts:{/ts}\n              </td>\n            </tr>\n\n             {if {event.loc_block_id.phone_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n             {if {event.loc_block_id.phone_2_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_2_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n\n              {if {event.loc_block_id.email_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.email_id.email}\n              </td>\n            </tr>\n          {/if}\n\n              {if {event.loc_block_id.email_2_id.email|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                      {ts}Email{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                      {event.loc_block_id.email_2_id.email}\n                  </td>\n                </tr>\n              {/if}\n            {/if}\n\n          {/if}\n        </table>\n      </td>\n    </tr>\n  </table>\n </body>\n</html>\n',1,827,'payment_or_refund_notification',0,1,0,NULL),
+ (29,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n    {if $userText}\n     <p>{$userText}</p>\n    {/if}\n\n    {if !empty($isOnWaitlist)}\n      <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n      <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n    {elseif !empty($isRequireApproval)}\n      <p>{ts}Your registration has been submitted.{/ts}</p>\n      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n    {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n     <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {event.title}<br />\n       {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n      </td>\n     </tr>\n\n     {if \"{participant.role_id:label}\" neq \'Attendee\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n       </td>\n       <td {$valueStyle}>\n         {participant.role_id:label}\n       </td>\n      </tr>\n     {/if}\n\n     {if {event.is_show_location|boolean}}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n         {event.location}\n       </td>\n      </tr>\n     {/if}\n\n     {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n       <tr>\n         <td colspan=\"2\" {$labelStyle}>\n           {ts}Event Contacts:{/ts}\n         </td>\n       </tr>\n\n       {if {event.loc_block_id.phone_id.phone|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n               {event.loc_block_id.phone_id.phone_type_id:label}\n             {else}\n               {ts}Phone{/ts}\n             {/if}\n           </td>\n         <td {$valueStyle}>\n          {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n         </td>\n        </tr>\n       {/if}\n       {if {event.loc_block_id.phone_2_id.phone|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n               {event.loc_block_id.phone_2_id.phone_type_id:label}\n             {else}\n               {ts}Phone{/ts}\n             {/if}\n           </td>\n           <td {$valueStyle}>\n             {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n           </td>\n         </tr>\n       {/if}\n\n       {if {event.loc_block_id.email_id.email|boolean}}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n           {event.loc_block_id.email_id.email}\n         </td>\n        </tr>\n       {/if}\n\n       {if {event.loc_block_id.email_2_id.email|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {ts}Email{/ts}\n           </td>\n           <td {$valueStyle}>\n               {event.loc_block_id.email_2_id.email}\n           </td>\n         </tr>\n       {/if}\n     {/if}\n\n     {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n         <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n      </tr>\n     {/if}\n\n     {if {contact.email_primary.email|boolean}}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n         {contact.email_primary.email}\n       </td>\n      </tr>\n     {/if}\n\n\n     {if {event.is_monetary|boolean}}\n      <tr>\n        <th {$headerStyle}>\n            {event.fee_label}\n        </th>\n      </tr>\n        {if $isShowLineItems}\n          {foreach from=$participants key=index item=currentParticipant}\n            {if $isPrimary || {participant.id} === $currentParticipant.id}\n              {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n                <tr>\n                  <td colspan=\"2\" {$labelStyle}>\n                    {$currentParticipant.contact.display_name}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td colspan=\"2\" {$valueStyle}>\n                  <table>\n                    <tr>\n                      <th>{ts}Item{/ts}</th>\n                      <th>{ts}Qty{/ts}</th>\n                      <th>{ts}Each{/ts}</th>\n                      {if $isShowTax && {contribution.tax_amount|boolean}}\n                        <th>{ts}Subtotal{/ts}</th>\n                        <th>{ts}Tax Rate{/ts}</th>\n                        <th>{ts}Tax Amount{/ts}</th>\n                      {/if}\n                      <th>{ts}Total{/ts}</th>\n                        {if $isShowParticipantCount}\n                          <th>{ts}Total Participants{/ts}</th>\n                        {/if}\n                    </tr>\n                    {foreach from=$currentParticipant.line_items item=line}\n                      <tr>\n                        <td {$tdfirstStyle}>{$line.title}</td>\n                        <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n                        <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                            <td>{$line.line_total|crmMoney:$currency}</td>\n                            {if $line.tax_rate || $line.tax_amount != \"\"}\n                              <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                              <td>{$line.tax_amount|crmMoney:$currency}</td>\n                            {else}\n                              <td></td>\n                              <td></td>\n                            {/if}\n                          {/if}\n                        <td {$tdStyle}>\n                            {$line.line_total_inclusive|crmMoney:$currency}\n                        </td>\n                        {if $isShowParticipantCount}\n                          <td {$tdStyle}>{$line.participant_count}</td>\n                        {/if}\n                      </tr>\n                    {/foreach}\n                    {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n                      <tr {$participantTotalStyle}>\n                        <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n                        <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n                        <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n                        <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n                      </tr>\n                    {/if}\n                  </table>\n                </td>\n              </tr>\n            {/if}\n          {/foreach}\n        {/if}\n        {if !$isShowLineItems}\n          {foreach from=$participants key=index item=currentParticipant}\n            {if $isPrimary || {participant.id} === $currentParticipant.id}\n              {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n                <tr>\n                  <td {$valueStyle}>\n                    {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n                  </td>\n                  <td {$valueStyle}>\n                    {$currentLineItem.line_total|crmMoney:$currency}\n                  </td>\n                </tr>\n              {/foreach}\n            {/if}\n          {/foreach}\n       {/if}\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n                {ts}Amount Before Tax:{/ts}\n            </td>\n            <td {$valueStyle}>\n                {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n            </td>\n          </tr>\n          {if !$isPrimary}\n            {* Use the participant specific tax rate breakdown *}\n            {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n          {/if}\n          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n            <tr>\n              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n              <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n            </tr>\n          {/foreach}\n        {/if}\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Total Tax Amount{/ts}\n            </td>\n            <td {$valueStyle}>\n              {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n            </td>\n          </tr>\n        {/if}\n        {if $isPrimary}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Total Amount{/ts}\n            </td>\n            <td {$valueStyle}>\n              {contribution.total_amount}\n            </td>\n          </tr>\n          {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n            <tr>\n              <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n              <td {$valueStyle}>\n                {contribution.paid_amount|crmMoney}\n              </td>\n            </tr>\n            <tr>\n              <td {$labelStyle}>{ts}Balance{/ts}</td>\n              <td {$valueStyle}>{contribution.balance_amount}</td>\n            </tr>\n          {/if}\n          {if $isShowParticipantCount}\n            <tr>\n              <td {$labelStyle}>{ts}Total Participants{/ts}</td>\n              <td {$valueStyle}>{$line.participant_count}</td>\n            </tr>\n          {/if}\n          {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n            <tr>\n              <td colspan=\"2\" {$labelStyle}>\n                {event.pay_later_receipt}\n              </td>\n            </tr>\n          {/if}\n\n          {if {participant.register_date|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Registration Date{/ts}\n              </td>\n              <td {$valueStyle}>\n                {participant.register_date}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.receive_date|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Transaction Date{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.receive_date}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.financial_type_id|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Financial Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.financial_type_id:label}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.trxn_id|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Transaction #{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.trxn_id}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Paid By{/ts}\n              </td>\n              <td {$valueStyle}>\n                  {contribution.payment_instrument_id:label}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.check_number|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Check Number{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.check_number}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.address_id.display|boolean}}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Billing Name and Address{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                {contribution.address_id.name}<br/>\n                {contribution.address_id.display}\n              </td>\n            </tr>\n          {/if}\n\n          {if !empty($credit_card_type)}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Credit Card Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                {$credit_card_type}<br/>\n                {$credit_card_number}<br/>\n                {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n              </td>\n            </tr>\n          {/if}\n        {/if}\n     {/if} {* End of conditional section for Paid events *}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,828,'event_offline_receipt',1,0,0,NULL),
+ (30,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n    {if $userText}\n     <p>{$userText}</p>\n    {/if}\n\n    {if !empty($isOnWaitlist)}\n      <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n      <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n    {elseif !empty($isRequireApproval)}\n      <p>{ts}Your registration has been submitted.{/ts}</p>\n      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n    {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n     <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {event.title}<br />\n       {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n      </td>\n     </tr>\n\n     {if \"{participant.role_id:label}\" neq \'Attendee\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n       </td>\n       <td {$valueStyle}>\n         {participant.role_id:label}\n       </td>\n      </tr>\n     {/if}\n\n     {if {event.is_show_location|boolean}}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n         {event.location}\n       </td>\n      </tr>\n     {/if}\n\n     {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n       <tr>\n         <td colspan=\"2\" {$labelStyle}>\n           {ts}Event Contacts:{/ts}\n         </td>\n       </tr>\n\n       {if {event.loc_block_id.phone_id.phone|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n               {event.loc_block_id.phone_id.phone_type_id:label}\n             {else}\n               {ts}Phone{/ts}\n             {/if}\n           </td>\n         <td {$valueStyle}>\n          {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n         </td>\n        </tr>\n       {/if}\n       {if {event.loc_block_id.phone_2_id.phone|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n               {event.loc_block_id.phone_2_id.phone_type_id:label}\n             {else}\n               {ts}Phone{/ts}\n             {/if}\n           </td>\n           <td {$valueStyle}>\n             {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n           </td>\n         </tr>\n       {/if}\n\n       {if {event.loc_block_id.email_id.email|boolean}}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n           {event.loc_block_id.email_id.email}\n         </td>\n        </tr>\n       {/if}\n\n       {if {event.loc_block_id.email_2_id.email|boolean}}\n         <tr>\n           <td {$labelStyle}>\n             {ts}Email{/ts}\n           </td>\n           <td {$valueStyle}>\n               {event.loc_block_id.email_2_id.email}\n           </td>\n         </tr>\n       {/if}\n     {/if}\n\n     {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n         <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n      </tr>\n     {/if}\n\n     {if {contact.email_primary.email|boolean}}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n         {contact.email_primary.email}\n       </td>\n      </tr>\n     {/if}\n\n\n     {if {event.is_monetary|boolean}}\n      <tr>\n        <th {$headerStyle}>\n            {event.fee_label}\n        </th>\n      </tr>\n        {if $isShowLineItems}\n          {foreach from=$participants key=index item=currentParticipant}\n            {if $isPrimary || {participant.id} === $currentParticipant.id}\n              {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n                <tr>\n                  <td colspan=\"2\" {$labelStyle}>\n                    {$currentParticipant.contact.display_name}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td colspan=\"2\" {$valueStyle}>\n                  <table>\n                    <tr>\n                      <th>{ts}Item{/ts}</th>\n                      <th>{ts}Qty{/ts}</th>\n                      <th>{ts}Each{/ts}</th>\n                      {if $isShowTax && {contribution.tax_amount|boolean}}\n                        <th>{ts}Subtotal{/ts}</th>\n                        <th>{ts}Tax Rate{/ts}</th>\n                        <th>{ts}Tax Amount{/ts}</th>\n                      {/if}\n                      <th>{ts}Total{/ts}</th>\n                        {if $isShowParticipantCount}\n                          <th>{ts}Total Participants{/ts}</th>\n                        {/if}\n                    </tr>\n                    {foreach from=$currentParticipant.line_items item=line}\n                      <tr>\n                        <td {$tdfirstStyle}>{$line.title}</td>\n                        <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n                        <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                            <td>{$line.line_total|crmMoney:$currency}</td>\n                            {if $line.tax_rate || $line.tax_amount != \"\"}\n                              <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                              <td>{$line.tax_amount|crmMoney:$currency}</td>\n                            {else}\n                              <td></td>\n                              <td></td>\n                            {/if}\n                          {/if}\n                        <td {$tdStyle}>\n                            {$line.line_total_inclusive|crmMoney:$currency}\n                        </td>\n                        {if $isShowParticipantCount}\n                          <td {$tdStyle}>{$line.participant_count}</td>\n                        {/if}\n                      </tr>\n                    {/foreach}\n                    {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n                      <tr {$participantTotalStyle}>\n                        <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n                        <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n                        <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n                        <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n                      </tr>\n                    {/if}\n                  </table>\n                </td>\n              </tr>\n            {/if}\n          {/foreach}\n        {/if}\n        {if !$isShowLineItems}\n          {foreach from=$participants key=index item=currentParticipant}\n            {if $isPrimary || {participant.id} === $currentParticipant.id}\n              {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n                <tr>\n                  <td {$valueStyle}>\n                    {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n                  </td>\n                  <td {$valueStyle}>\n                    {$currentLineItem.line_total|crmMoney:$currency}\n                  </td>\n                </tr>\n              {/foreach}\n            {/if}\n          {/foreach}\n       {/if}\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n                {ts}Amount Before Tax:{/ts}\n            </td>\n            <td {$valueStyle}>\n                {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n            </td>\n          </tr>\n          {if !$isPrimary}\n            {* Use the participant specific tax rate breakdown *}\n            {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n          {/if}\n          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n            <tr>\n              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n              <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n            </tr>\n          {/foreach}\n        {/if}\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Total Tax Amount{/ts}\n            </td>\n            <td {$valueStyle}>\n              {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n            </td>\n          </tr>\n        {/if}\n        {if $isPrimary}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Total Amount{/ts}\n            </td>\n            <td {$valueStyle}>\n              {contribution.total_amount}\n            </td>\n          </tr>\n          {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n            <tr>\n              <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n              <td {$valueStyle}>\n                {contribution.paid_amount|crmMoney}\n              </td>\n            </tr>\n            <tr>\n              <td {$labelStyle}>{ts}Balance{/ts}</td>\n              <td {$valueStyle}>{contribution.balance_amount}</td>\n            </tr>\n          {/if}\n          {if $isShowParticipantCount}\n            <tr>\n              <td {$labelStyle}>{ts}Total Participants{/ts}</td>\n              <td {$valueStyle}>{$line.participant_count}</td>\n            </tr>\n          {/if}\n          {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n            <tr>\n              <td colspan=\"2\" {$labelStyle}>\n                {event.pay_later_receipt}\n              </td>\n            </tr>\n          {/if}\n\n          {if {participant.register_date|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Registration Date{/ts}\n              </td>\n              <td {$valueStyle}>\n                {participant.register_date}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.receive_date|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Transaction Date{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.receive_date}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.financial_type_id|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Financial Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.financial_type_id:label}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.trxn_id|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Transaction #{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.trxn_id}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Paid By{/ts}\n              </td>\n              <td {$valueStyle}>\n                  {contribution.payment_instrument_id:label}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.check_number|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {ts}Check Number{/ts}\n              </td>\n              <td {$valueStyle}>\n                {contribution.check_number}\n              </td>\n            </tr>\n          {/if}\n\n          {if {contribution.address_id.display|boolean}}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Billing Name and Address{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                {contribution.address_id.name}<br/>\n                {contribution.address_id.display}\n              </td>\n            </tr>\n          {/if}\n\n          {if !empty($credit_card_type)}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Credit Card Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td colspan=\"2\" {$valueStyle}>\n                {$credit_card_type}<br/>\n                {$credit_card_number}<br/>\n                {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n              </td>\n            </tr>\n          {/if}\n        {/if}\n     {/if} {* End of conditional section for Paid events *}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,828,'event_offline_receipt',0,1,0,NULL),
+ (31,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n  {ts}Thank you for your registration.{/ts}\n  {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n  {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n  {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}   {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n      {if $lineItemCount < 1}\n        {assign var=\"lineItemCount\" value=1}\n      {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if {contribution.address_id.display|boolean}}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{contribution.address_id.name}\n{contribution.address_id.display}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n   {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n        <p>{event.confirm_email_text}</p>\n      {else}\n        <p>{ts}Thank you for your registration.{/ts}\n            {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to<strong> %1</strong>.{/ts}\n            {else}\n              {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to<strong>waitlisted</strong>.{/ts}\n              {else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}\n              {/if}\n            {/if}\n        </p>\n      {/if}\n\n      {if !empty($isOnWaitlist)}\n          <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n            {if $isPrimary}\n              <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n            {/if}\n        {elseif !empty($isRequireApproval)}\n          <p>{ts}Your registration has been submitted.{/ts}</p>\n            {if $isPrimary}\n              <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n            {/if}\n        {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n          <p>{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}</p>\n        {/if}\n    </td>\n  </tr>\n  <tr>\n    <td>\n      <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n        <tr>\n          <th {$headerStyle}>\n            {ts}Event Information and Location{/ts}\n          </th>\n        </tr>\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            {event.title}<br/>\n            {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n          </td>\n        </tr>\n\n        {if \"{participant.role_id:label}\" neq \'Attendee\'}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Participant Role{/ts}\n            </td>\n            <td {$valueStyle}>\n              {participant.role_id:label}\n            </td>\n          </tr>\n        {/if}\n\n        {if !empty($isShowLocation)}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {event.location}\n            </td>\n          </tr>\n        {/if}\n\n        {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n          <tr>\n            <td colspan=\"2\" {$labelStyle}>\n              {ts}Event Contacts:{/ts}\n            </td>\n          </tr>\n\n          {if {event.loc_block_id.phone_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.phone_2_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_2_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.email_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                {event.loc_block_id.email_id.email}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.email_2_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                {event.loc_block_id.email_2_id.email}\n              </td>\n            </tr>\n          {/if}\n        {/if}\n\n        {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n              <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n            </td>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n              <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n            </td>\n          </tr>\n        {/if}\n\n        {if {event.is_share|boolean}}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n              {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n            </td>\n          </tr>\n        {/if}\n        {if !empty($payer.name)}\n          <tr>\n            <th {$headerStyle}>\n              {ts}You were registered by:{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {$payer.name}\n            </td>\n          </tr>\n        {/if}\n        {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n          <tr>\n            <th {$headerStyle}>\n              {event.fee_label}\n            </th>\n          </tr>\n            {if $isShowLineItems}\n              {foreach from=$participants key=index item=currentParticipant}\n                {if $isPrimary || {participant.id} === $currentParticipant.id}\n                  {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n                    <tr>\n                      <td colspan=\"2\" {$labelStyle}>\n                        {$currentParticipant.contact.display_name}\n                      </td>\n                    </tr>\n                  {/if}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Qty{/ts}</th>\n                          <th>{ts}Each{/ts}</th>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <th>{ts}Subtotal{/ts}</th>\n                              <th>{ts}Tax Rate{/ts}</th>\n                              <th>{ts}Tax Amount{/ts}</th>\n                            {/if}\n                          <th>{ts}Total{/ts}</th>\n                          {if !empty($pricesetFieldsCount)}\n                            <th>{ts}Total Participants{/ts}</th>\n                          {/if}\n                        </tr>\n                        {foreach from=$currentParticipant.line_items item=line}\n                          <tr>\n                            <td {$tdfirstStyle}>{$line.title}</td>\n                            <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n                            <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n                            {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <td>{$line.line_total|crmMoney:$currency}</td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                                <td>{$line.tax_amount|crmMoney:$currency}</td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                            {/if}\n                            <td {$tdStyle}>\n                              {$line.line_total_inclusive|crmMoney:$currency}\n                            </td>\n                            {if !empty($pricesetFieldsCount)}\n                              <td {$tdStyle}>{$line.participant_count}</td>\n                            {/if}\n                          </tr>\n                        {/foreach}\n                        {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n                          <tr {$participantTotalStyle}>\n                            <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n                            <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n                            <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n                            <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n                          </tr>\n                        {/if}\n                      </table>\n                    </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            {/if}\n            {if !$isShowLineItems}\n              {foreach from=$participants key=index item=currentParticipant}\n                {if $isPrimary || {participant.id} === $currentParticipant.id}\n                  {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n                  <tr>\n                    <td {$valueStyle}>\n                      {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n                    </td>\n                    <td {$valueStyle}>\n                      {$currentLineItem.line_total|crmMoney:$currency}\n                    </td>\n                  </tr>\n                  {/foreach}\n                {/if}\n              {/foreach}\n            {/if}\n            {if $isShowTax && {contribution.tax_amount|boolean}}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount Before Tax:{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n                </td>\n              </tr>\n              {if !$isPrimary}\n                {* Use the participant specific tax rate breakdown *}\n                {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n              {/if}\n              {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                <tr>\n                  <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n                  <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n                </tr>\n              {/foreach}\n              <tr>\n                <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                    {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n                </td>\n              </tr>\n            {/if}\n            {if $isPrimary}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Total Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n                </td>\n              </tr>\n              {if !empty($pricesetFieldsCount)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Participants{/ts}</td>\n                  <td {$valueStyle}>\n                    {assign var=\"count\" value= 0}\n                    {foreach from=$lineItem item=pcount}\n                      {assign var=\"lineItemCount\" value=0}\n                      {if $pcount neq \'skip\'}\n                        {foreach from=$pcount item=p_count}\n                          {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n                        {/foreach}\n                        {if $lineItemCount < 1}\n                          {assign var=\"lineItemCount\" value=1}\n                        {/if}\n                        {assign var=\"count\" value=$count+$lineItemCount}\n                      {/if}\n                    {/foreach}\n                    {$count}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {participant.register_date|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Registration Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {participant.register_date}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($receive_date)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Transaction Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$receive_date|crmDate}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($financialTypeName)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$financialTypeName}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($trxn_id)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Transaction #{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$trxn_id}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.payment_instrument_id:label}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($checkNumber)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Check Number{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$checkNumber}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {contribution.address_id.display|boolean}}\n                <tr>\n                  <th {$headerStyle}>\n                    {ts}Billing Name and Address{/ts}\n                  </th>\n                </tr>\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    {contribution.address_id.name}<br/>\n                    {contribution.address_id.display}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($credit_card_type)}\n                <tr>\n                  <th {$headerStyle}>\n                    {ts}Credit Card Information{/ts}\n                  </th>\n                </tr>\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    {$credit_card_type}<br/>\n                    {$credit_card_number}<br/>\n                    {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                  </td>\n                </tr>\n              {/if}\n            {/if}\n\n          {/if} {* End of conditional section for Paid events *}\n\n        {if !empty($customPre)}\n          {foreach from=$customPre item=customPr key=i}\n            <tr>\n              <th {$headerStyle}>{$customPre_grouptitle.$i}</th>\n            </tr>\n            {foreach from=$customPr item=customValue key=customName}\n              <tr>\n                <td {$labelStyle}>{$customName}</td>\n                <td {$valueStyle}>{$customValue}</td>\n              </tr>\n            {/foreach}\n          {/foreach}\n        {/if}\n\n        {if !empty($customPost)}\n          {foreach from=$customPost item=customPos key=j}\n            <tr>\n              <th {$headerStyle}>{$customPost_grouptitle.$j}</th>\n            </tr>\n            {foreach from=$customPos item=customValue key=customName}\n              <tr>\n                <td {$labelStyle}>{$customName}</td>\n                <td {$valueStyle}>{$customValue}</td>\n              </tr>\n            {/foreach}\n          {/foreach}\n        {/if}\n\n        {if !empty($customProfile)}\n          {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n            <tr>\n              <th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th>\n            </tr>\n            {foreach from=$eachParticipant item=eachProfile key=pid}\n              <tr>\n                <th {$headerStyle}>{$customProfile.title.$pid}</th>\n              </tr>\n              {foreach from=$eachProfile item=val key=field}\n                <tr>\n                  {foreach from=$val item=v key=f}\n                    <td {$labelStyle}>{$field}</td>\n                    <td {$valueStyle}>{$v}</td>\n                  {/foreach}\n                </tr>\n              {/foreach}\n            {/foreach}\n          {/foreach}\n        {/if}\n\n      </table>\n      {if !empty($event.allow_selfcancelxfer)}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br/>\n            {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n            <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n          </td>\n        </tr>\n      {/if}\n </table>\n\n</body>\n</html>\n',1,829,'event_online_receipt',1,0,0,NULL),
+ (32,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n  {ts}Thank you for your registration.{/ts}\n  {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n  {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n  {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}   {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n      {if $lineItemCount < 1}\n        {assign var=\"lineItemCount\" value=1}\n      {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if {contribution.address_id.display|boolean}}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{contribution.address_id.name}\n{contribution.address_id.display}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n   {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n        <p>{event.confirm_email_text}</p>\n      {else}\n        <p>{ts}Thank you for your registration.{/ts}\n            {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to<strong> %1</strong>.{/ts}\n            {else}\n              {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to<strong>waitlisted</strong>.{/ts}\n              {else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}\n              {/if}\n            {/if}\n        </p>\n      {/if}\n\n      {if !empty($isOnWaitlist)}\n          <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n            {if $isPrimary}\n              <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n            {/if}\n        {elseif !empty($isRequireApproval)}\n          <p>{ts}Your registration has been submitted.{/ts}</p>\n            {if $isPrimary}\n              <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n            {/if}\n        {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n          <p>{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}</p>\n        {/if}\n    </td>\n  </tr>\n  <tr>\n    <td>\n      <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n        <tr>\n          <th {$headerStyle}>\n            {ts}Event Information and Location{/ts}\n          </th>\n        </tr>\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            {event.title}<br/>\n            {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n          </td>\n        </tr>\n\n        {if \"{participant.role_id:label}\" neq \'Attendee\'}\n          <tr>\n            <td {$labelStyle}>\n              {ts}Participant Role{/ts}\n            </td>\n            <td {$valueStyle}>\n              {participant.role_id:label}\n            </td>\n          </tr>\n        {/if}\n\n        {if !empty($isShowLocation)}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {event.location}\n            </td>\n          </tr>\n        {/if}\n\n        {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n          <tr>\n            <td colspan=\"2\" {$labelStyle}>\n              {ts}Event Contacts:{/ts}\n            </td>\n          </tr>\n\n          {if {event.loc_block_id.phone_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.phone_2_id.phone|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n                      {event.loc_block_id.phone_2_id.phone_type_id:label}\n                  {else}\n                      {ts}Phone{/ts}\n                  {/if}\n              </td>\n              <td {$valueStyle}>\n                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.email_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                {event.loc_block_id.email_id.email}\n              </td>\n            </tr>\n          {/if}\n          {if {event.loc_block_id.email_2_id.email|boolean}}\n            <tr>\n              <td {$labelStyle}>\n                {ts}Email{/ts}\n              </td>\n              <td {$valueStyle}>\n                {event.loc_block_id.email_2_id.email}\n              </td>\n            </tr>\n          {/if}\n        {/if}\n\n        {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n              <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n            </td>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n              <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n            </td>\n          </tr>\n        {/if}\n\n        {if {event.is_share|boolean}}\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n              {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n            </td>\n          </tr>\n        {/if}\n        {if !empty($payer.name)}\n          <tr>\n            <th {$headerStyle}>\n              {ts}You were registered by:{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n              {$payer.name}\n            </td>\n          </tr>\n        {/if}\n        {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n          <tr>\n            <th {$headerStyle}>\n              {event.fee_label}\n            </th>\n          </tr>\n            {if $isShowLineItems}\n              {foreach from=$participants key=index item=currentParticipant}\n                {if $isPrimary || {participant.id} === $currentParticipant.id}\n                  {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n                    <tr>\n                      <td colspan=\"2\" {$labelStyle}>\n                        {$currentParticipant.contact.display_name}\n                      </td>\n                    </tr>\n                  {/if}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Qty{/ts}</th>\n                          <th>{ts}Each{/ts}</th>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <th>{ts}Subtotal{/ts}</th>\n                              <th>{ts}Tax Rate{/ts}</th>\n                              <th>{ts}Tax Amount{/ts}</th>\n                            {/if}\n                          <th>{ts}Total{/ts}</th>\n                          {if !empty($pricesetFieldsCount)}\n                            <th>{ts}Total Participants{/ts}</th>\n                          {/if}\n                        </tr>\n                        {foreach from=$currentParticipant.line_items item=line}\n                          <tr>\n                            <td {$tdfirstStyle}>{$line.title}</td>\n                            <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n                            <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n                            {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <td>{$line.line_total|crmMoney:$currency}</td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                                <td>{$line.tax_amount|crmMoney:$currency}</td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                            {/if}\n                            <td {$tdStyle}>\n                              {$line.line_total_inclusive|crmMoney:$currency}\n                            </td>\n                            {if !empty($pricesetFieldsCount)}\n                              <td {$tdStyle}>{$line.participant_count}</td>\n                            {/if}\n                          </tr>\n                        {/foreach}\n                        {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n                          <tr {$participantTotalStyle}>\n                            <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n                            <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n                            <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n                            <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n                          </tr>\n                        {/if}\n                      </table>\n                    </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            {/if}\n            {if !$isShowLineItems}\n              {foreach from=$participants key=index item=currentParticipant}\n                {if $isPrimary || {participant.id} === $currentParticipant.id}\n                  {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n                  <tr>\n                    <td {$valueStyle}>\n                      {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n                    </td>\n                    <td {$valueStyle}>\n                      {$currentLineItem.line_total|crmMoney:$currency}\n                    </td>\n                  </tr>\n                  {/foreach}\n                {/if}\n              {/foreach}\n            {/if}\n            {if $isShowTax && {contribution.tax_amount|boolean}}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount Before Tax:{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n                </td>\n              </tr>\n              {if !$isPrimary}\n                {* Use the participant specific tax rate breakdown *}\n                {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n              {/if}\n              {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                <tr>\n                  <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n                  <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n                </tr>\n              {/foreach}\n              <tr>\n                <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                    {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n                </td>\n              </tr>\n            {/if}\n            {if $isPrimary}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Total Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n                </td>\n              </tr>\n              {if !empty($pricesetFieldsCount)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Participants{/ts}</td>\n                  <td {$valueStyle}>\n                    {assign var=\"count\" value= 0}\n                    {foreach from=$lineItem item=pcount}\n                      {assign var=\"lineItemCount\" value=0}\n                      {if $pcount neq \'skip\'}\n                        {foreach from=$pcount item=p_count}\n                          {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n                        {/foreach}\n                        {if $lineItemCount < 1}\n                          {assign var=\"lineItemCount\" value=1}\n                        {/if}\n                        {assign var=\"count\" value=$count+$lineItemCount}\n                      {/if}\n                    {/foreach}\n                    {$count}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {participant.register_date|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Registration Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {participant.register_date}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($receive_date)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Transaction Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$receive_date|crmDate}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($financialTypeName)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$financialTypeName}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($trxn_id)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Transaction #{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$trxn_id}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.payment_instrument_id:label}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($checkNumber)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Check Number{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$checkNumber}\n                  </td>\n                </tr>\n              {/if}\n\n              {if {contribution.address_id.display|boolean}}\n                <tr>\n                  <th {$headerStyle}>\n                    {ts}Billing Name and Address{/ts}\n                  </th>\n                </tr>\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    {contribution.address_id.name}<br/>\n                    {contribution.address_id.display}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($credit_card_type)}\n                <tr>\n                  <th {$headerStyle}>\n                    {ts}Credit Card Information{/ts}\n                  </th>\n                </tr>\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    {$credit_card_type}<br/>\n                    {$credit_card_number}<br/>\n                    {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                  </td>\n                </tr>\n              {/if}\n            {/if}\n\n          {/if} {* End of conditional section for Paid events *}\n\n        {if !empty($customPre)}\n          {foreach from=$customPre item=customPr key=i}\n            <tr>\n              <th {$headerStyle}>{$customPre_grouptitle.$i}</th>\n            </tr>\n            {foreach from=$customPr item=customValue key=customName}\n              <tr>\n                <td {$labelStyle}>{$customName}</td>\n                <td {$valueStyle}>{$customValue}</td>\n              </tr>\n            {/foreach}\n          {/foreach}\n        {/if}\n\n        {if !empty($customPost)}\n          {foreach from=$customPost item=customPos key=j}\n            <tr>\n              <th {$headerStyle}>{$customPost_grouptitle.$j}</th>\n            </tr>\n            {foreach from=$customPos item=customValue key=customName}\n              <tr>\n                <td {$labelStyle}>{$customName}</td>\n                <td {$valueStyle}>{$customValue}</td>\n              </tr>\n            {/foreach}\n          {/foreach}\n        {/if}\n\n        {if !empty($customProfile)}\n          {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n            <tr>\n              <th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th>\n            </tr>\n            {foreach from=$eachParticipant item=eachProfile key=pid}\n              <tr>\n                <th {$headerStyle}>{$customProfile.title.$pid}</th>\n              </tr>\n              {foreach from=$eachProfile item=val key=field}\n                <tr>\n                  {foreach from=$val item=v key=f}\n                    <td {$labelStyle}>{$field}</td>\n                    <td {$valueStyle}>{$v}</td>\n                  {/foreach}\n                </tr>\n              {/foreach}\n            {/foreach}\n          {/foreach}\n        {/if}\n\n      </table>\n      {if !empty($event.allow_selfcancelxfer)}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br/>\n            {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n            <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n          </td>\n        </tr>\n      {/if}\n </table>\n\n</body>\n</html>\n',1,829,'event_online_receipt',0,1,0,NULL),
  (33,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n  This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n  This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n  {$pay_later_receipt}\n{/if}\n\n  Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n  {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n  Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n  {foreach from=$line_item.participants item=participant}\n    {$participant.display_name}\n  {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n  Waitlisted:\n    {foreach from=$line_item.waiting_participants item=participant}\n      {$participant.display_name}\n    {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n  {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n  If you have questions about the status of your registration or purchase please feel free to contact us.\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n    <title></title>\n  </head>\n  <body>\n    {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n    {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n    {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if $is_pay_later}\n      <p>\n        This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n      </p>\n    {else}\n      <p>\n        This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n      </p>\n    {/if}\n\n    {if $is_pay_later}\n      <p>{$pay_later_receipt}</p>\n    {/if}\n\n    <p>Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n  Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:</p>\n\n{if $billing_name}\n  <table class=\"billing-info\">\n      <tr>\n    <th style=\"text-align: left;\">\n      {ts}Billing Name and Address{/ts}\n    </th>\n      </tr>\n      <tr>\n    <td>\n      {$billing_name}<br />\n      {$billing_street_address}<br />\n      {$billing_city}, {$billing_state} {$billing_postal_code}<br/>\n      <br/>\n      {$email}\n    </td>\n    </tr>\n    </table>\n{/if}\n{if $credit_card_type}\n  <p>&nbsp;</p>\n  <table class=\"billing-info\">\n      <tr>\n    <th style=\"text-align: left;\">\n      {ts}Credit Card Information{/ts}\n    </th>\n      </tr>\n      <tr>\n    <td>\n      {$credit_card_type}<br />\n      {$credit_card_number}<br />\n      {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n    </td>\n    </tr>\n    </table>\n{/if}\n{if !empty($source)}\n    <p>&nbsp;</p>\n    {$source}\n{/if}\n    <p>&nbsp;</p>\n    <table width=\"700\">\n      <thead>\n    <tr>\n{if $line_items}\n      <th style=\"text-align: left;\">\n      Event\n      </th>\n      <th style=\"text-align: left;\">\n      Participants\n      </th>\n{/if}\n      <th style=\"text-align: left;\">\n      Price\n      </th>\n      <th style=\"text-align: left;\">\n      Total\n      </th>\n    </tr>\n    </thead>\n      <tbody>\n  {foreach from=$line_items item=line_item}\n  <tr>\n    <td style=\"width: 220px\">\n      {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})<br />\n      {if $line_item.event->is_show_location}\n        {$line_item.location.address.1.display|nl2br}\n      {/if}{*End of isShowLocation condition*}<br /><br />\n      {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n    </td>\n    <td style=\"width: 180px\">\n    {$line_item.num_participants}\n      {if $line_item.num_participants > 0}\n      <div class=\"participants\" style=\"padding-left: 10px;\">\n        {foreach from=$line_item.participants item=participant}\n        {$participant.display_name}<br />\n        {/foreach}\n      </div>\n      {/if}\n      {if $line_item.num_waiting_participants > 0}\n      Waitlisted:<br/>\n      <div class=\"participants\" style=\"padding-left: 10px;\">\n        {foreach from=$line_item.waiting_participants item=participant}\n        {$participant.display_name}<br />\n        {/foreach}\n      </div>\n      {/if}\n    </td>\n    <td style=\"width: 100px\">\n      {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n    <td style=\"width: 100px\">\n      &nbsp;{$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n  </tr>\n  {/foreach}\n      </tbody>\n      <tfoot>\n  {if $discounts}\n  <tr>\n    <td>\n    </td>\n    <td>\n    </td>\n    <td>\n      Subtotal:\n    </td>\n    <td>\n      &nbsp;{$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n  </tr>\n  {foreach from=$discounts key=myId item=i}\n  <tr>\n    <td>\n      {$i.title}\n    </td>\n    <td>\n    </td>\n    <td>\n    </td>\n    <td>\n      -{$i.amount}\n    </td>\n  </tr>\n  {/foreach}\n  {/if}\n  <tr>\n{if $line_items}\n    <td>\n    </td>\n    <td>\n    </td>\n{/if}\n    <td>\n      <strong>Total:</strong>\n    </td>\n    <td>\n      <strong>&nbsp;{$total|crmMoney:$currency|string_format:\"%10s\"}</strong>\n    </td>\n  </tr>\n      </tfoot>\n    </table>\n\n    If you have questions about the status of your registration or purchase please feel free to contact us.\n  </body>\n</html>\n',1,830,'event_registration_receipt',1,0,0,NULL),
  (34,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n  This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n  This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n  {$pay_later_receipt}\n{/if}\n\n  Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n  {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n  Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n  {foreach from=$line_item.participants item=participant}\n    {$participant.display_name}\n  {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n  Waitlisted:\n    {foreach from=$line_item.waiting_participants item=participant}\n      {$participant.display_name}\n    {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n  {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n  If you have questions about the status of your registration or purchase please feel free to contact us.\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n    <title></title>\n  </head>\n  <body>\n    {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n    {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n    {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if $is_pay_later}\n      <p>\n        This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n      </p>\n    {else}\n      <p>\n        This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n      </p>\n    {/if}\n\n    {if $is_pay_later}\n      <p>{$pay_later_receipt}</p>\n    {/if}\n\n    <p>Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n  Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:</p>\n\n{if $billing_name}\n  <table class=\"billing-info\">\n      <tr>\n    <th style=\"text-align: left;\">\n      {ts}Billing Name and Address{/ts}\n    </th>\n      </tr>\n      <tr>\n    <td>\n      {$billing_name}<br />\n      {$billing_street_address}<br />\n      {$billing_city}, {$billing_state} {$billing_postal_code}<br/>\n      <br/>\n      {$email}\n    </td>\n    </tr>\n    </table>\n{/if}\n{if $credit_card_type}\n  <p>&nbsp;</p>\n  <table class=\"billing-info\">\n      <tr>\n    <th style=\"text-align: left;\">\n      {ts}Credit Card Information{/ts}\n    </th>\n      </tr>\n      <tr>\n    <td>\n      {$credit_card_type}<br />\n      {$credit_card_number}<br />\n      {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n    </td>\n    </tr>\n    </table>\n{/if}\n{if !empty($source)}\n    <p>&nbsp;</p>\n    {$source}\n{/if}\n    <p>&nbsp;</p>\n    <table width=\"700\">\n      <thead>\n    <tr>\n{if $line_items}\n      <th style=\"text-align: left;\">\n      Event\n      </th>\n      <th style=\"text-align: left;\">\n      Participants\n      </th>\n{/if}\n      <th style=\"text-align: left;\">\n      Price\n      </th>\n      <th style=\"text-align: left;\">\n      Total\n      </th>\n    </tr>\n    </thead>\n      <tbody>\n  {foreach from=$line_items item=line_item}\n  <tr>\n    <td style=\"width: 220px\">\n      {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})<br />\n      {if $line_item.event->is_show_location}\n        {$line_item.location.address.1.display|nl2br}\n      {/if}{*End of isShowLocation condition*}<br /><br />\n      {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n    </td>\n    <td style=\"width: 180px\">\n    {$line_item.num_participants}\n      {if $line_item.num_participants > 0}\n      <div class=\"participants\" style=\"padding-left: 10px;\">\n        {foreach from=$line_item.participants item=participant}\n        {$participant.display_name}<br />\n        {/foreach}\n      </div>\n      {/if}\n      {if $line_item.num_waiting_participants > 0}\n      Waitlisted:<br/>\n      <div class=\"participants\" style=\"padding-left: 10px;\">\n        {foreach from=$line_item.waiting_participants item=participant}\n        {$participant.display_name}<br />\n        {/foreach}\n      </div>\n      {/if}\n    </td>\n    <td style=\"width: 100px\">\n      {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n    <td style=\"width: 100px\">\n      &nbsp;{$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n  </tr>\n  {/foreach}\n      </tbody>\n      <tfoot>\n  {if $discounts}\n  <tr>\n    <td>\n    </td>\n    <td>\n    </td>\n    <td>\n      Subtotal:\n    </td>\n    <td>\n      &nbsp;{$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n  </tr>\n  {foreach from=$discounts key=myId item=i}\n  <tr>\n    <td>\n      {$i.title}\n    </td>\n    <td>\n    </td>\n    <td>\n    </td>\n    <td>\n      -{$i.amount}\n    </td>\n  </tr>\n  {/foreach}\n  {/if}\n  <tr>\n{if $line_items}\n    <td>\n    </td>\n    <td>\n    </td>\n{/if}\n    <td>\n      <strong>Total:</strong>\n    </td>\n    <td>\n      <strong>&nbsp;{$total|crmMoney:$currency|string_format:\"%10s\"}</strong>\n    </td>\n  </tr>\n      </tfoot>\n    </table>\n\n    If you have questions about the status of your registration or purchase please feel free to contact us.\n  </body>\n</html>\n',1,830,'event_registration_receipt',0,1,0,NULL),
  (35,'Events - Registration Cancellation Notice','{ts 1=$event.event_title}Event Registration Cancelled for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your Event Registration has been cancelled.{/ts}\n\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {participant.role_id:label}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if !empty(\'{participant.register_date}\')}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts}Your Event Registration has been cancelled.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Participant Role{/ts}:\n      </td>\n      <td {$valueStyle}>\n       {participant.role_id:label}\n      </td>\n     </tr>\n\n     {if $isShowLocation}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$event.location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$event.location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$event.location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if \'{contact.email}\'}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {contact.email}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty(\'{participant.register_date}\')}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Registration Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {participant.register_date}\n       </td>\n      </tr>\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n  <tr>\n   <td>\n    <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,831,'participant_cancelled',1,0,0,NULL),
@@ -5363,10 +5381,10 @@ INSERT INTO `civicrm_msg_template` (`id`, `msg_title`, `msg_subject`, `msg_text`
  (42,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Participant Role{/ts}:\n      </td>\n      <td {$valueStyle}>\n       {$participant.role}\n      </td>\n     </tr>\n\n     {if $isShowLocation}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$event.location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$event.location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$event.location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if \'{contact.email}\'}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {contact.email}\n       </td>\n      </tr>\n     {/if}\n\n     {if $register_date}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Registration Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$participant.register_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n  <tr>\n   <td>\n    <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,834,'participant_transferred',0,1,0,NULL),
  (43,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    <p>{$senderMessage}</p>\n    {if $generalLink}\n     <p><a href=\"{$generalLink}\">{ts}More information{/ts}</a></p>\n    {/if}\n    {if $contribute}\n     <p><a href=\"{$pageURL}\">{ts}Make a contribution{/ts}</a></p>\n    {/if}\n    {if $event}\n     <p><a href=\"{$pageURL}\">{ts}Find out more about this event{/ts}</a></p>\n    {/if}\n   </td>\n  </tr>\n </table>\n\n</body>\n</html>\n',1,835,'friend',1,0,0,NULL),
  (44,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    <p>{$senderMessage}</p>\n    {if $generalLink}\n     <p><a href=\"{$generalLink}\">{ts}More information{/ts}</a></p>\n    {/if}\n    {if $contribute}\n     <p><a href=\"{$pageURL}\">{ts}Make a contribution{/ts}</a></p>\n    {/if}\n    {if $event}\n     <p><a href=\"{$pageURL}\">{ts}Find out more about this event{/ts}</a></p>\n    {/if}\n   </td>\n  </tr>\n </table>\n\n</body>\n</html>\n',1,835,'friend',0,1,0,NULL),
- (45,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary)}\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n        \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-membership_receipt\"\n         style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n    <!-- BEGIN HEADER -->\n    <!-- You can add table row(s) here with logo or other header elements -->\n    <!-- END HEADER -->\n\n    <!-- BEGIN CONTENT -->\n\n    <tr>\n      <td>\n        {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n        {if $receipt_text}\n          <p>{$receipt_text|htmlize}</p>\n        {else}\n          <p>{ts}Thank you for this contribution.{/ts}</p>\n        {/if}\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n          {if !$isShowLineItems}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td {$labelStyle}>\n                {ts}Membership Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {membership.membership_type_id:name}\n              </td>\n            </tr>\n          {/if}\n          {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n            {if !$isShowLineItems}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Start Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {membership.start_date|crmDate:\"Full\"}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Expiration Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                    {membership.end_date|crmDate:\"Full\"}\n                </td>\n              </tr>\n            {/if}\n            {if {contribution.total_amount|boolean}}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Membership Fee{/ts}\n                </th>\n              </tr>\n              {if {contribution.financial_type_id|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.financial_type_id:label}\n                  </td>\n                </tr>\n              {/if}\n\n              {if $isShowLineItems}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Fee{/ts}</th>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                            <th>{ts}SubTotal{/ts}</th>\n                            <th>{ts}Tax Rate{/ts}</th>\n                            <th>{ts}Tax Amount{/ts}</th>\n                            <th>{ts}Total{/ts}</th>\n                          {/if}\n                          <th>{ts}Membership Start Date{/ts}</th>\n                          <th>{ts}Membership Expiration Date{/ts}</th>\n                        </tr>\n                        {foreach from=$lineItems item=line}\n                          <tr>\n                            <td>{$line.title}</td>\n                            <td>\n                              {$line.line_total|crmMoney}\n                            </td>\n                            {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <td>\n                                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n                              </td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>\n                                  {$line.tax_rate|string_format:\"%.2f\"}%\n                                </td>\n                                <td>\n                                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                                </td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                              <td>\n                                {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n                              </td>\n                            {/if}\n                            <td>\n                              {$line.membership.start_date|crmDate:\"Full\"}\n                            </td>\n                            <td>\n                              {$line.membership.end_date|crmDate:\"Full\"}\n                            </td>\n                          </tr>\n                        {/foreach}\n                      </table>\n                    </td>\n                  </tr>\n\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <tr>\n                    <td {$labelStyle}>\n                        {ts}Amount Before Tax:{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                        {contribution.tax_exclusive_amount}\n                    </td>\n                  </tr>\n                  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                    <tr>\n                      <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>\n                      <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n                    </tr>\n                  {/foreach}\n                {/if}\n              {/if}\n              {if {contribution.tax_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.tax_amount}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {contribution.total_amount}\n                </td>\n              </tr>\n              {if {contribution.receive_date|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Contribution Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.receive_date}\n                  </td>\n                </tr>\n              {/if}\n              {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                      {contribution.payment_instrument_id:label}\n                  </td>\n                </tr>\n                {if {contribution.check_number|boolean}}\n                  <tr>\n                    <td {$labelStyle}>\n                      {ts}Check Number{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                      {contribution.check_number}\n                    </td>\n                  </tr>\n                {/if}\n              {/if}\n            {/if}\n          {/if}\n        </table>\n      </td>\n    </tr>\n\n    {if !empty($isPrimary)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n            {if !empty($billingName)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Billing Name and Address{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {$billingName}<br/>\n                  {$address}\n                </td>\n              </tr>\n            {/if}\n\n            {if !empty($credit_card_type)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Credit Card Information{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$valueStyle}>\n                  {$credit_card_type}<br/>\n                  {$credit_card_number}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Expires{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                </td>\n              </tr>\n            {/if}\n\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($customValues)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Options{/ts}\n              </th>\n            </tr>\n            {foreach from=$customValues item=value key=customName}\n              <tr>\n                <td {$labelStyle}>\n                  {$customName}\n                </td>\n                <td {$valueStyle}>\n                  {$value}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n  </table>\n\n</body>\n</html>\n',1,836,'membership_offline_receipt',1,0,0,NULL),
- (46,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary)}\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n        \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-membership_receipt\"\n         style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n    <!-- BEGIN HEADER -->\n    <!-- You can add table row(s) here with logo or other header elements -->\n    <!-- END HEADER -->\n\n    <!-- BEGIN CONTENT -->\n\n    <tr>\n      <td>\n        {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n        {if $receipt_text}\n          <p>{$receipt_text|htmlize}</p>\n        {else}\n          <p>{ts}Thank you for this contribution.{/ts}</p>\n        {/if}\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n          {if !$isShowLineItems}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td {$labelStyle}>\n                {ts}Membership Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {membership.membership_type_id:name}\n              </td>\n            </tr>\n          {/if}\n          {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n            {if !$isShowLineItems}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Start Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {membership.start_date|crmDate:\"Full\"}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Expiration Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                    {membership.end_date|crmDate:\"Full\"}\n                </td>\n              </tr>\n            {/if}\n            {if {contribution.total_amount|boolean}}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Membership Fee{/ts}\n                </th>\n              </tr>\n              {if {contribution.financial_type_id|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.financial_type_id:label}\n                  </td>\n                </tr>\n              {/if}\n\n              {if $isShowLineItems}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Fee{/ts}</th>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                            <th>{ts}SubTotal{/ts}</th>\n                            <th>{ts}Tax Rate{/ts}</th>\n                            <th>{ts}Tax Amount{/ts}</th>\n                            <th>{ts}Total{/ts}</th>\n                          {/if}\n                          <th>{ts}Membership Start Date{/ts}</th>\n                          <th>{ts}Membership Expiration Date{/ts}</th>\n                        </tr>\n                        {foreach from=$lineItems item=line}\n                          <tr>\n                            <td>{$line.title}</td>\n                            <td>\n                              {$line.line_total|crmMoney}\n                            </td>\n                            {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <td>\n                                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n                              </td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>\n                                  {$line.tax_rate|string_format:\"%.2f\"}%\n                                </td>\n                                <td>\n                                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                                </td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                              <td>\n                                {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n                              </td>\n                            {/if}\n                            <td>\n                              {$line.membership.start_date|crmDate:\"Full\"}\n                            </td>\n                            <td>\n                              {$line.membership.end_date|crmDate:\"Full\"}\n                            </td>\n                          </tr>\n                        {/foreach}\n                      </table>\n                    </td>\n                  </tr>\n\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <tr>\n                    <td {$labelStyle}>\n                        {ts}Amount Before Tax:{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                        {contribution.tax_exclusive_amount}\n                    </td>\n                  </tr>\n                  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                    <tr>\n                      <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>\n                      <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n                    </tr>\n                  {/foreach}\n                {/if}\n              {/if}\n              {if {contribution.tax_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.tax_amount}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {contribution.total_amount}\n                </td>\n              </tr>\n              {if {contribution.receive_date|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Contribution Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.receive_date}\n                  </td>\n                </tr>\n              {/if}\n              {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                      {contribution.payment_instrument_id:label}\n                  </td>\n                </tr>\n                {if {contribution.check_number|boolean}}\n                  <tr>\n                    <td {$labelStyle}>\n                      {ts}Check Number{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                      {contribution.check_number}\n                    </td>\n                  </tr>\n                {/if}\n              {/if}\n            {/if}\n          {/if}\n        </table>\n      </td>\n    </tr>\n\n    {if !empty($isPrimary)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n            {if !empty($billingName)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Billing Name and Address{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {$billingName}<br/>\n                  {$address}\n                </td>\n              </tr>\n            {/if}\n\n            {if !empty($credit_card_type)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Credit Card Information{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$valueStyle}>\n                  {$credit_card_type}<br/>\n                  {$credit_card_number}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Expires{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                </td>\n              </tr>\n            {/if}\n\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($customValues)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Options{/ts}\n              </th>\n            </tr>\n            {foreach from=$customValues item=value key=customName}\n              <tr>\n                <td {$labelStyle}>\n                  {$customName}\n                </td>\n                <td {$valueStyle}>\n                  {$value}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n  </table>\n\n</body>\n</html>\n',1,836,'membership_offline_receipt',0,1,0,NULL),
- (47,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment}\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n  {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n  {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  </table>\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n     {if $membership_assign && !$useForMember}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Type{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_name}\n       </td>\n      </tr>\n      {if $mem_start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$mem_start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $mem_end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Expiration Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {$mem_end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n\n     {if $amount}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Fee{/ts}\n       </th>\n      </tr>\n\n      {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n       <tr>\n        <td {$labelStyle}>\n         {ts 1=$membership_name}%1 Membership{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$membership_amount|crmMoney}\n        </td>\n       </tr>\n       {if $amount && !$is_separate_payment}\n         <tr>\n          <td {$labelStyle}>\n           {ts}Contribution Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n           {$amount|crmMoney}\n          </td>\n         </tr>\n         <tr>\n           <td {$labelStyle}>\n           {ts}Total{/ts}\n            </td>\n            <td {$valueStyle}>\n            {$amount+$membership_amount|crmMoney}\n           </td>\n         </tr>\n       {/if}\n\n      {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Qty{/ts}</th>\n            <th>{ts}Each{/ts}</th>\n            <th>{ts}Total{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n              {$line.description|truncate:30:\"...\"}\n             </td>\n             <td>\n              {$line.qty}\n             </td>\n             <td>\n              {$line.unit_price|crmMoney}\n             </td>\n             <td>\n              {$line.line_total|crmMoney}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney}\n        </td>\n       </tr>\n\n      {else}\n       {if $useForMember && $lineItem and empty($is_quick_config)}\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Fee{/ts}</th>\n            {if !empty($dataArray)}\n              <th>{ts}SubTotal{/ts}</th>\n              <th>{ts}Tax Rate{/ts}</th>\n              <th>{ts}Tax Amount{/ts}</th>\n              <th>{ts}Total{/ts}</th>\n            {/if}\n      <th>{ts}Membership Start Date{/ts}</th>\n      <th>{ts}Membership Expiration Date{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n             {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n             </td>\n             <td>\n              {$line.line_total|crmMoney}\n             </td>\n             {if !empty($dataArray)}\n              <td>\n               {$line.unit_price*$line.qty|crmMoney}\n              </td>\n              {if ($line.tax_rate || $line.tax_amount != \"\")}\n               <td>\n                {$line.tax_rate|string_format:\"%.2f\"}%\n               </td>\n               <td>\n                {$line.tax_amount|crmMoney}\n               </td>\n              {else}\n               <td></td>\n               <td></td>\n              {/if}\n              <td>\n               {$line.line_total+$line.tax_amount|crmMoney}\n              </td>\n             {/if}\n             <td>\n              {$line.start_date}\n             </td>\n       <td>\n              {$line.end_date}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       {if !empty($dataArray)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Amount Before Tax:{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$amount-$totalTaxAmount|crmMoney}\n         </td>\n        </tr>\n        {foreach from=$dataArray item=value key=priceset}\n         <tr>\n         {if $priceset || $priceset == 0}\n           <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n         {else}\n           <td>&nbsp;{ts}NO{/ts} {$taxTerm}</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n         {/if}\n         </tr>\n        {/foreach}\n       {/if}\n       {/if}\n       {if $totalTaxAmount}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalTaxAmount|crmMoney:$currency}\n         </td>\n        </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n\n     {elseif isset($membership_amount)}\n\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Fee{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts 1=$membership_name}%1 Membership{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_amount|crmMoney}\n       </td>\n      </tr>\n\n\n     {/if}\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($is_monetary) and !empty($trxn_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($membership_trx_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_trx_id}\n       </td>\n      </tr>\n     {/if}\n     {if !empty($is_recur)}\n       <tr>\n        <td colspan=\"2\" {$labelStyle}>\n         {ts}This membership will be renewed automatically.{/ts}\n         {if $cancelSubscriptionUrl}\n           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n         {/if}\n        </td>\n       </tr>\n       {if $updateSubscriptionBillingUrl}\n         <tr>\n          <td colspan=\"2\" {$labelStyle}>\n           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n         </tr>\n       {/if}\n     {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n         <th {$headerStyle}>\n           {ts}Billing Name and Address{/ts}\n         </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$billingName}<br />\n          {$address|nl2br}<br />\n          {$email}\n        </td>\n      </tr>\n    {elseif !empty($email)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Registered Email{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$email}\n        </td>\n      </tr>\n    {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if $is_deductible AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,837,'membership_online_receipt',1,0,0,NULL),
- (48,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment}\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n  {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n  {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  </table>\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n     {if $membership_assign && !$useForMember}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Type{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_name}\n       </td>\n      </tr>\n      {if $mem_start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$mem_start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $mem_end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Expiration Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {$mem_end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n\n     {if $amount}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Fee{/ts}\n       </th>\n      </tr>\n\n      {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n       <tr>\n        <td {$labelStyle}>\n         {ts 1=$membership_name}%1 Membership{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$membership_amount|crmMoney}\n        </td>\n       </tr>\n       {if $amount && !$is_separate_payment}\n         <tr>\n          <td {$labelStyle}>\n           {ts}Contribution Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n           {$amount|crmMoney}\n          </td>\n         </tr>\n         <tr>\n           <td {$labelStyle}>\n           {ts}Total{/ts}\n            </td>\n            <td {$valueStyle}>\n            {$amount+$membership_amount|crmMoney}\n           </td>\n         </tr>\n       {/if}\n\n      {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Qty{/ts}</th>\n            <th>{ts}Each{/ts}</th>\n            <th>{ts}Total{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n              {$line.description|truncate:30:\"...\"}\n             </td>\n             <td>\n              {$line.qty}\n             </td>\n             <td>\n              {$line.unit_price|crmMoney}\n             </td>\n             <td>\n              {$line.line_total|crmMoney}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney}\n        </td>\n       </tr>\n\n      {else}\n       {if $useForMember && $lineItem and empty($is_quick_config)}\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Fee{/ts}</th>\n            {if !empty($dataArray)}\n              <th>{ts}SubTotal{/ts}</th>\n              <th>{ts}Tax Rate{/ts}</th>\n              <th>{ts}Tax Amount{/ts}</th>\n              <th>{ts}Total{/ts}</th>\n            {/if}\n      <th>{ts}Membership Start Date{/ts}</th>\n      <th>{ts}Membership Expiration Date{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n             {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n             </td>\n             <td>\n              {$line.line_total|crmMoney}\n             </td>\n             {if !empty($dataArray)}\n              <td>\n               {$line.unit_price*$line.qty|crmMoney}\n              </td>\n              {if ($line.tax_rate || $line.tax_amount != \"\")}\n               <td>\n                {$line.tax_rate|string_format:\"%.2f\"}%\n               </td>\n               <td>\n                {$line.tax_amount|crmMoney}\n               </td>\n              {else}\n               <td></td>\n               <td></td>\n              {/if}\n              <td>\n               {$line.line_total+$line.tax_amount|crmMoney}\n              </td>\n             {/if}\n             <td>\n              {$line.start_date}\n             </td>\n       <td>\n              {$line.end_date}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       {if !empty($dataArray)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Amount Before Tax:{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$amount-$totalTaxAmount|crmMoney}\n         </td>\n        </tr>\n        {foreach from=$dataArray item=value key=priceset}\n         <tr>\n         {if $priceset || $priceset == 0}\n           <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n         {else}\n           <td>&nbsp;{ts}NO{/ts} {$taxTerm}</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n         {/if}\n         </tr>\n        {/foreach}\n       {/if}\n       {/if}\n       {if $totalTaxAmount}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalTaxAmount|crmMoney:$currency}\n         </td>\n        </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n\n     {elseif isset($membership_amount)}\n\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Fee{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts 1=$membership_name}%1 Membership{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_amount|crmMoney}\n       </td>\n      </tr>\n\n\n     {/if}\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($is_monetary) and !empty($trxn_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($membership_trx_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_trx_id}\n       </td>\n      </tr>\n     {/if}\n     {if !empty($is_recur)}\n       <tr>\n        <td colspan=\"2\" {$labelStyle}>\n         {ts}This membership will be renewed automatically.{/ts}\n         {if $cancelSubscriptionUrl}\n           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n         {/if}\n        </td>\n       </tr>\n       {if $updateSubscriptionBillingUrl}\n         <tr>\n          <td colspan=\"2\" {$labelStyle}>\n           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n         </tr>\n       {/if}\n     {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n         <th {$headerStyle}>\n           {ts}Billing Name and Address{/ts}\n         </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$billingName}<br />\n          {$address|nl2br}<br />\n          {$email}\n        </td>\n      </tr>\n    {elseif !empty($email)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Registered Email{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$email}\n        </td>\n      </tr>\n    {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if $is_deductible AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,837,'membership_online_receipt',0,1,0,NULL),
+ (45,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $userTextPlain}\n{$userTextPlain}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary)}\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n        \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-membership_receipt\"\n         style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n    <!-- BEGIN HEADER -->\n    <!-- You can add table row(s) here with logo or other header elements -->\n    <!-- END HEADER -->\n\n    <!-- BEGIN CONTENT -->\n\n    <tr>\n      <td>\n        {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n        {if $userText}\n          <p>{$userText}</p>\n        {else}\n          <p>{ts}Thank you for this contribution.{/ts}</p>\n        {/if}\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n          {if !$isShowLineItems}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td {$labelStyle}>\n                {ts}Membership Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {membership.membership_type_id:name}\n              </td>\n            </tr>\n          {/if}\n          {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n            {if !$isShowLineItems}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Start Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {membership.start_date|crmDate:\"Full\"}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Expiration Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                    {membership.end_date|crmDate:\"Full\"}\n                </td>\n              </tr>\n            {/if}\n            {if {contribution.total_amount|boolean}}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Membership Fee{/ts}\n                </th>\n              </tr>\n              {if {contribution.financial_type_id|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.financial_type_id:label}\n                  </td>\n                </tr>\n              {/if}\n\n              {if $isShowLineItems}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Fee{/ts}</th>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                            <th>{ts}SubTotal{/ts}</th>\n                            <th>{ts}Tax Rate{/ts}</th>\n                            <th>{ts}Tax Amount{/ts}</th>\n                            <th>{ts}Total{/ts}</th>\n                          {/if}\n                          <th>{ts}Membership Start Date{/ts}</th>\n                          <th>{ts}Membership Expiration Date{/ts}</th>\n                        </tr>\n                        {foreach from=$lineItems item=line}\n                          <tr>\n                            <td>{$line.title}</td>\n                            <td>\n                              {$line.line_total|crmMoney}\n                            </td>\n                            {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <td>\n                                {$line.line_total|crmMoney:\'{contribution.currency}\'}\n                              </td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>\n                                  {$line.tax_rate|string_format:\"%.2f\"}%\n                                </td>\n                                <td>\n                                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                                </td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                              <td>\n                                {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n                              </td>\n                            {/if}\n                            <td>\n                              {$line.membership.start_date|crmDate:\"Full\"}\n                            </td>\n                            <td>\n                              {$line.membership.end_date|crmDate:\"Full\"}\n                            </td>\n                          </tr>\n                        {/foreach}\n                      </table>\n                    </td>\n                  </tr>\n\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <tr>\n                    <td {$labelStyle}>\n                        {ts}Amount Before Tax:{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                        {contribution.tax_exclusive_amount}\n                    </td>\n                  </tr>\n                  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                    <tr>\n                      <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>\n                      <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n                    </tr>\n                  {/foreach}\n                {/if}\n              {/if}\n              {if {contribution.tax_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.tax_amount}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {contribution.total_amount}\n                </td>\n              </tr>\n              {if {contribution.receive_date|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Contribution Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.receive_date}\n                  </td>\n                </tr>\n              {/if}\n              {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                      {contribution.payment_instrument_id:label}\n                  </td>\n                </tr>\n                {if {contribution.check_number|boolean}}\n                  <tr>\n                    <td {$labelStyle}>\n                      {ts}Check Number{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                      {contribution.check_number}\n                    </td>\n                  </tr>\n                {/if}\n              {/if}\n            {/if}\n          {/if}\n        </table>\n      </td>\n    </tr>\n\n    {if !empty($isPrimary)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n            {if !empty($billingName)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Billing Name and Address{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {$billingName}<br/>\n                  {$address}\n                </td>\n              </tr>\n            {/if}\n\n            {if !empty($credit_card_type)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Credit Card Information{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$valueStyle}>\n                  {$credit_card_type}<br/>\n                  {$credit_card_number}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Expires{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                </td>\n              </tr>\n            {/if}\n\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($customValues)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Options{/ts}\n              </th>\n            </tr>\n            {foreach from=$customValues item=value key=customName}\n              <tr>\n                <td {$labelStyle}>\n                  {$customName}\n                </td>\n                <td {$valueStyle}>\n                  {$value}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n  </table>\n\n</body>\n</html>\n',1,836,'membership_offline_receipt',1,0,0,NULL),
+ (46,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $userTextPlain}\n{$userTextPlain}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary)}\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n        \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-membership_receipt\"\n         style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n    <!-- BEGIN HEADER -->\n    <!-- You can add table row(s) here with logo or other header elements -->\n    <!-- END HEADER -->\n\n    <!-- BEGIN CONTENT -->\n\n    <tr>\n      <td>\n        {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n        {if $userText}\n          <p>{$userText}</p>\n        {else}\n          <p>{ts}Thank you for this contribution.{/ts}</p>\n        {/if}\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n          {if !$isShowLineItems}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td {$labelStyle}>\n                {ts}Membership Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {membership.membership_type_id:name}\n              </td>\n            </tr>\n          {/if}\n          {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n            {if !$isShowLineItems}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Start Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {membership.start_date|crmDate:\"Full\"}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Expiration Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                    {membership.end_date|crmDate:\"Full\"}\n                </td>\n              </tr>\n            {/if}\n            {if {contribution.total_amount|boolean}}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Membership Fee{/ts}\n                </th>\n              </tr>\n              {if {contribution.financial_type_id|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.financial_type_id:label}\n                  </td>\n                </tr>\n              {/if}\n\n              {if $isShowLineItems}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Fee{/ts}</th>\n                          {if $isShowTax && {contribution.tax_amount|boolean}}\n                            <th>{ts}SubTotal{/ts}</th>\n                            <th>{ts}Tax Rate{/ts}</th>\n                            <th>{ts}Tax Amount{/ts}</th>\n                            <th>{ts}Total{/ts}</th>\n                          {/if}\n                          <th>{ts}Membership Start Date{/ts}</th>\n                          <th>{ts}Membership Expiration Date{/ts}</th>\n                        </tr>\n                        {foreach from=$lineItems item=line}\n                          <tr>\n                            <td>{$line.title}</td>\n                            <td>\n                              {$line.line_total|crmMoney}\n                            </td>\n                            {if $isShowTax && {contribution.tax_amount|boolean}}\n                              <td>\n                                {$line.line_total|crmMoney:\'{contribution.currency}\'}\n                              </td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>\n                                  {$line.tax_rate|string_format:\"%.2f\"}%\n                                </td>\n                                <td>\n                                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                                </td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                              <td>\n                                {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n                              </td>\n                            {/if}\n                            <td>\n                              {$line.membership.start_date|crmDate:\"Full\"}\n                            </td>\n                            <td>\n                              {$line.membership.end_date|crmDate:\"Full\"}\n                            </td>\n                          </tr>\n                        {/foreach}\n                      </table>\n                    </td>\n                  </tr>\n\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <tr>\n                    <td {$labelStyle}>\n                        {ts}Amount Before Tax:{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                        {contribution.tax_exclusive_amount}\n                    </td>\n                  </tr>\n                  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                    <tr>\n                      <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>\n                      <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n                    </tr>\n                  {/foreach}\n                {/if}\n              {/if}\n              {if {contribution.tax_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.tax_amount}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {contribution.total_amount}\n                </td>\n              </tr>\n              {if {contribution.receive_date|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Contribution Date{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {contribution.receive_date}\n                  </td>\n                </tr>\n              {/if}\n              {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                      {contribution.payment_instrument_id:label}\n                  </td>\n                </tr>\n                {if {contribution.check_number|boolean}}\n                  <tr>\n                    <td {$labelStyle}>\n                      {ts}Check Number{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                      {contribution.check_number}\n                    </td>\n                  </tr>\n                {/if}\n              {/if}\n            {/if}\n          {/if}\n        </table>\n      </td>\n    </tr>\n\n    {if !empty($isPrimary)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n            {if !empty($billingName)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Billing Name and Address{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {$billingName}<br/>\n                  {$address}\n                </td>\n              </tr>\n            {/if}\n\n            {if !empty($credit_card_type)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Credit Card Information{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$valueStyle}>\n                  {$credit_card_type}<br/>\n                  {$credit_card_number}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Expires{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                </td>\n              </tr>\n            {/if}\n\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($customValues)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Options{/ts}\n              </th>\n            </tr>\n            {foreach from=$customValues item=value key=customName}\n              <tr>\n                <td {$labelStyle}>\n                  {$customName}\n                </td>\n                <td {$valueStyle}>\n                  {$value}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n  </table>\n\n</body>\n</html>\n',1,836,'membership_offline_receipt',0,1,0,NULL),
+ (47,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {contribution.contribution_page_id.frontend_title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if $userText}\n     <p>{$userText}</p>\n    {/if}\n    {if {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n      <p>{contribution.pay_later_receipt}</p>\n    {/if}\n\n   </td>\n  </tr>\n  </table>\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n    {if {membership.id|boolean} && !$isShowLineItems}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Type{/ts}\n       </td>\n       <td {$valueStyle}>\n         {ts}{membership.membership_type_id:label}{/ts}\n       </td>\n      </tr>\n      {if {membership.start_date|boolean}}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {membership.start_date}\n        </td>\n       </tr>\n      {/if}\n      {if {membership.end_date|boolean}}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Expiration Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {membership.end_date}\n        </td>\n       </tr>\n      {/if}\n    {/if}\n    {if {contribution.total_amount|boolean}}\n      <tr>\n        <th {$headerStyle}>{ts}Membership Fee{/ts}</th>\n      </tr>\n\n      {if !$isShowLineItems && {contribution.total_amount|boolean}}\n        {foreach from=$lineItems item=line}\n          <tr>\n            <td {$labelStyle}>\n              {if $line.membership_type_id}\n                {ts 1=\"{membership.membership_type_id:label}\"}%1 Membership{/ts}\n              {else}\n                {ts}Contribution Amount{/ts}\n              {/if}\n            </td>\n            <td {$valueStyle}>\n              {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n            </td>\n          </tr>\n        {/foreach}\n      {elseif $isShowLineItems}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            <table>\n              <tr>\n                <th>{ts}Item{/ts}</th>\n                <th>{ts}Fee{/ts}</th>\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <th>{ts}SubTotal{/ts}</th>\n                  <th>{ts}Tax Rate{/ts}</th>\n                  <th>{ts}Tax Amount{/ts}</th>\n                  <th>{ts}Total{/ts}</th>\n                {/if}\n                <th>{ts}Membership Start Date{/ts}</th>\n                <th>{ts}Membership Expiration Date{/ts}</th>\n              </tr>\n              {foreach from=$lineItems item=line}\n                <tr>\n                  <td>{$line.title}</td>\n                  <td>\n                    {$line.line_total|crmMoney}\n                  </td>\n                  {if $isShowTax && {contribution.tax_amount|boolean}}\n                    <td>\n                      {$line.line_total|crmMoney:\'{contribution.currency}\'}\n                    </td>\n                    {if $line.tax_rate || $line.tax_amount != \"\"}\n                      <td>\n                        {$line.tax_rate|string_format:\"%.2f\"}%\n                      </td>\n                      <td>\n                        {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                      </td>\n                    {else}\n                      <td></td>\n                      <td></td>\n                    {/if}\n                    <td>\n                      {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n                    </td>\n                  {/if}\n                  <td>\n                    {$line.membership.start_date|crmDate:\"Full\"}\n                  </td>\n                  <td>\n                    {$line.membership.end_date|crmDate:\"Full\"}\n                  </td>\n                </tr>\n              {/foreach}\n            </table>\n          </td>\n        </tr>\n\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n                {ts}Amount Before Tax:{/ts}\n            </td>\n            <td {$valueStyle}>\n                {contribution.tax_exclusive_amount}\n            </td>\n          </tr>\n          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n            <tr>\n              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>\n              <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n            </tr>\n          {/foreach}\n        {/if}\n      {/if}\n      <tr>\n        <td {$labelStyle}>\n            {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n            {contribution.total_amount}\n        </td>\n      </tr>\n    {/if}\n\n    {if {contribution.receive_date|boolean}}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.receive_date}\n        </td>\n      </tr>\n    {/if}\n\n    {if {contribution.trxn_id|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n    {/if}\n\n    {if {contribution.contribution_recur_id|boolean}}\n      <tr>\n        <td colspan=\"2\" {$labelStyle}>\n          {ts}This membership will be renewed automatically.{/ts}\n          {if $cancelSubscriptionUrl}\n            {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n          {/if}\n        </td>\n      </tr>\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n    {if $honor_block_is_active}\n      <tr>\n        <th {$headerStyle}>\n          {$soft_credit_type}\n        </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n          <td {$labelStyle}>\n            {$label}\n          </td>\n          <td {$valueStyle}>\n            {$value}\n          </td>\n        </tr>\n      {/foreach}\n    {/if}\n\n    {if !empty($pcpBlock)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Personal Campaign Page{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n          {ts}Display In Honor Roll{/ts}\n        </td>\n        <td {$valueStyle}>\n          {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n        </td>\n      </tr>\n      {if $pcp_roll_nickname}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Nickname{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$pcp_roll_nickname}\n          </td>\n        </tr>\n      {/if}\n      {if $pcp_personal_note}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Personal Note{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$pcp_personal_note}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n    {if !empty($onBehalfProfile)}\n      <tr>\n        <th {$headerStyle}>\n          {$onBehalfProfile_grouptitle}\n        </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n          <td {$labelStyle}>\n            {$onBehalfName}\n          </td>\n          <td {$valueStyle}>\n            {$onBehalfValue}\n          </td>\n        </tr>\n      {/foreach}\n    {/if}\n\n    {if {contribution.address_id.display|boolean}}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Billing Name and Address{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {contribution.address_id.name}<br/>\n          {contribution.address_id.display}\n        </td>\n      </tr>\n    {/if}\n    {if {contact.email_primary.email|boolean}}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Registered Email{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {contact.email_primary.email}\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($credit_card_type)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Credit Card Information{/ts}\n         </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$credit_card_type}<br />\n          {$credit_card_number}<br />\n          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($selectPremium)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Premium Information{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$labelStyle}>\n          {$product_name}\n        </td>\n      </tr>\n      {if $option}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Option{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$option}\n          </td>\n        </tr>\n      {/if}\n      {if $sku}\n        <tr>\n          <td {$labelStyle}>\n            {ts}SKU{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$sku}\n          </td>\n        </tr>\n      {/if}\n      {if $start_date}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Start Date{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$start_date|crmDate}\n          </td>\n        </tr>\n      {/if}\n      {if $end_date}\n        <tr>\n          <td {$labelStyle}>\n            {ts}End Date{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$end_date|crmDate}\n          </td>\n        </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            <p>{ts}For information about this premium, contact:{/ts}</p>\n            {if !empty($contact_email)}\n              <p>{$contact_email}</p>\n            {/if}\n            {if !empty($contact_phone)}\n              <p>{$contact_phone}</p>\n            {/if}\n          </td>\n        </tr>\n      {/if}\n      {if $is_deductible AND !empty($price)}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n    {/if}\n\n    {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n         {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n        <tr>\n          <td {$labelStyle}>\n            {$customName}\n          </td>\n          <td {$valueStyle}>\n            {$customValue}\n          </td>\n        </tr>\n      {/foreach}\n    {/if}\n\n    {if !empty($customPost)}\n      <tr>\n        <th {$headerStyle}>\n          {$customPost_grouptitle}\n        </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n        <tr>\n          <td {$labelStyle}>\n            {$customName}\n          </td>\n          <td {$valueStyle}>\n            {$customValue}\n          </td>\n        </tr>\n      {/foreach}\n    {/if}\n\n  </table>\n\n</body>\n</html>\n',1,837,'membership_online_receipt',1,0,0,NULL),
+ (48,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {contribution.contribution_page_id.frontend_title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if $userText}\n     <p>{$userText}</p>\n    {/if}\n    {if {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n      <p>{contribution.pay_later_receipt}</p>\n    {/if}\n\n   </td>\n  </tr>\n  </table>\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n    {if {membership.id|boolean} && !$isShowLineItems}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Type{/ts}\n       </td>\n       <td {$valueStyle}>\n         {ts}{membership.membership_type_id:label}{/ts}\n       </td>\n      </tr>\n      {if {membership.start_date|boolean}}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {membership.start_date}\n        </td>\n       </tr>\n      {/if}\n      {if {membership.end_date|boolean}}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Expiration Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {membership.end_date}\n        </td>\n       </tr>\n      {/if}\n    {/if}\n    {if {contribution.total_amount|boolean}}\n      <tr>\n        <th {$headerStyle}>{ts}Membership Fee{/ts}</th>\n      </tr>\n\n      {if !$isShowLineItems && {contribution.total_amount|boolean}}\n        {foreach from=$lineItems item=line}\n          <tr>\n            <td {$labelStyle}>\n              {if $line.membership_type_id}\n                {ts 1=\"{membership.membership_type_id:label}\"}%1 Membership{/ts}\n              {else}\n                {ts}Contribution Amount{/ts}\n              {/if}\n            </td>\n            <td {$valueStyle}>\n              {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n            </td>\n          </tr>\n        {/foreach}\n      {elseif $isShowLineItems}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            <table>\n              <tr>\n                <th>{ts}Item{/ts}</th>\n                <th>{ts}Fee{/ts}</th>\n                {if $isShowTax && {contribution.tax_amount|boolean}}\n                  <th>{ts}SubTotal{/ts}</th>\n                  <th>{ts}Tax Rate{/ts}</th>\n                  <th>{ts}Tax Amount{/ts}</th>\n                  <th>{ts}Total{/ts}</th>\n                {/if}\n                <th>{ts}Membership Start Date{/ts}</th>\n                <th>{ts}Membership Expiration Date{/ts}</th>\n              </tr>\n              {foreach from=$lineItems item=line}\n                <tr>\n                  <td>{$line.title}</td>\n                  <td>\n                    {$line.line_total|crmMoney}\n                  </td>\n                  {if $isShowTax && {contribution.tax_amount|boolean}}\n                    <td>\n                      {$line.line_total|crmMoney:\'{contribution.currency}\'}\n                    </td>\n                    {if $line.tax_rate || $line.tax_amount != \"\"}\n                      <td>\n                        {$line.tax_rate|string_format:\"%.2f\"}%\n                      </td>\n                      <td>\n                        {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                      </td>\n                    {else}\n                      <td></td>\n                      <td></td>\n                    {/if}\n                    <td>\n                      {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n                    </td>\n                  {/if}\n                  <td>\n                    {$line.membership.start_date|crmDate:\"Full\"}\n                  </td>\n                  <td>\n                    {$line.membership.end_date|crmDate:\"Full\"}\n                  </td>\n                </tr>\n              {/foreach}\n            </table>\n          </td>\n        </tr>\n\n        {if $isShowTax && {contribution.tax_amount|boolean}}\n          <tr>\n            <td {$labelStyle}>\n                {ts}Amount Before Tax:{/ts}\n            </td>\n            <td {$valueStyle}>\n                {contribution.tax_exclusive_amount}\n            </td>\n          </tr>\n          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n            <tr>\n              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>\n              <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n            </tr>\n          {/foreach}\n        {/if}\n      {/if}\n      <tr>\n        <td {$labelStyle}>\n            {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n            {contribution.total_amount}\n        </td>\n      </tr>\n    {/if}\n\n    {if {contribution.receive_date|boolean}}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.receive_date}\n        </td>\n      </tr>\n    {/if}\n\n    {if {contribution.trxn_id|boolean}}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n    {/if}\n\n    {if {contribution.contribution_recur_id|boolean}}\n      <tr>\n        <td colspan=\"2\" {$labelStyle}>\n          {ts}This membership will be renewed automatically.{/ts}\n          {if $cancelSubscriptionUrl}\n            {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n          {/if}\n        </td>\n      </tr>\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n    {if $honor_block_is_active}\n      <tr>\n        <th {$headerStyle}>\n          {$soft_credit_type}\n        </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n          <td {$labelStyle}>\n            {$label}\n          </td>\n          <td {$valueStyle}>\n            {$value}\n          </td>\n        </tr>\n      {/foreach}\n    {/if}\n\n    {if !empty($pcpBlock)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Personal Campaign Page{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n          {ts}Display In Honor Roll{/ts}\n        </td>\n        <td {$valueStyle}>\n          {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n        </td>\n      </tr>\n      {if $pcp_roll_nickname}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Nickname{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$pcp_roll_nickname}\n          </td>\n        </tr>\n      {/if}\n      {if $pcp_personal_note}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Personal Note{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$pcp_personal_note}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n    {if !empty($onBehalfProfile)}\n      <tr>\n        <th {$headerStyle}>\n          {$onBehalfProfile_grouptitle}\n        </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n          <td {$labelStyle}>\n            {$onBehalfName}\n          </td>\n          <td {$valueStyle}>\n            {$onBehalfValue}\n          </td>\n        </tr>\n      {/foreach}\n    {/if}\n\n    {if {contribution.address_id.display|boolean}}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Billing Name and Address{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {contribution.address_id.name}<br/>\n          {contribution.address_id.display}\n        </td>\n      </tr>\n    {/if}\n    {if {contact.email_primary.email|boolean}}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Registered Email{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {contact.email_primary.email}\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($credit_card_type)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Credit Card Information{/ts}\n         </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$credit_card_type}<br />\n          {$credit_card_number}<br />\n          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($selectPremium)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Premium Information{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$labelStyle}>\n          {$product_name}\n        </td>\n      </tr>\n      {if $option}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Option{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$option}\n          </td>\n        </tr>\n      {/if}\n      {if $sku}\n        <tr>\n          <td {$labelStyle}>\n            {ts}SKU{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$sku}\n          </td>\n        </tr>\n      {/if}\n      {if $start_date}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Start Date{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$start_date|crmDate}\n          </td>\n        </tr>\n      {/if}\n      {if $end_date}\n        <tr>\n          <td {$labelStyle}>\n            {ts}End Date{/ts}\n          </td>\n          <td {$valueStyle}>\n            {$end_date|crmDate}\n          </td>\n        </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            <p>{ts}For information about this premium, contact:{/ts}</p>\n            {if !empty($contact_email)}\n              <p>{$contact_email}</p>\n            {/if}\n            {if !empty($contact_phone)}\n              <p>{$contact_phone}</p>\n            {/if}\n          </td>\n        </tr>\n      {/if}\n      {if $is_deductible AND !empty($price)}\n        <tr>\n          <td colspan=\"2\" {$valueStyle}>\n            <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n    {/if}\n\n    {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n         {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n        <tr>\n          <td {$labelStyle}>\n            {$customName}\n          </td>\n          <td {$valueStyle}>\n            {$customValue}\n          </td>\n        </tr>\n      {/foreach}\n    {/if}\n\n    {if !empty($customPost)}\n      <tr>\n        <th {$headerStyle}>\n          {$customPost_grouptitle}\n        </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n        <tr>\n          <td {$labelStyle}>\n            {$customName}\n          </td>\n          <td {$valueStyle}>\n            {$customValue}\n          </td>\n        </tr>\n      {/foreach}\n    {/if}\n\n  </table>\n\n</body>\n</html>\n',1,837,'membership_online_receipt',0,1,0,NULL),
  (49,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}</p>\n\n   </td>\n  </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Status{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_status}\n       </td>\n      </tr>\n      {if $mem_start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$mem_start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $mem_end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Expiration Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {$mem_end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n\n </table>\n\n</body>\n</html>\n',1,838,'membership_autorenew_cancelled',1,0,0,NULL),
  (50,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}</p>\n\n   </td>\n  </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Status{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_status}\n       </td>\n      </tr>\n      {if $mem_start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$mem_start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $mem_end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Expiration Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {$mem_end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n\n </table>\n\n</body>\n</html>\n',1,838,'membership_autorenew_cancelled',0,1,0,NULL),
  (51,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n   <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n        <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n         {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n        </td>\n      </tr>\n\n  </table>\n\n</body>\n</html>\n',1,839,'membership_autorenew_billing',1,0,0,NULL),
@@ -5651,26 +5669,26 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_note` WRITE;
 /*!40000 ALTER TABLE `civicrm_note` DISABLE KEYS */;
 INSERT INTO `civicrm_note` (`id`, `entity_table`, `entity_id`, `note`, `contact_id`, `note_date`, `created_date`, `modified_date`, `subject`, `privacy`) VALUES
- (1,'civicrm_contact',114,'Organize the Terry Fox run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-01-16 11:08:46',NULL,'0'),
- (2,'civicrm_contact',17,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-07-05 07:23:18',NULL,'0'),
- (3,'civicrm_contact',20,'Contact the Commissioner of Charities',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-04-30 14:07:31',NULL,'0'),
- (4,'civicrm_contact',18,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-02-02 15:25:51',NULL,'0'),
- (5,'civicrm_contact',41,'Get the registration done for NGO status',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-05-07 11:05:21',NULL,'0'),
- (6,'civicrm_contact',148,'Organize the Terry Fox run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-06-28 19:57:06',NULL,'0'),
- (7,'civicrm_contact',53,'Reminder screening of \"Black\" on next Friday',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-10-24 13:07:48',NULL,'0'),
- (8,'civicrm_contact',89,'Chart out route map for next 10k run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-06-09 07:36:28',NULL,'0'),
- (9,'civicrm_contact',12,'Connect for presentation',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-11-11 03:25:47',NULL,'0'),
- (10,'civicrm_contact',107,'Send newsletter for April 2005',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-08-16 01:33:00',NULL,'0'),
- (11,'civicrm_contact',38,'Reminder screening of \"Black\" on next Friday',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-05-04 04:20:12',NULL,'0'),
- (12,'civicrm_contact',165,'Contact the Commissioner of Charities',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-12-22 04:04:51',NULL,'0'),
- (13,'civicrm_contact',189,'Connect for presentation',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-02-02 21:42:27',NULL,'0'),
- (14,'civicrm_contact',70,'Send newsletter for April 2005',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-03-13 02:59:38',NULL,'0'),
- (15,'civicrm_contact',83,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-04-30 02:27:16',NULL,'0'),
- (16,'civicrm_contact',119,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-04-04 21:03:38',NULL,'0'),
- (17,'civicrm_contact',157,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-12-10 22:02:49',NULL,'0'),
- (18,'civicrm_contact',124,'Get the registration done for NGO status',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-06-14 01:33:44',NULL,'0'),
- (19,'civicrm_contact',196,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-09-08 05:58:30',NULL,'0'),
- (20,'civicrm_contact',49,'Send newsletter for April 2005',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-05-26 14:48:43',NULL,'0');
+ (1,'civicrm_contact',84,'Get the registration done for NGO status',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-03-14 05:12:19',NULL,'0'),
+ (2,'civicrm_contact',14,'Send newsletter for April 2005',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-09-07 23:32:57',NULL,'0'),
+ (3,'civicrm_contact',197,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-08-05 02:03:11',NULL,'0'),
+ (4,'civicrm_contact',125,'Contact the Commissioner of Charities',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-06-28 04:27:43',NULL,'0'),
+ (5,'civicrm_contact',89,'Get the registration done for NGO status',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-05-23 10:17:27',NULL,'0'),
+ (6,'civicrm_contact',70,'Contact the Commissioner of Charities',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-01-08 08:54:10',NULL,'0'),
+ (7,'civicrm_contact',8,'Arrange collection of funds from members',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-01-26 06:15:12',NULL,'0'),
+ (8,'civicrm_contact',18,'Get the registration done for NGO status',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2022-12-22 10:43:04',NULL,'0'),
+ (9,'civicrm_contact',146,'Get the registration done for NGO status',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-07-27 12:31:48',NULL,'0'),
+ (10,'civicrm_contact',143,'Reminder screening of \"Black\" on next Friday',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-02-22 10:50:53',NULL,'0'),
+ (11,'civicrm_contact',175,'Arrange collection of funds from members',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-03-27 19:54:56',NULL,'0'),
+ (12,'civicrm_contact',134,'Get the registration done for NGO status',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-04-29 10:41:01',NULL,'0'),
+ (13,'civicrm_contact',91,'Connect for presentation',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-04-09 13:36:48',NULL,'0'),
+ (14,'civicrm_contact',37,'Chart out route map for next 10k run',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-01-15 04:44:09',NULL,'0'),
+ (15,'civicrm_contact',91,'Chart out route map for next 10k run',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-12-12 04:17:57',NULL,'0'),
+ (16,'civicrm_contact',167,'Send newsletter for April 2005',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-07-22 16:43:27',NULL,'0'),
+ (17,'civicrm_contact',178,'Send newsletter for April 2005',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-01-29 22:51:17',NULL,'0'),
+ (18,'civicrm_contact',169,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-07-13 16:38:17',NULL,'0'),
+ (19,'civicrm_contact',115,'Organize the Terry Fox run',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-05-17 15:52:59',NULL,'0'),
+ (20,'civicrm_contact',201,'Contact the Commissioner of Charities',1,'2023-12-17 20:11:35','2023-12-17 20:11:35','2023-05-23 21:24:15',NULL,'0');
 /*!40000 ALTER TABLE `civicrm_note` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -6677,56 +6695,56 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_participant` WRITE;
 /*!40000 ALTER TABLE `civicrm_participant` DISABLE KEYS */;
 INSERT INTO `civicrm_participant` (`id`, `contact_id`, `event_id`, `status_id`, `role_id`, `register_date`, `source`, `fee_level`, `is_test`, `is_pay_later`, `fee_amount`, `registered_by_id`, `discount_id`, `fee_currency`, `campaign_id`, `discount_amount`, `cart_id`, `must_wait`, `transferred_to_contact_id`, `created_id`) VALUES
- (1,10,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (2,92,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (3,160,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (4,77,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (5,36,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (6,40,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (7,94,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (8,41,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (9,23,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (10,13,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (11,195,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (12,192,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (13,135,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (14,30,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (15,16,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (16,132,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (17,179,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (18,189,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (19,123,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (20,144,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (21,80,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (22,178,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (23,45,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (24,196,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (25,182,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (26,8,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (27,101,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (28,158,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (1,156,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (2,87,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (3,124,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (4,127,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (5,113,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (6,160,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (7,120,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (8,100,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (9,83,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (10,72,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (11,155,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (12,150,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (13,149,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (14,77,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (15,183,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (16,199,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (17,89,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (18,129,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (19,67,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (20,139,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (21,174,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (22,62,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (23,71,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (24,95,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (25,65,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (26,59,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (27,55,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (28,194,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
  (29,19,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (30,73,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (31,76,3,2,'2','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (32,197,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (33,97,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (34,6,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (35,159,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (36,17,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (37,127,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (38,154,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (39,84,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (40,117,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (41,14,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (42,156,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (43,163,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (44,184,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (45,96,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (46,57,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (47,175,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (48,172,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (49,69,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (50,88,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL);
+ (30,79,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (31,106,3,2,'2','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (32,18,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (33,177,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (34,175,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (35,42,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (36,61,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (37,132,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (38,173,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (39,195,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (40,25,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (41,110,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (42,31,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (43,12,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (44,52,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (45,130,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (46,193,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (47,168,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (48,82,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (49,38,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (50,162,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_participant` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -6737,56 +6755,56 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_participant_payment` WRITE;
 /*!40000 ALTER TABLE `civicrm_participant_payment` DISABLE KEYS */;
 INSERT INTO `civicrm_participant_payment` (`id`, `participant_id`, `contribution_id`) VALUES
- (1,34,63),
- (2,26,64),
- (3,1,65),
- (4,10,66),
- (5,41,67),
- (6,15,68),
- (7,36,69),
- (8,29,70),
+ (1,1,63),
+ (2,2,64),
+ (3,3,65),
+ (4,4,66),
+ (5,5,67),
+ (6,6,68),
+ (7,7,69),
+ (8,8,70),
  (9,9,71),
- (10,14,72),
- (11,5,73),
- (12,6,74),
- (13,8,75),
- (14,23,76),
- (15,46,77),
- (16,49,78),
- (17,30,79),
- (18,31,80),
- (19,4,81),
- (20,21,82),
- (21,39,83),
- (22,50,84),
- (23,2,85),
- (24,7,86),
- (25,45,87),
- (26,33,88),
+ (10,10,72),
+ (11,11,73),
+ (12,12,74),
+ (13,13,75),
+ (14,14,76),
+ (15,15,77),
+ (16,16,78),
+ (17,17,79),
+ (18,18,80),
+ (19,19,81),
+ (20,20,82),
+ (21,21,83),
+ (22,22,84),
+ (23,23,85),
+ (24,24,86),
+ (25,25,87),
+ (26,26,88),
  (27,27,89),
- (28,40,90),
- (29,19,91),
- (30,37,92),
- (31,16,93),
- (32,13,94),
- (33,20,95),
- (34,38,96),
- (35,42,97),
- (36,28,98),
- (37,35,99),
- (38,3,100),
- (39,43,101),
- (40,48,102),
- (41,47,103),
- (42,22,104),
- (43,17,105),
- (44,25,106),
- (45,44,107),
- (46,18,108),
- (47,12,109),
- (48,11,110),
- (49,24,111),
- (50,32,112);
+ (28,28,90),
+ (29,29,91),
+ (30,30,92),
+ (31,31,93),
+ (32,32,94),
+ (33,33,95),
+ (34,34,96),
+ (35,35,97),
+ (36,36,98),
+ (37,37,99),
+ (38,38,100),
+ (39,39,101),
+ (40,40,102),
+ (41,41,103),
+ (42,42,104),
+ (43,43,105),
+ (44,44,106),
+ (45,45,107),
+ (46,46,108),
+ (47,47,109),
+ (48,48,110),
+ (49,49,111),
+ (50,50,112);
 /*!40000 ALTER TABLE `civicrm_participant_payment` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -6859,7 +6877,7 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_pcp` WRITE;
 /*!40000 ALTER TABLE `civicrm_pcp` DISABLE KEYS */;
 INSERT INTO `civicrm_pcp` (`id`, `contact_id`, `status_id`, `title`, `intro_text`, `page_text`, `donate_link_text`, `page_id`, `page_type`, `pcp_block_id`, `is_thermometer`, `is_honor_roll`, `goal_amount`, `currency`, `is_active`, `is_notify`) VALUES
- (1,142,2,'My Personal Civi Fundraiser','I\'m on a mission to get all my friends and family to help support my favorite open-source civic sector CRM.','<p>Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!</p>\r\n<p><a href=\"https://civicrm.org\">You can learn more about CiviCRM here</a>.</p>\r\n<p>Then click the <strong>Contribute Now</strong> button to go to our easy-to-use online contribution form.</p>','Contribute Now',1,'contribute',1,1,1,5000.00,'USD',1,1);
+ (1,190,2,'My Personal Civi Fundraiser','I\'m on a mission to get all my friends and family to help support my favorite open-source civic sector CRM.','<p>Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!</p>\r\n<p><a href=\"https://civicrm.org\">You can learn more about CiviCRM here</a>.</p>\r\n<p>Then click the <strong>Contribute Now</strong> button to go to our easy-to-use online contribution form.</p>','Contribute Now',1,'contribute',1,1,1,5000.00,'USD',1,1);
 /*!40000 ALTER TABLE `civicrm_pcp` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -6881,183 +6899,168 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_phone` WRITE;
 /*!40000 ALTER TABLE `civicrm_phone` DISABLE KEYS */;
 INSERT INTO `civicrm_phone` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `mobile_provider_id`, `phone`, `phone_ext`, `phone_numeric`, `phone_type_id`) VALUES
- (1,31,1,1,0,NULL,'701-8326',NULL,'7018326',1),
- (2,25,1,1,0,NULL,'(561) 723-5834',NULL,'5617235834',2),
- (3,25,1,0,0,NULL,'(214) 874-3538',NULL,'2148743538',1),
- (4,35,1,1,0,NULL,'(371) 870-9746',NULL,'3718709746',2),
- (5,142,1,1,0,NULL,'(383) 878-6066',NULL,'3838786066',1),
- (6,142,1,0,0,NULL,'612-7608',NULL,'6127608',1),
- (7,5,1,1,0,NULL,'836-9875',NULL,'8369875',1),
- (8,5,1,0,0,NULL,'(476) 579-4329',NULL,'4765794329',2),
- (9,54,1,1,0,NULL,'(781) 303-5891',NULL,'7813035891',2),
- (10,82,1,1,0,NULL,'(380) 311-8610',NULL,'3803118610',2),
- (11,82,1,0,0,NULL,'(881) 823-9927',NULL,'8818239927',2),
- (12,9,1,1,0,NULL,'823-8440',NULL,'8238440',2),
- (13,9,1,0,0,NULL,'(751) 878-9340',NULL,'7518789340',2),
- (14,143,1,1,0,NULL,'609-4732',NULL,'6094732',2),
- (15,143,1,0,0,NULL,'(851) 855-2107',NULL,'8518552107',2),
- (16,78,1,1,0,NULL,'259-3009',NULL,'2593009',2),
- (17,78,1,0,0,NULL,'(489) 221-8298',NULL,'4892218298',2),
- (18,173,1,1,0,NULL,'298-2873',NULL,'2982873',2),
- (19,173,1,0,0,NULL,'507-5321',NULL,'5075321',2),
- (20,186,1,1,0,NULL,'(692) 738-5997',NULL,'6927385997',2),
- (21,127,1,1,0,NULL,'(596) 782-2345',NULL,'5967822345',2),
- (22,127,1,0,0,NULL,'(793) 307-2359',NULL,'7933072359',2),
- (23,101,1,1,0,NULL,'(580) 815-9336',NULL,'5808159336',2),
- (24,101,1,0,0,NULL,'(425) 772-7439',NULL,'4257727439',2),
- (25,30,1,1,0,NULL,'406-5173',NULL,'4065173',1),
- (26,30,1,0,0,NULL,'(377) 427-8722',NULL,'3774278722',1),
- (27,89,1,1,0,NULL,'889-6983',NULL,'8896983',1),
- (28,89,1,0,0,NULL,'751-6212',NULL,'7516212',2),
- (29,194,1,1,0,NULL,'(842) 838-3758',NULL,'8428383758',2),
- (30,194,1,0,0,NULL,'(369) 362-6537',NULL,'3693626537',2),
- (31,136,1,1,0,NULL,'(685) 284-2451',NULL,'6852842451',1),
- (32,136,1,0,0,NULL,'830-5972',NULL,'8305972',2),
- (33,129,1,1,0,NULL,'(278) 577-6073',NULL,'2785776073',1),
- (34,157,1,1,0,NULL,'452-1042',NULL,'4521042',1),
- (35,172,1,1,0,NULL,'430-7484',NULL,'4307484',1),
- (36,197,1,1,0,NULL,'578-3660',NULL,'5783660',2),
- (37,197,1,0,0,NULL,'(746) 349-8797',NULL,'7463498797',1),
- (38,185,1,1,0,NULL,'(468) 598-9717',NULL,'4685989717',2),
- (39,185,1,0,0,NULL,'(239) 246-8389',NULL,'2392468389',2),
- (40,132,1,1,0,NULL,'752-6132',NULL,'7526132',1),
- (41,132,1,0,0,NULL,'(421) 637-1571',NULL,'4216371571',2),
- (42,94,1,1,0,NULL,'425-1925',NULL,'4251925',1),
- (43,11,1,1,0,NULL,'439-4637',NULL,'4394637',1),
- (44,11,1,0,0,NULL,'411-7439',NULL,'4117439',2),
- (45,178,1,1,0,NULL,'(772) 371-1531',NULL,'7723711531',1),
- (46,144,1,1,0,NULL,'481-6839',NULL,'4816839',1),
- (47,201,1,1,0,NULL,'(565) 235-7766',NULL,'5652357766',2),
- (48,201,1,0,0,NULL,'(593) 665-8270',NULL,'5936658270',2),
- (49,8,1,1,0,NULL,'859-2182',NULL,'8592182',2),
- (50,33,1,1,0,NULL,'800-2321',NULL,'8002321',1),
- (51,153,1,1,0,NULL,'(784) 658-5457',NULL,'7846585457',1),
- (52,153,1,0,0,NULL,'627-6722',NULL,'6276722',2),
- (53,120,1,1,0,NULL,'292-2860',NULL,'2922860',1),
- (54,120,1,0,0,NULL,'468-1106',NULL,'4681106',2),
- (55,169,1,1,0,NULL,'363-1993',NULL,'3631993',1),
- (56,130,1,1,0,NULL,'542-5373',NULL,'5425373',1),
- (57,28,1,1,0,NULL,'862-4570',NULL,'8624570',2),
- (58,17,1,1,0,NULL,'(245) 434-1599',NULL,'2454341599',1),
- (59,38,1,1,0,NULL,'(613) 348-5759',NULL,'6133485759',2),
- (60,38,1,0,0,NULL,'(712) 372-4759',NULL,'7123724759',2),
- (61,174,1,1,0,NULL,'(434) 223-4524',NULL,'4342234524',1),
- (62,174,1,0,0,NULL,'247-9687',NULL,'2479687',2),
- (63,113,1,1,0,NULL,'857-6594',NULL,'8576594',1),
- (64,71,1,1,0,NULL,'414-8952',NULL,'4148952',1),
- (65,71,1,0,0,NULL,'764-9546',NULL,'7649546',2),
- (66,56,1,1,0,NULL,'(296) 887-3997',NULL,'2968873997',1),
- (67,171,1,1,0,NULL,'(271) 495-5559',NULL,'2714955559',1),
- (68,171,1,0,0,NULL,'(733) 578-6411',NULL,'7335786411',2),
- (69,29,1,1,0,NULL,'494-3776',NULL,'4943776',2),
- (70,29,1,0,0,NULL,'413-1135',NULL,'4131135',1),
- (71,138,1,1,0,NULL,'278-9104',NULL,'2789104',1),
- (72,145,1,1,0,NULL,'334-7938',NULL,'3347938',2),
- (73,107,1,1,0,NULL,'(722) 383-3115',NULL,'7223833115',1),
- (74,107,1,0,0,NULL,'(535) 772-4758',NULL,'5357724758',1),
- (75,105,1,1,0,NULL,'(498) 296-3018',NULL,'4982963018',1),
- (76,167,1,1,0,NULL,'224-2691',NULL,'2242691',2),
- (77,167,1,0,0,NULL,'(865) 340-9624',NULL,'8653409624',1),
- (78,37,1,1,0,NULL,'846-3229',NULL,'8463229',2),
- (79,37,1,0,0,NULL,'704-8850',NULL,'7048850',2),
- (80,27,1,1,0,NULL,'(811) 430-2028',NULL,'8114302028',2),
- (81,40,1,1,0,NULL,'(515) 357-5489',NULL,'5153575489',1),
- (82,40,1,0,0,NULL,'692-6797',NULL,'6926797',2),
- (83,184,1,1,0,NULL,'(556) 507-5924',NULL,'5565075924',1),
- (84,184,1,0,0,NULL,'738-7531',NULL,'7387531',2),
- (85,102,1,1,0,NULL,'(885) 386-6877',NULL,'8853866877',1),
- (86,102,1,0,0,NULL,'(807) 355-3320',NULL,'8073553320',1),
- (87,108,1,1,0,NULL,'479-5380',NULL,'4795380',2),
- (88,188,1,1,0,NULL,'(496) 577-5005',NULL,'4965775005',2),
- (89,188,1,0,0,NULL,'310-9165',NULL,'3109165',1),
- (90,119,1,1,0,NULL,'(476) 320-7474',NULL,'4763207474',1),
- (91,119,1,0,0,NULL,'(329) 447-8458',NULL,'3294478458',1),
- (92,141,1,1,0,NULL,'880-8053',NULL,'8808053',1),
- (93,141,1,0,0,NULL,'(859) 278-9294',NULL,'8592789294',1),
- (94,176,1,1,0,NULL,'(560) 309-3969',NULL,'5603093969',2),
- (95,151,1,1,0,NULL,'(619) 444-1535',NULL,'6194441535',2),
- (96,151,1,0,0,NULL,'(482) 747-9033',NULL,'4827479033',1),
- (97,20,1,1,0,NULL,'362-2214',NULL,'3622214',2),
- (98,20,1,0,0,NULL,'438-4004',NULL,'4384004',1),
- (99,49,1,1,0,NULL,'798-8766',NULL,'7988766',2),
- (100,49,1,0,0,NULL,'775-7678',NULL,'7757678',1),
- (101,200,1,1,0,NULL,'503-9866',NULL,'5039866',1),
- (102,200,1,0,0,NULL,'(289) 816-8906',NULL,'2898168906',2),
- (103,125,1,1,0,NULL,'387-7137',NULL,'3877137',2),
- (104,55,1,1,0,NULL,'(391) 528-2746',NULL,'3915282746',2),
- (105,164,1,1,0,NULL,'353-1272',NULL,'3531272',2),
- (106,164,1,0,0,NULL,'470-5909',NULL,'4705909',2),
- (107,193,1,1,0,NULL,'714-8765',NULL,'7148765',1),
- (108,193,1,0,0,NULL,'(285) 824-3376',NULL,'2858243376',1),
- (109,44,1,1,0,NULL,'(344) 649-2733',NULL,'3446492733',1),
- (110,44,1,0,0,NULL,'(366) 835-9590',NULL,'3668359590',1),
- (111,60,1,1,0,NULL,'363-2460',NULL,'3632460',2),
- (112,60,1,0,0,NULL,'216-8190',NULL,'2168190',2),
- (113,84,1,1,0,NULL,'472-6165',NULL,'4726165',1),
- (114,84,1,0,0,NULL,'428-9663',NULL,'4289663',2),
- (115,109,1,1,0,NULL,'510-6627',NULL,'5106627',2),
- (116,109,1,0,0,NULL,'243-7513',NULL,'2437513',1),
- (117,76,1,1,0,NULL,'(459) 671-5070',NULL,'4596715070',2),
- (118,76,1,0,0,NULL,'(765) 787-7486',NULL,'7657877486',2),
- (119,149,1,1,0,NULL,'331-1328',NULL,'3311328',2),
- (120,74,1,1,0,NULL,'(374) 251-1719',NULL,'3742511719',1),
- (121,140,1,1,0,NULL,'651-1898',NULL,'6511898',2),
- (122,163,1,1,0,NULL,'(626) 322-3211',NULL,'6263223211',2),
- (123,66,1,1,0,NULL,'(724) 450-1369',NULL,'7244501369',2),
- (124,21,1,1,0,NULL,'(536) 578-2919',NULL,'5365782919',1),
- (125,21,1,0,0,NULL,'(584) 872-8621',NULL,'5848728621',2),
- (126,14,1,1,0,NULL,'(568) 369-5716',NULL,'5683695716',2),
- (127,14,1,0,0,NULL,'(330) 403-9152',NULL,'3304039152',1),
- (128,170,1,1,0,NULL,'647-9420',NULL,'6479420',2),
- (129,170,1,0,0,NULL,'458-3219',NULL,'4583219',2),
- (130,124,1,1,0,NULL,'(632) 454-8571',NULL,'6324548571',1),
- (131,124,1,0,0,NULL,'(828) 768-4009',NULL,'8287684009',2),
- (132,199,1,1,0,NULL,'708-5459',NULL,'7085459',1),
- (133,112,1,1,0,NULL,'(577) 229-6716',NULL,'5772296716',1),
- (134,104,1,1,0,NULL,'(785) 655-3220',NULL,'7856553220',2),
- (135,110,1,1,0,NULL,'545-3656',NULL,'5453656',2),
- (136,110,1,0,0,NULL,'460-7083',NULL,'4607083',2),
- (137,100,1,1,0,NULL,'747-4183',NULL,'7474183',1),
- (138,100,1,0,0,NULL,'(767) 535-3474',NULL,'7675353474',1),
- (139,160,1,1,0,NULL,'273-8785',NULL,'2738785',1),
- (140,57,1,1,0,NULL,'(807) 566-1513',NULL,'8075661513',2),
- (141,6,1,1,0,NULL,'521-4662',NULL,'5214662',1),
- (142,6,1,0,0,NULL,'(797) 575-5372',NULL,'7975755372',1),
- (143,62,1,1,0,NULL,'851-5822',NULL,'8515822',1),
- (144,62,1,0,0,NULL,'371-2426',NULL,'3712426',2),
- (145,137,1,1,0,NULL,'855-6543',NULL,'8556543',1),
- (146,137,1,0,0,NULL,'757-5565',NULL,'7575565',2),
- (147,99,1,1,0,NULL,'(824) 300-5139',NULL,'8243005139',1),
- (148,116,1,1,0,NULL,'(218) 349-9660',NULL,'2183499660',2),
- (149,180,1,1,0,NULL,'683-4985',NULL,'6834985',1),
- (150,180,1,0,0,NULL,'540-9753',NULL,'5409753',1),
- (151,114,1,1,0,NULL,'574-9685',NULL,'5749685',1),
- (152,114,1,0,0,NULL,'877-1810',NULL,'8771810',2),
- (153,32,1,1,0,NULL,'(327) 275-4451',NULL,'3272754451',2),
- (154,18,1,1,0,NULL,'270-8573',NULL,'2708573',1),
- (155,90,1,1,0,NULL,'(732) 233-1502',NULL,'7322331502',2),
- (156,39,1,1,0,NULL,'(297) 642-7386',NULL,'2976427386',1),
- (157,39,1,0,0,NULL,'392-3136',NULL,'3923136',2),
- (158,41,1,1,0,NULL,'732-3802',NULL,'7323802',2),
- (159,121,1,1,0,NULL,'518-7925',NULL,'5187925',1),
- (160,121,1,0,0,NULL,'582-8517',NULL,'5828517',2),
- (161,12,1,1,0,NULL,'891-1072',NULL,'8911072',2),
- (162,12,1,0,0,NULL,'(298) 460-2344',NULL,'2984602344',2),
- (163,61,1,1,0,NULL,'700-2528',NULL,'7002528',2),
- (164,47,1,1,0,NULL,'660-6029',NULL,'6606029',1),
- (165,181,1,1,0,NULL,'(739) 875-8399',NULL,'7398758399',2),
- (166,181,1,0,0,NULL,'(217) 474-7210',NULL,'2174747210',1),
- (167,85,1,1,0,NULL,'767-7183',NULL,'7677183',2),
- (168,85,1,0,0,NULL,'(716) 432-5188',NULL,'7164325188',2),
- (169,36,1,1,0,NULL,'(359) 373-1010',NULL,'3593731010',1),
- (170,36,1,0,0,NULL,'348-2045',NULL,'3482045',2),
- (171,118,1,1,0,NULL,'519-9913',NULL,'5199913',1),
- (172,118,1,0,0,NULL,'(566) 410-4236',NULL,'5664104236',1),
- (173,152,1,1,0,NULL,'(630) 518-4681',NULL,'6305184681',2),
- (174,152,1,0,0,NULL,'(480) 533-9631',NULL,'4805339631',2),
- (175,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),
- (176,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),
- (177,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1);
+ (1,72,1,1,0,NULL,'800-2446',NULL,'8002446',1),
+ (2,72,1,0,0,NULL,'477-7890',NULL,'4777890',2),
+ (3,19,1,1,0,NULL,'346-4275',NULL,'3464275',2),
+ (4,19,1,0,0,NULL,'738-3594',NULL,'7383594',1),
+ (5,153,1,1,0,NULL,'881-1995',NULL,'8811995',2),
+ (6,153,1,0,0,NULL,'332-8487',NULL,'3328487',2),
+ (7,16,1,1,0,NULL,'337-2383',NULL,'3372383',2),
+ (8,65,1,1,0,NULL,'345-6698',NULL,'3456698',2),
+ (9,120,1,1,0,NULL,'268-3790',NULL,'2683790',2),
+ (10,120,1,0,0,NULL,'726-2801',NULL,'7262801',1),
+ (11,85,1,1,0,NULL,'(423) 767-2167',NULL,'4237672167',2),
+ (12,110,1,1,0,NULL,'627-9868',NULL,'6279868',1),
+ (13,110,1,0,0,NULL,'588-6379',NULL,'5886379',2),
+ (14,45,1,1,0,NULL,'457-7461',NULL,'4577461',2),
+ (15,37,1,1,0,NULL,'567-4723',NULL,'5674723',2),
+ (16,12,1,1,0,NULL,'(810) 561-3757',NULL,'8105613757',2),
+ (17,102,1,1,0,NULL,'(467) 667-5308',NULL,'4676675308',2),
+ (18,192,1,1,0,NULL,'(845) 753-2633',NULL,'8457532633',2),
+ (19,192,1,0,0,NULL,'(432) 859-5238',NULL,'4328595238',2),
+ (20,23,1,1,0,NULL,'(530) 786-5195',NULL,'5307865195',1),
+ (21,94,1,1,0,NULL,'530-2765',NULL,'5302765',2),
+ (22,108,1,1,0,NULL,'414-5675',NULL,'4145675',2),
+ (23,108,1,0,0,NULL,'336-3080',NULL,'3363080',2),
+ (24,38,1,1,0,NULL,'(694) 886-2966',NULL,'6948862966',2),
+ (25,154,1,1,0,NULL,'352-2421',NULL,'3522421',2),
+ (26,86,1,1,0,NULL,'297-4919',NULL,'2974919',1),
+ (27,86,1,0,0,NULL,'(316) 570-2720',NULL,'3165702720',2),
+ (28,95,1,1,0,NULL,'(842) 501-3198',NULL,'8425013198',2),
+ (29,176,1,1,0,NULL,'(401) 654-6326',NULL,'4016546326',1),
+ (30,74,1,1,0,NULL,'(539) 620-9860',NULL,'5396209860',2),
+ (31,112,1,1,0,NULL,'340-3806',NULL,'3403806',1),
+ (32,112,1,0,0,NULL,'(762) 203-4895',NULL,'7622034895',2),
+ (33,117,1,1,0,NULL,'(459) 399-2369',NULL,'4593992369',1),
+ (34,101,1,1,0,NULL,'(425) 748-5203',NULL,'4257485203',2),
+ (35,101,1,0,0,NULL,'(740) 288-7287',NULL,'7402887287',2),
+ (36,57,1,1,0,NULL,'(811) 695-4352',NULL,'8116954352',2),
+ (37,57,1,0,0,NULL,'(621) 862-1093',NULL,'6218621093',1),
+ (38,124,1,1,0,NULL,'(468) 299-9641',NULL,'4682999641',1),
+ (39,124,1,0,0,NULL,'(826) 563-9123',NULL,'8265639123',1),
+ (40,126,1,1,0,NULL,'(669) 282-4083',NULL,'6692824083',2),
+ (41,126,1,0,0,NULL,'444-2349',NULL,'4442349',1),
+ (42,76,1,1,0,NULL,'229-2280',NULL,'2292280',2),
+ (43,76,1,0,0,NULL,'(292) 204-1367',NULL,'2922041367',1),
+ (44,116,1,1,0,NULL,'590-2233',NULL,'5902233',2),
+ (45,116,1,0,0,NULL,'877-6167',NULL,'8776167',2),
+ (46,149,1,1,0,NULL,'(721) 365-9584',NULL,'7213659584',2),
+ (47,135,1,1,0,NULL,'406-1292',NULL,'4061292',1),
+ (48,147,1,1,0,NULL,'574-1811',NULL,'5741811',1),
+ (49,131,1,1,0,NULL,'(495) 345-1345',NULL,'4953451345',1),
+ (50,88,1,1,0,NULL,'(425) 338-4268',NULL,'4253384268',1),
+ (51,88,1,0,0,NULL,'(312) 351-7531',NULL,'3123517531',1),
+ (52,200,1,1,0,NULL,'(229) 375-3756',NULL,'2293753756',1),
+ (53,200,1,0,0,NULL,'244-8897',NULL,'2448897',1),
+ (54,21,1,1,0,NULL,'811-2695',NULL,'8112695',2),
+ (55,21,1,0,0,NULL,'(787) 213-8032',NULL,'7872138032',2),
+ (56,48,1,1,0,NULL,'(264) 286-4791',NULL,'2642864791',1),
+ (57,48,1,0,0,NULL,'(675) 663-8290',NULL,'6756638290',1),
+ (58,99,1,1,0,NULL,'(353) 688-5483',NULL,'3536885483',1),
+ (59,99,1,0,0,NULL,'868-5196',NULL,'8685196',1),
+ (60,107,1,1,0,NULL,'(759) 383-1340',NULL,'7593831340',1),
+ (61,136,1,1,0,NULL,'(323) 692-9618',NULL,'3236929618',1),
+ (62,142,1,1,0,NULL,'(655) 445-6644',NULL,'6554456644',1),
+ (63,175,1,1,0,NULL,'490-9070',NULL,'4909070',2),
+ (64,175,1,0,0,NULL,'(564) 253-8226',NULL,'5642538226',1),
+ (65,148,1,1,0,NULL,'399-9174',NULL,'3999174',1),
+ (66,146,1,1,0,NULL,'(377) 344-5441',NULL,'3773445441',1),
+ (67,30,1,1,0,NULL,'524-4405',NULL,'5244405',2),
+ (68,122,1,1,0,NULL,'(843) 258-2699',NULL,'8432582699',2),
+ (69,159,1,1,0,NULL,'895-4057',NULL,'8954057',2),
+ (70,159,1,0,0,NULL,'300-1954',NULL,'3001954',1),
+ (71,100,1,1,0,NULL,'739-2383',NULL,'7392383',2),
+ (72,100,1,0,0,NULL,'(328) 673-3228',NULL,'3286733228',2),
+ (73,44,1,1,0,NULL,'(808) 663-6537',NULL,'8086636537',2),
+ (74,44,1,0,0,NULL,'454-8435',NULL,'4548435',1),
+ (75,63,1,1,0,NULL,'(873) 732-8956',NULL,'8737328956',1),
+ (76,63,1,0,0,NULL,'(212) 596-7051',NULL,'2125967051',1),
+ (77,66,1,1,0,NULL,'(284) 650-4538',NULL,'2846504538',1),
+ (78,36,1,1,0,NULL,'514-8993',NULL,'5148993',2),
+ (79,36,1,0,0,NULL,'(621) 425-6472',NULL,'6214256472',1),
+ (80,13,1,1,0,NULL,'640-8235',NULL,'6408235',1),
+ (81,13,1,0,0,NULL,'307-5196',NULL,'3075196',2),
+ (82,144,1,1,0,NULL,'418-2253',NULL,'4182253',2),
+ (83,34,1,1,0,NULL,'414-1909',NULL,'4141909',2),
+ (84,34,1,0,0,NULL,'(483) 225-6458',NULL,'4832256458',1),
+ (85,140,1,1,0,NULL,'459-4619',NULL,'4594619',1),
+ (86,140,1,0,0,NULL,'272-4332',NULL,'2724332',2),
+ (87,81,1,1,0,NULL,'363-9755',NULL,'3639755',1),
+ (88,81,1,0,0,NULL,'(608) 537-1180',NULL,'6085371180',1),
+ (89,139,1,1,0,NULL,'675-1553',NULL,'6751553',1),
+ (90,103,1,1,0,NULL,'295-5740',NULL,'2955740',1),
+ (91,6,1,1,0,NULL,'(298) 241-4643',NULL,'2982414643',1),
+ (92,58,1,1,0,NULL,'206-6250',NULL,'2066250',1),
+ (93,58,1,0,0,NULL,'(626) 327-2993',NULL,'6263272993',1),
+ (94,132,1,1,0,NULL,'(686) 710-7673',NULL,'6867107673',1),
+ (95,132,1,0,0,NULL,'(230) 350-4706',NULL,'2303504706',2),
+ (96,145,1,1,0,NULL,'(210) 587-7428',NULL,'2105877428',1),
+ (97,157,1,1,0,NULL,'(662) 776-6793',NULL,'6627766793',2),
+ (98,157,1,0,0,NULL,'434-8633',NULL,'4348633',1),
+ (99,183,1,1,0,NULL,'207-4326',NULL,'2074326',2),
+ (100,33,1,1,0,NULL,'522-2498',NULL,'5222498',1),
+ (101,55,1,1,0,NULL,'603-3506',NULL,'6033506',2),
+ (102,128,1,1,0,NULL,'(330) 233-7554',NULL,'3302337554',1),
+ (103,8,1,1,0,NULL,'828-2338',NULL,'8282338',1),
+ (104,89,1,1,0,NULL,'(275) 383-2166',NULL,'2753832166',1),
+ (105,89,1,0,0,NULL,'(445) 507-5154',NULL,'4455075154',1),
+ (106,130,1,1,0,NULL,'710-4396',NULL,'7104396',1),
+ (107,130,1,0,0,NULL,'(608) 447-9773',NULL,'6084479773',2),
+ (108,143,1,1,0,NULL,'(764) 265-2156',NULL,'7642652156',1),
+ (109,143,1,0,0,NULL,'(501) 583-5924',NULL,'5015835924',1),
+ (110,150,1,1,0,NULL,'377-3069',NULL,'3773069',1),
+ (111,50,1,1,0,NULL,'(274) 407-7319',NULL,'2744077319',2),
+ (112,180,1,1,0,NULL,'(479) 294-4913',NULL,'4792944913',2),
+ (113,84,1,1,0,NULL,'876-5083',NULL,'8765083',1),
+ (114,84,1,0,0,NULL,'866-7911',NULL,'8667911',1),
+ (115,119,1,1,0,NULL,'626-6833',NULL,'6266833',2),
+ (116,119,1,0,0,NULL,'(497) 516-3235',NULL,'4975163235',2),
+ (117,133,1,1,0,NULL,'319-4553',NULL,'3194553',2),
+ (118,133,1,0,0,NULL,'806-7566',NULL,'8067566',1),
+ (119,194,1,1,0,NULL,'707-4577',NULL,'7074577',1),
+ (120,59,1,1,0,NULL,'220-1066',NULL,'2201066',1),
+ (121,59,1,0,0,NULL,'(534) 284-8077',NULL,'5342848077',1),
+ (122,27,1,1,0,NULL,'679-5416',NULL,'6795416',2),
+ (123,27,1,0,0,NULL,'891-4304',NULL,'8914304',2),
+ (124,91,1,1,0,NULL,'(858) 791-1832',NULL,'8587911832',2),
+ (125,91,1,0,0,NULL,'248-5768',NULL,'2485768',1),
+ (126,32,1,1,0,NULL,'(645) 696-3487',NULL,'6456963487',1),
+ (127,52,1,1,0,NULL,'(332) 706-1068',NULL,'3327061068',1),
+ (128,52,1,0,0,NULL,'(395) 443-4209',NULL,'3954434209',1),
+ (129,31,1,1,0,NULL,'(701) 694-9901',NULL,'7016949901',2),
+ (130,31,1,0,0,NULL,'268-2970',NULL,'2682970',1),
+ (131,155,1,1,0,NULL,'(862) 616-2217',NULL,'8626162217',1),
+ (132,11,1,1,0,NULL,'396-1588',NULL,'3961588',1),
+ (133,24,1,1,0,NULL,'(239) 746-1248',NULL,'2397461248',1),
+ (134,24,1,0,0,NULL,'550-6720',NULL,'5506720',2),
+ (135,93,1,1,0,NULL,'(828) 681-4961',NULL,'8286814961',2),
+ (136,93,1,0,0,NULL,'(799) 492-7090',NULL,'7994927090',2),
+ (137,73,1,1,0,NULL,'388-4622',NULL,'3884622',1),
+ (138,73,1,0,0,NULL,'215-3923',NULL,'2153923',2),
+ (139,109,1,1,0,NULL,'(294) 297-1178',NULL,'2942971178',2),
+ (140,109,1,0,0,NULL,'459-2509',NULL,'4592509',2),
+ (141,163,1,1,0,NULL,'675-6616',NULL,'6756616',1),
+ (142,163,1,0,0,NULL,'745-3502',NULL,'7453502',2),
+ (143,5,1,1,0,NULL,'(661) 394-3727',NULL,'6613943727',2),
+ (144,5,1,0,0,NULL,'(381) 364-9727',NULL,'3813649727',2),
+ (145,4,1,1,0,NULL,'(204) 634-9784',NULL,'2046349784',2),
+ (146,169,1,1,0,NULL,'559-8597',NULL,'5598597',1),
+ (147,42,1,1,0,NULL,'217-8845',NULL,'2178845',2),
+ (148,42,1,0,0,NULL,'(549) 556-5950',NULL,'5495565950',2),
+ (149,90,1,1,0,NULL,'(616) 690-9960',NULL,'6166909960',1),
+ (150,90,1,0,0,NULL,'617-1536',NULL,'6171536',2),
+ (151,20,1,1,0,NULL,'498-7608',NULL,'4987608',2),
+ (152,28,1,1,0,NULL,'(580) 493-9923',NULL,'5804939923',1),
+ (153,184,1,1,0,NULL,'(502) 221-9737',NULL,'5022219737',1),
+ (154,184,1,0,0,NULL,'(807) 858-1323',NULL,'8078581323',1),
+ (155,152,1,1,0,NULL,'423-3878',NULL,'4233878',2),
+ (156,129,1,1,0,NULL,'553-3089',NULL,'5533089',1),
+ (157,165,1,1,0,NULL,'(327) 783-3030',NULL,'3277833030',2),
+ (158,87,1,1,0,NULL,'(851) 326-1014',NULL,'8513261014',1),
+ (159,87,1,0,0,NULL,'(722) 554-3854',NULL,'7225543854',1),
+ (160,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),
+ (161,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),
+ (162,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1);
 /*!40000 ALTER TABLE `civicrm_phone` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -7081,8 +7084,7 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_pledge_block` WRITE;
 /*!40000 ALTER TABLE `civicrm_pledge_block` DISABLE KEYS */;
 INSERT INTO `civicrm_pledge_block` (`id`, `entity_table`, `entity_id`, `pledge_frequency_unit`, `is_pledge_interval`, `max_reminders`, `initial_reminder_day`, `additional_reminder_day`, `pledge_start_date`, `is_pledge_start_date_visible`, `is_pledge_start_date_editable`) VALUES
- (1,'civicrm_contribution_page',3,'weekmonthyear',1,1,5,5,NULL,0,0),
- (2,'civicrm_contribution_page',1,'weekmonthyear',0,2,5,5,NULL,0,0);
+ (1,'civicrm_contribution_page',3,'weekmonthyear',1,1,5,5,NULL,0,0);
 /*!40000 ALTER TABLE `civicrm_pledge_block` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -7161,7 +7163,7 @@ LOCK TABLES `civicrm_price_field` WRITE;
 INSERT INTO `civicrm_price_field` (`id`, `price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `help_pre`, `help_post`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `active_on`, `expire_on`, `javascript`, `visibility_id`) VALUES
  (1,1,'contribution_amount','Contribution Amount','Text',0,NULL,NULL,1,1,1,1,1,NULL,NULL,NULL,1),
  (2,3,'contribution_amount','Contribution Amount','Radio',0,NULL,NULL,2,1,1,1,0,NULL,NULL,NULL,1),
- (3,3,'other_amount','Other Amount','Text',0,NULL,NULL,3,0,1,1,0,NULL,NULL,NULL,1),
+ (3,3,'other_amount','Additional Amount','Text',0,NULL,NULL,3,0,1,1,0,NULL,NULL,NULL,1),
  (4,2,'1','Membership Amount','Radio',0,NULL,NULL,1,1,1,1,1,NULL,NULL,NULL,1),
  (5,4,'membership_amount','Membership','Radio',0,NULL,NULL,1,1,1,1,1,NULL,NULL,NULL,1),
  (6,5,'other_amount','Contribution Amount','Text',0,NULL,NULL,3,0,1,1,1,NULL,NULL,NULL,1),
@@ -7292,224 +7294,222 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_relationship` WRITE;
 /*!40000 ALTER TABLE `civicrm_relationship` DISABLE KEYS */;
 INSERT INTO `civicrm_relationship` (`id`, `contact_id_a`, `contact_id_b`, `relationship_type_id`, `start_date`, `end_date`, `is_active`, `description`, `is_permission_a_b`, `is_permission_b_a`, `case_id`, `created_date`, `modified_date`) VALUES
- (1,24,86,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (2,189,86,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (3,24,16,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (4,189,16,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (5,189,24,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (6,16,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (7,24,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (8,189,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (9,86,58,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (10,16,86,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (11,151,141,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (12,20,141,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (13,151,176,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (14,20,176,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (15,20,151,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (16,176,190,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (17,151,190,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (18,20,190,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (19,141,190,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (20,176,141,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (21,125,49,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (22,55,49,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (23,125,200,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (24,55,200,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (25,55,125,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (26,200,155,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (27,125,155,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (28,55,155,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (29,49,155,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (30,200,49,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (31,34,150,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (32,164,150,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (33,34,179,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (34,164,179,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (35,164,34,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (36,179,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (37,34,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (38,164,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (39,150,26,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (40,179,150,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (41,44,183,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (42,60,183,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (43,44,193,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (44,60,193,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (45,60,44,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (46,193,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (47,44,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (48,60,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (49,183,53,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (50,193,183,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (51,76,84,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (52,126,84,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (53,76,109,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (54,126,109,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (55,126,76,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (56,109,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (57,76,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (58,126,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (59,84,156,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (60,109,84,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (61,147,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (62,74,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (63,147,149,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (64,74,149,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (65,74,147,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (66,149,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (67,147,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (68,74,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (69,46,131,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (70,149,46,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (71,162,140,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (72,66,140,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (73,162,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (74,66,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (75,66,162,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (76,163,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (77,162,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (78,66,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (79,140,10,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (80,163,140,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (81,170,21,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (82,45,21,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (83,170,14,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (84,45,14,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (85,45,170,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (86,14,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (87,170,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (88,45,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (89,21,177,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (90,14,21,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (91,112,124,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (92,79,124,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (93,112,199,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (94,79,199,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (95,79,112,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (96,199,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (97,112,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (98,79,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (99,124,3,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (100,199,124,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (101,104,48,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (102,92,48,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (103,104,91,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (104,92,91,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (105,92,104,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (106,91,191,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (107,104,191,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (108,92,191,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (109,48,191,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (110,91,48,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (111,160,110,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (112,57,110,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (113,160,100,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (114,57,100,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (115,57,160,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (116,100,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (117,160,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (118,57,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (119,110,134,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (120,100,110,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (121,13,198,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (122,62,198,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (123,13,6,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (124,62,6,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (125,62,13,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (126,6,73,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (127,13,73,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (128,62,73,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (129,198,73,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (130,6,198,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (131,99,15,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (132,116,15,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (133,99,137,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (134,116,137,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (135,116,99,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (136,137,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (137,99,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (138,116,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (139,15,88,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (140,137,15,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (141,114,180,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (142,32,180,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (143,114,182,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (144,32,182,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (145,32,114,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (146,182,23,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (147,114,23,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (148,32,23,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (149,180,23,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (150,182,180,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (151,39,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (152,41,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (153,39,90,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (154,41,90,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (155,41,39,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (156,90,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (157,39,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (158,41,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (159,18,51,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (160,90,18,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (161,196,2,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (162,195,2,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (163,196,121,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (164,195,121,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (165,195,196,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (166,121,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (167,196,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (168,195,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (169,2,43,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (170,121,2,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (171,61,154,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (172,63,154,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (173,61,12,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (174,63,12,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (175,63,61,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (176,12,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (177,61,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (178,63,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (179,154,75,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (180,12,154,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (181,175,47,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (182,85,47,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (183,175,181,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (184,85,181,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (185,85,175,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (186,181,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (187,175,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (188,85,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (189,47,65,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (190,181,47,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (191,111,36,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (192,152,36,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (193,111,118,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (194,152,118,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (195,152,111,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (196,118,159,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (197,111,159,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (198,152,159,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (199,36,159,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (200,118,36,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (201,15,7,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (202,129,19,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (203,33,22,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (204,74,50,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (205,109,52,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (206,185,59,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (207,184,64,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (208,76,67,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (209,85,68,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (210,4,69,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (211,81,77,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (212,187,103,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (213,18,122,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (214,72,133,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (215,115,135,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (216,197,139,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (217,178,146,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'),
- (218,96,148,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30');
+ (1,156,170,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (2,144,170,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (3,156,13,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (4,144,13,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (5,144,156,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (6,13,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (7,156,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (8,144,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (9,170,3,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (10,13,170,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (11,187,34,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (12,140,34,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (13,187,75,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (14,140,75,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (15,140,187,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (16,75,111,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (17,187,111,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (18,140,111,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (19,34,111,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (20,75,34,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (21,139,81,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (22,98,81,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (23,139,14,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (24,98,14,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (25,98,139,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (26,14,92,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (27,139,92,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (28,98,92,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (29,81,92,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (30,14,81,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (31,141,168,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (32,103,168,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (33,141,196,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (34,103,196,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (35,103,141,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (36,196,61,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (37,141,61,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (38,103,61,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (39,168,61,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (40,196,168,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (41,185,6,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (42,127,6,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (43,185,58,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (44,127,58,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (45,127,185,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (46,58,106,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (47,185,106,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (48,127,106,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (49,6,106,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (50,58,6,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (51,171,132,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (52,49,132,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (53,171,145,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (54,49,145,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (55,49,171,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (56,145,56,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (57,171,56,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (58,49,56,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (59,132,56,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (60,145,132,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (61,69,157,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (62,166,157,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (63,69,183,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (64,166,183,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (65,166,69,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (66,183,193,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (67,69,193,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (68,166,193,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (69,157,193,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (70,183,157,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (71,33,195,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (72,55,195,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (73,33,22,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (74,55,22,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (75,55,33,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (76,22,151,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (77,33,151,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (78,55,151,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (79,195,151,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (80,22,195,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (81,54,128,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (82,89,128,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (83,54,8,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (84,89,8,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (85,89,54,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (86,8,97,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (87,54,97,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (88,89,97,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (89,128,97,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (90,8,128,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (91,83,62,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (92,130,62,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (93,83,7,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (94,130,7,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:34','2023-12-17 20:11:34'),
+ (95,130,83,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (96,7,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (97,83,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (98,130,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (99,62,53,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (100,7,62,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (101,150,143,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (102,50,143,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (103,150,173,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (104,50,173,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (105,50,150,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (106,173,138,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (107,150,138,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (108,50,138,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (109,143,138,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (110,173,143,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (111,84,180,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (112,119,180,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (113,84,177,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (114,119,177,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (115,119,84,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (116,177,199,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (117,84,199,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (118,119,199,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (119,180,199,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (120,177,180,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (121,59,133,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (122,27,133,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (123,59,194,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (124,27,194,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (125,27,59,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (126,194,172,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (127,59,172,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (128,27,172,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (129,133,172,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (130,194,133,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (131,52,91,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (132,31,91,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (133,52,32,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (134,31,32,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (135,31,52,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (136,32,186,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (137,52,186,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (138,31,186,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (139,91,186,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (140,32,91,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (141,11,80,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (142,24,80,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (143,11,155,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (144,24,155,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (145,24,11,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (146,155,167,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (147,11,167,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (148,24,167,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (149,80,167,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (150,155,80,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (151,109,93,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (152,163,93,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (153,109,73,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (154,163,73,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (155,163,109,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (156,73,2,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (157,109,2,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (158,163,2,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (159,93,2,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (160,73,93,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (161,4,5,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (162,169,5,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (163,4,134,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (164,169,134,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (165,169,4,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (166,134,68,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (167,4,68,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (168,169,68,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (169,5,68,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (170,134,5,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (171,20,42,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (172,104,42,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (173,20,90,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (174,104,90,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (175,104,20,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (176,90,25,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (177,20,25,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (178,104,25,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (179,42,25,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (180,90,42,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (181,152,28,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (182,129,28,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (183,152,184,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (184,129,184,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (185,129,152,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (186,184,39,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (187,152,39,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (188,129,39,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (189,28,39,7,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (190,184,28,2,NULL,NULL,0,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (191,181,165,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (192,87,165,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (193,181,174,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (194,87,174,1,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (195,87,181,4,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (196,174,125,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (197,181,125,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (198,87,125,8,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (199,165,125,7,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (200,174,165,2,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (201,146,9,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (202,32,15,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (203,77,17,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (204,66,18,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (205,145,26,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (206,152,35,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (207,20,46,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (208,187,47,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (209,150,51,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (210,109,60,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (211,185,64,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (212,200,71,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (213,8,115,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (214,55,162,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (215,41,197,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35'),
+ (216,114,201,5,NULL,NULL,1,NULL,0,0,NULL,'2023-12-17 20:11:35','2023-12-17 20:11:35');
 /*!40000 ALTER TABLE `civicrm_relationship` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -7520,442 +7520,438 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_relationship_cache` WRITE;
 /*!40000 ALTER TABLE `civicrm_relationship_cache` DISABLE KEYS */;
 INSERT INTO `civicrm_relationship_cache` (`id`, `relationship_id`, `relationship_type_id`, `orientation`, `near_contact_id`, `near_relation`, `far_contact_id`, `far_relation`, `is_active`, `start_date`, `end_date`, `case_id`) VALUES
- (1,1,1,'a_b',24,'Child of',86,'Parent of',1,NULL,NULL,NULL),
- (2,1,1,'b_a',86,'Parent of',24,'Child of',1,NULL,NULL,NULL),
- (3,2,1,'a_b',189,'Child of',86,'Parent of',1,NULL,NULL,NULL),
- (4,2,1,'b_a',86,'Parent of',189,'Child of',1,NULL,NULL,NULL),
- (5,3,1,'a_b',24,'Child of',16,'Parent of',1,NULL,NULL,NULL),
- (6,3,1,'b_a',16,'Parent of',24,'Child of',1,NULL,NULL,NULL),
- (7,4,1,'a_b',189,'Child of',16,'Parent of',1,NULL,NULL,NULL),
- (8,4,1,'b_a',16,'Parent of',189,'Child of',1,NULL,NULL,NULL),
- (9,5,4,'a_b',189,'Sibling of',24,'Sibling of',1,NULL,NULL,NULL),
- (10,5,4,'b_a',24,'Sibling of',189,'Sibling of',1,NULL,NULL,NULL),
- (11,6,8,'a_b',16,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL),
- (12,6,8,'b_a',58,'Household Member is',16,'Household Member of',1,NULL,NULL,NULL),
- (13,7,8,'a_b',24,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL),
- (14,7,8,'b_a',58,'Household Member is',24,'Household Member of',1,NULL,NULL,NULL),
- (15,8,8,'a_b',189,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL),
- (16,8,8,'b_a',58,'Household Member is',189,'Household Member of',1,NULL,NULL,NULL),
- (17,9,7,'a_b',86,'Head of Household for',58,'Head of Household is',0,NULL,NULL,NULL),
- (18,9,7,'b_a',58,'Head of Household is',86,'Head of Household for',0,NULL,NULL,NULL),
- (19,10,2,'a_b',16,'Spouse of',86,'Spouse of',0,NULL,NULL,NULL),
- (20,10,2,'b_a',86,'Spouse of',16,'Spouse of',0,NULL,NULL,NULL),
- (21,11,1,'a_b',151,'Child of',141,'Parent of',1,NULL,NULL,NULL),
- (22,11,1,'b_a',141,'Parent of',151,'Child of',1,NULL,NULL,NULL),
- (23,12,1,'a_b',20,'Child of',141,'Parent of',1,NULL,NULL,NULL),
- (24,12,1,'b_a',141,'Parent of',20,'Child of',1,NULL,NULL,NULL),
- (25,13,1,'a_b',151,'Child of',176,'Parent of',1,NULL,NULL,NULL),
- (26,13,1,'b_a',176,'Parent of',151,'Child of',1,NULL,NULL,NULL),
- (27,14,1,'a_b',20,'Child of',176,'Parent of',1,NULL,NULL,NULL),
- (28,14,1,'b_a',176,'Parent of',20,'Child of',1,NULL,NULL,NULL),
- (29,15,4,'a_b',20,'Sibling of',151,'Sibling of',1,NULL,NULL,NULL),
- (30,15,4,'b_a',151,'Sibling of',20,'Sibling of',1,NULL,NULL,NULL),
- (31,16,8,'a_b',176,'Household Member of',190,'Household Member is',1,NULL,NULL,NULL),
- (32,16,8,'b_a',190,'Household Member is',176,'Household Member of',1,NULL,NULL,NULL),
- (33,17,8,'a_b',151,'Household Member of',190,'Household Member is',1,NULL,NULL,NULL),
- (34,17,8,'b_a',190,'Household Member is',151,'Household Member of',1,NULL,NULL,NULL),
- (35,18,8,'a_b',20,'Household Member of',190,'Household Member is',1,NULL,NULL,NULL),
- (36,18,8,'b_a',190,'Household Member is',20,'Household Member of',1,NULL,NULL,NULL),
- (37,19,7,'a_b',141,'Head of Household for',190,'Head of Household is',1,NULL,NULL,NULL),
- (38,19,7,'b_a',190,'Head of Household is',141,'Head of Household for',1,NULL,NULL,NULL),
- (39,20,2,'a_b',176,'Spouse of',141,'Spouse of',1,NULL,NULL,NULL),
- (40,20,2,'b_a',141,'Spouse of',176,'Spouse of',1,NULL,NULL,NULL),
- (41,21,1,'a_b',125,'Child of',49,'Parent of',1,NULL,NULL,NULL),
- (42,21,1,'b_a',49,'Parent of',125,'Child of',1,NULL,NULL,NULL),
- (43,22,1,'a_b',55,'Child of',49,'Parent of',1,NULL,NULL,NULL),
- (44,22,1,'b_a',49,'Parent of',55,'Child of',1,NULL,NULL,NULL),
- (45,23,1,'a_b',125,'Child of',200,'Parent of',1,NULL,NULL,NULL),
- (46,23,1,'b_a',200,'Parent of',125,'Child of',1,NULL,NULL,NULL),
- (47,24,1,'a_b',55,'Child of',200,'Parent of',1,NULL,NULL,NULL),
- (48,24,1,'b_a',200,'Parent of',55,'Child of',1,NULL,NULL,NULL),
- (49,25,4,'a_b',55,'Sibling of',125,'Sibling of',1,NULL,NULL,NULL),
- (50,25,4,'b_a',125,'Sibling of',55,'Sibling of',1,NULL,NULL,NULL),
- (51,26,8,'a_b',200,'Household Member of',155,'Household Member is',1,NULL,NULL,NULL),
- (52,26,8,'b_a',155,'Household Member is',200,'Household Member of',1,NULL,NULL,NULL),
- (53,27,8,'a_b',125,'Household Member of',155,'Household Member is',1,NULL,NULL,NULL),
- (54,27,8,'b_a',155,'Household Member is',125,'Household Member of',1,NULL,NULL,NULL),
- (55,28,8,'a_b',55,'Household Member of',155,'Household Member is',1,NULL,NULL,NULL),
- (56,28,8,'b_a',155,'Household Member is',55,'Household Member of',1,NULL,NULL,NULL),
- (57,29,7,'a_b',49,'Head of Household for',155,'Head of Household is',1,NULL,NULL,NULL),
- (58,29,7,'b_a',155,'Head of Household is',49,'Head of Household for',1,NULL,NULL,NULL),
- (59,30,2,'a_b',200,'Spouse of',49,'Spouse of',1,NULL,NULL,NULL),
- (60,30,2,'b_a',49,'Spouse of',200,'Spouse of',1,NULL,NULL,NULL),
- (61,31,1,'a_b',34,'Child of',150,'Parent of',1,NULL,NULL,NULL),
- (62,31,1,'b_a',150,'Parent of',34,'Child of',1,NULL,NULL,NULL),
- (63,32,1,'a_b',164,'Child of',150,'Parent of',1,NULL,NULL,NULL),
- (64,32,1,'b_a',150,'Parent of',164,'Child of',1,NULL,NULL,NULL),
- (65,33,1,'a_b',34,'Child of',179,'Parent of',1,NULL,NULL,NULL),
- (66,33,1,'b_a',179,'Parent of',34,'Child of',1,NULL,NULL,NULL),
- (67,34,1,'a_b',164,'Child of',179,'Parent of',1,NULL,NULL,NULL),
- (68,34,1,'b_a',179,'Parent of',164,'Child of',1,NULL,NULL,NULL),
- (69,35,4,'a_b',164,'Sibling of',34,'Sibling of',1,NULL,NULL,NULL),
- (70,35,4,'b_a',34,'Sibling of',164,'Sibling of',1,NULL,NULL,NULL),
- (71,36,8,'a_b',179,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL),
- (72,36,8,'b_a',26,'Household Member is',179,'Household Member of',1,NULL,NULL,NULL),
- (73,37,8,'a_b',34,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL),
- (74,37,8,'b_a',26,'Household Member is',34,'Household Member of',1,NULL,NULL,NULL),
- (75,38,8,'a_b',164,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL),
- (76,38,8,'b_a',26,'Household Member is',164,'Household Member of',1,NULL,NULL,NULL),
- (77,39,7,'a_b',150,'Head of Household for',26,'Head of Household is',0,NULL,NULL,NULL),
- (78,39,7,'b_a',26,'Head of Household is',150,'Head of Household for',0,NULL,NULL,NULL),
- (79,40,2,'a_b',179,'Spouse of',150,'Spouse of',0,NULL,NULL,NULL),
- (80,40,2,'b_a',150,'Spouse of',179,'Spouse of',0,NULL,NULL,NULL),
- (81,41,1,'a_b',44,'Child of',183,'Parent of',1,NULL,NULL,NULL),
- (82,41,1,'b_a',183,'Parent of',44,'Child of',1,NULL,NULL,NULL),
- (83,42,1,'a_b',60,'Child of',183,'Parent of',1,NULL,NULL,NULL),
- (84,42,1,'b_a',183,'Parent of',60,'Child of',1,NULL,NULL,NULL),
- (85,43,1,'a_b',44,'Child of',193,'Parent of',1,NULL,NULL,NULL),
- (86,43,1,'b_a',193,'Parent of',44,'Child of',1,NULL,NULL,NULL),
- (87,44,1,'a_b',60,'Child of',193,'Parent of',1,NULL,NULL,NULL),
- (88,44,1,'b_a',193,'Parent of',60,'Child of',1,NULL,NULL,NULL),
- (89,45,4,'a_b',60,'Sibling of',44,'Sibling of',1,NULL,NULL,NULL),
- (90,45,4,'b_a',44,'Sibling of',60,'Sibling of',1,NULL,NULL,NULL),
- (91,46,8,'a_b',193,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL),
- (92,46,8,'b_a',53,'Household Member is',193,'Household Member of',1,NULL,NULL,NULL),
- (93,47,8,'a_b',44,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL),
- (94,47,8,'b_a',53,'Household Member is',44,'Household Member of',1,NULL,NULL,NULL),
- (95,48,8,'a_b',60,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL),
- (96,48,8,'b_a',53,'Household Member is',60,'Household Member of',1,NULL,NULL,NULL),
- (97,49,7,'a_b',183,'Head of Household for',53,'Head of Household is',0,NULL,NULL,NULL),
- (98,49,7,'b_a',53,'Head of Household is',183,'Head of Household for',0,NULL,NULL,NULL),
- (99,50,2,'a_b',193,'Spouse of',183,'Spouse of',0,NULL,NULL,NULL),
- (100,50,2,'b_a',183,'Spouse of',193,'Spouse of',0,NULL,NULL,NULL),
- (101,51,1,'a_b',76,'Child of',84,'Parent of',1,NULL,NULL,NULL),
- (102,51,1,'b_a',84,'Parent of',76,'Child of',1,NULL,NULL,NULL),
- (103,52,1,'a_b',126,'Child of',84,'Parent of',1,NULL,NULL,NULL),
- (104,52,1,'b_a',84,'Parent of',126,'Child of',1,NULL,NULL,NULL),
- (105,53,1,'a_b',76,'Child of',109,'Parent of',1,NULL,NULL,NULL),
- (106,53,1,'b_a',109,'Parent of',76,'Child of',1,NULL,NULL,NULL),
- (107,54,1,'a_b',126,'Child of',109,'Parent of',1,NULL,NULL,NULL),
- (108,54,1,'b_a',109,'Parent of',126,'Child of',1,NULL,NULL,NULL),
- (109,55,4,'a_b',126,'Sibling of',76,'Sibling of',1,NULL,NULL,NULL),
- (110,55,4,'b_a',76,'Sibling of',126,'Sibling of',1,NULL,NULL,NULL),
- (111,56,8,'a_b',109,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL),
- (112,56,8,'b_a',156,'Household Member is',109,'Household Member of',1,NULL,NULL,NULL),
- (113,57,8,'a_b',76,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL),
- (114,57,8,'b_a',156,'Household Member is',76,'Household Member of',1,NULL,NULL,NULL),
- (115,58,8,'a_b',126,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL),
- (116,58,8,'b_a',156,'Household Member is',126,'Household Member of',1,NULL,NULL,NULL),
- (117,59,7,'a_b',84,'Head of Household for',156,'Head of Household is',1,NULL,NULL,NULL),
- (118,59,7,'b_a',156,'Head of Household is',84,'Head of Household for',1,NULL,NULL,NULL),
- (119,60,2,'a_b',109,'Spouse of',84,'Spouse of',1,NULL,NULL,NULL),
- (120,60,2,'b_a',84,'Spouse of',109,'Spouse of',1,NULL,NULL,NULL),
- (121,61,1,'a_b',147,'Child of',46,'Parent of',1,NULL,NULL,NULL),
- (122,61,1,'b_a',46,'Parent of',147,'Child of',1,NULL,NULL,NULL),
- (123,62,1,'a_b',74,'Child of',46,'Parent of',1,NULL,NULL,NULL),
- (124,62,1,'b_a',46,'Parent of',74,'Child of',1,NULL,NULL,NULL),
- (125,63,1,'a_b',147,'Child of',149,'Parent of',1,NULL,NULL,NULL),
- (126,63,1,'b_a',149,'Parent of',147,'Child of',1,NULL,NULL,NULL),
- (127,64,1,'a_b',74,'Child of',149,'Parent of',1,NULL,NULL,NULL),
- (128,64,1,'b_a',149,'Parent of',74,'Child of',1,NULL,NULL,NULL),
- (129,65,4,'a_b',74,'Sibling of',147,'Sibling of',1,NULL,NULL,NULL),
- (130,65,4,'b_a',147,'Sibling of',74,'Sibling of',1,NULL,NULL,NULL),
- (131,66,8,'a_b',149,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL),
- (132,66,8,'b_a',131,'Household Member is',149,'Household Member of',1,NULL,NULL,NULL),
- (133,67,8,'a_b',147,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL),
- (134,67,8,'b_a',131,'Household Member is',147,'Household Member of',1,NULL,NULL,NULL),
- (135,68,8,'a_b',74,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL),
- (136,68,8,'b_a',131,'Household Member is',74,'Household Member of',1,NULL,NULL,NULL),
- (137,69,7,'a_b',46,'Head of Household for',131,'Head of Household is',1,NULL,NULL,NULL),
- (138,69,7,'b_a',131,'Head of Household is',46,'Head of Household for',1,NULL,NULL,NULL),
- (139,70,2,'a_b',149,'Spouse of',46,'Spouse of',1,NULL,NULL,NULL),
- (140,70,2,'b_a',46,'Spouse of',149,'Spouse of',1,NULL,NULL,NULL),
- (141,71,1,'a_b',162,'Child of',140,'Parent of',1,NULL,NULL,NULL),
- (142,71,1,'b_a',140,'Parent of',162,'Child of',1,NULL,NULL,NULL),
- (143,72,1,'a_b',66,'Child of',140,'Parent of',1,NULL,NULL,NULL),
- (144,72,1,'b_a',140,'Parent of',66,'Child of',1,NULL,NULL,NULL),
- (145,73,1,'a_b',162,'Child of',163,'Parent of',1,NULL,NULL,NULL),
- (146,73,1,'b_a',163,'Parent of',162,'Child of',1,NULL,NULL,NULL),
- (147,74,1,'a_b',66,'Child of',163,'Parent of',1,NULL,NULL,NULL),
- (148,74,1,'b_a',163,'Parent of',66,'Child of',1,NULL,NULL,NULL),
- (149,75,4,'a_b',66,'Sibling of',162,'Sibling of',1,NULL,NULL,NULL),
- (150,75,4,'b_a',162,'Sibling of',66,'Sibling of',1,NULL,NULL,NULL),
- (151,76,8,'a_b',163,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL),
- (152,76,8,'b_a',10,'Household Member is',163,'Household Member of',1,NULL,NULL,NULL),
- (153,77,8,'a_b',162,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL),
- (154,77,8,'b_a',10,'Household Member is',162,'Household Member of',1,NULL,NULL,NULL),
- (155,78,8,'a_b',66,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL),
- (156,78,8,'b_a',10,'Household Member is',66,'Household Member of',1,NULL,NULL,NULL),
- (157,79,7,'a_b',140,'Head of Household for',10,'Head of Household is',1,NULL,NULL,NULL),
- (158,79,7,'b_a',10,'Head of Household is',140,'Head of Household for',1,NULL,NULL,NULL),
- (159,80,2,'a_b',163,'Spouse of',140,'Spouse of',1,NULL,NULL,NULL),
- (160,80,2,'b_a',140,'Spouse of',163,'Spouse of',1,NULL,NULL,NULL),
- (161,81,1,'a_b',170,'Child of',21,'Parent of',1,NULL,NULL,NULL),
- (162,81,1,'b_a',21,'Parent of',170,'Child of',1,NULL,NULL,NULL),
- (163,82,1,'a_b',45,'Child of',21,'Parent of',1,NULL,NULL,NULL),
- (164,82,1,'b_a',21,'Parent of',45,'Child of',1,NULL,NULL,NULL),
- (165,83,1,'a_b',170,'Child of',14,'Parent of',1,NULL,NULL,NULL),
- (166,83,1,'b_a',14,'Parent of',170,'Child of',1,NULL,NULL,NULL),
- (167,84,1,'a_b',45,'Child of',14,'Parent of',1,NULL,NULL,NULL),
- (168,84,1,'b_a',14,'Parent of',45,'Child of',1,NULL,NULL,NULL),
- (169,85,4,'a_b',45,'Sibling of',170,'Sibling of',1,NULL,NULL,NULL),
- (170,85,4,'b_a',170,'Sibling of',45,'Sibling of',1,NULL,NULL,NULL),
- (171,86,8,'a_b',14,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL),
- (172,86,8,'b_a',177,'Household Member is',14,'Household Member of',1,NULL,NULL,NULL),
- (173,87,8,'a_b',170,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL),
- (174,87,8,'b_a',177,'Household Member is',170,'Household Member of',1,NULL,NULL,NULL),
- (175,88,8,'a_b',45,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL),
- (176,88,8,'b_a',177,'Household Member is',45,'Household Member of',1,NULL,NULL,NULL),
- (177,89,7,'a_b',21,'Head of Household for',177,'Head of Household is',1,NULL,NULL,NULL),
- (178,89,7,'b_a',177,'Head of Household is',21,'Head of Household for',1,NULL,NULL,NULL),
- (179,90,2,'a_b',14,'Spouse of',21,'Spouse of',1,NULL,NULL,NULL),
- (180,90,2,'b_a',21,'Spouse of',14,'Spouse of',1,NULL,NULL,NULL),
- (181,91,1,'a_b',112,'Child of',124,'Parent of',1,NULL,NULL,NULL),
- (182,91,1,'b_a',124,'Parent of',112,'Child of',1,NULL,NULL,NULL),
- (183,92,1,'a_b',79,'Child of',124,'Parent of',1,NULL,NULL,NULL),
- (184,92,1,'b_a',124,'Parent of',79,'Child of',1,NULL,NULL,NULL),
- (185,93,1,'a_b',112,'Child of',199,'Parent of',1,NULL,NULL,NULL),
- (186,93,1,'b_a',199,'Parent of',112,'Child of',1,NULL,NULL,NULL),
- (187,94,1,'a_b',79,'Child of',199,'Parent of',1,NULL,NULL,NULL),
- (188,94,1,'b_a',199,'Parent of',79,'Child of',1,NULL,NULL,NULL),
- (189,95,4,'a_b',79,'Sibling of',112,'Sibling of',1,NULL,NULL,NULL),
- (190,95,4,'b_a',112,'Sibling of',79,'Sibling of',1,NULL,NULL,NULL),
- (191,96,8,'a_b',199,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL),
- (192,96,8,'b_a',3,'Household Member is',199,'Household Member of',1,NULL,NULL,NULL),
- (193,97,8,'a_b',112,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL),
- (194,97,8,'b_a',3,'Household Member is',112,'Household Member of',1,NULL,NULL,NULL),
- (195,98,8,'a_b',79,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL),
- (196,98,8,'b_a',3,'Household Member is',79,'Household Member of',1,NULL,NULL,NULL),
- (197,99,7,'a_b',124,'Head of Household for',3,'Head of Household is',1,NULL,NULL,NULL),
- (198,99,7,'b_a',3,'Head of Household is',124,'Head of Household for',1,NULL,NULL,NULL),
- (199,100,2,'a_b',199,'Spouse of',124,'Spouse of',1,NULL,NULL,NULL),
- (200,100,2,'b_a',124,'Spouse of',199,'Spouse of',1,NULL,NULL,NULL),
- (201,101,1,'a_b',104,'Child of',48,'Parent of',1,NULL,NULL,NULL),
- (202,101,1,'b_a',48,'Parent of',104,'Child of',1,NULL,NULL,NULL),
- (203,102,1,'a_b',92,'Child of',48,'Parent of',1,NULL,NULL,NULL),
- (204,102,1,'b_a',48,'Parent of',92,'Child of',1,NULL,NULL,NULL),
- (205,103,1,'a_b',104,'Child of',91,'Parent of',1,NULL,NULL,NULL),
- (206,103,1,'b_a',91,'Parent of',104,'Child of',1,NULL,NULL,NULL),
- (207,104,1,'a_b',92,'Child of',91,'Parent of',1,NULL,NULL,NULL),
- (208,104,1,'b_a',91,'Parent of',92,'Child of',1,NULL,NULL,NULL),
- (209,105,4,'a_b',92,'Sibling of',104,'Sibling of',1,NULL,NULL,NULL),
- (210,105,4,'b_a',104,'Sibling of',92,'Sibling of',1,NULL,NULL,NULL),
- (211,106,8,'a_b',91,'Household Member of',191,'Household Member is',1,NULL,NULL,NULL),
- (212,106,8,'b_a',191,'Household Member is',91,'Household Member of',1,NULL,NULL,NULL),
- (213,107,8,'a_b',104,'Household Member of',191,'Household Member is',1,NULL,NULL,NULL),
- (214,107,8,'b_a',191,'Household Member is',104,'Household Member of',1,NULL,NULL,NULL),
- (215,108,8,'a_b',92,'Household Member of',191,'Household Member is',1,NULL,NULL,NULL),
- (216,108,8,'b_a',191,'Household Member is',92,'Household Member of',1,NULL,NULL,NULL),
- (217,109,7,'a_b',48,'Head of Household for',191,'Head of Household is',1,NULL,NULL,NULL),
- (218,109,7,'b_a',191,'Head of Household is',48,'Head of Household for',1,NULL,NULL,NULL),
- (219,110,2,'a_b',91,'Spouse of',48,'Spouse of',1,NULL,NULL,NULL),
- (220,110,2,'b_a',48,'Spouse of',91,'Spouse of',1,NULL,NULL,NULL),
- (221,111,1,'a_b',160,'Child of',110,'Parent of',1,NULL,NULL,NULL),
- (222,111,1,'b_a',110,'Parent of',160,'Child of',1,NULL,NULL,NULL),
- (223,112,1,'a_b',57,'Child of',110,'Parent of',1,NULL,NULL,NULL),
- (224,112,1,'b_a',110,'Parent of',57,'Child of',1,NULL,NULL,NULL),
- (225,113,1,'a_b',160,'Child of',100,'Parent of',1,NULL,NULL,NULL),
- (226,113,1,'b_a',100,'Parent of',160,'Child of',1,NULL,NULL,NULL),
- (227,114,1,'a_b',57,'Child of',100,'Parent of',1,NULL,NULL,NULL),
- (228,114,1,'b_a',100,'Parent of',57,'Child of',1,NULL,NULL,NULL),
- (229,115,4,'a_b',57,'Sibling of',160,'Sibling of',1,NULL,NULL,NULL),
- (230,115,4,'b_a',160,'Sibling of',57,'Sibling of',1,NULL,NULL,NULL),
- (231,116,8,'a_b',100,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL),
- (232,116,8,'b_a',134,'Household Member is',100,'Household Member of',1,NULL,NULL,NULL),
- (233,117,8,'a_b',160,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL),
- (234,117,8,'b_a',134,'Household Member is',160,'Household Member of',1,NULL,NULL,NULL),
- (235,118,8,'a_b',57,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL),
- (236,118,8,'b_a',134,'Household Member is',57,'Household Member of',1,NULL,NULL,NULL),
- (237,119,7,'a_b',110,'Head of Household for',134,'Head of Household is',0,NULL,NULL,NULL),
- (238,119,7,'b_a',134,'Head of Household is',110,'Head of Household for',0,NULL,NULL,NULL),
- (239,120,2,'a_b',100,'Spouse of',110,'Spouse of',0,NULL,NULL,NULL),
- (240,120,2,'b_a',110,'Spouse of',100,'Spouse of',0,NULL,NULL,NULL),
- (241,121,1,'a_b',13,'Child of',198,'Parent of',1,NULL,NULL,NULL),
- (242,121,1,'b_a',198,'Parent of',13,'Child of',1,NULL,NULL,NULL),
- (243,122,1,'a_b',62,'Child of',198,'Parent of',1,NULL,NULL,NULL),
- (244,122,1,'b_a',198,'Parent of',62,'Child of',1,NULL,NULL,NULL),
- (245,123,1,'a_b',13,'Child of',6,'Parent of',1,NULL,NULL,NULL),
- (246,123,1,'b_a',6,'Parent of',13,'Child of',1,NULL,NULL,NULL),
- (247,124,1,'a_b',62,'Child of',6,'Parent of',1,NULL,NULL,NULL),
- (248,124,1,'b_a',6,'Parent of',62,'Child of',1,NULL,NULL,NULL),
- (249,125,4,'a_b',62,'Sibling of',13,'Sibling of',1,NULL,NULL,NULL),
- (250,125,4,'b_a',13,'Sibling of',62,'Sibling of',1,NULL,NULL,NULL),
- (251,126,8,'a_b',6,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL),
- (252,126,8,'b_a',73,'Household Member is',6,'Household Member of',1,NULL,NULL,NULL),
- (253,127,8,'a_b',13,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL),
- (254,127,8,'b_a',73,'Household Member is',13,'Household Member of',1,NULL,NULL,NULL),
- (255,128,8,'a_b',62,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL),
- (256,128,8,'b_a',73,'Household Member is',62,'Household Member of',1,NULL,NULL,NULL),
- (257,129,7,'a_b',198,'Head of Household for',73,'Head of Household is',0,NULL,NULL,NULL),
- (258,129,7,'b_a',73,'Head of Household is',198,'Head of Household for',0,NULL,NULL,NULL),
- (259,130,2,'a_b',6,'Spouse of',198,'Spouse of',0,NULL,NULL,NULL),
- (260,130,2,'b_a',198,'Spouse of',6,'Spouse of',0,NULL,NULL,NULL),
- (261,131,1,'a_b',99,'Child of',15,'Parent of',1,NULL,NULL,NULL),
- (262,131,1,'b_a',15,'Parent of',99,'Child of',1,NULL,NULL,NULL),
- (263,132,1,'a_b',116,'Child of',15,'Parent of',1,NULL,NULL,NULL),
- (264,132,1,'b_a',15,'Parent of',116,'Child of',1,NULL,NULL,NULL),
- (265,133,1,'a_b',99,'Child of',137,'Parent of',1,NULL,NULL,NULL),
- (266,133,1,'b_a',137,'Parent of',99,'Child of',1,NULL,NULL,NULL),
- (267,134,1,'a_b',116,'Child of',137,'Parent of',1,NULL,NULL,NULL),
- (268,134,1,'b_a',137,'Parent of',116,'Child of',1,NULL,NULL,NULL),
- (269,135,4,'a_b',116,'Sibling of',99,'Sibling of',1,NULL,NULL,NULL),
- (270,135,4,'b_a',99,'Sibling of',116,'Sibling of',1,NULL,NULL,NULL),
- (271,136,8,'a_b',137,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL),
- (272,136,8,'b_a',88,'Household Member is',137,'Household Member of',1,NULL,NULL,NULL),
- (273,137,8,'a_b',99,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL),
- (274,137,8,'b_a',88,'Household Member is',99,'Household Member of',1,NULL,NULL,NULL),
- (275,138,8,'a_b',116,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL),
- (276,138,8,'b_a',88,'Household Member is',116,'Household Member of',1,NULL,NULL,NULL),
- (277,139,7,'a_b',15,'Head of Household for',88,'Head of Household is',1,NULL,NULL,NULL),
- (278,139,7,'b_a',88,'Head of Household is',15,'Head of Household for',1,NULL,NULL,NULL),
- (279,140,2,'a_b',137,'Spouse of',15,'Spouse of',1,NULL,NULL,NULL),
- (280,140,2,'b_a',15,'Spouse of',137,'Spouse of',1,NULL,NULL,NULL),
- (281,141,1,'a_b',114,'Child of',180,'Parent of',1,NULL,NULL,NULL),
- (282,141,1,'b_a',180,'Parent of',114,'Child of',1,NULL,NULL,NULL),
- (283,142,1,'a_b',32,'Child of',180,'Parent of',1,NULL,NULL,NULL),
- (284,142,1,'b_a',180,'Parent of',32,'Child of',1,NULL,NULL,NULL),
- (285,143,1,'a_b',114,'Child of',182,'Parent of',1,NULL,NULL,NULL),
- (286,143,1,'b_a',182,'Parent of',114,'Child of',1,NULL,NULL,NULL),
- (287,144,1,'a_b',32,'Child of',182,'Parent of',1,NULL,NULL,NULL),
- (288,144,1,'b_a',182,'Parent of',32,'Child of',1,NULL,NULL,NULL),
- (289,145,4,'a_b',32,'Sibling of',114,'Sibling of',1,NULL,NULL,NULL),
- (290,145,4,'b_a',114,'Sibling of',32,'Sibling of',1,NULL,NULL,NULL),
- (291,146,8,'a_b',182,'Household Member of',23,'Household Member is',1,NULL,NULL,NULL),
- (292,146,8,'b_a',23,'Household Member is',182,'Household Member of',1,NULL,NULL,NULL),
- (293,147,8,'a_b',114,'Household Member of',23,'Household Member is',1,NULL,NULL,NULL),
- (294,147,8,'b_a',23,'Household Member is',114,'Household Member of',1,NULL,NULL,NULL),
- (295,148,8,'a_b',32,'Household Member of',23,'Household Member is',1,NULL,NULL,NULL),
- (296,148,8,'b_a',23,'Household Member is',32,'Household Member of',1,NULL,NULL,NULL),
- (297,149,7,'a_b',180,'Head of Household for',23,'Head of Household is',1,NULL,NULL,NULL),
- (298,149,7,'b_a',23,'Head of Household is',180,'Head of Household for',1,NULL,NULL,NULL),
- (299,150,2,'a_b',182,'Spouse of',180,'Spouse of',1,NULL,NULL,NULL),
- (300,150,2,'b_a',180,'Spouse of',182,'Spouse of',1,NULL,NULL,NULL),
- (301,151,1,'a_b',39,'Child of',18,'Parent of',1,NULL,NULL,NULL),
- (302,151,1,'b_a',18,'Parent of',39,'Child of',1,NULL,NULL,NULL),
- (303,152,1,'a_b',41,'Child of',18,'Parent of',1,NULL,NULL,NULL),
- (304,152,1,'b_a',18,'Parent of',41,'Child of',1,NULL,NULL,NULL),
- (305,153,1,'a_b',39,'Child of',90,'Parent of',1,NULL,NULL,NULL),
- (306,153,1,'b_a',90,'Parent of',39,'Child of',1,NULL,NULL,NULL),
- (307,154,1,'a_b',41,'Child of',90,'Parent of',1,NULL,NULL,NULL),
- (308,154,1,'b_a',90,'Parent of',41,'Child of',1,NULL,NULL,NULL),
- (309,155,4,'a_b',41,'Sibling of',39,'Sibling of',1,NULL,NULL,NULL),
- (310,155,4,'b_a',39,'Sibling of',41,'Sibling of',1,NULL,NULL,NULL),
- (311,156,8,'a_b',90,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL),
- (312,156,8,'b_a',51,'Household Member is',90,'Household Member of',1,NULL,NULL,NULL),
- (313,157,8,'a_b',39,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL),
- (314,157,8,'b_a',51,'Household Member is',39,'Household Member of',1,NULL,NULL,NULL),
- (315,158,8,'a_b',41,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL),
- (316,158,8,'b_a',51,'Household Member is',41,'Household Member of',1,NULL,NULL,NULL),
- (317,159,7,'a_b',18,'Head of Household for',51,'Head of Household is',0,NULL,NULL,NULL),
- (318,159,7,'b_a',51,'Head of Household is',18,'Head of Household for',0,NULL,NULL,NULL),
- (319,160,2,'a_b',90,'Spouse of',18,'Spouse of',0,NULL,NULL,NULL),
- (320,160,2,'b_a',18,'Spouse of',90,'Spouse of',0,NULL,NULL,NULL),
- (321,161,1,'a_b',196,'Child of',2,'Parent of',1,NULL,NULL,NULL),
- (322,161,1,'b_a',2,'Parent of',196,'Child of',1,NULL,NULL,NULL),
- (323,162,1,'a_b',195,'Child of',2,'Parent of',1,NULL,NULL,NULL),
- (324,162,1,'b_a',2,'Parent of',195,'Child of',1,NULL,NULL,NULL),
- (325,163,1,'a_b',196,'Child of',121,'Parent of',1,NULL,NULL,NULL),
- (326,163,1,'b_a',121,'Parent of',196,'Child of',1,NULL,NULL,NULL),
- (327,164,1,'a_b',195,'Child of',121,'Parent of',1,NULL,NULL,NULL),
- (328,164,1,'b_a',121,'Parent of',195,'Child of',1,NULL,NULL,NULL),
- (329,165,4,'a_b',195,'Sibling of',196,'Sibling of',1,NULL,NULL,NULL),
- (330,165,4,'b_a',196,'Sibling of',195,'Sibling of',1,NULL,NULL,NULL),
- (331,166,8,'a_b',121,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL),
- (332,166,8,'b_a',43,'Household Member is',121,'Household Member of',1,NULL,NULL,NULL),
- (333,167,8,'a_b',196,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL),
- (334,167,8,'b_a',43,'Household Member is',196,'Household Member of',1,NULL,NULL,NULL),
- (335,168,8,'a_b',195,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL),
- (336,168,8,'b_a',43,'Household Member is',195,'Household Member of',1,NULL,NULL,NULL),
- (337,169,7,'a_b',2,'Head of Household for',43,'Head of Household is',0,NULL,NULL,NULL),
- (338,169,7,'b_a',43,'Head of Household is',2,'Head of Household for',0,NULL,NULL,NULL),
- (339,170,2,'a_b',121,'Spouse of',2,'Spouse of',0,NULL,NULL,NULL),
- (340,170,2,'b_a',2,'Spouse of',121,'Spouse of',0,NULL,NULL,NULL),
- (341,171,1,'a_b',61,'Child of',154,'Parent of',1,NULL,NULL,NULL),
- (342,171,1,'b_a',154,'Parent of',61,'Child of',1,NULL,NULL,NULL),
- (343,172,1,'a_b',63,'Child of',154,'Parent of',1,NULL,NULL,NULL),
- (344,172,1,'b_a',154,'Parent of',63,'Child of',1,NULL,NULL,NULL),
- (345,173,1,'a_b',61,'Child of',12,'Parent of',1,NULL,NULL,NULL),
- (346,173,1,'b_a',12,'Parent of',61,'Child of',1,NULL,NULL,NULL),
- (347,174,1,'a_b',63,'Child of',12,'Parent of',1,NULL,NULL,NULL),
- (348,174,1,'b_a',12,'Parent of',63,'Child of',1,NULL,NULL,NULL),
- (349,175,4,'a_b',63,'Sibling of',61,'Sibling of',1,NULL,NULL,NULL),
- (350,175,4,'b_a',61,'Sibling of',63,'Sibling of',1,NULL,NULL,NULL),
- (351,176,8,'a_b',12,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL),
- (352,176,8,'b_a',75,'Household Member is',12,'Household Member of',1,NULL,NULL,NULL),
- (353,177,8,'a_b',61,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL),
- (354,177,8,'b_a',75,'Household Member is',61,'Household Member of',1,NULL,NULL,NULL),
- (355,178,8,'a_b',63,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL),
- (356,178,8,'b_a',75,'Household Member is',63,'Household Member of',1,NULL,NULL,NULL),
- (357,179,7,'a_b',154,'Head of Household for',75,'Head of Household is',1,NULL,NULL,NULL),
- (358,179,7,'b_a',75,'Head of Household is',154,'Head of Household for',1,NULL,NULL,NULL),
- (359,180,2,'a_b',12,'Spouse of',154,'Spouse of',1,NULL,NULL,NULL),
- (360,180,2,'b_a',154,'Spouse of',12,'Spouse of',1,NULL,NULL,NULL),
- (361,181,1,'a_b',175,'Child of',47,'Parent of',1,NULL,NULL,NULL),
- (362,181,1,'b_a',47,'Parent of',175,'Child of',1,NULL,NULL,NULL),
- (363,182,1,'a_b',85,'Child of',47,'Parent of',1,NULL,NULL,NULL),
- (364,182,1,'b_a',47,'Parent of',85,'Child of',1,NULL,NULL,NULL),
- (365,183,1,'a_b',175,'Child of',181,'Parent of',1,NULL,NULL,NULL),
- (366,183,1,'b_a',181,'Parent of',175,'Child of',1,NULL,NULL,NULL),
- (367,184,1,'a_b',85,'Child of',181,'Parent of',1,NULL,NULL,NULL),
- (368,184,1,'b_a',181,'Parent of',85,'Child of',1,NULL,NULL,NULL),
- (369,185,4,'a_b',85,'Sibling of',175,'Sibling of',1,NULL,NULL,NULL),
- (370,185,4,'b_a',175,'Sibling of',85,'Sibling of',1,NULL,NULL,NULL),
- (371,186,8,'a_b',181,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL),
- (372,186,8,'b_a',65,'Household Member is',181,'Household Member of',1,NULL,NULL,NULL),
- (373,187,8,'a_b',175,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL),
- (374,187,8,'b_a',65,'Household Member is',175,'Household Member of',1,NULL,NULL,NULL),
- (375,188,8,'a_b',85,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL),
- (376,188,8,'b_a',65,'Household Member is',85,'Household Member of',1,NULL,NULL,NULL),
- (377,189,7,'a_b',47,'Head of Household for',65,'Head of Household is',0,NULL,NULL,NULL),
- (378,189,7,'b_a',65,'Head of Household is',47,'Head of Household for',0,NULL,NULL,NULL),
- (379,190,2,'a_b',181,'Spouse of',47,'Spouse of',0,NULL,NULL,NULL),
- (380,190,2,'b_a',47,'Spouse of',181,'Spouse of',0,NULL,NULL,NULL),
- (381,191,1,'a_b',111,'Child of',36,'Parent of',1,NULL,NULL,NULL),
- (382,191,1,'b_a',36,'Parent of',111,'Child of',1,NULL,NULL,NULL),
- (383,192,1,'a_b',152,'Child of',36,'Parent of',1,NULL,NULL,NULL),
- (384,192,1,'b_a',36,'Parent of',152,'Child of',1,NULL,NULL,NULL),
- (385,193,1,'a_b',111,'Child of',118,'Parent of',1,NULL,NULL,NULL),
- (386,193,1,'b_a',118,'Parent of',111,'Child of',1,NULL,NULL,NULL),
- (387,194,1,'a_b',152,'Child of',118,'Parent of',1,NULL,NULL,NULL),
- (388,194,1,'b_a',118,'Parent of',152,'Child of',1,NULL,NULL,NULL),
- (389,195,4,'a_b',152,'Sibling of',111,'Sibling of',1,NULL,NULL,NULL),
- (390,195,4,'b_a',111,'Sibling of',152,'Sibling of',1,NULL,NULL,NULL),
- (391,196,8,'a_b',118,'Household Member of',159,'Household Member is',1,NULL,NULL,NULL),
- (392,196,8,'b_a',159,'Household Member is',118,'Household Member of',1,NULL,NULL,NULL),
- (393,197,8,'a_b',111,'Household Member of',159,'Household Member is',1,NULL,NULL,NULL),
- (394,197,8,'b_a',159,'Household Member is',111,'Household Member of',1,NULL,NULL,NULL),
- (395,198,8,'a_b',152,'Household Member of',159,'Household Member is',1,NULL,NULL,NULL),
- (396,198,8,'b_a',159,'Household Member is',152,'Household Member of',1,NULL,NULL,NULL),
- (397,199,7,'a_b',36,'Head of Household for',159,'Head of Household is',0,NULL,NULL,NULL),
- (398,199,7,'b_a',159,'Head of Household is',36,'Head of Household for',0,NULL,NULL,NULL),
- (399,200,2,'a_b',118,'Spouse of',36,'Spouse of',0,NULL,NULL,NULL),
- (400,200,2,'b_a',36,'Spouse of',118,'Spouse of',0,NULL,NULL,NULL),
- (401,201,5,'a_b',15,'Employee of',7,'Employer of',1,NULL,NULL,NULL),
- (402,201,5,'b_a',7,'Employer of',15,'Employee of',1,NULL,NULL,NULL),
- (403,202,5,'a_b',129,'Employee of',19,'Employer of',1,NULL,NULL,NULL),
- (404,202,5,'b_a',19,'Employer of',129,'Employee of',1,NULL,NULL,NULL),
- (405,203,5,'a_b',33,'Employee of',22,'Employer of',1,NULL,NULL,NULL),
- (406,203,5,'b_a',22,'Employer of',33,'Employee of',1,NULL,NULL,NULL),
- (407,204,5,'a_b',74,'Employee of',50,'Employer of',1,NULL,NULL,NULL),
- (408,204,5,'b_a',50,'Employer of',74,'Employee of',1,NULL,NULL,NULL),
- (409,205,5,'a_b',109,'Employee of',52,'Employer of',1,NULL,NULL,NULL),
- (410,205,5,'b_a',52,'Employer of',109,'Employee of',1,NULL,NULL,NULL),
- (411,206,5,'a_b',185,'Employee of',59,'Employer of',1,NULL,NULL,NULL),
- (412,206,5,'b_a',59,'Employer of',185,'Employee of',1,NULL,NULL,NULL),
- (413,207,5,'a_b',184,'Employee of',64,'Employer of',1,NULL,NULL,NULL),
- (414,207,5,'b_a',64,'Employer of',184,'Employee of',1,NULL,NULL,NULL),
- (415,208,5,'a_b',76,'Employee of',67,'Employer of',1,NULL,NULL,NULL),
- (416,208,5,'b_a',67,'Employer of',76,'Employee of',1,NULL,NULL,NULL),
- (417,209,5,'a_b',85,'Employee of',68,'Employer of',1,NULL,NULL,NULL),
- (418,209,5,'b_a',68,'Employer of',85,'Employee of',1,NULL,NULL,NULL),
- (419,210,5,'a_b',4,'Employee of',69,'Employer of',1,NULL,NULL,NULL),
- (420,210,5,'b_a',69,'Employer of',4,'Employee of',1,NULL,NULL,NULL),
- (421,211,5,'a_b',81,'Employee of',77,'Employer of',1,NULL,NULL,NULL),
- (422,211,5,'b_a',77,'Employer of',81,'Employee of',1,NULL,NULL,NULL),
- (423,212,5,'a_b',187,'Employee of',103,'Employer of',1,NULL,NULL,NULL),
- (424,212,5,'b_a',103,'Employer of',187,'Employee of',1,NULL,NULL,NULL),
- (425,213,5,'a_b',18,'Employee of',122,'Employer of',1,NULL,NULL,NULL),
- (426,213,5,'b_a',122,'Employer of',18,'Employee of',1,NULL,NULL,NULL),
- (427,214,5,'a_b',72,'Employee of',133,'Employer of',1,NULL,NULL,NULL),
- (428,214,5,'b_a',133,'Employer of',72,'Employee of',1,NULL,NULL,NULL),
- (429,215,5,'a_b',115,'Employee of',135,'Employer of',1,NULL,NULL,NULL),
- (430,215,5,'b_a',135,'Employer of',115,'Employee of',1,NULL,NULL,NULL),
- (431,216,5,'a_b',197,'Employee of',139,'Employer of',1,NULL,NULL,NULL),
- (432,216,5,'b_a',139,'Employer of',197,'Employee of',1,NULL,NULL,NULL),
- (433,217,5,'a_b',178,'Employee of',146,'Employer of',1,NULL,NULL,NULL),
- (434,217,5,'b_a',146,'Employer of',178,'Employee of',1,NULL,NULL,NULL),
- (435,218,5,'a_b',96,'Employee of',148,'Employer of',1,NULL,NULL,NULL),
- (436,218,5,'b_a',148,'Employer of',96,'Employee of',1,NULL,NULL,NULL);
+ (1,1,1,'a_b',156,'Child of',170,'Parent of',1,NULL,NULL,NULL),
+ (2,1,1,'b_a',170,'Parent of',156,'Child of',1,NULL,NULL,NULL),
+ (3,2,1,'a_b',144,'Child of',170,'Parent of',1,NULL,NULL,NULL),
+ (4,2,1,'b_a',170,'Parent of',144,'Child of',1,NULL,NULL,NULL),
+ (5,3,1,'a_b',156,'Child of',13,'Parent of',1,NULL,NULL,NULL),
+ (6,3,1,'b_a',13,'Parent of',156,'Child of',1,NULL,NULL,NULL),
+ (7,4,1,'a_b',144,'Child of',13,'Parent of',1,NULL,NULL,NULL),
+ (8,4,1,'b_a',13,'Parent of',144,'Child of',1,NULL,NULL,NULL),
+ (9,5,4,'a_b',144,'Sibling of',156,'Sibling of',1,NULL,NULL,NULL),
+ (10,5,4,'b_a',156,'Sibling of',144,'Sibling of',1,NULL,NULL,NULL),
+ (11,6,8,'a_b',13,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL),
+ (12,6,8,'b_a',3,'Household Member is',13,'Household Member of',1,NULL,NULL,NULL),
+ (13,7,8,'a_b',156,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL),
+ (14,7,8,'b_a',3,'Household Member is',156,'Household Member of',1,NULL,NULL,NULL),
+ (15,8,8,'a_b',144,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL),
+ (16,8,8,'b_a',3,'Household Member is',144,'Household Member of',1,NULL,NULL,NULL),
+ (17,9,7,'a_b',170,'Head of Household for',3,'Head of Household is',1,NULL,NULL,NULL),
+ (18,9,7,'b_a',3,'Head of Household is',170,'Head of Household for',1,NULL,NULL,NULL),
+ (19,10,2,'a_b',13,'Spouse of',170,'Spouse of',1,NULL,NULL,NULL),
+ (20,10,2,'b_a',170,'Spouse of',13,'Spouse of',1,NULL,NULL,NULL),
+ (21,11,1,'a_b',187,'Child of',34,'Parent of',1,NULL,NULL,NULL),
+ (22,11,1,'b_a',34,'Parent of',187,'Child of',1,NULL,NULL,NULL),
+ (23,12,1,'a_b',140,'Child of',34,'Parent of',1,NULL,NULL,NULL),
+ (24,12,1,'b_a',34,'Parent of',140,'Child of',1,NULL,NULL,NULL),
+ (25,13,1,'a_b',187,'Child of',75,'Parent of',1,NULL,NULL,NULL),
+ (26,13,1,'b_a',75,'Parent of',187,'Child of',1,NULL,NULL,NULL),
+ (27,14,1,'a_b',140,'Child of',75,'Parent of',1,NULL,NULL,NULL),
+ (28,14,1,'b_a',75,'Parent of',140,'Child of',1,NULL,NULL,NULL),
+ (29,15,4,'a_b',140,'Sibling of',187,'Sibling of',1,NULL,NULL,NULL),
+ (30,15,4,'b_a',187,'Sibling of',140,'Sibling of',1,NULL,NULL,NULL),
+ (31,16,8,'a_b',75,'Household Member of',111,'Household Member is',1,NULL,NULL,NULL),
+ (32,16,8,'b_a',111,'Household Member is',75,'Household Member of',1,NULL,NULL,NULL),
+ (33,17,8,'a_b',187,'Household Member of',111,'Household Member is',1,NULL,NULL,NULL),
+ (34,17,8,'b_a',111,'Household Member is',187,'Household Member of',1,NULL,NULL,NULL),
+ (35,18,8,'a_b',140,'Household Member of',111,'Household Member is',1,NULL,NULL,NULL),
+ (36,18,8,'b_a',111,'Household Member is',140,'Household Member of',1,NULL,NULL,NULL),
+ (37,19,7,'a_b',34,'Head of Household for',111,'Head of Household is',1,NULL,NULL,NULL),
+ (38,19,7,'b_a',111,'Head of Household is',34,'Head of Household for',1,NULL,NULL,NULL),
+ (39,20,2,'a_b',75,'Spouse of',34,'Spouse of',1,NULL,NULL,NULL),
+ (40,20,2,'b_a',34,'Spouse of',75,'Spouse of',1,NULL,NULL,NULL),
+ (41,21,1,'a_b',139,'Child of',81,'Parent of',1,NULL,NULL,NULL),
+ (42,21,1,'b_a',81,'Parent of',139,'Child of',1,NULL,NULL,NULL),
+ (43,22,1,'a_b',98,'Child of',81,'Parent of',1,NULL,NULL,NULL),
+ (44,22,1,'b_a',81,'Parent of',98,'Child of',1,NULL,NULL,NULL),
+ (45,23,1,'a_b',139,'Child of',14,'Parent of',1,NULL,NULL,NULL),
+ (46,23,1,'b_a',14,'Parent of',139,'Child of',1,NULL,NULL,NULL),
+ (47,24,1,'a_b',98,'Child of',14,'Parent of',1,NULL,NULL,NULL),
+ (48,24,1,'b_a',14,'Parent of',98,'Child of',1,NULL,NULL,NULL),
+ (49,25,4,'a_b',98,'Sibling of',139,'Sibling of',1,NULL,NULL,NULL),
+ (50,25,4,'b_a',139,'Sibling of',98,'Sibling of',1,NULL,NULL,NULL),
+ (51,26,8,'a_b',14,'Household Member of',92,'Household Member is',1,NULL,NULL,NULL),
+ (52,26,8,'b_a',92,'Household Member is',14,'Household Member of',1,NULL,NULL,NULL),
+ (53,27,8,'a_b',139,'Household Member of',92,'Household Member is',1,NULL,NULL,NULL),
+ (54,27,8,'b_a',92,'Household Member is',139,'Household Member of',1,NULL,NULL,NULL),
+ (55,28,8,'a_b',98,'Household Member of',92,'Household Member is',1,NULL,NULL,NULL),
+ (56,28,8,'b_a',92,'Household Member is',98,'Household Member of',1,NULL,NULL,NULL),
+ (57,29,7,'a_b',81,'Head of Household for',92,'Head of Household is',1,NULL,NULL,NULL),
+ (58,29,7,'b_a',92,'Head of Household is',81,'Head of Household for',1,NULL,NULL,NULL),
+ (59,30,2,'a_b',14,'Spouse of',81,'Spouse of',1,NULL,NULL,NULL),
+ (60,30,2,'b_a',81,'Spouse of',14,'Spouse of',1,NULL,NULL,NULL),
+ (61,31,1,'a_b',141,'Child of',168,'Parent of',1,NULL,NULL,NULL),
+ (62,31,1,'b_a',168,'Parent of',141,'Child of',1,NULL,NULL,NULL),
+ (63,32,1,'a_b',103,'Child of',168,'Parent of',1,NULL,NULL,NULL),
+ (64,32,1,'b_a',168,'Parent of',103,'Child of',1,NULL,NULL,NULL),
+ (65,33,1,'a_b',141,'Child of',196,'Parent of',1,NULL,NULL,NULL),
+ (66,33,1,'b_a',196,'Parent of',141,'Child of',1,NULL,NULL,NULL),
+ (67,34,1,'a_b',103,'Child of',196,'Parent of',1,NULL,NULL,NULL),
+ (68,34,1,'b_a',196,'Parent of',103,'Child of',1,NULL,NULL,NULL),
+ (69,35,4,'a_b',103,'Sibling of',141,'Sibling of',1,NULL,NULL,NULL),
+ (70,35,4,'b_a',141,'Sibling of',103,'Sibling of',1,NULL,NULL,NULL),
+ (71,36,8,'a_b',196,'Household Member of',61,'Household Member is',1,NULL,NULL,NULL),
+ (72,36,8,'b_a',61,'Household Member is',196,'Household Member of',1,NULL,NULL,NULL),
+ (73,37,8,'a_b',141,'Household Member of',61,'Household Member is',1,NULL,NULL,NULL),
+ (74,37,8,'b_a',61,'Household Member is',141,'Household Member of',1,NULL,NULL,NULL),
+ (75,38,8,'a_b',103,'Household Member of',61,'Household Member is',1,NULL,NULL,NULL),
+ (76,38,8,'b_a',61,'Household Member is',103,'Household Member of',1,NULL,NULL,NULL),
+ (77,39,7,'a_b',168,'Head of Household for',61,'Head of Household is',0,NULL,NULL,NULL),
+ (78,39,7,'b_a',61,'Head of Household is',168,'Head of Household for',0,NULL,NULL,NULL),
+ (79,40,2,'a_b',196,'Spouse of',168,'Spouse of',0,NULL,NULL,NULL),
+ (80,40,2,'b_a',168,'Spouse of',196,'Spouse of',0,NULL,NULL,NULL),
+ (81,41,1,'a_b',185,'Child of',6,'Parent of',1,NULL,NULL,NULL),
+ (82,41,1,'b_a',6,'Parent of',185,'Child of',1,NULL,NULL,NULL),
+ (83,42,1,'a_b',127,'Child of',6,'Parent of',1,NULL,NULL,NULL),
+ (84,42,1,'b_a',6,'Parent of',127,'Child of',1,NULL,NULL,NULL),
+ (85,43,1,'a_b',185,'Child of',58,'Parent of',1,NULL,NULL,NULL),
+ (86,43,1,'b_a',58,'Parent of',185,'Child of',1,NULL,NULL,NULL),
+ (87,44,1,'a_b',127,'Child of',58,'Parent of',1,NULL,NULL,NULL),
+ (88,44,1,'b_a',58,'Parent of',127,'Child of',1,NULL,NULL,NULL),
+ (89,45,4,'a_b',127,'Sibling of',185,'Sibling of',1,NULL,NULL,NULL),
+ (90,45,4,'b_a',185,'Sibling of',127,'Sibling of',1,NULL,NULL,NULL),
+ (91,46,8,'a_b',58,'Household Member of',106,'Household Member is',1,NULL,NULL,NULL),
+ (92,46,8,'b_a',106,'Household Member is',58,'Household Member of',1,NULL,NULL,NULL),
+ (93,47,8,'a_b',185,'Household Member of',106,'Household Member is',1,NULL,NULL,NULL),
+ (94,47,8,'b_a',106,'Household Member is',185,'Household Member of',1,NULL,NULL,NULL),
+ (95,48,8,'a_b',127,'Household Member of',106,'Household Member is',1,NULL,NULL,NULL),
+ (96,48,8,'b_a',106,'Household Member is',127,'Household Member of',1,NULL,NULL,NULL),
+ (97,49,7,'a_b',6,'Head of Household for',106,'Head of Household is',1,NULL,NULL,NULL),
+ (98,49,7,'b_a',106,'Head of Household is',6,'Head of Household for',1,NULL,NULL,NULL),
+ (99,50,2,'a_b',58,'Spouse of',6,'Spouse of',1,NULL,NULL,NULL),
+ (100,50,2,'b_a',6,'Spouse of',58,'Spouse of',1,NULL,NULL,NULL),
+ (101,51,1,'a_b',171,'Child of',132,'Parent of',1,NULL,NULL,NULL),
+ (102,51,1,'b_a',132,'Parent of',171,'Child of',1,NULL,NULL,NULL),
+ (103,52,1,'a_b',49,'Child of',132,'Parent of',1,NULL,NULL,NULL),
+ (104,52,1,'b_a',132,'Parent of',49,'Child of',1,NULL,NULL,NULL),
+ (105,53,1,'a_b',171,'Child of',145,'Parent of',1,NULL,NULL,NULL),
+ (106,53,1,'b_a',145,'Parent of',171,'Child of',1,NULL,NULL,NULL),
+ (107,54,1,'a_b',49,'Child of',145,'Parent of',1,NULL,NULL,NULL),
+ (108,54,1,'b_a',145,'Parent of',49,'Child of',1,NULL,NULL,NULL),
+ (109,55,4,'a_b',49,'Sibling of',171,'Sibling of',1,NULL,NULL,NULL),
+ (110,55,4,'b_a',171,'Sibling of',49,'Sibling of',1,NULL,NULL,NULL),
+ (111,56,8,'a_b',145,'Household Member of',56,'Household Member is',1,NULL,NULL,NULL),
+ (112,56,8,'b_a',56,'Household Member is',145,'Household Member of',1,NULL,NULL,NULL),
+ (113,57,8,'a_b',171,'Household Member of',56,'Household Member is',1,NULL,NULL,NULL),
+ (114,57,8,'b_a',56,'Household Member is',171,'Household Member of',1,NULL,NULL,NULL),
+ (115,58,8,'a_b',49,'Household Member of',56,'Household Member is',1,NULL,NULL,NULL),
+ (116,58,8,'b_a',56,'Household Member is',49,'Household Member of',1,NULL,NULL,NULL),
+ (117,59,7,'a_b',132,'Head of Household for',56,'Head of Household is',0,NULL,NULL,NULL),
+ (118,59,7,'b_a',56,'Head of Household is',132,'Head of Household for',0,NULL,NULL,NULL),
+ (119,60,2,'a_b',145,'Spouse of',132,'Spouse of',0,NULL,NULL,NULL),
+ (120,60,2,'b_a',132,'Spouse of',145,'Spouse of',0,NULL,NULL,NULL),
+ (121,61,1,'a_b',69,'Child of',157,'Parent of',1,NULL,NULL,NULL),
+ (122,61,1,'b_a',157,'Parent of',69,'Child of',1,NULL,NULL,NULL),
+ (123,62,1,'a_b',166,'Child of',157,'Parent of',1,NULL,NULL,NULL),
+ (124,62,1,'b_a',157,'Parent of',166,'Child of',1,NULL,NULL,NULL),
+ (125,63,1,'a_b',69,'Child of',183,'Parent of',1,NULL,NULL,NULL),
+ (126,63,1,'b_a',183,'Parent of',69,'Child of',1,NULL,NULL,NULL),
+ (127,64,1,'a_b',166,'Child of',183,'Parent of',1,NULL,NULL,NULL),
+ (128,64,1,'b_a',183,'Parent of',166,'Child of',1,NULL,NULL,NULL),
+ (129,65,4,'a_b',166,'Sibling of',69,'Sibling of',1,NULL,NULL,NULL),
+ (130,65,4,'b_a',69,'Sibling of',166,'Sibling of',1,NULL,NULL,NULL),
+ (131,66,8,'a_b',183,'Household Member of',193,'Household Member is',1,NULL,NULL,NULL),
+ (132,66,8,'b_a',193,'Household Member is',183,'Household Member of',1,NULL,NULL,NULL),
+ (133,67,8,'a_b',69,'Household Member of',193,'Household Member is',1,NULL,NULL,NULL),
+ (134,67,8,'b_a',193,'Household Member is',69,'Household Member of',1,NULL,NULL,NULL),
+ (135,68,8,'a_b',166,'Household Member of',193,'Household Member is',1,NULL,NULL,NULL),
+ (136,68,8,'b_a',193,'Household Member is',166,'Household Member of',1,NULL,NULL,NULL),
+ (137,69,7,'a_b',157,'Head of Household for',193,'Head of Household is',0,NULL,NULL,NULL),
+ (138,69,7,'b_a',193,'Head of Household is',157,'Head of Household for',0,NULL,NULL,NULL),
+ (139,70,2,'a_b',183,'Spouse of',157,'Spouse of',0,NULL,NULL,NULL),
+ (140,70,2,'b_a',157,'Spouse of',183,'Spouse of',0,NULL,NULL,NULL),
+ (141,71,1,'a_b',33,'Child of',195,'Parent of',1,NULL,NULL,NULL),
+ (142,71,1,'b_a',195,'Parent of',33,'Child of',1,NULL,NULL,NULL),
+ (143,72,1,'a_b',55,'Child of',195,'Parent of',1,NULL,NULL,NULL),
+ (144,72,1,'b_a',195,'Parent of',55,'Child of',1,NULL,NULL,NULL),
+ (145,73,1,'a_b',33,'Child of',22,'Parent of',1,NULL,NULL,NULL),
+ (146,73,1,'b_a',22,'Parent of',33,'Child of',1,NULL,NULL,NULL),
+ (147,74,1,'a_b',55,'Child of',22,'Parent of',1,NULL,NULL,NULL),
+ (148,74,1,'b_a',22,'Parent of',55,'Child of',1,NULL,NULL,NULL),
+ (149,75,4,'a_b',55,'Sibling of',33,'Sibling of',1,NULL,NULL,NULL),
+ (150,75,4,'b_a',33,'Sibling of',55,'Sibling of',1,NULL,NULL,NULL),
+ (151,76,8,'a_b',22,'Household Member of',151,'Household Member is',1,NULL,NULL,NULL),
+ (152,76,8,'b_a',151,'Household Member is',22,'Household Member of',1,NULL,NULL,NULL),
+ (153,77,8,'a_b',33,'Household Member of',151,'Household Member is',1,NULL,NULL,NULL),
+ (154,77,8,'b_a',151,'Household Member is',33,'Household Member of',1,NULL,NULL,NULL),
+ (155,78,8,'a_b',55,'Household Member of',151,'Household Member is',1,NULL,NULL,NULL),
+ (156,78,8,'b_a',151,'Household Member is',55,'Household Member of',1,NULL,NULL,NULL),
+ (157,79,7,'a_b',195,'Head of Household for',151,'Head of Household is',0,NULL,NULL,NULL),
+ (158,79,7,'b_a',151,'Head of Household is',195,'Head of Household for',0,NULL,NULL,NULL),
+ (159,80,2,'a_b',22,'Spouse of',195,'Spouse of',0,NULL,NULL,NULL),
+ (160,80,2,'b_a',195,'Spouse of',22,'Spouse of',0,NULL,NULL,NULL),
+ (161,81,1,'a_b',54,'Child of',128,'Parent of',1,NULL,NULL,NULL),
+ (162,81,1,'b_a',128,'Parent of',54,'Child of',1,NULL,NULL,NULL),
+ (163,82,1,'a_b',89,'Child of',128,'Parent of',1,NULL,NULL,NULL),
+ (164,82,1,'b_a',128,'Parent of',89,'Child of',1,NULL,NULL,NULL),
+ (165,83,1,'a_b',54,'Child of',8,'Parent of',1,NULL,NULL,NULL),
+ (166,83,1,'b_a',8,'Parent of',54,'Child of',1,NULL,NULL,NULL),
+ (167,84,1,'a_b',89,'Child of',8,'Parent of',1,NULL,NULL,NULL),
+ (168,84,1,'b_a',8,'Parent of',89,'Child of',1,NULL,NULL,NULL),
+ (169,85,4,'a_b',89,'Sibling of',54,'Sibling of',1,NULL,NULL,NULL),
+ (170,85,4,'b_a',54,'Sibling of',89,'Sibling of',1,NULL,NULL,NULL),
+ (171,86,8,'a_b',8,'Household Member of',97,'Household Member is',1,NULL,NULL,NULL),
+ (172,86,8,'b_a',97,'Household Member is',8,'Household Member of',1,NULL,NULL,NULL),
+ (173,87,8,'a_b',54,'Household Member of',97,'Household Member is',1,NULL,NULL,NULL),
+ (174,87,8,'b_a',97,'Household Member is',54,'Household Member of',1,NULL,NULL,NULL),
+ (175,88,8,'a_b',89,'Household Member of',97,'Household Member is',1,NULL,NULL,NULL),
+ (176,88,8,'b_a',97,'Household Member is',89,'Household Member of',1,NULL,NULL,NULL),
+ (177,89,7,'a_b',128,'Head of Household for',97,'Head of Household is',0,NULL,NULL,NULL),
+ (178,89,7,'b_a',97,'Head of Household is',128,'Head of Household for',0,NULL,NULL,NULL),
+ (179,90,2,'a_b',8,'Spouse of',128,'Spouse of',0,NULL,NULL,NULL),
+ (180,90,2,'b_a',128,'Spouse of',8,'Spouse of',0,NULL,NULL,NULL),
+ (181,91,1,'a_b',83,'Child of',62,'Parent of',1,NULL,NULL,NULL),
+ (182,91,1,'b_a',62,'Parent of',83,'Child of',1,NULL,NULL,NULL),
+ (183,92,1,'a_b',130,'Child of',62,'Parent of',1,NULL,NULL,NULL),
+ (184,92,1,'b_a',62,'Parent of',130,'Child of',1,NULL,NULL,NULL),
+ (185,93,1,'a_b',83,'Child of',7,'Parent of',1,NULL,NULL,NULL),
+ (186,93,1,'b_a',7,'Parent of',83,'Child of',1,NULL,NULL,NULL),
+ (187,94,1,'a_b',130,'Child of',7,'Parent of',1,NULL,NULL,NULL),
+ (188,94,1,'b_a',7,'Parent of',130,'Child of',1,NULL,NULL,NULL),
+ (189,95,4,'a_b',130,'Sibling of',83,'Sibling of',1,NULL,NULL,NULL),
+ (190,95,4,'b_a',83,'Sibling of',130,'Sibling of',1,NULL,NULL,NULL),
+ (191,96,8,'a_b',7,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL),
+ (192,96,8,'b_a',53,'Household Member is',7,'Household Member of',1,NULL,NULL,NULL),
+ (193,97,8,'a_b',83,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL),
+ (194,97,8,'b_a',53,'Household Member is',83,'Household Member of',1,NULL,NULL,NULL),
+ (195,98,8,'a_b',130,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL),
+ (196,98,8,'b_a',53,'Household Member is',130,'Household Member of',1,NULL,NULL,NULL),
+ (197,99,7,'a_b',62,'Head of Household for',53,'Head of Household is',1,NULL,NULL,NULL),
+ (198,99,7,'b_a',53,'Head of Household is',62,'Head of Household for',1,NULL,NULL,NULL),
+ (199,100,2,'a_b',7,'Spouse of',62,'Spouse of',1,NULL,NULL,NULL),
+ (200,100,2,'b_a',62,'Spouse of',7,'Spouse of',1,NULL,NULL,NULL),
+ (201,101,1,'a_b',150,'Child of',143,'Parent of',1,NULL,NULL,NULL),
+ (202,101,1,'b_a',143,'Parent of',150,'Child of',1,NULL,NULL,NULL),
+ (203,102,1,'a_b',50,'Child of',143,'Parent of',1,NULL,NULL,NULL),
+ (204,102,1,'b_a',143,'Parent of',50,'Child of',1,NULL,NULL,NULL),
+ (205,103,1,'a_b',150,'Child of',173,'Parent of',1,NULL,NULL,NULL),
+ (206,103,1,'b_a',173,'Parent of',150,'Child of',1,NULL,NULL,NULL),
+ (207,104,1,'a_b',50,'Child of',173,'Parent of',1,NULL,NULL,NULL),
+ (208,104,1,'b_a',173,'Parent of',50,'Child of',1,NULL,NULL,NULL),
+ (209,105,4,'a_b',50,'Sibling of',150,'Sibling of',1,NULL,NULL,NULL),
+ (210,105,4,'b_a',150,'Sibling of',50,'Sibling of',1,NULL,NULL,NULL),
+ (211,106,8,'a_b',173,'Household Member of',138,'Household Member is',1,NULL,NULL,NULL),
+ (212,106,8,'b_a',138,'Household Member is',173,'Household Member of',1,NULL,NULL,NULL),
+ (213,107,8,'a_b',150,'Household Member of',138,'Household Member is',1,NULL,NULL,NULL),
+ (214,107,8,'b_a',138,'Household Member is',150,'Household Member of',1,NULL,NULL,NULL),
+ (215,108,8,'a_b',50,'Household Member of',138,'Household Member is',1,NULL,NULL,NULL),
+ (216,108,8,'b_a',138,'Household Member is',50,'Household Member of',1,NULL,NULL,NULL),
+ (217,109,7,'a_b',143,'Head of Household for',138,'Head of Household is',0,NULL,NULL,NULL),
+ (218,109,7,'b_a',138,'Head of Household is',143,'Head of Household for',0,NULL,NULL,NULL),
+ (219,110,2,'a_b',173,'Spouse of',143,'Spouse of',0,NULL,NULL,NULL),
+ (220,110,2,'b_a',143,'Spouse of',173,'Spouse of',0,NULL,NULL,NULL),
+ (221,111,1,'a_b',84,'Child of',180,'Parent of',1,NULL,NULL,NULL),
+ (222,111,1,'b_a',180,'Parent of',84,'Child of',1,NULL,NULL,NULL),
+ (223,112,1,'a_b',119,'Child of',180,'Parent of',1,NULL,NULL,NULL),
+ (224,112,1,'b_a',180,'Parent of',119,'Child of',1,NULL,NULL,NULL),
+ (225,113,1,'a_b',84,'Child of',177,'Parent of',1,NULL,NULL,NULL),
+ (226,113,1,'b_a',177,'Parent of',84,'Child of',1,NULL,NULL,NULL),
+ (227,114,1,'a_b',119,'Child of',177,'Parent of',1,NULL,NULL,NULL),
+ (228,114,1,'b_a',177,'Parent of',119,'Child of',1,NULL,NULL,NULL),
+ (229,115,4,'a_b',119,'Sibling of',84,'Sibling of',1,NULL,NULL,NULL),
+ (230,115,4,'b_a',84,'Sibling of',119,'Sibling of',1,NULL,NULL,NULL),
+ (231,116,8,'a_b',177,'Household Member of',199,'Household Member is',1,NULL,NULL,NULL),
+ (232,116,8,'b_a',199,'Household Member is',177,'Household Member of',1,NULL,NULL,NULL),
+ (233,117,8,'a_b',84,'Household Member of',199,'Household Member is',1,NULL,NULL,NULL),
+ (234,117,8,'b_a',199,'Household Member is',84,'Household Member of',1,NULL,NULL,NULL),
+ (235,118,8,'a_b',119,'Household Member of',199,'Household Member is',1,NULL,NULL,NULL),
+ (236,118,8,'b_a',199,'Household Member is',119,'Household Member of',1,NULL,NULL,NULL),
+ (237,119,7,'a_b',180,'Head of Household for',199,'Head of Household is',0,NULL,NULL,NULL),
+ (238,119,7,'b_a',199,'Head of Household is',180,'Head of Household for',0,NULL,NULL,NULL),
+ (239,120,2,'a_b',177,'Spouse of',180,'Spouse of',0,NULL,NULL,NULL),
+ (240,120,2,'b_a',180,'Spouse of',177,'Spouse of',0,NULL,NULL,NULL),
+ (241,121,1,'a_b',59,'Child of',133,'Parent of',1,NULL,NULL,NULL),
+ (242,121,1,'b_a',133,'Parent of',59,'Child of',1,NULL,NULL,NULL),
+ (243,122,1,'a_b',27,'Child of',133,'Parent of',1,NULL,NULL,NULL),
+ (244,122,1,'b_a',133,'Parent of',27,'Child of',1,NULL,NULL,NULL),
+ (245,123,1,'a_b',59,'Child of',194,'Parent of',1,NULL,NULL,NULL),
+ (246,123,1,'b_a',194,'Parent of',59,'Child of',1,NULL,NULL,NULL),
+ (247,124,1,'a_b',27,'Child of',194,'Parent of',1,NULL,NULL,NULL),
+ (248,124,1,'b_a',194,'Parent of',27,'Child of',1,NULL,NULL,NULL),
+ (249,125,4,'a_b',27,'Sibling of',59,'Sibling of',1,NULL,NULL,NULL),
+ (250,125,4,'b_a',59,'Sibling of',27,'Sibling of',1,NULL,NULL,NULL),
+ (251,126,8,'a_b',194,'Household Member of',172,'Household Member is',1,NULL,NULL,NULL),
+ (252,126,8,'b_a',172,'Household Member is',194,'Household Member of',1,NULL,NULL,NULL),
+ (253,127,8,'a_b',59,'Household Member of',172,'Household Member is',1,NULL,NULL,NULL),
+ (254,127,8,'b_a',172,'Household Member is',59,'Household Member of',1,NULL,NULL,NULL),
+ (255,128,8,'a_b',27,'Household Member of',172,'Household Member is',1,NULL,NULL,NULL),
+ (256,128,8,'b_a',172,'Household Member is',27,'Household Member of',1,NULL,NULL,NULL),
+ (257,129,7,'a_b',133,'Head of Household for',172,'Head of Household is',1,NULL,NULL,NULL),
+ (258,129,7,'b_a',172,'Head of Household is',133,'Head of Household for',1,NULL,NULL,NULL),
+ (259,130,2,'a_b',194,'Spouse of',133,'Spouse of',1,NULL,NULL,NULL),
+ (260,130,2,'b_a',133,'Spouse of',194,'Spouse of',1,NULL,NULL,NULL),
+ (261,131,1,'a_b',52,'Child of',91,'Parent of',1,NULL,NULL,NULL),
+ (262,131,1,'b_a',91,'Parent of',52,'Child of',1,NULL,NULL,NULL),
+ (263,132,1,'a_b',31,'Child of',91,'Parent of',1,NULL,NULL,NULL),
+ (264,132,1,'b_a',91,'Parent of',31,'Child of',1,NULL,NULL,NULL),
+ (265,133,1,'a_b',52,'Child of',32,'Parent of',1,NULL,NULL,NULL),
+ (266,133,1,'b_a',32,'Parent of',52,'Child of',1,NULL,NULL,NULL),
+ (267,134,1,'a_b',31,'Child of',32,'Parent of',1,NULL,NULL,NULL),
+ (268,134,1,'b_a',32,'Parent of',31,'Child of',1,NULL,NULL,NULL),
+ (269,135,4,'a_b',31,'Sibling of',52,'Sibling of',1,NULL,NULL,NULL),
+ (270,135,4,'b_a',52,'Sibling of',31,'Sibling of',1,NULL,NULL,NULL),
+ (271,136,8,'a_b',32,'Household Member of',186,'Household Member is',1,NULL,NULL,NULL),
+ (272,136,8,'b_a',186,'Household Member is',32,'Household Member of',1,NULL,NULL,NULL),
+ (273,137,8,'a_b',52,'Household Member of',186,'Household Member is',1,NULL,NULL,NULL),
+ (274,137,8,'b_a',186,'Household Member is',52,'Household Member of',1,NULL,NULL,NULL),
+ (275,138,8,'a_b',31,'Household Member of',186,'Household Member is',1,NULL,NULL,NULL),
+ (276,138,8,'b_a',186,'Household Member is',31,'Household Member of',1,NULL,NULL,NULL),
+ (277,139,7,'a_b',91,'Head of Household for',186,'Head of Household is',1,NULL,NULL,NULL),
+ (278,139,7,'b_a',186,'Head of Household is',91,'Head of Household for',1,NULL,NULL,NULL),
+ (279,140,2,'a_b',32,'Spouse of',91,'Spouse of',1,NULL,NULL,NULL),
+ (280,140,2,'b_a',91,'Spouse of',32,'Spouse of',1,NULL,NULL,NULL),
+ (281,141,1,'a_b',11,'Child of',80,'Parent of',1,NULL,NULL,NULL),
+ (282,141,1,'b_a',80,'Parent of',11,'Child of',1,NULL,NULL,NULL),
+ (283,142,1,'a_b',24,'Child of',80,'Parent of',1,NULL,NULL,NULL),
+ (284,142,1,'b_a',80,'Parent of',24,'Child of',1,NULL,NULL,NULL),
+ (285,143,1,'a_b',11,'Child of',155,'Parent of',1,NULL,NULL,NULL),
+ (286,143,1,'b_a',155,'Parent of',11,'Child of',1,NULL,NULL,NULL),
+ (287,144,1,'a_b',24,'Child of',155,'Parent of',1,NULL,NULL,NULL),
+ (288,144,1,'b_a',155,'Parent of',24,'Child of',1,NULL,NULL,NULL),
+ (289,145,4,'a_b',24,'Sibling of',11,'Sibling of',1,NULL,NULL,NULL),
+ (290,145,4,'b_a',11,'Sibling of',24,'Sibling of',1,NULL,NULL,NULL),
+ (291,146,8,'a_b',155,'Household Member of',167,'Household Member is',1,NULL,NULL,NULL),
+ (292,146,8,'b_a',167,'Household Member is',155,'Household Member of',1,NULL,NULL,NULL),
+ (293,147,8,'a_b',11,'Household Member of',167,'Household Member is',1,NULL,NULL,NULL),
+ (294,147,8,'b_a',167,'Household Member is',11,'Household Member of',1,NULL,NULL,NULL),
+ (295,148,8,'a_b',24,'Household Member of',167,'Household Member is',1,NULL,NULL,NULL),
+ (296,148,8,'b_a',167,'Household Member is',24,'Household Member of',1,NULL,NULL,NULL),
+ (297,149,7,'a_b',80,'Head of Household for',167,'Head of Household is',1,NULL,NULL,NULL),
+ (298,149,7,'b_a',167,'Head of Household is',80,'Head of Household for',1,NULL,NULL,NULL),
+ (299,150,2,'a_b',155,'Spouse of',80,'Spouse of',1,NULL,NULL,NULL),
+ (300,150,2,'b_a',80,'Spouse of',155,'Spouse of',1,NULL,NULL,NULL),
+ (301,151,1,'a_b',109,'Child of',93,'Parent of',1,NULL,NULL,NULL),
+ (302,151,1,'b_a',93,'Parent of',109,'Child of',1,NULL,NULL,NULL),
+ (303,152,1,'a_b',163,'Child of',93,'Parent of',1,NULL,NULL,NULL),
+ (304,152,1,'b_a',93,'Parent of',163,'Child of',1,NULL,NULL,NULL),
+ (305,153,1,'a_b',109,'Child of',73,'Parent of',1,NULL,NULL,NULL),
+ (306,153,1,'b_a',73,'Parent of',109,'Child of',1,NULL,NULL,NULL),
+ (307,154,1,'a_b',163,'Child of',73,'Parent of',1,NULL,NULL,NULL),
+ (308,154,1,'b_a',73,'Parent of',163,'Child of',1,NULL,NULL,NULL),
+ (309,155,4,'a_b',163,'Sibling of',109,'Sibling of',1,NULL,NULL,NULL),
+ (310,155,4,'b_a',109,'Sibling of',163,'Sibling of',1,NULL,NULL,NULL),
+ (311,156,8,'a_b',73,'Household Member of',2,'Household Member is',1,NULL,NULL,NULL),
+ (312,156,8,'b_a',2,'Household Member is',73,'Household Member of',1,NULL,NULL,NULL),
+ (313,157,8,'a_b',109,'Household Member of',2,'Household Member is',1,NULL,NULL,NULL),
+ (314,157,8,'b_a',2,'Household Member is',109,'Household Member of',1,NULL,NULL,NULL),
+ (315,158,8,'a_b',163,'Household Member of',2,'Household Member is',1,NULL,NULL,NULL),
+ (316,158,8,'b_a',2,'Household Member is',163,'Household Member of',1,NULL,NULL,NULL),
+ (317,159,7,'a_b',93,'Head of Household for',2,'Head of Household is',1,NULL,NULL,NULL),
+ (318,159,7,'b_a',2,'Head of Household is',93,'Head of Household for',1,NULL,NULL,NULL),
+ (319,160,2,'a_b',73,'Spouse of',93,'Spouse of',1,NULL,NULL,NULL),
+ (320,160,2,'b_a',93,'Spouse of',73,'Spouse of',1,NULL,NULL,NULL),
+ (321,161,1,'a_b',4,'Child of',5,'Parent of',1,NULL,NULL,NULL),
+ (322,161,1,'b_a',5,'Parent of',4,'Child of',1,NULL,NULL,NULL),
+ (323,162,1,'a_b',169,'Child of',5,'Parent of',1,NULL,NULL,NULL),
+ (324,162,1,'b_a',5,'Parent of',169,'Child of',1,NULL,NULL,NULL),
+ (325,163,1,'a_b',4,'Child of',134,'Parent of',1,NULL,NULL,NULL),
+ (326,163,1,'b_a',134,'Parent of',4,'Child of',1,NULL,NULL,NULL),
+ (327,164,1,'a_b',169,'Child of',134,'Parent of',1,NULL,NULL,NULL),
+ (328,164,1,'b_a',134,'Parent of',169,'Child of',1,NULL,NULL,NULL),
+ (329,165,4,'a_b',169,'Sibling of',4,'Sibling of',1,NULL,NULL,NULL),
+ (330,165,4,'b_a',4,'Sibling of',169,'Sibling of',1,NULL,NULL,NULL),
+ (331,166,8,'a_b',134,'Household Member of',68,'Household Member is',1,NULL,NULL,NULL),
+ (332,166,8,'b_a',68,'Household Member is',134,'Household Member of',1,NULL,NULL,NULL),
+ (333,167,8,'a_b',4,'Household Member of',68,'Household Member is',1,NULL,NULL,NULL),
+ (334,167,8,'b_a',68,'Household Member is',4,'Household Member of',1,NULL,NULL,NULL),
+ (335,168,8,'a_b',169,'Household Member of',68,'Household Member is',1,NULL,NULL,NULL),
+ (336,168,8,'b_a',68,'Household Member is',169,'Household Member of',1,NULL,NULL,NULL),
+ (337,169,7,'a_b',5,'Head of Household for',68,'Head of Household is',0,NULL,NULL,NULL),
+ (338,169,7,'b_a',68,'Head of Household is',5,'Head of Household for',0,NULL,NULL,NULL),
+ (339,170,2,'a_b',134,'Spouse of',5,'Spouse of',0,NULL,NULL,NULL),
+ (340,170,2,'b_a',5,'Spouse of',134,'Spouse of',0,NULL,NULL,NULL),
+ (341,171,1,'a_b',20,'Child of',42,'Parent of',1,NULL,NULL,NULL),
+ (342,171,1,'b_a',42,'Parent of',20,'Child of',1,NULL,NULL,NULL),
+ (343,172,1,'a_b',104,'Child of',42,'Parent of',1,NULL,NULL,NULL),
+ (344,172,1,'b_a',42,'Parent of',104,'Child of',1,NULL,NULL,NULL),
+ (345,173,1,'a_b',20,'Child of',90,'Parent of',1,NULL,NULL,NULL),
+ (346,173,1,'b_a',90,'Parent of',20,'Child of',1,NULL,NULL,NULL),
+ (347,174,1,'a_b',104,'Child of',90,'Parent of',1,NULL,NULL,NULL),
+ (348,174,1,'b_a',90,'Parent of',104,'Child of',1,NULL,NULL,NULL),
+ (349,175,4,'a_b',104,'Sibling of',20,'Sibling of',1,NULL,NULL,NULL),
+ (350,175,4,'b_a',20,'Sibling of',104,'Sibling of',1,NULL,NULL,NULL),
+ (351,176,8,'a_b',90,'Household Member of',25,'Household Member is',1,NULL,NULL,NULL),
+ (352,176,8,'b_a',25,'Household Member is',90,'Household Member of',1,NULL,NULL,NULL),
+ (353,177,8,'a_b',20,'Household Member of',25,'Household Member is',1,NULL,NULL,NULL),
+ (354,177,8,'b_a',25,'Household Member is',20,'Household Member of',1,NULL,NULL,NULL),
+ (355,178,8,'a_b',104,'Household Member of',25,'Household Member is',1,NULL,NULL,NULL),
+ (356,178,8,'b_a',25,'Household Member is',104,'Household Member of',1,NULL,NULL,NULL),
+ (357,179,7,'a_b',42,'Head of Household for',25,'Head of Household is',0,NULL,NULL,NULL),
+ (358,179,7,'b_a',25,'Head of Household is',42,'Head of Household for',0,NULL,NULL,NULL),
+ (359,180,2,'a_b',90,'Spouse of',42,'Spouse of',0,NULL,NULL,NULL),
+ (360,180,2,'b_a',42,'Spouse of',90,'Spouse of',0,NULL,NULL,NULL),
+ (361,181,1,'a_b',152,'Child of',28,'Parent of',1,NULL,NULL,NULL),
+ (362,181,1,'b_a',28,'Parent of',152,'Child of',1,NULL,NULL,NULL),
+ (363,182,1,'a_b',129,'Child of',28,'Parent of',1,NULL,NULL,NULL),
+ (364,182,1,'b_a',28,'Parent of',129,'Child of',1,NULL,NULL,NULL),
+ (365,183,1,'a_b',152,'Child of',184,'Parent of',1,NULL,NULL,NULL),
+ (366,183,1,'b_a',184,'Parent of',152,'Child of',1,NULL,NULL,NULL),
+ (367,184,1,'a_b',129,'Child of',184,'Parent of',1,NULL,NULL,NULL),
+ (368,184,1,'b_a',184,'Parent of',129,'Child of',1,NULL,NULL,NULL),
+ (369,185,4,'a_b',129,'Sibling of',152,'Sibling of',1,NULL,NULL,NULL),
+ (370,185,4,'b_a',152,'Sibling of',129,'Sibling of',1,NULL,NULL,NULL),
+ (371,186,8,'a_b',184,'Household Member of',39,'Household Member is',1,NULL,NULL,NULL),
+ (372,186,8,'b_a',39,'Household Member is',184,'Household Member of',1,NULL,NULL,NULL),
+ (373,187,8,'a_b',152,'Household Member of',39,'Household Member is',1,NULL,NULL,NULL),
+ (374,187,8,'b_a',39,'Household Member is',152,'Household Member of',1,NULL,NULL,NULL),
+ (375,188,8,'a_b',129,'Household Member of',39,'Household Member is',1,NULL,NULL,NULL),
+ (376,188,8,'b_a',39,'Household Member is',129,'Household Member of',1,NULL,NULL,NULL),
+ (377,189,7,'a_b',28,'Head of Household for',39,'Head of Household is',0,NULL,NULL,NULL),
+ (378,189,7,'b_a',39,'Head of Household is',28,'Head of Household for',0,NULL,NULL,NULL),
+ (379,190,2,'a_b',184,'Spouse of',28,'Spouse of',0,NULL,NULL,NULL),
+ (380,190,2,'b_a',28,'Spouse of',184,'Spouse of',0,NULL,NULL,NULL),
+ (381,191,1,'a_b',181,'Child of',165,'Parent of',1,NULL,NULL,NULL),
+ (382,191,1,'b_a',165,'Parent of',181,'Child of',1,NULL,NULL,NULL),
+ (383,192,1,'a_b',87,'Child of',165,'Parent of',1,NULL,NULL,NULL),
+ (384,192,1,'b_a',165,'Parent of',87,'Child of',1,NULL,NULL,NULL),
+ (385,193,1,'a_b',181,'Child of',174,'Parent of',1,NULL,NULL,NULL),
+ (386,193,1,'b_a',174,'Parent of',181,'Child of',1,NULL,NULL,NULL),
+ (387,194,1,'a_b',87,'Child of',174,'Parent of',1,NULL,NULL,NULL),
+ (388,194,1,'b_a',174,'Parent of',87,'Child of',1,NULL,NULL,NULL),
+ (389,195,4,'a_b',87,'Sibling of',181,'Sibling of',1,NULL,NULL,NULL),
+ (390,195,4,'b_a',181,'Sibling of',87,'Sibling of',1,NULL,NULL,NULL),
+ (391,196,8,'a_b',174,'Household Member of',125,'Household Member is',1,NULL,NULL,NULL),
+ (392,196,8,'b_a',125,'Household Member is',174,'Household Member of',1,NULL,NULL,NULL),
+ (393,197,8,'a_b',181,'Household Member of',125,'Household Member is',1,NULL,NULL,NULL),
+ (394,197,8,'b_a',125,'Household Member is',181,'Household Member of',1,NULL,NULL,NULL),
+ (395,198,8,'a_b',87,'Household Member of',125,'Household Member is',1,NULL,NULL,NULL),
+ (396,198,8,'b_a',125,'Household Member is',87,'Household Member of',1,NULL,NULL,NULL),
+ (397,199,7,'a_b',165,'Head of Household for',125,'Head of Household is',1,NULL,NULL,NULL),
+ (398,199,7,'b_a',125,'Head of Household is',165,'Head of Household for',1,NULL,NULL,NULL),
+ (399,200,2,'a_b',174,'Spouse of',165,'Spouse of',1,NULL,NULL,NULL),
+ (400,200,2,'b_a',165,'Spouse of',174,'Spouse of',1,NULL,NULL,NULL),
+ (401,201,5,'a_b',146,'Employee of',9,'Employer of',1,NULL,NULL,NULL),
+ (402,201,5,'b_a',9,'Employer of',146,'Employee of',1,NULL,NULL,NULL),
+ (403,202,5,'a_b',32,'Employee of',15,'Employer of',1,NULL,NULL,NULL),
+ (404,202,5,'b_a',15,'Employer of',32,'Employee of',1,NULL,NULL,NULL),
+ (405,203,5,'a_b',77,'Employee of',17,'Employer of',1,NULL,NULL,NULL),
+ (406,203,5,'b_a',17,'Employer of',77,'Employee of',1,NULL,NULL,NULL),
+ (407,204,5,'a_b',66,'Employee of',18,'Employer of',1,NULL,NULL,NULL),
+ (408,204,5,'b_a',18,'Employer of',66,'Employee of',1,NULL,NULL,NULL),
+ (409,205,5,'a_b',145,'Employee of',26,'Employer of',1,NULL,NULL,NULL),
+ (410,205,5,'b_a',26,'Employer of',145,'Employee of',1,NULL,NULL,NULL),
+ (411,206,5,'a_b',152,'Employee of',35,'Employer of',1,NULL,NULL,NULL),
+ (412,206,5,'b_a',35,'Employer of',152,'Employee of',1,NULL,NULL,NULL),
+ (413,207,5,'a_b',20,'Employee of',46,'Employer of',1,NULL,NULL,NULL),
+ (414,207,5,'b_a',46,'Employer of',20,'Employee of',1,NULL,NULL,NULL),
+ (415,208,5,'a_b',187,'Employee of',47,'Employer of',1,NULL,NULL,NULL),
+ (416,208,5,'b_a',47,'Employer of',187,'Employee of',1,NULL,NULL,NULL),
+ (417,209,5,'a_b',150,'Employee of',51,'Employer of',1,NULL,NULL,NULL),
+ (418,209,5,'b_a',51,'Employer of',150,'Employee of',1,NULL,NULL,NULL),
+ (419,210,5,'a_b',109,'Employee of',60,'Employer of',1,NULL,NULL,NULL),
+ (420,210,5,'b_a',60,'Employer of',109,'Employee of',1,NULL,NULL,NULL),
+ (421,211,5,'a_b',185,'Employee of',64,'Employer of',1,NULL,NULL,NULL),
+ (422,211,5,'b_a',64,'Employer of',185,'Employee of',1,NULL,NULL,NULL),
+ (423,212,5,'a_b',200,'Employee of',71,'Employer of',1,NULL,NULL,NULL),
+ (424,212,5,'b_a',71,'Employer of',200,'Employee of',1,NULL,NULL,NULL),
+ (425,213,5,'a_b',8,'Employee of',115,'Employer of',1,NULL,NULL,NULL),
+ (426,213,5,'b_a',115,'Employer of',8,'Employee of',1,NULL,NULL,NULL),
+ (427,214,5,'a_b',55,'Employee of',162,'Employer of',1,NULL,NULL,NULL),
+ (428,214,5,'b_a',162,'Employer of',55,'Employee of',1,NULL,NULL,NULL),
+ (429,215,5,'a_b',41,'Employee of',197,'Employer of',1,NULL,NULL,NULL),
+ (430,215,5,'b_a',197,'Employer of',41,'Employee of',1,NULL,NULL,NULL),
+ (431,216,5,'a_b',114,'Employee of',201,'Employer of',1,NULL,NULL,NULL),
+ (432,216,5,'b_a',201,'Employer of',114,'Employee of',1,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_relationship_cache` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -8031,9 +8027,13 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_saved_search` WRITE;
 /*!40000 ALTER TABLE `civicrm_saved_search` DISABLE KEYS */;
 INSERT INTO `civicrm_saved_search` (`id`, `name`, `label`, `form_values`, `mapping_id`, `search_custom_id`, `api_entity`, `api_params`, `created_id`, `modified_id`, `expires_date`, `created_date`, `modified_date`, `description`) VALUES
- (1,'Email_Bounce_History','Email Bounce History',NULL,NULL,NULL,'MailingEventBounce','{\"version\":4,\"select\":[\"time_stamp\",\"bounce_type_id:label\",\"bounce_reason\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.name\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"MailingEventQueue AS MailingEventBounce_MailingEventQueue_event_queue_id_01\",\"INNER\",[\"event_queue_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01.id\"]],[\"MailingJob AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01.job_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.id\"]],[\"Mailing AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.mailing_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-19 21:22:29','2023-10-19 21:22:29',NULL),
- (2,'Contact_Summary_Notes','Contact Summary Notes',NULL,NULL,NULL,'Note','{\"version\":4,\"select\":[\"id\",\"subject\",\"note\",\"note_date\",\"modified_date\",\"contact_id.sort_name\",\"GROUP_CONCAT(UNIQUE Note_EntityFile_File_01.file_name) AS GROUP_CONCAT_Note_EntityFile_File_01_file_name\",\"COUNT(Note_Note_entity_id_01.id) AS COUNT_Note_Note_entity_id_01_id\"],\"orderBy\":[],\"where\":[],\"groupBy\":[\"id\"],\"join\":[[\"File AS Note_EntityFile_File_01\",\"LEFT\",\"EntityFile\",[\"id\",\"=\",\"Note_EntityFile_File_01.entity_id\"],[\"Note_EntityFile_File_01.entity_table\",\"=\",\"\'civicrm_note\'\"]],[\"Note AS Note_Note_entity_id_01\",\"LEFT\",[\"id\",\"=\",\"Note_Note_entity_id_01.entity_id\"],[\"Note_Note_entity_id_01.entity_table\",\"=\",\"\'civicrm_note\'\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-19 21:22:29','2023-10-19 21:22:29',NULL),
- (3,'Contact_Summary_Relationships','Contact Summary Relationships',NULL,NULL,NULL,'RelationshipCache','{\"version\":4,\"select\":[\"near_relation:label\",\"RelationshipCache_Contact_far_contact_id_01.display_name\",\"start_date\",\"end_date\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.city\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label\",\"RelationshipCache_Contact_far_contact_id_01.email_primary.email\",\"RelationshipCache_Contact_far_contact_id_01.phone_primary.phone\",\"permission_near_to_far:label\",\"permission_far_to_near:label\",\"is_active\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"Contact AS RelationshipCache_Contact_far_contact_id_01\",\"LEFT\",[\"far_contact_id\",\"=\",\"RelationshipCache_Contact_far_contact_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-19 21:22:29','2023-10-19 21:22:29',NULL);
+ (1,'Administer_Campaigns','Administer Campaigns',NULL,NULL,NULL,'Campaign','{\"version\":4,\"select\":[\"id\",\"title\",\"description\",\"is_active\",\"start_date\",\"end_date\",\"campaign_type_id:label\",\"status_id:label\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[],\"having\":[]}',NULL,NULL,NULL,'2023-12-17 20:11:32','2023-12-17 20:11:32',NULL),
+ (2,'Administer_Petitions','Administer Petitions',NULL,NULL,NULL,'Survey','{\"version\":4,\"select\":[\"id\",\"title\",\"campaign_id:label\",\"is_active\",\"is_default\"],\"orderBy\":[],\"where\":[[\"activity_type_id:name\",\"=\",\"Petition\"]],\"groupBy\":[],\"join\":[],\"having\":[]}',NULL,NULL,NULL,'2023-12-17 20:11:32','2023-12-17 20:11:32',NULL),
+ (3,'Administer_Survey_Options','Administer Survey Options',NULL,NULL,NULL,'OptionValue','{\"version\":4,\"select\":[\"label\",\"value\",\"filter\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[],\"having\":[]}',NULL,NULL,NULL,'2023-12-17 20:11:32','2023-12-17 20:11:32',NULL),
+ (4,'Administer_Surveys','Administer Surveys',NULL,NULL,NULL,'Survey','{\"version\":4,\"select\":[\"id\",\"title\",\"campaign_id:label\",\"activity_type_id:label\",\"release_frequency\",\"default_number_of_contacts\",\"max_number_of_contacts\",\"is_active\",\"is_default\",\"result_id:label\"],\"orderBy\":[],\"where\":[[\"activity_type_id:name\",\"!=\",\"Petition\"]],\"groupBy\":[],\"join\":[],\"having\":[]}',NULL,NULL,NULL,'2023-12-17 20:11:32','2023-12-17 20:11:32',NULL),
+ (5,'Email_Bounce_History','Email Bounce History',NULL,NULL,NULL,'MailingEventBounce','{\"version\":4,\"select\":[\"time_stamp\",\"bounce_type_id:label\",\"bounce_reason\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.name\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"MailingEventQueue AS MailingEventBounce_MailingEventQueue_event_queue_id_01\",\"INNER\",[\"event_queue_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01.id\"]],[\"MailingJob AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01.job_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.id\"]],[\"Mailing AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.mailing_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-12-17 20:11:32','2023-12-17 20:11:32',NULL),
+ (6,'Contact_Summary_Notes','Contact Summary Notes',NULL,NULL,NULL,'Note','{\"version\":4,\"select\":[\"id\",\"subject\",\"note\",\"note_date\",\"modified_date\",\"contact_id.sort_name\",\"GROUP_CONCAT(UNIQUE Note_EntityFile_File_01.file_name) AS GROUP_CONCAT_Note_EntityFile_File_01_file_name\",\"COUNT(Note_Note_entity_id_01.id) AS COUNT_Note_Note_entity_id_01_id\"],\"orderBy\":[],\"where\":[],\"groupBy\":[\"id\"],\"join\":[[\"File AS Note_EntityFile_File_01\",\"LEFT\",\"EntityFile\",[\"id\",\"=\",\"Note_EntityFile_File_01.entity_id\"],[\"Note_EntityFile_File_01.entity_table\",\"=\",\"\'civicrm_note\'\"]],[\"Note AS Note_Note_entity_id_01\",\"LEFT\",[\"id\",\"=\",\"Note_Note_entity_id_01.entity_id\"],[\"Note_Note_entity_id_01.entity_table\",\"=\",\"\'civicrm_note\'\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-12-17 20:11:32','2023-12-17 20:11:32',NULL),
+ (7,'Contact_Summary_Relationships','Contact Summary Relationships',NULL,NULL,NULL,'RelationshipCache','{\"version\":4,\"select\":[\"near_relation:label\",\"RelationshipCache_Contact_far_contact_id_01.display_name\",\"start_date\",\"end_date\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.city\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label\",\"RelationshipCache_Contact_far_contact_id_01.email_primary.email\",\"RelationshipCache_Contact_far_contact_id_01.phone_primary.phone\",\"permission_near_to_far:label\",\"permission_far_to_near:label\",\"is_active\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"Contact AS RelationshipCache_Contact_far_contact_id_01\",\"LEFT\",[\"far_contact_id\",\"=\",\"RelationshipCache_Contact_far_contact_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-12-17 20:11:32','2023-12-17 20:11:32',NULL);
 /*!40000 ALTER TABLE `civicrm_saved_search` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -8113,4009 +8113,4015 @@ INSERT INTO `civicrm_state_province` (`id`, `name`, `abbreviation`, `country_id`
  (1048,'Wisconsin','WI',1228,1),
  (1049,'Wyoming','WY',1228,1),
  (1050,'District of Columbia','DC',1228,1),
- (1052,'American Samoa','AS',1228,1),
- (1053,'Guam','GU',1228,1),
- (1055,'Northern Mariana Islands','MP',1228,1),
- (1056,'Puerto Rico','PR',1228,1),
- (1057,'Virgin Islands','VI',1228,1),
- (1058,'United States Minor Outlying Islands','UM',1228,1),
- (1059,'Armed Forces Europe','AE',1228,1),
- (1060,'Armed Forces Americas','AA',1228,1),
- (1061,'Armed Forces Pacific','AP',1228,1),
- (1100,'Alberta','AB',1039,1),
- (1101,'British Columbia','BC',1039,1),
- (1102,'Manitoba','MB',1039,1),
- (1103,'New Brunswick','NB',1039,1),
- (1104,'Newfoundland and Labrador','NL',1039,1),
- (1105,'Northwest Territories','NT',1039,1),
- (1106,'Nova Scotia','NS',1039,1),
- (1107,'Nunavut','NU',1039,1),
- (1108,'Ontario','ON',1039,1),
- (1109,'Prince Edward Island','PE',1039,1),
- (1110,'Quebec','QC',1039,1),
- (1111,'Saskatchewan','SK',1039,1),
- (1112,'Yukon Territory','YT',1039,1),
- (1200,'Maharashtra','MH',1101,1),
- (1201,'Karnataka','KA',1101,1),
- (1202,'Andhra Pradesh','AP',1101,1),
- (1203,'Arunachal Pradesh','AR',1101,1),
- (1204,'Assam','AS',1101,1),
- (1205,'Bihar','BR',1101,1),
- (1206,'Chhattisgarh','CG',1101,1),
- (1207,'Goa','GA',1101,1),
- (1208,'Gujarat','GJ',1101,1),
- (1209,'Haryana','HR',1101,1),
- (1210,'Himachal Pradesh','HP',1101,1),
- (1211,'Jammu and Kashmir','JK',1101,1),
- (1212,'Jharkhand','JH',1101,1),
- (1213,'Kerala','KL',1101,1),
- (1214,'Madhya Pradesh','MP',1101,1),
- (1215,'Manipur','MN',1101,1),
- (1216,'Meghalaya','ML',1101,1),
- (1217,'Mizoram','MZ',1101,1),
- (1218,'Nagaland','NL',1101,1),
- (1219,'Orissa','OR',1101,1),
- (1220,'Punjab','PB',1101,1),
- (1221,'Rajasthan','RJ',1101,1),
- (1222,'Sikkim','SK',1101,1),
- (1223,'Tamil Nadu','TN',1101,1),
- (1224,'Tripura','TR',1101,1),
- (1225,'Uttarakhand','UT',1101,1),
- (1226,'Uttar Pradesh','UP',1101,1),
- (1227,'West Bengal','WB',1101,1),
- (1228,'Andaman and Nicobar Islands','AN',1101,1),
- (1231,'Delhi','DL',1101,1),
- (1232,'Lakshadweep','LD',1101,1),
- (1233,'Pondicherry','PY',1101,1),
- (1300,'mazowieckie','MZ',1172,1),
- (1301,'pomorskie','PM',1172,1),
- (1302,'dolnośląskie','DS',1172,1),
- (1303,'kujawsko-pomorskie','KP',1172,1),
- (1304,'lubelskie','LU',1172,1),
- (1305,'lubuskie','LB',1172,1),
- (1306,'łódzkie','LD',1172,1),
- (1307,'małopolskie','MA',1172,1),
- (1308,'opolskie','OP',1172,1),
- (1309,'podkarpackie','PK',1172,1),
- (1310,'podlaskie','PD',1172,1),
- (1311,'śląskie','SL',1172,1),
- (1312,'świętokrzyskie','SK',1172,1),
- (1313,'warmińsko-mazurskie','WN',1172,1),
- (1314,'wielkopolskie','WP',1172,1),
- (1315,'zachodniopomorskie','ZP',1172,1),
- (1500,'Abu Zaby','AZ',1225,1),
- (1501,'\'Ajman','AJ',1225,1),
- (1502,'Al Fujayrah','FU',1225,1),
- (1503,'Ash Shariqah','SH',1225,1),
- (1504,'Dubayy','DU',1225,1),
- (1505,'Ra\'s al Khaymah','RK',1225,1),
- (1506,'Dac Lac','33',1233,1),
- (1507,'Umm al Qaywayn','UQ',1225,1),
- (1508,'Badakhshan','BDS',1001,1),
- (1509,'Badghis','BDG',1001,1),
- (1510,'Baghlan','BGL',1001,1),
- (1511,'Balkh','BAL',1001,1),
- (1512,'Bamian','BAM',1001,1),
- (1513,'Farah','FRA',1001,1),
- (1514,'Faryab','FYB',1001,1),
- (1515,'Ghazni','GHA',1001,1),
- (1516,'Ghowr','GHO',1001,1),
- (1517,'Helmand','HEL',1001,1),
- (1518,'Herat','HER',1001,1),
- (1519,'Jowzjan','JOW',1001,1),
- (1520,'Kabul','KAB',1001,1),
- (1521,'Kandahar','KAN',1001,1),
- (1522,'Kapisa','KAP',1001,1),
- (1523,'Khowst','KHO',1001,1),
- (1524,'Konar','KNR',1001,1),
- (1525,'Kondoz','KDZ',1001,1),
- (1526,'Laghman','LAG',1001,1),
- (1527,'Lowgar','LOW',1001,1),
- (1528,'Nangrahar','NAN',1001,1),
- (1529,'Nimruz','NIM',1001,1),
- (1530,'Nurestan','NUR',1001,1),
- (1531,'Oruzgan','ORU',1001,1),
- (1532,'Paktia','PIA',1001,1),
- (1533,'Paktika','PKA',1001,1),
- (1534,'Parwan','PAR',1001,1),
- (1535,'Samangan','SAM',1001,1),
- (1536,'Sar-e Pol','SAR',1001,1),
- (1537,'Takhar','TAK',1001,1),
- (1538,'Wardak','WAR',1001,1),
- (1539,'Zabol','ZAB',1001,1),
- (1540,'Berat','BR',1002,1),
- (1541,'Bulqizë','BU',1002,1),
- (1542,'Delvinë','DL',1002,1),
- (1543,'Devoll','DV',1002,1),
- (1544,'Dibër','DI',1002,1),
- (1545,'Durrës','DR',1002,1),
- (1546,'Elbasan','EL',1002,1),
- (1547,'Fier','FR',1002,1),
- (1548,'Gramsh','GR',1002,1),
- (1549,'Gjirokastër','GJ',1002,1),
- (1550,'Has','HA',1002,1),
- (1551,'Kavajë','KA',1002,1),
- (1552,'Kolonjë','ER',1002,1),
- (1553,'Korçë','KO',1002,1),
- (1554,'Krujë','KR',1002,1),
- (1555,'Kuçovë','KC',1002,1),
- (1556,'Kukës','KU',1002,1),
- (1557,'Kurbin','KB',1002,1),
- (1558,'Lezhë','LE',1002,1),
- (1559,'Librazhd','LB',1002,1),
- (1560,'Lushnjë','LU',1002,1),
- (1561,'Malësi e Madhe','MM',1002,1),
- (1562,'Mallakastër','MK',1002,1),
- (1563,'Mat','MT',1002,1),
- (1564,'Mirditë','MR',1002,1),
- (1565,'Peqin','PQ',1002,1),
- (1566,'Përmet','PR',1002,1),
- (1567,'Pogradec','PG',1002,1),
- (1568,'Pukë','PU',1002,1),
- (1569,'Sarandë','SR',1002,1),
- (1570,'Skrapar','SK',1002,1),
- (1571,'Shkodër','SH',1002,1),
- (1572,'Tepelenë','TE',1002,1),
- (1573,'Tiranë','TR',1002,1),
- (1574,'Tropojë','TP',1002,1),
- (1575,'Vlorë','VL',1002,1),
- (1576,'Erevan','ER',1011,1),
- (1577,'Aragacotn','AG',1011,1),
- (1578,'Ararat','AR',1011,1),
- (1579,'Armavir','AV',1011,1),
- (1580,'Gegarkunik\'','GR',1011,1),
- (1581,'Kotayk\'','KT',1011,1),
- (1582,'Lory','LO',1011,1),
- (1583,'Sirak','SH',1011,1),
- (1584,'Syunik\'','SU',1011,1),
- (1585,'Tavus','TV',1011,1),
- (1586,'Vayoc Jor','VD',1011,1),
- (1587,'Bengo','BGO',1006,1),
- (1588,'Benguela','BGU',1006,1),
- (1589,'Bie','BIE',1006,1),
- (1590,'Cabinda','CAB',1006,1),
- (1591,'Cuando-Cubango','CCU',1006,1),
- (1592,'Cuanza Norte','CNO',1006,1),
- (1593,'Cuanza Sul','CUS',1006,1),
- (1594,'Cunene','CNN',1006,1),
- (1595,'Huambo','HUA',1006,1),
- (1596,'Huila','HUI',1006,1),
- (1597,'Luanda','LUA',1006,1),
- (1598,'Lunda Norte','LNO',1006,1),
- (1599,'Lunda Sul','LSU',1006,1),
- (1600,'Malange','MAL',1006,1),
- (1601,'Moxico','MOX',1006,1),
- (1602,'Namibe','NAM',1006,1),
- (1603,'Uige','UIG',1006,1),
- (1604,'Zaire','ZAI',1006,1),
- (1605,'Capital federal','C',1010,1),
- (1606,'Buenos Aires','B',1010,1),
- (1607,'Catamarca','K',1010,1),
- (1608,'Cordoba','X',1010,1),
- (1609,'Corrientes','W',1010,1),
- (1610,'Chaco','H',1010,1),
- (1611,'Chubut','U',1010,1),
- (1612,'Entre Rios','E',1010,1),
- (1613,'Formosa','P',1010,1),
- (1614,'Jujuy','Y',1010,1),
- (1615,'La Pampa','L',1010,1),
- (1616,'Mendoza','M',1010,1),
- (1617,'Misiones','N',1010,1),
- (1618,'Neuquen','Q',1010,1),
- (1619,'Rio Negro','R',1010,1),
- (1620,'Salta','A',1010,1),
- (1621,'San Juan','J',1010,1),
- (1622,'San Luis','D',1010,1),
- (1623,'Santa Cruz','Z',1010,1),
- (1624,'Santa Fe','S',1010,1),
- (1625,'Santiago del Estero','G',1010,1),
- (1626,'Tierra del Fuego','V',1010,1),
- (1627,'Tucuman','T',1010,1),
- (1628,'Burgenland','1',1014,1),
- (1629,'Kärnten','2',1014,1),
- (1630,'Niederösterreich','3',1014,1),
- (1631,'Oberösterreich','4',1014,1),
- (1632,'Salzburg','5',1014,1),
- (1633,'Steiermark','6',1014,1),
- (1634,'Tirol','7',1014,1),
- (1635,'Vorarlberg','8',1014,1),
- (1636,'Wien','9',1014,1),
- (1637,'Australian Antarctic Territory','AAT',1008,1),
- (1638,'Australian Capital Territory','ACT',1013,1),
- (1639,'Northern Territory','NT',1013,1),
- (1640,'New South Wales','NSW',1013,1),
- (1641,'Queensland','QLD',1013,1),
- (1642,'South Australia','SA',1013,1),
- (1643,'Tasmania','TAS',1013,1),
- (1644,'Victoria','VIC',1013,1),
- (1645,'Western Australia','WA',1013,1),
- (1646,'Naxcivan','NX',1015,1),
- (1647,'Ali Bayramli','AB',1015,1),
- (1648,'Baki','BA',1015,1),
- (1649,'Ganca','GA',1015,1),
- (1650,'Lankaran','LA',1015,1),
- (1651,'Mingacevir','MI',1015,1),
- (1652,'Naftalan','NA',1015,1),
- (1653,'Saki','SA',1015,1),
- (1654,'Sumqayit','SM',1015,1),
- (1655,'Susa','SS',1015,1),
- (1656,'Xankandi','XA',1015,1),
- (1657,'Yevlax','YE',1015,1),
- (1658,'Abseron','ABS',1015,1),
- (1659,'Agcabadi','AGC',1015,1),
- (1660,'Agdam','AGM',1015,1),
- (1661,'Agdas','AGS',1015,1),
- (1662,'Agstafa','AGA',1015,1),
- (1663,'Agsu','AGU',1015,1),
- (1664,'Astara','AST',1015,1),
- (1665,'Babak','BAB',1015,1),
- (1666,'Balakan','BAL',1015,1),
- (1667,'Barda','BAR',1015,1),
- (1668,'Beylagan','BEY',1015,1),
- (1669,'Bilasuvar','BIL',1015,1),
- (1670,'Cabrayll','CAB',1015,1),
- (1671,'Calilabad','CAL',1015,1),
- (1672,'Culfa','CUL',1015,1),
- (1673,'Daskasan','DAS',1015,1),
- (1674,'Davaci','DAV',1015,1),
- (1675,'Fuzuli','FUZ',1015,1),
- (1676,'Gadabay','GAD',1015,1),
- (1677,'Goranboy','GOR',1015,1),
- (1678,'Goycay','GOY',1015,1),
- (1679,'Haciqabul','HAC',1015,1),
- (1680,'Imisli','IMI',1015,1),
- (1681,'Ismayilli','ISM',1015,1),
- (1682,'Kalbacar','KAL',1015,1),
- (1683,'Kurdamir','KUR',1015,1),
- (1684,'Lacin','LAC',1015,1),
- (1685,'Lerik','LER',1015,1),
- (1686,'Masalli','MAS',1015,1),
- (1687,'Neftcala','NEF',1015,1),
- (1688,'Oguz','OGU',1015,1),
- (1689,'Ordubad','ORD',1015,1),
- (1690,'Qabala','QAB',1015,1),
- (1691,'Qax','QAX',1015,1),
- (1692,'Qazax','QAZ',1015,1),
- (1693,'Qobustan','QOB',1015,1),
- (1694,'Quba','QBA',1015,1),
- (1695,'Qubadli','QBI',1015,1),
- (1696,'Qusar','QUS',1015,1),
- (1697,'Saatli','SAT',1015,1),
- (1698,'Sabirabad','SAB',1015,1),
- (1699,'Sadarak','SAD',1015,1),
- (1700,'Sahbuz','SAH',1015,1),
- (1701,'Salyan','SAL',1015,1),
- (1702,'Samaxi','SMI',1015,1),
- (1703,'Samkir','SKR',1015,1),
- (1704,'Samux','SMX',1015,1),
- (1705,'Sarur','SAR',1015,1),
- (1706,'Siyazan','SIY',1015,1),
- (1707,'Tartar','TAR',1015,1),
- (1708,'Tovuz','TOV',1015,1),
- (1709,'Ucar','UCA',1015,1),
- (1710,'Xacmaz','XAC',1015,1),
- (1711,'Xanlar','XAN',1015,1),
- (1712,'Xizi','XIZ',1015,1),
- (1713,'Xocali','XCI',1015,1),
- (1714,'Xocavand','XVD',1015,1),
- (1715,'Yardimli','YAR',1015,1),
- (1716,'Zangilan','ZAN',1015,1),
- (1717,'Zaqatala','ZAQ',1015,1),
- (1718,'Zardab','ZAR',1015,1),
- (1719,'Federacija Bosna i Hercegovina','BIH',1026,1),
- (1720,'Republika Srpska','SRP',1026,1),
- (1721,'Bagerhat zila','05',1017,1),
- (1722,'Bandarban zila','01',1017,1),
- (1723,'Barguna zila','02',1017,1),
- (1724,'Barisal zila','06',1017,1),
- (1725,'Bhola zila','07',1017,1),
- (1726,'Bogra zila','03',1017,1),
- (1727,'Brahmanbaria zila','04',1017,1),
- (1728,'Chandpur zila','09',1017,1),
- (1729,'Chittagong zila','10',1017,1),
- (1730,'Chuadanga zila','12',1017,1),
- (1731,'Comilla zila','08',1017,1),
- (1732,'Cox\'s Bazar zila','11',1017,1),
- (1733,'Dhaka zila','13',1017,1),
- (1734,'Dinajpur zila','14',1017,1),
- (1735,'Faridpur zila','15',1017,1),
- (1736,'Feni zila','16',1017,1),
- (1737,'Gaibandha zila','19',1017,1),
- (1738,'Gazipur zila','18',1017,1),
- (1739,'Gopalganj zila','17',1017,1),
- (1740,'Habiganj zila','20',1017,1),
- (1741,'Jaipurhat zila','24',1017,1),
- (1742,'Jamalpur zila','21',1017,1),
- (1743,'Jessore zila','22',1017,1),
- (1744,'Jhalakati zila','25',1017,1),
- (1745,'Jhenaidah zila','23',1017,1),
- (1746,'Khagrachari zila','29',1017,1),
- (1747,'Khulna zila','27',1017,1),
- (1748,'Kishorganj zila','26',1017,1),
- (1749,'Kurigram zila','28',1017,1),
- (1750,'Kushtia zila','30',1017,1),
- (1751,'Lakshmipur zila','31',1017,1),
- (1752,'Lalmonirhat zila','32',1017,1),
- (1753,'Madaripur zila','36',1017,1),
- (1754,'Magura zila','37',1017,1),
- (1755,'Manikganj zila','33',1017,1),
- (1756,'Meherpur zila','39',1017,1),
- (1757,'Moulvibazar zila','38',1017,1),
- (1758,'Munshiganj zila','35',1017,1),
- (1759,'Mymensingh zila','34',1017,1),
- (1760,'Naogaon zila','48',1017,1),
- (1761,'Narail zila','43',1017,1),
- (1762,'Narayanganj zila','40',1017,1),
- (1763,'Narsingdi zila','42',1017,1),
- (1764,'Natore zila','44',1017,1),
- (1765,'Nawabganj zila','45',1017,1),
- (1766,'Netrakona zila','41',1017,1),
- (1767,'Nilphamari zila','46',1017,1),
- (1768,'Noakhali zila','47',1017,1),
- (1769,'Pabna zila','49',1017,1),
- (1770,'Panchagarh zila','52',1017,1),
- (1771,'Patuakhali zila','51',1017,1),
- (1772,'Pirojpur zila','50',1017,1),
- (1773,'Rajbari zila','53',1017,1),
- (1774,'Rajshahi zila','54',1017,1),
- (1775,'Rangamati zila','56',1017,1),
- (1776,'Rangpur zila','55',1017,1),
- (1777,'Satkhira zila','58',1017,1),
- (1778,'Shariatpur zila','62',1017,1),
- (1779,'Sherpur zila','57',1017,1),
- (1780,'Sirajganj zila','59',1017,1),
- (1781,'Sunamganj zila','61',1017,1),
- (1782,'Sylhet zila','60',1017,1),
- (1783,'Tangail zila','63',1017,1),
- (1784,'Thakurgaon zila','64',1017,1),
- (1785,'Antwerpen','VAN',1020,1),
- (1786,'Brabant Wallon','WBR',1020,1),
- (1787,'Hainaut','WHT',1020,1),
- (1788,'Liege','WLG',1020,1),
- (1789,'Limburg','VLI',1020,1),
- (1790,'Luxembourg','WLX',1020,1),
- (1791,'Namur','WNA',1020,1),
- (1792,'Oost-Vlaanderen','VOV',1020,1),
- (1793,'Vlaams-Brabant','VBR',1020,1),
- (1794,'West-Vlaanderen','VWV',1020,1),
- (1795,'Bale','BAL',1034,1),
- (1796,'Bam','BAM',1034,1),
- (1797,'Banwa','BAN',1034,1),
- (1798,'Bazega','BAZ',1034,1),
- (1799,'Bougouriba','BGR',1034,1),
- (1800,'Boulgou','BLG',1034,1),
- (1801,'Boulkiemde','BLK',1034,1),
- (1802,'Comoe','COM',1034,1),
- (1803,'Ganzourgou','GAN',1034,1),
- (1804,'Gnagna','GNA',1034,1),
- (1805,'Gourma','GOU',1034,1),
- (1806,'Houet','HOU',1034,1),
- (1807,'Ioba','IOB',1034,1),
- (1808,'Kadiogo','KAD',1034,1),
- (1809,'Kenedougou','KEN',1034,1),
- (1810,'Komondjari','KMD',1034,1),
- (1811,'Kompienga','KMP',1034,1),
- (1812,'Kossi','KOS',1034,1),
- (1813,'Koulpulogo','KOP',1034,1),
- (1814,'Kouritenga','KOT',1034,1),
- (1815,'Kourweogo','KOW',1034,1),
- (1816,'Leraba','LER',1034,1),
- (1817,'Loroum','LOR',1034,1),
- (1818,'Mouhoun','MOU',1034,1),
- (1819,'Nahouri','NAO',1034,1),
- (1820,'Namentenga','NAM',1034,1),
- (1821,'Nayala','NAY',1034,1),
- (1822,'Noumbiel','NOU',1034,1),
- (1823,'Oubritenga','OUB',1034,1),
- (1824,'Oudalan','OUD',1034,1),
- (1825,'Passore','PAS',1034,1),
- (1826,'Poni','PON',1034,1),
- (1827,'Sanguie','SNG',1034,1),
- (1828,'Sanmatenga','SMT',1034,1),
- (1829,'Seno','SEN',1034,1),
- (1830,'Siasili','SIS',1034,1),
- (1831,'Soum','SOM',1034,1),
- (1832,'Sourou','SOR',1034,1),
- (1833,'Tapoa','TAP',1034,1),
- (1834,'Tui','TUI',1034,1),
- (1835,'Yagha','YAG',1034,1),
- (1836,'Yatenga','YAT',1034,1),
- (1837,'Ziro','ZIR',1034,1),
- (1838,'Zondoma','ZON',1034,1),
- (1839,'Zoundweogo','ZOU',1034,1),
- (1840,'Blagoevgrad','01',1033,1),
- (1841,'Burgas','02',1033,1),
- (1842,'Dobrich','08',1033,1),
- (1843,'Gabrovo','07',1033,1),
- (1844,'Haskovo','26',1033,1),
- (1845,'Yambol','28',1033,1),
- (1846,'Kardzhali','09',1033,1),
- (1847,'Kyustendil','10',1033,1),
- (1848,'Lovech','11',1033,1),
- (1849,'Montana','12',1033,1),
- (1850,'Pazardzhik','13',1033,1),
- (1851,'Pernik','14',1033,1),
- (1852,'Pleven','15',1033,1),
- (1853,'Plovdiv','16',1033,1),
- (1854,'Razgrad','17',1033,1),
- (1855,'Ruse','18',1033,1),
- (1856,'Silistra','19',1033,1),
- (1857,'Sliven','20',1033,1),
- (1858,'Smolyan','21',1033,1),
- (1859,'Sofia','23',1033,1),
- (1860,'Stara Zagora','24',1033,1),
- (1861,'Shumen','27',1033,1),
- (1862,'Targovishte','25',1033,1),
- (1863,'Varna','03',1033,1),
- (1864,'Veliko Tarnovo','04',1033,1),
- (1865,'Vidin','05',1033,1),
- (1866,'Vratsa','06',1033,1),
- (1867,'Al Hadd','01',1016,1),
- (1868,'Al Manamah','03',1016,1),
- (1869,'Al Mintaqah al Gharbiyah','10',1016,1),
- (1870,'Al Mintagah al Wusta','07',1016,1),
- (1871,'Al Mintaqah ash Shamaliyah','05',1016,1),
- (1872,'Al Muharraq','02',1016,1),
- (1873,'Ar Rifa','09',1016,1),
- (1874,'Jidd Hafs','04',1016,1),
- (1875,'Madluat Jamad','12',1016,1),
- (1876,'Madluat Isa','08',1016,1),
- (1877,'Mintaqat Juzur tawar','11',1016,1),
- (1878,'Sitrah','06',1016,1),
- (1879,'Bubanza','BB',1036,1),
- (1880,'Bujumbura','BJ',1036,1),
- (1881,'Bururi','BR',1036,1),
- (1882,'Cankuzo','CA',1036,1),
- (1883,'Cibitoke','CI',1036,1),
- (1884,'Gitega','GI',1036,1),
- (1885,'Karuzi','KR',1036,1),
- (1886,'Kayanza','KY',1036,1),
- (1887,'Makamba','MA',1036,1),
- (1888,'Muramvya','MU',1036,1),
- (1889,'Mwaro','MW',1036,1),
- (1890,'Ngozi','NG',1036,1),
- (1891,'Rutana','RT',1036,1),
- (1892,'Ruyigi','RY',1036,1),
- (1893,'Alibori','AL',1022,1),
- (1894,'Atakora','AK',1022,1),
- (1895,'Atlantique','AQ',1022,1),
- (1896,'Borgou','BO',1022,1),
- (1897,'Collines','CO',1022,1),
- (1898,'Donga','DO',1022,1),
- (1899,'Kouffo','KO',1022,1),
- (1900,'Littoral','LI',1022,1),
- (1901,'Mono','MO',1022,1),
- (1902,'Oueme','OU',1022,1),
- (1903,'Plateau','PL',1022,1),
- (1904,'Zou','ZO',1022,1),
- (1905,'Belait','BE',1032,1),
- (1906,'Brunei-Muara','BM',1032,1),
- (1907,'Temburong','TE',1032,1),
- (1908,'Tutong','TU',1032,1),
- (1909,'Cochabamba','C',1025,1),
- (1910,'Chuquisaca','H',1025,1),
- (1911,'El Beni','B',1025,1),
- (1912,'La Paz','L',1025,1),
- (1913,'Oruro','O',1025,1),
- (1914,'Pando','N',1025,1),
- (1915,'Potosi','P',1025,1),
- (1916,'Tarija','T',1025,1),
- (1917,'Acre','AC',1029,1),
- (1918,'Alagoas','AL',1029,1),
- (1919,'Amazonas','AM',1029,1),
- (1920,'Amapa','AP',1029,1),
- (1921,'Bahia','BA',1029,1),
- (1922,'Ceara','CE',1029,1),
- (1923,'Distrito Federal','DF',1029,1),
- (1924,'Espirito Santo','ES',1029,1),
- (1926,'Goias','GO',1029,1),
- (1927,'Maranhao','MA',1029,1),
- (1928,'Minas Gerais','MG',1029,1),
- (1929,'Mato Grosso do Sul','MS',1029,1),
- (1930,'Mato Grosso','MT',1029,1),
- (1931,'Para','PA',1029,1),
- (1932,'Paraiba','PB',1029,1),
- (1933,'Pernambuco','PE',1029,1),
- (1934,'Piaui','PI',1029,1),
- (1935,'Parana','PR',1029,1),
- (1936,'Rio de Janeiro','RJ',1029,1),
- (1937,'Rio Grande do Norte','RN',1029,1),
- (1938,'Rondonia','RO',1029,1),
- (1939,'Roraima','RR',1029,1),
- (1940,'Rio Grande do Sul','RS',1029,1),
- (1941,'Santa Catarina','SC',1029,1),
- (1942,'Sergipe','SE',1029,1),
- (1943,'Sao Paulo','SP',1029,1),
- (1944,'Tocantins','TO',1029,1),
- (1945,'Acklins and Crooked Islands','AC',1212,1),
- (1946,'Bimini','BI',1212,1),
- (1947,'Cat Island','CI',1212,1),
- (1948,'Exuma','EX',1212,1),
- (1955,'Inagua','IN',1212,1),
- (1957,'Long Island','LI',1212,1),
- (1959,'Mayaguana','MG',1212,1),
- (1960,'New Providence','NP',1212,1),
- (1962,'Ragged Island','RI',1212,1),
- (1966,'Bumthang','33',1024,1),
- (1967,'Chhukha','12',1024,1),
- (1968,'Dagana','22',1024,1),
- (1969,'Gasa','GA',1024,1),
- (1970,'Ha','13',1024,1),
- (1971,'Lhuentse','44',1024,1),
- (1972,'Monggar','42',1024,1),
- (1973,'Paro','11',1024,1),
- (1974,'Pemagatshel','43',1024,1),
- (1975,'Punakha','23',1024,1),
- (1976,'Samdrup Jongkha','45',1024,1),
- (1977,'Samtee','14',1024,1),
- (1978,'Sarpang','31',1024,1),
- (1979,'Thimphu','15',1024,1),
- (1980,'Trashigang','41',1024,1),
- (1981,'Trashi Yangtse','TY',1024,1),
- (1982,'Trongsa','32',1024,1),
- (1983,'Tsirang','21',1024,1),
- (1984,'Wangdue Phodrang','24',1024,1),
- (1985,'Zhemgang','34',1024,1),
- (1986,'Central','CE',1027,1),
- (1987,'Ghanzi','GH',1027,1),
- (1988,'Kgalagadi','KG',1027,1),
- (1989,'Kgatleng','KL',1027,1),
- (1990,'Kweneng','KW',1027,1),
- (1991,'Ngamiland','NG',1027,1),
- (1992,'North-East','NE',1027,1),
- (1993,'North-West','NW',1027,1),
- (1994,'South-East','SE',1027,1),
- (1995,'Southern','SO',1027,1),
- (1996,'Brèsckaja voblasc\'','BR',1019,1),
- (1997,'Homel\'skaja voblasc\'','HO',1019,1),
- (1998,'Hrodzenskaja voblasc\'','HR',1019,1),
- (1999,'Mahilëuskaja voblasc\'','MA',1019,1),
- (2000,'Minskaja voblasc\'','MI',1019,1),
- (2001,'Vicebskaja voblasc\'','VI',1019,1),
- (2002,'Belize','BZ',1021,1),
- (2003,'Cayo','CY',1021,1),
- (2004,'Corozal','CZL',1021,1),
- (2005,'Orange Walk','OW',1021,1),
- (2006,'Stann Creek','SC',1021,1),
- (2007,'Toledo','TOL',1021,1),
- (2008,'Kinshasa','KN',1050,1),
- (2011,'Equateur','EQ',1050,1),
- (2014,'Kasai-Oriental','KE',1050,1),
- (2016,'Maniema','MA',1050,1),
- (2017,'Nord-Kivu','NK',1050,1),
- (2019,'Sud-Kivu','SK',1050,1),
- (2020,'Bangui','BGF',1042,1),
- (2021,'Bamingui-Bangoran','BB',1042,1),
- (2022,'Basse-Kotto','BK',1042,1),
- (2023,'Haute-Kotto','HK',1042,1),
- (2024,'Haut-Mbomou','HM',1042,1),
- (2025,'Kemo','KG',1042,1),
- (2026,'Lobaye','LB',1042,1),
- (2027,'Mambere-Kadei','HS',1042,1),
- (2028,'Mbomou','MB',1042,1),
- (2029,'Nana-Grebizi','KB',1042,1),
- (2030,'Nana-Mambere','NM',1042,1),
- (2031,'Ombella-Mpoko','MP',1042,1),
- (2032,'Ouaka','UK',1042,1),
- (2033,'Ouham','AC',1042,1),
- (2034,'Ouham-Pende','OP',1042,1),
- (2035,'Sangha-Mbaere','SE',1042,1),
- (2036,'Vakaga','VR',1042,1),
- (2037,'Brazzaville','BZV',1051,1),
- (2038,'Bouenza','11',1051,1),
- (2039,'Cuvette','8',1051,1),
- (2040,'Cuvette-Ouest','15',1051,1),
- (2041,'Kouilou','5',1051,1),
- (2042,'Lekoumou','2',1051,1),
- (2043,'Likouala','7',1051,1),
- (2044,'Niari','9',1051,1),
- (2045,'Plateaux','14',1051,1),
- (2046,'Pool','12',1051,1),
- (2047,'Sangha','13',1051,1),
- (2048,'Aargau','AG',1205,1),
- (2049,'Appenzell Innerrhoden','AI',1205,1),
- (2050,'Appenzell Ausserrhoden','AR',1205,1),
- (2051,'Bern','BE',1205,1),
- (2052,'Basel-Landschaft','BL',1205,1),
- (2053,'Basel-Stadt','BS',1205,1),
- (2054,'Fribourg','FR',1205,1),
- (2055,'Geneva','GE',1205,1),
- (2056,'Glarus','GL',1205,1),
- (2057,'Graubunden','GR',1205,1),
- (2058,'Jura','JU',1205,1),
- (2059,'Luzern','LU',1205,1),
- (2060,'Neuchatel','NE',1205,1),
- (2061,'Nidwalden','NW',1205,1),
- (2062,'Obwalden','OW',1205,1),
- (2063,'Sankt Gallen','SG',1205,1),
- (2064,'Schaffhausen','SH',1205,1),
- (2065,'Solothurn','SO',1205,1),
- (2066,'Schwyz','SZ',1205,1),
- (2067,'Thurgau','TG',1205,1),
- (2068,'Ticino','TI',1205,1),
- (2069,'Uri','UR',1205,1),
- (2070,'Vaud','VD',1205,1),
- (2071,'Valais','VS',1205,1),
- (2072,'Zug','ZG',1205,1),
- (2073,'Zurich','ZH',1205,1),
- (2074,'18 Montagnes','06',1054,1),
- (2075,'Agnebi','16',1054,1),
- (2076,'Bas-Sassandra','09',1054,1),
- (2077,'Denguele','10',1054,1),
- (2078,'Haut-Sassandra','02',1054,1),
- (2079,'Lacs','07',1054,1),
- (2080,'Lagunes','01',1054,1),
- (2081,'Marahoue','12',1054,1),
- (2082,'Moyen-Comoe','05',1054,1),
- (2083,'Nzi-Comoe','11',1054,1),
- (2084,'Savanes','03',1054,1),
- (2085,'Sud-Bandama','15',1054,1),
- (2086,'Sud-Comoe','13',1054,1),
- (2087,'Vallee du Bandama','04',1054,1),
- (2088,'Worodouqou','14',1054,1),
- (2089,'Zanzan','08',1054,1),
- (2090,'Aisen del General Carlos Ibanez del Campo','AI',1044,1),
- (2091,'Antofagasta','AN',1044,1),
- (2092,'Araucania','AR',1044,1),
- (2093,'Atacama','AT',1044,1),
- (2094,'Bio-Bio','BI',1044,1),
- (2095,'Coquimbo','CO',1044,1),
- (2096,'Libertador General Bernardo O\'Higgins','LI',1044,1),
- (2097,'Los Lagos','LL',1044,1),
- (2098,'Magallanes','MA',1044,1),
- (2099,'Maule','ML',1044,1),
- (2100,'Santiago Metropolitan','SM',1044,1),
- (2101,'Tarapaca','TA',1044,1),
- (2102,'Valparaiso','VS',1044,1),
- (2103,'Adamaoua','AD',1038,1),
- (2104,'Centre','CE',1038,1),
- (2105,'East','ES',1038,1),
- (2106,'Far North','EN',1038,1),
- (2107,'North','NO',1038,1),
- (2108,'South','SW',1038,1),
- (2109,'South-West','SW',1038,1),
- (2110,'West','OU',1038,1),
- (2111,'Beijing','11',1045,1),
- (2112,'Chongqing','50',1045,1),
- (2113,'Shanghai','31',1045,1),
- (2114,'Tianjin','12',1045,1),
- (2115,'Anhui','34',1045,1),
- (2116,'Fujian','35',1045,1),
- (2117,'Gansu','62',1045,1),
- (2118,'Guangdong','44',1045,1),
- (2119,'Guizhou','52',1045,1),
- (2120,'Hainan','46',1045,1),
- (2121,'Hebei','13',1045,1),
- (2122,'Heilongjiang','23',1045,1),
- (2123,'Henan','41',1045,1),
- (2124,'Hubei','42',1045,1),
- (2125,'Hunan','43',1045,1),
- (2126,'Jiangsu','32',1045,1),
- (2127,'Jiangxi','36',1045,1),
- (2128,'Jilin','22',1045,1),
- (2129,'Liaoning','21',1045,1),
- (2130,'Qinghai','63',1045,1),
- (2131,'Shaanxi','61',1045,1),
- (2132,'Shandong','37',1045,1),
- (2133,'Shanxi','14',1045,1),
- (2134,'Sichuan','51',1045,1),
- (2135,'Taiwan','71',1045,1),
- (2136,'Yunnan','53',1045,1),
- (2137,'Zhejiang','33',1045,1),
- (2138,'Guangxi','45',1045,1),
- (2139,'Neia Mongol (mn)','15',1045,1),
- (2140,'Xinjiang','65',1045,1),
- (2141,'Xizang','54',1045,1),
- (2142,'Hong Kong','91',1045,1),
- (2143,'Macau','92',1045,1),
- (2144,'Distrito Capital de Bogotá','DC',1048,1),
- (2145,'Amazonea','AMA',1048,1),
- (2146,'Antioquia','ANT',1048,1),
- (2147,'Arauca','ARA',1048,1),
- (2148,'Atlántico','ATL',1048,1),
- (2149,'Bolívar','BOL',1048,1),
- (2150,'Boyacá','BOY',1048,1),
- (2151,'Caldea','CAL',1048,1),
- (2152,'Caquetá','CAQ',1048,1),
- (2153,'Casanare','CAS',1048,1),
- (2154,'Cauca','CAU',1048,1),
- (2155,'Cesar','CES',1048,1),
- (2156,'Córdoba','COR',1048,1),
- (2157,'Cundinamarca','CUN',1048,1),
- (2158,'Chocó','CHO',1048,1),
- (2159,'Guainía','GUA',1048,1),
- (2160,'Guaviare','GUV',1048,1),
- (2161,'La Guajira','LAG',1048,1),
- (2162,'Magdalena','MAG',1048,1),
- (2163,'Meta','MET',1048,1),
- (2164,'Nariño','NAR',1048,1),
- (2165,'Norte de Santander','NSA',1048,1),
- (2166,'Putumayo','PUT',1048,1),
- (2167,'Quindio','QUI',1048,1),
- (2168,'Risaralda','RIS',1048,1),
- (2169,'San Andrés, Providencia y Santa Catalina','SAP',1048,1),
- (2170,'Santander','SAN',1048,1),
- (2171,'Sucre','SUC',1048,1),
- (2172,'Tolima','TOL',1048,1),
- (2173,'Valle del Cauca','VAC',1048,1),
- (2174,'Vaupés','VAU',1048,1),
- (2175,'Vichada','VID',1048,1),
- (2176,'Alajuela','A',1053,1),
- (2177,'Cartago','C',1053,1),
- (2178,'Guanacaste','G',1053,1),
- (2179,'Heredia','H',1053,1),
- (2180,'Limon','L',1053,1),
- (2181,'Puntarenas','P',1053,1),
- (2182,'San Jose','SJ',1053,1),
- (2183,'Camagey','09',1056,1),
- (2184,'Ciego de `vila','08',1056,1),
- (2185,'Cienfuegos','06',1056,1),
- (2186,'Ciudad de La Habana','03',1056,1),
- (2187,'Granma','12',1056,1),
- (2188,'Guantanamo','14',1056,1),
- (2189,'Holquin','11',1056,1),
- (2190,'La Habana','02',1056,1),
- (2191,'Las Tunas','10',1056,1),
- (2192,'Matanzas','04',1056,1),
- (2193,'Pinar del Rio','01',1056,1),
- (2194,'Sancti Spiritus','07',1056,1),
- (2195,'Santiago de Cuba','13',1056,1),
- (2196,'Villa Clara','05',1056,1),
- (2197,'Isla de la Juventud','99',1056,1),
- (2198,'Pinar del Roo','PR',1056,1),
- (2199,'Ciego de Avila','CA',1056,1),
- (2200,'Camagoey','CG',1056,1),
- (2201,'Holgun','HO',1056,1),
- (2202,'Sancti Spritus','SS',1056,1),
- (2203,'Municipio Especial Isla de la Juventud','IJ',1056,1),
- (2204,'Boa Vista','BV',1040,1),
- (2205,'Brava','BR',1040,1),
- (2206,'Calheta de Sao Miguel','CS',1040,1),
- (2207,'Fogo','FO',1040,1),
- (2208,'Maio','MA',1040,1),
- (2209,'Mosteiros','MO',1040,1),
- (2210,'Paul','PA',1040,1),
- (2211,'Porto Novo','PN',1040,1),
- (2212,'Praia','PR',1040,1),
- (2213,'Ribeira Grande','RG',1040,1),
- (2214,'Sal','SL',1040,1),
- (2215,'Sao Domingos','SD',1040,1),
- (2216,'Sao Filipe','SF',1040,1),
- (2217,'Sao Nicolau','SN',1040,1),
- (2218,'Sao Vicente','SV',1040,1),
- (2219,'Tarrafal','TA',1040,1),
- (2220,'Ammochostos Magusa','04',1057,1),
- (2221,'Keryneia','06',1057,1),
- (2222,'Larnaka','03',1057,1),
- (2223,'Lefkosia','01',1057,1),
- (2224,'Lemesos','02',1057,1),
- (2225,'Pafos','05',1057,1),
- (2226,'Jihočeský kraj','JC',1058,1),
- (2227,'Jihomoravský kraj','JM',1058,1),
- (2228,'Karlovarský kraj','KA',1058,1),
- (2229,'Královéhradecký kraj','KR',1058,1),
- (2230,'Liberecký kraj','LI',1058,1),
- (2231,'Moravskoslezský kraj','MO',1058,1),
- (2232,'Olomoucký kraj','OL',1058,1),
- (2233,'Pardubický kraj','PA',1058,1),
- (2234,'Plzeňský kraj','PL',1058,1),
- (2235,'Praha, hlavní město','PR',1058,1),
- (2236,'Středočeský kraj','ST',1058,1),
- (2237,'Ústecký kraj','US',1058,1),
- (2238,'Vysočina','VY',1058,1),
- (2239,'Zlínský kraj','ZL',1058,1),
- (2240,'Baden-Württemberg','BW',1082,1),
- (2241,'Bayern','BY',1082,1),
- (2242,'Bremen','HB',1082,1),
- (2243,'Hamburg','HH',1082,1),
- (2244,'Hessen','HE',1082,1),
- (2245,'Niedersachsen','NI',1082,1),
- (2246,'Nordrhein-Westfalen','NW',1082,1),
- (2247,'Rheinland-Pfalz','RP',1082,1),
- (2248,'Saarland','SL',1082,1),
- (2249,'Schleswig-Holstein','SH',1082,1),
- (2250,'Berlin','BE',1082,1),
- (2251,'Brandenburg','BB',1082,1),
- (2252,'Mecklenburg-Vorpommern','MV',1082,1),
- (2253,'Sachsen','SN',1082,1),
- (2254,'Sachsen-Anhalt','ST',1082,1),
- (2255,'Thüringen','TH',1082,1),
- (2256,'Ali Sabiah','AS',1060,1),
- (2257,'Dikhil','DI',1060,1),
- (2258,'Djibouti','DJ',1060,1),
- (2259,'Obock','OB',1060,1),
- (2260,'Tadjoura','TA',1060,1),
- (2261,'Frederiksberg','147',1059,1),
- (2262,'Copenhagen City','101',1059,1),
- (2263,'Copenhagen','015',1059,1),
- (2264,'Frederiksborg','020',1059,1),
- (2265,'Roskilde','025',1059,1),
- (2266,'Vestsjælland','030',1059,1),
- (2267,'Storstrøm','035',1059,1),
- (2268,'Bornholm','040',1059,1),
- (2269,'Fyn','042',1059,1),
- (2270,'South Jutland','050',1059,1),
- (2271,'Ribe','055',1059,1),
- (2272,'Vejle','060',1059,1),
- (2273,'Ringkjøbing','065',1059,1),
- (2274,'Ã…rhus','070',1059,1),
- (2275,'Viborg','076',1059,1),
- (2276,'North Jutland','080',1059,1),
- (2277,'Distrito Nacional (Santo Domingo)','01',1062,1),
- (2278,'Azua','02',1062,1),
- (2279,'Bahoruco','03',1062,1),
- (2280,'Barahona','04',1062,1),
- (2281,'Dajabón','05',1062,1),
- (2282,'Duarte','06',1062,1),
- (2283,'El Seybo [El Seibo]','08',1062,1),
- (2284,'Espaillat','09',1062,1),
- (2285,'Hato Mayor','30',1062,1),
- (2286,'Independencia','10',1062,1),
- (2287,'La Altagracia','11',1062,1),
- (2288,'La Estrelleta [Elias Pina]','07',1062,1),
- (2289,'La Romana','12',1062,1),
- (2290,'La Vega','13',1062,1),
- (2291,'Maroia Trinidad Sánchez','14',1062,1),
- (2292,'Monseñor Nouel','28',1062,1),
- (2293,'Monte Cristi','15',1062,1),
- (2294,'Monte Plata','29',1062,1),
- (2295,'Pedernales','16',1062,1),
- (2296,'Peravia','17',1062,1),
- (2297,'Puerto Plata','18',1062,1),
- (2298,'Salcedo','19',1062,1),
- (2299,'Samaná','20',1062,1),
- (2300,'San Cristóbal','21',1062,1),
- (2301,'San Pedro de Macorís','23',1062,1),
- (2302,'Sánchez Ramírez','24',1062,1),
- (2303,'Santiago','25',1062,1),
- (2304,'Santiago Rodríguez','26',1062,1),
- (2305,'Valverde','27',1062,1),
- (2306,'Adrar','01',1003,1),
- (2307,'Ain Defla','44',1003,1),
- (2308,'Ain Tmouchent','46',1003,1),
- (2309,'Alger','16',1003,1),
- (2310,'Annaba','23',1003,1),
- (2311,'Batna','05',1003,1),
- (2312,'Bechar','08',1003,1),
- (2313,'Bejaia','06',1003,1),
- (2314,'Biskra','07',1003,1),
- (2315,'Blida','09',1003,1),
- (2316,'Bordj Bou Arreridj','34',1003,1),
- (2317,'Bouira','10',1003,1),
- (2318,'Boumerdes','35',1003,1),
- (2319,'Chlef','02',1003,1),
- (2320,'Constantine','25',1003,1),
- (2321,'Djelfa','17',1003,1),
- (2322,'El Bayadh','32',1003,1),
- (2323,'El Oued','39',1003,1),
- (2324,'El Tarf','36',1003,1),
- (2325,'Ghardaia','47',1003,1),
- (2326,'Guelma','24',1003,1),
- (2327,'Illizi','33',1003,1),
- (2328,'Jijel','18',1003,1),
- (2329,'Khenchela','40',1003,1),
- (2330,'Laghouat','03',1003,1),
- (2331,'Mascara','29',1003,1),
- (2332,'Medea','26',1003,1),
- (2333,'Mila','43',1003,1),
- (2334,'Mostaganem','27',1003,1),
- (2335,'Msila','28',1003,1),
- (2336,'Naama','45',1003,1),
- (2337,'Oran','31',1003,1),
- (2338,'Ouargla','30',1003,1),
- (2339,'Oum el Bouaghi','04',1003,1),
- (2340,'Relizane','48',1003,1),
- (2341,'Saida','20',1003,1),
- (2342,'Setif','19',1003,1),
- (2343,'Sidi Bel Abbes','22',1003,1),
- (2344,'Skikda','21',1003,1),
- (2345,'Souk Ahras','41',1003,1),
- (2346,'Tamanghasset','11',1003,1),
- (2347,'Tebessa','12',1003,1),
- (2348,'Tiaret','14',1003,1),
- (2349,'Tindouf','37',1003,1),
- (2350,'Tipaza','42',1003,1),
- (2351,'Tissemsilt','38',1003,1),
- (2352,'Tizi Ouzou','15',1003,1),
- (2353,'Tlemcen','13',1003,1),
- (2354,'Azuay','A',1064,1),
- (2355,'Bolivar','B',1064,1),
- (2356,'Canar','F',1064,1),
- (2357,'Carchi','C',1064,1),
- (2358,'Cotopaxi','X',1064,1),
- (2359,'Chimborazo','H',1064,1),
- (2360,'El Oro','O',1064,1),
- (2361,'Esmeraldas','E',1064,1),
- (2362,'Galapagos','W',1064,1),
- (2363,'Guayas','G',1064,1),
- (2364,'Imbabura','I',1064,1),
- (2365,'Loja','L',1064,1),
- (2366,'Los Rios','R',1064,1),
- (2367,'Manabi','M',1064,1),
- (2368,'Morona-Santiago','S',1064,1),
- (2369,'Napo','N',1064,1),
- (2370,'Orellana','D',1064,1),
- (2371,'Pastaza','Y',1064,1),
- (2372,'Pichincha','P',1064,1),
- (2373,'Sucumbios','U',1064,1),
- (2374,'Tungurahua','T',1064,1),
- (2375,'Zamora-Chinchipe','Z',1064,1),
- (2376,'Harjumaa','37',1069,1),
- (2377,'Hiiumaa','39',1069,1),
- (2378,'Ida-Virumaa','44',1069,1),
- (2379,'Jõgevamaa','49',1069,1),
- (2380,'Järvamaa','51',1069,1),
- (2381,'Läänemaa','57',1069,1),
- (2382,'Lääne-Virumaa','59',1069,1),
- (2383,'Põlvamaa','65',1069,1),
- (2384,'Pärnumaa','67',1069,1),
- (2385,'Raplamaa','70',1069,1),
- (2386,'Saaremaa','74',1069,1),
- (2387,'Tartumaa','7B',1069,1),
- (2388,'Valgamaa','82',1069,1),
- (2389,'Viljandimaa','84',1069,1),
- (2390,'Võrumaa','86',1069,1),
- (2391,'Ad Daqahllyah','DK',1065,1),
- (2392,'Al Bahr al Ahmar','BA',1065,1),
- (2393,'Al Buhayrah','BH',1065,1),
- (2394,'Al Fayym','FYM',1065,1),
- (2395,'Al Gharbiyah','GH',1065,1),
- (2396,'Al Iskandarlyah','ALX',1065,1),
- (2397,'Al Isma illyah','IS',1065,1),
- (2398,'Al Jizah','GZ',1065,1),
- (2399,'Al Minuflyah','MNF',1065,1),
- (2400,'Al Minya','MN',1065,1),
- (2401,'Al Qahirah','C',1065,1),
- (2402,'Al Qalyublyah','KB',1065,1),
- (2403,'Al Wadi al Jadid','WAD',1065,1),
- (2404,'Ash Sharqiyah','SHR',1065,1),
- (2405,'As Suways','SUZ',1065,1),
- (2406,'Aswan','ASN',1065,1),
- (2407,'Asyut','AST',1065,1),
- (2408,'Bani Suwayf','BNS',1065,1),
- (2409,'Bur Sa\'id','PTS',1065,1),
- (2410,'Dumyat','DT',1065,1),
- (2411,'Janub Sina\'','JS',1065,1),
- (2412,'Kafr ash Shaykh','KFS',1065,1),
- (2413,'Matruh','MT',1065,1),
- (2414,'Qina','KN',1065,1),
- (2415,'Shamal Sina\'','SIN',1065,1),
- (2416,'Suhaj','SHG',1065,1),
- (2417,'Anseba','AN',1068,1),
- (2418,'Debub','DU',1068,1),
- (2419,'Debubawi Keyih Bahri [Debub-Keih-Bahri]','DK',1068,1),
- (2420,'Gash-Barka','GB',1068,1),
- (2421,'Maakel [Maekel]','MA',1068,1),
- (2422,'Semenawi Keyih Bahri [Semien-Keih-Bahri]','SK',1068,1),
- (2423,'Álava','VI',1198,1),
- (2424,'Albacete','AB',1198,1),
- (2425,'Alicante','A',1198,1),
- (2426,'Almería','AL',1198,1),
- (2427,'Asturias','O',1198,1),
- (2428,'Ávila','AV',1198,1),
- (2429,'Badajoz','BA',1198,1),
- (2430,'Baleares','PM',1198,1),
- (2431,'Barcelona','B',1198,1),
- (2432,'Burgos','BU',1198,1),
- (2433,'Cáceres','CC',1198,1),
- (2434,'Cádiz','CA',1198,1),
- (2435,'Cantabria','S',1198,1),
- (2436,'Castellón','CS',1198,1),
- (2437,'Ciudad Real','CR',1198,1),
- (2438,'Cuenca','CU',1198,1),
- (2439,'Girona [Gerona]','GE',1198,1),
- (2440,'Granada','GR',1198,1),
- (2441,'Guadalajara','GU',1198,1),
- (2442,'Guipúzcoa','SS',1198,1),
- (2443,'Huelva','H',1198,1),
- (2444,'Huesca','HU',1198,1),
- (2445,'Jaén','J',1198,1),
- (2446,'La Coruña','C',1198,1),
- (2447,'La Rioja','LO',1198,1),
- (2448,'Las Palmas','GC',1198,1),
- (2449,'León','LE',1198,1),
- (2450,'Lleida [Lérida]','L',1198,1),
- (2451,'Lugo','LU',1198,1),
- (2452,'Madrid','M',1198,1),
- (2453,'Málaga','MA',1198,1),
- (2454,'Murcia','MU',1198,1),
- (2455,'Navarra','NA',1198,1),
- (2456,'Ourense','OR',1198,1),
- (2457,'Palencia','P',1198,1),
- (2458,'Pontevedra','PO',1198,1),
- (2459,'Salamanca','SA',1198,1),
- (2460,'Santa Cruz de Tenerife','TF',1198,1),
- (2461,'Segovia','SG',1198,1),
- (2462,'Sevilla','SE',1198,1),
- (2463,'Soria','SO',1198,1),
- (2464,'Tarragona','T',1198,1),
- (2465,'Teruel','TE',1198,1),
- (2466,'Valencia','V',1198,1),
- (2467,'Valladolid','VA',1198,1),
- (2468,'Vizcaya','BI',1198,1),
- (2469,'Zamora','ZA',1198,1),
- (2470,'Zaragoza','Z',1198,1),
- (2471,'Ceuta','CE',1198,1),
- (2472,'Melilla','ML',1198,1),
- (2473,'Addis Ababa','AA',1070,1),
- (2474,'Dire Dawa','DD',1070,1),
- (2475,'Afar','AF',1070,1),
- (2476,'Amara','AM',1070,1),
- (2477,'Benshangul-Gumaz','BE',1070,1),
- (2478,'Gambela Peoples','GA',1070,1),
- (2479,'Harari People','HA',1070,1),
- (2480,'Oromia','OR',1070,1),
- (2481,'Somali','SO',1070,1),
- (2482,'Southern Nations, Nationalities and Peoples','SN',1070,1),
- (2483,'Tigrai','TI',1070,1),
- (2490,'Eastern','E',1074,1),
- (2491,'Northern','N',1074,1),
- (2492,'Western','W',1074,1),
- (2493,'Rotuma','R',1074,1),
- (2494,'Chuuk','TRK',1141,1),
- (2495,'Kosrae','KSA',1141,1),
- (2496,'Pohnpei','PNI',1141,1),
- (2497,'Yap','YAP',1141,1),
- (2498,'Ain','01',1076,1),
- (2499,'Aisne','02',1076,1),
- (2500,'Allier','03',1076,1),
- (2501,'Alpes-de-Haute-Provence','04',1076,1),
- (2502,'Alpes-Maritimes','06',1076,1),
- (2503,'Ardèche','07',1076,1),
- (2504,'Ardennes','08',1076,1),
- (2505,'Ariège','09',1076,1),
- (2506,'Aube','10',1076,1),
- (2507,'Aude','11',1076,1),
- (2508,'Aveyron','12',1076,1),
- (2509,'Bas-Rhin','67',1076,1),
- (2510,'Bouches-du-Rhône','13',1076,1),
- (2511,'Calvados','14',1076,1),
- (2512,'Cantal','15',1076,1),
- (2513,'Charente','16',1076,1),
- (2514,'Charente-Maritime','17',1076,1),
- (2515,'Cher','18',1076,1),
- (2516,'Corrèze','19',1076,1),
- (2517,'Corse-du-Sud','20A',1076,1),
- (2518,'Côte-d\'Or','21',1076,1),
- (2519,'Côtes-d\'Armor','22',1076,1),
- (2520,'Creuse','23',1076,1),
- (2521,'Deux-Sèvres','79',1076,1),
- (2522,'Dordogne','24',1076,1),
- (2523,'Doubs','25',1076,1),
- (2524,'Drôme','26',1076,1),
- (2525,'Essonne','91',1076,1),
- (2526,'Eure','27',1076,1),
- (2527,'Eure-et-Loir','28',1076,1),
- (2528,'Finistère','29',1076,1),
- (2529,'Gard','30',1076,1),
- (2530,'Gers','32',1076,1),
- (2531,'Gironde','33',1076,1),
- (2532,'Haut-Rhin','68',1076,1),
- (2533,'Haute-Corse','20B',1076,1),
- (2534,'Haute-Garonne','31',1076,1),
- (2535,'Haute-Loire','43',1076,1),
- (2536,'Haute-Saône','70',1076,1),
- (2537,'Haute-Savoie','74',1076,1),
- (2538,'Haute-Vienne','87',1076,1),
- (2539,'Hautes-Alpes','05',1076,1),
- (2540,'Hautes-Pyrénées','65',1076,1),
- (2541,'Hauts-de-Seine','92',1076,1),
- (2542,'Hérault','34',1076,1),
- (2543,'Indre','36',1076,1),
- (2544,'Ille-et-Vilaine','35',1076,1),
- (2545,'Indre-et-Loire','37',1076,1),
- (2546,'Isère','38',1076,1),
- (2547,'Landes','40',1076,1),
- (2548,'Loir-et-Cher','41',1076,1),
- (2549,'Loire','42',1076,1),
- (2550,'Loire-Atlantique','44',1076,1),
- (2551,'Loiret','45',1076,1),
- (2552,'Lot','46',1076,1),
- (2553,'Lot-et-Garonne','47',1076,1),
- (2554,'Lozère','48',1076,1),
- (2555,'Maine-et-Loire','49',1076,1),
- (2556,'Manche','50',1076,1),
- (2557,'Marne','51',1076,1),
- (2558,'Mayenne','53',1076,1),
- (2559,'Meurthe-et-Moselle','54',1076,1),
- (2560,'Meuse','55',1076,1),
- (2561,'Morbihan','56',1076,1),
- (2562,'Moselle','57',1076,1),
- (2563,'Nièvre','58',1076,1),
- (2564,'Nord','59',1076,1),
- (2565,'Oise','60',1076,1),
- (2566,'Orne','61',1076,1),
- (2567,'Paris','75',1076,1),
- (2568,'Pas-de-Calais','62',1076,1),
- (2569,'Puy-de-Dôme','63',1076,1),
- (2570,'Pyrénées-Atlantiques','64',1076,1),
- (2571,'Pyrénées-Orientales','66',1076,1),
- (2572,'Rhône','69',1076,1),
- (2573,'Saône-et-Loire','71',1076,1),
- (2574,'Sarthe','72',1076,1),
- (2575,'Savoie','73',1076,1),
- (2576,'Seine-et-Marne','77',1076,1),
- (2577,'Seine-Maritime','76',1076,1),
- (2578,'Seine-Saint-Denis','93',1076,1),
- (2579,'Somme','80',1076,1),
- (2580,'Tarn','81',1076,1),
- (2581,'Tarn-et-Garonne','82',1076,1),
- (2582,'Val d\'Oise','95',1076,1),
- (2583,'Territoire de Belfort','90',1076,1),
- (2584,'Val-de-Marne','94',1076,1),
- (2585,'Var','83',1076,1),
- (2586,'Vaucluse','84',1076,1),
- (2587,'Vendée','85',1076,1),
- (2588,'Vienne','86',1076,1),
- (2589,'Vosges','88',1076,1),
- (2590,'Yonne','89',1076,1),
- (2591,'Yvelines','78',1076,1),
- (2592,'Aberdeen City','ABE',1226,1),
- (2593,'Aberdeenshire','ABD',1226,1),
- (2594,'Angus','ANS',1226,1),
- (2595,'Co Antrim','ANT',1226,1),
- (2597,'Argyll and Bute','AGB',1226,1),
- (2598,'Co Armagh','ARM',1226,1),
- (2606,'Bedfordshire','BDF',1226,1),
- (2612,'Blaenau Gwent','BGW',1226,1),
- (2620,'Bristol, City of','BST',1226,1),
- (2622,'Buckinghamshire','BKM',1226,1),
- (2626,'Cambridgeshire','CAM',1226,1),
- (2634,'Cheshire','CHS',1226,1),
- (2635,'Clackmannanshire','CLK',1226,1),
- (2639,'Cornwall','CON',1226,1),
- (2643,'Cumbria','CMA',1226,1),
- (2647,'Derbyshire','DBY',1226,1),
- (2648,'Co Londonderry','DRY',1226,1),
- (2649,'Devon','DEV',1226,1),
- (2651,'Dorset','DOR',1226,1),
- (2652,'Co Down','DOW',1226,1),
- (2654,'Dumfries and Galloway','DGY',1226,1),
- (2655,'Dundee City','DND',1226,1),
- (2657,'County Durham','DUR',1226,1),
- (2659,'East Ayrshire','EAY',1226,1),
- (2660,'East Dunbartonshire','EDU',1226,1),
- (2661,'East Lothian','ELN',1226,1),
- (2662,'East Renfrewshire','ERW',1226,1),
- (2663,'East Riding of Yorkshire','ERY',1226,1),
- (2664,'East Sussex','ESX',1226,1),
- (2665,'Edinburgh, City of','EDH',1226,1),
- (2666,'Na h-Eileanan Siar','ELS',1226,1),
- (2668,'Essex','ESS',1226,1),
- (2669,'Falkirk','FAL',1226,1),
- (2670,'Co Fermanagh','FER',1226,1),
- (2671,'Fife','FIF',1226,1),
- (2674,'Glasgow City','GLG',1226,1),
- (2675,'Gloucestershire','GLS',1226,1),
- (2678,'Gwynedd','GWN',1226,1),
- (2682,'Hampshire','HAM',1226,1),
- (2687,'Herefordshire','HEF',1226,1),
- (2688,'Hertfordshire','HRT',1226,1),
- (2689,'Highland','HED',1226,1),
- (2692,'Inverclyde','IVC',1226,1),
- (2694,'Isle of Wight','IOW',1226,1),
- (2699,'Kent','KEN',1226,1),
- (2705,'Lancashire','LAN',1226,1),
- (2709,'Leicestershire','LEC',1226,1),
- (2712,'Lincolnshire','LIN',1226,1),
- (2723,'Midlothian','MLN',1226,1),
- (2726,'Moray','MRY',1226,1),
- (2734,'Norfolk','NFK',1226,1),
- (2735,'North Ayrshire','NAY',1226,1),
- (2738,'North Lanarkshire','NLK',1226,1),
- (2742,'North Yorkshire','NYK',1226,1),
- (2743,'Northamptonshire','NTH',1226,1),
- (2744,'Northumberland','NBL',1226,1),
- (2746,'Nottinghamshire','NTT',1226,1),
- (2747,'Oldham','OLD',1226,1),
- (2748,'Omagh','OMH',1226,1),
- (2749,'Orkney Islands','ORR',1226,1),
- (2750,'Oxfordshire','OXF',1226,1),
- (2752,'Perth and Kinross','PKN',1226,1),
- (2757,'Powys','POW',1226,1),
- (2761,'Renfrewshire','RFW',1226,1),
- (2766,'Rutland','RUT',1226,1),
- (2770,'Scottish Borders','SCB',1226,1),
- (2773,'Shetland Islands','ZET',1226,1),
- (2774,'Shropshire','SHR',1226,1),
- (2777,'Somerset','SOM',1226,1),
- (2778,'South Ayrshire','SAY',1226,1),
- (2779,'South Gloucestershire','SGC',1226,1),
- (2780,'South Lanarkshire','SLK',1226,1),
- (2785,'Staffordshire','STS',1226,1),
- (2786,'Stirling','STG',1226,1),
- (2791,'Suffolk','SFK',1226,1),
- (2793,'Surrey','SRY',1226,1),
- (2804,'Vale of Glamorgan, The','VGL',1226,1),
- (2811,'Warwickshire','WAR',1226,1),
- (2813,'West Dunbartonshire','WDU',1226,1),
- (2814,'West Lothian','WLN',1226,1),
- (2815,'West Sussex','WSX',1226,1),
- (2818,'Wiltshire','WIL',1226,1),
- (2823,'Worcestershire','WOR',1226,1),
- (2826,'Ashanti','AH',1083,1),
- (2827,'Brong-Ahafo','BA',1083,1),
- (2828,'Greater Accra','AA',1083,1),
- (2829,'Upper East','UE',1083,1),
- (2830,'Upper West','UW',1083,1),
- (2831,'Volta','TV',1083,1),
- (2832,'Banjul','B',1213,1),
- (2833,'Lower River','L',1213,1),
- (2834,'MacCarthy Island','M',1213,1),
- (2835,'North Bank','N',1213,1),
- (2836,'Upper River','U',1213,1),
- (2837,'Beyla','BE',1091,1),
- (2838,'Boffa','BF',1091,1),
- (2839,'Boke','BK',1091,1),
- (2840,'Coyah','CO',1091,1),
- (2841,'Dabola','DB',1091,1),
- (2842,'Dalaba','DL',1091,1),
- (2843,'Dinguiraye','DI',1091,1),
- (2844,'Dubreka','DU',1091,1),
- (2845,'Faranah','FA',1091,1),
- (2846,'Forecariah','FO',1091,1),
- (2847,'Fria','FR',1091,1),
- (2848,'Gaoual','GA',1091,1),
- (2849,'Guekedou','GU',1091,1),
- (2850,'Kankan','KA',1091,1),
- (2851,'Kerouane','KE',1091,1),
- (2852,'Kindia','KD',1091,1),
- (2853,'Kissidougou','KS',1091,1),
- (2854,'Koubia','KB',1091,1),
- (2855,'Koundara','KN',1091,1),
- (2856,'Kouroussa','KO',1091,1),
- (2857,'Labe','LA',1091,1),
- (2858,'Lelouma','LE',1091,1),
- (2859,'Lola','LO',1091,1),
- (2860,'Macenta','MC',1091,1),
- (2861,'Mali','ML',1091,1),
- (2862,'Mamou','MM',1091,1),
- (2863,'Mandiana','MD',1091,1),
- (2864,'Nzerekore','NZ',1091,1),
- (2865,'Pita','PI',1091,1),
- (2866,'Siguiri','SI',1091,1),
- (2867,'Telimele','TE',1091,1),
- (2868,'Tougue','TO',1091,1),
- (2869,'Yomou','YO',1091,1),
- (2870,'Region Continental','C',1067,1),
- (2871,'Region Insular','I',1067,1),
- (2872,'Annobon','AN',1067,1),
- (2873,'Bioko Norte','BN',1067,1),
- (2874,'Bioko Sur','BS',1067,1),
- (2875,'Centro Sur','CS',1067,1),
- (2876,'Kie-Ntem','KN',1067,1),
- (2877,'Litoral','LI',1067,1),
- (2878,'Wele-Nzas','WN',1067,1),
- (2879,'Achaïa','13',1085,1),
- (2880,'Aitolia-Akarnania','01',1085,1),
- (2881,'Argolis','11',1085,1),
- (2882,'Arkadia','12',1085,1),
- (2883,'Arta','31',1085,1),
- (2884,'Attiki','A1',1085,1),
- (2885,'Chalkidiki','64',1085,1),
- (2886,'Chania','94',1085,1),
- (2887,'Chios','85',1085,1),
- (2888,'Dodekanisos','81',1085,1),
- (2889,'Drama','52',1085,1),
- (2890,'Evros','71',1085,1),
- (2891,'Evrytania','05',1085,1),
- (2892,'Evvoia','04',1085,1),
- (2893,'Florina','63',1085,1),
- (2894,'Fokis','07',1085,1),
- (2895,'Fthiotis','06',1085,1),
- (2896,'Grevena','51',1085,1),
- (2897,'Ileia','14',1085,1),
- (2898,'Imathia','53',1085,1),
- (2899,'Ioannina','33',1085,1),
- (2900,'Irakleion','91',1085,1),
- (2901,'Karditsa','41',1085,1),
- (2902,'Kastoria','56',1085,1),
- (2903,'Kavalla','55',1085,1),
- (2904,'Kefallinia','23',1085,1),
- (2905,'Kerkyra','22',1085,1),
- (2906,'Kilkis','57',1085,1),
- (2907,'Korinthia','15',1085,1),
- (2908,'Kozani','58',1085,1),
- (2909,'Kyklades','82',1085,1),
- (2910,'Lakonia','16',1085,1),
- (2911,'Larisa','42',1085,1),
- (2912,'Lasithion','92',1085,1),
- (2913,'Lefkas','24',1085,1),
- (2914,'Lesvos','83',1085,1),
- (2915,'Magnisia','43',1085,1),
- (2916,'Messinia','17',1085,1),
- (2917,'Pella','59',1085,1),
- (2918,'Preveza','34',1085,1),
- (2919,'Rethymnon','93',1085,1),
- (2920,'Rodopi','73',1085,1),
- (2921,'Samos','84',1085,1),
- (2922,'Serrai','62',1085,1),
- (2923,'Thesprotia','32',1085,1),
- (2924,'Thessaloniki','54',1085,1),
- (2925,'Trikala','44',1085,1),
- (2926,'Voiotia','03',1085,1),
- (2927,'Xanthi','72',1085,1),
- (2928,'Zakynthos','21',1085,1),
- (2929,'Agio Oros','69',1085,1),
- (2930,'Alta Verapaz','AV',1090,1),
- (2931,'Baja Verapaz','BV',1090,1),
- (2932,'Chimaltenango','CM',1090,1),
- (2933,'Chiquimula','CQ',1090,1),
- (2934,'El Progreso','PR',1090,1),
- (2935,'Escuintla','ES',1090,1),
- (2936,'Guatemala','GU',1090,1),
- (2937,'Huehuetenango','HU',1090,1),
- (2938,'Izabal','IZ',1090,1),
- (2939,'Jalapa','JA',1090,1),
- (2940,'Jutiapa','JU',1090,1),
- (2941,'Peten','PE',1090,1),
- (2942,'Quetzaltenango','QZ',1090,1),
- (2943,'Quiche','QC',1090,1),
- (2944,'Retalhuleu','RE',1090,1),
- (2945,'Sacatepequez','SA',1090,1),
- (2946,'San Marcos','SM',1090,1),
- (2947,'Santa Rosa','SR',1090,1),
- (2948,'Sololá','SO',1090,1),
- (2949,'Suchitepequez','SU',1090,1),
- (2950,'Totonicapan','TO',1090,1),
- (2951,'Zacapa','ZA',1090,1),
- (2952,'Bissau','BS',1092,1),
- (2953,'Bafata','BA',1092,1),
- (2954,'Biombo','BM',1092,1),
- (2955,'Bolama','BL',1092,1),
- (2956,'Cacheu','CA',1092,1),
- (2957,'Gabu','GA',1092,1),
- (2958,'Oio','OI',1092,1),
- (2959,'Quloara','QU',1092,1),
- (2960,'Tombali S','TO',1092,1),
- (2961,'Barima-Waini','BA',1093,1),
- (2962,'Cuyuni-Mazaruni','CU',1093,1),
- (2963,'Demerara-Mahaica','DE',1093,1),
- (2964,'East Berbice-Corentyne','EB',1093,1),
- (2965,'Essequibo Islands-West Demerara','ES',1093,1),
- (2966,'Mahaica-Berbice','MA',1093,1),
- (2967,'Pomeroon-Supenaam','PM',1093,1),
- (2968,'Potaro-Siparuni','PT',1093,1),
- (2969,'Upper Demerara-Berbice','UD',1093,1),
- (2970,'Upper Takutu-Upper Essequibo','UT',1093,1),
- (2971,'Atlantida','AT',1097,1),
- (2972,'Colon','CL',1097,1),
- (2973,'Comayagua','CM',1097,1),
- (2974,'Copan','CP',1097,1),
- (2975,'Cortes','CR',1097,1),
- (2976,'Choluteca','CH',1097,1),
- (2977,'El Paraiso','EP',1097,1),
- (2978,'Francisco Morazan','FM',1097,1),
- (2979,'Gracias a Dios','GD',1097,1),
- (2980,'Intibuca','IN',1097,1),
- (2981,'Islas de la Bahia','IB',1097,1),
- (2982,'Lempira','LE',1097,1),
- (2983,'Ocotepeque','OC',1097,1),
- (2984,'Olancho','OL',1097,1),
- (2985,'Santa Barbara','SB',1097,1),
- (2986,'Valle','VA',1097,1),
- (2987,'Yoro','YO',1097,1),
- (2988,'Bjelovarsko-bilogorska zupanija','07',1055,1),
- (2989,'Brodsko-posavska zupanija','12',1055,1),
- (2990,'Dubrovacko-neretvanska zupanija','19',1055,1),
- (2991,'Istarska zupanija','18',1055,1),
- (2992,'Karlovacka zupanija','04',1055,1),
- (2993,'Koprivnickco-krizevacka zupanija','06',1055,1),
- (2994,'Krapinako-zagorska zupanija','02',1055,1),
- (2995,'Licko-senjska zupanija','09',1055,1),
- (2996,'Medimurska zupanija','20',1055,1),
- (2997,'Osjecko-baranjska zupanija','14',1055,1),
- (2998,'Pozesko-slavonska zupanija','11',1055,1),
- (2999,'Primorsko-goranska zupanija','08',1055,1),
- (3000,'Sisacko-moelavacka Iupanija','03',1055,1),
- (3001,'Splitako-dalmatinska zupanija','17',1055,1),
- (3002,'Sibenako-kninska zupanija','15',1055,1),
- (3003,'Varaidinska zupanija','05',1055,1),
- (3004,'VirovitiEko-podravska zupanija','10',1055,1),
- (3005,'VuRovarako-srijemska zupanija','16',1055,1),
- (3006,'Zadaraka','13',1055,1),
- (3007,'Zagrebacka zupanija','01',1055,1),
- (3008,'Grande-Anse','GA',1094,1),
- (3009,'Nord-Est','NE',1094,1),
- (3010,'Nord-Ouest','NO',1094,1),
- (3011,'Ouest','OU',1094,1),
- (3012,'Sud','SD',1094,1),
- (3013,'Sud-Est','SE',1094,1),
- (3014,'Budapest','BU',1099,1),
- (3015,'Bács-Kiskun','BK',1099,1),
- (3016,'Baranya','BA',1099,1),
- (3017,'Békés','BE',1099,1),
- (3018,'Borsod-Abaúj-Zemplén','BZ',1099,1),
- (3019,'Csongrád','CS',1099,1),
- (3020,'Fejér','FE',1099,1),
- (3021,'Győr-Moson-Sopron','GS',1099,1),
- (3022,'Hajdu-Bihar','HB',1099,1),
- (3023,'Heves','HE',1099,1),
- (3024,'Jász-Nagykun-Szolnok','JN',1099,1),
- (3025,'Komárom-Esztergom','KE',1099,1),
- (3026,'Nográd','NO',1099,1),
- (3027,'Pest','PE',1099,1),
- (3028,'Somogy','SO',1099,1),
- (3029,'Szabolcs-Szatmár-Bereg','SZ',1099,1),
- (3030,'Tolna','TO',1099,1),
- (3031,'Vas','VA',1099,1),
- (3032,'Veszprém','VE',1099,1),
- (3033,'Zala','ZA',1099,1),
- (3034,'Békéscsaba','BC',1099,1),
- (3035,'Debrecen','DE',1099,1),
- (3036,'Dunaújváros','DU',1099,1),
- (3037,'Eger','EG',1099,1),
- (3038,'Győr','GY',1099,1),
- (3039,'Hódmezővásárhely','HV',1099,1),
- (3040,'Kaposvár','KV',1099,1),
- (3041,'Kecskemét','KM',1099,1),
- (3042,'Miskolc','MI',1099,1),
- (3043,'Nagykanizsa','NK',1099,1),
- (3044,'Nyiregyháza','NY',1099,1),
- (3045,'Pécs','PS',1099,1),
- (3046,'Salgótarján','ST',1099,1),
- (3047,'Sopron','SN',1099,1),
- (3048,'Szeged','SD',1099,1),
- (3049,'Székesfehérvár','SF',1099,1),
- (3050,'Szekszárd','SS',1099,1),
- (3051,'Szolnok','SK',1099,1),
- (3052,'Szombathely','SH',1099,1),
- (3053,'Tatabánya','TB',1099,1),
- (3054,'Zalaegerszeg','ZE',1099,1),
- (3055,'Bali','BA',1102,1),
- (3056,'Kepulauan Bangka Belitung','BB',1102,1),
- (3057,'Banten','BT',1102,1),
- (3058,'Bengkulu','BE',1102,1),
- (3059,'Gorontalo','GO',1102,1),
- (3060,'Papua Barat','PB',1102,1),
- (3061,'Jambi','JA',1102,1),
- (3062,'Jawa Barat','JB',1102,1),
- (3063,'Jawa Tengah','JT',1102,1),
- (3064,'Jawa Timur','JI',1102,1),
- (3065,'Kalimantan Barat','KB',1102,1),
- (3066,'Kalimantan Timur','KI',1102,1),
- (3067,'Kalimantan Selatan','KS',1102,1),
- (3068,'Kepulauan Riau','KR',1102,1),
- (3069,'Lampung','LA',1102,1),
- (3070,'Maluku','MA',1102,1),
- (3071,'Maluku Utara','MU',1102,1),
- (3072,'Nusa Tenggara Barat','NB',1102,1),
- (3073,'Nusa Tenggara Timur','NT',1102,1),
- (3074,'Papua','PA',1102,1),
- (3075,'Riau','RI',1102,1),
- (3076,'Sulawesi Selatan','SN',1102,1),
- (3077,'Sulawesi Tengah','ST',1102,1),
- (3078,'Sulawesi Tenggara','SG',1102,1),
- (3079,'Sulawesi Utara','SA',1102,1),
- (3080,'Sumatra Barat','SB',1102,1),
- (3081,'Sumatra Selatan','SS',1102,1),
- (3082,'Sumatera Utara','SU',1102,1),
- (3083,'DKI Jakarta','JK',1102,1),
- (3084,'Aceh','AC',1102,1),
- (3085,'DI Yogyakarta','YO',1102,1),
- (3086,'Cork','C',1105,1),
- (3087,'Clare','CE',1105,1),
- (3088,'Cavan','CN',1105,1),
- (3089,'Carlow','CW',1105,1),
- (3090,'Dublin','D',1105,1),
- (3091,'Donegal','DL',1105,1),
- (3092,'Galway','G',1105,1),
- (3093,'Kildare','KE',1105,1),
- (3094,'Kilkenny','KK',1105,1),
- (3095,'Kerry','KY',1105,1),
- (3096,'Longford','LD',1105,1),
- (3097,'Louth','LH',1105,1),
- (3098,'Limerick','LK',1105,1),
- (3099,'Leitrim','LM',1105,1),
- (3100,'Laois','LS',1105,1),
- (3101,'Meath','MH',1105,1),
- (3102,'Monaghan','MN',1105,1),
- (3103,'Mayo','MO',1105,1),
- (3104,'Offaly','OY',1105,1),
- (3105,'Roscommon','RN',1105,1),
- (3106,'Sligo','SO',1105,1),
- (3107,'Tipperary','TA',1105,1),
- (3108,'Waterford','WD',1105,1),
- (3109,'Westmeath','WH',1105,1),
- (3110,'Wicklow','WW',1105,1),
- (3111,'Wexford','WX',1105,1),
- (3112,'HaDarom','D',1106,1),
- (3113,'HaMerkaz','M',1106,1),
- (3114,'HaZafon','Z',1106,1),
- (3115,'Haifa','HA',1106,1),
- (3116,'Tel-Aviv','TA',1106,1),
- (3117,'Jerusalem','JM',1106,1),
- (3118,'Al Anbar','AN',1104,1),
- (3119,'Al Ba,rah','BA',1104,1),
- (3120,'Al Muthanna','MU',1104,1),
- (3121,'Al Qadisiyah','QA',1104,1),
- (3122,'An Najef','NA',1104,1),
- (3123,'Arbil','AR',1104,1),
- (3124,'As Sulaymaniyah','SW',1104,1),
- (3125,'At Ta\'mim','TS',1104,1),
- (3126,'Babil','BB',1104,1),
- (3127,'Baghdad','BG',1104,1),
- (3128,'Dahuk','DA',1104,1),
- (3129,'Dhi Qar','DQ',1104,1),
- (3130,'Diyala','DI',1104,1),
- (3131,'Karbala\'','KA',1104,1),
- (3132,'Maysan','MA',1104,1),
- (3133,'Ninawa','NI',1104,1),
- (3134,'Salah ad Din','SD',1104,1),
- (3135,'Wasit','WA',1104,1),
- (3136,'Ardabil','03',1103,1),
- (3137,'Azarbayjan-e Gharbi','02',1103,1),
- (3138,'Azarbayjan-e Sharqi','01',1103,1),
- (3139,'Bushehr','06',1103,1),
- (3140,'Chahar Mahall va Bakhtiari','08',1103,1),
- (3141,'Esfahan','04',1103,1),
- (3142,'Fars','14',1103,1),
- (3143,'Gilan','19',1103,1),
- (3144,'Golestan','27',1103,1),
- (3145,'Hamadan','24',1103,1),
- (3146,'Hormozgan','23',1103,1),
- (3147,'Iiam','05',1103,1),
- (3148,'Kerman','15',1103,1),
- (3149,'Kermanshah','17',1103,1),
- (3150,'Khorasan','09',1103,1),
- (3151,'Khuzestan','10',1103,1),
- (3152,'Kohjiluyeh va Buyer Ahmad','18',1103,1),
- (3153,'Kordestan','16',1103,1),
- (3154,'Lorestan','20',1103,1),
- (3155,'Markazi','22',1103,1),
- (3156,'Mazandaran','21',1103,1),
- (3157,'Qazvin','28',1103,1),
- (3158,'Qom','26',1103,1),
- (3159,'Semnan','12',1103,1),
- (3160,'Sistan va Baluchestan','13',1103,1),
- (3161,'Tehran','07',1103,1),
- (3162,'Yazd','25',1103,1),
- (3163,'Zanjan','11',1103,1),
- (3164,'Austurland','7',1100,1),
- (3165,'Hofuoborgarsvaeoi utan Reykjavikur','1',1100,1),
- (3166,'Norourland eystra','6',1100,1),
- (3167,'Norourland vestra','5',1100,1),
- (3168,'Reykjavik','0',1100,1),
- (3169,'Suourland','8',1100,1),
- (3170,'Suournes','2',1100,1),
- (3171,'Vestfirolr','4',1100,1),
- (3172,'Vesturland','3',1100,1),
- (3173,'Agrigento','AG',1107,1),
- (3174,'Alessandria','AL',1107,1),
- (3175,'Ancona','AN',1107,1),
- (3176,'Aosta','AO',1107,1),
- (3177,'Arezzo','AR',1107,1),
- (3178,'Ascoli Piceno','AP',1107,1),
- (3179,'Asti','AT',1107,1),
- (3180,'Avellino','AV',1107,1),
- (3181,'Bari','BA',1107,1),
- (3182,'Belluno','BL',1107,1),
- (3183,'Benevento','BN',1107,1),
- (3184,'Bergamo','BG',1107,1),
- (3185,'Biella','BI',1107,1),
- (3186,'Bologna','BO',1107,1),
- (3187,'Bolzano','BZ',1107,1),
- (3188,'Brescia','BS',1107,1),
- (3189,'Brindisi','BR',1107,1),
- (3190,'Cagliari','CA',1107,1),
- (3191,'Caltanissetta','CL',1107,1),
- (3192,'Campobasso','CB',1107,1),
- (3193,'Caserta','CE',1107,1),
- (3194,'Catania','CT',1107,1),
- (3195,'Catanzaro','CZ',1107,1),
- (3196,'Chieti','CH',1107,1),
- (3197,'Como','CO',1107,1),
- (3198,'Cosenza','CS',1107,1),
- (3199,'Cremona','CR',1107,1),
- (3200,'Crotone','KR',1107,1),
- (3201,'Cuneo','CN',1107,1),
- (3202,'Enna','EN',1107,1),
- (3203,'Ferrara','FE',1107,1),
- (3204,'Firenze','FI',1107,1),
- (3205,'Foggia','FG',1107,1),
- (3206,'Forlì-Cesena','FC',1107,1),
- (3207,'Frosinone','FR',1107,1),
- (3208,'Genova','GE',1107,1),
- (3209,'Gorizia','GO',1107,1),
- (3210,'Grosseto','GR',1107,1),
- (3211,'Imperia','IM',1107,1),
- (3212,'Isernia','IS',1107,1),
- (3213,'L\'Aquila','AQ',1107,1),
- (3214,'La Spezia','SP',1107,1),
- (3215,'Latina','LT',1107,1),
- (3216,'Lecce','LE',1107,1),
- (3217,'Lecco','LC',1107,1),
- (3218,'Livorno','LI',1107,1),
- (3219,'Lodi','LO',1107,1),
- (3220,'Lucca','LU',1107,1),
- (3221,'Macerata','MC',1107,1),
- (3222,'Mantova','MN',1107,1),
- (3223,'Massa-Carrara','MS',1107,1),
- (3224,'Matera','MT',1107,1),
- (3225,'Messina','ME',1107,1),
- (3226,'Milano','MI',1107,1),
- (3227,'Modena','MO',1107,1),
- (3228,'Napoli','NA',1107,1),
- (3229,'Novara','NO',1107,1),
- (3230,'Nuoro','NU',1107,1),
- (3231,'Oristano','OR',1107,1),
- (3232,'Padova','PD',1107,1),
- (3233,'Palermo','PA',1107,1),
- (3234,'Parma','PR',1107,1),
- (3235,'Pavia','PV',1107,1),
- (3236,'Perugia','PG',1107,1),
- (3237,'Pesaro e Urbino','PU',1107,1),
- (3238,'Pescara','PE',1107,1),
- (3239,'Piacenza','PC',1107,1),
- (3240,'Pisa','PI',1107,1),
- (3241,'Pistoia','PT',1107,1),
- (3242,'Pordenone','PN',1107,1),
- (3243,'Potenza','PZ',1107,1),
- (3244,'Prato','PO',1107,1),
- (3245,'Ragusa','RG',1107,1),
- (3246,'Ravenna','RA',1107,1),
- (3247,'Reggio Calabria','RC',1107,1),
- (3248,'Reggio Emilia','RE',1107,1),
- (3249,'Rieti','RI',1107,1),
- (3250,'Rimini','RN',1107,1),
- (3251,'Roma','RM',1107,1),
- (3252,'Rovigo','RO',1107,1),
- (3253,'Salerno','SA',1107,1),
- (3254,'Sassari','SS',1107,1),
- (3255,'Savona','SV',1107,1),
- (3256,'Siena','SI',1107,1),
- (3257,'Siracusa','SR',1107,1),
- (3258,'Sondrio','SO',1107,1),
- (3259,'Taranto','TA',1107,1),
- (3260,'Teramo','TE',1107,1),
- (3261,'Terni','TR',1107,1),
- (3262,'Torino','TO',1107,1),
- (3263,'Trapani','TP',1107,1),
- (3264,'Trento','TN',1107,1),
- (3265,'Treviso','TV',1107,1),
- (3266,'Trieste','TS',1107,1),
- (3267,'Udine','UD',1107,1),
- (3268,'Varese','VA',1107,1),
- (3269,'Venezia','VE',1107,1),
- (3270,'Verbano-Cusio-Ossola','VB',1107,1),
- (3271,'Vercelli','VC',1107,1),
- (3272,'Verona','VR',1107,1),
- (3273,'Vibo Valentia','VV',1107,1),
- (3274,'Vicenza','VI',1107,1),
- (3275,'Viterbo','VT',1107,1),
- (3276,'Aichi','23',1109,1),
- (3277,'Akita','05',1109,1),
- (3278,'Aomori','02',1109,1),
- (3279,'Chiba','12',1109,1),
- (3280,'Ehime','38',1109,1),
- (3281,'Fukui','18',1109,1),
- (3282,'Fukuoka','40',1109,1),
- (3283,'Fukusima','07',1109,1),
- (3284,'Gifu','21',1109,1),
- (3285,'Gunma','10',1109,1),
- (3286,'Hiroshima','34',1109,1),
- (3287,'Hokkaido','01',1109,1),
- (3288,'Hyogo','28',1109,1),
- (3289,'Ibaraki','08',1109,1),
- (3290,'Ishikawa','17',1109,1),
- (3291,'Iwate','03',1109,1),
- (3292,'Kagawa','37',1109,1),
- (3293,'Kagoshima','46',1109,1),
- (3294,'Kanagawa','14',1109,1),
- (3295,'Kochi','39',1109,1),
- (3296,'Kumamoto','43',1109,1),
- (3297,'Kyoto','26',1109,1),
- (3298,'Mie','24',1109,1),
- (3299,'Miyagi','04',1109,1),
- (3300,'Miyazaki','45',1109,1),
- (3301,'Nagano','20',1109,1),
- (3302,'Nagasaki','42',1109,1),
- (3303,'Nara','29',1109,1),
- (3304,'Niigata','15',1109,1),
- (3305,'Oita','44',1109,1),
- (3306,'Okayama','33',1109,1),
- (3307,'Okinawa','47',1109,1),
- (3308,'Osaka','27',1109,1),
- (3309,'Saga','41',1109,1),
- (3310,'Saitama','11',1109,1),
- (3311,'Shiga','25',1109,1),
- (3312,'Shimane','32',1109,1),
- (3313,'Shizuoka','22',1109,1),
- (3314,'Tochigi','09',1109,1),
- (3315,'Tokushima','36',1109,1),
- (3316,'Tokyo','13',1109,1),
- (3317,'Tottori','31',1109,1),
- (3318,'Toyama','16',1109,1),
- (3319,'Wakayama','30',1109,1),
- (3320,'Yamagata','06',1109,1),
- (3321,'Yamaguchi','35',1109,1),
- (3322,'Yamanashi','19',1109,1),
- (3323,'Clarendon','CN',1108,1),
- (3324,'Hanover','HR',1108,1),
- (3325,'Kingston','KN',1108,1),
- (3326,'Portland','PD',1108,1),
- (3327,'Saint Andrew','AW',1108,1),
- (3328,'Saint Ann','AN',1108,1),
- (3329,'Saint Catherine','CE',1108,1),
- (3330,'Saint Elizabeth','EH',1108,1),
- (3331,'Saint James','JS',1108,1),
- (3332,'Saint Mary','MY',1108,1),
- (3333,'Saint Thomas','TS',1108,1),
- (3334,'Trelawny','TY',1108,1),
- (3335,'Westmoreland','WD',1108,1),
- (3336,'Ajln','AJ',1110,1),
- (3337,'Al \'Aqaba','AQ',1110,1),
- (3338,'Al Balqa\'','BA',1110,1),
- (3339,'Al Karak','KA',1110,1),
- (3340,'Al Mafraq','MA',1110,1),
- (3341,'Amman','AM',1110,1),
- (3342,'At Tafilah','AT',1110,1),
- (3343,'Az Zarga','AZ',1110,1),
- (3344,'Irbid','JR',1110,1),
- (3345,'Jarash','JA',1110,1),
- (3346,'Ma\'an','MN',1110,1),
- (3347,'Madaba','MD',1110,1),
- (3353,'Bishkek','GB',1117,1),
- (3354,'Batken','B',1117,1),
- (3355,'Chu','C',1117,1),
- (3356,'Jalal-Abad','J',1117,1),
- (3357,'Naryn','N',1117,1),
- (3358,'Osh','O',1117,1),
- (3359,'Talas','T',1117,1),
- (3360,'Ysyk-Kol','Y',1117,1),
- (3361,'Krong Kaeb','23',1037,1),
- (3362,'Krong Pailin','24',1037,1),
- (3363,'Xrong Preah Sihanouk','18',1037,1),
- (3364,'Phnom Penh','12',1037,1),
- (3365,'Baat Dambang','2',1037,1),
- (3366,'Banteay Mean Chey','1',1037,1),
- (3367,'Rampong Chaam','3',1037,1),
- (3368,'Kampong Chhnang','4',1037,1),
- (3369,'Kampong Spueu','5',1037,1),
- (3370,'Kampong Thum','6',1037,1),
- (3371,'Kampot','7',1037,1),
- (3372,'Kandaal','8',1037,1),
- (3373,'Kach Kong','9',1037,1),
- (3374,'Krachoh','10',1037,1),
- (3375,'Mondol Kiri','11',1037,1),
- (3376,'Otdar Mean Chey','22',1037,1),
- (3377,'Pousaat','15',1037,1),
- (3378,'Preah Vihear','13',1037,1),
- (3379,'Prey Veaeng','14',1037,1),
- (3380,'Rotanak Kiri','16',1037,1),
- (3381,'Siem Reab','17',1037,1),
- (3382,'Stueng Traeng','19',1037,1),
- (3383,'Svaay Rieng','20',1037,1),
- (3384,'Taakaev','21',1037,1),
- (3385,'Gilbert Islands','G',1113,1),
- (3386,'Line Islands','L',1113,1),
- (3387,'Phoenix Islands','P',1113,1),
- (3388,'Anjouan Ndzouani','A',1049,1),
- (3389,'Grande Comore Ngazidja','G',1049,1),
- (3390,'Moheli Moili','M',1049,1),
- (3391,'Kaesong-si','KAE',1114,1),
- (3392,'Nampo-si','NAM',1114,1),
- (3393,'Pyongyang-ai','PYO',1114,1),
- (3394,'Chagang-do','CHA',1114,1),
- (3395,'Hamgyongbuk-do','HAB',1114,1),
- (3396,'Hamgyongnam-do','HAN',1114,1),
- (3397,'Hwanghaebuk-do','HWB',1114,1),
- (3398,'Hwanghaenam-do','HWN',1114,1),
- (3399,'Kangwon-do','KAN',1114,1),
- (3400,'Pyonganbuk-do','PYB',1114,1),
- (3401,'Pyongannam-do','PYN',1114,1),
- (3402,'Yanggang-do','YAN',1114,1),
- (3403,'Najin Sonbong-si','NAJ',1114,1),
- (3404,'Seoul Teugbyeolsi','11',1115,1),
- (3405,'Busan Gwang\'yeogsi','26',1115,1),
- (3406,'Daegu Gwang\'yeogsi','27',1115,1),
- (3407,'Daejeon Gwang\'yeogsi','30',1115,1),
- (3408,'Gwangju Gwang\'yeogsi','29',1115,1),
- (3409,'Incheon Gwang\'yeogsi','28',1115,1),
- (3410,'Ulsan Gwang\'yeogsi','31',1115,1),
- (3411,'Chungcheongbugdo','43',1115,1),
- (3412,'Chungcheongnamdo','44',1115,1),
- (3413,'Gang\'weondo','42',1115,1),
- (3414,'Gyeonggido','41',1115,1),
- (3415,'Gyeongsangbugdo','47',1115,1),
- (3416,'Gyeongsangnamdo','48',1115,1),
- (3417,'Jejudo','49',1115,1),
- (3418,'Jeonrabugdo','45',1115,1),
- (3419,'Jeonranamdo','46',1115,1),
- (3420,'Al Ahmadi','AH',1116,1),
- (3421,'Al Farwanlyah','FA',1116,1),
- (3422,'Al Jahrah','JA',1116,1),
- (3423,'Al Kuwayt','KU',1116,1),
- (3424,'Hawalli','HA',1116,1),
- (3425,'Almaty','ALA',1111,1),
- (3426,'Astana','AST',1111,1),
- (3427,'Almaty oblysy','ALM',1111,1),
- (3428,'Aqmola oblysy','AKM',1111,1),
- (3429,'Aqtobe oblysy','AKT',1111,1),
- (3430,'Atyrau oblyfiy','ATY',1111,1),
- (3431,'Batys Quzaqstan oblysy','ZAP',1111,1),
- (3432,'Mangghystau oblysy','MAN',1111,1),
- (3433,'Ongtustik Quzaqstan oblysy','YUZ',1111,1),
- (3434,'Pavlodar oblysy','PAV',1111,1),
- (3435,'Qaraghandy oblysy','KAR',1111,1),
- (3436,'Qostanay oblysy','KUS',1111,1),
- (3437,'Qyzylorda oblysy','KZY',1111,1),
- (3438,'Shyghys Quzaqstan oblysy','VOS',1111,1),
- (3439,'Soltustik Quzaqstan oblysy','SEV',1111,1),
- (3440,'Zhambyl oblysy Zhambylskaya oblast\'','ZHA',1111,1),
- (3441,'Vientiane','VT',1118,1),
- (3442,'Attapu','AT',1118,1),
- (3443,'Bokeo','BK',1118,1),
- (3444,'Bolikhamxai','BL',1118,1),
- (3445,'Champasak','CH',1118,1),
- (3446,'Houaphan','HO',1118,1),
- (3447,'Khammouan','KH',1118,1),
- (3448,'Louang Namtha','LM',1118,1),
- (3449,'Louangphabang','LP',1118,1),
- (3450,'Oudomxai','OU',1118,1),
- (3451,'Phongsali','PH',1118,1),
- (3452,'Salavan','SL',1118,1),
- (3453,'Savannakhet','SV',1118,1),
- (3454,'Xaignabouli','XA',1118,1),
- (3455,'Xiasomboun','XN',1118,1),
- (3456,'Xekong','XE',1118,1),
- (3457,'Xiangkhoang','XI',1118,1),
- (3458,'Beirut','BA',1120,1),
- (3459,'Beqaa','BI',1120,1),
- (3460,'Mount Lebanon','JL',1120,1),
- (3461,'North Lebanon','AS',1120,1),
- (3462,'South Lebanon','JA',1120,1),
- (3463,'Nabatieh','NA',1120,1),
- (3464,'Ampara','52',1199,1),
- (3465,'Anuradhapura','71',1199,1),
- (3466,'Badulla','81',1199,1),
- (3467,'Batticaloa','51',1199,1),
- (3468,'Colombo','11',1199,1),
- (3469,'Galle','31',1199,1),
- (3470,'Gampaha','12',1199,1),
- (3471,'Hambantota','33',1199,1),
- (3472,'Jaffna','41',1199,1),
- (3473,'Kalutara','13',1199,1),
- (3474,'Kandy','21',1199,1),
- (3475,'Kegalla','92',1199,1),
- (3476,'Kilinochchi','42',1199,1),
- (3477,'Kurunegala','61',1199,1),
- (3478,'Mannar','43',1199,1),
- (3479,'Matale','22',1199,1),
- (3480,'Matara','32',1199,1),
- (3481,'Monaragala','82',1199,1),
- (3482,'Mullaittivu','45',1199,1),
- (3483,'Nuwara Eliya','23',1199,1),
- (3484,'Polonnaruwa','72',1199,1),
- (3485,'Puttalum','62',1199,1),
- (3486,'Ratnapura','91',1199,1),
- (3487,'Trincomalee','53',1199,1),
- (3488,'VavunLya','44',1199,1),
- (3489,'Bomi','BM',1122,1),
- (3490,'Bong','BG',1122,1),
- (3491,'Grand Basaa','GB',1122,1),
- (3492,'Grand Cape Mount','CM',1122,1),
- (3493,'Grand Gedeh','GG',1122,1),
- (3494,'Grand Kru','GK',1122,1),
- (3495,'Lofa','LO',1122,1),
- (3496,'Margibi','MG',1122,1),
- (3497,'Maryland','MY',1122,1),
- (3498,'Montserrado','MO',1122,1),
- (3499,'Nimba','NI',1122,1),
- (3500,'Rivercess','RI',1122,1),
- (3501,'Sinoe','SI',1122,1),
- (3502,'Berea','D',1121,1),
- (3503,'Butha-Buthe','B',1121,1),
- (3504,'Leribe','C',1121,1),
- (3505,'Mafeteng','E',1121,1),
- (3506,'Maseru','A',1121,1),
- (3507,'Mohale\'s Hoek','F',1121,1),
- (3508,'Mokhotlong','J',1121,1),
- (3509,'Qacha\'s Nek','H',1121,1),
- (3510,'Quthing','G',1121,1),
- (3511,'Thaba-Tseka','K',1121,1),
- (3512,'Alytaus Apskritis','AL',1125,1),
- (3513,'Kauno Apskritis','KU',1125,1),
- (3514,'KlaipÄ—dos Apskritis','KL',1125,1),
- (3515,'MarijampolÄ—s Apskritis','MR',1125,1),
- (3516,'Panevėžio Apskritis','PN',1125,1),
- (3517,'Šiaulių Apskritis','SA',1125,1),
- (3518,'TauragÄ—s Apskritis','TA',1125,1),
- (3519,'Telšių Apskritis','TE',1125,1),
- (3520,'Utenos Apskritis','UT',1125,1),
- (3521,'Vilniaus Apskritis','VL',1125,1),
- (3522,'Diekirch','DI',1126,1),
- (3523,'Grevenmacher','GR',1126,1),
- (3550,'Daugavpils','DGV',1119,1),
- (3551,'Jelgava','JEL',1119,1),
- (3552,'JÅ«rmala','JUR',1119,1),
- (3553,'Liepāja','LPX',1119,1),
- (3554,'RÄ“zekne','REZ',1119,1),
- (3555,'RÄ«ga','RIX',1119,1),
- (3556,'Ventspils','VEN',1119,1),
- (3557,'Ajdābiyā','AJ',1123,1),
- (3558,'Al Buţnān','BU',1123,1),
- (3559,'Al Hizām al Akhdar','HZ',1123,1),
- (3560,'Al Jabal al Akhdar','JA',1123,1),
- (3561,'Al Jifārah','JI',1123,1),
- (3562,'Al Jufrah','JU',1123,1),
- (3563,'Al Kufrah','KF',1123,1),
- (3564,'Al Marj','MJ',1123,1),
- (3565,'Al Marqab','MB',1123,1),
- (3566,'Al Qaţrūn','QT',1123,1),
- (3567,'Al Qubbah','QB',1123,1),
- (3568,'Al Wāhah','WA',1123,1),
- (3569,'An Nuqaţ al Khams','NQ',1123,1),
- (3570,'Ash Shāţi\'','SH',1123,1),
- (3571,'Az Zāwiyah','ZA',1123,1),
- (3572,'Banghāzī','BA',1123,1),
- (3573,'Banī Walīd','BW',1123,1),
- (3574,'Darnah','DR',1123,1),
- (3575,'Ghadāmis','GD',1123,1),
- (3576,'Gharyān','GR',1123,1),
- (3577,'Ghāt','GT',1123,1),
- (3578,'Jaghbūb','JB',1123,1),
- (3579,'Mişrātah','MI',1123,1),
- (3580,'Mizdah','MZ',1123,1),
- (3581,'Murzuq','MQ',1123,1),
- (3582,'Nālūt','NL',1123,1),
- (3583,'Sabhā','SB',1123,1),
- (3584,'Şabrātah Şurmān','SS',1123,1),
- (3585,'Surt','SR',1123,1),
- (3586,'Tājūrā\' wa an Nawāhī al Arbāh','TN',1123,1),
- (3587,'Ţarābulus','TB',1123,1),
- (3588,'Tarhūnah-Masallātah','TM',1123,1),
- (3589,'Wādī al hayāt','WD',1123,1),
- (3590,'Yafran-Jādū','YJ',1123,1),
- (3591,'Agadir','AGD',1146,1),
- (3592,'Aït Baha','BAH',1146,1),
- (3593,'Aït Melloul','MEL',1146,1),
- (3594,'Al Haouz','HAO',1146,1),
- (3595,'Al Hoceïma','HOC',1146,1),
- (3596,'Assa-Zag','ASZ',1146,1),
- (3597,'Azilal','AZI',1146,1),
- (3598,'Beni Mellal','BEM',1146,1),
- (3599,'Ben Sllmane','BES',1146,1),
- (3600,'Berkane','BER',1146,1),
- (3601,'Boujdour','BOD',1146,1),
- (3602,'Boulemane','BOM',1146,1),
- (3603,'Casablanca  [Dar el Beïda]','CAS',1146,1),
- (3604,'Chefchaouene','CHE',1146,1),
- (3605,'Chichaoua','CHI',1146,1),
- (3606,'El Hajeb','HAJ',1146,1),
- (3607,'El Jadida','JDI',1146,1),
- (3608,'Errachidia','ERR',1146,1),
- (3609,'Essaouira','ESI',1146,1),
- (3610,'Es Smara','ESM',1146,1),
- (3611,'Fès','FES',1146,1),
- (3612,'Figuig','FIG',1146,1),
- (3613,'Guelmim','GUE',1146,1),
- (3614,'Ifrane','IFR',1146,1),
- (3615,'Jerada','JRA',1146,1),
- (3616,'Kelaat Sraghna','KES',1146,1),
- (3617,'Kénitra','KEN',1146,1),
- (3618,'Khemisaet','KHE',1146,1),
- (3619,'Khenifra','KHN',1146,1),
- (3620,'Khouribga','KHO',1146,1),
- (3621,'Laâyoune (EH)','LAA',1146,1),
- (3622,'Larache','LAP',1146,1),
- (3623,'Marrakech','MAR',1146,1),
- (3624,'Meknsès','MEK',1146,1),
- (3625,'Nador','NAD',1146,1),
- (3626,'Ouarzazate','OUA',1146,1),
- (3627,'Oued ed Dahab (EH)','OUD',1146,1),
- (3628,'Oujda','OUJ',1146,1),
- (3629,'Rabat-Salé','RBA',1146,1),
- (3630,'Safi','SAF',1146,1),
- (3631,'Sefrou','SEF',1146,1),
- (3632,'Settat','SET',1146,1),
- (3633,'Sidl Kacem','SIK',1146,1),
- (3634,'Tanger','TNG',1146,1),
- (3635,'Tan-Tan','TNT',1146,1),
- (3636,'Taounate','TAO',1146,1),
- (3637,'Taroudannt','TAR',1146,1),
- (3638,'Tata','TAT',1146,1),
- (3639,'Taza','TAZ',1146,1),
- (3640,'Tétouan','TET',1146,1),
- (3641,'Tiznit','TIZ',1146,1),
- (3642,'Gagauzia, Unitate Teritoriala Autonoma','GA',1142,1),
- (3643,'Chisinau','CU',1142,1),
- (3644,'Stinga Nistrului, unitatea teritoriala din','SN',1142,1),
- (3645,'Balti','BA',1142,1),
- (3646,'Cahul','CA',1142,1),
- (3647,'Edinet','ED',1142,1),
- (3648,'Lapusna','LA',1142,1),
- (3649,'Orhei','OR',1142,1),
- (3650,'Soroca','SO',1142,1),
- (3651,'Taraclia','TA',1142,1),
- (3652,'Tighina [Bender]','TI',1142,1),
- (3653,'Ungheni','UN',1142,1),
- (3654,'Antananarivo','T',1129,1),
- (3655,'Antsiranana','D',1129,1),
- (3656,'Fianarantsoa','F',1129,1),
- (3657,'Mahajanga','M',1129,1),
- (3658,'Toamasina','A',1129,1),
- (3659,'Toliara','U',1129,1),
- (3660,'Ailinglapalap','ALL',1135,1),
- (3661,'Ailuk','ALK',1135,1),
- (3662,'Arno','ARN',1135,1),
- (3663,'Aur','AUR',1135,1),
- (3664,'Ebon','EBO',1135,1),
- (3665,'Eniwetok','ENI',1135,1),
- (3666,'Jaluit','JAL',1135,1),
- (3667,'Kili','KIL',1135,1),
- (3668,'Kwajalein','KWA',1135,1),
- (3669,'Lae','LAE',1135,1),
- (3670,'Lib','LIB',1135,1),
- (3671,'Likiep','LIK',1135,1),
- (3672,'Majuro','MAJ',1135,1),
- (3673,'Maloelap','MAL',1135,1),
- (3674,'Mejit','MEJ',1135,1),
- (3675,'Mili','MIL',1135,1),
- (3676,'Namorik','NMK',1135,1),
- (3677,'Namu','NMU',1135,1),
- (3678,'Rongelap','RON',1135,1),
- (3679,'Ujae','UJA',1135,1),
- (3680,'Ujelang','UJL',1135,1),
- (3681,'Utirik','UTI',1135,1),
- (3682,'Wotho','WTN',1135,1),
- (3683,'Wotje','WTJ',1135,1),
- (3684,'Bamako','BK0',1133,1),
- (3685,'Gao','7',1133,1),
- (3686,'Kayes','1',1133,1),
- (3687,'Kidal','8',1133,1),
- (3688,'Xoulikoro','2',1133,1),
- (3689,'Mopti','5',1133,1),
- (3690,'S69ou','4',1133,1),
- (3691,'Sikasso','3',1133,1),
- (3692,'Tombouctou','6',1133,1),
- (3693,'Ayeyarwady','07',1035,1),
- (3694,'Bago','02',1035,1),
- (3695,'Magway','03',1035,1),
- (3696,'Mandalay','04',1035,1),
- (3697,'Sagaing','01',1035,1),
- (3698,'Tanintharyi','05',1035,1),
- (3699,'Yangon','06',1035,1),
- (3700,'Chin','14',1035,1),
- (3701,'Kachin','11',1035,1),
- (3702,'Kayah','12',1035,1),
- (3703,'Kayin','13',1035,1),
- (3704,'Mon','15',1035,1),
- (3705,'Rakhine','16',1035,1),
- (3706,'Shan','17',1035,1),
- (3707,'Ulaanbaatar','1',1144,1),
- (3708,'Arhangay','073',1144,1),
- (3709,'Bayanhongor','069',1144,1),
- (3710,'Bayan-Olgiy','071',1144,1),
- (3711,'Bulgan','067',1144,1),
- (3712,'Darhan uul','037',1144,1),
- (3713,'Dornod','061',1144,1),
- (3714,'Dornogov,','063',1144,1),
- (3715,'DundgovL','059',1144,1),
- (3716,'Dzavhan','057',1144,1),
- (3717,'Govi-Altay','065',1144,1),
- (3718,'Govi-Smber','064',1144,1),
- (3719,'Hentiy','039',1144,1),
- (3720,'Hovd','043',1144,1),
- (3721,'Hovsgol','041',1144,1),
- (3722,'Omnogovi','053',1144,1),
- (3723,'Orhon','035',1144,1),
- (3724,'Ovorhangay','055',1144,1),
- (3725,'Selenge','049',1144,1),
- (3726,'Shbaatar','051',1144,1),
- (3727,'Tov','047',1144,1),
- (3728,'Uvs','046',1144,1),
- (3729,'Nouakchott','NKC',1137,1),
- (3730,'Assaba','03',1137,1),
- (3731,'Brakna','05',1137,1),
- (3732,'Dakhlet Nouadhibou','08',1137,1),
- (3733,'Gorgol','04',1137,1),
- (3734,'Guidimaka','10',1137,1),
- (3735,'Hodh ech Chargui','01',1137,1),
- (3736,'Hodh el Charbi','02',1137,1),
- (3737,'Inchiri','12',1137,1),
- (3738,'Tagant','09',1137,1),
- (3739,'Tiris Zemmour','11',1137,1),
- (3740,'Trarza','06',1137,1),
- (3741,'Beau Bassin-Rose Hill','BR',1138,1),
- (3742,'Curepipe','CU',1138,1),
- (3743,'Port Louis','PU',1138,1),
- (3744,'Quatre Bornes','QB',1138,1),
- (3745,'Vacosa-Phoenix','VP',1138,1),
- (3746,'Black River','BL',1138,1),
- (3747,'Flacq','FL',1138,1),
- (3748,'Grand Port','GP',1138,1),
- (3749,'Moka','MO',1138,1),
- (3750,'Pamplemousses','PA',1138,1),
- (3751,'Plaines Wilhems','PW',1138,1),
- (3752,'Riviere du Rempart','RP',1138,1),
- (3753,'Savanne','SA',1138,1),
- (3754,'Agalega Islands','AG',1138,1),
- (3755,'Cargados Carajos Shoals','CC',1138,1),
- (3756,'Rodrigues Island','RO',1138,1),
- (3757,'Male','MLE',1132,1),
- (3758,'Alif','02',1132,1),
- (3759,'Baa','20',1132,1),
- (3760,'Dhaalu','17',1132,1),
- (3761,'Faafu','14',1132,1),
- (3762,'Gaaf Alif','27',1132,1),
- (3763,'Gaefu Dhaalu','28',1132,1),
- (3764,'Gnaviyani','29',1132,1),
- (3765,'Haa Alif','07',1132,1),
- (3766,'Haa Dhaalu','23',1132,1),
- (3767,'Kaafu','26',1132,1),
- (3768,'Laamu','05',1132,1),
- (3769,'Lhaviyani','03',1132,1),
- (3770,'Meemu','12',1132,1),
- (3771,'Noonu','25',1132,1),
- (3772,'Raa','13',1132,1),
- (3773,'Seenu','01',1132,1),
- (3774,'Shaviyani','24',1132,1),
- (3775,'Thaa','08',1132,1),
- (3776,'Vaavu','04',1132,1),
- (3777,'Balaka','BA',1130,1),
- (3778,'Blantyre','BL',1130,1),
- (3779,'Chikwawa','CK',1130,1),
- (3780,'Chiradzulu','CR',1130,1),
- (3781,'Chitipa','CT',1130,1),
- (3782,'Dedza','DE',1130,1),
- (3783,'Dowa','DO',1130,1),
- (3784,'Karonga','KR',1130,1),
- (3785,'Kasungu','KS',1130,1),
- (3786,'Likoma Island','LK',1130,1),
- (3787,'Lilongwe','LI',1130,1),
- (3788,'Machinga','MH',1130,1),
- (3789,'Mangochi','MG',1130,1),
- (3790,'Mchinji','MC',1130,1),
- (3791,'Mulanje','MU',1130,1),
- (3792,'Mwanza','MW',1130,1),
- (3793,'Mzimba','MZ',1130,1),
- (3794,'Nkhata Bay','NB',1130,1),
- (3795,'Nkhotakota','NK',1130,1),
- (3796,'Nsanje','NS',1130,1),
- (3797,'Ntcheu','NU',1130,1),
- (3798,'Ntchisi','NI',1130,1),
- (3799,'Phalomba','PH',1130,1),
- (3800,'Rumphi','RU',1130,1),
- (3801,'Salima','SA',1130,1),
- (3802,'Thyolo','TH',1130,1),
- (3803,'Zomba','ZO',1130,1),
- (3804,'Aguascalientes','AGU',1140,1),
- (3805,'Baja California','BCN',1140,1),
- (3806,'Baja California Sur','BCS',1140,1),
- (3807,'Campeche','CAM',1140,1),
- (3808,'Coahuila','COA',1140,1),
- (3809,'Colima','COL',1140,1),
- (3810,'Chiapas','CHP',1140,1),
- (3811,'Chihuahua','CHH',1140,1),
- (3812,'Durango','DUR',1140,1),
- (3813,'Guanajuato','GUA',1140,1),
- (3814,'Guerrero','GRO',1140,1),
- (3815,'Hidalgo','HID',1140,1),
- (3816,'Jalisco','JAL',1140,1),
- (3817,'Mexico','MEX',1140,1),
- (3818,'Michoacin','MIC',1140,1),
- (3819,'Morelos','MOR',1140,1),
- (3820,'Nayarit','NAY',1140,1),
- (3821,'Nuevo Leon','NLE',1140,1),
- (3822,'Oaxaca','OAX',1140,1),
- (3823,'Puebla','PUE',1140,1),
- (3824,'Queretaro','QUE',1140,1),
- (3825,'Quintana Roo','ROO',1140,1),
- (3826,'San Luis Potosi','SLP',1140,1),
- (3827,'Sinaloa','SIN',1140,1),
- (3828,'Sonora','SON',1140,1),
- (3829,'Tabasco','TAB',1140,1),
- (3830,'Tamaulipas','TAM',1140,1),
- (3831,'Tlaxcala','TLA',1140,1),
- (3832,'Veracruz','VER',1140,1),
- (3833,'Yucatan','YUC',1140,1),
- (3834,'Zacatecas','ZAC',1140,1),
- (3835,'Wilayah Persekutuan Kuala Lumpur','14',1131,1),
- (3836,'Wilayah Persekutuan Labuan','15',1131,1),
- (3837,'Wilayah Persekutuan Putrajaya','16',1131,1),
- (3838,'Johor','01',1131,1),
- (3839,'Kedah','02',1131,1),
- (3840,'Kelantan','03',1131,1),
- (3841,'Melaka','04',1131,1),
- (3842,'Negeri Sembilan','05',1131,1),
- (3843,'Pahang','06',1131,1),
- (3844,'Perak','08',1131,1),
- (3845,'Perlis','09',1131,1),
- (3846,'Pulau Pinang','07',1131,1),
- (3847,'Sabah','12',1131,1),
- (3848,'Sarawak','13',1131,1),
- (3849,'Selangor','10',1131,1),
- (3850,'Terengganu','11',1131,1),
- (3851,'Maputo','MPM',1147,1),
- (3852,'Cabo Delgado','P',1147,1),
- (3853,'Gaza','G',1147,1),
- (3854,'Inhambane','I',1147,1),
- (3855,'Manica','B',1147,1),
- (3856,'Numpula','N',1147,1),
- (3857,'Niaaea','A',1147,1),
- (3858,'Sofala','S',1147,1),
- (3859,'Tete','T',1147,1),
- (3860,'Zambezia','Q',1147,1),
- (3861,'Caprivi','CA',1148,1),
- (3862,'Erongo','ER',1148,1),
- (3863,'Hardap','HA',1148,1),
- (3864,'Karas','KA',1148,1),
- (3865,'Khomas','KH',1148,1),
- (3866,'Kunene','KU',1148,1),
- (3867,'Ohangwena','OW',1148,1),
- (3868,'Okavango','OK',1148,1),
- (3869,'Omaheke','OH',1148,1),
- (3870,'Omusati','OS',1148,1),
- (3871,'Oshana','ON',1148,1),
- (3872,'Oshikoto','OT',1148,1),
- (3873,'Otjozondjupa','OD',1148,1),
- (3874,'Niamey','8',1156,1),
- (3875,'Agadez','1',1156,1),
- (3876,'Diffa','2',1156,1),
- (3877,'Dosso','3',1156,1),
- (3878,'Maradi','4',1156,1),
- (3879,'Tahoua','S',1156,1),
- (3880,'Tillaberi','6',1156,1),
- (3881,'Zinder','7',1156,1),
- (3882,'Abuja Federal Capital Territory','FC',1157,1),
- (3883,'Abia','AB',1157,1),
- (3884,'Adamawa','AD',1157,1),
- (3885,'Akwa Ibom','AK',1157,1),
- (3886,'Anambra','AN',1157,1),
- (3887,'Bauchi','BA',1157,1),
- (3888,'Bayelsa','BY',1157,1),
- (3889,'Benue','BE',1157,1),
- (3890,'Borno','BO',1157,1),
- (3891,'Cross River','CR',1157,1),
- (3892,'Delta','DE',1157,1),
- (3893,'Ebonyi','EB',1157,1),
- (3894,'Edo','ED',1157,1),
- (3895,'Ekiti','EK',1157,1),
- (3896,'Enugu','EN',1157,1),
- (3897,'Gombe','GO',1157,1),
- (3898,'Imo','IM',1157,1),
- (3899,'Jigawa','JI',1157,1),
- (3900,'Kaduna','KD',1157,1),
- (3901,'Kano','KN',1157,1),
- (3902,'Katsina','KT',1157,1),
- (3903,'Kebbi','KE',1157,1),
- (3904,'Kogi','KO',1157,1),
- (3905,'Kwara','KW',1157,1),
- (3906,'Lagos','LA',1157,1),
- (3907,'Nassarawa','NA',1157,1),
- (3908,'Niger','NI',1157,1),
- (3909,'Ogun','OG',1157,1),
- (3910,'Ondo','ON',1157,1),
- (3911,'Osun','OS',1157,1),
- (3912,'Oyo','OY',1157,1),
- (3913,'Rivers','RI',1157,1),
- (3914,'Sokoto','SO',1157,1),
- (3915,'Taraba','TA',1157,1),
- (3916,'Yobe','YO',1157,1),
- (3917,'Zamfara','ZA',1157,1),
- (3918,'Boaco','BO',1155,1),
- (3919,'Carazo','CA',1155,1),
- (3920,'Chinandega','CI',1155,1),
- (3921,'Chontales','CO',1155,1),
- (3922,'Esteli','ES',1155,1),
- (3923,'Jinotega','JI',1155,1),
- (3924,'Leon','LE',1155,1),
- (3925,'Madriz','MD',1155,1),
- (3926,'Managua','MN',1155,1),
- (3927,'Masaya','MS',1155,1),
- (3928,'Matagalpa','MT',1155,1),
- (3929,'Nueva Segovia','NS',1155,1),
- (3930,'Rio San Juan','SJ',1155,1),
- (3931,'Rivas','RI',1155,1),
- (3932,'Atlantico Norte','AN',1155,1),
- (3933,'Atlantico Sur','AS',1155,1),
- (3934,'Drente','DR',1152,1),
- (3935,'Flevoland','FL',1152,1),
- (3936,'Friesland','FR',1152,1),
- (3937,'Gelderland','GL',1152,1),
- (3938,'Groningen','GR',1152,1),
- (3939,'Noord-Brabant','NB',1152,1),
- (3940,'Noord-Holland','NH',1152,1),
- (3941,'Overijssel','OV',1152,1),
- (3942,'Utrecht','UT',1152,1),
- (3943,'Zuid-Holland','ZH',1152,1),
- (3944,'Zeeland','ZL',1152,1),
- (3945,'Akershus','02',1161,1),
- (3946,'Aust-Agder','09',1161,1),
- (3947,'Buskerud','06',1161,1),
- (3948,'Finnmark','20',1161,1),
- (3949,'Hedmark','04',1161,1),
- (3951,'Møre og Romsdal','15',1161,1),
- (3952,'Nordland','18',1161,1),
- (3953,'Nord-Trøndelag','17',1161,1),
- (3954,'Oppland','05',1161,1),
- (3955,'Oslo','03',1161,1),
- (3956,'Rogaland','11',1161,1),
- (3957,'Sør-Trøndelag','16',1161,1),
- (3958,'Telemark','06',1161,1),
- (3959,'Troms','19',1161,1),
- (3960,'Vest-Agder','10',1161,1),
- (3961,'Vestfold','07',1161,1),
- (3962,'Vestland','46',1161,1),
- (3963,'Østfold','01',1161,1),
- (3964,'Jan Mayen','22',1161,1),
- (3965,'Svalbard','21',1161,1),
- (3966,'Auckland','AUK',1154,1),
- (3967,'Bay of Plenty','BOP',1154,1),
- (3968,'Canterbury','CAN',1154,1),
- (3969,'Gisborne','GIS',1154,1),
- (3970,'Hawkes Bay','HKB',1154,1),
- (3971,'Manawatu-Wanganui','MWT',1154,1),
- (3972,'Marlborough','MBH',1154,1),
- (3973,'Nelson','NSN',1154,1),
- (3974,'Northland','NTL',1154,1),
- (3975,'Otago','OTA',1154,1),
- (3976,'Southland','STL',1154,1),
- (3977,'Taranaki','TKI',1154,1),
- (3978,'Tasman','TAS',1154,1),
- (3979,'Waikato','WKO',1154,1),
- (3980,'Wellington','WGN',1154,1),
- (3981,'West Coast','WTC',1154,1),
- (3982,'Ad Dakhillyah','DA',1162,1),
- (3983,'Al Batinah','BA',1162,1),
- (3984,'Al Janblyah','JA',1162,1),
- (3985,'Al Wusta','WU',1162,1),
- (3986,'Ash Sharqlyah','SH',1162,1),
- (3987,'Az Zahirah','ZA',1162,1),
- (3988,'Masqat','MA',1162,1),
- (3989,'Musandam','MU',1162,1),
- (3990,'Bocas del Toro','1',1166,1),
- (3991,'Cocle','2',1166,1),
- (3992,'Chiriqui','4',1166,1),
- (3993,'Darien','5',1166,1),
- (3994,'Herrera','6',1166,1),
- (3995,'Loa Santoa','7',1166,1),
- (3996,'Panama','8',1166,1),
- (3997,'Veraguas','9',1166,1),
- (3998,'Comarca de San Blas','Q',1166,1),
- (3999,'El Callao','CAL',1169,1),
- (4000,'Ancash','ANC',1169,1),
- (4001,'Apurimac','APU',1169,1),
- (4002,'Arequipa','ARE',1169,1),
- (4003,'Ayacucho','AYA',1169,1),
- (4004,'Cajamarca','CAJ',1169,1),
- (4005,'Cuzco','CUS',1169,1),
- (4006,'Huancavelica','HUV',1169,1),
- (4007,'Huanuco','HUC',1169,1),
- (4008,'Ica','ICA',1169,1),
- (4009,'Junin','JUN',1169,1),
- (4010,'La Libertad','LAL',1169,1),
- (4011,'Lambayeque','LAM',1169,1),
- (4012,'Lima','LIM',1169,1),
- (4013,'Loreto','LOR',1169,1),
- (4014,'Madre de Dios','MDD',1169,1),
- (4015,'Moquegua','MOQ',1169,1),
- (4016,'Pasco','PAS',1169,1),
- (4017,'Piura','PIU',1169,1),
- (4018,'Puno','PUN',1169,1),
- (4019,'San Martin','SAM',1169,1),
- (4020,'Tacna','TAC',1169,1),
- (4021,'Tumbes','TUM',1169,1),
- (4022,'Ucayali','UCA',1169,1),
- (4023,'National Capital District (Port Moresby)','NCD',1167,1),
- (4024,'Chimbu','CPK',1167,1),
- (4025,'Eastern Highlands','EHG',1167,1),
- (4026,'East New Britain','EBR',1167,1),
- (4027,'East Sepik','ESW',1167,1),
- (4028,'Enga','EPW',1167,1),
- (4029,'Gulf','GPK',1167,1),
- (4030,'Madang','MPM',1167,1),
- (4031,'Manus','MRL',1167,1),
- (4032,'Milne Bay','MBA',1167,1),
- (4033,'Morobe','MPL',1167,1),
- (4034,'New Ireland','NIK',1167,1),
- (4035,'North Solomons','NSA',1167,1),
- (4036,'Santaun','SAN',1167,1),
- (4037,'Southern Highlands','SHM',1167,1),
- (4038,'Western Highlands','WHM',1167,1),
- (4039,'West New Britain','WBK',1167,1),
- (4040,'Abra','ABR',1170,1),
- (4041,'Agusan del Norte','AGN',1170,1),
- (4042,'Agusan del Sur','AGS',1170,1),
- (4043,'Aklan','AKL',1170,1),
- (4044,'Albay','ALB',1170,1),
- (4045,'Antique','ANT',1170,1),
- (4046,'Apayao','APA',1170,1),
- (4047,'Aurora','AUR',1170,1),
- (4048,'Basilan','BAS',1170,1),
- (4049,'Bataan','BAN',1170,1),
- (4050,'Batanes','BTN',1170,1),
- (4051,'Batangas','BTG',1170,1),
- (4052,'Benguet','BEN',1170,1),
- (4053,'Biliran','BIL',1170,1),
- (4054,'Bohol','BOH',1170,1),
- (4055,'Bukidnon','BUK',1170,1),
- (4056,'Bulacan','BUL',1170,1),
- (4057,'Cagayan','CAG',1170,1),
- (4058,'Camarines Norte','CAN',1170,1),
- (4059,'Camarines Sur','CAS',1170,1),
- (4060,'Camiguin','CAM',1170,1),
- (4061,'Capiz','CAP',1170,1),
- (4062,'Catanduanes','CAT',1170,1),
- (4063,'Cavite','CAV',1170,1),
- (4064,'Cebu','CEB',1170,1),
- (4065,'Davao de Oro','COM',1170,1),
- (4066,'Davao del Norte','DAV',1170,1),
- (4067,'Davao del Sur','DAS',1170,1),
- (4068,'Davao Oriental','DAO',1170,1),
- (4069,'Eastern Samar','EAS',1170,1),
- (4070,'Guimaras','GUI',1170,1),
- (4071,'Ifugao','IFU',1170,1),
- (4072,'Ilocos Norte','ILN',1170,1),
- (4073,'Ilocos Sur','ILS',1170,1),
- (4074,'Iloilo','ILI',1170,1),
- (4075,'Isabela','ISA',1170,1),
- (4076,'Kalinga','KAL',1170,1),
- (4077,'Laguna','LAG',1170,1),
- (4078,'Lanao del Norte','LAN',1170,1),
- (4079,'Lanao del Sur','LAS',1170,1),
- (4080,'La Union','LUN',1170,1),
- (4081,'Leyte','LEY',1170,1),
- (4082,'Maguindanao','MAG',1170,1),
- (4083,'Marinduque','MAD',1170,1),
- (4084,'Masbate','MAS',1170,1),
- (4085,'Mindoro Occidental','MDC',1170,1),
- (4086,'Mindoro Oriental','MDR',1170,1),
- (4087,'Misamis Occidental','MSC',1170,1),
- (4088,'Misamis Oriental','MSR',1170,1),
- (4089,'Mountain Province','MOU',1170,1),
- (4090,'Negroe Occidental','NEC',1170,1),
- (4091,'Negros Oriental','NER',1170,1),
- (4092,'Cotabato','NCO',1170,1),
- (4093,'Northern Samar','NSA',1170,1),
- (4094,'Nueva Ecija','NUE',1170,1),
- (4095,'Nueva Vizcaya','NUV',1170,1),
- (4096,'Palawan','PLW',1170,1),
- (4097,'Pampanga','PAM',1170,1),
- (4098,'Pangasinan','PAN',1170,1),
- (4099,'Quezon','QUE',1170,1),
- (4100,'Quirino','QUI',1170,1),
- (4101,'Rizal','RIZ',1170,1),
- (4102,'Romblon','ROM',1170,1),
- (4103,'Sarangani','SAR',1170,1),
- (4104,'Siquijor','SIG',1170,1),
- (4105,'Sorsogon','SOR',1170,1),
- (4106,'South Cotabato','SCO',1170,1),
- (4107,'Southern Leyte','SLE',1170,1),
- (4108,'Sultan Kudarat','SUK',1170,1),
- (4109,'Sulu','SLU',1170,1),
- (4110,'Surigao del Norte','SUN',1170,1),
- (4111,'Surigao del Sur','SUR',1170,1),
- (4112,'Tarlac','TAR',1170,1),
- (4113,'Tawi-Tawi','TAW',1170,1),
- (4114,'Western Samar','WSA',1170,1),
- (4115,'Zambales','ZMB',1170,1),
- (4116,'Zamboanga del Norte','ZAN',1170,1),
- (4117,'Zamboanga del Sur','ZAS',1170,1),
- (4118,'Zamboanga Sibiguey','ZSI',1170,1),
- (4119,'Islamabad Federal Capital Area','IS',1163,1),
- (4120,'Baluchistan','BA',1163,1),
- (4121,'Khyber Pakhtun Khawa','NW',1163,1),
- (4122,'Sindh','SD',1163,1),
- (4123,'Federally Administered Tribal Areas','TA',1163,1),
- (4124,'Azad Kashmir','JK',1163,1),
- (4125,'Gilgit-Baltistan','NA',1163,1),
- (4126,'Aveiro','01',1173,1),
- (4127,'Beja','02',1173,1),
- (4128,'Braga','03',1173,1),
- (4129,'Bragança','04',1173,1),
- (4130,'Castelo Branco','05',1173,1),
- (4131,'Coimbra','06',1173,1),
- (4132,'Évora','07',1173,1),
- (4133,'Faro','08',1173,1),
- (4134,'Guarda','09',1173,1),
- (4135,'Leiria','10',1173,1),
- (4136,'Lisboa','11',1173,1),
- (4137,'Portalegre','12',1173,1),
- (4138,'Porto','13',1173,1),
- (4139,'Santarém','14',1173,1),
- (4140,'Setúbal','15',1173,1),
- (4141,'Viana do Castelo','16',1173,1),
- (4142,'Vila Real','17',1173,1),
- (4143,'Viseu','18',1173,1),
- (4144,'Região Autónoma dos Açores','20',1173,1),
- (4145,'Região Autónoma da Madeira','30',1173,1),
- (4146,'Asuncion','ASU',1168,1),
- (4147,'Alto Paraguay','16',1168,1),
- (4148,'Alto Parana','10',1168,1),
- (4149,'Amambay','13',1168,1),
- (4150,'Boqueron','19',1168,1),
- (4151,'Caeguazu','5',1168,1),
- (4152,'Caazapl','6',1168,1),
- (4153,'Canindeyu','14',1168,1),
- (4154,'Concepcion','1',1168,1),
- (4155,'Cordillera','3',1168,1),
- (4156,'Guaira','4',1168,1),
- (4157,'Itapua','7',1168,1),
- (4158,'Miaiones','8',1168,1),
- (4159,'Neembucu','12',1168,1),
- (4160,'Paraguari','9',1168,1),
- (4161,'Presidente Hayes','15',1168,1),
- (4162,'San Pedro','2',1168,1),
- (4163,'Ad Dawhah','DA',1175,1),
- (4164,'Al Ghuwayriyah','GH',1175,1),
- (4165,'Al Jumayliyah','JU',1175,1),
- (4166,'Al Khawr','KH',1175,1),
- (4167,'Al Wakrah','WA',1175,1),
- (4168,'Ar Rayyan','RA',1175,1),
- (4169,'Jariyan al Batnah','JB',1175,1),
- (4170,'Madinat ash Shamal','MS',1175,1),
- (4171,'Umm Salal','US',1175,1),
- (4172,'Bucuresti','B',1176,1),
- (4173,'Alba','AB',1176,1),
- (4174,'Arad','AR',1176,1),
- (4175,'ArgeÈ™','AG',1176,1),
- (4176,'Bacău','BC',1176,1),
- (4177,'Bihor','BH',1176,1),
- (4178,'Bistrița-Năsăud','BN',1176,1),
- (4179,'Botoșani','BT',1176,1),
- (4180,'Brașov','BV',1176,1),
- (4181,'Brăila','BR',1176,1),
- (4182,'Buzău','BZ',1176,1),
- (4183,'CaraÈ™-Severin','CS',1176,1),
- (4184,'Călărași','CL',1176,1),
- (4185,'Cluj','CJ',1176,1),
- (4186,'Constanța','CT',1176,1),
- (4187,'Covasna','CV',1176,1),
- (4188,'Dâmbovița','DB',1176,1),
- (4189,'Dolj','DJ',1176,1),
- (4190,'Galați','GL',1176,1),
- (4191,'Giurgiu','GR',1176,1),
- (4192,'Gorj','GJ',1176,1),
- (4193,'Harghita','HR',1176,1),
- (4194,'Hunedoara','HD',1176,1),
- (4195,'Ialomița','IL',1176,1),
- (4196,'Iași','IS',1176,1),
- (4197,'Ilfov','IF',1176,1),
- (4198,'MaramureÈ™','MM',1176,1),
- (4199,'Mehedinți','MH',1176,1),
- (4200,'MureÈ™','MS',1176,1),
- (4201,'NeamÈ›','NT',1176,1),
- (4202,'Olt','OT',1176,1),
- (4203,'Prahova','PH',1176,1),
- (4204,'Satu Mare','SM',1176,1),
- (4205,'Sălaj','SJ',1176,1),
- (4206,'Sibiu','SB',1176,1),
- (4207,'Suceava','SV',1176,1),
- (4208,'Teleorman','TR',1176,1),
- (4209,'TimiÈ™','TM',1176,1),
- (4210,'Tulcea','TL',1176,1),
- (4211,'Vaslui','VS',1176,1),
- (4212,'Vâlcea','VL',1176,1),
- (4213,'Vrancea','VN',1176,1),
- (4214,'Adygeya, Respublika','AD',1177,1),
- (4215,'Altay, Respublika','AL',1177,1),
- (4216,'Bashkortostan, Respublika','BA',1177,1),
- (4217,'Buryatiya, Respublika','BU',1177,1),
- (4218,'Chechenskaya Respublika','CE',1177,1),
- (4219,'Chuvashskaya Respublika','CU',1177,1),
- (4220,'Dagestan, Respublika','DA',1177,1),
- (4221,'Ingushskaya Respublika','IN',1177,1),
- (4222,'Kabardino-Balkarskaya','KB',1177,1),
- (4223,'Kalmykiya, Respublika','KL',1177,1),
- (4224,'Karachayevo-Cherkesskaya Respublika','KC',1177,1),
- (4225,'Kareliya, Respublika','KR',1177,1),
- (4226,'Khakasiya, Respublika','KK',1177,1),
- (4227,'Komi, Respublika','KO',1177,1),
- (4228,'Mariy El, Respublika','ME',1177,1),
- (4229,'Mordoviya, Respublika','MO',1177,1),
- (4230,'Sakha, Respublika [Yakutiya]','SA',1177,1),
- (4231,'Severnaya Osetiya, Respublika','SE',1177,1),
- (4232,'Tatarstan, Respublika','TA',1177,1),
- (4233,'Tyva, Respublika [Tuva]','TY',1177,1),
- (4234,'Udmurtskaya Respublika','UD',1177,1),
- (4235,'Altayskiy kray','ALT',1177,1),
- (4236,'Khabarovskiy kray','KHA',1177,1),
- (4237,'Krasnodarskiy kray','KDA',1177,1),
- (4238,'Krasnoyarskiy kray','KYA',1177,1),
- (4239,'Primorskiy kray','PRI',1177,1),
- (4240,'Stavropol\'skiy kray','STA',1177,1),
- (4241,'Amurskaya oblast\'','AMU',1177,1),
- (4242,'Arkhangel\'skaya oblast\'','ARK',1177,1),
- (4243,'Astrakhanskaya oblast\'','AST',1177,1),
- (4244,'Belgorodskaya oblast\'','BEL',1177,1),
- (4245,'Bryanskaya oblast\'','BRY',1177,1),
- (4246,'Chelyabinskaya oblast\'','CHE',1177,1),
- (4247,'Zabaykalsky Krai\'','ZSK',1177,1),
- (4248,'Irkutskaya oblast\'','IRK',1177,1),
- (4249,'Ivanovskaya oblast\'','IVA',1177,1),
- (4250,'Kaliningradskaya oblast\'','KGD',1177,1),
- (4251,'Kaluzhskaya oblast\'','KLU',1177,1),
- (4252,'Kamchatka Krai\'','KAM',1177,1),
- (4253,'Kemerovskaya oblast\'','KEM',1177,1),
- (4254,'Kirovskaya oblast\'','KIR',1177,1),
- (4255,'Kostromskaya oblast\'','KOS',1177,1),
- (4256,'Kurganskaya oblast\'','KGN',1177,1),
- (4257,'Kurskaya oblast\'','KRS',1177,1),
- (4258,'Leningradskaya oblast\'','LEN',1177,1),
- (4259,'Lipetskaya oblast\'','LIP',1177,1),
- (4260,'Magadanskaya oblast\'','MAG',1177,1),
- (4261,'Moskovskaya oblast\'','MOS',1177,1),
- (4262,'Murmanskaya oblast\'','MUR',1177,1),
- (4263,'Nizhegorodskaya oblast\'','NIZ',1177,1),
- (4264,'Novgorodskaya oblast\'','NGR',1177,1),
- (4265,'Novosibirskaya oblast\'','NVS',1177,1),
- (4266,'Omskaya oblast\'','OMS',1177,1),
- (4267,'Orenburgskaya oblast\'','ORE',1177,1),
- (4268,'Orlovskaya oblast\'','ORL',1177,1),
- (4269,'Penzenskaya oblast\'','PNZ',1177,1),
- (4270,'Perm krai\'','PEK',1177,1),
- (4271,'Pskovskaya oblast\'','PSK',1177,1),
- (4272,'Rostovskaya oblast\'','ROS',1177,1),
- (4273,'Ryazanskaya oblast\'','RYA',1177,1),
- (4274,'Sakhalinskaya oblast\'','SAK',1177,1),
- (4275,'Samarskaya oblast\'','SAM',1177,1),
- (4276,'Saratovskaya oblast\'','SAR',1177,1),
- (4277,'Smolenskaya oblast\'','SMO',1177,1),
- (4278,'Sverdlovskaya oblast\'','SVE',1177,1),
- (4279,'Tambovskaya oblast\'','TAM',1177,1),
- (4280,'Tomskaya oblast\'','TOM',1177,1),
- (4281,'Tul\'skaya oblast\'','TUL',1177,1),
- (4282,'Tverskaya oblast\'','TVE',1177,1),
- (4283,'Tyumenskaya oblast\'','TYU',1177,1),
- (4284,'Ul\'yanovskaya oblast\'','ULY',1177,1),
- (4285,'Vladimirskaya oblast\'','VLA',1177,1),
- (4286,'Volgogradskaya oblast\'','VGG',1177,1),
- (4287,'Vologodskaya oblast\'','VLG',1177,1),
- (4288,'Voronezhskaya oblast\'','VOR',1177,1),
- (4289,'Yaroslavskaya oblast\'','YAR',1177,1),
- (4290,'Moskva','MOW',1177,1),
- (4291,'Sankt-Peterburg','SPE',1177,1),
- (4292,'Yevreyskaya avtonomnaya oblast\'','YEV',1177,1),
- (4294,'Chukotskiy avtonomnyy okrug','CHU',1177,1),
- (4296,'Khanty-Mansiyskiy avtonomnyy okrug','KHM',1177,1),
- (4299,'Nenetskiy avtonomnyy okrug','NEN',1177,1),
- (4302,'Yamalo-Nenetskiy avtonomnyy okrug','YAN',1177,1),
- (4303,'Butare','C',1178,1),
- (4304,'Byumba','I',1178,1),
- (4305,'Cyangugu','E',1178,1),
- (4306,'Gikongoro','D',1178,1),
- (4307,'Gisenyi','G',1178,1),
- (4308,'Gitarama','B',1178,1),
- (4309,'Kibungo','J',1178,1),
- (4310,'Kibuye','F',1178,1),
- (4311,'Kigali-Rural Kigali y\' Icyaro','K',1178,1),
- (4312,'Kigali-Ville Kigali Ngari','L',1178,1),
- (4313,'Mutara','M',1178,1),
- (4314,'Ruhengeri','H',1178,1),
- (4315,'Al Bahah','11',1187,1),
- (4316,'Al Hudud Ash Shamaliyah','08',1187,1),
- (4317,'Al Jawf','12',1187,1),
- (4318,'Al Madinah','03',1187,1),
- (4319,'Al Qasim','05',1187,1),
- (4320,'Ar Riyad','01',1187,1),
- (4321,'Asir','14',1187,1),
- (4322,'Ha\'il','06',1187,1),
- (4323,'Jlzan','09',1187,1),
- (4324,'Makkah','02',1187,1),
- (4325,'Najran','10',1187,1),
- (4326,'Tabuk','07',1187,1),
- (4327,'Capital Territory (Honiara)','CT',1194,1),
- (4328,'Guadalcanal','GU',1194,1),
- (4329,'Isabel','IS',1194,1),
- (4330,'Makira','MK',1194,1),
- (4331,'Malaita','ML',1194,1),
- (4332,'Temotu','TE',1194,1),
- (4333,'A\'ali an Nil','23',1200,1),
- (4334,'Al Bah al Ahmar','26',1200,1),
- (4335,'Al Buhayrat','18',1200,1),
- (4336,'Al Jazirah','07',1200,1),
- (4337,'Al Khartum','03',1200,1),
- (4338,'Al Qadarif','06',1200,1),
- (4339,'Al Wahdah','22',1200,1),
- (4340,'An Nil','04',1200,1),
- (4341,'An Nil al Abyaq','08',1200,1),
- (4342,'An Nil al Azraq','24',1200,1),
- (4343,'Ash Shamallyah','01',1200,1),
- (4344,'Bahr al Jabal','17',1200,1),
- (4345,'Gharb al Istiwa\'iyah','16',1200,1),
- (4346,'Gharb Ba~r al Ghazal','14',1200,1),
- (4347,'Gharb Darfur','12',1200,1),
- (4348,'Gharb Kurdufan','10',1200,1),
- (4349,'Janub Darfur','11',1200,1),
- (4350,'Janub Rurdufan','13',1200,1),
- (4351,'Jnqall','20',1200,1),
- (4352,'Kassala','05',1200,1),
- (4353,'Shamal Batr al Ghazal','15',1200,1),
- (4354,'Shamal Darfur','02',1200,1),
- (4355,'Shamal Kurdufan','09',1200,1),
- (4356,'Sharq al Istiwa\'iyah','19',1200,1),
- (4357,'Sinnar','25',1200,1),
- (4358,'Warab','21',1200,1),
- (4359,'Blekinge län','K',1204,1),
- (4360,'Dalarnas län','W',1204,1),
- (4361,'Gotlands län','I',1204,1),
- (4362,'Gävleborgs län','X',1204,1),
- (4363,'Hallands län','N',1204,1),
- (4364,'Jämtlands län','Z',1204,1),
- (4365,'Jönkopings län','F',1204,1),
- (4366,'Kalmar län','H',1204,1),
- (4367,'Kronobergs län','G',1204,1),
- (4368,'Norrbottens län','BD',1204,1),
- (4369,'Skåne län','M',1204,1),
- (4370,'Stockholms län','AB',1204,1),
- (4371,'Södermanlands län','D',1204,1),
- (4372,'Uppsala län','C',1204,1),
- (4373,'Värmlands län','S',1204,1),
- (4374,'Västerbottens län','AC',1204,1),
- (4375,'Västernorrlands län','Y',1204,1),
- (4376,'Västmanlands län','U',1204,1),
- (4377,'Västra Götalands län','Q',1204,1),
- (4378,'Örebro län','T',1204,1),
- (4379,'Östergötlands län','E',1204,1),
- (4380,'Saint Helena','SH',1180,1),
- (4381,'Ascension','AC',1180,1),
- (4382,'Tristan da Cunha','TA',1180,1),
- (4383,'Ajdovščina','001',1193,1),
- (4384,'Beltinci','002',1193,1),
- (4385,'Benedikt','148',1193,1),
- (4386,'Bistrica ob Sotli','149',1193,1),
- (4387,'Bled','003',1193,1),
- (4388,'Bloke','150',1193,1),
- (4389,'Bohinj','004',1193,1),
- (4390,'Borovnica','005',1193,1),
- (4391,'Bovec','006',1193,1),
- (4392,'Braslovče','151',1193,1),
- (4393,'Brda','007',1193,1),
- (4394,'Brezovica','008',1193,1),
- (4395,'Brežice','009',1193,1),
- (4396,'Cankova','152',1193,1),
- (4397,'Celje','011',1193,1),
- (4398,'Cerklje na Gorenjskem','012',1193,1),
- (4399,'Cerknica','013',1193,1),
- (4400,'Cerkno','014',1193,1),
- (4401,'Cerkvenjak','153',1193,1),
- (4402,'Črenšovci','015',1193,1),
- (4403,'Črna na Koroškem','016',1193,1),
- (4404,'ÄŒrnomelj','017',1193,1),
- (4405,'Destrnik','018',1193,1),
- (4406,'Divača','019',1193,1),
- (4407,'Dobje','154',1193,1),
- (4408,'Dobrepolje','020',1193,1),
- (4409,'Dobrna','155',1193,1),
- (4410,'Dobrova-Polhov Gradec','021',1193,1),
- (4411,'Dobrovnik','156',1193,1),
- (4412,'Dol pri Ljubljani','022',1193,1),
- (4413,'Dolenjske Toplice','157',1193,1),
- (4414,'Domžale','023',1193,1),
- (4415,'Dornava','024',1193,1),
- (4416,'Dravograd','025',1193,1),
- (4417,'Duplek','026',1193,1),
- (4418,'Gorenja vas-Poljane','027',1193,1),
- (4419,'Gorišnica','028',1193,1),
- (4420,'Gornja Radgona','029',1193,1),
- (4421,'Gornji Grad','030',1193,1),
- (4422,'Gornji Petrovci','031',1193,1),
- (4423,'Grad','158',1193,1),
- (4424,'Grosuplje','032',1193,1),
- (4425,'Hajdina','159',1193,1),
- (4426,'Hoče-Slivnica','160',1193,1),
- (4427,'Hodoš','161',1193,1),
- (4428,'Horjul','162',1193,1),
- (4429,'Hrastnik','034',1193,1),
- (4430,'Hrpelje-Kozina','035',1193,1),
- (4431,'Idrija','036',1193,1),
- (4432,'Ig','037',1193,1),
- (4433,'Ilirska Bistrica','038',1193,1),
- (4434,'Ivančna Gorica','039',1193,1),
- (4435,'Izola','040',1193,1),
- (4436,'Jesenice','041',1193,1),
- (4437,'Jezersko','163',1193,1),
- (4438,'Juršinci','042',1193,1),
- (4439,'Kamnik','043',1193,1),
- (4440,'Kanal','044',1193,1),
- (4441,'Kidričevo','045',1193,1),
- (4442,'Kobarid','046',1193,1),
- (4443,'Kobilje','047',1193,1),
- (4444,'Kočevje','048',1193,1),
- (4445,'Komen','049',1193,1),
- (4446,'Komenda','164',1193,1),
- (4447,'Koper','050',1193,1),
- (4448,'Kostel','165',1193,1),
- (4449,'Kozje','051',1193,1),
- (4450,'Kranj','052',1193,1),
- (4451,'Kranjska Gora','053',1193,1),
- (4452,'Križevci','166',1193,1),
- (4453,'Krško','054',1193,1),
- (4454,'Kungota','055',1193,1),
- (4455,'Kuzma','056',1193,1),
- (4456,'Laško','057',1193,1),
- (4457,'Lenart','058',1193,1),
- (4458,'Lendava','059',1193,1),
- (4459,'Litija','060',1193,1),
- (4460,'Ljubljana','061',1193,1),
- (4461,'Ljubno','062',1193,1),
- (4462,'Ljutomer','063',1193,1),
- (4463,'Logatec','064',1193,1),
- (4464,'Loška dolina','065',1193,1),
- (4465,'Loški Potok','066',1193,1),
- (4466,'Lovrenc na Pohorju','167',1193,1),
- (4467,'Luče','067',1193,1),
- (4468,'Lukovica','068',1193,1),
- (4469,'Majšperk','069',1193,1),
- (4470,'Maribor','070',1193,1),
- (4471,'Markovci','168',1193,1),
- (4472,'Medvode','071',1193,1),
- (4473,'Mengeš','072',1193,1),
- (4474,'Metlika','073',1193,1),
- (4475,'Mežica','074',1193,1),
- (4476,'Miklavž na Dravskem polju','169',1193,1),
- (4477,'Miren-Kostanjevica','075',1193,1),
- (4478,'Mirna Peč','170',1193,1),
- (4479,'Mislinja','076',1193,1),
- (4480,'Moravče','077',1193,1),
- (4481,'Moravske Toplice','078',1193,1),
- (4482,'Mozirje','079',1193,1),
- (4483,'Murska Sobota','080',1193,1),
- (4484,'Muta','081',1193,1),
- (4485,'Naklo','082',1193,1),
- (4486,'Nazarje','083',1193,1),
- (4487,'Nova Gorica','084',1193,1),
- (4488,'Novo mesto','085',1193,1),
- (4489,'Sveta Ana','181',1193,1),
- (4490,'Sveti Andraž v Slovenskih goricah','182',1193,1),
- (4491,'Sveti Jurij','116',1193,1),
- (4492,'Å alovci','033',1193,1),
- (4493,'Å empeter-Vrtojba','183',1193,1),
- (4494,'Šenčur','117',1193,1),
- (4495,'Å entilj','118',1193,1),
- (4496,'Å entjernej','119',1193,1),
- (4497,'Å entjur','120',1193,1),
- (4498,'Å kocjan','121',1193,1),
- (4499,'Å kofja Loka','122',1193,1),
- (4500,'Å kofljica','123',1193,1),
- (4501,'Šmarje pri Jelšah','124',1193,1),
- (4502,'Å martno ob Paki','125',1193,1),
- (4503,'Å martno pri Litiji','194',1193,1),
- (4504,'Šoštanj','126',1193,1),
- (4505,'Å tore','127',1193,1),
- (4506,'Tabor','184',1193,1),
- (4507,'Tišina','010',1193,1),
- (4508,'Tolmin','128',1193,1),
- (4509,'Trbovlje','129',1193,1),
- (4510,'Trebnje','130',1193,1),
- (4511,'Trnovska vas','185',1193,1),
- (4512,'Tržič','131',1193,1),
- (4513,'Trzin','186',1193,1),
- (4514,'Turnišče','132',1193,1),
- (4515,'Velenje','133',1193,1),
- (4516,'Velika Polana','187',1193,1),
- (4517,'Velike Lašče','134',1193,1),
- (4518,'Veržej','188',1193,1),
- (4519,'Videm','135',1193,1),
- (4520,'Vipava','136',1193,1),
- (4521,'Vitanje','137',1193,1),
- (4522,'Vojnik','138',1193,1),
- (4523,'Vransko','189',1193,1),
- (4524,'Vrhnika','140',1193,1),
- (4525,'Vuzenica','141',1193,1),
- (4526,'Zagorje ob Savi','142',1193,1),
- (4527,'Zavrč','143',1193,1),
- (4528,'Zreče','144',1193,1),
- (4529,'Žalec','190',1193,1),
- (4530,'Železniki','146',1193,1),
- (4531,'Žetale','191',1193,1),
- (4532,'Žiri','147',1193,1),
- (4533,'Žirovnica','192',1193,1),
- (4534,'Žužemberk','193',1193,1),
- (4535,'Banskobystrický kraj','BC',1192,1),
- (4536,'Bratislavský kraj','BL',1192,1),
- (4537,'Košický kraj','KI',1192,1),
- (4538,'Nitriansky kraj','NJ',1192,1),
- (4539,'Prešovský kraj','PV',1192,1),
- (4540,'Trenčiansky kraj','TC',1192,1),
- (4541,'Trnavský kraj','TA',1192,1),
- (4542,'Žilinský kraj','ZI',1192,1),
- (4543,'Western Area (Freetown)','W',1190,1),
- (4544,'Dakar','DK',1188,1),
- (4545,'Diourbel','DB',1188,1),
- (4546,'Fatick','FK',1188,1),
- (4547,'Kaolack','KL',1188,1),
- (4548,'Kolda','KD',1188,1),
- (4549,'Louga','LG',1188,1),
- (4550,'Matam','MT',1188,1),
- (4551,'Saint-Louis','SL',1188,1),
- (4552,'Tambacounda','TC',1188,1),
- (4553,'Thies','TH',1188,1),
- (4554,'Ziguinchor','ZG',1188,1),
- (4555,'Awdal','AW',1195,1),
- (4556,'Bakool','BK',1195,1),
- (4557,'Banaadir','BN',1195,1),
- (4558,'Bay','BY',1195,1),
- (4559,'Galguduud','GA',1195,1),
- (4560,'Gedo','GE',1195,1),
- (4561,'Hiirsan','HI',1195,1),
- (4562,'Jubbada Dhexe','JD',1195,1),
- (4563,'Jubbada Hoose','JH',1195,1),
- (4564,'Mudug','MU',1195,1),
- (4565,'Nugaal','NU',1195,1),
- (4566,'Saneag','SA',1195,1),
- (4567,'Shabeellaha Dhexe','SD',1195,1),
- (4568,'Shabeellaha Hoose','SH',1195,1),
- (4569,'Sool','SO',1195,1),
- (4570,'Togdheer','TO',1195,1),
- (4571,'Woqooyi Galbeed','WO',1195,1),
- (4572,'Brokopondo','BR',1201,1),
- (4573,'Commewijne','CM',1201,1),
- (4574,'Coronie','CR',1201,1),
- (4575,'Marowijne','MA',1201,1),
- (4576,'Nickerie','NI',1201,1),
- (4577,'Paramaribo','PM',1201,1),
- (4578,'Saramacca','SA',1201,1),
- (4579,'Sipaliwini','SI',1201,1),
- (4580,'Wanica','WA',1201,1),
- (4581,'Principe','P',1207,1),
- (4582,'Sao Tome','S',1207,1),
- (4583,'Ahuachapan','AH',1066,1),
- (4584,'Cabanas','CA',1066,1),
- (4585,'Cuscatlan','CU',1066,1),
- (4586,'Chalatenango','CH',1066,1),
- (4587,'Morazan','MO',1066,1),
- (4588,'San Miguel','SM',1066,1),
- (4589,'San Salvador','SS',1066,1),
- (4590,'Santa Ana','SA',1066,1),
- (4591,'San Vicente','SV',1066,1),
- (4592,'Sonsonate','SO',1066,1),
- (4593,'Usulutan','US',1066,1),
- (4594,'Al Hasakah','HA',1206,1),
- (4595,'Al Ladhiqiyah','LA',1206,1),
- (4596,'Al Qunaytirah','QU',1206,1),
- (4597,'Ar Raqqah','RA',1206,1),
- (4598,'As Suwayda\'','SU',1206,1),
- (4599,'Dar\'a','DR',1206,1),
- (4600,'Dayr az Zawr','DY',1206,1),
- (4601,'Dimashq','DI',1206,1),
- (4602,'Halab','HL',1206,1),
- (4603,'Hamah','HM',1206,1),
- (4604,'Jim\'','HI',1206,1),
- (4605,'Idlib','ID',1206,1),
- (4606,'Rif Dimashq','RD',1206,1),
- (4607,'Tarts','TA',1206,1),
- (4608,'Hhohho','HH',1203,1),
- (4609,'Lubombo','LU',1203,1),
- (4610,'Manzini','MA',1203,1),
- (4611,'Shiselweni','SH',1203,1),
- (4612,'Batha','BA',1043,1),
- (4613,'Biltine','BI',1043,1),
- (4614,'Borkou-Ennedi-Tibesti','BET',1043,1),
- (4615,'Chari-Baguirmi','CB',1043,1),
- (4616,'Guera','GR',1043,1),
- (4617,'Kanem','KA',1043,1),
- (4618,'Lac','LC',1043,1),
- (4619,'Logone-Occidental','LO',1043,1),
- (4620,'Logone-Oriental','LR',1043,1),
- (4621,'Mayo-Kebbi','MK',1043,1),
- (4622,'Moyen-Chari','MC',1043,1),
- (4623,'Ouaddai','OD',1043,1),
- (4624,'Salamat','SA',1043,1),
- (4625,'Tandjile','TA',1043,1),
- (4626,'Kara','K',1214,1),
- (4627,'Maritime (Region)','M',1214,1),
- (4628,'Savannes','S',1214,1),
- (4629,'Krung Thep Maha Nakhon Bangkok','10',1211,1),
- (4630,'Phatthaya','S',1211,1),
- (4631,'Amnat Charoen','37',1211,1),
- (4632,'Ang Thong','15',1211,1),
- (4633,'Buri Ram','31',1211,1),
- (4634,'Chachoengsao','24',1211,1),
- (4635,'Chai Nat','18',1211,1),
- (4636,'Chaiyaphum','36',1211,1),
- (4637,'Chanthaburi','22',1211,1),
- (4638,'Chiang Mai','50',1211,1),
- (4639,'Chiang Rai','57',1211,1),
- (4640,'Chon Buri','20',1211,1),
- (4641,'Chumphon','86',1211,1),
- (4642,'Kalasin','46',1211,1),
- (4643,'Kamphasng Phet','62',1211,1),
- (4644,'Kanchanaburi','71',1211,1),
- (4645,'Khon Kaen','40',1211,1),
- (4646,'Krabi','81',1211,1),
- (4647,'Lampang','52',1211,1),
- (4648,'Lamphun','51',1211,1),
- (4649,'Loei','42',1211,1),
- (4650,'Lop Buri','16',1211,1),
- (4651,'Mae Hong Son','58',1211,1),
- (4652,'Maha Sarakham','44',1211,1),
- (4653,'Mukdahan','49',1211,1),
- (4654,'Nakhon Nayok','26',1211,1),
- (4655,'Nakhon Pathom','73',1211,1),
- (4656,'Nakhon Phanom','48',1211,1),
- (4657,'Nakhon Ratchasima','30',1211,1),
- (4658,'Nakhon Sawan','60',1211,1),
- (4659,'Nakhon Si Thammarat','80',1211,1),
- (4660,'Nan','55',1211,1),
- (4661,'Narathiwat','96',1211,1),
- (4662,'Nong Bua Lam Phu','39',1211,1),
- (4663,'Nong Khai','43',1211,1),
- (4664,'Nonthaburi','12',1211,1),
- (4665,'Pathum Thani','13',1211,1),
- (4666,'Pattani','94',1211,1),
- (4667,'Phangnga','82',1211,1),
- (4668,'Phatthalung','93',1211,1),
- (4669,'Phayao','56',1211,1),
- (4670,'Phetchabun','67',1211,1),
- (4671,'Phetchaburi','76',1211,1),
- (4672,'Phichit','66',1211,1),
- (4673,'Phitsanulok','65',1211,1),
- (4674,'Phrae','54',1211,1),
- (4675,'Phra Nakhon Si Ayutthaya','14',1211,1),
- (4676,'Phuket','83',1211,1),
- (4677,'Prachin Buri','25',1211,1),
- (4678,'Prachuap Khiri Khan','77',1211,1),
- (4679,'Ranong','85',1211,1),
- (4680,'Ratchaburi','70',1211,1),
- (4681,'Rayong','21',1211,1),
- (4682,'Roi Et','45',1211,1),
- (4683,'Sa Kaeo','27',1211,1),
- (4684,'Sakon Nakhon','47',1211,1),
- (4685,'Samut Prakan','11',1211,1),
- (4686,'Samut Sakhon','74',1211,1),
- (4687,'Samut Songkhram','75',1211,1),
- (4688,'Saraburi','19',1211,1),
- (4689,'Satun','91',1211,1),
- (4690,'Sing Buri','17',1211,1),
- (4691,'Si Sa Ket','33',1211,1),
- (4692,'Songkhla','90',1211,1),
- (4693,'Sukhothai','64',1211,1),
- (4694,'Suphan Buri','72',1211,1),
- (4695,'Surat Thani','84',1211,1),
- (4696,'Surin','32',1211,1),
- (4697,'Tak','63',1211,1),
- (4698,'Trang','92',1211,1),
- (4699,'Trat','23',1211,1),
- (4700,'Ubon Ratchathani','34',1211,1),
- (4701,'Udon Thani','41',1211,1),
- (4702,'Uthai Thani','61',1211,1),
- (4703,'Uttaradit','53',1211,1),
- (4704,'Yala','95',1211,1),
- (4705,'Yasothon','35',1211,1),
- (4706,'Sughd','SU',1209,1),
- (4707,'Khatlon','KT',1209,1),
- (4708,'Gorno-Badakhshan','GB',1209,1),
- (4709,'Ahal','A',1220,1),
- (4710,'Balkan','B',1220,1),
- (4711,'Dasoguz','D',1220,1),
- (4712,'Lebap','L',1220,1),
- (4713,'Mary','M',1220,1),
- (4714,'Béja','31',1218,1),
- (4715,'Ben Arous','13',1218,1),
- (4716,'Bizerte','23',1218,1),
- (4717,'Gabès','81',1218,1),
- (4718,'Gafsa','71',1218,1),
- (4719,'Jendouba','32',1218,1),
- (4720,'Kairouan','41',1218,1),
- (4721,'Rasserine','42',1218,1),
- (4722,'Kebili','73',1218,1),
- (4723,'L\'Ariana','12',1218,1),
- (4724,'Le Ref','33',1218,1),
- (4725,'Mahdia','53',1218,1),
- (4726,'La Manouba','14',1218,1),
- (4727,'Medenine','82',1218,1),
- (4728,'Moneatir','52',1218,1),
- (4729,'Naboul','21',1218,1),
- (4730,'Sfax','61',1218,1),
- (4731,'Sidi Bouxid','43',1218,1),
- (4732,'Siliana','34',1218,1),
- (4733,'Sousse','51',1218,1),
- (4734,'Tataouine','83',1218,1),
- (4735,'Tozeur','72',1218,1),
- (4736,'Tunis','11',1218,1),
- (4737,'Zaghouan','22',1218,1),
- (4738,'Adana','01',1219,1),
- (4739,'Ad yaman','02',1219,1),
- (4740,'Afyon','03',1219,1),
- (4741,'Ag r','04',1219,1),
- (4742,'Aksaray','68',1219,1),
- (4743,'Amasya','05',1219,1),
- (4744,'Ankara','06',1219,1),
- (4745,'Antalya','07',1219,1),
- (4746,'Ardahan','75',1219,1),
- (4747,'Artvin','08',1219,1),
- (4748,'Aydin','09',1219,1),
- (4749,'Bal kesir','10',1219,1),
- (4750,'Bartin','74',1219,1),
- (4751,'Batman','72',1219,1),
- (4752,'Bayburt','69',1219,1),
- (4753,'Bilecik','11',1219,1),
- (4754,'Bingol','12',1219,1),
- (4755,'Bitlis','13',1219,1),
- (4756,'Bolu','14',1219,1),
- (4757,'Burdur','15',1219,1),
- (4758,'Bursa','16',1219,1),
- (4759,'Canakkale','17',1219,1),
- (4760,'Cankir','18',1219,1),
- (4761,'Corum','19',1219,1),
- (4762,'Denizli','20',1219,1),
- (4763,'Diyarbakir','21',1219,1),
- (4764,'Duzce','81',1219,1),
- (4765,'Edirne','22',1219,1),
- (4766,'Elazig','23',1219,1),
- (4767,'Erzincan','24',1219,1),
- (4768,'Erzurum','25',1219,1),
- (4769,'Eskis\'ehir','26',1219,1),
- (4770,'Gaziantep','27',1219,1),
- (4771,'Giresun','28',1219,1),
- (4772,'Gms\'hane','29',1219,1),
- (4773,'Hakkari','30',1219,1),
- (4774,'Hatay','31',1219,1),
- (4775,'Igidir','76',1219,1),
- (4776,'Isparta','32',1219,1),
- (4777,'Icel','33',1219,1),
- (4778,'Istanbul','34',1219,1),
- (4779,'Izmir','35',1219,1),
- (4780,'Kahramanmaras','46',1219,1),
- (4781,'Karabk','78',1219,1),
- (4782,'Karaman','70',1219,1),
- (4783,'Kars','36',1219,1),
- (4784,'Kastamonu','37',1219,1),
- (4785,'Kayseri','38',1219,1),
- (4786,'Kirikkale','71',1219,1),
- (4787,'Kirklareli','39',1219,1),
- (4788,'Kirs\'ehir','40',1219,1),
- (4789,'Kilis','79',1219,1),
- (4790,'Kocaeli','41',1219,1),
- (4791,'Konya','42',1219,1),
- (4792,'Ktahya','43',1219,1),
- (4793,'Malatya','44',1219,1),
- (4794,'Manisa','45',1219,1),
- (4795,'Mardin','47',1219,1),
- (4796,'Mugila','48',1219,1),
- (4797,'Mus','49',1219,1),
- (4798,'Nevs\'ehir','50',1219,1),
- (4799,'Nigide','51',1219,1),
- (4800,'Ordu','52',1219,1),
- (4801,'Osmaniye','80',1219,1),
- (4802,'Rize','53',1219,1),
- (4803,'Sakarya','54',1219,1),
- (4804,'Samsun','55',1219,1),
- (4805,'Siirt','56',1219,1),
- (4806,'Sinop','57',1219,1),
- (4807,'Sivas','58',1219,1),
- (4808,'S\'anliurfa','63',1219,1),
- (4809,'S\'rnak','73',1219,1),
- (4810,'Tekirdag','59',1219,1),
- (4811,'Tokat','60',1219,1),
- (4812,'Trabzon','61',1219,1),
- (4813,'Tunceli','62',1219,1),
- (4814,'Us\'ak','64',1219,1),
- (4815,'Van','65',1219,1),
- (4816,'Yalova','77',1219,1),
- (4817,'Yozgat','66',1219,1),
- (4818,'Zonguldak','67',1219,1),
- (4819,'Couva-Tabaquite-Talparo','CTT',1217,1),
- (4820,'Diego Martin','DMN',1217,1),
- (4821,'Eastern Tobago','ETO',1217,1),
- (4822,'Penal-Debe','PED',1217,1),
- (4823,'Princes Town','PRT',1217,1),
- (4824,'Rio Claro-Mayaro','RCM',1217,1),
- (4825,'Sangre Grande','SGE',1217,1),
- (4826,'San Juan-Laventille','SJL',1217,1),
- (4827,'Siparia','SIP',1217,1),
- (4828,'Tunapuna-Piarco','TUP',1217,1),
- (4829,'Western Tobago','WTO',1217,1),
- (4830,'Arima','ARI',1217,1),
- (4831,'Chaguanas','CHA',1217,1),
- (4832,'Point Fortin','PTF',1217,1),
- (4833,'Port of Spain','POS',1217,1),
- (4834,'San Fernando','SFO',1217,1),
- (4835,'Aileu','AL',1063,1),
- (4836,'Ainaro','AN',1063,1),
- (4837,'Bacucau','BA',1063,1),
- (4838,'Bobonaro','BO',1063,1),
- (4839,'Cova Lima','CO',1063,1),
- (4840,'Dili','DI',1063,1),
- (4841,'Ermera','ER',1063,1),
- (4842,'Laulem','LA',1063,1),
- (4843,'Liquica','LI',1063,1),
- (4844,'Manatuto','MT',1063,1),
- (4845,'Manafahi','MF',1063,1),
- (4846,'Oecussi','OE',1063,1),
- (4847,'Viqueque','VI',1063,1),
- (4848,'Changhua County','CHA',1208,1),
- (4849,'Chiayi County','CYQ',1208,1),
- (4850,'Hsinchu County','HSQ',1208,1),
- (4851,'Hualien County','HUA',1208,1),
- (4852,'Ilan County','ILA',1208,1),
- (4853,'Kaohsiung County','KHQ',1208,1),
- (4854,'Miaoli County','MIA',1208,1),
- (4855,'Nantou County','NAN',1208,1),
- (4856,'Penghu County','PEN',1208,1),
- (4857,'Pingtung County','PIF',1208,1),
- (4858,'Taichung County','TXQ',1208,1),
- (4859,'Tainan County','TNQ',1208,1),
- (4860,'Taipei County','TPQ',1208,1),
- (4861,'Taitung County','TTT',1208,1),
- (4862,'Taoyuan County','TAO',1208,1),
- (4863,'Yunlin County','YUN',1208,1),
- (4864,'Keelung City','KEE',1208,1),
- (4865,'Arusha','01',1210,1),
- (4866,'Dar-es-Salaam','02',1210,1),
- (4867,'Dodoma','03',1210,1),
- (4868,'Iringa','04',1210,1),
- (4869,'Kagera','05',1210,1),
- (4870,'Kaskazini Pemba','06',1210,1),
- (4871,'Kaskazini Unguja','07',1210,1),
- (4872,'Xigoma','08',1210,1),
- (4873,'Kilimanjaro','09',1210,1),
- (4874,'Rusini Pemba','10',1210,1),
- (4875,'Kusini Unguja','11',1210,1),
- (4876,'Lindi','12',1210,1),
- (4877,'Manyara','26',1210,1),
- (4878,'Mara','13',1210,1),
- (4879,'Mbeya','14',1210,1),
- (4880,'Mjini Magharibi','15',1210,1),
- (4881,'Morogoro','16',1210,1),
- (4882,'Mtwara','17',1210,1),
- (4883,'Pwani','19',1210,1),
- (4884,'Rukwa','20',1210,1),
- (4885,'Ruvuma','21',1210,1),
- (4886,'Shinyanga','22',1210,1),
- (4887,'Singida','23',1210,1),
- (4888,'Tabora','24',1210,1),
- (4889,'Tanga','25',1210,1),
- (4890,'Cherkas\'ka Oblast\'','71',1224,1),
- (4891,'Chernihivs\'ka Oblast\'','74',1224,1),
- (4892,'Chernivets\'ka Oblast\'','77',1224,1),
- (4893,'Dnipropetrovs\'ka Oblast\'','12',1224,1),
- (4894,'Donets\'ka Oblast\'','14',1224,1),
- (4895,'Ivano-Frankivs\'ka Oblast\'','26',1224,1),
- (4896,'Kharkivs\'ka Oblast\'','63',1224,1),
- (4897,'Khersons\'ka Oblast\'','65',1224,1),
- (4898,'Khmel\'nyts\'ka Oblast\'','68',1224,1),
- (4899,'Kirovohrads\'ka Oblast\'','35',1224,1),
- (4900,'Kyivs\'ka Oblast\'','32',1224,1),
- (4901,'Luhans\'ka Oblast\'','09',1224,1),
- (4902,'L\'vivs\'ka Oblast\'','46',1224,1),
- (4903,'Mykolaivs\'ka Oblast\'','48',1224,1),
- (4904,'Odes \'ka Oblast\'','51',1224,1),
- (4905,'Poltavs\'ka Oblast\'','53',1224,1),
- (4906,'Rivnens\'ka Oblast\'','56',1224,1),
- (4907,'Sums \'ka Oblast\'','59',1224,1),
- (4908,'Ternopil\'s\'ka Oblast\'','61',1224,1),
- (4909,'Vinnyts\'ka Oblast\'','05',1224,1),
- (4910,'Volyos\'ka Oblast\'','07',1224,1),
- (4911,'Zakarpats\'ka Oblast\'','21',1224,1),
- (4912,'Zaporiz\'ka Oblast\'','23',1224,1),
- (4913,'Zhytomyrs\'ka Oblast\'','18',1224,1),
- (4914,'Respublika Krym','43',1224,1),
- (4915,'Kyiv','30',1224,1),
- (4916,'Sevastopol','40',1224,1),
- (4917,'Adjumani','301',1223,1),
- (4918,'Apac','302',1223,1),
- (4919,'Arua','303',1223,1),
- (4920,'Bugiri','201',1223,1),
- (4921,'Bundibugyo','401',1223,1),
- (4922,'Bushenyi','402',1223,1),
- (4923,'Busia','202',1223,1),
- (4924,'Gulu','304',1223,1),
- (4925,'Hoima','403',1223,1),
- (4926,'Iganga','203',1223,1),
- (4927,'Jinja','204',1223,1),
- (4928,'Kabale','404',1223,1),
- (4929,'Kabarole','405',1223,1),
- (4930,'Kaberamaido','213',1223,1),
- (4931,'Kalangala','101',1223,1),
- (4932,'Kampala','102',1223,1),
- (4933,'Kamuli','205',1223,1),
- (4934,'Kamwenge','413',1223,1),
- (4935,'Kanungu','414',1223,1),
- (4936,'Kapchorwa','206',1223,1),
- (4937,'Kasese','406',1223,1),
- (4938,'Katakwi','207',1223,1),
- (4939,'Kayunga','112',1223,1),
- (4940,'Kibaale','407',1223,1),
- (4941,'Kiboga','103',1223,1),
- (4942,'Kisoro','408',1223,1),
- (4943,'Kitgum','305',1223,1),
- (4944,'Kotido','306',1223,1),
- (4945,'Kumi','208',1223,1),
- (4946,'Kyenjojo','415',1223,1),
- (4947,'Lira','307',1223,1),
- (4948,'Luwero','104',1223,1),
- (4949,'Masaka','105',1223,1),
- (4950,'Masindi','409',1223,1),
- (4951,'Mayuge','214',1223,1),
- (4952,'Mbale','209',1223,1),
- (4953,'Mbarara','410',1223,1),
- (4954,'Moroto','308',1223,1),
- (4955,'Moyo','309',1223,1),
- (4956,'Mpigi','106',1223,1),
- (4957,'Mubende','107',1223,1),
- (4958,'Mukono','108',1223,1),
- (4959,'Nakapiripirit','311',1223,1),
- (4960,'Nakasongola','109',1223,1),
- (4961,'Nebbi','310',1223,1),
- (4962,'Ntungamo','411',1223,1),
- (4963,'Pader','312',1223,1),
- (4964,'Pallisa','210',1223,1),
- (4965,'Rakai','110',1223,1),
- (4966,'Rukungiri','412',1223,1),
- (4967,'Sembabule','111',1223,1),
- (4968,'Sironko','215',1223,1),
- (4969,'Soroti','211',1223,1),
- (4970,'Tororo','212',1223,1),
- (4971,'Wakiso','113',1223,1),
- (4972,'Yumbe','313',1223,1),
- (4973,'Baker Island','81',1227,1),
- (4974,'Howland Island','84',1227,1),
- (4975,'Jarvis Island','86',1227,1),
- (4976,'Johnston Atoll','67',1227,1),
- (4977,'Kingman Reef','89',1227,1),
- (4978,'Midway Islands','71',1227,1),
- (4979,'Navassa Island','76',1227,1),
- (4980,'Palmyra Atoll','95',1227,1),
- (4981,'Wake Island','79',1227,1),
- (4982,'Artigsa','AR',1229,1),
- (4983,'Canelones','CA',1229,1),
- (4984,'Cerro Largo','CL',1229,1),
- (4985,'Colonia','CO',1229,1),
- (4986,'Durazno','DU',1229,1),
- (4987,'Flores','FS',1229,1),
- (4988,'Lavalleja','LA',1229,1),
- (4989,'Maldonado','MA',1229,1),
- (4990,'Montevideo','MO',1229,1),
- (4991,'Paysandu','PA',1229,1),
- (4992,'Rivera','RV',1229,1),
- (4993,'Rocha','RO',1229,1),
- (4994,'Salto','SA',1229,1),
- (4995,'Soriano','SO',1229,1),
- (4996,'Tacuarembo','TA',1229,1),
- (4997,'Treinta y Tres','TT',1229,1),
- (4998,'Toshkent (city)','TK',1230,1),
- (4999,'Qoraqalpogiston Respublikasi','QR',1230,1),
- (5000,'Andijon','AN',1230,1),
- (5001,'Buxoro','BU',1230,1),
- (5002,'Farg\'ona','FA',1230,1),
- (5003,'Jizzax','JI',1230,1),
- (5004,'Khorazm','KH',1230,1),
- (5005,'Namangan','NG',1230,1),
- (5006,'Navoiy','NW',1230,1),
- (5007,'Qashqadaryo','QA',1230,1),
- (5008,'Samarqand','SA',1230,1),
- (5009,'Sirdaryo','SI',1230,1),
- (5010,'Surxondaryo','SU',1230,1),
- (5011,'Toshkent','TO',1230,1),
- (5012,'Xorazm','XO',1230,1),
- (5013,'Distrito Federal','A',1232,1),
- (5014,'Anzoategui','B',1232,1),
- (5015,'Apure','C',1232,1),
- (5016,'Aragua','D',1232,1),
- (5017,'Barinas','E',1232,1),
- (5018,'Carabobo','G',1232,1),
- (5019,'Cojedes','H',1232,1),
- (5020,'Falcon','I',1232,1),
- (5021,'Guarico','J',1232,1),
- (5022,'Lara','K',1232,1),
- (5023,'Merida','L',1232,1),
- (5024,'Miranda','M',1232,1),
- (5025,'Monagas','N',1232,1),
- (5026,'Nueva Esparta','O',1232,1),
- (5027,'Portuguesa','P',1232,1),
- (5028,'Tachira','S',1232,1),
- (5029,'Trujillo','T',1232,1),
- (5030,'Vargas','X',1232,1),
- (5031,'Yaracuy','U',1232,1),
- (5032,'Zulia','V',1232,1),
- (5033,'Delta Amacuro','Y',1232,1),
- (5034,'Dependencias Federales','W',1232,1),
- (5035,'An Giang','44',1233,1),
- (5036,'Ba Ria - Vung Tau','43',1233,1),
- (5037,'Bac Can','53',1233,1),
- (5038,'Bac Giang','54',1233,1),
- (5039,'Bac Lieu','55',1233,1),
- (5040,'Bac Ninh','56',1233,1),
- (5041,'Ben Tre','50',1233,1),
- (5042,'Binh Dinh','31',1233,1),
- (5043,'Binh Duong','57',1233,1),
- (5044,'Binh Phuoc','58',1233,1),
- (5045,'Binh Thuan','40',1233,1),
- (5046,'Ca Mau','59',1233,1),
- (5047,'Can Tho','48',1233,1),
- (5048,'Cao Bang','04',1233,1),
- (5049,'Da Nang, thanh pho','60',1233,1),
- (5050,'Dong Nai','39',1233,1),
- (5051,'Dong Thap','45',1233,1),
- (5052,'Gia Lai','30',1233,1),
- (5053,'Ha Giang','03',1233,1),
- (5054,'Ha Nam','63',1233,1),
- (5055,'Ha Noi, thu do','64',1233,1),
- (5056,'Ha Tay','15',1233,1),
- (5057,'Ha Tinh','23',1233,1),
- (5058,'Hai Duong','61',1233,1),
- (5059,'Hai Phong, thanh pho','62',1233,1),
- (5060,'Hoa Binh','14',1233,1),
- (5061,'Ho Chi Minh, thanh pho [Sai Gon]','65',1233,1),
- (5062,'Hung Yen','66',1233,1),
- (5063,'Khanh Hoa','34',1233,1),
- (5064,'Kien Giang','47',1233,1),
- (5065,'Kon Tum','28',1233,1),
- (5066,'Lai Chau','01',1233,1),
- (5067,'Lam Dong','35',1233,1),
- (5068,'Lang Son','09',1233,1),
- (5069,'Lao Cai','02',1233,1),
- (5070,'Long An','41',1233,1),
- (5071,'Nam Dinh','67',1233,1),
- (5072,'Nghe An','22',1233,1),
- (5073,'Ninh Binh','18',1233,1),
- (5074,'Ninh Thuan','36',1233,1),
- (5075,'Phu Tho','68',1233,1),
- (5076,'Phu Yen','32',1233,1),
- (5077,'Quang Binh','24',1233,1),
- (5078,'Quang Nam','27',1233,1),
- (5079,'Quang Ngai','29',1233,1),
- (5080,'Quang Ninh','13',1233,1),
- (5081,'Quang Tri','25',1233,1),
- (5082,'Soc Trang','52',1233,1),
- (5083,'Son La','05',1233,1),
- (5084,'Tay Ninh','37',1233,1),
- (5085,'Thai Binh','20',1233,1),
- (5086,'Thai Nguyen','69',1233,1),
- (5087,'Thanh Hoa','21',1233,1),
- (5088,'Thua Thien-Hue','26',1233,1),
- (5089,'Tien Giang','46',1233,1),
- (5090,'Tra Vinh','51',1233,1),
- (5091,'Tuyen Quang','07',1233,1),
- (5092,'Vinh Long','49',1233,1),
- (5093,'Vinh Phuc','70',1233,1),
- (5094,'Yen Bai','06',1233,1),
- (5095,'Malampa','MAP',1231,1),
- (5096,'Penama','PAM',1231,1),
- (5097,'Sanma','SAM',1231,1),
- (5098,'Shefa','SEE',1231,1),
- (5099,'Tafea','TAE',1231,1),
- (5100,'Torba','TOB',1231,1),
- (5101,'A\'ana','AA',1185,1),
- (5102,'Aiga-i-le-Tai','AL',1185,1),
- (5103,'Atua','AT',1185,1),
- (5104,'Fa\'aaaleleaga','FA',1185,1),
- (5105,'Gaga\'emauga','GE',1185,1),
- (5106,'Gagaifomauga','GI',1185,1),
- (5107,'Palauli','PA',1185,1),
- (5108,'Satupa\'itea','SA',1185,1),
- (5109,'Tuamasaga','TU',1185,1),
- (5110,'Va\'a-o-Fonoti','VF',1185,1),
- (5111,'Vaisigano','VS',1185,1),
- (5112,'Crna Gora','CG',1243,1),
- (5113,'Srbija','SR',1242,1),
- (5114,'Kosovo-Metohija','KM',1242,1),
- (5115,'Vojvodina','VO',1242,1),
- (5116,'Abyan','AB',1237,1),
- (5117,'Adan','AD',1237,1),
- (5118,'Ad Dali','DA',1237,1),
- (5119,'Al Bayda\'','BA',1237,1),
- (5120,'Al Hudaydah','MU',1237,1),
- (5121,'Al Mahrah','MR',1237,1),
- (5122,'Al Mahwit','MW',1237,1),
- (5123,'Amran','AM',1237,1),
- (5124,'Dhamar','DH',1237,1),
- (5125,'Hadramawt','HD',1237,1),
- (5126,'Hajjah','HJ',1237,1),
- (5127,'Ibb','IB',1237,1),
- (5128,'Lahij','LA',1237,1),
- (5129,'Ma\'rib','MA',1237,1),
- (5130,'Sa\'dah','SD',1237,1),
- (5131,'San\'a\'','SN',1237,1),
- (5132,'Shabwah','SH',1237,1),
- (5133,'Ta\'izz','TA',1237,1),
- (5134,'Eastern Cape','EC',1196,1),
- (5135,'Free State','FS',1196,1),
- (5136,'Gauteng','GT',1196,1),
- (5137,'Kwazulu-Natal','NL',1196,1),
- (5138,'Mpumalanga','MP',1196,1),
- (5139,'Northern Cape','NC',1196,1),
- (5140,'Limpopo','NP',1196,1),
- (5141,'Western Cape','WC',1196,1),
- (5142,'Copperbelt','08',1239,1),
- (5143,'Luapula','04',1239,1),
- (5144,'Lusaka','09',1239,1),
- (5145,'North-Western','06',1239,1),
- (5146,'Bulawayo','BU',1240,1),
- (5147,'Harare','HA',1240,1),
- (5148,'Manicaland','MA',1240,1),
- (5149,'Mashonaland Central','MC',1240,1),
- (5150,'Mashonaland East','ME',1240,1),
- (5151,'Mashonaland West','MW',1240,1),
- (5152,'Masvingo','MV',1240,1),
- (5153,'Matabeleland North','MN',1240,1),
- (5154,'Matabeleland South','MS',1240,1),
- (5155,'Midlands','MI',1240,1),
- (5156,'South Karelia','SK',1075,1),
- (5157,'South Ostrobothnia','SO',1075,1),
- (5158,'Etelä-Savo','ES',1075,1),
- (5159,'Häme','HH',1075,1),
- (5160,'Itä-Uusimaa','IU',1075,1),
- (5161,'Kainuu','KA',1075,1),
- (5162,'Central Ostrobothnia','CO',1075,1),
- (5163,'Central Finland','CF',1075,1),
- (5164,'Kymenlaakso','KY',1075,1),
- (5165,'Lapland','LA',1075,1),
- (5166,'Tampere Region','TR',1075,1),
- (5167,'Ostrobothnia','OB',1075,1),
- (5168,'North Karelia','NK',1075,1),
- (5169,'Northern Ostrobothnia','NO',1075,1),
- (5170,'Northern Savo','NS',1075,1),
- (5171,'Päijät-Häme','PH',1075,1),
- (5172,'Satakunta','SK',1075,1),
- (5173,'Uusimaa','UM',1075,1),
- (5174,'South-West Finland','SW',1075,1),
- (5175,'Ã…land','AL',1075,1),
- (5176,'Limburg','LI',1152,1),
- (5177,'Central and Western','CW',1098,1),
- (5178,'Eastern','EA',1098,1),
- (5179,'Southern','SO',1098,1),
- (5180,'Wan Chai','WC',1098,1),
- (5181,'Kowloon City','KC',1098,1),
- (5182,'Kwun Tong','KU',1098,1),
- (5183,'Sham Shui Po','SS',1098,1),
- (5184,'Wong Tai Sin','WT',1098,1),
- (5185,'Yau Tsim Mong','YT',1098,1),
- (5186,'Islands','IS',1098,1),
- (5187,'Kwai Tsing','KI',1098,1),
- (5188,'North','NO',1098,1),
- (5189,'Sai Kung','SK',1098,1),
- (5190,'Sha Tin','ST',1098,1),
- (5191,'Tai Po','TP',1098,1),
- (5192,'Tsuen Wan','TW',1098,1),
- (5193,'Tuen Mun','TM',1098,1),
- (5194,'Yuen Long','YL',1098,1),
- (5195,'Manchester','MR',1108,1),
- (5196,'Al Manāmah (Al ‘Āşimah)','13',1016,1),
- (5197,'Al Janūbīyah','14',1016,1),
- (5199,'Al Wusţá','16',1016,1),
- (5200,'Ash Shamālīyah','17',1016,1),
- (5201,'Jenin','_A',1165,1),
- (5202,'Tubas','_B',1165,1),
- (5203,'Tulkarm','_C',1165,1),
- (5204,'Nablus','_D',1165,1),
- (5205,'Qalqilya','_E',1165,1),
- (5206,'Salfit','_F',1165,1),
- (5207,'Ramallah and Al-Bireh','_G',1165,1),
- (5208,'Jericho','_H',1165,1),
- (5209,'Jerusalem','_I',1165,1),
- (5210,'Bethlehem','_J',1165,1),
- (5211,'Hebron','_K',1165,1),
- (5212,'North Gaza','_L',1165,1),
- (5213,'Gaza','_M',1165,1),
- (5214,'Deir el-Balah','_N',1165,1),
- (5215,'Khan Yunis','_O',1165,1),
- (5216,'Rafah','_P',1165,1),
- (5217,'Brussels','BRU',1020,1),
- (5218,'Distrito Federal','DIF',1140,1),
- (5219,'Taichung City','TXG',1208,1),
- (5220,'Kaohsiung City','KHH',1208,1),
- (5221,'Taipei City','TPE',1208,1),
- (5222,'Chiayi City','CYI',1208,1),
- (5223,'Hsinchu City','HSZ',1208,1),
- (5224,'Tainan City','TNN',1208,1),
- (9000,'North West','NW',1196,1),
- (9986,'Tyne and Wear','TWR',1226,1),
- (9988,'Greater Manchester','GTM',1226,1),
- (9989,'Co Tyrone','TYR',1226,1),
- (9990,'West Yorkshire','WYK',1226,1),
- (9991,'South Yorkshire','SYK',1226,1),
- (9992,'Merseyside','MSY',1226,1),
- (9993,'Berkshire','BRK',1226,1),
- (9994,'West Midlands','WMD',1226,1),
- (9998,'West Glamorgan','WGM',1226,1),
- (9999,'London','LON',1226,1),
- (10000,'Carbonia-Iglesias','CI',1107,1),
- (10001,'Olbia-Tempio','OT',1107,1),
- (10002,'Medio Campidano','VS',1107,1),
- (10003,'Ogliastra','OG',1107,1),
- (10009,'Jura','39',1076,1),
- (10010,'Barletta-Andria-Trani','BT',1107,1),
- (10011,'Fermo','FM',1107,1),
- (10012,'Monza e Brianza','MB',1107,1),
- (10013,'Clwyd','CWD',1226,1),
- (10015,'South Glamorgan','SGM',1226,1),
- (10016,'Artibonite','AR',1094,1),
- (10017,'Centre','CE',1094,1),
- (10018,'Nippes','NI',1094,1),
- (10019,'Nord','ND',1094,1),
- (10020,'La Rioja','F',1010,1),
- (10021,'Andorra la Vella','07',1005,1),
- (10022,'Canillo','02',1005,1),
- (10023,'Encamp','03',1005,1),
- (10024,'Escaldes-Engordany','08',1005,1),
- (10025,'La Massana','04',1005,1),
- (10026,'Ordino','05',1005,1),
- (10027,'Sant Julia de Loria','06',1005,1),
- (10028,'Abaco Islands','AB',1212,1),
- (10029,'Andros Island','AN',1212,1),
- (10030,'Berry Islands','BR',1212,1),
- (10031,'Eleuthera','EL',1212,1),
- (10032,'Grand Bahama','GB',1212,1),
- (10033,'Rum Cay','RC',1212,1),
- (10034,'San Salvador Island','SS',1212,1),
- (10035,'Kongo central','01',1050,1),
- (10036,'Kwango','02',1050,1),
- (10037,'Kwilu','03',1050,1),
- (10038,'Mai-Ndombe','04',1050,1),
- (10039,'Kasai','05',1050,1),
- (10040,'Lulua','06',1050,1),
- (10041,'Lomami','07',1050,1),
- (10042,'Sankuru','08',1050,1),
- (10043,'Ituri','09',1050,1),
- (10044,'Haut-Uele','10',1050,1),
- (10045,'Tshopo','11',1050,1),
- (10046,'Bas-Uele','12',1050,1),
- (10047,'Nord-Ubangi','13',1050,1),
- (10048,'Mongala','14',1050,1),
- (10049,'Sud-Ubangi','15',1050,1),
- (10050,'Tshuapa','16',1050,1),
- (10051,'Haut-Lomami','17',1050,1),
- (10052,'Lualaba','18',1050,1),
- (10053,'Haut-Katanga','19',1050,1),
- (10054,'Tanganyika','20',1050,1),
- (10055,'Toledo','TO',1198,1),
- (10056,'Córdoba','CO',1198,1),
- (10057,'Metropolitan Manila','MNL',1170,1),
- (10058,'La Paz','LP',1097,1),
- (10059,'Yinchuan','YN',1045,1),
- (10060,'Shizuishan','SZ',1045,1),
- (10061,'Wuzhong','WZ',1045,1),
- (10062,'Guyuan','GY',1045,1),
- (10063,'Zhongwei','ZW',1045,1),
- (10064,'Luxembourg','LU',1126,1),
- (10065,'Aizkraukles novads','002',1119,1),
- (10066,'Jaunjelgavas novads','038',1119,1),
- (10067,'Pļaviņu novads','072',1119,1),
- (10068,'Kokneses novads','046',1119,1),
- (10069,'Neretas novads','065',1119,1),
- (10070,'Skrīveru novads','092',1119,1),
- (10071,'Alūksnes novads','007',1119,1),
- (10072,'Apes novads','009',1119,1),
- (10073,'Balvu novads','015',1119,1),
- (10074,'Viļakas novads','108',1119,1),
- (10075,'Baltinavas novads','014',1119,1),
- (10076,'Rugāju novads','082',1119,1),
- (10077,'Bauskas novads','016',1119,1),
- (10078,'Iecavas novads','034',1119,1),
- (10079,'Rundāles novads','083',1119,1),
- (10080,'Vecumnieku novads','105',1119,1),
- (10081,'CÄ“su novads','022',1119,1),
- (10082,'LÄ«gatnes novads','055',1119,1),
- (10083,'Amatas novads','008',1119,1),
- (10084,'Jaunpiebalgas novads','039',1119,1),
- (10085,'Priekuļu novads','075',1119,1),
- (10086,'Pārgaujas novads','070',1119,1),
- (10087,'Raunas novads','076',1119,1),
- (10088,'Vecpiebalgas novads','104',1119,1),
- (10089,'Daugavpils novads','025',1119,1),
- (10090,'Ilūkstes novads','036',1119,1),
- (10091,'Dobeles novads','026',1119,1),
- (10092,'Auces novads','010',1119,1),
- (10093,'TÄ“rvetes novads','098',1119,1),
- (10094,'Gulbenes novads','033',1119,1),
- (10095,'Jelgavas novads','041',1119,1),
- (10096,'Ozolnieku novads','069',1119,1),
- (10097,'JÄ“kabpils novads','042',1119,1),
- (10098,'Aknīstes novads','004',1119,1),
- (10099,'Viesītes novads','107',1119,1),
- (10100,'Krustpils novads','049',1119,1),
- (10101,'Salas novads','085',1119,1),
- (10102,'Krāslavas novads','047',1119,1),
- (10103,'Dagdas novads','024',1119,1),
- (10104,'Aglonas novads','001',1119,1),
- (10105,'Kuldīgas novads','050',1119,1),
- (10106,'Skrundas novads','093',1119,1),
- (10107,'Alsungas novads','006',1119,1),
- (10108,'Aizputes novads','003',1119,1),
- (10109,'Durbes novads','028',1119,1),
- (10110,'Grobiņas novads','032',1119,1),
- (10111,'Pāvilostas novads','071',1119,1),
- (10112,'Priekules novads','074',1119,1),
- (10113,'NÄ«cas novads','066',1119,1),
- (10114,'Rucavas novads','081',1119,1),
- (10115,'Vaiņodes novads','100',1119,1),
- (10116,'Limbažu novads','054',1119,1),
- (10117,'Alojas novads','005',1119,1),
- (10118,'Salacgrīvas novads','086',1119,1),
- (10119,'Ludzas novads','058',1119,1),
- (10120,'Kārsavas novads','044',1119,1),
- (10121,'Zilupes novads','110',1119,1),
- (10122,'Ciblas novads','023',1119,1),
- (10123,'Madonas novads','059',1119,1),
- (10124,'Cesvaines novads','021',1119,1),
- (10125,'Lubānas novads','057',1119,1),
- (10126,'Varakļānu novads','102',1119,1),
- (10127,'Ērgļu novads','030',1119,1),
- (10128,'Ogres novads','067',1119,1),
- (10129,'Ikšķiles novads','035',1119,1),
- (10130,'Ķeguma novads','051',1119,1),
- (10131,'Lielvārdes novads','053',1119,1),
- (10132,'Preiļu novads','073',1119,1),
- (10133,'Līvānu novads','056',1119,1),
- (10134,'Riebiņu novads','078',1119,1),
- (10135,'Vārkavas novads','103',1119,1),
- (10136,'RÄ“zeknes novads','077',1119,1),
- (10137,'Viļānu novads','109',1119,1),
- (10138,'Baldones novads','013',1119,1),
- (10139,'Ķekavas novads','052',1119,1),
- (10140,'Olaines novads','068',1119,1),
- (10141,'Salaspils novads','087',1119,1),
- (10142,'Saulkrastu novads','089',1119,1),
- (10143,'Siguldas novads','091',1119,1),
- (10144,'Inčukalna novads','037',1119,1),
- (10145,'Ādažu novads','011',1119,1),
- (10146,'Babītes novads','012',1119,1),
- (10147,'Carnikavas novads','020',1119,1),
- (10148,'Garkalnes novads','031',1119,1),
- (10149,'Krimuldas novads','048',1119,1),
- (10150,'Mālpils novads','061',1119,1),
- (10151,'Mārupes novads','062',1119,1),
- (10152,'Ropažu novads','080',1119,1),
- (10153,'SÄ“jas novads','090',1119,1),
- (10154,'Stopiņu novads','095',1119,1),
- (10155,'Saldus novads','088',1119,1),
- (10156,'Brocēnu novads','018',1119,1),
- (10157,'Talsu novads','097',1119,1),
- (10158,'Dundagas novads','027',1119,1),
- (10159,'MÄ“rsraga novads','063',1119,1),
- (10160,'Rojas novads','079',1119,1),
- (10161,'Tukuma novads','099',1119,1),
- (10162,'Kandavas novads','043',1119,1),
- (10163,'Engures novads','029',1119,1),
- (10164,'Jaunpils novads','040',1119,1),
- (10165,'Valkas novads','101',1119,1),
- (10166,'Smiltenes novads','094',1119,1),
- (10167,'Strenču novads','096',1119,1),
- (10168,'Kocēnu novads','045',1119,1),
- (10169,'Mazsalacas novads','060',1119,1),
- (10170,'RÅ«jienas novads','084',1119,1),
- (10171,'Beverīnas novads','017',1119,1),
- (10172,'Burtnieku novads','019',1119,1),
- (10173,'Naukšēnu novads','064',1119,1),
- (10174,'Ventspils novads','106',1119,1),
- (10175,'JÄ“kabpils','JKB',1119,1),
- (10176,'Valmiera','VMR',1119,1),
- (10177,'Florida','FL',1229,1),
- (10178,'Rio Negro','RN',1229,1),
- (10179,'San Jose','SJ',1229,1),
- (10180,'Plateau','PL',1157,1),
- (10181,'Pieria','61',1085,1),
- (10182,'Los Rios','LR',1044,1),
- (10183,'Arica y Parinacota','AP',1044,1),
- (10184,'Amazonas','AMA',1169,1),
- (10185,'Kalimantan Tengah','KT',1102,1),
- (10186,'Sulawesi Barat','SR',1102,1),
- (10187,'Kalimantan Utara','KU',1102,1),
- (10188,'Ankaran','86',1193,1),
- (10189,'Apače','87',1193,1),
- (10190,'Cirkulane','88',1193,1),
- (10191,'Gorje','89',1193,1),
- (10192,'Kostanjevica na Krki','90',1193,1),
- (10193,'Log-Dragomer','91',1193,1),
- (10194,'Makole','92',1193,1),
- (10195,'Mirna','93',1193,1),
- (10196,'Mokronog-Trebelno','94',1193,1),
- (10197,'Odranci','95',1193,1),
- (10198,'Oplotnica','96',1193,1),
- (10199,'Ormož','97',1193,1),
- (10200,'Osilnica','98',1193,1),
- (10201,'Pesnica','99',1193,1),
- (10202,'Piran','100',1193,1),
- (10203,'Pivka','101',1193,1),
- (10204,'Podčetrtek','102',1193,1),
- (10205,'Podlehnik','103',1193,1),
- (10206,'Podvelka','104',1193,1),
- (10207,'Poljčane','105',1193,1),
- (10208,'Polzela','106',1193,1),
- (10209,'Postojna','107',1193,1),
- (10210,'Prebold','108',1193,1),
- (10211,'Preddvor','109',1193,1),
- (10212,'Prevalje','110',1193,1),
- (10213,'Ptuj','111',1193,1),
- (10214,'Puconci','112',1193,1),
- (10215,'Rače-Fram','113',1193,1),
- (10216,'Radeče','114',1193,1),
- (10217,'Radenci','115',1193,1),
- (10218,'Radlje ob Dravi','139',1193,1),
- (10219,'Radovljica','145',1193,1),
- (10220,'Ravne na Koroškem','171',1193,1),
- (10221,'Razkrižje','172',1193,1),
- (10222,'Rečica ob Savinji','173',1193,1),
- (10223,'Renče-Vogrsko','174',1193,1),
- (10224,'Ribnica','175',1193,1),
- (10225,'Ribnica na Pohorju','176',1193,1),
- (10226,'Rogaška Slatina','177',1193,1),
- (10227,'Rogašovci','178',1193,1),
- (10228,'Rogatec','179',1193,1),
- (10229,'Ruše','180',1193,1),
- (10230,'Selnica ob Dravi','195',1193,1),
- (10231,'Semič','196',1193,1),
- (10232,'Å entrupert','197',1193,1),
- (10233,'Sevnica','198',1193,1),
- (10234,'Sežana','199',1193,1),
- (10235,'Slovenj Gradec','200',1193,1),
- (10236,'Slovenska Bistrica','201',1193,1),
- (10237,'Slovenske Konjice','202',1193,1),
- (10238,'Šmarješke Toplice','203',1193,1),
- (10239,'Sodražica','204',1193,1),
- (10240,'Solčava','205',1193,1),
- (10241,'Središče ob Dravi','206',1193,1),
- (10242,'Starše','207',1193,1),
- (10243,'Straža','208',1193,1),
- (10244,'Sveta Trojica v Slovenskih goricah','209',1193,1),
- (10245,'Sveti Jurij v Slovenskih goricah','210',1193,1),
- (10246,'Sveti Tomaž','211',1193,1),
- (10247,'Vodice','212',1193,1),
- (10248,'Abkhazia','AB',1081,1),
- (10249,'Adjara','AJ',1081,1),
- (10250,'Tbilisi','TB',1081,1),
- (10251,'Guria','GU',1081,1),
- (10252,'Imereti','IM',1081,1),
- (10253,'Kakheti','KA',1081,1),
- (10254,'Kvemo Kartli','KK',1081,1),
- (10255,'Mtskheta-Mtianeti','MM',1081,1),
- (10256,'Racha-Lechkhumi and Kvemo Svaneti','RL',1081,1),
- (10257,'Samegrelo-Zemo Svaneti','SZ',1081,1),
- (10258,'Samtskhe-Javakheti','SJ',1081,1),
- (10259,'Shida Kartli','SK',1081,1),
- (10260,'Central','C',1074,1),
- (10261,'Punjab','PB',1163,1),
- (10262,'La Libertad','LI',1066,1),
- (10263,'La Paz','PA',1066,1),
- (10264,'La Union','UN',1066,1),
- (10265,'Littoral','LT',1038,1),
- (10266,'Nord-Ouest','NW',1038,1),
- (10267,'Telangana','TG',1101,1),
- (10268,'Ash Sharqiyah','04',1187,1),
- (10269,'Guadeloupe','GP',1076,1),
- (10270,'Martinique','MQ',1076,1),
- (10271,'Guyane','GF',1076,1),
- (10272,'La Réunion','RE',1076,1),
- (10273,'Mayotte','YT',1076,1),
- (10274,'Baringo','01',1112,1),
- (10275,'Bomet','02',1112,1),
- (10276,'Bungoma','03',1112,1),
- (10277,'Busia','04',1112,1),
- (10278,'Elgeyo/Marakwet','05',1112,1),
- (10279,'Embu','06',1112,1),
- (10280,'Garissa','07',1112,1),
- (10281,'Homa Bay','08',1112,1),
- (10282,'Isiolo','09',1112,1),
- (10283,'Kajiado','10',1112,1),
- (10284,'Kakamega','11',1112,1),
- (10285,'Kericho','12',1112,1),
- (10286,'Kiambu','13',1112,1),
- (10287,'Kilifi','14',1112,1),
- (10288,'Kirinyaga','15',1112,1),
- (10289,'Kisii','16',1112,1),
- (10290,'Kisumu','17',1112,1),
- (10291,'Kitui','18',1112,1),
- (10292,'Kwale','19',1112,1),
- (10293,'Laikipia','20',1112,1),
- (10294,'Lamu','21',1112,1),
- (10295,'Machakos','22',1112,1),
- (10296,'Makueni','23',1112,1),
- (10297,'Mandera','24',1112,1),
- (10298,'Marsabit','25',1112,1),
- (10299,'Meru','26',1112,1),
- (10300,'Migori','27',1112,1),
- (10301,'Mombasa','28',1112,1),
- (10302,'Murang\'a','29',1112,1),
- (10303,'Nairobi City','30',1112,1),
- (10304,'Nakuru','31',1112,1),
- (10305,'Nandi','32',1112,1),
- (10306,'Narok','33',1112,1),
- (10307,'Nyamira','34',1112,1),
- (10308,'Nyandarua','35',1112,1),
- (10309,'Nyeri','36',1112,1),
- (10310,'Samburu','37',1112,1),
- (10311,'Siaya','38',1112,1),
- (10312,'Taita/Taveta','39',1112,1),
- (10313,'Tana River','40',1112,1),
- (10314,'Tharaka-Nithi','41',1112,1),
- (10315,'Trans Nzoia','42',1112,1),
- (10316,'Turkana','43',1112,1),
- (10317,'Uasin Gishu','44',1112,1),
- (10318,'Vihiga','45',1112,1),
- (10319,'Wajir','46',1112,1),
- (10320,'West Pokot','47',1112,1),
- (10321,'Chandigarh','CH',1101,1),
- (10322,'Central','CP',1083,1),
- (10323,'Eastern','EP',1083,1),
- (10324,'Northern','NP',1083,1),
- (10325,'Western','WP',1083,1),
- (10326,'Saint Kitts','K',1181,1),
- (10327,'Nevis','N',1181,1),
- (10328,'Eastern','E',1190,1),
- (10329,'Northern','N',1190,1),
- (10330,'Southern','S',1190,1),
- (10331,'Dushanbe','DU',1209,1),
- (10332,'Nohiyahoi Tobei Jumhurí','RA',1209,1),
- (10333,'Wallis-et-Futuna','WF',1076,1),
- (10334,'Nouvelle-Calédonie','NC',1076,1),
- (10335,'Haute-Marne','52',1076,1),
- (10336,'Saint George','03',1009,1),
- (10337,'Saint John','04',1009,1),
- (10338,'Saint Mary','05',1009,1),
- (10339,'Saint Paul','06',1009,1),
- (10340,'Saint Peter','07',1009,1),
- (10341,'Saint Philip','08',1009,1),
- (10342,'Barbuda','10',1009,1),
- (10343,'Redonda','11',1009,1),
- (10344,'Christ Church','01',1018,1),
- (10345,'Saint Andrew','02',1018,1),
- (10346,'Saint George','03',1018,1),
- (10347,'Saint James','04',1018,1),
- (10348,'Saint John','05',1018,1),
- (10349,'Saint Joseph','06',1018,1),
- (10350,'Saint Lucy','07',1018,1),
- (10351,'Saint Michael','08',1018,1),
- (10352,'Saint Peter','09',1018,1),
- (10353,'Saint Philip','10',1018,1),
- (10354,'Saint Thomas','11',1018,1),
- (10355,'Estuaire','01',1080,1),
- (10356,'Haut-Ogooué','02',1080,1),
- (10357,'Moyen-Ogooué','03',1080,1),
- (10358,'Ngounié','04',1080,1),
- (10359,'Nyanga','05',1080,1),
- (10360,'Ogooué-Ivindo','06',1080,1),
- (10361,'Ogooué-Lolo','07',1080,1),
- (10362,'Ogooué-Maritime','08',1080,1),
- (10363,'Woleu-Ntem','09',1080,1),
- (10364,'Monmouthshire','MON',1226,1),
- (10365,'Antrim and Newtownabbey','ANN',1226,1),
- (10366,'Ards and North Down','AND',1226,1),
- (10367,'Armagh City, Banbridge and Craigavon','ABC',1226,1),
- (10368,'Belfast','BFS',1226,1),
- (10369,'Causeway Coast and Glens','CCG',1226,1),
- (10370,'Derry City and Strabane','DRS',1226,1),
- (10371,'Fermanagh and Omagh','FMO',1226,1),
- (10372,'Lisburn and Castlereagh','LBC',1226,1),
- (10373,'Mid and East Antrim','MEA',1226,1),
- (10374,'Mid Ulster','MUL',1226,1),
- (10375,'Newry, Mourne and Down','NMD',1226,1),
- (10376,'Bridgend','BGE',1226,1),
- (10377,'Caerphilly','CAY',1226,1),
- (10378,'Cardiff','CRF',1226,1),
- (10379,'Carmarthenshire','CMN',1226,1),
- (10380,'Ceredigion','CGN',1226,1),
- (10381,'Conwy','CWY',1226,1),
- (10382,'Denbighshire','DEN',1226,1),
- (10383,'Flintshire','FLN',1226,1),
- (10384,'Isle of Anglesey','AGY',1226,1),
- (10385,'Merthyr Tydfil','MTY',1226,1),
- (10386,'Neath Port Talbot','NTL',1226,1),
- (10387,'Newport','NWP',1226,1),
- (10388,'Pembrokeshire','PEM',1226,1),
- (10389,'Rhondda, Cynon, Taff','RCT',1226,1),
- (10390,'Swansea','SWA',1226,1),
- (10391,'Torfaen','TOF',1226,1),
- (10392,'Wrexham','WRX',1226,1),
- (10393,'Sejong','50',1115,1),
- (10394,'Dinagat Islands','DIN',1170,1),
- (10395,'Huila','HUI',1048,1),
- (10396,'Devonshire','DEV',1023,1),
- (10397,'Hamilton Parish','HAM',1023,1),
- (10398,'City of Hamilton','HA',1023,1),
- (10399,'Paget','PAG',1023,1),
- (10400,'Pembroke','PEM',1023,1),
- (10401,'Town of St. George','SG',1023,1),
- (10402,'Saint George\'s','SGE',1023,1),
- (10403,'Sandys','SAN',1023,1),
- (10404,'Smiths','SMI',1023,1),
- (10405,'Southampton','SOU',1023,1),
- (10406,'Warwick','WAR',1023,1),
- (10407,'Dādra and Nagar Haveli and Damān and Diu','DH',1101,1),
- (10408,'Ladākh','LA',1101,1),
- (10409,'Capellen','CA',1126,1),
- (10410,'Clervaux','CL',1126,1),
- (10411,'Echternach','EC',1126,1),
- (10412,'Esch-sur-Alzette','ES',1126,1),
- (10413,'Mersch','ME',1126,1),
- (10414,'Redange-sur-Attert','RD',1126,1),
- (10415,'Remich','RM',1126,1),
- (10416,'Vianden','VD',1126,1),
- (10417,'Wiltz','WI',1126,1);
+ (1051,'American Samoa','AS',1228,1),
+ (1052,'Guam','GU',1228,1),
+ (1053,'Northern Mariana Islands','MP',1228,1),
+ (1054,'Puerto Rico','PR',1228,1),
+ (1055,'Virgin Islands','VI',1228,1),
+ (1056,'United States Minor Outlying Islands','UM',1228,1),
+ (1057,'Armed Forces Europe','AE',1228,1),
+ (1058,'Armed Forces Americas','AA',1228,1),
+ (1059,'Armed Forces Pacific','AP',1228,1),
+ (1060,'Alberta','AB',1039,1),
+ (1061,'British Columbia','BC',1039,1),
+ (1062,'Manitoba','MB',1039,1),
+ (1063,'New Brunswick','NB',1039,1),
+ (1064,'Newfoundland and Labrador','NL',1039,1),
+ (1065,'Northwest Territories','NT',1039,1),
+ (1066,'Nova Scotia','NS',1039,1),
+ (1067,'Nunavut','NU',1039,1),
+ (1068,'Ontario','ON',1039,1),
+ (1069,'Prince Edward Island','PE',1039,1),
+ (1070,'Quebec','QC',1039,1),
+ (1071,'Saskatchewan','SK',1039,1),
+ (1072,'Yukon Territory','YT',1039,1),
+ (1073,'Maharashtra','MH',1101,1),
+ (1074,'Karnataka','KA',1101,1),
+ (1075,'Andhra Pradesh','AP',1101,1),
+ (1076,'Arunachal Pradesh','AR',1101,1),
+ (1077,'Assam','AS',1101,1),
+ (1078,'Bihar','BR',1101,1),
+ (1079,'Chhattisgarh','CG',1101,1),
+ (1080,'Goa','GA',1101,1),
+ (1081,'Gujarat','GJ',1101,1),
+ (1082,'Haryana','HR',1101,1),
+ (1083,'Himachal Pradesh','HP',1101,1),
+ (1084,'Jammu and Kashmir','JK',1101,1),
+ (1085,'Jharkhand','JH',1101,1),
+ (1086,'Kerala','KL',1101,1),
+ (1087,'Madhya Pradesh','MP',1101,1),
+ (1088,'Manipur','MN',1101,1),
+ (1089,'Meghalaya','ML',1101,1),
+ (1090,'Mizoram','MZ',1101,1),
+ (1091,'Nagaland','NL',1101,1),
+ (1092,'Orissa','OR',1101,1),
+ (1093,'Punjab','PB',1101,1),
+ (1094,'Rajasthan','RJ',1101,1),
+ (1095,'Sikkim','SK',1101,1),
+ (1096,'Tamil Nadu','TN',1101,1),
+ (1097,'Tripura','TR',1101,1),
+ (1098,'Uttarakhand','UT',1101,1),
+ (1099,'Uttar Pradesh','UP',1101,1),
+ (1100,'West Bengal','WB',1101,1),
+ (1101,'Andaman and Nicobar Islands','AN',1101,1),
+ (1102,'Delhi','DL',1101,1),
+ (1103,'Lakshadweep','LD',1101,1),
+ (1104,'Pondicherry','PY',1101,1),
+ (1105,'Telangana','TG',1101,1),
+ (1106,'Dādra and Nagar Haveli and Damān and Diu','DH',1101,1),
+ (1107,'Ladākh','LA',1101,1),
+ (1108,'Chandigarh','CH',1101,1),
+ (1109,'mazowieckie','MZ',1172,1),
+ (1110,'pomorskie','PM',1172,1),
+ (1111,'dolnośląskie','DS',1172,1),
+ (1112,'kujawsko-pomorskie','KP',1172,1),
+ (1113,'lubelskie','LU',1172,1),
+ (1114,'lubuskie','LB',1172,1),
+ (1115,'łódzkie','LD',1172,1),
+ (1116,'małopolskie','MA',1172,1),
+ (1117,'opolskie','OP',1172,1),
+ (1118,'podkarpackie','PK',1172,1),
+ (1119,'podlaskie','PD',1172,1),
+ (1120,'śląskie','SL',1172,1),
+ (1121,'świętokrzyskie','SK',1172,1),
+ (1122,'warmińsko-mazurskie','WN',1172,1),
+ (1123,'wielkopolskie','WP',1172,1),
+ (1124,'zachodniopomorskie','ZP',1172,1),
+ (1125,'Abu Zaby','AZ',1225,1),
+ (1126,'\'Ajman','AJ',1225,1),
+ (1127,'Al Fujayrah','FU',1225,1),
+ (1128,'Ash Shariqah','SH',1225,1),
+ (1129,'Dubayy','DU',1225,1),
+ (1130,'Ra\'s al Khaymah','RK',1225,1),
+ (1131,'Dac Lac','33',1233,1),
+ (1132,'Umm al Qaywayn','UQ',1225,1),
+ (1133,'Badakhshan','BDS',1001,1),
+ (1134,'Badghis','BDG',1001,1),
+ (1135,'Baghlan','BGL',1001,1),
+ (1136,'Balkh','BAL',1001,1),
+ (1137,'Bamian','BAM',1001,1),
+ (1138,'Farah','FRA',1001,1),
+ (1139,'Faryab','FYB',1001,1),
+ (1140,'Ghazni','GHA',1001,1),
+ (1141,'Ghowr','GHO',1001,1),
+ (1142,'Helmand','HEL',1001,1),
+ (1143,'Herat','HER',1001,1),
+ (1144,'Jowzjan','JOW',1001,1),
+ (1145,'Kabul','KAB',1001,1),
+ (1146,'Kandahar','KAN',1001,1),
+ (1147,'Kapisa','KAP',1001,1),
+ (1148,'Khowst','KHO',1001,1),
+ (1149,'Konar','KNR',1001,1),
+ (1150,'Kondoz','KDZ',1001,1),
+ (1151,'Laghman','LAG',1001,1),
+ (1152,'Lowgar','LOW',1001,1),
+ (1153,'Nangrahar','NAN',1001,1),
+ (1154,'Nimruz','NIM',1001,1),
+ (1155,'Nurestan','NUR',1001,1),
+ (1156,'Oruzgan','ORU',1001,1),
+ (1157,'Paktia','PIA',1001,1),
+ (1158,'Paktika','PKA',1001,1),
+ (1159,'Parwan','PAR',1001,1),
+ (1160,'Samangan','SAM',1001,1),
+ (1161,'Sar-e Pol','SAR',1001,1),
+ (1162,'Takhar','TAK',1001,1),
+ (1163,'Wardak','WAR',1001,1),
+ (1164,'Zabol','ZAB',1001,1),
+ (1165,'Berat','BR',1002,1),
+ (1166,'Bulqizë','BU',1002,1),
+ (1167,'Delvinë','DL',1002,1),
+ (1168,'Devoll','DV',1002,1),
+ (1169,'Dibër','DI',1002,1),
+ (1170,'Durrës','DR',1002,1),
+ (1171,'Elbasan','EL',1002,1),
+ (1172,'Fier','FR',1002,1),
+ (1173,'Gramsh','GR',1002,1),
+ (1174,'Gjirokastër','GJ',1002,1),
+ (1175,'Has','HA',1002,1),
+ (1176,'Kavajë','KA',1002,1),
+ (1177,'Kolonjë','ER',1002,1),
+ (1178,'Korçë','KO',1002,1),
+ (1179,'Krujë','KR',1002,1),
+ (1180,'Kuçovë','KC',1002,1),
+ (1181,'Kukës','KU',1002,1),
+ (1182,'Kurbin','KB',1002,1),
+ (1183,'Lezhë','LE',1002,1),
+ (1184,'Librazhd','LB',1002,1),
+ (1185,'Lushnjë','LU',1002,1),
+ (1186,'Malësi e Madhe','MM',1002,1),
+ (1187,'Mallakastër','MK',1002,1),
+ (1188,'Mat','MT',1002,1),
+ (1189,'Mirditë','MR',1002,1),
+ (1190,'Peqin','PQ',1002,1),
+ (1191,'Përmet','PR',1002,1),
+ (1192,'Pogradec','PG',1002,1),
+ (1193,'Pukë','PU',1002,1),
+ (1194,'Sarandë','SR',1002,1),
+ (1195,'Skrapar','SK',1002,1),
+ (1196,'Shkodër','SH',1002,1),
+ (1197,'Tepelenë','TE',1002,1),
+ (1198,'Tiranë','TR',1002,1),
+ (1199,'Tropojë','TP',1002,1),
+ (1200,'Vlorë','VL',1002,1),
+ (1201,'Erevan','ER',1011,1),
+ (1202,'Aragacotn','AG',1011,1),
+ (1203,'Ararat','AR',1011,1),
+ (1204,'Armavir','AV',1011,1),
+ (1205,'Gegarkunik\'','GR',1011,1),
+ (1206,'Kotayk\'','KT',1011,1),
+ (1207,'Lory','LO',1011,1),
+ (1208,'Sirak','SH',1011,1),
+ (1209,'Syunik\'','SU',1011,1),
+ (1210,'Tavus','TV',1011,1),
+ (1211,'Vayoc Jor','VD',1011,1),
+ (1212,'Andorra la Vella','07',1005,1),
+ (1213,'Canillo','02',1005,1),
+ (1214,'Encamp','03',1005,1),
+ (1215,'Escaldes-Engordany','08',1005,1),
+ (1216,'La Massana','04',1005,1),
+ (1217,'Ordino','05',1005,1),
+ (1218,'Sant Julia de Loria','06',1005,1),
+ (1219,'Bengo','BGO',1006,1),
+ (1220,'Benguela','BGU',1006,1),
+ (1221,'Bie','BIE',1006,1),
+ (1222,'Cabinda','CAB',1006,1),
+ (1223,'Cuando-Cubango','CCU',1006,1),
+ (1224,'Cuanza Norte','CNO',1006,1),
+ (1225,'Cuanza Sul','CUS',1006,1),
+ (1226,'Cunene','CNN',1006,1),
+ (1227,'Huambo','HUA',1006,1),
+ (1228,'Huila','HUI',1006,1),
+ (1229,'Luanda','LUA',1006,1),
+ (1230,'Lunda Norte','LNO',1006,1),
+ (1231,'Lunda Sul','LSU',1006,1),
+ (1232,'Malange','MAL',1006,1),
+ (1233,'Moxico','MOX',1006,1),
+ (1234,'Namibe','NAM',1006,1),
+ (1235,'Uige','UIG',1006,1),
+ (1236,'Zaire','ZAI',1006,1),
+ (1237,'Saint George','03',1009,1),
+ (1238,'Saint John','04',1009,1),
+ (1239,'Saint Mary','05',1009,1),
+ (1240,'Saint Paul','06',1009,1),
+ (1241,'Saint Peter','07',1009,1),
+ (1242,'Saint Philip','08',1009,1),
+ (1243,'Barbuda','10',1009,1),
+ (1244,'Redonda','11',1009,1),
+ (1245,'Capital federal','C',1010,1),
+ (1246,'Buenos Aires','B',1010,1),
+ (1247,'Catamarca','K',1010,1),
+ (1248,'Cordoba','X',1010,1),
+ (1249,'Corrientes','W',1010,1),
+ (1250,'Chaco','H',1010,1),
+ (1251,'Chubut','U',1010,1),
+ (1252,'Entre Rios','E',1010,1),
+ (1253,'Formosa','P',1010,1),
+ (1254,'Jujuy','Y',1010,1),
+ (1255,'La Pampa','L',1010,1),
+ (1256,'Mendoza','M',1010,1),
+ (1257,'Misiones','N',1010,1),
+ (1258,'Neuquen','Q',1010,1),
+ (1259,'Rio Negro','R',1010,1),
+ (1260,'Salta','A',1010,1),
+ (1261,'San Juan','J',1010,1),
+ (1262,'San Luis','D',1010,1),
+ (1263,'Santa Cruz','Z',1010,1),
+ (1264,'Santa Fe','S',1010,1),
+ (1265,'Santiago del Estero','G',1010,1),
+ (1266,'Tierra del Fuego','V',1010,1),
+ (1267,'Tucuman','T',1010,1),
+ (1268,'La Rioja','F',1010,1),
+ (1269,'Burgenland','1',1014,1),
+ (1270,'Kärnten','2',1014,1),
+ (1271,'Niederösterreich','3',1014,1),
+ (1272,'Oberösterreich','4',1014,1),
+ (1273,'Salzburg','5',1014,1),
+ (1274,'Steiermark','6',1014,1),
+ (1275,'Tirol','7',1014,1),
+ (1276,'Vorarlberg','8',1014,1),
+ (1277,'Wien','9',1014,1),
+ (1278,'Australian Antarctic Territory','AAT',1008,1),
+ (1279,'Australian Capital Territory','ACT',1013,1),
+ (1280,'Northern Territory','NT',1013,1),
+ (1281,'New South Wales','NSW',1013,1),
+ (1282,'Queensland','QLD',1013,1),
+ (1283,'South Australia','SA',1013,1),
+ (1284,'Tasmania','TAS',1013,1),
+ (1285,'Victoria','VIC',1013,1),
+ (1286,'Western Australia','WA',1013,1),
+ (1287,'Naxcivan','NX',1015,1),
+ (1288,'Ali Bayramli','AB',1015,1),
+ (1289,'Baki','BA',1015,1),
+ (1290,'Ganca','GA',1015,1),
+ (1291,'Lankaran','LA',1015,1),
+ (1292,'Mingacevir','MI',1015,1),
+ (1293,'Naftalan','NA',1015,1),
+ (1294,'Saki','SA',1015,1),
+ (1295,'Sumqayit','SM',1015,1),
+ (1296,'Susa','SS',1015,1),
+ (1297,'Xankandi','XA',1015,1),
+ (1298,'Yevlax','YE',1015,1),
+ (1299,'Abseron','ABS',1015,1),
+ (1300,'Agcabadi','AGC',1015,1),
+ (1301,'Agdam','AGM',1015,1),
+ (1302,'Agdas','AGS',1015,1),
+ (1303,'Agstafa','AGA',1015,1),
+ (1304,'Agsu','AGU',1015,1),
+ (1305,'Astara','AST',1015,1),
+ (1306,'Babak','BAB',1015,1),
+ (1307,'Balakan','BAL',1015,1),
+ (1308,'Barda','BAR',1015,1),
+ (1309,'Beylagan','BEY',1015,1),
+ (1310,'Bilasuvar','BIL',1015,1),
+ (1311,'Cabrayll','CAB',1015,1),
+ (1312,'Calilabad','CAL',1015,1),
+ (1313,'Culfa','CUL',1015,1),
+ (1314,'Daskasan','DAS',1015,1),
+ (1315,'Davaci','DAV',1015,1),
+ (1316,'Fuzuli','FUZ',1015,1),
+ (1317,'Gadabay','GAD',1015,1),
+ (1318,'Goranboy','GOR',1015,1),
+ (1319,'Goycay','GOY',1015,1),
+ (1320,'Haciqabul','HAC',1015,1),
+ (1321,'Imisli','IMI',1015,1),
+ (1322,'Ismayilli','ISM',1015,1),
+ (1323,'Kalbacar','KAL',1015,1),
+ (1324,'Kurdamir','KUR',1015,1),
+ (1325,'Lacin','LAC',1015,1),
+ (1326,'Lerik','LER',1015,1),
+ (1327,'Masalli','MAS',1015,1),
+ (1328,'Neftcala','NEF',1015,1),
+ (1329,'Oguz','OGU',1015,1),
+ (1330,'Ordubad','ORD',1015,1),
+ (1331,'Qabala','QAB',1015,1),
+ (1332,'Qax','QAX',1015,1),
+ (1333,'Qazax','QAZ',1015,1),
+ (1334,'Qobustan','QOB',1015,1),
+ (1335,'Quba','QBA',1015,1),
+ (1336,'Qubadli','QBI',1015,1),
+ (1337,'Qusar','QUS',1015,1),
+ (1338,'Saatli','SAT',1015,1),
+ (1339,'Sabirabad','SAB',1015,1),
+ (1340,'Sadarak','SAD',1015,1),
+ (1341,'Sahbuz','SAH',1015,1),
+ (1342,'Salyan','SAL',1015,1),
+ (1343,'Samaxi','SMI',1015,1),
+ (1344,'Samkir','SKR',1015,1),
+ (1345,'Samux','SMX',1015,1),
+ (1346,'Sarur','SAR',1015,1),
+ (1347,'Siyazan','SIY',1015,1),
+ (1348,'Tartar','TAR',1015,1),
+ (1349,'Tovuz','TOV',1015,1),
+ (1350,'Ucar','UCA',1015,1),
+ (1351,'Xacmaz','XAC',1015,1),
+ (1352,'Xanlar','XAN',1015,1),
+ (1353,'Xizi','XIZ',1015,1),
+ (1354,'Xocali','XCI',1015,1),
+ (1355,'Xocavand','XVD',1015,1),
+ (1356,'Yardimli','YAR',1015,1),
+ (1357,'Zangilan','ZAN',1015,1),
+ (1358,'Zaqatala','ZAQ',1015,1),
+ (1359,'Zardab','ZAR',1015,1),
+ (1360,'Federacija Bosna i Hercegovina','BIH',1026,1),
+ (1361,'Republika Srpska','SRP',1026,1),
+ (1362,'Bagerhat zila','05',1017,1),
+ (1363,'Bandarban zila','01',1017,1),
+ (1364,'Barguna zila','02',1017,1),
+ (1365,'Barisal zila','06',1017,1),
+ (1366,'Bhola zila','07',1017,1),
+ (1367,'Bogra zila','03',1017,1),
+ (1368,'Brahmanbaria zila','04',1017,1),
+ (1369,'Chandpur zila','09',1017,1),
+ (1370,'Chittagong zila','10',1017,1),
+ (1371,'Chuadanga zila','12',1017,1),
+ (1372,'Comilla zila','08',1017,1),
+ (1373,'Cox\'s Bazar zila','11',1017,1),
+ (1374,'Dhaka zila','13',1017,1),
+ (1375,'Dinajpur zila','14',1017,1),
+ (1376,'Faridpur zila','15',1017,1),
+ (1377,'Feni zila','16',1017,1),
+ (1378,'Gaibandha zila','19',1017,1),
+ (1379,'Gazipur zila','18',1017,1),
+ (1380,'Gopalganj zila','17',1017,1),
+ (1381,'Habiganj zila','20',1017,1),
+ (1382,'Jaipurhat zila','24',1017,1),
+ (1383,'Jamalpur zila','21',1017,1),
+ (1384,'Jessore zila','22',1017,1),
+ (1385,'Jhalakati zila','25',1017,1),
+ (1386,'Jhenaidah zila','23',1017,1),
+ (1387,'Khagrachari zila','29',1017,1),
+ (1388,'Khulna zila','27',1017,1),
+ (1389,'Kishorganj zila','26',1017,1),
+ (1390,'Kurigram zila','28',1017,1),
+ (1391,'Kushtia zila','30',1017,1),
+ (1392,'Lakshmipur zila','31',1017,1),
+ (1393,'Lalmonirhat zila','32',1017,1),
+ (1394,'Madaripur zila','36',1017,1),
+ (1395,'Magura zila','37',1017,1),
+ (1396,'Manikganj zila','33',1017,1),
+ (1397,'Meherpur zila','39',1017,1),
+ (1398,'Moulvibazar zila','38',1017,1),
+ (1399,'Munshiganj zila','35',1017,1),
+ (1400,'Mymensingh zila','34',1017,1),
+ (1401,'Naogaon zila','48',1017,1),
+ (1402,'Narail zila','43',1017,1),
+ (1403,'Narayanganj zila','40',1017,1),
+ (1404,'Narsingdi zila','42',1017,1),
+ (1405,'Natore zila','44',1017,1),
+ (1406,'Nawabganj zila','45',1017,1),
+ (1407,'Netrakona zila','41',1017,1),
+ (1408,'Nilphamari zila','46',1017,1),
+ (1409,'Noakhali zila','47',1017,1),
+ (1410,'Pabna zila','49',1017,1),
+ (1411,'Panchagarh zila','52',1017,1),
+ (1412,'Patuakhali zila','51',1017,1),
+ (1413,'Pirojpur zila','50',1017,1),
+ (1414,'Rajbari zila','53',1017,1),
+ (1415,'Rajshahi zila','54',1017,1),
+ (1416,'Rangamati zila','56',1017,1),
+ (1417,'Rangpur zila','55',1017,1),
+ (1418,'Satkhira zila','58',1017,1),
+ (1419,'Shariatpur zila','62',1017,1),
+ (1420,'Sherpur zila','57',1017,1),
+ (1421,'Sirajganj zila','59',1017,1),
+ (1422,'Sunamganj zila','61',1017,1),
+ (1423,'Sylhet zila','60',1017,1),
+ (1424,'Tangail zila','63',1017,1),
+ (1425,'Thakurgaon zila','64',1017,1),
+ (1426,'Christ Church','01',1018,1),
+ (1427,'Saint Andrew','02',1018,1),
+ (1428,'Saint George','03',1018,1),
+ (1429,'Saint James','04',1018,1),
+ (1430,'Saint John','05',1018,1),
+ (1431,'Saint Joseph','06',1018,1),
+ (1432,'Saint Lucy','07',1018,1),
+ (1433,'Saint Michael','08',1018,1),
+ (1434,'Saint Peter','09',1018,1),
+ (1435,'Saint Philip','10',1018,1),
+ (1436,'Saint Thomas','11',1018,1),
+ (1437,'Brussels','BRU',1020,1),
+ (1438,'Antwerpen','VAN',1020,1),
+ (1439,'Brabant Wallon','WBR',1020,1),
+ (1440,'Hainaut','WHT',1020,1),
+ (1441,'Liege','WLG',1020,1),
+ (1442,'Limburg','VLI',1020,1),
+ (1443,'Luxembourg','WLX',1020,1),
+ (1444,'Namur','WNA',1020,1),
+ (1445,'Oost-Vlaanderen','VOV',1020,1),
+ (1446,'Vlaams-Brabant','VBR',1020,1),
+ (1447,'West-Vlaanderen','VWV',1020,1),
+ (1448,'Devonshire','DEV',1023,1),
+ (1449,'Hamilton Parish','HAM',1023,1),
+ (1450,'City of Hamilton','HA',1023,1),
+ (1451,'Paget','PAG',1023,1),
+ (1452,'Pembroke','PEM',1023,1),
+ (1453,'Town of St. George','SG',1023,1),
+ (1454,'Saint George\'s','SGE',1023,1),
+ (1455,'Sandys','SAN',1023,1),
+ (1456,'Smiths','SMI',1023,1),
+ (1457,'Southampton','SOU',1023,1),
+ (1458,'Warwick','WAR',1023,1),
+ (1459,'Bale','BAL',1034,1),
+ (1460,'Bam','BAM',1034,1),
+ (1461,'Banwa','BAN',1034,1),
+ (1462,'Bazega','BAZ',1034,1),
+ (1463,'Bougouriba','BGR',1034,1),
+ (1464,'Boulgou','BLG',1034,1),
+ (1465,'Boulkiemde','BLK',1034,1),
+ (1466,'Comoe','COM',1034,1),
+ (1467,'Ganzourgou','GAN',1034,1),
+ (1468,'Gnagna','GNA',1034,1),
+ (1469,'Gourma','GOU',1034,1),
+ (1470,'Houet','HOU',1034,1),
+ (1471,'Ioba','IOB',1034,1),
+ (1472,'Kadiogo','KAD',1034,1),
+ (1473,'Kenedougou','KEN',1034,1),
+ (1474,'Komondjari','KMD',1034,1),
+ (1475,'Kompienga','KMP',1034,1),
+ (1476,'Kossi','KOS',1034,1),
+ (1477,'Koulpulogo','KOP',1034,1),
+ (1478,'Kouritenga','KOT',1034,1),
+ (1479,'Kourweogo','KOW',1034,1),
+ (1480,'Leraba','LER',1034,1),
+ (1481,'Loroum','LOR',1034,1),
+ (1482,'Mouhoun','MOU',1034,1),
+ (1483,'Nahouri','NAO',1034,1),
+ (1484,'Namentenga','NAM',1034,1),
+ (1485,'Nayala','NAY',1034,1),
+ (1486,'Noumbiel','NOU',1034,1),
+ (1487,'Oubritenga','OUB',1034,1),
+ (1488,'Oudalan','OUD',1034,1),
+ (1489,'Passore','PAS',1034,1),
+ (1490,'Poni','PON',1034,1),
+ (1491,'Sanguie','SNG',1034,1),
+ (1492,'Sanmatenga','SMT',1034,1),
+ (1493,'Seno','SEN',1034,1),
+ (1494,'Siasili','SIS',1034,1),
+ (1495,'Soum','SOM',1034,1),
+ (1496,'Sourou','SOR',1034,1),
+ (1497,'Tapoa','TAP',1034,1),
+ (1498,'Tui','TUI',1034,1),
+ (1499,'Yagha','YAG',1034,1),
+ (1500,'Yatenga','YAT',1034,1),
+ (1501,'Ziro','ZIR',1034,1),
+ (1502,'Zondoma','ZON',1034,1),
+ (1503,'Zoundweogo','ZOU',1034,1),
+ (1504,'Blagoevgrad','01',1033,1),
+ (1505,'Burgas','02',1033,1),
+ (1506,'Dobrich','08',1033,1),
+ (1507,'Gabrovo','07',1033,1),
+ (1508,'Haskovo','26',1033,1),
+ (1509,'Yambol','28',1033,1),
+ (1510,'Kardzhali','09',1033,1),
+ (1511,'Kyustendil','10',1033,1),
+ (1512,'Lovech','11',1033,1),
+ (1513,'Montana','12',1033,1),
+ (1514,'Pazardzhik','13',1033,1),
+ (1515,'Pernik','14',1033,1),
+ (1516,'Pleven','15',1033,1),
+ (1517,'Plovdiv','16',1033,1),
+ (1518,'Razgrad','17',1033,1),
+ (1519,'Ruse','18',1033,1),
+ (1520,'Silistra','19',1033,1),
+ (1521,'Sliven','20',1033,1),
+ (1522,'Smolyan','21',1033,1),
+ (1523,'Sofia','23',1033,1),
+ (1524,'Stara Zagora','24',1033,1),
+ (1525,'Shumen','27',1033,1),
+ (1526,'Targovishte','25',1033,1),
+ (1527,'Varna','03',1033,1),
+ (1528,'Veliko Tarnovo','04',1033,1),
+ (1529,'Vidin','05',1033,1),
+ (1530,'Vratsa','06',1033,1),
+ (1531,'Al Hadd','01',1016,1),
+ (1532,'Al Manamah','03',1016,1),
+ (1533,'Al Mintaqah al Gharbiyah','10',1016,1),
+ (1534,'Al Mintagah al Wusta','07',1016,1),
+ (1535,'Al Mintaqah ash Shamaliyah','05',1016,1),
+ (1536,'Al Muharraq','02',1016,1),
+ (1537,'Ar Rifa','09',1016,1),
+ (1538,'Jidd Hafs','04',1016,1),
+ (1539,'Madluat Jamad','12',1016,1),
+ (1540,'Madluat Isa','08',1016,1),
+ (1541,'Mintaqat Juzur tawar','11',1016,1),
+ (1542,'Sitrah','06',1016,1),
+ (1543,'Bubanza','BB',1036,1),
+ (1544,'Bujumbura','BJ',1036,1),
+ (1545,'Bururi','BR',1036,1),
+ (1546,'Cankuzo','CA',1036,1),
+ (1547,'Cibitoke','CI',1036,1),
+ (1548,'Gitega','GI',1036,1),
+ (1549,'Karuzi','KR',1036,1),
+ (1550,'Kayanza','KY',1036,1),
+ (1551,'Makamba','MA',1036,1),
+ (1552,'Muramvya','MU',1036,1),
+ (1553,'Mwaro','MW',1036,1),
+ (1554,'Ngozi','NG',1036,1),
+ (1555,'Rutana','RT',1036,1),
+ (1556,'Ruyigi','RY',1036,1),
+ (1557,'Alibori','AL',1022,1),
+ (1558,'Atakora','AK',1022,1),
+ (1559,'Atlantique','AQ',1022,1),
+ (1560,'Borgou','BO',1022,1),
+ (1561,'Collines','CO',1022,1),
+ (1562,'Donga','DO',1022,1),
+ (1563,'Kouffo','KO',1022,1),
+ (1564,'Littoral','LI',1022,1),
+ (1565,'Mono','MO',1022,1),
+ (1566,'Oueme','OU',1022,1),
+ (1567,'Plateau','PL',1022,1),
+ (1568,'Zou','ZO',1022,1),
+ (1569,'Belait','BE',1032,1),
+ (1570,'Brunei-Muara','BM',1032,1),
+ (1571,'Temburong','TE',1032,1),
+ (1572,'Tutong','TU',1032,1),
+ (1573,'Cochabamba','C',1025,1),
+ (1574,'Chuquisaca','H',1025,1),
+ (1575,'El Beni','B',1025,1),
+ (1576,'La Paz','L',1025,1),
+ (1577,'Oruro','O',1025,1),
+ (1578,'Pando','N',1025,1),
+ (1579,'Potosi','P',1025,1),
+ (1580,'Tarija','T',1025,1),
+ (1581,'Acre','AC',1029,1),
+ (1582,'Alagoas','AL',1029,1),
+ (1583,'Amazonas','AM',1029,1),
+ (1584,'Amapa','AP',1029,1),
+ (1585,'Bahia','BA',1029,1),
+ (1586,'Ceara','CE',1029,1),
+ (1587,'Distrito Federal','DF',1029,1),
+ (1588,'Espirito Santo','ES',1029,1),
+ (1589,'Goias','GO',1029,1),
+ (1590,'Maranhao','MA',1029,1),
+ (1591,'Minas Gerais','MG',1029,1),
+ (1592,'Mato Grosso do Sul','MS',1029,1),
+ (1593,'Mato Grosso','MT',1029,1),
+ (1594,'Para','PA',1029,1),
+ (1595,'Paraiba','PB',1029,1),
+ (1596,'Pernambuco','PE',1029,1),
+ (1597,'Piaui','PI',1029,1),
+ (1598,'Parana','PR',1029,1),
+ (1599,'Rio de Janeiro','RJ',1029,1),
+ (1600,'Rio Grande do Norte','RN',1029,1),
+ (1601,'Rondonia','RO',1029,1),
+ (1602,'Roraima','RR',1029,1),
+ (1603,'Rio Grande do Sul','RS',1029,1),
+ (1604,'Santa Catarina','SC',1029,1),
+ (1605,'Sergipe','SE',1029,1),
+ (1606,'Sao Paulo','SP',1029,1),
+ (1607,'Tocantins','TO',1029,1),
+ (1608,'Acklins and Crooked Islands','AC',1212,1),
+ (1609,'Bimini','BI',1212,1),
+ (1610,'Cat Island','CI',1212,1),
+ (1611,'Exuma','EX',1212,1),
+ (1612,'Inagua','IN',1212,1),
+ (1613,'Long Island','LI',1212,1),
+ (1614,'Mayaguana','MG',1212,1),
+ (1615,'New Providence','NP',1212,1),
+ (1616,'Ragged Island','RI',1212,1),
+ (1617,'Abaco Islands','AB',1212,1),
+ (1618,'Andros Island','AN',1212,1),
+ (1619,'Berry Islands','BR',1212,1),
+ (1620,'Eleuthera','EL',1212,1),
+ (1621,'Grand Bahama','GB',1212,1),
+ (1622,'Rum Cay','RC',1212,1),
+ (1623,'San Salvador Island','SS',1212,1),
+ (1624,'Bumthang','33',1024,1),
+ (1625,'Chhukha','12',1024,1),
+ (1626,'Dagana','22',1024,1),
+ (1627,'Gasa','GA',1024,1),
+ (1628,'Ha','13',1024,1),
+ (1629,'Lhuentse','44',1024,1),
+ (1630,'Monggar','42',1024,1),
+ (1631,'Paro','11',1024,1),
+ (1632,'Pemagatshel','43',1024,1),
+ (1633,'Punakha','23',1024,1),
+ (1634,'Samdrup Jongkha','45',1024,1),
+ (1635,'Samtee','14',1024,1),
+ (1636,'Sarpang','31',1024,1),
+ (1637,'Thimphu','15',1024,1),
+ (1638,'Trashigang','41',1024,1),
+ (1639,'Trashi Yangtse','TY',1024,1),
+ (1640,'Trongsa','32',1024,1),
+ (1641,'Tsirang','21',1024,1),
+ (1642,'Wangdue Phodrang','24',1024,1),
+ (1643,'Zhemgang','34',1024,1),
+ (1644,'Central','CE',1027,1),
+ (1645,'Ghanzi','GH',1027,1),
+ (1646,'Kgalagadi','KG',1027,1),
+ (1647,'Kgatleng','KL',1027,1),
+ (1648,'Kweneng','KW',1027,1),
+ (1649,'Ngamiland','NG',1027,1),
+ (1650,'North-East','NE',1027,1),
+ (1651,'North-West','NW',1027,1),
+ (1652,'South-East','SE',1027,1),
+ (1653,'Southern','SO',1027,1),
+ (1654,'Brèsckaja voblasc\'','BR',1019,1),
+ (1655,'Homel\'skaja voblasc\'','HO',1019,1),
+ (1656,'Hrodzenskaja voblasc\'','HR',1019,1),
+ (1657,'Mahilëuskaja voblasc\'','MA',1019,1),
+ (1658,'Minskaja voblasc\'','MI',1019,1),
+ (1659,'Vicebskaja voblasc\'','VI',1019,1),
+ (1660,'Belize','BZ',1021,1),
+ (1661,'Cayo','CY',1021,1),
+ (1662,'Corozal','CZL',1021,1),
+ (1663,'Orange Walk','OW',1021,1),
+ (1664,'Stann Creek','SC',1021,1),
+ (1665,'Toledo','TOL',1021,1),
+ (1666,'Kinshasa','KN',1050,1),
+ (1667,'Equateur','EQ',1050,1),
+ (1668,'Kasai-Oriental','KE',1050,1),
+ (1669,'Maniema','MA',1050,1),
+ (1670,'Nord-Kivu','NK',1050,1),
+ (1671,'Sud-Kivu','SK',1050,1),
+ (1672,'Bangui','BGF',1042,1),
+ (1673,'Bamingui-Bangoran','BB',1042,1),
+ (1674,'Basse-Kotto','BK',1042,1),
+ (1675,'Haute-Kotto','HK',1042,1),
+ (1676,'Haut-Mbomou','HM',1042,1),
+ (1677,'Kemo','KG',1042,1),
+ (1678,'Lobaye','LB',1042,1),
+ (1679,'Mambere-Kadei','HS',1042,1),
+ (1680,'Mbomou','MB',1042,1),
+ (1681,'Nana-Grebizi','KB',1042,1),
+ (1682,'Nana-Mambere','NM',1042,1),
+ (1683,'Ombella-Mpoko','MP',1042,1),
+ (1684,'Ouaka','UK',1042,1),
+ (1685,'Ouham','AC',1042,1),
+ (1686,'Ouham-Pende','OP',1042,1),
+ (1687,'Sangha-Mbaere','SE',1042,1),
+ (1688,'Vakaga','VR',1042,1),
+ (1689,'Kongo central','01',1050,1),
+ (1690,'Kwango','02',1050,1),
+ (1691,'Kwilu','03',1050,1),
+ (1692,'Mai-Ndombe','04',1050,1),
+ (1693,'Kasai','05',1050,1),
+ (1694,'Lulua','06',1050,1),
+ (1695,'Lomami','07',1050,1),
+ (1696,'Sankuru','08',1050,1),
+ (1697,'Ituri','09',1050,1),
+ (1698,'Haut-Uele','10',1050,1),
+ (1699,'Tshopo','11',1050,1),
+ (1700,'Bas-Uele','12',1050,1),
+ (1701,'Nord-Ubangi','13',1050,1),
+ (1702,'Mongala','14',1050,1),
+ (1703,'Sud-Ubangi','15',1050,1),
+ (1704,'Tshuapa','16',1050,1),
+ (1705,'Haut-Lomami','17',1050,1),
+ (1706,'Lualaba','18',1050,1),
+ (1707,'Haut-Katanga','19',1050,1),
+ (1708,'Tanganyika','20',1050,1),
+ (1709,'Brazzaville','BZV',1051,1),
+ (1710,'Bouenza','11',1051,1),
+ (1711,'Cuvette','8',1051,1),
+ (1712,'Cuvette-Ouest','15',1051,1),
+ (1713,'Kouilou','5',1051,1),
+ (1714,'Lekoumou','2',1051,1),
+ (1715,'Likouala','7',1051,1),
+ (1716,'Niari','9',1051,1),
+ (1717,'Plateaux','14',1051,1),
+ (1718,'Pool','12',1051,1),
+ (1719,'Sangha','13',1051,1),
+ (1720,'Estuaire','01',1080,1),
+ (1721,'Haut-Ogooué','02',1080,1),
+ (1722,'Moyen-Ogooué','03',1080,1),
+ (1723,'Ngounié','04',1080,1),
+ (1724,'Nyanga','05',1080,1),
+ (1725,'Ogooué-Ivindo','06',1080,1),
+ (1726,'Ogooué-Lolo','07',1080,1),
+ (1727,'Ogooué-Maritime','08',1080,1),
+ (1728,'Woleu-Ntem','09',1080,1),
+ (1729,'Aargau','AG',1205,1),
+ (1730,'Appenzell Innerrhoden','AI',1205,1),
+ (1731,'Appenzell Ausserrhoden','AR',1205,1),
+ (1732,'Bern','BE',1205,1),
+ (1733,'Basel-Landschaft','BL',1205,1),
+ (1734,'Basel-Stadt','BS',1205,1),
+ (1735,'Fribourg','FR',1205,1),
+ (1736,'Geneva','GE',1205,1),
+ (1737,'Glarus','GL',1205,1),
+ (1738,'Graubunden','GR',1205,1),
+ (1739,'Jura','JU',1205,1),
+ (1740,'Luzern','LU',1205,1),
+ (1741,'Neuchatel','NE',1205,1),
+ (1742,'Nidwalden','NW',1205,1),
+ (1743,'Obwalden','OW',1205,1),
+ (1744,'Sankt Gallen','SG',1205,1),
+ (1745,'Schaffhausen','SH',1205,1),
+ (1746,'Solothurn','SO',1205,1),
+ (1747,'Schwyz','SZ',1205,1),
+ (1748,'Thurgau','TG',1205,1),
+ (1749,'Ticino','TI',1205,1),
+ (1750,'Uri','UR',1205,1),
+ (1751,'Vaud','VD',1205,1),
+ (1752,'Valais','VS',1205,1),
+ (1753,'Zug','ZG',1205,1),
+ (1754,'Zurich','ZH',1205,1),
+ (1755,'18 Montagnes','06',1054,1),
+ (1756,'Agnebi','16',1054,1),
+ (1757,'Bas-Sassandra','09',1054,1),
+ (1758,'Denguele','10',1054,1),
+ (1759,'Haut-Sassandra','02',1054,1),
+ (1760,'Lacs','07',1054,1),
+ (1761,'Lagunes','01',1054,1),
+ (1762,'Marahoue','12',1054,1),
+ (1763,'Moyen-Comoe','05',1054,1),
+ (1764,'Nzi-Comoe','11',1054,1),
+ (1765,'Savanes','03',1054,1),
+ (1766,'Sud-Bandama','15',1054,1),
+ (1767,'Sud-Comoe','13',1054,1),
+ (1768,'Vallee du Bandama','04',1054,1),
+ (1769,'Worodouqou','14',1054,1),
+ (1770,'Zanzan','08',1054,1),
+ (1771,'Aisen del General Carlos Ibanez del Campo','AI',1044,1),
+ (1772,'Antofagasta','AN',1044,1),
+ (1773,'Araucania','AR',1044,1),
+ (1774,'Atacama','AT',1044,1),
+ (1775,'Bio-Bio','BI',1044,1),
+ (1776,'Coquimbo','CO',1044,1),
+ (1777,'Libertador General Bernardo O\'Higgins','LI',1044,1),
+ (1778,'Los Lagos','LL',1044,1),
+ (1779,'Magallanes','MA',1044,1),
+ (1780,'Maule','ML',1044,1),
+ (1781,'Santiago Metropolitan','SM',1044,1),
+ (1782,'Tarapaca','TA',1044,1),
+ (1783,'Valparaiso','VS',1044,1),
+ (1784,'Los Rios','LR',1044,1),
+ (1785,'Arica y Parinacota','AP',1044,1),
+ (1786,'Adamaoua','AD',1038,1),
+ (1787,'Centre','CE',1038,1),
+ (1788,'East','ES',1038,1),
+ (1789,'Far North','EN',1038,1),
+ (1790,'North','NO',1038,1),
+ (1791,'South','SW',1038,1),
+ (1792,'South-West','SW',1038,1),
+ (1793,'West','OU',1038,1),
+ (1794,'Littoral','LT',1038,1),
+ (1795,'Nord-Ouest','NW',1038,1),
+ (1796,'Beijing','11',1045,1),
+ (1797,'Chongqing','50',1045,1),
+ (1798,'Shanghai','31',1045,1),
+ (1799,'Tianjin','12',1045,1),
+ (1800,'Anhui','34',1045,1),
+ (1801,'Fujian','35',1045,1),
+ (1802,'Gansu','62',1045,1),
+ (1803,'Guangdong','44',1045,1),
+ (1804,'Guizhou','52',1045,1),
+ (1805,'Hainan','46',1045,1),
+ (1806,'Hebei','13',1045,1),
+ (1807,'Heilongjiang','23',1045,1),
+ (1808,'Henan','41',1045,1),
+ (1809,'Hubei','42',1045,1),
+ (1810,'Hunan','43',1045,1),
+ (1811,'Jiangsu','32',1045,1),
+ (1812,'Jiangxi','36',1045,1),
+ (1813,'Jilin','22',1045,1),
+ (1814,'Liaoning','21',1045,1),
+ (1815,'Qinghai','63',1045,1),
+ (1816,'Shaanxi','61',1045,1),
+ (1817,'Shandong','37',1045,1),
+ (1818,'Shanxi','14',1045,1),
+ (1819,'Sichuan','51',1045,1),
+ (1820,'Taiwan','71',1045,1),
+ (1821,'Yunnan','53',1045,1),
+ (1822,'Zhejiang','33',1045,1),
+ (1823,'Guangxi','45',1045,1),
+ (1824,'Neia Mongol (mn)','15',1045,1),
+ (1825,'Xinjiang','65',1045,1),
+ (1826,'Xizang','54',1045,1),
+ (1827,'Hong Kong','91',1045,1),
+ (1828,'Macau','92',1045,1),
+ (1829,'Yinchuan','YN',1045,1),
+ (1830,'Shizuishan','SZ',1045,1),
+ (1831,'Wuzhong','WZ',1045,1),
+ (1832,'Guyuan','GY',1045,1),
+ (1833,'Zhongwei','ZW',1045,1),
+ (1834,'Distrito Capital de Bogotá','DC',1048,1),
+ (1835,'Amazonea','AMA',1048,1),
+ (1836,'Antioquia','ANT',1048,1),
+ (1837,'Arauca','ARA',1048,1),
+ (1838,'Atlántico','ATL',1048,1),
+ (1839,'Bolívar','BOL',1048,1),
+ (1840,'Boyacá','BOY',1048,1),
+ (1841,'Caldea','CAL',1048,1),
+ (1842,'Caquetá','CAQ',1048,1),
+ (1843,'Casanare','CAS',1048,1),
+ (1844,'Cauca','CAU',1048,1),
+ (1845,'Cesar','CES',1048,1),
+ (1846,'Córdoba','COR',1048,1),
+ (1847,'Cundinamarca','CUN',1048,1),
+ (1848,'Chocó','CHO',1048,1),
+ (1849,'Guainía','GUA',1048,1),
+ (1850,'Guaviare','GUV',1048,1),
+ (1851,'La Guajira','LAG',1048,1),
+ (1852,'Magdalena','MAG',1048,1),
+ (1853,'Meta','MET',1048,1),
+ (1854,'Nariño','NAR',1048,1),
+ (1855,'Norte de Santander','NSA',1048,1),
+ (1856,'Putumayo','PUT',1048,1),
+ (1857,'Quindio','QUI',1048,1),
+ (1858,'Risaralda','RIS',1048,1),
+ (1859,'San Andrés, Providencia y Santa Catalina','SAP',1048,1),
+ (1860,'Santander','SAN',1048,1),
+ (1861,'Sucre','SUC',1048,1),
+ (1862,'Tolima','TOL',1048,1),
+ (1863,'Valle del Cauca','VAC',1048,1),
+ (1864,'Vaupés','VAU',1048,1),
+ (1865,'Vichada','VID',1048,1),
+ (1866,'Huila','HUI',1048,1),
+ (1867,'Alajuela','A',1053,1),
+ (1868,'Cartago','C',1053,1),
+ (1869,'Guanacaste','G',1053,1),
+ (1870,'Heredia','H',1053,1),
+ (1871,'Limon','L',1053,1),
+ (1872,'Puntarenas','P',1053,1),
+ (1873,'San Jose','SJ',1053,1),
+ (1874,'Camagey','09',1056,1),
+ (1875,'Ciego de `vila','08',1056,1),
+ (1876,'Cienfuegos','06',1056,1),
+ (1877,'Ciudad de La Habana','03',1056,1),
+ (1878,'Granma','12',1056,1),
+ (1879,'Guantanamo','14',1056,1),
+ (1880,'Holquin','11',1056,1),
+ (1881,'La Habana','02',1056,1),
+ (1882,'Las Tunas','10',1056,1),
+ (1883,'Matanzas','04',1056,1),
+ (1884,'Pinar del Rio','01',1056,1),
+ (1885,'Sancti Spiritus','07',1056,1),
+ (1886,'Santiago de Cuba','13',1056,1),
+ (1887,'Villa Clara','05',1056,1),
+ (1888,'Isla de la Juventud','99',1056,1),
+ (1889,'Pinar del Roo','PR',1056,1),
+ (1890,'Ciego de Avila','CA',1056,1),
+ (1891,'Camagoey','CG',1056,1),
+ (1892,'Holgun','HO',1056,1),
+ (1893,'Sancti Spritus','SS',1056,1),
+ (1894,'Municipio Especial Isla de la Juventud','IJ',1056,1),
+ (1895,'Boa Vista','BV',1040,1),
+ (1896,'Brava','BR',1040,1),
+ (1897,'Calheta de Sao Miguel','CS',1040,1),
+ (1898,'Fogo','FO',1040,1),
+ (1899,'Maio','MA',1040,1),
+ (1900,'Mosteiros','MO',1040,1),
+ (1901,'Paul','PA',1040,1),
+ (1902,'Porto Novo','PN',1040,1),
+ (1903,'Praia','PR',1040,1),
+ (1904,'Ribeira Grande','RG',1040,1),
+ (1905,'Sal','SL',1040,1),
+ (1906,'Sao Domingos','SD',1040,1),
+ (1907,'Sao Filipe','SF',1040,1),
+ (1908,'Sao Nicolau','SN',1040,1),
+ (1909,'Sao Vicente','SV',1040,1),
+ (1910,'Tarrafal','TA',1040,1),
+ (1911,'Ammochostos Magusa','04',1057,1),
+ (1912,'Keryneia','06',1057,1),
+ (1913,'Larnaka','03',1057,1),
+ (1914,'Lefkosia','01',1057,1),
+ (1915,'Lemesos','02',1057,1),
+ (1916,'Pafos','05',1057,1),
+ (1917,'Jihočeský kraj','JC',1058,1),
+ (1918,'Jihomoravský kraj','JM',1058,1),
+ (1919,'Karlovarský kraj','KA',1058,1),
+ (1920,'Královéhradecký kraj','KR',1058,1),
+ (1921,'Liberecký kraj','LI',1058,1),
+ (1922,'Moravskoslezský kraj','MO',1058,1),
+ (1923,'Olomoucký kraj','OL',1058,1),
+ (1924,'Pardubický kraj','PA',1058,1),
+ (1925,'Plzeňský kraj','PL',1058,1),
+ (1926,'Praha, hlavní město','PR',1058,1),
+ (1927,'Středočeský kraj','ST',1058,1),
+ (1928,'Ústecký kraj','US',1058,1),
+ (1929,'Vysočina','VY',1058,1),
+ (1930,'Zlínský kraj','ZL',1058,1),
+ (1931,'Abkhazia','AB',1081,1),
+ (1932,'Adjara','AJ',1081,1),
+ (1933,'Tbilisi','TB',1081,1),
+ (1934,'Guria','GU',1081,1),
+ (1935,'Imereti','IM',1081,1),
+ (1936,'Kakheti','KA',1081,1),
+ (1937,'Kvemo Kartli','KK',1081,1),
+ (1938,'Mtskheta-Mtianeti','MM',1081,1),
+ (1939,'Racha-Lechkhumi and Kvemo Svaneti','RL',1081,1),
+ (1940,'Samegrelo-Zemo Svaneti','SZ',1081,1),
+ (1941,'Samtskhe-Javakheti','SJ',1081,1),
+ (1942,'Shida Kartli','SK',1081,1),
+ (1943,'Baden-Württemberg','BW',1082,1),
+ (1944,'Bayern','BY',1082,1),
+ (1945,'Bremen','HB',1082,1),
+ (1946,'Hamburg','HH',1082,1),
+ (1947,'Hessen','HE',1082,1),
+ (1948,'Niedersachsen','NI',1082,1),
+ (1949,'Nordrhein-Westfalen','NW',1082,1),
+ (1950,'Rheinland-Pfalz','RP',1082,1),
+ (1951,'Saarland','SL',1082,1),
+ (1952,'Schleswig-Holstein','SH',1082,1),
+ (1953,'Berlin','BE',1082,1),
+ (1954,'Brandenburg','BB',1082,1),
+ (1955,'Mecklenburg-Vorpommern','MV',1082,1),
+ (1956,'Sachsen','SN',1082,1),
+ (1957,'Sachsen-Anhalt','ST',1082,1),
+ (1958,'Thüringen','TH',1082,1),
+ (1959,'Ali Sabiah','AS',1060,1),
+ (1960,'Dikhil','DI',1060,1),
+ (1961,'Djibouti','DJ',1060,1),
+ (1962,'Obock','OB',1060,1),
+ (1963,'Tadjoura','TA',1060,1),
+ (1964,'Frederiksberg','147',1059,1),
+ (1965,'Copenhagen City','101',1059,1),
+ (1966,'Copenhagen','015',1059,1),
+ (1967,'Frederiksborg','020',1059,1),
+ (1968,'Roskilde','025',1059,1),
+ (1969,'Vestsjælland','030',1059,1),
+ (1970,'Storstrøm','035',1059,1),
+ (1971,'Bornholm','040',1059,1),
+ (1972,'Fyn','042',1059,1),
+ (1973,'South Jutland','050',1059,1),
+ (1974,'Ribe','055',1059,1),
+ (1975,'Vejle','060',1059,1),
+ (1976,'Ringkjøbing','065',1059,1),
+ (1977,'Ã…rhus','070',1059,1),
+ (1978,'Viborg','076',1059,1),
+ (1979,'North Jutland','080',1059,1),
+ (1980,'Distrito Nacional (Santo Domingo)','01',1062,1),
+ (1981,'Azua','02',1062,1),
+ (1982,'Bahoruco','03',1062,1),
+ (1983,'Barahona','04',1062,1),
+ (1984,'Dajabón','05',1062,1),
+ (1985,'Duarte','06',1062,1),
+ (1986,'El Seybo [El Seibo]','08',1062,1),
+ (1987,'Espaillat','09',1062,1),
+ (1988,'Hato Mayor','30',1062,1),
+ (1989,'Independencia','10',1062,1),
+ (1990,'La Altagracia','11',1062,1),
+ (1991,'La Estrelleta [Elias Pina]','07',1062,1),
+ (1992,'La Romana','12',1062,1),
+ (1993,'La Vega','13',1062,1),
+ (1994,'Maroia Trinidad Sánchez','14',1062,1),
+ (1995,'Monseñor Nouel','28',1062,1),
+ (1996,'Monte Cristi','15',1062,1),
+ (1997,'Monte Plata','29',1062,1),
+ (1998,'Pedernales','16',1062,1),
+ (1999,'Peravia','17',1062,1),
+ (2000,'Puerto Plata','18',1062,1),
+ (2001,'Salcedo','19',1062,1),
+ (2002,'Samaná','20',1062,1),
+ (2003,'San Cristóbal','21',1062,1),
+ (2004,'San Pedro de Macorís','23',1062,1),
+ (2005,'Sánchez Ramírez','24',1062,1),
+ (2006,'Santiago','25',1062,1),
+ (2007,'Santiago Rodríguez','26',1062,1),
+ (2008,'Valverde','27',1062,1),
+ (2009,'Adrar','01',1003,1),
+ (2010,'Ain Defla','44',1003,1),
+ (2011,'Ain Tmouchent','46',1003,1),
+ (2012,'Alger','16',1003,1),
+ (2013,'Annaba','23',1003,1),
+ (2014,'Batna','05',1003,1),
+ (2015,'Bechar','08',1003,1),
+ (2016,'Bejaia','06',1003,1),
+ (2017,'Biskra','07',1003,1),
+ (2018,'Blida','09',1003,1),
+ (2019,'Bordj Bou Arreridj','34',1003,1),
+ (2020,'Bouira','10',1003,1),
+ (2021,'Boumerdes','35',1003,1),
+ (2022,'Chlef','02',1003,1),
+ (2023,'Constantine','25',1003,1),
+ (2024,'Djelfa','17',1003,1),
+ (2025,'El Bayadh','32',1003,1),
+ (2026,'El Oued','39',1003,1),
+ (2027,'El Tarf','36',1003,1),
+ (2028,'Ghardaia','47',1003,1),
+ (2029,'Guelma','24',1003,1),
+ (2030,'Illizi','33',1003,1),
+ (2031,'Jijel','18',1003,1),
+ (2032,'Khenchela','40',1003,1),
+ (2033,'Laghouat','03',1003,1),
+ (2034,'Mascara','29',1003,1),
+ (2035,'Medea','26',1003,1),
+ (2036,'Mila','43',1003,1),
+ (2037,'Mostaganem','27',1003,1),
+ (2038,'Msila','28',1003,1),
+ (2039,'Naama','45',1003,1),
+ (2040,'Oran','31',1003,1),
+ (2041,'Ouargla','30',1003,1),
+ (2042,'Oum el Bouaghi','04',1003,1),
+ (2043,'Relizane','48',1003,1),
+ (2044,'Saida','20',1003,1),
+ (2045,'Setif','19',1003,1),
+ (2046,'Sidi Bel Abbes','22',1003,1),
+ (2047,'Skikda','21',1003,1),
+ (2048,'Souk Ahras','41',1003,1),
+ (2049,'Tamanghasset','11',1003,1),
+ (2050,'Tebessa','12',1003,1),
+ (2051,'Tiaret','14',1003,1),
+ (2052,'Tindouf','37',1003,1),
+ (2053,'Tipaza','42',1003,1),
+ (2054,'Tissemsilt','38',1003,1),
+ (2055,'Tizi Ouzou','15',1003,1),
+ (2056,'Tlemcen','13',1003,1),
+ (2057,'Azuay','A',1064,1),
+ (2058,'Bolivar','B',1064,1),
+ (2059,'Canar','F',1064,1),
+ (2060,'Carchi','C',1064,1),
+ (2061,'Cotopaxi','X',1064,1),
+ (2062,'Chimborazo','H',1064,1),
+ (2063,'El Oro','O',1064,1),
+ (2064,'Esmeraldas','E',1064,1),
+ (2065,'Galapagos','W',1064,1),
+ (2066,'Guayas','G',1064,1),
+ (2067,'Imbabura','I',1064,1),
+ (2068,'Loja','L',1064,1),
+ (2069,'Los Rios','R',1064,1),
+ (2070,'Manabi','M',1064,1),
+ (2071,'Morona-Santiago','S',1064,1),
+ (2072,'Napo','N',1064,1),
+ (2073,'Orellana','D',1064,1),
+ (2074,'Pastaza','Y',1064,1),
+ (2075,'Pichincha','P',1064,1),
+ (2076,'Sucumbios','U',1064,1),
+ (2077,'Tungurahua','T',1064,1),
+ (2078,'Zamora-Chinchipe','Z',1064,1),
+ (2079,'Harjumaa','37',1069,1),
+ (2080,'Hiiumaa','39',1069,1),
+ (2081,'Ida-Virumaa','44',1069,1),
+ (2082,'Jõgevamaa','49',1069,1),
+ (2083,'Järvamaa','51',1069,1),
+ (2084,'Läänemaa','57',1069,1),
+ (2085,'Lääne-Virumaa','59',1069,1),
+ (2086,'Põlvamaa','65',1069,1),
+ (2087,'Pärnumaa','67',1069,1),
+ (2088,'Raplamaa','70',1069,1),
+ (2089,'Saaremaa','74',1069,1),
+ (2090,'Tartumaa','7B',1069,1),
+ (2091,'Valgamaa','82',1069,1),
+ (2092,'Viljandimaa','84',1069,1),
+ (2093,'Võrumaa','86',1069,1),
+ (2094,'Ad Daqahllyah','DK',1065,1),
+ (2095,'Al Bahr al Ahmar','BA',1065,1),
+ (2096,'Al Buhayrah','BH',1065,1),
+ (2097,'Al Fayym','FYM',1065,1),
+ (2098,'Al Gharbiyah','GH',1065,1),
+ (2099,'Al Iskandarlyah','ALX',1065,1),
+ (2100,'Al Isma illyah','IS',1065,1),
+ (2101,'Al Jizah','GZ',1065,1),
+ (2102,'Al Minuflyah','MNF',1065,1),
+ (2103,'Al Minya','MN',1065,1),
+ (2104,'Al Qahirah','C',1065,1),
+ (2105,'Al Qalyublyah','KB',1065,1),
+ (2106,'Al Wadi al Jadid','WAD',1065,1),
+ (2107,'Ash Sharqiyah','SHR',1065,1),
+ (2108,'As Suways','SUZ',1065,1),
+ (2109,'Aswan','ASN',1065,1),
+ (2110,'Asyut','AST',1065,1),
+ (2111,'Bani Suwayf','BNS',1065,1),
+ (2112,'Bur Sa\'id','PTS',1065,1),
+ (2113,'Dumyat','DT',1065,1),
+ (2114,'Janub Sina\'','JS',1065,1),
+ (2115,'Kafr ash Shaykh','KFS',1065,1),
+ (2116,'Matruh','MT',1065,1),
+ (2117,'Qina','KN',1065,1),
+ (2118,'Shamal Sina\'','SIN',1065,1),
+ (2119,'Suhaj','SHG',1065,1),
+ (2120,'Anseba','AN',1068,1),
+ (2121,'Debub','DU',1068,1),
+ (2122,'Debubawi Keyih Bahri [Debub-Keih-Bahri]','DK',1068,1),
+ (2123,'Gash-Barka','GB',1068,1),
+ (2124,'Maakel [Maekel]','MA',1068,1),
+ (2125,'Semenawi Keyih Bahri [Semien-Keih-Bahri]','SK',1068,1),
+ (2126,'Álava','VI',1198,1),
+ (2127,'Albacete','AB',1198,1),
+ (2128,'Alicante','A',1198,1),
+ (2129,'Almería','AL',1198,1),
+ (2130,'Asturias','O',1198,1),
+ (2131,'Ávila','AV',1198,1),
+ (2132,'Badajoz','BA',1198,1),
+ (2133,'Baleares','PM',1198,1),
+ (2134,'Barcelona','B',1198,1),
+ (2135,'Burgos','BU',1198,1),
+ (2136,'Cáceres','CC',1198,1),
+ (2137,'Cádiz','CA',1198,1),
+ (2138,'Cantabria','S',1198,1),
+ (2139,'Castellón','CS',1198,1),
+ (2140,'Ciudad Real','CR',1198,1),
+ (2141,'Cuenca','CU',1198,1),
+ (2142,'Girona [Gerona]','GE',1198,1),
+ (2143,'Granada','GR',1198,1),
+ (2144,'Guadalajara','GU',1198,1),
+ (2145,'Guipúzcoa','SS',1198,1),
+ (2146,'Huelva','H',1198,1),
+ (2147,'Huesca','HU',1198,1),
+ (2148,'Jaén','J',1198,1),
+ (2149,'La Coruña','C',1198,1),
+ (2150,'La Rioja','LO',1198,1),
+ (2151,'Las Palmas','GC',1198,1),
+ (2152,'León','LE',1198,1),
+ (2153,'Lleida [Lérida]','L',1198,1),
+ (2154,'Lugo','LU',1198,1),
+ (2155,'Madrid','M',1198,1),
+ (2156,'Málaga','MA',1198,1),
+ (2157,'Murcia','MU',1198,1),
+ (2158,'Navarra','NA',1198,1),
+ (2159,'Ourense','OR',1198,1),
+ (2160,'Palencia','P',1198,1),
+ (2161,'Pontevedra','PO',1198,1),
+ (2162,'Salamanca','SA',1198,1),
+ (2163,'Santa Cruz de Tenerife','TF',1198,1),
+ (2164,'Segovia','SG',1198,1),
+ (2165,'Sevilla','SE',1198,1),
+ (2166,'Soria','SO',1198,1),
+ (2167,'Tarragona','T',1198,1),
+ (2168,'Teruel','TE',1198,1),
+ (2169,'Valencia','V',1198,1),
+ (2170,'Valladolid','VA',1198,1),
+ (2171,'Vizcaya','BI',1198,1),
+ (2172,'Zamora','ZA',1198,1),
+ (2173,'Zaragoza','Z',1198,1),
+ (2174,'Ceuta','CE',1198,1),
+ (2175,'Melilla','ML',1198,1),
+ (2176,'Toledo','TO',1198,1),
+ (2177,'Córdoba','CO',1198,1),
+ (2178,'Addis Ababa','AA',1070,1),
+ (2179,'Dire Dawa','DD',1070,1),
+ (2180,'Afar','AF',1070,1),
+ (2181,'Amara','AM',1070,1),
+ (2182,'Benshangul-Gumaz','BE',1070,1),
+ (2183,'Gambela Peoples','GA',1070,1),
+ (2184,'Harari People','HA',1070,1),
+ (2185,'Oromia','OR',1070,1),
+ (2186,'Somali','SO',1070,1),
+ (2187,'Southern Nations, Nationalities and Peoples','SN',1070,1),
+ (2188,'Tigrai','TI',1070,1),
+ (2189,'Eastern','E',1074,1),
+ (2190,'Northern','N',1074,1),
+ (2191,'Western','W',1074,1),
+ (2192,'Rotuma','R',1074,1),
+ (2193,'Central','C',1074,1),
+ (2194,'Chuuk','TRK',1141,1),
+ (2195,'Kosrae','KSA',1141,1),
+ (2196,'Pohnpei','PNI',1141,1),
+ (2197,'Yap','YAP',1141,1),
+ (2198,'Ain','01',1076,1),
+ (2199,'Aisne','02',1076,1),
+ (2200,'Allier','03',1076,1),
+ (2201,'Alpes-de-Haute-Provence','04',1076,1),
+ (2202,'Alpes-Maritimes','06',1076,1),
+ (2203,'Ardèche','07',1076,1),
+ (2204,'Ardennes','08',1076,1),
+ (2205,'Ariège','09',1076,1),
+ (2206,'Aube','10',1076,1),
+ (2207,'Aude','11',1076,1),
+ (2208,'Aveyron','12',1076,1),
+ (2209,'Bas-Rhin','67',1076,1),
+ (2210,'Bouches-du-Rhône','13',1076,1),
+ (2211,'Calvados','14',1076,1),
+ (2212,'Cantal','15',1076,1),
+ (2213,'Charente','16',1076,1),
+ (2214,'Charente-Maritime','17',1076,1),
+ (2215,'Cher','18',1076,1),
+ (2216,'Corrèze','19',1076,1),
+ (2217,'Corse-du-Sud','20A',1076,1),
+ (2218,'Côte-d\'Or','21',1076,1),
+ (2219,'Côtes-d\'Armor','22',1076,1),
+ (2220,'Creuse','23',1076,1),
+ (2221,'Deux-Sèvres','79',1076,1),
+ (2222,'Dordogne','24',1076,1),
+ (2223,'Doubs','25',1076,1),
+ (2224,'Drôme','26',1076,1),
+ (2225,'Essonne','91',1076,1),
+ (2226,'Eure','27',1076,1),
+ (2227,'Eure-et-Loir','28',1076,1),
+ (2228,'Finistère','29',1076,1),
+ (2229,'Gard','30',1076,1),
+ (2230,'Gers','32',1076,1),
+ (2231,'Gironde','33',1076,1),
+ (2232,'Haut-Rhin','68',1076,1),
+ (2233,'Haute-Corse','20B',1076,1),
+ (2234,'Haute-Garonne','31',1076,1),
+ (2235,'Haute-Loire','43',1076,1),
+ (2236,'Haute-Saône','70',1076,1),
+ (2237,'Haute-Savoie','74',1076,1),
+ (2238,'Haute-Vienne','87',1076,1),
+ (2239,'Hautes-Alpes','05',1076,1),
+ (2240,'Hautes-Pyrénées','65',1076,1),
+ (2241,'Hauts-de-Seine','92',1076,1),
+ (2242,'Hérault','34',1076,1),
+ (2243,'Indre','36',1076,1),
+ (2244,'Ille-et-Vilaine','35',1076,1),
+ (2245,'Indre-et-Loire','37',1076,1),
+ (2246,'Isère','38',1076,1),
+ (2247,'Landes','40',1076,1),
+ (2248,'Loir-et-Cher','41',1076,1),
+ (2249,'Loire','42',1076,1),
+ (2250,'Loire-Atlantique','44',1076,1),
+ (2251,'Loiret','45',1076,1),
+ (2252,'Lot','46',1076,1),
+ (2253,'Lot-et-Garonne','47',1076,1),
+ (2254,'Lozère','48',1076,1),
+ (2255,'Maine-et-Loire','49',1076,1),
+ (2256,'Manche','50',1076,1),
+ (2257,'Marne','51',1076,1),
+ (2258,'Mayenne','53',1076,1),
+ (2259,'Meurthe-et-Moselle','54',1076,1),
+ (2260,'Meuse','55',1076,1),
+ (2261,'Morbihan','56',1076,1),
+ (2262,'Moselle','57',1076,1),
+ (2263,'Nièvre','58',1076,1),
+ (2264,'Nord','59',1076,1),
+ (2265,'Oise','60',1076,1),
+ (2266,'Orne','61',1076,1),
+ (2267,'Paris','75',1076,1),
+ (2268,'Pas-de-Calais','62',1076,1),
+ (2269,'Puy-de-Dôme','63',1076,1),
+ (2270,'Pyrénées-Atlantiques','64',1076,1),
+ (2271,'Pyrénées-Orientales','66',1076,1),
+ (2272,'Rhône','69',1076,1),
+ (2273,'Saône-et-Loire','71',1076,1),
+ (2274,'Sarthe','72',1076,1),
+ (2275,'Savoie','73',1076,1),
+ (2276,'Seine-et-Marne','77',1076,1),
+ (2277,'Seine-Maritime','76',1076,1),
+ (2278,'Seine-Saint-Denis','93',1076,1),
+ (2279,'Somme','80',1076,1),
+ (2280,'Tarn','81',1076,1),
+ (2281,'Tarn-et-Garonne','82',1076,1),
+ (2282,'Val d\'Oise','95',1076,1),
+ (2283,'Territoire de Belfort','90',1076,1),
+ (2284,'Val-de-Marne','94',1076,1),
+ (2285,'Var','83',1076,1),
+ (2286,'Vaucluse','84',1076,1),
+ (2287,'Vendée','85',1076,1),
+ (2288,'Vienne','86',1076,1),
+ (2289,'Vosges','88',1076,1),
+ (2290,'Yonne','89',1076,1),
+ (2291,'Yvelines','78',1076,1),
+ (2292,'Guadeloupe','GP',1076,1),
+ (2293,'Martinique','MQ',1076,1),
+ (2294,'Guyane','GF',1076,1),
+ (2295,'La Réunion','RE',1076,1),
+ (2296,'Mayotte','YT',1076,1),
+ (2297,'Wallis-et-Futuna','WF',1076,1),
+ (2298,'Nouvelle-Calédonie','NC',1076,1),
+ (2299,'Haute-Marne','52',1076,1),
+ (2300,'Jura','39',1076,1),
+ (2301,'Aberdeen City','ABE',1226,1),
+ (2302,'Aberdeenshire','ABD',1226,1),
+ (2303,'Angus','ANS',1226,1),
+ (2304,'Co Antrim','ANT',1226,1),
+ (2305,'Argyll and Bute','AGB',1226,1),
+ (2306,'Co Armagh','ARM',1226,1),
+ (2307,'Bedfordshire','BDF',1226,1),
+ (2308,'Blaenau Gwent','BGW',1226,1),
+ (2309,'Bristol, City of','BST',1226,1),
+ (2310,'Buckinghamshire','BKM',1226,1),
+ (2311,'Cambridgeshire','CAM',1226,1),
+ (2312,'Cheshire','CHS',1226,1),
+ (2313,'Clackmannanshire','CLK',1226,1),
+ (2314,'Cornwall','CON',1226,1),
+ (2315,'Cumbria','CMA',1226,1),
+ (2316,'Derbyshire','DBY',1226,1),
+ (2317,'Co Londonderry','DRY',1226,1),
+ (2318,'Devon','DEV',1226,1),
+ (2319,'Dorset','DOR',1226,1),
+ (2320,'Co Down','DOW',1226,1),
+ (2321,'Dumfries and Galloway','DGY',1226,1),
+ (2322,'Dundee City','DND',1226,1),
+ (2323,'County Durham','DUR',1226,1),
+ (2324,'East Ayrshire','EAY',1226,1),
+ (2325,'East Dunbartonshire','EDU',1226,1),
+ (2326,'East Lothian','ELN',1226,1),
+ (2327,'East Renfrewshire','ERW',1226,1),
+ (2328,'East Riding of Yorkshire','ERY',1226,1),
+ (2329,'East Sussex','ESX',1226,1),
+ (2330,'Edinburgh, City of','EDH',1226,1),
+ (2331,'Na h-Eileanan Siar','ELS',1226,1),
+ (2332,'Essex','ESS',1226,1),
+ (2333,'Falkirk','FAL',1226,1),
+ (2334,'Co Fermanagh','FER',1226,1),
+ (2335,'Fife','FIF',1226,1),
+ (2336,'Glasgow City','GLG',1226,1),
+ (2337,'Gloucestershire','GLS',1226,1),
+ (2338,'Gwynedd','GWN',1226,1),
+ (2339,'Hampshire','HAM',1226,1),
+ (2340,'Herefordshire','HEF',1226,1),
+ (2341,'Hertfordshire','HRT',1226,1),
+ (2342,'Highland','HED',1226,1),
+ (2343,'Inverclyde','IVC',1226,1),
+ (2344,'Isle of Wight','IOW',1226,1),
+ (2345,'Kent','KEN',1226,1),
+ (2346,'Lancashire','LAN',1226,1),
+ (2347,'Leicestershire','LEC',1226,1),
+ (2348,'Lincolnshire','LIN',1226,1),
+ (2349,'Midlothian','MLN',1226,1),
+ (2350,'Moray','MRY',1226,1),
+ (2351,'Norfolk','NFK',1226,1),
+ (2352,'North Ayrshire','NAY',1226,1),
+ (2353,'North Lanarkshire','NLK',1226,1),
+ (2354,'North Yorkshire','NYK',1226,1),
+ (2355,'Northamptonshire','NTH',1226,1),
+ (2356,'Northumberland','NBL',1226,1),
+ (2357,'Nottinghamshire','NTT',1226,1),
+ (2358,'Oldham','OLD',1226,1),
+ (2359,'Omagh','OMH',1226,1),
+ (2360,'Orkney Islands','ORR',1226,1),
+ (2361,'Oxfordshire','OXF',1226,1),
+ (2362,'Perth and Kinross','PKN',1226,1),
+ (2363,'Powys','POW',1226,1),
+ (2364,'Renfrewshire','RFW',1226,1),
+ (2365,'Rutland','RUT',1226,1),
+ (2366,'Scottish Borders','SCB',1226,1),
+ (2367,'Shetland Islands','ZET',1226,1),
+ (2368,'Shropshire','SHR',1226,1),
+ (2369,'Somerset','SOM',1226,1),
+ (2370,'South Ayrshire','SAY',1226,1),
+ (2371,'South Gloucestershire','SGC',1226,1),
+ (2372,'South Lanarkshire','SLK',1226,1),
+ (2373,'Staffordshire','STS',1226,1),
+ (2374,'Stirling','STG',1226,1),
+ (2375,'Suffolk','SFK',1226,1),
+ (2376,'Surrey','SRY',1226,1),
+ (2377,'Vale of Glamorgan, The','VGL',1226,1),
+ (2378,'Warwickshire','WAR',1226,1),
+ (2379,'West Dunbartonshire','WDU',1226,1),
+ (2380,'West Lothian','WLN',1226,1),
+ (2381,'West Sussex','WSX',1226,1),
+ (2382,'Wiltshire','WIL',1226,1),
+ (2383,'Worcestershire','WOR',1226,1),
+ (2384,'Antrim and Newtownabbey','ANN',1226,1),
+ (2385,'Ards and North Down','AND',1226,1),
+ (2386,'Armagh City, Banbridge and Craigavon','ABC',1226,1),
+ (2387,'Belfast','BFS',1226,1),
+ (2388,'Causeway Coast and Glens','CCG',1226,1),
+ (2389,'Derry City and Strabane','DRS',1226,1),
+ (2390,'Fermanagh and Omagh','FMO',1226,1),
+ (2391,'Lisburn and Castlereagh','LBC',1226,1),
+ (2392,'Mid and East Antrim','MEA',1226,1),
+ (2393,'Mid Ulster','MUL',1226,1),
+ (2394,'Newry, Mourne and Down','NMD',1226,1),
+ (2395,'Bridgend','BGE',1226,1),
+ (2396,'Caerphilly','CAY',1226,1),
+ (2397,'Cardiff','CRF',1226,1),
+ (2398,'Carmarthenshire','CMN',1226,1),
+ (2399,'Ceredigion','CGN',1226,1),
+ (2400,'Conwy','CWY',1226,1),
+ (2401,'Denbighshire','DEN',1226,1),
+ (2402,'Flintshire','FLN',1226,1),
+ (2403,'Isle of Anglesey','AGY',1226,1),
+ (2404,'Merthyr Tydfil','MTY',1226,1),
+ (2405,'Neath Port Talbot','NTL',1226,1),
+ (2406,'Newport','NWP',1226,1),
+ (2407,'Pembrokeshire','PEM',1226,1),
+ (2408,'Rhondda, Cynon, Taff','RCT',1226,1),
+ (2409,'Swansea','SWA',1226,1),
+ (2410,'Torfaen','TOF',1226,1),
+ (2411,'Wrexham','WRX',1226,1),
+ (2412,'Monmouthshire','MON',1226,1),
+ (2413,'Tyne and Wear','TWR',1226,1),
+ (2414,'Greater Manchester','GTM',1226,1),
+ (2415,'Co Tyrone','TYR',1226,1),
+ (2416,'West Yorkshire','WYK',1226,1),
+ (2417,'South Yorkshire','SYK',1226,1),
+ (2418,'Merseyside','MSY',1226,1),
+ (2419,'Berkshire','BRK',1226,1),
+ (2420,'West Midlands','WMD',1226,1),
+ (2421,'West Glamorgan','WGM',1226,1),
+ (2422,'London','LON',1226,1),
+ (2423,'Clwyd','CWD',1226,1),
+ (2424,'South Glamorgan','SGM',1226,1),
+ (2425,'Ashanti','AH',1083,1),
+ (2426,'Brong-Ahafo','BA',1083,1),
+ (2427,'Greater Accra','AA',1083,1),
+ (2428,'Upper East','UE',1083,1),
+ (2429,'Upper West','UW',1083,1),
+ (2430,'Volta','TV',1083,1),
+ (2431,'Central','CP',1083,1),
+ (2432,'Eastern','EP',1083,1),
+ (2433,'Northern','NP',1083,1),
+ (2434,'Western','WP',1083,1),
+ (2435,'Banjul','B',1213,1),
+ (2436,'Lower River','L',1213,1),
+ (2437,'MacCarthy Island','M',1213,1),
+ (2438,'North Bank','N',1213,1),
+ (2439,'Upper River','U',1213,1),
+ (2440,'Beyla','BE',1091,1),
+ (2441,'Boffa','BF',1091,1),
+ (2442,'Boke','BK',1091,1),
+ (2443,'Coyah','CO',1091,1),
+ (2444,'Dabola','DB',1091,1),
+ (2445,'Dalaba','DL',1091,1),
+ (2446,'Dinguiraye','DI',1091,1),
+ (2447,'Dubreka','DU',1091,1),
+ (2448,'Faranah','FA',1091,1),
+ (2449,'Forecariah','FO',1091,1),
+ (2450,'Fria','FR',1091,1),
+ (2451,'Gaoual','GA',1091,1),
+ (2452,'Guekedou','GU',1091,1),
+ (2453,'Kankan','KA',1091,1),
+ (2454,'Kerouane','KE',1091,1),
+ (2455,'Kindia','KD',1091,1),
+ (2456,'Kissidougou','KS',1091,1),
+ (2457,'Koubia','KB',1091,1),
+ (2458,'Koundara','KN',1091,1),
+ (2459,'Kouroussa','KO',1091,1),
+ (2460,'Labe','LA',1091,1),
+ (2461,'Lelouma','LE',1091,1),
+ (2462,'Lola','LO',1091,1),
+ (2463,'Macenta','MC',1091,1),
+ (2464,'Mali','ML',1091,1),
+ (2465,'Mamou','MM',1091,1),
+ (2466,'Mandiana','MD',1091,1),
+ (2467,'Nzerekore','NZ',1091,1),
+ (2468,'Pita','PI',1091,1),
+ (2469,'Siguiri','SI',1091,1),
+ (2470,'Telimele','TE',1091,1),
+ (2471,'Tougue','TO',1091,1),
+ (2472,'Yomou','YO',1091,1),
+ (2473,'Region Continental','C',1067,1),
+ (2474,'Region Insular','I',1067,1),
+ (2475,'Annobon','AN',1067,1),
+ (2476,'Bioko Norte','BN',1067,1),
+ (2477,'Bioko Sur','BS',1067,1),
+ (2478,'Centro Sur','CS',1067,1),
+ (2479,'Kie-Ntem','KN',1067,1),
+ (2480,'Litoral','LI',1067,1),
+ (2481,'Wele-Nzas','WN',1067,1),
+ (2482,'Achaïa','13',1085,1),
+ (2483,'Aitolia-Akarnania','01',1085,1),
+ (2484,'Argolis','11',1085,1),
+ (2485,'Arkadia','12',1085,1),
+ (2486,'Arta','31',1085,1),
+ (2487,'Attiki','A1',1085,1),
+ (2488,'Chalkidiki','64',1085,1),
+ (2489,'Chania','94',1085,1),
+ (2490,'Chios','85',1085,1),
+ (2491,'Dodekanisos','81',1085,1),
+ (2492,'Drama','52',1085,1),
+ (2493,'Evros','71',1085,1),
+ (2494,'Evrytania','05',1085,1),
+ (2495,'Evvoia','04',1085,1),
+ (2496,'Florina','63',1085,1),
+ (2497,'Fokis','07',1085,1),
+ (2498,'Fthiotis','06',1085,1),
+ (2499,'Grevena','51',1085,1),
+ (2500,'Ileia','14',1085,1),
+ (2501,'Imathia','53',1085,1),
+ (2502,'Ioannina','33',1085,1),
+ (2503,'Irakleion','91',1085,1),
+ (2504,'Karditsa','41',1085,1),
+ (2505,'Kastoria','56',1085,1),
+ (2506,'Kavalla','55',1085,1),
+ (2507,'Kefallinia','23',1085,1),
+ (2508,'Kerkyra','22',1085,1),
+ (2509,'Kilkis','57',1085,1),
+ (2510,'Korinthia','15',1085,1),
+ (2511,'Kozani','58',1085,1),
+ (2512,'Kyklades','82',1085,1),
+ (2513,'Lakonia','16',1085,1),
+ (2514,'Larisa','42',1085,1),
+ (2515,'Lasithion','92',1085,1),
+ (2516,'Lefkas','24',1085,1),
+ (2517,'Lesvos','83',1085,1),
+ (2518,'Magnisia','43',1085,1),
+ (2519,'Messinia','17',1085,1),
+ (2520,'Pella','59',1085,1),
+ (2521,'Preveza','34',1085,1),
+ (2522,'Rethymnon','93',1085,1),
+ (2523,'Rodopi','73',1085,1),
+ (2524,'Samos','84',1085,1),
+ (2525,'Serrai','62',1085,1),
+ (2526,'Thesprotia','32',1085,1),
+ (2527,'Thessaloniki','54',1085,1),
+ (2528,'Trikala','44',1085,1),
+ (2529,'Voiotia','03',1085,1),
+ (2530,'Xanthi','72',1085,1),
+ (2531,'Zakynthos','21',1085,1),
+ (2532,'Agio Oros','69',1085,1),
+ (2533,'Pieria','61',1085,1),
+ (2534,'Alta Verapaz','AV',1090,1),
+ (2535,'Baja Verapaz','BV',1090,1),
+ (2536,'Chimaltenango','CM',1090,1),
+ (2537,'Chiquimula','CQ',1090,1),
+ (2538,'El Progreso','PR',1090,1),
+ (2539,'Escuintla','ES',1090,1),
+ (2540,'Guatemala','GU',1090,1),
+ (2541,'Huehuetenango','HU',1090,1),
+ (2542,'Izabal','IZ',1090,1),
+ (2543,'Jalapa','JA',1090,1),
+ (2544,'Jutiapa','JU',1090,1),
+ (2545,'Peten','PE',1090,1),
+ (2546,'Quetzaltenango','QZ',1090,1),
+ (2547,'Quiche','QC',1090,1),
+ (2548,'Retalhuleu','RE',1090,1),
+ (2549,'Sacatepequez','SA',1090,1),
+ (2550,'San Marcos','SM',1090,1),
+ (2551,'Santa Rosa','SR',1090,1),
+ (2552,'Sololá','SO',1090,1),
+ (2553,'Suchitepequez','SU',1090,1),
+ (2554,'Totonicapan','TO',1090,1),
+ (2555,'Zacapa','ZA',1090,1),
+ (2556,'Bissau','BS',1092,1),
+ (2557,'Bafata','BA',1092,1),
+ (2558,'Biombo','BM',1092,1),
+ (2559,'Bolama','BL',1092,1),
+ (2560,'Cacheu','CA',1092,1),
+ (2561,'Gabu','GA',1092,1),
+ (2562,'Oio','OI',1092,1),
+ (2563,'Quloara','QU',1092,1),
+ (2564,'Tombali S','TO',1092,1),
+ (2565,'Barima-Waini','BA',1093,1),
+ (2566,'Cuyuni-Mazaruni','CU',1093,1),
+ (2567,'Demerara-Mahaica','DE',1093,1),
+ (2568,'East Berbice-Corentyne','EB',1093,1),
+ (2569,'Essequibo Islands-West Demerara','ES',1093,1),
+ (2570,'Mahaica-Berbice','MA',1093,1),
+ (2571,'Pomeroon-Supenaam','PM',1093,1),
+ (2572,'Potaro-Siparuni','PT',1093,1),
+ (2573,'Upper Demerara-Berbice','UD',1093,1),
+ (2574,'Upper Takutu-Upper Essequibo','UT',1093,1),
+ (2575,'Atlantida','AT',1097,1),
+ (2576,'Colon','CL',1097,1),
+ (2577,'Comayagua','CM',1097,1),
+ (2578,'Copan','CP',1097,1),
+ (2579,'Cortes','CR',1097,1),
+ (2580,'Choluteca','CH',1097,1),
+ (2581,'El Paraiso','EP',1097,1),
+ (2582,'Francisco Morazan','FM',1097,1),
+ (2583,'Gracias a Dios','GD',1097,1),
+ (2584,'Intibuca','IN',1097,1),
+ (2585,'Islas de la Bahia','IB',1097,1),
+ (2586,'Lempira','LE',1097,1),
+ (2587,'Ocotepeque','OC',1097,1),
+ (2588,'Olancho','OL',1097,1),
+ (2589,'Santa Barbara','SB',1097,1),
+ (2590,'Valle','VA',1097,1),
+ (2591,'Yoro','YO',1097,1),
+ (2592,'La Paz','LP',1097,1),
+ (2593,'Bjelovarsko-bilogorska zupanija','07',1055,1),
+ (2594,'Brodsko-posavska zupanija','12',1055,1),
+ (2595,'Dubrovacko-neretvanska zupanija','19',1055,1),
+ (2596,'Istarska zupanija','18',1055,1),
+ (2597,'Karlovacka zupanija','04',1055,1),
+ (2598,'Koprivnickco-krizevacka zupanija','06',1055,1),
+ (2599,'Krapinako-zagorska zupanija','02',1055,1),
+ (2600,'Licko-senjska zupanija','09',1055,1),
+ (2601,'Medimurska zupanija','20',1055,1),
+ (2602,'Osjecko-baranjska zupanija','14',1055,1),
+ (2603,'Pozesko-slavonska zupanija','11',1055,1),
+ (2604,'Primorsko-goranska zupanija','08',1055,1),
+ (2605,'Sisacko-moelavacka Iupanija','03',1055,1),
+ (2606,'Splitako-dalmatinska zupanija','17',1055,1),
+ (2607,'Sibenako-kninska zupanija','15',1055,1),
+ (2608,'Varaidinska zupanija','05',1055,1),
+ (2609,'VirovitiEko-podravska zupanija','10',1055,1),
+ (2610,'VuRovarako-srijemska zupanija','16',1055,1),
+ (2611,'Zadaraka','13',1055,1),
+ (2612,'Zagrebacka zupanija','01',1055,1),
+ (2613,'Grande-Anse','GA',1094,1),
+ (2614,'Nord-Est','NE',1094,1),
+ (2615,'Nord-Ouest','NO',1094,1),
+ (2616,'Ouest','OU',1094,1),
+ (2617,'Sud','SD',1094,1),
+ (2618,'Sud-Est','SE',1094,1),
+ (2619,'Artibonite','AR',1094,1),
+ (2620,'Centre','CE',1094,1),
+ (2621,'Nippes','NI',1094,1),
+ (2622,'Nord','ND',1094,1),
+ (2623,'Budapest','BU',1099,1),
+ (2624,'Bács-Kiskun','BK',1099,1),
+ (2625,'Baranya','BA',1099,1),
+ (2626,'Békés','BE',1099,1),
+ (2627,'Borsod-Abaúj-Zemplén','BZ',1099,1),
+ (2628,'Csongrád','CS',1099,1),
+ (2629,'Fejér','FE',1099,1),
+ (2630,'Győr-Moson-Sopron','GS',1099,1),
+ (2631,'Hajdu-Bihar','HB',1099,1),
+ (2632,'Heves','HE',1099,1),
+ (2633,'Jász-Nagykun-Szolnok','JN',1099,1),
+ (2634,'Komárom-Esztergom','KE',1099,1),
+ (2635,'Nográd','NO',1099,1),
+ (2636,'Pest','PE',1099,1),
+ (2637,'Somogy','SO',1099,1),
+ (2638,'Szabolcs-Szatmár-Bereg','SZ',1099,1),
+ (2639,'Tolna','TO',1099,1),
+ (2640,'Vas','VA',1099,1),
+ (2641,'Veszprém','VE',1099,1),
+ (2642,'Zala','ZA',1099,1),
+ (2643,'Békéscsaba','BC',1099,1),
+ (2644,'Debrecen','DE',1099,1),
+ (2645,'Dunaújváros','DU',1099,1),
+ (2646,'Eger','EG',1099,1),
+ (2647,'Győr','GY',1099,1),
+ (2648,'Hódmezővásárhely','HV',1099,1),
+ (2649,'Kaposvár','KV',1099,1),
+ (2650,'Kecskemét','KM',1099,1),
+ (2651,'Miskolc','MI',1099,1),
+ (2652,'Nagykanizsa','NK',1099,1),
+ (2653,'Nyiregyháza','NY',1099,1),
+ (2654,'Pécs','PS',1099,1),
+ (2655,'Salgótarján','ST',1099,1),
+ (2656,'Sopron','SN',1099,1),
+ (2657,'Szeged','SD',1099,1),
+ (2658,'Székesfehérvár','SF',1099,1),
+ (2659,'Szekszárd','SS',1099,1),
+ (2660,'Szolnok','SK',1099,1),
+ (2661,'Szombathely','SH',1099,1),
+ (2662,'Tatabánya','TB',1099,1),
+ (2663,'Zalaegerszeg','ZE',1099,1),
+ (2664,'Bali','BA',1102,1),
+ (2665,'Kepulauan Bangka Belitung','BB',1102,1),
+ (2666,'Banten','BT',1102,1),
+ (2667,'Bengkulu','BE',1102,1),
+ (2668,'Gorontalo','GO',1102,1),
+ (2669,'Papua Barat','PB',1102,1),
+ (2670,'Jambi','JA',1102,1),
+ (2671,'Jawa Barat','JB',1102,1),
+ (2672,'Jawa Tengah','JT',1102,1),
+ (2673,'Jawa Timur','JI',1102,1),
+ (2674,'Kalimantan Barat','KB',1102,1),
+ (2675,'Kalimantan Timur','KI',1102,1),
+ (2676,'Kalimantan Selatan','KS',1102,1),
+ (2677,'Kepulauan Riau','KR',1102,1),
+ (2678,'Lampung','LA',1102,1),
+ (2679,'Maluku','MA',1102,1),
+ (2680,'Maluku Utara','MU',1102,1),
+ (2681,'Nusa Tenggara Barat','NB',1102,1),
+ (2682,'Nusa Tenggara Timur','NT',1102,1),
+ (2683,'Papua','PA',1102,1),
+ (2684,'Riau','RI',1102,1),
+ (2685,'Sulawesi Selatan','SN',1102,1),
+ (2686,'Sulawesi Tengah','ST',1102,1),
+ (2687,'Sulawesi Tenggara','SG',1102,1),
+ (2688,'Sulawesi Utara','SA',1102,1),
+ (2689,'Sumatra Barat','SB',1102,1),
+ (2690,'Sumatra Selatan','SS',1102,1),
+ (2691,'Sumatera Utara','SU',1102,1),
+ (2692,'DKI Jakarta','JK',1102,1),
+ (2693,'Aceh','AC',1102,1),
+ (2694,'DI Yogyakarta','YO',1102,1),
+ (2695,'Kalimantan Tengah','KT',1102,1),
+ (2696,'Sulawesi Barat','SR',1102,1),
+ (2697,'Kalimantan Utara','KU',1102,1),
+ (2698,'Cork','C',1105,1),
+ (2699,'Clare','CE',1105,1),
+ (2700,'Cavan','CN',1105,1),
+ (2701,'Carlow','CW',1105,1),
+ (2702,'Dublin','D',1105,1),
+ (2703,'Donegal','DL',1105,1),
+ (2704,'Galway','G',1105,1),
+ (2705,'Kildare','KE',1105,1),
+ (2706,'Kilkenny','KK',1105,1),
+ (2707,'Kerry','KY',1105,1),
+ (2708,'Longford','LD',1105,1),
+ (2709,'Louth','LH',1105,1),
+ (2710,'Limerick','LK',1105,1),
+ (2711,'Leitrim','LM',1105,1),
+ (2712,'Laois','LS',1105,1),
+ (2713,'Meath','MH',1105,1),
+ (2714,'Monaghan','MN',1105,1),
+ (2715,'Mayo','MO',1105,1),
+ (2716,'Offaly','OY',1105,1),
+ (2717,'Roscommon','RN',1105,1),
+ (2718,'Sligo','SO',1105,1),
+ (2719,'Tipperary','TA',1105,1),
+ (2720,'Waterford','WD',1105,1),
+ (2721,'Westmeath','WH',1105,1),
+ (2722,'Wicklow','WW',1105,1),
+ (2723,'Wexford','WX',1105,1),
+ (2724,'HaDarom','D',1106,1),
+ (2725,'HaMerkaz','M',1106,1),
+ (2726,'HaZafon','Z',1106,1),
+ (2727,'Haifa','HA',1106,1),
+ (2728,'Tel-Aviv','TA',1106,1),
+ (2729,'Jerusalem','JM',1106,1),
+ (2730,'Al Anbar','AN',1104,1),
+ (2731,'Al Ba,rah','BA',1104,1),
+ (2732,'Al Muthanna','MU',1104,1),
+ (2733,'Al Qadisiyah','QA',1104,1),
+ (2734,'An Najef','NA',1104,1),
+ (2735,'Arbil','AR',1104,1),
+ (2736,'As Sulaymaniyah','SW',1104,1),
+ (2737,'At Ta\'mim','TS',1104,1),
+ (2738,'Babil','BB',1104,1),
+ (2739,'Baghdad','BG',1104,1),
+ (2740,'Dahuk','DA',1104,1),
+ (2741,'Dhi Qar','DQ',1104,1),
+ (2742,'Diyala','DI',1104,1),
+ (2743,'Karbala\'','KA',1104,1),
+ (2744,'Maysan','MA',1104,1),
+ (2745,'Ninawa','NI',1104,1),
+ (2746,'Salah ad Din','SD',1104,1),
+ (2747,'Wasit','WA',1104,1),
+ (2748,'Ardabil','03',1103,1),
+ (2749,'Azarbayjan-e Gharbi','02',1103,1),
+ (2750,'Azarbayjan-e Sharqi','01',1103,1),
+ (2751,'Bushehr','06',1103,1),
+ (2752,'Chahar Mahall va Bakhtiari','08',1103,1),
+ (2753,'Esfahan','04',1103,1),
+ (2754,'Fars','14',1103,1),
+ (2755,'Gilan','19',1103,1),
+ (2756,'Golestan','27',1103,1),
+ (2757,'Hamadan','24',1103,1),
+ (2758,'Hormozgan','23',1103,1),
+ (2759,'Iiam','05',1103,1),
+ (2760,'Kerman','15',1103,1),
+ (2761,'Kermanshah','17',1103,1),
+ (2762,'Khorasan','09',1103,1),
+ (2763,'Khuzestan','10',1103,1),
+ (2764,'Kohjiluyeh va Buyer Ahmad','18',1103,1),
+ (2765,'Kordestan','16',1103,1),
+ (2766,'Lorestan','20',1103,1),
+ (2767,'Markazi','22',1103,1),
+ (2768,'Mazandaran','21',1103,1),
+ (2769,'Qazvin','28',1103,1),
+ (2770,'Qom','26',1103,1),
+ (2771,'Semnan','12',1103,1),
+ (2772,'Sistan va Baluchestan','13',1103,1),
+ (2773,'Tehran','07',1103,1),
+ (2774,'Yazd','25',1103,1),
+ (2775,'Zanjan','11',1103,1),
+ (2776,'Austurland','7',1100,1),
+ (2777,'Hofuoborgarsvaeoi utan Reykjavikur','1',1100,1),
+ (2778,'Norourland eystra','6',1100,1),
+ (2779,'Norourland vestra','5',1100,1),
+ (2780,'Reykjavik','0',1100,1),
+ (2781,'Suourland','8',1100,1),
+ (2782,'Suournes','2',1100,1),
+ (2783,'Vestfirolr','4',1100,1),
+ (2784,'Vesturland','3',1100,1),
+ (2785,'Agrigento','AG',1107,1),
+ (2786,'Alessandria','AL',1107,1),
+ (2787,'Ancona','AN',1107,1),
+ (2788,'Aosta','AO',1107,1),
+ (2789,'Arezzo','AR',1107,1),
+ (2790,'Ascoli Piceno','AP',1107,1),
+ (2791,'Asti','AT',1107,1),
+ (2792,'Avellino','AV',1107,1),
+ (2793,'Bari','BA',1107,1),
+ (2794,'Belluno','BL',1107,1),
+ (2795,'Benevento','BN',1107,1),
+ (2796,'Bergamo','BG',1107,1),
+ (2797,'Biella','BI',1107,1),
+ (2798,'Bologna','BO',1107,1),
+ (2799,'Bolzano','BZ',1107,1),
+ (2800,'Brescia','BS',1107,1),
+ (2801,'Brindisi','BR',1107,1),
+ (2802,'Cagliari','CA',1107,1),
+ (2803,'Caltanissetta','CL',1107,1),
+ (2804,'Campobasso','CB',1107,1),
+ (2805,'Caserta','CE',1107,1),
+ (2806,'Catania','CT',1107,1),
+ (2807,'Catanzaro','CZ',1107,1),
+ (2808,'Chieti','CH',1107,1),
+ (2809,'Como','CO',1107,1),
+ (2810,'Cosenza','CS',1107,1),
+ (2811,'Cremona','CR',1107,1),
+ (2812,'Crotone','KR',1107,1),
+ (2813,'Cuneo','CN',1107,1),
+ (2814,'Enna','EN',1107,1),
+ (2815,'Ferrara','FE',1107,1),
+ (2816,'Firenze','FI',1107,1),
+ (2817,'Foggia','FG',1107,1),
+ (2818,'Forlì-Cesena','FC',1107,1),
+ (2819,'Frosinone','FR',1107,1),
+ (2820,'Genova','GE',1107,1),
+ (2821,'Gorizia','GO',1107,1),
+ (2822,'Grosseto','GR',1107,1),
+ (2823,'Imperia','IM',1107,1),
+ (2824,'Isernia','IS',1107,1),
+ (2825,'L\'Aquila','AQ',1107,1),
+ (2826,'La Spezia','SP',1107,1),
+ (2827,'Latina','LT',1107,1),
+ (2828,'Lecce','LE',1107,1),
+ (2829,'Lecco','LC',1107,1),
+ (2830,'Livorno','LI',1107,1),
+ (2831,'Lodi','LO',1107,1),
+ (2832,'Lucca','LU',1107,1),
+ (2833,'Macerata','MC',1107,1),
+ (2834,'Mantova','MN',1107,1),
+ (2835,'Massa-Carrara','MS',1107,1),
+ (2836,'Matera','MT',1107,1),
+ (2837,'Messina','ME',1107,1),
+ (2838,'Milano','MI',1107,1),
+ (2839,'Modena','MO',1107,1),
+ (2840,'Napoli','NA',1107,1),
+ (2841,'Novara','NO',1107,1),
+ (2842,'Nuoro','NU',1107,1),
+ (2843,'Oristano','OR',1107,1),
+ (2844,'Padova','PD',1107,1),
+ (2845,'Palermo','PA',1107,1),
+ (2846,'Parma','PR',1107,1),
+ (2847,'Pavia','PV',1107,1),
+ (2848,'Perugia','PG',1107,1),
+ (2849,'Pesaro e Urbino','PU',1107,1),
+ (2850,'Pescara','PE',1107,1),
+ (2851,'Piacenza','PC',1107,1),
+ (2852,'Pisa','PI',1107,1),
+ (2853,'Pistoia','PT',1107,1),
+ (2854,'Pordenone','PN',1107,1),
+ (2855,'Potenza','PZ',1107,1),
+ (2856,'Prato','PO',1107,1),
+ (2857,'Ragusa','RG',1107,1),
+ (2858,'Ravenna','RA',1107,1),
+ (2859,'Reggio Calabria','RC',1107,1),
+ (2860,'Reggio Emilia','RE',1107,1),
+ (2861,'Rieti','RI',1107,1),
+ (2862,'Rimini','RN',1107,1),
+ (2863,'Roma','RM',1107,1),
+ (2864,'Rovigo','RO',1107,1),
+ (2865,'Salerno','SA',1107,1),
+ (2866,'Sassari','SS',1107,1),
+ (2867,'Savona','SV',1107,1),
+ (2868,'Siena','SI',1107,1),
+ (2869,'Siracusa','SR',1107,1),
+ (2870,'Sondrio','SO',1107,1),
+ (2871,'Taranto','TA',1107,1),
+ (2872,'Teramo','TE',1107,1),
+ (2873,'Terni','TR',1107,1),
+ (2874,'Torino','TO',1107,1),
+ (2875,'Trapani','TP',1107,1),
+ (2876,'Trento','TN',1107,1),
+ (2877,'Treviso','TV',1107,1),
+ (2878,'Trieste','TS',1107,1),
+ (2879,'Udine','UD',1107,1),
+ (2880,'Varese','VA',1107,1),
+ (2881,'Venezia','VE',1107,1),
+ (2882,'Verbano-Cusio-Ossola','VB',1107,1),
+ (2883,'Vercelli','VC',1107,1),
+ (2884,'Verona','VR',1107,1),
+ (2885,'Vibo Valentia','VV',1107,1),
+ (2886,'Vicenza','VI',1107,1),
+ (2887,'Viterbo','VT',1107,1),
+ (2888,'Barletta-Andria-Trani','BT',1107,1),
+ (2889,'Fermo','FM',1107,1),
+ (2890,'Monza e Brianza','MB',1107,1),
+ (2891,'Carbonia-Iglesias','CI',1107,1),
+ (2892,'Olbia-Tempio','OT',1107,1),
+ (2893,'Medio Campidano','VS',1107,1),
+ (2894,'Ogliastra','OG',1107,1),
+ (2895,'Aichi','23',1109,1),
+ (2896,'Akita','05',1109,1),
+ (2897,'Aomori','02',1109,1),
+ (2898,'Chiba','12',1109,1),
+ (2899,'Ehime','38',1109,1),
+ (2900,'Fukui','18',1109,1),
+ (2901,'Fukuoka','40',1109,1),
+ (2902,'Fukusima','07',1109,1),
+ (2903,'Gifu','21',1109,1),
+ (2904,'Gunma','10',1109,1),
+ (2905,'Hiroshima','34',1109,1),
+ (2906,'Hokkaido','01',1109,1),
+ (2907,'Hyogo','28',1109,1),
+ (2908,'Ibaraki','08',1109,1),
+ (2909,'Ishikawa','17',1109,1),
+ (2910,'Iwate','03',1109,1),
+ (2911,'Kagawa','37',1109,1),
+ (2912,'Kagoshima','46',1109,1),
+ (2913,'Kanagawa','14',1109,1),
+ (2914,'Kochi','39',1109,1),
+ (2915,'Kumamoto','43',1109,1),
+ (2916,'Kyoto','26',1109,1),
+ (2917,'Mie','24',1109,1),
+ (2918,'Miyagi','04',1109,1),
+ (2919,'Miyazaki','45',1109,1),
+ (2920,'Nagano','20',1109,1),
+ (2921,'Nagasaki','42',1109,1),
+ (2922,'Nara','29',1109,1),
+ (2923,'Niigata','15',1109,1),
+ (2924,'Oita','44',1109,1),
+ (2925,'Okayama','33',1109,1),
+ (2926,'Okinawa','47',1109,1),
+ (2927,'Osaka','27',1109,1),
+ (2928,'Saga','41',1109,1),
+ (2929,'Saitama','11',1109,1),
+ (2930,'Shiga','25',1109,1),
+ (2931,'Shimane','32',1109,1),
+ (2932,'Shizuoka','22',1109,1),
+ (2933,'Tochigi','09',1109,1),
+ (2934,'Tokushima','36',1109,1),
+ (2935,'Tokyo','13',1109,1),
+ (2936,'Tottori','31',1109,1),
+ (2937,'Toyama','16',1109,1),
+ (2938,'Wakayama','30',1109,1),
+ (2939,'Yamagata','06',1109,1),
+ (2940,'Yamaguchi','35',1109,1),
+ (2941,'Yamanashi','19',1109,1),
+ (2942,'Clarendon','CN',1108,1),
+ (2943,'Hanover','HR',1108,1),
+ (2944,'Kingston','KN',1108,1),
+ (2945,'Portland','PD',1108,1),
+ (2946,'Saint Andrew','AW',1108,1),
+ (2947,'Saint Ann','AN',1108,1),
+ (2948,'Saint Catherine','CE',1108,1),
+ (2949,'Saint Elizabeth','EH',1108,1),
+ (2950,'Saint James','JS',1108,1),
+ (2951,'Saint Mary','MY',1108,1),
+ (2952,'Saint Thomas','TS',1108,1),
+ (2953,'Trelawny','TY',1108,1),
+ (2954,'Westmoreland','WD',1108,1),
+ (2955,'Ajln','AJ',1110,1),
+ (2956,'Al \'Aqaba','AQ',1110,1),
+ (2957,'Al Balqa\'','BA',1110,1),
+ (2958,'Al Karak','KA',1110,1),
+ (2959,'Al Mafraq','MA',1110,1),
+ (2960,'Amman','AM',1110,1),
+ (2961,'At Tafilah','AT',1110,1),
+ (2962,'Az Zarga','AZ',1110,1),
+ (2963,'Irbid','JR',1110,1),
+ (2964,'Jarash','JA',1110,1),
+ (2965,'Ma\'an','MN',1110,1),
+ (2966,'Madaba','MD',1110,1),
+ (2967,'Baringo','01',1112,1),
+ (2968,'Bomet','02',1112,1),
+ (2969,'Bungoma','03',1112,1),
+ (2970,'Busia','04',1112,1),
+ (2971,'Elgeyo/Marakwet','05',1112,1),
+ (2972,'Embu','06',1112,1),
+ (2973,'Garissa','07',1112,1),
+ (2974,'Homa Bay','08',1112,1),
+ (2975,'Isiolo','09',1112,1),
+ (2976,'Kajiado','10',1112,1),
+ (2977,'Kakamega','11',1112,1),
+ (2978,'Kericho','12',1112,1),
+ (2979,'Kiambu','13',1112,1),
+ (2980,'Kilifi','14',1112,1),
+ (2981,'Kirinyaga','15',1112,1),
+ (2982,'Kisii','16',1112,1),
+ (2983,'Kisumu','17',1112,1),
+ (2984,'Kitui','18',1112,1),
+ (2985,'Kwale','19',1112,1),
+ (2986,'Laikipia','20',1112,1),
+ (2987,'Lamu','21',1112,1),
+ (2988,'Machakos','22',1112,1),
+ (2989,'Makueni','23',1112,1),
+ (2990,'Mandera','24',1112,1),
+ (2991,'Marsabit','25',1112,1),
+ (2992,'Meru','26',1112,1),
+ (2993,'Migori','27',1112,1),
+ (2994,'Mombasa','28',1112,1),
+ (2995,'Murang\'a','29',1112,1),
+ (2996,'Nairobi City','30',1112,1),
+ (2997,'Nakuru','31',1112,1),
+ (2998,'Nandi','32',1112,1),
+ (2999,'Narok','33',1112,1),
+ (3000,'Nyamira','34',1112,1),
+ (3001,'Nyandarua','35',1112,1),
+ (3002,'Nyeri','36',1112,1),
+ (3003,'Samburu','37',1112,1),
+ (3004,'Siaya','38',1112,1),
+ (3005,'Taita/Taveta','39',1112,1),
+ (3006,'Tana River','40',1112,1),
+ (3007,'Tharaka-Nithi','41',1112,1),
+ (3008,'Trans Nzoia','42',1112,1),
+ (3009,'Turkana','43',1112,1),
+ (3010,'Uasin Gishu','44',1112,1),
+ (3011,'Vihiga','45',1112,1),
+ (3012,'Wajir','46',1112,1),
+ (3013,'West Pokot','47',1112,1),
+ (3014,'Bishkek','GB',1117,1),
+ (3015,'Batken','B',1117,1),
+ (3016,'Chu','C',1117,1),
+ (3017,'Jalal-Abad','J',1117,1),
+ (3018,'Naryn','N',1117,1),
+ (3019,'Osh','O',1117,1),
+ (3020,'Talas','T',1117,1),
+ (3021,'Ysyk-Kol','Y',1117,1),
+ (3022,'Krong Kaeb','23',1037,1),
+ (3023,'Krong Pailin','24',1037,1),
+ (3024,'Xrong Preah Sihanouk','18',1037,1),
+ (3025,'Phnom Penh','12',1037,1),
+ (3026,'Baat Dambang','2',1037,1),
+ (3027,'Banteay Mean Chey','1',1037,1),
+ (3028,'Rampong Chaam','3',1037,1),
+ (3029,'Kampong Chhnang','4',1037,1),
+ (3030,'Kampong Spueu','5',1037,1),
+ (3031,'Kampong Thum','6',1037,1),
+ (3032,'Kampot','7',1037,1),
+ (3033,'Kandaal','8',1037,1),
+ (3034,'Kach Kong','9',1037,1),
+ (3035,'Krachoh','10',1037,1),
+ (3036,'Mondol Kiri','11',1037,1),
+ (3037,'Otdar Mean Chey','22',1037,1),
+ (3038,'Pousaat','15',1037,1),
+ (3039,'Preah Vihear','13',1037,1),
+ (3040,'Prey Veaeng','14',1037,1),
+ (3041,'Rotanak Kiri','16',1037,1),
+ (3042,'Siem Reab','17',1037,1),
+ (3043,'Stueng Traeng','19',1037,1),
+ (3044,'Svaay Rieng','20',1037,1),
+ (3045,'Taakaev','21',1037,1),
+ (3046,'Gilbert Islands','G',1113,1),
+ (3047,'Line Islands','L',1113,1),
+ (3048,'Phoenix Islands','P',1113,1),
+ (3049,'Anjouan Ndzouani','A',1049,1),
+ (3050,'Grande Comore Ngazidja','G',1049,1),
+ (3051,'Moheli Moili','M',1049,1),
+ (3052,'Kaesong-si','KAE',1114,1),
+ (3053,'Nampo-si','NAM',1114,1),
+ (3054,'Pyongyang-ai','PYO',1114,1),
+ (3055,'Chagang-do','CHA',1114,1),
+ (3056,'Hamgyongbuk-do','HAB',1114,1),
+ (3057,'Hamgyongnam-do','HAN',1114,1),
+ (3058,'Hwanghaebuk-do','HWB',1114,1),
+ (3059,'Hwanghaenam-do','HWN',1114,1),
+ (3060,'Kangwon-do','KAN',1114,1),
+ (3061,'Pyonganbuk-do','PYB',1114,1),
+ (3062,'Pyongannam-do','PYN',1114,1),
+ (3063,'Yanggang-do','YAN',1114,1),
+ (3064,'Najin Sonbong-si','NAJ',1114,1),
+ (3065,'Seoul Teugbyeolsi','11',1115,1),
+ (3066,'Busan Gwang\'yeogsi','26',1115,1),
+ (3067,'Daegu Gwang\'yeogsi','27',1115,1),
+ (3068,'Daejeon Gwang\'yeogsi','30',1115,1),
+ (3069,'Gwangju Gwang\'yeogsi','29',1115,1),
+ (3070,'Incheon Gwang\'yeogsi','28',1115,1),
+ (3071,'Ulsan Gwang\'yeogsi','31',1115,1),
+ (3072,'Chungcheongbugdo','43',1115,1),
+ (3073,'Chungcheongnamdo','44',1115,1),
+ (3074,'Gang\'weondo','42',1115,1),
+ (3075,'Gyeonggido','41',1115,1),
+ (3076,'Gyeongsangbugdo','47',1115,1),
+ (3077,'Gyeongsangnamdo','48',1115,1),
+ (3078,'Jejudo','49',1115,1),
+ (3079,'Jeonrabugdo','45',1115,1),
+ (3080,'Jeonranamdo','46',1115,1),
+ (3081,'Sejong','50',1115,1),
+ (3082,'Al Ahmadi','AH',1116,1),
+ (3083,'Al Farwanlyah','FA',1116,1),
+ (3084,'Al Jahrah','JA',1116,1),
+ (3085,'Al Kuwayt','KU',1116,1),
+ (3086,'Hawalli','HA',1116,1),
+ (3087,'Almaty','ALA',1111,1),
+ (3088,'Astana','AST',1111,1),
+ (3089,'Almaty oblysy','ALM',1111,1),
+ (3090,'Aqmola oblysy','AKM',1111,1),
+ (3091,'Aqtobe oblysy','AKT',1111,1),
+ (3092,'Atyrau oblyfiy','ATY',1111,1),
+ (3093,'Batys Quzaqstan oblysy','ZAP',1111,1),
+ (3094,'Mangghystau oblysy','MAN',1111,1),
+ (3095,'Ongtustik Quzaqstan oblysy','YUZ',1111,1),
+ (3096,'Pavlodar oblysy','PAV',1111,1),
+ (3097,'Qaraghandy oblysy','KAR',1111,1),
+ (3098,'Qostanay oblysy','KUS',1111,1),
+ (3099,'Qyzylorda oblysy','KZY',1111,1),
+ (3100,'Shyghys Quzaqstan oblysy','VOS',1111,1),
+ (3101,'Soltustik Quzaqstan oblysy','SEV',1111,1),
+ (3102,'Zhambyl oblysy Zhambylskaya oblast\'','ZHA',1111,1),
+ (3103,'Vientiane','VT',1118,1),
+ (3104,'Attapu','AT',1118,1),
+ (3105,'Bokeo','BK',1118,1),
+ (3106,'Bolikhamxai','BL',1118,1),
+ (3107,'Champasak','CH',1118,1),
+ (3108,'Houaphan','HO',1118,1),
+ (3109,'Khammouan','KH',1118,1),
+ (3110,'Louang Namtha','LM',1118,1),
+ (3111,'Louangphabang','LP',1118,1),
+ (3112,'Oudomxai','OU',1118,1),
+ (3113,'Phongsali','PH',1118,1),
+ (3114,'Salavan','SL',1118,1),
+ (3115,'Savannakhet','SV',1118,1),
+ (3116,'Xaignabouli','XA',1118,1),
+ (3117,'Xiasomboun','XN',1118,1),
+ (3118,'Xekong','XE',1118,1),
+ (3119,'Xiangkhoang','XI',1118,1),
+ (3120,'Beirut','BA',1120,1),
+ (3121,'Beqaa','BI',1120,1),
+ (3122,'Mount Lebanon','JL',1120,1),
+ (3123,'North Lebanon','AS',1120,1),
+ (3124,'South Lebanon','JA',1120,1),
+ (3125,'Nabatieh','NA',1120,1),
+ (3126,'Ampara','52',1199,1),
+ (3127,'Anuradhapura','71',1199,1),
+ (3128,'Badulla','81',1199,1),
+ (3129,'Batticaloa','51',1199,1),
+ (3130,'Colombo','11',1199,1),
+ (3131,'Galle','31',1199,1),
+ (3132,'Gampaha','12',1199,1),
+ (3133,'Hambantota','33',1199,1),
+ (3134,'Jaffna','41',1199,1),
+ (3135,'Kalutara','13',1199,1),
+ (3136,'Kandy','21',1199,1),
+ (3137,'Kegalla','92',1199,1),
+ (3138,'Kilinochchi','42',1199,1),
+ (3139,'Kurunegala','61',1199,1),
+ (3140,'Mannar','43',1199,1),
+ (3141,'Matale','22',1199,1),
+ (3142,'Matara','32',1199,1),
+ (3143,'Monaragala','82',1199,1),
+ (3144,'Mullaittivu','45',1199,1),
+ (3145,'Nuwara Eliya','23',1199,1),
+ (3146,'Polonnaruwa','72',1199,1),
+ (3147,'Puttalum','62',1199,1),
+ (3148,'Ratnapura','91',1199,1),
+ (3149,'Trincomalee','53',1199,1),
+ (3150,'VavunLya','44',1199,1),
+ (3151,'Bomi','BM',1122,1),
+ (3152,'Bong','BG',1122,1),
+ (3153,'Grand Basaa','GB',1122,1),
+ (3154,'Grand Cape Mount','CM',1122,1),
+ (3155,'Grand Gedeh','GG',1122,1),
+ (3156,'Grand Kru','GK',1122,1),
+ (3157,'Lofa','LO',1122,1),
+ (3158,'Margibi','MG',1122,1),
+ (3159,'Maryland','MY',1122,1),
+ (3160,'Montserrado','MO',1122,1),
+ (3161,'Nimba','NI',1122,1),
+ (3162,'Rivercess','RI',1122,1),
+ (3163,'Sinoe','SI',1122,1),
+ (3164,'Berea','D',1121,1),
+ (3165,'Butha-Buthe','B',1121,1),
+ (3166,'Leribe','C',1121,1),
+ (3167,'Mafeteng','E',1121,1),
+ (3168,'Maseru','A',1121,1),
+ (3169,'Mohale\'s Hoek','F',1121,1),
+ (3170,'Mokhotlong','J',1121,1),
+ (3171,'Qacha\'s Nek','H',1121,1),
+ (3172,'Quthing','G',1121,1),
+ (3173,'Thaba-Tseka','K',1121,1),
+ (3174,'Alytaus Apskritis','AL',1125,1),
+ (3175,'Kauno Apskritis','KU',1125,1),
+ (3176,'KlaipÄ—dos Apskritis','KL',1125,1),
+ (3177,'MarijampolÄ—s Apskritis','MR',1125,1),
+ (3178,'Panevėžio Apskritis','PN',1125,1),
+ (3179,'Šiaulių Apskritis','SA',1125,1),
+ (3180,'TauragÄ—s Apskritis','TA',1125,1),
+ (3181,'Telšių Apskritis','TE',1125,1),
+ (3182,'Utenos Apskritis','UT',1125,1),
+ (3183,'Vilniaus Apskritis','VL',1125,1),
+ (3184,'Luxembourg','LU',1126,1),
+ (3185,'Diekirch','DI',1126,1),
+ (3186,'Grevenmacher','GR',1126,1),
+ (3187,'Capellen','CA',1126,1),
+ (3188,'Clervaux','CL',1126,1),
+ (3189,'Echternach','EC',1126,1),
+ (3190,'Esch-sur-Alzette','ES',1126,1),
+ (3191,'Mersch','ME',1126,1),
+ (3192,'Redange-sur-Attert','RD',1126,1),
+ (3193,'Remich','RM',1126,1),
+ (3194,'Vianden','VD',1126,1),
+ (3195,'Wiltz','WI',1126,1),
+ (3196,'Daugavpils','DGV',1119,1),
+ (3197,'Jelgava','JEL',1119,1),
+ (3198,'JÅ«rmala','JUR',1119,1),
+ (3199,'Liepāja','LPX',1119,1),
+ (3200,'RÄ“zekne','REZ',1119,1),
+ (3201,'RÄ«ga','RIX',1119,1),
+ (3202,'Ventspils','VEN',1119,1),
+ (3203,'Aizkraukles novads','002',1119,1),
+ (3204,'Jaunjelgavas novads','038',1119,1),
+ (3205,'Pļaviņu novads','072',1119,1),
+ (3206,'Kokneses novads','046',1119,1),
+ (3207,'Neretas novads','065',1119,1),
+ (3208,'Skrīveru novads','092',1119,1),
+ (3209,'Alūksnes novads','007',1119,1),
+ (3210,'Apes novads','009',1119,1),
+ (3211,'Balvu novads','015',1119,1),
+ (3212,'Viļakas novads','108',1119,1),
+ (3213,'Baltinavas novads','014',1119,1),
+ (3214,'Rugāju novads','082',1119,1),
+ (3215,'Bauskas novads','016',1119,1),
+ (3216,'Iecavas novads','034',1119,1),
+ (3217,'Rundāles novads','083',1119,1),
+ (3218,'Vecumnieku novads','105',1119,1),
+ (3219,'CÄ“su novads','022',1119,1),
+ (3220,'LÄ«gatnes novads','055',1119,1),
+ (3221,'Amatas novads','008',1119,1),
+ (3222,'Jaunpiebalgas novads','039',1119,1),
+ (3223,'Priekuļu novads','075',1119,1),
+ (3224,'Pārgaujas novads','070',1119,1),
+ (3225,'Raunas novads','076',1119,1),
+ (3226,'Vecpiebalgas novads','104',1119,1),
+ (3227,'Daugavpils novads','025',1119,1),
+ (3228,'Ilūkstes novads','036',1119,1),
+ (3229,'Dobeles novads','026',1119,1),
+ (3230,'Auces novads','010',1119,1),
+ (3231,'TÄ“rvetes novads','098',1119,1),
+ (3232,'Gulbenes novads','033',1119,1),
+ (3233,'Jelgavas novads','041',1119,1),
+ (3234,'Ozolnieku novads','069',1119,1),
+ (3235,'JÄ“kabpils novads','042',1119,1),
+ (3236,'Aknīstes novads','004',1119,1),
+ (3237,'Viesītes novads','107',1119,1),
+ (3238,'Krustpils novads','049',1119,1),
+ (3239,'Salas novads','085',1119,1),
+ (3240,'Krāslavas novads','047',1119,1),
+ (3241,'Dagdas novads','024',1119,1),
+ (3242,'Aglonas novads','001',1119,1),
+ (3243,'Kuldīgas novads','050',1119,1),
+ (3244,'Skrundas novads','093',1119,1),
+ (3245,'Alsungas novads','006',1119,1),
+ (3246,'Aizputes novads','003',1119,1),
+ (3247,'Durbes novads','028',1119,1),
+ (3248,'Grobiņas novads','032',1119,1),
+ (3249,'Pāvilostas novads','071',1119,1),
+ (3250,'Priekules novads','074',1119,1),
+ (3251,'NÄ«cas novads','066',1119,1),
+ (3252,'Rucavas novads','081',1119,1),
+ (3253,'Vaiņodes novads','100',1119,1),
+ (3254,'Limbažu novads','054',1119,1),
+ (3255,'Alojas novads','005',1119,1),
+ (3256,'Salacgrīvas novads','086',1119,1),
+ (3257,'Ludzas novads','058',1119,1),
+ (3258,'Kārsavas novads','044',1119,1),
+ (3259,'Zilupes novads','110',1119,1),
+ (3260,'Ciblas novads','023',1119,1),
+ (3261,'Madonas novads','059',1119,1),
+ (3262,'Cesvaines novads','021',1119,1),
+ (3263,'Lubānas novads','057',1119,1),
+ (3264,'Varakļānu novads','102',1119,1),
+ (3265,'Ērgļu novads','030',1119,1),
+ (3266,'Ogres novads','067',1119,1),
+ (3267,'Ikšķiles novads','035',1119,1),
+ (3268,'Ķeguma novads','051',1119,1),
+ (3269,'Lielvārdes novads','053',1119,1),
+ (3270,'Preiļu novads','073',1119,1),
+ (3271,'Līvānu novads','056',1119,1),
+ (3272,'Riebiņu novads','078',1119,1),
+ (3273,'Vārkavas novads','103',1119,1),
+ (3274,'RÄ“zeknes novads','077',1119,1),
+ (3275,'Viļānu novads','109',1119,1),
+ (3276,'Baldones novads','013',1119,1),
+ (3277,'Ķekavas novads','052',1119,1),
+ (3278,'Olaines novads','068',1119,1),
+ (3279,'Salaspils novads','087',1119,1),
+ (3280,'Saulkrastu novads','089',1119,1),
+ (3281,'Siguldas novads','091',1119,1),
+ (3282,'Inčukalna novads','037',1119,1),
+ (3283,'Ādažu novads','011',1119,1),
+ (3284,'Babītes novads','012',1119,1),
+ (3285,'Carnikavas novads','020',1119,1),
+ (3286,'Garkalnes novads','031',1119,1),
+ (3287,'Krimuldas novads','048',1119,1),
+ (3288,'Mālpils novads','061',1119,1),
+ (3289,'Mārupes novads','062',1119,1),
+ (3290,'Ropažu novads','080',1119,1),
+ (3291,'SÄ“jas novads','090',1119,1),
+ (3292,'Stopiņu novads','095',1119,1),
+ (3293,'Saldus novads','088',1119,1),
+ (3294,'Brocēnu novads','018',1119,1),
+ (3295,'Talsu novads','097',1119,1),
+ (3296,'Dundagas novads','027',1119,1),
+ (3297,'MÄ“rsraga novads','063',1119,1),
+ (3298,'Rojas novads','079',1119,1),
+ (3299,'Tukuma novads','099',1119,1),
+ (3300,'Kandavas novads','043',1119,1),
+ (3301,'Engures novads','029',1119,1),
+ (3302,'Jaunpils novads','040',1119,1),
+ (3303,'Valkas novads','101',1119,1),
+ (3304,'Smiltenes novads','094',1119,1),
+ (3305,'Strenču novads','096',1119,1),
+ (3306,'Kocēnu novads','045',1119,1),
+ (3307,'Mazsalacas novads','060',1119,1),
+ (3308,'RÅ«jienas novads','084',1119,1),
+ (3309,'Beverīnas novads','017',1119,1),
+ (3310,'Burtnieku novads','019',1119,1),
+ (3311,'Naukšēnu novads','064',1119,1),
+ (3312,'Ventspils novads','106',1119,1),
+ (3313,'JÄ“kabpils','JKB',1119,1),
+ (3314,'Valmiera','VMR',1119,1),
+ (3315,'Ajdābiyā','AJ',1123,1),
+ (3316,'Al Buţnān','BU',1123,1),
+ (3317,'Al Hizām al Akhdar','HZ',1123,1),
+ (3318,'Al Jabal al Akhdar','JA',1123,1),
+ (3319,'Al Jifārah','JI',1123,1),
+ (3320,'Al Jufrah','JU',1123,1),
+ (3321,'Al Kufrah','KF',1123,1),
+ (3322,'Al Marj','MJ',1123,1),
+ (3323,'Al Marqab','MB',1123,1),
+ (3324,'Al Qaţrūn','QT',1123,1),
+ (3325,'Al Qubbah','QB',1123,1),
+ (3326,'Al Wāhah','WA',1123,1),
+ (3327,'An Nuqaţ al Khams','NQ',1123,1),
+ (3328,'Ash Shāţi\'','SH',1123,1),
+ (3329,'Az Zāwiyah','ZA',1123,1),
+ (3330,'Banghāzī','BA',1123,1),
+ (3331,'Banī Walīd','BW',1123,1),
+ (3332,'Darnah','DR',1123,1),
+ (3333,'Ghadāmis','GD',1123,1),
+ (3334,'Gharyān','GR',1123,1),
+ (3335,'Ghāt','GT',1123,1),
+ (3336,'Jaghbūb','JB',1123,1),
+ (3337,'Mişrātah','MI',1123,1),
+ (3338,'Mizdah','MZ',1123,1),
+ (3339,'Murzuq','MQ',1123,1),
+ (3340,'Nālūt','NL',1123,1),
+ (3341,'Sabhā','SB',1123,1),
+ (3342,'Şabrātah Şurmān','SS',1123,1),
+ (3343,'Surt','SR',1123,1),
+ (3344,'Tājūrā\' wa an Nawāhī al Arbāh','TN',1123,1),
+ (3345,'Ţarābulus','TB',1123,1),
+ (3346,'Tarhūnah-Masallātah','TM',1123,1),
+ (3347,'Wādī al hayāt','WD',1123,1),
+ (3348,'Yafran-Jādū','YJ',1123,1),
+ (3349,'Agadir','AGD',1146,1),
+ (3350,'Aït Baha','BAH',1146,1),
+ (3351,'Aït Melloul','MEL',1146,1),
+ (3352,'Al Haouz','HAO',1146,1),
+ (3353,'Al Hoceïma','HOC',1146,1),
+ (3354,'Assa-Zag','ASZ',1146,1),
+ (3355,'Azilal','AZI',1146,1),
+ (3356,'Beni Mellal','BEM',1146,1),
+ (3357,'Ben Sllmane','BES',1146,1),
+ (3358,'Berkane','BER',1146,1),
+ (3359,'Boujdour','BOD',1146,1),
+ (3360,'Boulemane','BOM',1146,1),
+ (3361,'Casablanca  [Dar el Beïda]','CAS',1146,1),
+ (3362,'Chefchaouene','CHE',1146,1),
+ (3363,'Chichaoua','CHI',1146,1),
+ (3364,'El Hajeb','HAJ',1146,1),
+ (3365,'El Jadida','JDI',1146,1),
+ (3366,'Errachidia','ERR',1146,1),
+ (3367,'Essaouira','ESI',1146,1),
+ (3368,'Es Smara','ESM',1146,1),
+ (3369,'Fès','FES',1146,1),
+ (3370,'Figuig','FIG',1146,1),
+ (3371,'Guelmim','GUE',1146,1),
+ (3372,'Ifrane','IFR',1146,1),
+ (3373,'Jerada','JRA',1146,1),
+ (3374,'Kelaat Sraghna','KES',1146,1),
+ (3375,'Kénitra','KEN',1146,1),
+ (3376,'Khemisaet','KHE',1146,1),
+ (3377,'Khenifra','KHN',1146,1),
+ (3378,'Khouribga','KHO',1146,1),
+ (3379,'Laâyoune (EH)','LAA',1146,1),
+ (3380,'Larache','LAP',1146,1),
+ (3381,'Marrakech','MAR',1146,1),
+ (3382,'Meknsès','MEK',1146,1),
+ (3383,'Nador','NAD',1146,1),
+ (3384,'Ouarzazate','OUA',1146,1),
+ (3385,'Oued ed Dahab (EH)','OUD',1146,1),
+ (3386,'Oujda','OUJ',1146,1),
+ (3387,'Rabat-Salé','RBA',1146,1),
+ (3388,'Safi','SAF',1146,1),
+ (3389,'Sefrou','SEF',1146,1),
+ (3390,'Settat','SET',1146,1),
+ (3391,'Sidl Kacem','SIK',1146,1),
+ (3392,'Tanger','TNG',1146,1),
+ (3393,'Tan-Tan','TNT',1146,1),
+ (3394,'Taounate','TAO',1146,1),
+ (3395,'Taroudannt','TAR',1146,1),
+ (3396,'Tata','TAT',1146,1),
+ (3397,'Taza','TAZ',1146,1),
+ (3398,'Tétouan','TET',1146,1),
+ (3399,'Tiznit','TIZ',1146,1),
+ (3400,'Gagauzia, Unitate Teritoriala Autonoma','GA',1142,1),
+ (3401,'Chisinau','CU',1142,1),
+ (3402,'Stinga Nistrului, unitatea teritoriala din','SN',1142,1),
+ (3403,'Balti','BA',1142,1),
+ (3404,'Cahul','CA',1142,1),
+ (3405,'Edinet','ED',1142,1),
+ (3406,'Lapusna','LA',1142,1),
+ (3407,'Orhei','OR',1142,1),
+ (3408,'Soroca','SO',1142,1),
+ (3409,'Taraclia','TA',1142,1),
+ (3410,'Tighina [Bender]','TI',1142,1),
+ (3411,'Ungheni','UN',1142,1),
+ (3412,'Antananarivo','T',1129,1),
+ (3413,'Antsiranana','D',1129,1),
+ (3414,'Fianarantsoa','F',1129,1),
+ (3415,'Mahajanga','M',1129,1),
+ (3416,'Toamasina','A',1129,1),
+ (3417,'Toliara','U',1129,1),
+ (3418,'Ailinglapalap','ALL',1135,1),
+ (3419,'Ailuk','ALK',1135,1),
+ (3420,'Arno','ARN',1135,1),
+ (3421,'Aur','AUR',1135,1),
+ (3422,'Ebon','EBO',1135,1),
+ (3423,'Eniwetok','ENI',1135,1),
+ (3424,'Jaluit','JAL',1135,1),
+ (3425,'Kili','KIL',1135,1),
+ (3426,'Kwajalein','KWA',1135,1),
+ (3427,'Lae','LAE',1135,1),
+ (3428,'Lib','LIB',1135,1),
+ (3429,'Likiep','LIK',1135,1),
+ (3430,'Majuro','MAJ',1135,1),
+ (3431,'Maloelap','MAL',1135,1),
+ (3432,'Mejit','MEJ',1135,1),
+ (3433,'Mili','MIL',1135,1),
+ (3434,'Namorik','NMK',1135,1),
+ (3435,'Namu','NMU',1135,1),
+ (3436,'Rongelap','RON',1135,1),
+ (3437,'Ujae','UJA',1135,1),
+ (3438,'Ujelang','UJL',1135,1),
+ (3439,'Utirik','UTI',1135,1),
+ (3440,'Wotho','WTN',1135,1),
+ (3441,'Wotje','WTJ',1135,1),
+ (3442,'Bamako','BK0',1133,1),
+ (3443,'Gao','7',1133,1),
+ (3444,'Kayes','1',1133,1),
+ (3445,'Kidal','8',1133,1),
+ (3446,'Xoulikoro','2',1133,1),
+ (3447,'Mopti','5',1133,1),
+ (3448,'S69ou','4',1133,1),
+ (3449,'Sikasso','3',1133,1),
+ (3450,'Tombouctou','6',1133,1),
+ (3451,'Ayeyarwady','07',1035,1),
+ (3452,'Bago','02',1035,1),
+ (3453,'Magway','03',1035,1),
+ (3454,'Mandalay','04',1035,1),
+ (3455,'Sagaing','01',1035,1),
+ (3456,'Tanintharyi','05',1035,1),
+ (3457,'Yangon','06',1035,1),
+ (3458,'Chin','14',1035,1),
+ (3459,'Kachin','11',1035,1),
+ (3460,'Kayah','12',1035,1),
+ (3461,'Kayin','13',1035,1),
+ (3462,'Mon','15',1035,1),
+ (3463,'Rakhine','16',1035,1),
+ (3464,'Shan','17',1035,1),
+ (3465,'Ulaanbaatar','1',1144,1),
+ (3466,'Arhangay','073',1144,1),
+ (3467,'Bayanhongor','069',1144,1),
+ (3468,'Bayan-Olgiy','071',1144,1),
+ (3469,'Bulgan','067',1144,1),
+ (3470,'Darhan uul','037',1144,1),
+ (3471,'Dornod','061',1144,1),
+ (3472,'Dornogov,','063',1144,1),
+ (3473,'DundgovL','059',1144,1),
+ (3474,'Dzavhan','057',1144,1),
+ (3475,'Govi-Altay','065',1144,1),
+ (3476,'Govi-Smber','064',1144,1),
+ (3477,'Hentiy','039',1144,1),
+ (3478,'Hovd','043',1144,1),
+ (3479,'Hovsgol','041',1144,1),
+ (3480,'Omnogovi','053',1144,1),
+ (3481,'Orhon','035',1144,1),
+ (3482,'Ovorhangay','055',1144,1),
+ (3483,'Selenge','049',1144,1),
+ (3484,'Shbaatar','051',1144,1),
+ (3485,'Tov','047',1144,1),
+ (3486,'Uvs','046',1144,1),
+ (3487,'Nouakchott','NKC',1137,1),
+ (3488,'Assaba','03',1137,1),
+ (3489,'Brakna','05',1137,1),
+ (3490,'Dakhlet Nouadhibou','08',1137,1),
+ (3491,'Gorgol','04',1137,1),
+ (3492,'Guidimaka','10',1137,1),
+ (3493,'Hodh ech Chargui','01',1137,1),
+ (3494,'Hodh el Charbi','02',1137,1),
+ (3495,'Inchiri','12',1137,1),
+ (3496,'Tagant','09',1137,1),
+ (3497,'Tiris Zemmour','11',1137,1),
+ (3498,'Trarza','06',1137,1),
+ (3499,'Beau Bassin-Rose Hill','BR',1138,1),
+ (3500,'Curepipe','CU',1138,1),
+ (3501,'Port Louis','PU',1138,1),
+ (3502,'Quatre Bornes','QB',1138,1),
+ (3503,'Vacosa-Phoenix','VP',1138,1),
+ (3504,'Black River','BL',1138,1),
+ (3505,'Flacq','FL',1138,1),
+ (3506,'Grand Port','GP',1138,1),
+ (3507,'Moka','MO',1138,1),
+ (3508,'Pamplemousses','PA',1138,1),
+ (3509,'Plaines Wilhems','PW',1138,1),
+ (3510,'Riviere du Rempart','RP',1138,1),
+ (3511,'Savanne','SA',1138,1),
+ (3512,'Agalega Islands','AG',1138,1),
+ (3513,'Cargados Carajos Shoals','CC',1138,1),
+ (3514,'Rodrigues Island','RO',1138,1),
+ (3515,'Male','MLE',1132,1),
+ (3516,'Alif','02',1132,1),
+ (3517,'Baa','20',1132,1),
+ (3518,'Dhaalu','17',1132,1),
+ (3519,'Faafu','14',1132,1),
+ (3520,'Gaaf Alif','27',1132,1),
+ (3521,'Gaefu Dhaalu','28',1132,1),
+ (3522,'Gnaviyani','29',1132,1),
+ (3523,'Haa Alif','07',1132,1),
+ (3524,'Haa Dhaalu','23',1132,1),
+ (3525,'Kaafu','26',1132,1),
+ (3526,'Laamu','05',1132,1),
+ (3527,'Lhaviyani','03',1132,1),
+ (3528,'Meemu','12',1132,1),
+ (3529,'Noonu','25',1132,1),
+ (3530,'Raa','13',1132,1),
+ (3531,'Seenu','01',1132,1),
+ (3532,'Shaviyani','24',1132,1),
+ (3533,'Thaa','08',1132,1),
+ (3534,'Vaavu','04',1132,1),
+ (3535,'Balaka','BA',1130,1),
+ (3536,'Blantyre','BL',1130,1),
+ (3537,'Chikwawa','CK',1130,1),
+ (3538,'Chiradzulu','CR',1130,1),
+ (3539,'Chitipa','CT',1130,1),
+ (3540,'Dedza','DE',1130,1),
+ (3541,'Dowa','DO',1130,1),
+ (3542,'Karonga','KR',1130,1),
+ (3543,'Kasungu','KS',1130,1),
+ (3544,'Likoma Island','LK',1130,1),
+ (3545,'Lilongwe','LI',1130,1),
+ (3546,'Machinga','MH',1130,1),
+ (3547,'Mangochi','MG',1130,1),
+ (3548,'Mchinji','MC',1130,1),
+ (3549,'Mulanje','MU',1130,1),
+ (3550,'Mwanza','MW',1130,1),
+ (3551,'Mzimba','MZ',1130,1),
+ (3552,'Nkhata Bay','NB',1130,1),
+ (3553,'Nkhotakota','NK',1130,1),
+ (3554,'Nsanje','NS',1130,1),
+ (3555,'Ntcheu','NU',1130,1),
+ (3556,'Ntchisi','NI',1130,1),
+ (3557,'Phalomba','PH',1130,1),
+ (3558,'Rumphi','RU',1130,1),
+ (3559,'Salima','SA',1130,1),
+ (3560,'Thyolo','TH',1130,1),
+ (3561,'Zomba','ZO',1130,1),
+ (3562,'Aguascalientes','AGU',1140,1),
+ (3563,'Baja California','BCN',1140,1),
+ (3564,'Baja California Sur','BCS',1140,1),
+ (3565,'Campeche','CAM',1140,1),
+ (3566,'Coahuila','COA',1140,1),
+ (3567,'Colima','COL',1140,1),
+ (3568,'Chiapas','CHP',1140,1),
+ (3569,'Chihuahua','CHH',1140,1),
+ (3570,'Durango','DUR',1140,1),
+ (3571,'Guanajuato','GUA',1140,1),
+ (3572,'Guerrero','GRO',1140,1),
+ (3573,'Hidalgo','HID',1140,1),
+ (3574,'Jalisco','JAL',1140,1),
+ (3575,'Mexico','MEX',1140,1),
+ (3576,'Michoacin','MIC',1140,1),
+ (3577,'Morelos','MOR',1140,1),
+ (3578,'Nayarit','NAY',1140,1),
+ (3579,'Nuevo Leon','NLE',1140,1),
+ (3580,'Oaxaca','OAX',1140,1),
+ (3581,'Puebla','PUE',1140,1),
+ (3582,'Queretaro','QUE',1140,1),
+ (3583,'Quintana Roo','ROO',1140,1),
+ (3584,'San Luis Potosi','SLP',1140,1),
+ (3585,'Sinaloa','SIN',1140,1),
+ (3586,'Sonora','SON',1140,1),
+ (3587,'Tabasco','TAB',1140,1),
+ (3588,'Tamaulipas','TAM',1140,1),
+ (3589,'Tlaxcala','TLA',1140,1),
+ (3590,'Veracruz','VER',1140,1),
+ (3591,'Yucatan','YUC',1140,1),
+ (3592,'Zacatecas','ZAC',1140,1),
+ (3593,'Distrito Federal','DIF',1140,1),
+ (3594,'Wilayah Persekutuan Kuala Lumpur','14',1131,1),
+ (3595,'Wilayah Persekutuan Labuan','15',1131,1),
+ (3596,'Wilayah Persekutuan Putrajaya','16',1131,1),
+ (3597,'Johor','01',1131,1),
+ (3598,'Kedah','02',1131,1),
+ (3599,'Kelantan','03',1131,1),
+ (3600,'Melaka','04',1131,1),
+ (3601,'Negeri Sembilan','05',1131,1),
+ (3602,'Pahang','06',1131,1),
+ (3603,'Perak','08',1131,1),
+ (3604,'Perlis','09',1131,1),
+ (3605,'Pulau Pinang','07',1131,1),
+ (3606,'Sabah','12',1131,1),
+ (3607,'Sarawak','13',1131,1),
+ (3608,'Selangor','10',1131,1),
+ (3609,'Terengganu','11',1131,1),
+ (3610,'Maputo','MPM',1147,1),
+ (3611,'Cabo Delgado','P',1147,1),
+ (3612,'Gaza','G',1147,1),
+ (3613,'Inhambane','I',1147,1),
+ (3614,'Manica','B',1147,1),
+ (3615,'Numpula','N',1147,1),
+ (3616,'Niaaea','A',1147,1),
+ (3617,'Sofala','S',1147,1),
+ (3618,'Tete','T',1147,1),
+ (3619,'Zambezia','Q',1147,1),
+ (3620,'Caprivi','CA',1148,1),
+ (3621,'Erongo','ER',1148,1),
+ (3622,'Hardap','HA',1148,1),
+ (3623,'Karas','KA',1148,1),
+ (3624,'Khomas','KH',1148,1),
+ (3625,'Kunene','KU',1148,1),
+ (3626,'Ohangwena','OW',1148,1),
+ (3627,'Okavango','OK',1148,1),
+ (3628,'Omaheke','OH',1148,1),
+ (3629,'Omusati','OS',1148,1),
+ (3630,'Oshana','ON',1148,1),
+ (3631,'Oshikoto','OT',1148,1),
+ (3632,'Otjozondjupa','OD',1148,1),
+ (3633,'Niamey','8',1156,1),
+ (3634,'Agadez','1',1156,1),
+ (3635,'Diffa','2',1156,1),
+ (3636,'Dosso','3',1156,1),
+ (3637,'Maradi','4',1156,1),
+ (3638,'Tahoua','S',1156,1),
+ (3639,'Tillaberi','6',1156,1),
+ (3640,'Zinder','7',1156,1),
+ (3641,'Abuja Federal Capital Territory','FC',1157,1),
+ (3642,'Abia','AB',1157,1),
+ (3643,'Adamawa','AD',1157,1),
+ (3644,'Akwa Ibom','AK',1157,1),
+ (3645,'Anambra','AN',1157,1),
+ (3646,'Bauchi','BA',1157,1),
+ (3647,'Bayelsa','BY',1157,1),
+ (3648,'Benue','BE',1157,1),
+ (3649,'Borno','BO',1157,1),
+ (3650,'Cross River','CR',1157,1),
+ (3651,'Delta','DE',1157,1),
+ (3652,'Ebonyi','EB',1157,1),
+ (3653,'Edo','ED',1157,1),
+ (3654,'Ekiti','EK',1157,1),
+ (3655,'Enugu','EN',1157,1),
+ (3656,'Gombe','GO',1157,1),
+ (3657,'Imo','IM',1157,1),
+ (3658,'Jigawa','JI',1157,1),
+ (3659,'Kaduna','KD',1157,1),
+ (3660,'Kano','KN',1157,1),
+ (3661,'Katsina','KT',1157,1),
+ (3662,'Kebbi','KE',1157,1),
+ (3663,'Kogi','KO',1157,1),
+ (3664,'Kwara','KW',1157,1),
+ (3665,'Lagos','LA',1157,1),
+ (3666,'Nassarawa','NA',1157,1),
+ (3667,'Niger','NI',1157,1),
+ (3668,'Ogun','OG',1157,1),
+ (3669,'Ondo','ON',1157,1),
+ (3670,'Osun','OS',1157,1),
+ (3671,'Oyo','OY',1157,1),
+ (3672,'Rivers','RI',1157,1),
+ (3673,'Sokoto','SO',1157,1),
+ (3674,'Taraba','TA',1157,1),
+ (3675,'Yobe','YO',1157,1),
+ (3676,'Zamfara','ZA',1157,1),
+ (3677,'Plateau','PL',1157,1),
+ (3678,'Boaco','BO',1155,1),
+ (3679,'Carazo','CA',1155,1),
+ (3680,'Chinandega','CI',1155,1),
+ (3681,'Chontales','CO',1155,1),
+ (3682,'Esteli','ES',1155,1),
+ (3683,'Jinotega','JI',1155,1),
+ (3684,'Leon','LE',1155,1),
+ (3685,'Madriz','MD',1155,1),
+ (3686,'Managua','MN',1155,1),
+ (3687,'Masaya','MS',1155,1),
+ (3688,'Matagalpa','MT',1155,1),
+ (3689,'Nueva Segovia','NS',1155,1),
+ (3690,'Rio San Juan','SJ',1155,1),
+ (3691,'Rivas','RI',1155,1),
+ (3692,'Atlantico Norte','AN',1155,1),
+ (3693,'Atlantico Sur','AS',1155,1),
+ (3694,'Drente','DR',1152,1),
+ (3695,'Flevoland','FL',1152,1),
+ (3696,'Friesland','FR',1152,1),
+ (3697,'Gelderland','GL',1152,1),
+ (3698,'Groningen','GR',1152,1),
+ (3699,'Noord-Brabant','NB',1152,1),
+ (3700,'Noord-Holland','NH',1152,1),
+ (3701,'Overijssel','OV',1152,1),
+ (3702,'Utrecht','UT',1152,1),
+ (3703,'Zuid-Holland','ZH',1152,1),
+ (3704,'Zeeland','ZL',1152,1),
+ (3705,'Akershus','02',1161,1),
+ (3706,'Aust-Agder','09',1161,1),
+ (3707,'Buskerud','06',1161,1),
+ (3708,'Finnmark','20',1161,1),
+ (3709,'Hedmark','04',1161,1),
+ (3710,'Møre og Romsdal','15',1161,1),
+ (3711,'Nordland','18',1161,1),
+ (3712,'Nord-Trøndelag','17',1161,1),
+ (3713,'Oppland','05',1161,1),
+ (3714,'Oslo','03',1161,1),
+ (3715,'Rogaland','11',1161,1),
+ (3716,'Sør-Trøndelag','16',1161,1),
+ (3717,'Telemark','06',1161,1),
+ (3718,'Troms','19',1161,1),
+ (3719,'Vest-Agder','10',1161,1),
+ (3720,'Vestfold','07',1161,1),
+ (3721,'Vestland','46',1161,1),
+ (3722,'Østfold','01',1161,1),
+ (3723,'Jan Mayen','22',1161,1),
+ (3724,'Svalbard','21',1161,1),
+ (3725,'Auckland','AUK',1154,1),
+ (3726,'Bay of Plenty','BOP',1154,1),
+ (3727,'Canterbury','CAN',1154,1),
+ (3728,'Gisborne','GIS',1154,1),
+ (3729,'Hawkes Bay','HKB',1154,1),
+ (3730,'Manawatu-Wanganui','MWT',1154,1),
+ (3731,'Marlborough','MBH',1154,1),
+ (3732,'Nelson','NSN',1154,1),
+ (3733,'Northland','NTL',1154,1),
+ (3734,'Otago','OTA',1154,1),
+ (3735,'Southland','STL',1154,1),
+ (3736,'Taranaki','TKI',1154,1),
+ (3737,'Tasman','TAS',1154,1),
+ (3738,'Waikato','WKO',1154,1),
+ (3739,'Wellington','WGN',1154,1),
+ (3740,'West Coast','WTC',1154,1),
+ (3741,'Ad Dakhillyah','DA',1162,1),
+ (3742,'Al Batinah','BA',1162,1),
+ (3743,'Al Janblyah','JA',1162,1),
+ (3744,'Al Wusta','WU',1162,1),
+ (3745,'Ash Sharqlyah','SH',1162,1),
+ (3746,'Az Zahirah','ZA',1162,1),
+ (3747,'Masqat','MA',1162,1),
+ (3748,'Musandam','MU',1162,1),
+ (3749,'Jenin','_A',1165,1),
+ (3750,'Tubas','_B',1165,1),
+ (3751,'Tulkarm','_C',1165,1),
+ (3752,'Nablus','_D',1165,1),
+ (3753,'Qalqilya','_E',1165,1),
+ (3754,'Salfit','_F',1165,1),
+ (3755,'Ramallah and Al-Bireh','_G',1165,1),
+ (3756,'Jericho','_H',1165,1),
+ (3757,'Jerusalem','_I',1165,1),
+ (3758,'Bethlehem','_J',1165,1),
+ (3759,'Hebron','_K',1165,1),
+ (3760,'North Gaza','_L',1165,1),
+ (3761,'Gaza','_M',1165,1),
+ (3762,'Deir el-Balah','_N',1165,1),
+ (3763,'Khan Yunis','_O',1165,1),
+ (3764,'Rafah','_P',1165,1),
+ (3765,'Bocas del Toro','1',1166,1),
+ (3766,'Cocle','2',1166,1),
+ (3767,'Chiriqui','4',1166,1),
+ (3768,'Darien','5',1166,1),
+ (3769,'Herrera','6',1166,1),
+ (3770,'Loa Santoa','7',1166,1),
+ (3771,'Panama','8',1166,1),
+ (3772,'Veraguas','9',1166,1),
+ (3773,'Comarca de San Blas','Q',1166,1),
+ (3774,'El Callao','CAL',1169,1),
+ (3775,'Ancash','ANC',1169,1),
+ (3776,'Apurimac','APU',1169,1),
+ (3777,'Arequipa','ARE',1169,1),
+ (3778,'Ayacucho','AYA',1169,1),
+ (3779,'Cajamarca','CAJ',1169,1),
+ (3780,'Cuzco','CUS',1169,1),
+ (3781,'Huancavelica','HUV',1169,1),
+ (3782,'Huanuco','HUC',1169,1),
+ (3783,'Ica','ICA',1169,1),
+ (3784,'Junin','JUN',1169,1),
+ (3785,'La Libertad','LAL',1169,1),
+ (3786,'Lambayeque','LAM',1169,1),
+ (3787,'Lima','LIM',1169,1),
+ (3788,'Loreto','LOR',1169,1),
+ (3789,'Madre de Dios','MDD',1169,1),
+ (3790,'Moquegua','MOQ',1169,1),
+ (3791,'Pasco','PAS',1169,1),
+ (3792,'Piura','PIU',1169,1),
+ (3793,'Puno','PUN',1169,1),
+ (3794,'San Martin','SAM',1169,1),
+ (3795,'Tacna','TAC',1169,1),
+ (3796,'Tumbes','TUM',1169,1),
+ (3797,'Ucayali','UCA',1169,1),
+ (3798,'Amazonas','AMA',1169,1),
+ (3799,'National Capital District (Port Moresby)','NCD',1167,1),
+ (3800,'Chimbu','CPK',1167,1),
+ (3801,'Eastern Highlands','EHG',1167,1),
+ (3802,'East New Britain','EBR',1167,1),
+ (3803,'East Sepik','ESW',1167,1),
+ (3804,'Enga','EPW',1167,1),
+ (3805,'Gulf','GPK',1167,1),
+ (3806,'Madang','MPM',1167,1),
+ (3807,'Manus','MRL',1167,1),
+ (3808,'Milne Bay','MBA',1167,1),
+ (3809,'Morobe','MPL',1167,1),
+ (3810,'New Ireland','NIK',1167,1),
+ (3811,'North Solomons','NSA',1167,1),
+ (3812,'Santaun','SAN',1167,1),
+ (3813,'Southern Highlands','SHM',1167,1),
+ (3814,'Western Highlands','WHM',1167,1),
+ (3815,'West New Britain','WBK',1167,1),
+ (3816,'Abra','ABR',1170,1),
+ (3817,'Agusan del Norte','AGN',1170,1),
+ (3818,'Agusan del Sur','AGS',1170,1),
+ (3819,'Aklan','AKL',1170,1),
+ (3820,'Albay','ALB',1170,1),
+ (3821,'Antique','ANT',1170,1),
+ (3822,'Apayao','APA',1170,1),
+ (3823,'Aurora','AUR',1170,1),
+ (3824,'Basilan','BAS',1170,1),
+ (3825,'Bataan','BAN',1170,1),
+ (3826,'Batanes','BTN',1170,1),
+ (3827,'Batangas','BTG',1170,1),
+ (3828,'Benguet','BEN',1170,1),
+ (3829,'Biliran','BIL',1170,1),
+ (3830,'Bohol','BOH',1170,1),
+ (3831,'Bukidnon','BUK',1170,1),
+ (3832,'Bulacan','BUL',1170,1),
+ (3833,'Cagayan','CAG',1170,1),
+ (3834,'Camarines Norte','CAN',1170,1),
+ (3835,'Camarines Sur','CAS',1170,1),
+ (3836,'Camiguin','CAM',1170,1),
+ (3837,'Capiz','CAP',1170,1),
+ (3838,'Catanduanes','CAT',1170,1),
+ (3839,'Cavite','CAV',1170,1),
+ (3840,'Cebu','CEB',1170,1),
+ (3841,'Davao de Oro','COM',1170,1),
+ (3842,'Davao del Norte','DAV',1170,1),
+ (3843,'Davao del Sur','DAS',1170,1),
+ (3844,'Davao Oriental','DAO',1170,1),
+ (3845,'Eastern Samar','EAS',1170,1),
+ (3846,'Guimaras','GUI',1170,1),
+ (3847,'Ifugao','IFU',1170,1),
+ (3848,'Ilocos Norte','ILN',1170,1),
+ (3849,'Ilocos Sur','ILS',1170,1),
+ (3850,'Iloilo','ILI',1170,1),
+ (3851,'Isabela','ISA',1170,1),
+ (3852,'Kalinga','KAL',1170,1),
+ (3853,'Laguna','LAG',1170,1),
+ (3854,'Lanao del Norte','LAN',1170,1),
+ (3855,'Lanao del Sur','LAS',1170,1),
+ (3856,'La Union','LUN',1170,1),
+ (3857,'Leyte','LEY',1170,1),
+ (3858,'Maguindanao','MAG',1170,1),
+ (3859,'Marinduque','MAD',1170,1),
+ (3860,'Masbate','MAS',1170,1),
+ (3861,'Mindoro Occidental','MDC',1170,1),
+ (3862,'Mindoro Oriental','MDR',1170,1),
+ (3863,'Misamis Occidental','MSC',1170,1),
+ (3864,'Misamis Oriental','MSR',1170,1),
+ (3865,'Mountain Province','MOU',1170,1),
+ (3866,'Negroe Occidental','NEC',1170,1),
+ (3867,'Negros Oriental','NER',1170,1),
+ (3868,'Cotabato','NCO',1170,1),
+ (3869,'Northern Samar','NSA',1170,1),
+ (3870,'Nueva Ecija','NUE',1170,1),
+ (3871,'Nueva Vizcaya','NUV',1170,1),
+ (3872,'Palawan','PLW',1170,1),
+ (3873,'Pampanga','PAM',1170,1),
+ (3874,'Pangasinan','PAN',1170,1),
+ (3875,'Quezon','QUE',1170,1),
+ (3876,'Quirino','QUI',1170,1),
+ (3877,'Rizal','RIZ',1170,1),
+ (3878,'Romblon','ROM',1170,1),
+ (3879,'Sarangani','SAR',1170,1),
+ (3880,'Siquijor','SIG',1170,1),
+ (3881,'Sorsogon','SOR',1170,1),
+ (3882,'South Cotabato','SCO',1170,1),
+ (3883,'Southern Leyte','SLE',1170,1),
+ (3884,'Sultan Kudarat','SUK',1170,1),
+ (3885,'Sulu','SLU',1170,1),
+ (3886,'Surigao del Norte','SUN',1170,1),
+ (3887,'Surigao del Sur','SUR',1170,1),
+ (3888,'Tarlac','TAR',1170,1),
+ (3889,'Tawi-Tawi','TAW',1170,1),
+ (3890,'Western Samar','WSA',1170,1),
+ (3891,'Zambales','ZMB',1170,1),
+ (3892,'Zamboanga del Norte','ZAN',1170,1),
+ (3893,'Zamboanga del Sur','ZAS',1170,1),
+ (3894,'Zamboanga Sibiguey','ZSI',1170,1),
+ (3895,'Dinagat Islands','DIN',1170,1),
+ (3896,'Metropolitan Manila','MNL',1170,1),
+ (3897,'Islamabad Federal Capital Area','IS',1163,1),
+ (3898,'Baluchistan','BA',1163,1),
+ (3899,'Khyber Pakhtun Khawa','NW',1163,1),
+ (3900,'Sindh','SD',1163,1),
+ (3901,'Federally Administered Tribal Areas','TA',1163,1),
+ (3902,'Azad Kashmir','JK',1163,1),
+ (3903,'Gilgit-Baltistan','NA',1163,1),
+ (3904,'Punjab','PB',1163,1),
+ (3905,'Aveiro','01',1173,1),
+ (3906,'Beja','02',1173,1),
+ (3907,'Braga','03',1173,1),
+ (3908,'Bragança','04',1173,1),
+ (3909,'Castelo Branco','05',1173,1),
+ (3910,'Coimbra','06',1173,1),
+ (3911,'Évora','07',1173,1),
+ (3912,'Faro','08',1173,1),
+ (3913,'Guarda','09',1173,1),
+ (3914,'Leiria','10',1173,1),
+ (3915,'Lisboa','11',1173,1),
+ (3916,'Portalegre','12',1173,1),
+ (3917,'Porto','13',1173,1),
+ (3918,'Santarém','14',1173,1),
+ (3919,'Setúbal','15',1173,1),
+ (3920,'Viana do Castelo','16',1173,1),
+ (3921,'Vila Real','17',1173,1),
+ (3922,'Viseu','18',1173,1),
+ (3923,'Região Autónoma dos Açores','20',1173,1),
+ (3924,'Região Autónoma da Madeira','30',1173,1),
+ (3925,'Asuncion','ASU',1168,1),
+ (3926,'Alto Paraguay','16',1168,1),
+ (3927,'Alto Parana','10',1168,1),
+ (3928,'Amambay','13',1168,1),
+ (3929,'Boqueron','19',1168,1),
+ (3930,'Caeguazu','5',1168,1),
+ (3931,'Caazapl','6',1168,1),
+ (3932,'Canindeyu','14',1168,1),
+ (3933,'Concepcion','1',1168,1),
+ (3934,'Cordillera','3',1168,1),
+ (3935,'Guaira','4',1168,1),
+ (3936,'Itapua','7',1168,1),
+ (3937,'Miaiones','8',1168,1),
+ (3938,'Neembucu','12',1168,1),
+ (3939,'Paraguari','9',1168,1),
+ (3940,'Presidente Hayes','15',1168,1),
+ (3941,'San Pedro','2',1168,1),
+ (3942,'Ad Dawhah','DA',1175,1),
+ (3943,'Al Ghuwayriyah','GH',1175,1),
+ (3944,'Al Jumayliyah','JU',1175,1),
+ (3945,'Al Khawr','KH',1175,1),
+ (3946,'Al Wakrah','WA',1175,1),
+ (3947,'Ar Rayyan','RA',1175,1),
+ (3948,'Jariyan al Batnah','JB',1175,1),
+ (3949,'Madinat ash Shamal','MS',1175,1),
+ (3950,'Umm Salal','US',1175,1),
+ (3951,'Bucuresti','B',1176,1),
+ (3952,'Alba','AB',1176,1),
+ (3953,'Arad','AR',1176,1),
+ (3954,'ArgeÈ™','AG',1176,1),
+ (3955,'Bacău','BC',1176,1),
+ (3956,'Bihor','BH',1176,1),
+ (3957,'Bistrița-Năsăud','BN',1176,1),
+ (3958,'Botoșani','BT',1176,1),
+ (3959,'Brașov','BV',1176,1),
+ (3960,'Brăila','BR',1176,1),
+ (3961,'Buzău','BZ',1176,1),
+ (3962,'CaraÈ™-Severin','CS',1176,1),
+ (3963,'Călărași','CL',1176,1),
+ (3964,'Cluj','CJ',1176,1),
+ (3965,'Constanța','CT',1176,1),
+ (3966,'Covasna','CV',1176,1),
+ (3967,'Dâmbovița','DB',1176,1),
+ (3968,'Dolj','DJ',1176,1),
+ (3969,'Galați','GL',1176,1),
+ (3970,'Giurgiu','GR',1176,1),
+ (3971,'Gorj','GJ',1176,1),
+ (3972,'Harghita','HR',1176,1),
+ (3973,'Hunedoara','HD',1176,1),
+ (3974,'Ialomița','IL',1176,1),
+ (3975,'Iași','IS',1176,1),
+ (3976,'Ilfov','IF',1176,1),
+ (3977,'MaramureÈ™','MM',1176,1),
+ (3978,'Mehedinți','MH',1176,1),
+ (3979,'MureÈ™','MS',1176,1),
+ (3980,'NeamÈ›','NT',1176,1),
+ (3981,'Olt','OT',1176,1),
+ (3982,'Prahova','PH',1176,1),
+ (3983,'Satu Mare','SM',1176,1),
+ (3984,'Sălaj','SJ',1176,1),
+ (3985,'Sibiu','SB',1176,1),
+ (3986,'Suceava','SV',1176,1),
+ (3987,'Teleorman','TR',1176,1),
+ (3988,'TimiÈ™','TM',1176,1),
+ (3989,'Tulcea','TL',1176,1),
+ (3990,'Vaslui','VS',1176,1),
+ (3991,'Vâlcea','VL',1176,1),
+ (3992,'Vrancea','VN',1176,1),
+ (3993,'Adygeya, Respublika','AD',1177,1),
+ (3994,'Altay, Respublika','AL',1177,1),
+ (3995,'Bashkortostan, Respublika','BA',1177,1),
+ (3996,'Buryatiya, Respublika','BU',1177,1),
+ (3997,'Chechenskaya Respublika','CE',1177,1),
+ (3998,'Chuvashskaya Respublika','CU',1177,1),
+ (3999,'Dagestan, Respublika','DA',1177,1),
+ (4000,'Ingushskaya Respublika','IN',1177,1),
+ (4001,'Kabardino-Balkarskaya','KB',1177,1),
+ (4002,'Kalmykiya, Respublika','KL',1177,1),
+ (4003,'Karachayevo-Cherkesskaya Respublika','KC',1177,1),
+ (4004,'Kareliya, Respublika','KR',1177,1),
+ (4005,'Khakasiya, Respublika','KK',1177,1),
+ (4006,'Komi, Respublika','KO',1177,1),
+ (4007,'Mariy El, Respublika','ME',1177,1),
+ (4008,'Mordoviya, Respublika','MO',1177,1),
+ (4009,'Sakha, Respublika [Yakutiya]','SA',1177,1),
+ (4010,'Severnaya Osetiya, Respublika','SE',1177,1),
+ (4011,'Tatarstan, Respublika','TA',1177,1),
+ (4012,'Tyva, Respublika [Tuva]','TY',1177,1),
+ (4013,'Udmurtskaya Respublika','UD',1177,1),
+ (4014,'Altayskiy kray','ALT',1177,1),
+ (4015,'Khabarovskiy kray','KHA',1177,1),
+ (4016,'Krasnodarskiy kray','KDA',1177,1),
+ (4017,'Krasnoyarskiy kray','KYA',1177,1),
+ (4018,'Primorskiy kray','PRI',1177,1),
+ (4019,'Stavropol\'skiy kray','STA',1177,1),
+ (4020,'Amurskaya oblast\'','AMU',1177,1),
+ (4021,'Arkhangel\'skaya oblast\'','ARK',1177,1),
+ (4022,'Astrakhanskaya oblast\'','AST',1177,1),
+ (4023,'Belgorodskaya oblast\'','BEL',1177,1),
+ (4024,'Bryanskaya oblast\'','BRY',1177,1),
+ (4025,'Chelyabinskaya oblast\'','CHE',1177,1),
+ (4026,'Zabaykalsky Krai\'','ZSK',1177,1),
+ (4027,'Irkutskaya oblast\'','IRK',1177,1),
+ (4028,'Ivanovskaya oblast\'','IVA',1177,1),
+ (4029,'Kaliningradskaya oblast\'','KGD',1177,1),
+ (4030,'Kaluzhskaya oblast\'','KLU',1177,1),
+ (4031,'Kamchatka Krai\'','KAM',1177,1),
+ (4032,'Kemerovskaya oblast\'','KEM',1177,1),
+ (4033,'Kirovskaya oblast\'','KIR',1177,1),
+ (4034,'Kostromskaya oblast\'','KOS',1177,1),
+ (4035,'Kurganskaya oblast\'','KGN',1177,1),
+ (4036,'Kurskaya oblast\'','KRS',1177,1),
+ (4037,'Leningradskaya oblast\'','LEN',1177,1),
+ (4038,'Lipetskaya oblast\'','LIP',1177,1),
+ (4039,'Magadanskaya oblast\'','MAG',1177,1),
+ (4040,'Moskovskaya oblast\'','MOS',1177,1),
+ (4041,'Murmanskaya oblast\'','MUR',1177,1),
+ (4042,'Nizhegorodskaya oblast\'','NIZ',1177,1),
+ (4043,'Novgorodskaya oblast\'','NGR',1177,1),
+ (4044,'Novosibirskaya oblast\'','NVS',1177,1),
+ (4045,'Omskaya oblast\'','OMS',1177,1),
+ (4046,'Orenburgskaya oblast\'','ORE',1177,1),
+ (4047,'Orlovskaya oblast\'','ORL',1177,1),
+ (4048,'Penzenskaya oblast\'','PNZ',1177,1),
+ (4049,'Perm krai\'','PEK',1177,1),
+ (4050,'Pskovskaya oblast\'','PSK',1177,1),
+ (4051,'Rostovskaya oblast\'','ROS',1177,1),
+ (4052,'Ryazanskaya oblast\'','RYA',1177,1),
+ (4053,'Sakhalinskaya oblast\'','SAK',1177,1),
+ (4054,'Samarskaya oblast\'','SAM',1177,1),
+ (4055,'Saratovskaya oblast\'','SAR',1177,1),
+ (4056,'Smolenskaya oblast\'','SMO',1177,1),
+ (4057,'Sverdlovskaya oblast\'','SVE',1177,1),
+ (4058,'Tambovskaya oblast\'','TAM',1177,1),
+ (4059,'Tomskaya oblast\'','TOM',1177,1),
+ (4060,'Tul\'skaya oblast\'','TUL',1177,1),
+ (4061,'Tverskaya oblast\'','TVE',1177,1),
+ (4062,'Tyumenskaya oblast\'','TYU',1177,1),
+ (4063,'Ul\'yanovskaya oblast\'','ULY',1177,1),
+ (4064,'Vladimirskaya oblast\'','VLA',1177,1),
+ (4065,'Volgogradskaya oblast\'','VGG',1177,1),
+ (4066,'Vologodskaya oblast\'','VLG',1177,1),
+ (4067,'Voronezhskaya oblast\'','VOR',1177,1),
+ (4068,'Yaroslavskaya oblast\'','YAR',1177,1),
+ (4069,'Moskva','MOW',1177,1),
+ (4070,'Sankt-Peterburg','SPE',1177,1),
+ (4071,'Yevreyskaya avtonomnaya oblast\'','YEV',1177,1),
+ (4072,'Chukotskiy avtonomnyy okrug','CHU',1177,1),
+ (4073,'Khanty-Mansiyskiy avtonomnyy okrug','KHM',1177,1),
+ (4074,'Nenetskiy avtonomnyy okrug','NEN',1177,1),
+ (4075,'Yamalo-Nenetskiy avtonomnyy okrug','YAN',1177,1),
+ (4076,'Butare','C',1178,1),
+ (4077,'Byumba','I',1178,1),
+ (4078,'Cyangugu','E',1178,1),
+ (4079,'Gikongoro','D',1178,1),
+ (4080,'Gisenyi','G',1178,1),
+ (4081,'Gitarama','B',1178,1),
+ (4082,'Kibungo','J',1178,1),
+ (4083,'Kibuye','F',1178,1),
+ (4084,'Kigali-Rural Kigali y\' Icyaro','K',1178,1),
+ (4085,'Kigali-Ville Kigali Ngari','L',1178,1),
+ (4086,'Mutara','M',1178,1),
+ (4087,'Ruhengeri','H',1178,1),
+ (4088,'Saint Kitts','K',1181,1),
+ (4089,'Nevis','N',1181,1),
+ (4090,'Al Bahah','11',1187,1),
+ (4091,'Al Hudud Ash Shamaliyah','08',1187,1),
+ (4092,'Al Jawf','12',1187,1),
+ (4093,'Al Madinah','03',1187,1),
+ (4094,'Al Qasim','05',1187,1),
+ (4095,'Ar Riyad','01',1187,1),
+ (4096,'Asir','14',1187,1),
+ (4097,'Ha\'il','06',1187,1),
+ (4098,'Jlzan','09',1187,1),
+ (4099,'Makkah','02',1187,1),
+ (4100,'Najran','10',1187,1),
+ (4101,'Tabuk','07',1187,1),
+ (4102,'Ash Sharqiyah','04',1187,1),
+ (4103,'Capital Territory (Honiara)','CT',1194,1),
+ (4104,'Guadalcanal','GU',1194,1),
+ (4105,'Isabel','IS',1194,1),
+ (4106,'Makira','MK',1194,1),
+ (4107,'Malaita','ML',1194,1),
+ (4108,'Temotu','TE',1194,1),
+ (4109,'A\'ali an Nil','23',1200,1),
+ (4110,'Al Bah al Ahmar','26',1200,1),
+ (4111,'Al Buhayrat','18',1200,1),
+ (4112,'Al Jazirah','07',1200,1),
+ (4113,'Al Khartum','03',1200,1),
+ (4114,'Al Qadarif','06',1200,1),
+ (4115,'Al Wahdah','22',1200,1),
+ (4116,'An Nil','04',1200,1),
+ (4117,'An Nil al Abyaq','08',1200,1),
+ (4118,'An Nil al Azraq','24',1200,1),
+ (4119,'Ash Shamallyah','01',1200,1),
+ (4120,'Bahr al Jabal','17',1200,1),
+ (4121,'Gharb al Istiwa\'iyah','16',1200,1),
+ (4122,'Gharb Ba~r al Ghazal','14',1200,1),
+ (4123,'Gharb Darfur','12',1200,1),
+ (4124,'Gharb Kurdufan','10',1200,1),
+ (4125,'Janub Darfur','11',1200,1),
+ (4126,'Janub Rurdufan','13',1200,1),
+ (4127,'Jnqall','20',1200,1),
+ (4128,'Kassala','05',1200,1),
+ (4129,'Shamal Batr al Ghazal','15',1200,1),
+ (4130,'Shamal Darfur','02',1200,1),
+ (4131,'Shamal Kurdufan','09',1200,1),
+ (4132,'Sharq al Istiwa\'iyah','19',1200,1),
+ (4133,'Sinnar','25',1200,1),
+ (4134,'Warab','21',1200,1),
+ (4135,'Blekinge län','K',1204,1),
+ (4136,'Dalarnas län','W',1204,1),
+ (4137,'Gotlands län','I',1204,1),
+ (4138,'Gävleborgs län','X',1204,1),
+ (4139,'Hallands län','N',1204,1),
+ (4140,'Jämtlands län','Z',1204,1),
+ (4141,'Jönkopings län','F',1204,1),
+ (4142,'Kalmar län','H',1204,1),
+ (4143,'Kronobergs län','G',1204,1),
+ (4144,'Norrbottens län','BD',1204,1),
+ (4145,'Skåne län','M',1204,1),
+ (4146,'Stockholms län','AB',1204,1),
+ (4147,'Södermanlands län','D',1204,1),
+ (4148,'Uppsala län','C',1204,1),
+ (4149,'Värmlands län','S',1204,1),
+ (4150,'Västerbottens län','AC',1204,1),
+ (4151,'Västernorrlands län','Y',1204,1),
+ (4152,'Västmanlands län','U',1204,1),
+ (4153,'Västra Götalands län','Q',1204,1),
+ (4154,'Örebro län','T',1204,1),
+ (4155,'Östergötlands län','E',1204,1),
+ (4156,'Saint Helena','SH',1180,1),
+ (4157,'Ascension','AC',1180,1),
+ (4158,'Tristan da Cunha','TA',1180,1),
+ (4159,'Ajdovščina','001',1193,1),
+ (4160,'Beltinci','002',1193,1),
+ (4161,'Benedikt','148',1193,1),
+ (4162,'Bistrica ob Sotli','149',1193,1),
+ (4163,'Bled','003',1193,1),
+ (4164,'Bloke','150',1193,1),
+ (4165,'Bohinj','004',1193,1),
+ (4166,'Borovnica','005',1193,1),
+ (4167,'Bovec','006',1193,1),
+ (4168,'Braslovče','151',1193,1),
+ (4169,'Brda','007',1193,1),
+ (4170,'Brezovica','008',1193,1),
+ (4171,'Brežice','009',1193,1),
+ (4172,'Cankova','152',1193,1),
+ (4173,'Celje','011',1193,1),
+ (4174,'Cerklje na Gorenjskem','012',1193,1),
+ (4175,'Cerknica','013',1193,1),
+ (4176,'Cerkno','014',1193,1),
+ (4177,'Cerkvenjak','153',1193,1),
+ (4178,'Črenšovci','015',1193,1),
+ (4179,'Črna na Koroškem','016',1193,1),
+ (4180,'ÄŒrnomelj','017',1193,1),
+ (4181,'Destrnik','018',1193,1),
+ (4182,'Divača','019',1193,1),
+ (4183,'Dobje','154',1193,1),
+ (4184,'Dobrepolje','020',1193,1),
+ (4185,'Dobrna','155',1193,1),
+ (4186,'Dobrova-Polhov Gradec','021',1193,1),
+ (4187,'Dobrovnik','156',1193,1),
+ (4188,'Dol pri Ljubljani','022',1193,1),
+ (4189,'Dolenjske Toplice','157',1193,1),
+ (4190,'Domžale','023',1193,1),
+ (4191,'Dornava','024',1193,1),
+ (4192,'Dravograd','025',1193,1),
+ (4193,'Duplek','026',1193,1),
+ (4194,'Gorenja vas-Poljane','027',1193,1),
+ (4195,'Gorišnica','028',1193,1),
+ (4196,'Gornja Radgona','029',1193,1),
+ (4197,'Gornji Grad','030',1193,1),
+ (4198,'Gornji Petrovci','031',1193,1),
+ (4199,'Grad','158',1193,1),
+ (4200,'Grosuplje','032',1193,1),
+ (4201,'Hajdina','159',1193,1),
+ (4202,'Hoče-Slivnica','160',1193,1),
+ (4203,'Hodoš','161',1193,1),
+ (4204,'Horjul','162',1193,1),
+ (4205,'Hrastnik','034',1193,1),
+ (4206,'Hrpelje-Kozina','035',1193,1),
+ (4207,'Idrija','036',1193,1),
+ (4208,'Ig','037',1193,1),
+ (4209,'Ilirska Bistrica','038',1193,1),
+ (4210,'Ivančna Gorica','039',1193,1),
+ (4211,'Izola','040',1193,1),
+ (4212,'Jesenice','041',1193,1),
+ (4213,'Jezersko','163',1193,1),
+ (4214,'Juršinci','042',1193,1),
+ (4215,'Kamnik','043',1193,1),
+ (4216,'Kanal','044',1193,1),
+ (4217,'Kidričevo','045',1193,1),
+ (4218,'Kobarid','046',1193,1),
+ (4219,'Kobilje','047',1193,1),
+ (4220,'Kočevje','048',1193,1),
+ (4221,'Komen','049',1193,1),
+ (4222,'Komenda','164',1193,1),
+ (4223,'Koper','050',1193,1),
+ (4224,'Kostel','165',1193,1),
+ (4225,'Kozje','051',1193,1),
+ (4226,'Kranj','052',1193,1),
+ (4227,'Kranjska Gora','053',1193,1),
+ (4228,'Križevci','166',1193,1),
+ (4229,'Krško','054',1193,1),
+ (4230,'Kungota','055',1193,1),
+ (4231,'Kuzma','056',1193,1),
+ (4232,'Laško','057',1193,1),
+ (4233,'Lenart','058',1193,1),
+ (4234,'Lendava','059',1193,1),
+ (4235,'Litija','060',1193,1),
+ (4236,'Ljubljana','061',1193,1),
+ (4237,'Ljubno','062',1193,1),
+ (4238,'Ljutomer','063',1193,1),
+ (4239,'Logatec','064',1193,1),
+ (4240,'Loška dolina','065',1193,1),
+ (4241,'Loški Potok','066',1193,1),
+ (4242,'Lovrenc na Pohorju','167',1193,1),
+ (4243,'Luče','067',1193,1),
+ (4244,'Lukovica','068',1193,1),
+ (4245,'Majšperk','069',1193,1),
+ (4246,'Maribor','070',1193,1),
+ (4247,'Markovci','168',1193,1),
+ (4248,'Medvode','071',1193,1),
+ (4249,'Mengeš','072',1193,1),
+ (4250,'Metlika','073',1193,1),
+ (4251,'Mežica','074',1193,1),
+ (4252,'Miklavž na Dravskem polju','169',1193,1),
+ (4253,'Miren-Kostanjevica','075',1193,1),
+ (4254,'Mirna Peč','170',1193,1),
+ (4255,'Mislinja','076',1193,1),
+ (4256,'Moravče','077',1193,1),
+ (4257,'Moravske Toplice','078',1193,1),
+ (4258,'Mozirje','079',1193,1),
+ (4259,'Murska Sobota','080',1193,1),
+ (4260,'Muta','081',1193,1),
+ (4261,'Naklo','082',1193,1),
+ (4262,'Nazarje','083',1193,1),
+ (4263,'Nova Gorica','084',1193,1),
+ (4264,'Novo mesto','085',1193,1),
+ (4265,'Sveta Ana','181',1193,1),
+ (4266,'Sveti Andraž v Slovenskih goricah','182',1193,1),
+ (4267,'Sveti Jurij','116',1193,1),
+ (4268,'Å alovci','033',1193,1),
+ (4269,'Å empeter-Vrtojba','183',1193,1),
+ (4270,'Šenčur','117',1193,1),
+ (4271,'Å entilj','118',1193,1),
+ (4272,'Å entjernej','119',1193,1),
+ (4273,'Å entjur','120',1193,1),
+ (4274,'Å kocjan','121',1193,1),
+ (4275,'Å kofja Loka','122',1193,1),
+ (4276,'Å kofljica','123',1193,1),
+ (4277,'Šmarje pri Jelšah','124',1193,1),
+ (4278,'Å martno ob Paki','125',1193,1),
+ (4279,'Å martno pri Litiji','194',1193,1),
+ (4280,'Šoštanj','126',1193,1),
+ (4281,'Å tore','127',1193,1),
+ (4282,'Tabor','184',1193,1),
+ (4283,'Tišina','010',1193,1),
+ (4284,'Tolmin','128',1193,1),
+ (4285,'Trbovlje','129',1193,1),
+ (4286,'Trebnje','130',1193,1),
+ (4287,'Trnovska vas','185',1193,1),
+ (4288,'Tržič','131',1193,1),
+ (4289,'Trzin','186',1193,1),
+ (4290,'Turnišče','132',1193,1),
+ (4291,'Velenje','133',1193,1),
+ (4292,'Velika Polana','187',1193,1),
+ (4293,'Velike Lašče','134',1193,1),
+ (4294,'Veržej','188',1193,1),
+ (4295,'Videm','135',1193,1),
+ (4296,'Vipava','136',1193,1),
+ (4297,'Vitanje','137',1193,1),
+ (4298,'Vojnik','138',1193,1),
+ (4299,'Vransko','189',1193,1),
+ (4300,'Vrhnika','140',1193,1),
+ (4301,'Vuzenica','141',1193,1),
+ (4302,'Zagorje ob Savi','142',1193,1),
+ (4303,'Zavrč','143',1193,1),
+ (4304,'Zreče','144',1193,1),
+ (4305,'Žalec','190',1193,1),
+ (4306,'Železniki','146',1193,1),
+ (4307,'Žetale','191',1193,1),
+ (4308,'Žiri','147',1193,1),
+ (4309,'Žirovnica','192',1193,1),
+ (4310,'Žužemberk','193',1193,1),
+ (4311,'Ankaran','86',1193,1),
+ (4312,'Apače','87',1193,1),
+ (4313,'Cirkulane','88',1193,1),
+ (4314,'Gorje','89',1193,1),
+ (4315,'Kostanjevica na Krki','90',1193,1),
+ (4316,'Log-Dragomer','91',1193,1),
+ (4317,'Makole','92',1193,1),
+ (4318,'Mirna','93',1193,1),
+ (4319,'Mokronog-Trebelno','94',1193,1),
+ (4320,'Odranci','95',1193,1),
+ (4321,'Oplotnica','96',1193,1),
+ (4322,'Ormož','97',1193,1),
+ (4323,'Osilnica','98',1193,1),
+ (4324,'Pesnica','99',1193,1),
+ (4325,'Piran','100',1193,1),
+ (4326,'Pivka','101',1193,1),
+ (4327,'Podčetrtek','102',1193,1),
+ (4328,'Podlehnik','103',1193,1),
+ (4329,'Podvelka','104',1193,1),
+ (4330,'Poljčane','105',1193,1),
+ (4331,'Polzela','106',1193,1),
+ (4332,'Postojna','107',1193,1),
+ (4333,'Prebold','108',1193,1),
+ (4334,'Preddvor','109',1193,1),
+ (4335,'Prevalje','110',1193,1),
+ (4336,'Ptuj','111',1193,1),
+ (4337,'Puconci','112',1193,1),
+ (4338,'Rače-Fram','113',1193,1),
+ (4339,'Radeče','114',1193,1),
+ (4340,'Radenci','115',1193,1),
+ (4341,'Radlje ob Dravi','139',1193,1),
+ (4342,'Radovljica','145',1193,1),
+ (4343,'Ravne na Koroškem','171',1193,1),
+ (4344,'Razkrižje','172',1193,1),
+ (4345,'Rečica ob Savinji','173',1193,1),
+ (4346,'Renče-Vogrsko','174',1193,1),
+ (4347,'Ribnica','175',1193,1),
+ (4348,'Ribnica na Pohorju','176',1193,1),
+ (4349,'Rogaška Slatina','177',1193,1),
+ (4350,'Rogašovci','178',1193,1),
+ (4351,'Rogatec','179',1193,1),
+ (4352,'Ruše','180',1193,1),
+ (4353,'Selnica ob Dravi','195',1193,1),
+ (4354,'Semič','196',1193,1),
+ (4355,'Å entrupert','197',1193,1),
+ (4356,'Sevnica','198',1193,1),
+ (4357,'Sežana','199',1193,1),
+ (4358,'Slovenj Gradec','200',1193,1),
+ (4359,'Slovenska Bistrica','201',1193,1),
+ (4360,'Slovenske Konjice','202',1193,1),
+ (4361,'Šmarješke Toplice','203',1193,1),
+ (4362,'Sodražica','204',1193,1),
+ (4363,'Solčava','205',1193,1),
+ (4364,'Središče ob Dravi','206',1193,1),
+ (4365,'Starše','207',1193,1),
+ (4366,'Straža','208',1193,1),
+ (4367,'Sveta Trojica v Slovenskih goricah','209',1193,1),
+ (4368,'Sveti Jurij v Slovenskih goricah','210',1193,1),
+ (4369,'Sveti Tomaž','211',1193,1),
+ (4370,'Vodice','212',1193,1),
+ (4371,'Banskobystrický kraj','BC',1192,1),
+ (4372,'Bratislavský kraj','BL',1192,1),
+ (4373,'Košický kraj','KI',1192,1),
+ (4374,'Nitriansky kraj','NJ',1192,1),
+ (4375,'Prešovský kraj','PV',1192,1),
+ (4376,'Trenčiansky kraj','TC',1192,1),
+ (4377,'Trnavský kraj','TA',1192,1),
+ (4378,'Žilinský kraj','ZI',1192,1),
+ (4379,'Western Area (Freetown)','W',1190,1),
+ (4380,'Eastern','E',1190,1),
+ (4381,'Northern','N',1190,1),
+ (4382,'Southern','S',1190,1),
+ (4383,'Dakar','DK',1188,1),
+ (4384,'Diourbel','DB',1188,1),
+ (4385,'Fatick','FK',1188,1),
+ (4386,'Kaolack','KL',1188,1),
+ (4387,'Kolda','KD',1188,1),
+ (4388,'Louga','LG',1188,1),
+ (4389,'Matam','MT',1188,1),
+ (4390,'Saint-Louis','SL',1188,1),
+ (4391,'Tambacounda','TC',1188,1),
+ (4392,'Thies','TH',1188,1),
+ (4393,'Ziguinchor','ZG',1188,1),
+ (4394,'Awdal','AW',1195,1),
+ (4395,'Bakool','BK',1195,1),
+ (4396,'Banaadir','BN',1195,1),
+ (4397,'Bay','BY',1195,1),
+ (4398,'Galguduud','GA',1195,1),
+ (4399,'Gedo','GE',1195,1),
+ (4400,'Hiirsan','HI',1195,1),
+ (4401,'Jubbada Dhexe','JD',1195,1),
+ (4402,'Jubbada Hoose','JH',1195,1),
+ (4403,'Mudug','MU',1195,1),
+ (4404,'Nugaal','NU',1195,1),
+ (4405,'Saneag','SA',1195,1),
+ (4406,'Shabeellaha Dhexe','SD',1195,1),
+ (4407,'Shabeellaha Hoose','SH',1195,1),
+ (4408,'Sool','SO',1195,1),
+ (4409,'Togdheer','TO',1195,1),
+ (4410,'Woqooyi Galbeed','WO',1195,1),
+ (4411,'Brokopondo','BR',1201,1),
+ (4412,'Commewijne','CM',1201,1),
+ (4413,'Coronie','CR',1201,1),
+ (4414,'Marowijne','MA',1201,1),
+ (4415,'Nickerie','NI',1201,1),
+ (4416,'Paramaribo','PM',1201,1),
+ (4417,'Saramacca','SA',1201,1),
+ (4418,'Sipaliwini','SI',1201,1),
+ (4419,'Wanica','WA',1201,1),
+ (4420,'Principe','P',1207,1),
+ (4421,'Sao Tome','S',1207,1),
+ (4422,'Ahuachapan','AH',1066,1),
+ (4423,'Cabanas','CA',1066,1),
+ (4424,'Cuscatlan','CU',1066,1),
+ (4425,'Chalatenango','CH',1066,1),
+ (4426,'Morazan','MO',1066,1),
+ (4427,'San Miguel','SM',1066,1),
+ (4428,'San Salvador','SS',1066,1),
+ (4429,'Santa Ana','SA',1066,1),
+ (4430,'San Vicente','SV',1066,1),
+ (4431,'Sonsonate','SO',1066,1),
+ (4432,'Usulutan','US',1066,1),
+ (4433,'La Libertad','LI',1066,1),
+ (4434,'La Paz','PA',1066,1),
+ (4435,'La Union','UN',1066,1),
+ (4436,'Al Hasakah','HA',1206,1),
+ (4437,'Al Ladhiqiyah','LA',1206,1),
+ (4438,'Al Qunaytirah','QU',1206,1),
+ (4439,'Ar Raqqah','RA',1206,1),
+ (4440,'As Suwayda\'','SU',1206,1),
+ (4441,'Dar\'a','DR',1206,1),
+ (4442,'Dayr az Zawr','DY',1206,1),
+ (4443,'Dimashq','DI',1206,1),
+ (4444,'Halab','HL',1206,1),
+ (4445,'Hamah','HM',1206,1),
+ (4446,'Jim\'','HI',1206,1),
+ (4447,'Idlib','ID',1206,1),
+ (4448,'Rif Dimashq','RD',1206,1),
+ (4449,'Tarts','TA',1206,1),
+ (4450,'Hhohho','HH',1203,1),
+ (4451,'Lubombo','LU',1203,1),
+ (4452,'Manzini','MA',1203,1),
+ (4453,'Shiselweni','SH',1203,1),
+ (4454,'Batha','BA',1043,1),
+ (4455,'Biltine','BI',1043,1),
+ (4456,'Borkou-Ennedi-Tibesti','BET',1043,1),
+ (4457,'Chari-Baguirmi','CB',1043,1),
+ (4458,'Guera','GR',1043,1),
+ (4459,'Kanem','KA',1043,1),
+ (4460,'Lac','LC',1043,1),
+ (4461,'Logone-Occidental','LO',1043,1),
+ (4462,'Logone-Oriental','LR',1043,1),
+ (4463,'Mayo-Kebbi','MK',1043,1),
+ (4464,'Moyen-Chari','MC',1043,1),
+ (4465,'Ouaddai','OD',1043,1),
+ (4466,'Salamat','SA',1043,1),
+ (4467,'Tandjile','TA',1043,1),
+ (4468,'Kara','K',1214,1),
+ (4469,'Maritime (Region)','M',1214,1),
+ (4470,'Savannes','S',1214,1),
+ (4471,'Krung Thep Maha Nakhon Bangkok','10',1211,1),
+ (4472,'Phatthaya','S',1211,1),
+ (4473,'Amnat Charoen','37',1211,1),
+ (4474,'Ang Thong','15',1211,1),
+ (4475,'Buri Ram','31',1211,1),
+ (4476,'Chachoengsao','24',1211,1),
+ (4477,'Chai Nat','18',1211,1),
+ (4478,'Chaiyaphum','36',1211,1),
+ (4479,'Chanthaburi','22',1211,1),
+ (4480,'Chiang Mai','50',1211,1),
+ (4481,'Chiang Rai','57',1211,1),
+ (4482,'Chon Buri','20',1211,1),
+ (4483,'Chumphon','86',1211,1),
+ (4484,'Kalasin','46',1211,1),
+ (4485,'Kamphasng Phet','62',1211,1),
+ (4486,'Kanchanaburi','71',1211,1),
+ (4487,'Khon Kaen','40',1211,1),
+ (4488,'Krabi','81',1211,1),
+ (4489,'Lampang','52',1211,1),
+ (4490,'Lamphun','51',1211,1),
+ (4491,'Loei','42',1211,1),
+ (4492,'Lop Buri','16',1211,1),
+ (4493,'Mae Hong Son','58',1211,1),
+ (4494,'Maha Sarakham','44',1211,1),
+ (4495,'Mukdahan','49',1211,1),
+ (4496,'Nakhon Nayok','26',1211,1),
+ (4497,'Nakhon Pathom','73',1211,1),
+ (4498,'Nakhon Phanom','48',1211,1),
+ (4499,'Nakhon Ratchasima','30',1211,1),
+ (4500,'Nakhon Sawan','60',1211,1),
+ (4501,'Nakhon Si Thammarat','80',1211,1),
+ (4502,'Nan','55',1211,1),
+ (4503,'Narathiwat','96',1211,1),
+ (4504,'Nong Bua Lam Phu','39',1211,1),
+ (4505,'Nong Khai','43',1211,1),
+ (4506,'Nonthaburi','12',1211,1),
+ (4507,'Pathum Thani','13',1211,1),
+ (4508,'Pattani','94',1211,1),
+ (4509,'Phangnga','82',1211,1),
+ (4510,'Phatthalung','93',1211,1),
+ (4511,'Phayao','56',1211,1),
+ (4512,'Phetchabun','67',1211,1),
+ (4513,'Phetchaburi','76',1211,1),
+ (4514,'Phichit','66',1211,1),
+ (4515,'Phitsanulok','65',1211,1),
+ (4516,'Phrae','54',1211,1),
+ (4517,'Phra Nakhon Si Ayutthaya','14',1211,1),
+ (4518,'Phuket','83',1211,1),
+ (4519,'Prachin Buri','25',1211,1),
+ (4520,'Prachuap Khiri Khan','77',1211,1),
+ (4521,'Ranong','85',1211,1),
+ (4522,'Ratchaburi','70',1211,1),
+ (4523,'Rayong','21',1211,1),
+ (4524,'Roi Et','45',1211,1),
+ (4525,'Sa Kaeo','27',1211,1),
+ (4526,'Sakon Nakhon','47',1211,1),
+ (4527,'Samut Prakan','11',1211,1),
+ (4528,'Samut Sakhon','74',1211,1),
+ (4529,'Samut Songkhram','75',1211,1),
+ (4530,'Saraburi','19',1211,1),
+ (4531,'Satun','91',1211,1),
+ (4532,'Sing Buri','17',1211,1),
+ (4533,'Si Sa Ket','33',1211,1),
+ (4534,'Songkhla','90',1211,1),
+ (4535,'Sukhothai','64',1211,1),
+ (4536,'Suphan Buri','72',1211,1),
+ (4537,'Surat Thani','84',1211,1),
+ (4538,'Surin','32',1211,1),
+ (4539,'Tak','63',1211,1),
+ (4540,'Trang','92',1211,1),
+ (4541,'Trat','23',1211,1),
+ (4542,'Ubon Ratchathani','34',1211,1),
+ (4543,'Udon Thani','41',1211,1),
+ (4544,'Uthai Thani','61',1211,1),
+ (4545,'Uttaradit','53',1211,1),
+ (4546,'Yala','95',1211,1),
+ (4547,'Yasothon','35',1211,1),
+ (4548,'Sughd','SU',1209,1),
+ (4549,'Khatlon','KT',1209,1),
+ (4550,'Gorno-Badakhshan','GB',1209,1),
+ (4551,'Dushanbe','DU',1209,1),
+ (4552,'Nohiyahoi Tobei Jumhurí','RA',1209,1),
+ (4553,'Ahal','A',1220,1),
+ (4554,'Balkan','B',1220,1),
+ (4555,'Dasoguz','D',1220,1),
+ (4556,'Lebap','L',1220,1),
+ (4557,'Mary','M',1220,1),
+ (4558,'Béja','31',1218,1),
+ (4559,'Ben Arous','13',1218,1),
+ (4560,'Bizerte','23',1218,1),
+ (4561,'Gabès','81',1218,1),
+ (4562,'Gafsa','71',1218,1),
+ (4563,'Jendouba','32',1218,1),
+ (4564,'Kairouan','41',1218,1),
+ (4565,'Rasserine','42',1218,1),
+ (4566,'Kebili','73',1218,1),
+ (4567,'L\'Ariana','12',1218,1),
+ (4568,'Le Ref','33',1218,1),
+ (4569,'Mahdia','53',1218,1),
+ (4570,'La Manouba','14',1218,1),
+ (4571,'Medenine','82',1218,1),
+ (4572,'Moneatir','52',1218,1),
+ (4573,'Naboul','21',1218,1),
+ (4574,'Sfax','61',1218,1),
+ (4575,'Sidi Bouxid','43',1218,1),
+ (4576,'Siliana','34',1218,1),
+ (4577,'Sousse','51',1218,1),
+ (4578,'Tataouine','83',1218,1),
+ (4579,'Tozeur','72',1218,1),
+ (4580,'Tunis','11',1218,1),
+ (4581,'Zaghouan','22',1218,1),
+ (4582,'Adana','01',1219,1),
+ (4583,'Ad yaman','02',1219,1),
+ (4584,'Afyon','03',1219,1),
+ (4585,'Ag r','04',1219,1),
+ (4586,'Aksaray','68',1219,1),
+ (4587,'Amasya','05',1219,1),
+ (4588,'Ankara','06',1219,1),
+ (4589,'Antalya','07',1219,1),
+ (4590,'Ardahan','75',1219,1),
+ (4591,'Artvin','08',1219,1),
+ (4592,'Aydin','09',1219,1),
+ (4593,'Bal kesir','10',1219,1),
+ (4594,'Bartin','74',1219,1),
+ (4595,'Batman','72',1219,1),
+ (4596,'Bayburt','69',1219,1),
+ (4597,'Bilecik','11',1219,1),
+ (4598,'Bingol','12',1219,1),
+ (4599,'Bitlis','13',1219,1),
+ (4600,'Bolu','14',1219,1),
+ (4601,'Burdur','15',1219,1),
+ (4602,'Bursa','16',1219,1),
+ (4603,'Canakkale','17',1219,1),
+ (4604,'Cankir','18',1219,1),
+ (4605,'Corum','19',1219,1),
+ (4606,'Denizli','20',1219,1),
+ (4607,'Diyarbakir','21',1219,1),
+ (4608,'Duzce','81',1219,1),
+ (4609,'Edirne','22',1219,1),
+ (4610,'Elazig','23',1219,1),
+ (4611,'Erzincan','24',1219,1),
+ (4612,'Erzurum','25',1219,1),
+ (4613,'Eskis\'ehir','26',1219,1),
+ (4614,'Gaziantep','27',1219,1),
+ (4615,'Giresun','28',1219,1),
+ (4616,'Gms\'hane','29',1219,1),
+ (4617,'Hakkari','30',1219,1),
+ (4618,'Hatay','31',1219,1),
+ (4619,'Igidir','76',1219,1),
+ (4620,'Isparta','32',1219,1),
+ (4621,'Icel','33',1219,1),
+ (4622,'Istanbul','34',1219,1),
+ (4623,'Izmir','35',1219,1),
+ (4624,'Kahramanmaras','46',1219,1),
+ (4625,'Karabk','78',1219,1),
+ (4626,'Karaman','70',1219,1),
+ (4627,'Kars','36',1219,1),
+ (4628,'Kastamonu','37',1219,1),
+ (4629,'Kayseri','38',1219,1),
+ (4630,'Kirikkale','71',1219,1),
+ (4631,'Kirklareli','39',1219,1),
+ (4632,'Kirs\'ehir','40',1219,1),
+ (4633,'Kilis','79',1219,1),
+ (4634,'Kocaeli','41',1219,1),
+ (4635,'Konya','42',1219,1),
+ (4636,'Ktahya','43',1219,1),
+ (4637,'Malatya','44',1219,1),
+ (4638,'Manisa','45',1219,1),
+ (4639,'Mardin','47',1219,1),
+ (4640,'Mugila','48',1219,1),
+ (4641,'Mus','49',1219,1),
+ (4642,'Nevs\'ehir','50',1219,1),
+ (4643,'Nigide','51',1219,1),
+ (4644,'Ordu','52',1219,1),
+ (4645,'Osmaniye','80',1219,1),
+ (4646,'Rize','53',1219,1),
+ (4647,'Sakarya','54',1219,1),
+ (4648,'Samsun','55',1219,1),
+ (4649,'Siirt','56',1219,1),
+ (4650,'Sinop','57',1219,1),
+ (4651,'Sivas','58',1219,1),
+ (4652,'S\'anliurfa','63',1219,1),
+ (4653,'S\'rnak','73',1219,1),
+ (4654,'Tekirdag','59',1219,1),
+ (4655,'Tokat','60',1219,1),
+ (4656,'Trabzon','61',1219,1),
+ (4657,'Tunceli','62',1219,1),
+ (4658,'Us\'ak','64',1219,1),
+ (4659,'Van','65',1219,1),
+ (4660,'Yalova','77',1219,1),
+ (4661,'Yozgat','66',1219,1),
+ (4662,'Zonguldak','67',1219,1),
+ (4663,'Couva-Tabaquite-Talparo','CTT',1217,1),
+ (4664,'Diego Martin','DMN',1217,1),
+ (4665,'Eastern Tobago','ETO',1217,1),
+ (4666,'Penal-Debe','PED',1217,1),
+ (4667,'Princes Town','PRT',1217,1),
+ (4668,'Rio Claro-Mayaro','RCM',1217,1),
+ (4669,'Sangre Grande','SGE',1217,1),
+ (4670,'San Juan-Laventille','SJL',1217,1),
+ (4671,'Siparia','SIP',1217,1),
+ (4672,'Tunapuna-Piarco','TUP',1217,1),
+ (4673,'Western Tobago','WTO',1217,1),
+ (4674,'Arima','ARI',1217,1),
+ (4675,'Chaguanas','CHA',1217,1),
+ (4676,'Point Fortin','PTF',1217,1),
+ (4677,'Port of Spain','POS',1217,1),
+ (4678,'San Fernando','SFO',1217,1),
+ (4679,'Aileu','AL',1063,1),
+ (4680,'Ainaro','AN',1063,1),
+ (4681,'Bacucau','BA',1063,1),
+ (4682,'Bobonaro','BO',1063,1),
+ (4683,'Cova Lima','CO',1063,1),
+ (4684,'Dili','DI',1063,1),
+ (4685,'Ermera','ER',1063,1),
+ (4686,'Laulem','LA',1063,1),
+ (4687,'Liquica','LI',1063,1),
+ (4688,'Manatuto','MT',1063,1),
+ (4689,'Manafahi','MF',1063,1),
+ (4690,'Oecussi','OE',1063,1),
+ (4691,'Viqueque','VI',1063,1),
+ (4692,'Changhua County','CHA',1208,1),
+ (4693,'Chiayi County','CYQ',1208,1),
+ (4694,'Hsinchu County','HSQ',1208,1),
+ (4695,'Hualien County','HUA',1208,1),
+ (4696,'Ilan County','ILA',1208,1),
+ (4697,'Kaohsiung County','KHQ',1208,1),
+ (4698,'Miaoli County','MIA',1208,1),
+ (4699,'Nantou County','NAN',1208,1),
+ (4700,'Penghu County','PEN',1208,1),
+ (4701,'Pingtung County','PIF',1208,1),
+ (4702,'Taichung County','TXQ',1208,1),
+ (4703,'Tainan County','TNQ',1208,1),
+ (4704,'Taipei County','TPQ',1208,1),
+ (4705,'Taitung County','TTT',1208,1),
+ (4706,'Taoyuan County','TAO',1208,1),
+ (4707,'Yunlin County','YUN',1208,1),
+ (4708,'Keelung City','KEE',1208,1),
+ (4709,'Taichung City','TXG',1208,1),
+ (4710,'Kaohsiung City','KHH',1208,1),
+ (4711,'Taipei City','TPE',1208,1),
+ (4712,'Chiayi City','CYI',1208,1),
+ (4713,'Hsinchu City','HSZ',1208,1),
+ (4714,'Tainan City','TNN',1208,1),
+ (4715,'Arusha','01',1210,1),
+ (4716,'Dar-es-Salaam','02',1210,1),
+ (4717,'Dodoma','03',1210,1),
+ (4718,'Iringa','04',1210,1),
+ (4719,'Kagera','05',1210,1),
+ (4720,'Kaskazini Pemba','06',1210,1),
+ (4721,'Kaskazini Unguja','07',1210,1),
+ (4722,'Xigoma','08',1210,1),
+ (4723,'Kilimanjaro','09',1210,1),
+ (4724,'Rusini Pemba','10',1210,1),
+ (4725,'Kusini Unguja','11',1210,1),
+ (4726,'Lindi','12',1210,1),
+ (4727,'Manyara','26',1210,1),
+ (4728,'Mara','13',1210,1),
+ (4729,'Mbeya','14',1210,1),
+ (4730,'Mjini Magharibi','15',1210,1),
+ (4731,'Morogoro','16',1210,1),
+ (4732,'Mtwara','17',1210,1),
+ (4733,'Pwani','19',1210,1),
+ (4734,'Rukwa','20',1210,1),
+ (4735,'Ruvuma','21',1210,1),
+ (4736,'Shinyanga','22',1210,1),
+ (4737,'Singida','23',1210,1),
+ (4738,'Tabora','24',1210,1),
+ (4739,'Tanga','25',1210,1),
+ (4740,'Cherkas\'ka Oblast\'','71',1224,1),
+ (4741,'Chernihivs\'ka Oblast\'','74',1224,1),
+ (4742,'Chernivets\'ka Oblast\'','77',1224,1),
+ (4743,'Dnipropetrovs\'ka Oblast\'','12',1224,1),
+ (4744,'Donets\'ka Oblast\'','14',1224,1),
+ (4745,'Ivano-Frankivs\'ka Oblast\'','26',1224,1),
+ (4746,'Kharkivs\'ka Oblast\'','63',1224,1),
+ (4747,'Khersons\'ka Oblast\'','65',1224,1),
+ (4748,'Khmel\'nyts\'ka Oblast\'','68',1224,1),
+ (4749,'Kirovohrads\'ka Oblast\'','35',1224,1),
+ (4750,'Kyivs\'ka Oblast\'','32',1224,1),
+ (4751,'Luhans\'ka Oblast\'','09',1224,1),
+ (4752,'L\'vivs\'ka Oblast\'','46',1224,1),
+ (4753,'Mykolaivs\'ka Oblast\'','48',1224,1),
+ (4754,'Odes \'ka Oblast\'','51',1224,1),
+ (4755,'Poltavs\'ka Oblast\'','53',1224,1),
+ (4756,'Rivnens\'ka Oblast\'','56',1224,1),
+ (4757,'Sums \'ka Oblast\'','59',1224,1),
+ (4758,'Ternopil\'s\'ka Oblast\'','61',1224,1),
+ (4759,'Vinnyts\'ka Oblast\'','05',1224,1),
+ (4760,'Volyos\'ka Oblast\'','07',1224,1),
+ (4761,'Zakarpats\'ka Oblast\'','21',1224,1),
+ (4762,'Zaporiz\'ka Oblast\'','23',1224,1),
+ (4763,'Zhytomyrs\'ka Oblast\'','18',1224,1),
+ (4764,'Respublika Krym','43',1224,1),
+ (4765,'Kyiv','30',1224,1),
+ (4766,'Sevastopol','40',1224,1),
+ (4767,'Adjumani','301',1223,1),
+ (4768,'Apac','302',1223,1),
+ (4769,'Arua','303',1223,1),
+ (4770,'Bugiri','201',1223,1),
+ (4771,'Bundibugyo','401',1223,1),
+ (4772,'Bushenyi','402',1223,1),
+ (4773,'Busia','202',1223,1),
+ (4774,'Gulu','304',1223,1),
+ (4775,'Hoima','403',1223,1),
+ (4776,'Iganga','203',1223,1),
+ (4777,'Jinja','204',1223,1),
+ (4778,'Kabale','404',1223,1),
+ (4779,'Kabarole','405',1223,1),
+ (4780,'Kaberamaido','213',1223,1),
+ (4781,'Kalangala','101',1223,1),
+ (4782,'Kampala','102',1223,1),
+ (4783,'Kamuli','205',1223,1),
+ (4784,'Kamwenge','413',1223,1),
+ (4785,'Kanungu','414',1223,1),
+ (4786,'Kapchorwa','206',1223,1),
+ (4787,'Kasese','406',1223,1),
+ (4788,'Katakwi','207',1223,1),
+ (4789,'Kayunga','112',1223,1),
+ (4790,'Kibaale','407',1223,1),
+ (4791,'Kiboga','103',1223,1),
+ (4792,'Kisoro','408',1223,1),
+ (4793,'Kitgum','305',1223,1),
+ (4794,'Kotido','306',1223,1),
+ (4795,'Kumi','208',1223,1),
+ (4796,'Kyenjojo','415',1223,1),
+ (4797,'Lira','307',1223,1),
+ (4798,'Luwero','104',1223,1),
+ (4799,'Masaka','105',1223,1),
+ (4800,'Masindi','409',1223,1),
+ (4801,'Mayuge','214',1223,1),
+ (4802,'Mbale','209',1223,1),
+ (4803,'Mbarara','410',1223,1),
+ (4804,'Moroto','308',1223,1),
+ (4805,'Moyo','309',1223,1),
+ (4806,'Mpigi','106',1223,1),
+ (4807,'Mubende','107',1223,1),
+ (4808,'Mukono','108',1223,1),
+ (4809,'Nakapiripirit','311',1223,1),
+ (4810,'Nakasongola','109',1223,1),
+ (4811,'Nebbi','310',1223,1),
+ (4812,'Ntungamo','411',1223,1),
+ (4813,'Pader','312',1223,1),
+ (4814,'Pallisa','210',1223,1),
+ (4815,'Rakai','110',1223,1),
+ (4816,'Rukungiri','412',1223,1),
+ (4817,'Sembabule','111',1223,1),
+ (4818,'Sironko','215',1223,1),
+ (4819,'Soroti','211',1223,1),
+ (4820,'Tororo','212',1223,1),
+ (4821,'Wakiso','113',1223,1),
+ (4822,'Yumbe','313',1223,1),
+ (4823,'Baker Island','81',1227,1),
+ (4824,'Howland Island','84',1227,1),
+ (4825,'Jarvis Island','86',1227,1),
+ (4826,'Johnston Atoll','67',1227,1),
+ (4827,'Kingman Reef','89',1227,1),
+ (4828,'Midway Islands','71',1227,1),
+ (4829,'Navassa Island','76',1227,1),
+ (4830,'Palmyra Atoll','95',1227,1),
+ (4831,'Wake Island','79',1227,1),
+ (4832,'Artigsa','AR',1229,1),
+ (4833,'Canelones','CA',1229,1),
+ (4834,'Cerro Largo','CL',1229,1),
+ (4835,'Colonia','CO',1229,1),
+ (4836,'Durazno','DU',1229,1),
+ (4837,'Flores','FS',1229,1),
+ (4838,'Lavalleja','LA',1229,1),
+ (4839,'Maldonado','MA',1229,1),
+ (4840,'Montevideo','MO',1229,1),
+ (4841,'Paysandu','PA',1229,1),
+ (4842,'Rivera','RV',1229,1),
+ (4843,'Rocha','RO',1229,1),
+ (4844,'Salto','SA',1229,1),
+ (4845,'Soriano','SO',1229,1),
+ (4846,'Tacuarembo','TA',1229,1),
+ (4847,'Treinta y Tres','TT',1229,1),
+ (4848,'Florida','FL',1229,1),
+ (4849,'Rio Negro','RN',1229,1),
+ (4850,'San Jose','SJ',1229,1),
+ (4851,'Toshkent (city)','TK',1230,1),
+ (4852,'Qoraqalpogiston Respublikasi','QR',1230,1),
+ (4853,'Andijon','AN',1230,1),
+ (4854,'Buxoro','BU',1230,1),
+ (4855,'Farg\'ona','FA',1230,1),
+ (4856,'Jizzax','JI',1230,1),
+ (4857,'Khorazm','KH',1230,1),
+ (4858,'Namangan','NG',1230,1),
+ (4859,'Navoiy','NW',1230,1),
+ (4860,'Qashqadaryo','QA',1230,1),
+ (4861,'Samarqand','SA',1230,1),
+ (4862,'Sirdaryo','SI',1230,1),
+ (4863,'Surxondaryo','SU',1230,1),
+ (4864,'Toshkent','TO',1230,1),
+ (4865,'Xorazm','XO',1230,1),
+ (4866,'Distrito Federal','A',1232,1),
+ (4867,'Anzoategui','B',1232,1),
+ (4868,'Apure','C',1232,1),
+ (4869,'Aragua','D',1232,1),
+ (4870,'Barinas','E',1232,1),
+ (4871,'Carabobo','G',1232,1),
+ (4872,'Cojedes','H',1232,1),
+ (4873,'Falcon','I',1232,1),
+ (4874,'Guarico','J',1232,1),
+ (4875,'Lara','K',1232,1),
+ (4876,'Merida','L',1232,1),
+ (4877,'Miranda','M',1232,1),
+ (4878,'Monagas','N',1232,1),
+ (4879,'Nueva Esparta','O',1232,1),
+ (4880,'Portuguesa','P',1232,1),
+ (4881,'Tachira','S',1232,1),
+ (4882,'Trujillo','T',1232,1),
+ (4883,'Vargas','X',1232,1),
+ (4884,'Yaracuy','U',1232,1),
+ (4885,'Zulia','V',1232,1),
+ (4886,'Delta Amacuro','Y',1232,1),
+ (4887,'Dependencias Federales','W',1232,1),
+ (4888,'An Giang','44',1233,1),
+ (4889,'Ba Ria - Vung Tau','43',1233,1),
+ (4890,'Bac Can','53',1233,1),
+ (4891,'Bac Giang','54',1233,1),
+ (4892,'Bac Lieu','55',1233,1),
+ (4893,'Bac Ninh','56',1233,1),
+ (4894,'Ben Tre','50',1233,1),
+ (4895,'Binh Dinh','31',1233,1),
+ (4896,'Binh Duong','57',1233,1),
+ (4897,'Binh Phuoc','58',1233,1),
+ (4898,'Binh Thuan','40',1233,1),
+ (4899,'Ca Mau','59',1233,1),
+ (4900,'Can Tho','48',1233,1),
+ (4901,'Cao Bang','04',1233,1),
+ (4902,'Da Nang, thanh pho','60',1233,1),
+ (4903,'Dong Nai','39',1233,1),
+ (4904,'Dong Thap','45',1233,1),
+ (4905,'Gia Lai','30',1233,1),
+ (4906,'Ha Giang','03',1233,1),
+ (4907,'Ha Nam','63',1233,1),
+ (4908,'Ha Noi, thu do','64',1233,1),
+ (4909,'Ha Tay','15',1233,1),
+ (4910,'Ha Tinh','23',1233,1),
+ (4911,'Hai Duong','61',1233,1),
+ (4912,'Hai Phong, thanh pho','62',1233,1),
+ (4913,'Hoa Binh','14',1233,1),
+ (4914,'Ho Chi Minh, thanh pho [Sai Gon]','65',1233,1),
+ (4915,'Hung Yen','66',1233,1),
+ (4916,'Khanh Hoa','34',1233,1),
+ (4917,'Kien Giang','47',1233,1),
+ (4918,'Kon Tum','28',1233,1),
+ (4919,'Lai Chau','01',1233,1),
+ (4920,'Lam Dong','35',1233,1),
+ (4921,'Lang Son','09',1233,1),
+ (4922,'Lao Cai','02',1233,1),
+ (4923,'Long An','41',1233,1),
+ (4924,'Nam Dinh','67',1233,1),
+ (4925,'Nghe An','22',1233,1),
+ (4926,'Ninh Binh','18',1233,1),
+ (4927,'Ninh Thuan','36',1233,1),
+ (4928,'Phu Tho','68',1233,1),
+ (4929,'Phu Yen','32',1233,1),
+ (4930,'Quang Binh','24',1233,1),
+ (4931,'Quang Nam','27',1233,1),
+ (4932,'Quang Ngai','29',1233,1),
+ (4933,'Quang Ninh','13',1233,1),
+ (4934,'Quang Tri','25',1233,1),
+ (4935,'Soc Trang','52',1233,1),
+ (4936,'Son La','05',1233,1),
+ (4937,'Tay Ninh','37',1233,1),
+ (4938,'Thai Binh','20',1233,1),
+ (4939,'Thai Nguyen','69',1233,1),
+ (4940,'Thanh Hoa','21',1233,1),
+ (4941,'Thua Thien-Hue','26',1233,1),
+ (4942,'Tien Giang','46',1233,1),
+ (4943,'Tra Vinh','51',1233,1),
+ (4944,'Tuyen Quang','07',1233,1),
+ (4945,'Vinh Long','49',1233,1),
+ (4946,'Vinh Phuc','70',1233,1),
+ (4947,'Yen Bai','06',1233,1),
+ (4948,'Malampa','MAP',1231,1),
+ (4949,'Penama','PAM',1231,1),
+ (4950,'Sanma','SAM',1231,1),
+ (4951,'Shefa','SEE',1231,1),
+ (4952,'Tafea','TAE',1231,1),
+ (4953,'Torba','TOB',1231,1),
+ (4954,'A\'ana','AA',1185,1),
+ (4955,'Aiga-i-le-Tai','AL',1185,1),
+ (4956,'Atua','AT',1185,1),
+ (4957,'Fa\'aaaleleaga','FA',1185,1),
+ (4958,'Gaga\'emauga','GE',1185,1),
+ (4959,'Gagaifomauga','GI',1185,1),
+ (4960,'Palauli','PA',1185,1),
+ (4961,'Satupa\'itea','SA',1185,1),
+ (4962,'Tuamasaga','TU',1185,1),
+ (4963,'Va\'a-o-Fonoti','VF',1185,1),
+ (4964,'Vaisigano','VS',1185,1),
+ (4965,'Crna Gora','CG',1243,1),
+ (4966,'Srbija','SR',1242,1),
+ (4967,'Kosovo-Metohija','KM',1242,1),
+ (4968,'Vojvodina','VO',1242,1),
+ (4969,'Abyan','AB',1237,1),
+ (4970,'Adan','AD',1237,1),
+ (4971,'Ad Dali','DA',1237,1),
+ (4972,'Al Bayda\'','BA',1237,1),
+ (4973,'Al Hudaydah','MU',1237,1),
+ (4974,'Al Mahrah','MR',1237,1),
+ (4975,'Al Mahwit','MW',1237,1),
+ (4976,'Amran','AM',1237,1),
+ (4977,'Dhamar','DH',1237,1),
+ (4978,'Hadramawt','HD',1237,1),
+ (4979,'Hajjah','HJ',1237,1),
+ (4980,'Ibb','IB',1237,1),
+ (4981,'Lahij','LA',1237,1),
+ (4982,'Ma\'rib','MA',1237,1),
+ (4983,'Sa\'dah','SD',1237,1),
+ (4984,'San\'a\'','SN',1237,1),
+ (4985,'Shabwah','SH',1237,1),
+ (4986,'Ta\'izz','TA',1237,1),
+ (4987,'Eastern Cape','EC',1196,1),
+ (4988,'Free State','FS',1196,1),
+ (4989,'Gauteng','GT',1196,1),
+ (4990,'Kwazulu-Natal','NL',1196,1),
+ (4991,'Mpumalanga','MP',1196,1),
+ (4992,'Northern Cape','NC',1196,1),
+ (4993,'Limpopo','NP',1196,1),
+ (4994,'Western Cape','WC',1196,1),
+ (4995,'North West','NW',1196,1),
+ (4996,'Copperbelt','08',1239,1),
+ (4997,'Luapula','04',1239,1),
+ (4998,'Lusaka','09',1239,1),
+ (4999,'North-Western','06',1239,1),
+ (5000,'Central','C',1239,1),
+ (5001,'Eastern','E',1239,1),
+ (5002,'Muchinga','M',1239,1),
+ (5003,'Northern','N',1239,1),
+ (5004,'Southern','S',1239,1),
+ (5005,'Western','W',1239,1),
+ (5006,'Bulawayo','BU',1240,1),
+ (5007,'Harare','HA',1240,1),
+ (5008,'Manicaland','MA',1240,1),
+ (5009,'Mashonaland Central','MC',1240,1),
+ (5010,'Mashonaland East','ME',1240,1),
+ (5011,'Mashonaland West','MW',1240,1),
+ (5012,'Masvingo','MV',1240,1),
+ (5013,'Matabeleland North','MN',1240,1),
+ (5014,'Matabeleland South','MS',1240,1),
+ (5015,'Midlands','MI',1240,1),
+ (5016,'South Karelia','SK',1075,1),
+ (5017,'South Ostrobothnia','SO',1075,1),
+ (5018,'Etelä-Savo','ES',1075,1),
+ (5019,'Häme','HH',1075,1),
+ (5020,'Itä-Uusimaa','IU',1075,1),
+ (5021,'Kainuu','KA',1075,1),
+ (5022,'Central Ostrobothnia','CO',1075,1),
+ (5023,'Central Finland','CF',1075,1),
+ (5024,'Kymenlaakso','KY',1075,1),
+ (5025,'Lapland','LA',1075,1),
+ (5026,'Tampere Region','TR',1075,1),
+ (5027,'Ostrobothnia','OB',1075,1),
+ (5028,'North Karelia','NK',1075,1),
+ (5029,'Northern Ostrobothnia','NO',1075,1),
+ (5030,'Northern Savo','NS',1075,1),
+ (5031,'Päijät-Häme','PH',1075,1),
+ (5032,'Satakunta','SK',1075,1),
+ (5033,'Uusimaa','UM',1075,1),
+ (5034,'South-West Finland','SW',1075,1),
+ (5035,'Ã…land','AL',1075,1),
+ (5036,'Limburg','LI',1152,1),
+ (5037,'Central and Western','CW',1098,1),
+ (5038,'Eastern','EA',1098,1),
+ (5039,'Southern','SO',1098,1),
+ (5040,'Wan Chai','WC',1098,1),
+ (5041,'Kowloon City','KC',1098,1),
+ (5042,'Kwun Tong','KU',1098,1),
+ (5043,'Sham Shui Po','SS',1098,1),
+ (5044,'Wong Tai Sin','WT',1098,1),
+ (5045,'Yau Tsim Mong','YT',1098,1),
+ (5046,'Islands','IS',1098,1),
+ (5047,'Kwai Tsing','KI',1098,1),
+ (5048,'North','NO',1098,1),
+ (5049,'Sai Kung','SK',1098,1),
+ (5050,'Sha Tin','ST',1098,1),
+ (5051,'Tai Po','TP',1098,1),
+ (5052,'Tsuen Wan','TW',1098,1),
+ (5053,'Tuen Mun','TM',1098,1),
+ (5054,'Yuen Long','YL',1098,1),
+ (5055,'Manchester','MR',1108,1),
+ (5056,'Al Manāmah (Al ‘Āşimah)','13',1016,1),
+ (5057,'Al Janūbīyah','14',1016,1),
+ (5058,'Al Wusţá','16',1016,1),
+ (5059,'Ash Shamālīyah','17',1016,1);
 /*!40000 ALTER TABLE `civicrm_state_province` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -12135,90 +12141,90 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_subscription_history` WRITE;
 /*!40000 ALTER TABLE `civicrm_subscription_history` DISABLE KEYS */;
 INSERT INTO `civicrm_subscription_history` (`id`, `contact_id`, `group_id`, `date`, `method`, `status`, `tracking`) VALUES
- (1,31,2,'2023-06-17 06:42:04','Admin','Added',NULL),
- (2,25,2,'2023-07-29 17:06:05','Email','Added',NULL),
- (3,35,2,'2023-10-10 10:20:46','Email','Added',NULL),
- (4,142,2,'2023-05-12 17:24:35','Email','Added',NULL),
- (5,5,2,'2023-08-15 17:12:02','Email','Added',NULL),
- (6,54,2,'2023-04-21 05:22:06','Email','Added',NULL),
- (7,4,2,'2022-11-15 04:45:11','Email','Added',NULL),
- (8,82,2,'2023-04-27 11:52:00','Admin','Added',NULL),
- (9,9,2,'2023-02-07 22:19:44','Email','Added',NULL),
- (10,143,2,'2023-10-15 15:04:37','Email','Added',NULL),
- (11,123,2,'2022-12-13 18:45:27','Email','Added',NULL),
- (12,78,2,'2023-10-11 10:52:30','Admin','Added',NULL),
- (13,70,2,'2023-09-05 08:07:37','Admin','Added',NULL),
- (14,173,2,'2023-01-03 19:01:41','Email','Added',NULL),
- (15,83,2,'2023-09-22 10:32:39','Email','Added',NULL),
- (16,72,2,'2023-08-16 17:46:34','Admin','Added',NULL),
- (17,186,2,'2023-07-10 09:04:31','Admin','Added',NULL),
- (18,127,2,'2023-08-03 16:56:41','Email','Added',NULL),
- (19,101,2,'2022-11-22 16:12:44','Admin','Added',NULL),
- (20,30,2,'2023-04-14 11:28:27','Email','Added',NULL),
- (21,89,2,'2023-05-01 10:11:01','Email','Added',NULL),
- (22,187,2,'2022-10-24 23:34:49','Email','Added',NULL),
- (23,194,2,'2023-01-14 21:44:34','Email','Added',NULL),
- (24,136,2,'2023-10-06 04:42:02','Email','Added',NULL),
- (25,115,2,'2023-05-29 09:42:23','Email','Added',NULL),
- (26,129,2,'2022-12-15 17:58:49','Email','Added',NULL),
- (27,168,2,'2023-06-01 16:19:03','Email','Added',NULL),
- (28,157,2,'2022-12-04 05:28:34','Email','Added',NULL),
- (29,172,2,'2023-01-29 07:28:48','Email','Added',NULL),
- (30,117,2,'2023-01-18 06:12:33','Admin','Added',NULL),
- (31,197,2,'2023-03-09 01:17:18','Email','Added',NULL),
- (32,98,2,'2023-02-15 00:17:23','Email','Added',NULL),
- (33,185,2,'2023-05-01 02:10:24','Admin','Added',NULL),
- (34,132,2,'2023-03-03 17:21:03','Email','Added',NULL),
- (35,94,2,'2023-05-25 12:14:49','Email','Added',NULL),
- (36,11,2,'2023-06-07 12:12:02','Email','Added',NULL),
- (37,178,2,'2023-08-19 05:20:04','Admin','Added',NULL),
- (38,144,2,'2023-05-24 13:01:58','Email','Added',NULL),
- (39,201,2,'2023-07-02 04:57:33','Admin','Added',NULL),
- (40,87,2,'2023-03-03 03:27:18','Admin','Added',NULL),
- (41,128,2,'2023-08-22 03:14:14','Email','Added',NULL),
- (42,8,2,'2023-08-22 14:29:05','Email','Added',NULL),
- (43,33,2,'2023-08-15 06:22:34','Admin','Added',NULL),
- (44,42,2,'2022-12-12 14:44:03','Email','Added',NULL),
- (45,80,2,'2023-08-12 15:59:31','Email','Added',NULL),
- (46,153,2,'2023-02-17 13:31:32','Admin','Added',NULL),
- (47,120,2,'2023-01-25 22:23:30','Admin','Added',NULL),
- (48,169,2,'2023-10-11 23:30:19','Email','Added',NULL),
- (49,130,2,'2023-02-24 19:28:54','Admin','Added',NULL),
- (50,28,2,'2023-08-29 17:25:45','Admin','Added',NULL),
- (51,93,2,'2023-06-01 23:00:05','Email','Added',NULL),
- (52,17,2,'2023-03-05 09:50:24','Admin','Added',NULL),
- (53,38,2,'2023-03-09 00:19:48','Email','Added',NULL),
- (54,174,2,'2023-08-20 04:36:59','Admin','Added',NULL),
- (55,81,2,'2023-06-08 11:19:53','Admin','Added',NULL),
- (56,113,2,'2023-07-04 18:46:49','Email','Added',NULL),
- (57,71,2,'2022-12-30 21:23:31','Admin','Added',NULL),
- (58,56,2,'2023-01-19 09:16:37','Email','Added',NULL),
- (59,171,2,'2023-01-20 19:56:48','Admin','Added',NULL),
- (60,97,2,'2023-08-05 00:57:20','Admin','Added',NULL),
- (61,29,3,'2023-02-12 19:03:55','Email','Added',NULL),
- (62,138,3,'2023-07-27 12:54:22','Admin','Added',NULL),
- (63,145,3,'2023-03-03 07:51:51','Admin','Added',NULL),
- (64,166,3,'2023-07-16 17:54:55','Email','Added',NULL),
- (65,107,3,'2022-10-20 20:33:11','Admin','Added',NULL),
- (66,105,3,'2022-10-29 13:51:38','Admin','Added',NULL),
- (67,167,3,'2023-04-28 14:06:13','Email','Added',NULL),
- (68,192,3,'2023-10-16 07:50:41','Email','Added',NULL),
- (69,37,3,'2023-06-29 19:06:47','Admin','Added',NULL),
- (70,27,3,'2023-09-30 14:03:02','Admin','Added',NULL),
- (71,40,3,'2023-06-18 18:53:12','Admin','Added',NULL),
- (72,165,3,'2022-12-20 17:01:53','Admin','Added',NULL),
- (73,184,3,'2023-08-23 17:10:56','Admin','Added',NULL),
- (74,158,3,'2023-06-12 00:08:33','Email','Added',NULL),
- (75,102,3,'2022-10-28 05:16:22','Admin','Added',NULL),
- (76,31,4,'2022-11-12 19:16:25','Admin','Added',NULL),
- (77,82,4,'2023-03-30 02:39:23','Admin','Added',NULL),
- (78,83,4,'2023-04-28 09:57:10','Email','Added',NULL),
- (79,187,4,'2022-12-28 18:09:01','Email','Added',NULL),
- (80,172,4,'2023-06-03 10:17:38','Email','Added',NULL),
- (81,11,4,'2023-07-02 11:27:36','Admin','Added',NULL),
- (82,33,4,'2022-10-24 06:16:09','Email','Added',NULL),
- (83,28,4,'2023-04-21 11:40:19','Admin','Added',NULL),
- (84,202,4,'2023-08-23 03:21:20','Email','Added',NULL);
+ (1,72,2,'2023-07-01 09:51:52','Email','Added',NULL),
+ (2,19,2,'2023-09-19 13:01:10','Email','Added',NULL),
+ (3,153,2,'2023-02-26 17:20:03','Admin','Added',NULL),
+ (4,190,2,'2023-05-07 17:34:18','Admin','Added',NULL),
+ (5,16,2,'2023-03-08 04:58:42','Email','Added',NULL),
+ (6,65,2,'2023-04-07 11:38:15','Email','Added',NULL),
+ (7,70,2,'2023-04-09 05:05:14','Admin','Added',NULL),
+ (8,120,2,'2023-03-18 07:12:04','Email','Added',NULL),
+ (9,85,2,'2023-05-25 22:34:04','Email','Added',NULL),
+ (10,198,2,'2023-07-08 22:41:21','Email','Added',NULL),
+ (11,110,2,'2023-02-13 10:05:30','Admin','Added',NULL),
+ (12,45,2,'2022-12-22 04:03:21','Admin','Added',NULL),
+ (13,37,2,'2023-11-03 19:52:50','Email','Added',NULL),
+ (14,82,2,'2023-10-19 05:13:51','Admin','Added',NULL),
+ (15,12,2,'2023-07-24 03:52:54','Email','Added',NULL),
+ (16,102,2,'2023-10-18 02:31:17','Admin','Added',NULL),
+ (17,192,2,'2023-09-08 09:46:13','Admin','Added',NULL),
+ (18,10,2,'2023-11-11 03:37:17','Email','Added',NULL),
+ (19,23,2,'2023-03-18 13:06:24','Email','Added',NULL),
+ (20,94,2,'2023-03-16 10:24:39','Email','Added',NULL),
+ (21,108,2,'2023-06-02 08:54:56','Admin','Added',NULL),
+ (22,38,2,'2023-05-11 14:46:50','Email','Added',NULL),
+ (23,154,2,'2023-10-15 05:11:47','Admin','Added',NULL),
+ (24,41,2,'2023-01-12 14:13:45','Email','Added',NULL),
+ (25,86,2,'2023-11-27 04:58:14','Admin','Added',NULL),
+ (26,95,2,'2023-01-14 19:59:35','Admin','Added',NULL),
+ (27,182,2,'2023-02-25 07:28:41','Email','Added',NULL),
+ (28,176,2,'2023-03-16 04:41:10','Admin','Added',NULL),
+ (29,74,2,'2023-10-04 22:11:58','Admin','Added',NULL),
+ (30,161,2,'2023-01-30 11:54:22','Admin','Added',NULL),
+ (31,191,2,'2023-04-07 09:31:36','Email','Added',NULL),
+ (32,112,2,'2023-09-30 23:41:27','Email','Added',NULL),
+ (33,117,2,'2022-12-29 07:56:03','Email','Added',NULL),
+ (34,101,2,'2023-11-18 06:36:17','Admin','Added',NULL),
+ (35,57,2,'2023-04-07 22:26:58','Admin','Added',NULL),
+ (36,124,2,'2023-12-04 19:32:31','Admin','Added',NULL),
+ (37,79,2,'2023-01-05 08:35:46','Admin','Added',NULL),
+ (38,126,2,'2023-02-05 06:50:37','Email','Added',NULL),
+ (39,113,2,'2023-07-08 15:33:16','Admin','Added',NULL),
+ (40,76,2,'2023-06-15 19:29:34','Admin','Added',NULL),
+ (41,116,2,'2023-01-04 06:48:47','Email','Added',NULL),
+ (42,67,2,'2022-12-21 11:33:13','Email','Added',NULL),
+ (43,149,2,'2023-11-26 04:49:45','Admin','Added',NULL),
+ (44,160,2,'2023-06-23 14:27:47','Email','Added',NULL),
+ (45,189,2,'2023-12-12 11:47:18','Admin','Added',NULL),
+ (46,135,2,'2023-06-26 23:52:19','Admin','Added',NULL),
+ (47,114,2,'2023-08-23 23:43:02','Admin','Added',NULL),
+ (48,77,2,'2023-01-07 20:08:01','Admin','Added',NULL),
+ (49,178,2,'2023-03-01 18:01:33','Email','Added',NULL),
+ (50,147,2,'2023-03-15 07:14:57','Email','Added',NULL),
+ (51,131,2,'2023-05-19 09:40:46','Admin','Added',NULL),
+ (52,43,2,'2023-12-04 02:20:41','Email','Added',NULL),
+ (53,88,2,'2023-02-02 21:56:22','Email','Added',NULL),
+ (54,200,2,'2023-07-01 12:06:34','Admin','Added',NULL),
+ (55,21,2,'2023-04-01 22:29:17','Email','Added',NULL),
+ (56,48,2,'2023-06-17 12:34:59','Email','Added',NULL),
+ (57,179,2,'2023-06-24 10:25:19','Admin','Added',NULL),
+ (58,99,2,'2023-05-16 02:51:45','Admin','Added',NULL),
+ (59,107,2,'2023-01-03 10:18:48','Email','Added',NULL),
+ (60,105,2,'2023-07-29 01:11:39','Email','Added',NULL),
+ (61,136,3,'2023-07-11 12:49:16','Admin','Added',NULL),
+ (62,164,3,'2023-02-11 03:17:48','Admin','Added',NULL),
+ (63,142,3,'2023-12-07 16:59:16','Admin','Added',NULL),
+ (64,175,3,'2023-12-01 15:39:54','Admin','Added',NULL),
+ (65,158,3,'2023-01-28 13:52:16','Email','Added',NULL),
+ (66,148,3,'2022-12-31 07:50:04','Admin','Added',NULL),
+ (67,137,3,'2023-09-28 12:29:41','Admin','Added',NULL),
+ (68,146,3,'2023-03-21 05:01:03','Admin','Added',NULL),
+ (69,30,3,'2023-02-07 15:55:13','Email','Added',NULL),
+ (70,122,3,'2023-07-13 16:03:39','Admin','Added',NULL),
+ (71,159,3,'2023-02-01 21:35:58','Admin','Added',NULL),
+ (72,100,3,'2023-02-24 11:46:48','Admin','Added',NULL),
+ (73,40,3,'2023-11-04 12:08:51','Email','Added',NULL),
+ (74,44,3,'2023-09-10 04:15:35','Email','Added',NULL),
+ (75,188,3,'2023-10-02 04:12:41','Admin','Added',NULL),
+ (76,72,4,'2023-03-01 00:27:09','Email','Added',NULL),
+ (77,120,4,'2023-06-06 10:09:06','Email','Added',NULL),
+ (78,12,4,'2023-05-25 12:06:54','Admin','Added',NULL),
+ (79,38,4,'2023-05-28 07:41:27','Email','Added',NULL),
+ (80,74,4,'2023-01-30 22:57:19','Admin','Added',NULL),
+ (81,124,4,'2023-07-19 09:00:52','Admin','Added',NULL),
+ (82,149,4,'2023-04-13 17:51:47','Email','Added',NULL),
+ (83,147,4,'2023-02-16 12:07:51','Admin','Added',NULL),
+ (84,202,4,'2023-03-18 03:24:10','Admin','Added',NULL);
 /*!40000 ALTER TABLE `civicrm_subscription_history` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -12247,11 +12253,11 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_tag` WRITE;
 /*!40000 ALTER TABLE `civicrm_tag` DISABLE KEYS */;
 INSERT INTO `civicrm_tag` (`id`, `name`, `label`, `description`, `parent_id`, `is_selectable`, `is_reserved`, `is_tagset`, `used_for`, `created_id`, `color`, `created_date`) VALUES
- (1,'Non_profit','Non-profit','Any not-for-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0bcb21','2023-10-19 14:22:28'),
- (2,'Company','Company','For-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#2260c3','2023-10-19 14:22:28'),
- (3,'Government_Entity','Government Entity','Any governmental entity.',NULL,1,0,0,'civicrm_contact',NULL,'#cd4b13','2023-10-19 14:22:28'),
- (4,'Major_Donor','Major Donor','High-value supporter of our organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0cdae9','2023-10-19 14:22:28'),
- (5,'Volunteer','Volunteer','Active volunteers.',NULL,1,0,0,'civicrm_contact',NULL,'#f0dc00','2023-10-19 14:22:28');
+ (1,'Non_profit','Non-profit','Any not-for-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0bcb21','2023-12-17 20:11:28'),
+ (2,'Company','Company','For-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#2260c3','2023-12-17 20:11:28'),
+ (3,'Government_Entity','Government Entity','Any governmental entity.',NULL,1,0,0,'civicrm_contact',NULL,'#cd4b13','2023-12-17 20:11:28'),
+ (4,'Major_Donor','Major Donor','High-value supporter of our organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0cdae9','2023-12-17 20:11:28'),
+ (5,'Volunteer','Volunteer','Active volunteers.',NULL,1,0,0,'civicrm_contact',NULL,'#f0dc00','2023-12-17 20:11:28');
 /*!40000 ALTER TABLE `civicrm_tag` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -12444,19 +12450,24 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_website` WRITE;
 /*!40000 ALTER TABLE `civicrm_website` DISABLE KEYS */;
 INSERT INTO `civicrm_website` (`id`, `contact_id`, `url`, `website_type_id`) VALUES
- (1,103,'http://oregondevelopment.org',1),
- (2,135,'http://sacramentopartners.org',1),
- (3,77,'http://globalwellnesscenter.org',1),
- (4,22,'http://bostonacademy.org',1),
- (5,68,'http://unitedagriculture.org',1),
- (6,133,'http://progressivepartnership.org',1),
- (7,19,'http://creativesolutions.org',1),
- (8,161,'http://progressivenetwork.org',1),
- (9,69,'http://globalsportscenter.org',1),
- (10,95,'http://ruralagriculturetrust.org',1),
- (11,139,'http://ruralinitiative.org',1),
- (12,7,'http://hanovereducation.org',1),
- (13,148,'http://localtrust.org',1);
+ (1,47,'http://tiptondevelopment.org',1),
+ (2,118,'http://ruraldevelopment.org',1),
+ (3,18,'http://creativefellowship.org',1),
+ (4,115,'http://creativepeace.org',1),
+ (5,9,'http://unitedcenter.org',1),
+ (6,46,'http://nyeducationcollective.org',1),
+ (7,197,'http://pinefoodpartners.org',1),
+ (8,15,'http://gcfamilyassociation.org',1),
+ (9,121,'http://urbanfamilycenter.org',1),
+ (10,35,'http://floridafellowship.org',1),
+ (11,78,'http://sierrapeacefellowship.org',1),
+ (12,26,'http://unitedfamily.org',1),
+ (13,64,'http://collegemusic.org',1),
+ (14,162,'http://harveyagriculturefellowship.org',1),
+ (15,201,'http://lincolnpoetry.org',1),
+ (16,123,'http://statespartnership.org',1),
+ (17,51,'http://minneapolissystems.org',1),
+ (18,17,'http://ecactionservices.org',1);
 /*!40000 ALTER TABLE `civicrm_website` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -12494,7 +12505,7 @@ UNLOCK TABLES;
 /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 
--- Dump completed on 2023-10-19 14:22:31
+-- Dump completed on 2023-12-17 20:11:40
 -- +--------------------------------------------------------------------+
 -- | Copyright CiviCRM LLC. All rights reserved.                        |
 -- |                                                                    |
diff --git a/civicrm/sql/civicrm_sample.mysql b/civicrm/sql/civicrm_sample.mysql
index fb8c3db14b2c9e01fbe41dce7dde287e42ccbf49..98ed28298598ee09c8af1f77c7c56607d998a73e 100644
--- a/civicrm/sql/civicrm_sample.mysql
+++ b/civicrm/sql/civicrm_sample.mysql
@@ -21,7 +21,7 @@ SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE name = 'help_suppor
 
 INSERT INTO `civicrm_price_field` (`price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `visibility_id`)
 VALUES ( @priceSetId, 'contribution_amount', 'Contribution Amount', 'Radio', 0, 2, 1, 1, 1, 0, 1),
-( @priceSetId, 'other_amount', 'Other Amount', 'Text', 0, 3, 0, 1, 1, 0, 1);
+( @priceSetId, 'other_amount', 'Additional Amount', 'Text', 0, 3, 0, 1, 1, 0, 1);
 
 INSERT INTO `civicrm_price_set_entity` (`entity_table`,`entity_id`,`price_set_id`)
          VALUES ('civicrm_contribution_page', 1, @priceSetId);
@@ -75,8 +75,7 @@ VALUES
 
 INSERT INTO civicrm_pledge_block ( entity_table, entity_id, pledge_frequency_unit, is_pledge_interval, max_reminders, initial_reminder_day, additional_reminder_day)
 VALUES
-    ('civicrm_contribution_page', 3, 'weekmonthyear', 1, 1, 5, 5),
-    ('civicrm_contribution_page', 1, 'weekmonthyear', 0, 2, 5, 5);
+    ('civicrm_contribution_page', 3, 'weekmonthyear', 1, 1, 5, 5);
 
 INSERT INTO civicrm_premiums
     VALUES (1, 'civicrm_contribution_page', 1, 1, 'Thank-you Gifts', 'We appreciate your support and invite you to choose from the exciting collection of thank-you gifts below. Minimum contribution amounts for each selection are included in the descriptions. (NOTE: These gifts are shown as examples only. No gifts will be sent to donors.)', 'premiums@example.org', NULL, 1, 'No thank-you', 1);
diff --git a/civicrm/templates/CRM/Activity/Form/Activity.tpl b/civicrm/templates/CRM/Activity/Form/Activity.tpl
index bde0f91cb4e1609d6461dc35701f2ef6a7eab98d..adbc8da900447a53b62fce7982c8c1c8cdc11310 100644
--- a/civicrm/templates/CRM/Activity/Form/Activity.tpl
+++ b/civicrm/templates/CRM/Activity/Form/Activity.tpl
@@ -12,7 +12,7 @@
     <div class="crm-block crm-content-block crm-activity-view-block">
   {else}
     {if $activityTypeDescription}
-      <div class="help">{$activityTypeDescription}</div>
+      <div class="help">{$activityTypeDescription|purify}</div>
     {/if}
     <div class="crm-block crm-form-block crm-activity-form-block">
   {/if}
@@ -29,7 +29,7 @@
 
   {if $action eq 4}
     {if $activityTypeDescription}
-    <div class="help">{$activityTypeDescription}</div>
+    <div class="help">{$activityTypeDescription|purify}</div>
     {/if}
   {else}
     {if $context eq 'standalone' or $context eq 'search' or $context eq 'smog'}
diff --git a/civicrm/templates/CRM/Activity/Form/ActivityView.tpl b/civicrm/templates/CRM/Activity/Form/ActivityView.tpl
index fa736453b28033ffba64ebd3ce91fde678ac54f7..9af13c0960383c5a1de64765770653a5d4a4fd65 100644
--- a/civicrm/templates/CRM/Activity/Form/ActivityView.tpl
+++ b/civicrm/templates/CRM/Activity/Form/ActivityView.tpl
@@ -9,7 +9,7 @@
 *}
 <div class="crm-block crm-content-block crm-activity-view-block">
       {if $activityTypeDescription}
-        <div class="help">{$activityTypeDescription}</div>
+        <div class="help">{$activityTypeDescription|purify}</div>
       {/if}
       <table class="crm-info-panel">
         <tr>
diff --git a/civicrm/templates/CRM/Activity/Form/Search.tpl b/civicrm/templates/CRM/Activity/Form/Search.tpl
index 97d6869538de7656f8114e3bb416440eec739c05..2918a83a975ee42394f924466864128a0037800f 100644
--- a/civicrm/templates/CRM/Activity/Form/Search.tpl
+++ b/civicrm/templates/CRM/Activity/Form/Search.tpl
@@ -9,10 +9,10 @@
 *}
 {* Search form and results for Activities *}
 <div class="crm-form-block crm-search-form-block">
-  <div class="crm-accordion-wrapper crm-advanced_search_form-accordion {if $rows}collapsed{/if}">
-    <div class="crm-accordion-header crm-master-accordion-header">
+  <details class="crm-accordion-wrapper crm-advanced_search_form-accordion" {if !$rows}open=""{/if}">
+    <summary class="crm-accordion-header crm-master-accordion-header">
       {ts}Edit Search Criteria{/ts}
-    </div>
+    </summary>
     <!-- /.crm-accordion-header -->
     <div class="crm-accordion-body">
       <div id="searchForm" class="form-item">
@@ -41,7 +41,7 @@
         {/strip}
       </div>
     </div>
-  </div>
+  </details>
 </div>
 
 {if $rowsEmpty || $rows}
diff --git a/civicrm/templates/CRM/Admin/Form/Preferences/Contribute.tpl b/civicrm/templates/CRM/Admin/Form/Preferences/Contribute.tpl
index 4d5a3da18ffff599340af1ec21252c9a7ddbebc9..20ed5234f43106be07b7600dafabdbb90d4b84b7 100644
--- a/civicrm/templates/CRM/Admin/Form/Preferences/Contribute.tpl
+++ b/civicrm/templates/CRM/Admin/Form/Preferences/Contribute.tpl
@@ -11,7 +11,7 @@
   {include file="CRM/Form/basicFormFields.tpl"}
 
   <table class="form-layout" id="invoicing_blocks">
-    {foreach from=$htmlFields item=fieldSpec key=htmlField}
+    {foreach from=$invoiceDependentFields item=fieldSpec key=htmlField}
       {if $form.$htmlField}
         {assign var=n value=$htmlField|cat:'_description'}
         <tr class="crm-preferences-form-block-{$htmlField}">
diff --git a/civicrm/templates/CRM/Admin/Form/Setting/Localization.tpl b/civicrm/templates/CRM/Admin/Form/Setting/Localization.tpl
index 186770fb4db71520eb53caa389f605c072f65e50..0d2f4e835ea05d7b2d6f52216ed4d4cefbcdb5da 100644
--- a/civicrm/templates/CRM/Admin/Form/Setting/Localization.tpl
+++ b/civicrm/templates/CRM/Admin/Form/Setting/Localization.tpl
@@ -123,7 +123,7 @@
           <tr class="crm-localization-form-block-makeSinglelingual">
               <td class="label">{$form.makeSinglelingual.label}</td>
               <td>{$form.makeSinglelingual.html}<br />
-              <span class="description">{ts}Check this box and click 'Save' to switch this installation from multi- to single-language.{/ts}</span><br /><br />
+              <span class="description">{ts}Check this box and click 'Save' to switch this installation from multi-language to single-language.{/ts}</span><br /><br />
               <span class="description font-red">{$warning}</span></td>
           </tr>
         {elseif $form.makeMultilingual}
diff --git a/civicrm/templates/CRM/Campaign/Form/Petition/Signature.tpl b/civicrm/templates/CRM/Campaign/Form/Petition/Signature.tpl
index 25d57dd7c95aa77a7b9e574a6bc9d5d08c4f6d08..0460eb9f7a13f36cec8411b666864f726b1fae44 100644
--- a/civicrm/templates/CRM/Campaign/Form/Petition/Signature.tpl
+++ b/civicrm/templates/CRM/Campaign/Form/Petition/Signature.tpl
@@ -38,7 +38,7 @@
   {if $duplicate}
     <p>{ts}Thank you for your support.{/ts}</p>
     {if $is_share}
-      {include file="CRM/Campaign/Page/Petition/SocialNetwork.tpl" petition_id=$survey_id petitionTitle=$petitionTitle}
+      {include file="CRM/Campaign/Page/Petition/SocialNetwork.tpl" petition_id=$survey_id petitionTitle=$petitionTitle emailMode=false}
     {/if}
   {else}
     <div class="crm-section crm-petition-contact-profile">
diff --git a/civicrm/templates/CRM/Campaign/Page/Petition/Confirm.tpl b/civicrm/templates/CRM/Campaign/Page/Petition/Confirm.tpl
index b9c4b848d3fd5fc410210dfd124be8cbb4df8c73..9a882966b10d6fb8632d84ed380c6eb5917dd053 100644
--- a/civicrm/templates/CRM/Campaign/Page/Petition/Confirm.tpl
+++ b/civicrm/templates/CRM/Campaign/Page/Petition/Confirm.tpl
@@ -25,6 +25,6 @@
   {/if}
   </div>
   {if $is_share}
-    {include file="CRM/Campaign/Page/Petition/SocialNetwork.tpl"}
+    {include file="CRM/Campaign/Page/Petition/SocialNetwork.tpl" emailMode=false}
   {/if}
 {/if}
diff --git a/civicrm/templates/CRM/Campaign/Page/Petition/SocialNetwork.tpl b/civicrm/templates/CRM/Campaign/Page/Petition/SocialNetwork.tpl
index 2a211061851d9e4bfa3f86bf35578467474bc1b0..bf76991cb2523ba15df04800c82adc75556f12bf 100644
--- a/civicrm/templates/CRM/Campaign/Page/Petition/SocialNetwork.tpl
+++ b/civicrm/templates/CRM/Campaign/Page/Petition/SocialNetwork.tpl
@@ -4,4 +4,4 @@ You might have a specific page that displays more information that the form.
 Check SocialNetwork.drupal as an example
 *}
 {capture assign=petitionURL}{crmURL p='civicrm/petition/sign' q="sid=`$petition_id`" a=1 fe=1 h=1}{/capture}
-{include file="CRM/common/SocialNetwork.tpl" url=$petitionURL title=$petitionTitle pageURL=$petitionURL}
+{include file="CRM/common/SocialNetwork.tpl" url=$petitionURL title=$petitionTitle pageURL=$petitionURL emailMode=false}
diff --git a/civicrm/templates/CRM/Campaign/Page/Petition/ThankYou.tpl b/civicrm/templates/CRM/Campaign/Page/Petition/ThankYou.tpl
index 17765567fb3de1a9a9189adc58071576dead6c72..c951be7340da94b37c359684e738e5d6f0aa62aa 100644
--- a/civicrm/templates/CRM/Campaign/Page/Petition/ThankYou.tpl
+++ b/civicrm/templates/CRM/Campaign/Page/Petition/ThankYou.tpl
@@ -38,7 +38,7 @@
     </div>
   {/if}
   {if $is_share}
-    {include file="CRM/Campaign/Page/Petition/SocialNetwork.tpl" petition_id=$survey_id petitionTitle=$petitionTitle}
+    {include file="CRM/Campaign/Page/Petition/SocialNetwork.tpl" petition_id=$survey_id petitionTitle=$petitionTitle emailMode=false}
   {/if}
 {/if}
 
diff --git a/civicrm/templates/CRM/Case/Form/Activity.tpl b/civicrm/templates/CRM/Case/Form/Activity.tpl
index ec74f696221a732ddbff050df0470d97a60a2fef..aa14680e2b0f56b98178383731ca60c1984ea47a 100644
--- a/civicrm/templates/CRM/Case/Form/Activity.tpl
+++ b/civicrm/templates/CRM/Case/Form/Activity.tpl
@@ -23,7 +23,7 @@
   <table class="form-layout">
     {if $activityTypeDescription}
       <tr>
-        <div class="help">{$activityTypeDescription}</div>
+        <div class="help">{$activityTypeDescription|purify}</div>
       </tr>
     {/if}
     {* Block for change status, case type and start date. *}
diff --git a/civicrm/templates/CRM/Case/Form/Case.tpl b/civicrm/templates/CRM/Case/Form/Case.tpl
index 92ab07e2fa2cfec45c6f072766e045777db9dbc7..bb34a8ec51cba076fddf86222d520a426fd28d9a 100644
--- a/civicrm/templates/CRM/Case/Form/Case.tpl
+++ b/civicrm/templates/CRM/Case/Form/Case.tpl
@@ -27,7 +27,7 @@
 <table class="form-layout">
     {if $activityTypeDescription}
         <tr>
-            <div class="help">{$activityTypeDescription}</div>
+            <div class="help">{$activityTypeDescription|purify}</div>
         </tr>
     {/if}
 {if $clientName}
diff --git a/civicrm/templates/CRM/Case/Form/CaseView.js b/civicrm/templates/CRM/Case/Form/CaseView.js
index 192a52b8670715c593a104230965e222aaa87ba5..10e93234934e078b8b50636fe23d353ceea12370 100644
--- a/civicrm/templates/CRM/Case/Form/CaseView.js
+++ b/civicrm/templates/CRM/Case/Form/CaseView.js
@@ -97,6 +97,8 @@
     },
     '#editCaseRoleDialog': {
       pre: function(data) {
+        // Clear stale value since this form can be reused multiple times
+        $('[name=edit_role_contact_id]', this).val('');
         prepareRelationshipField(data.rel_type, $('[name=edit_role_contact_id]', this));
       },
       post: function(data) {
@@ -175,6 +177,12 @@
     });
   }
 
+  function showHideInactiveRoles() {
+    let showInactive = $('#role_inactive').prop('checked');
+    $('[id^=caseRoles-selector] tbody tr').not('.disabled').toggle(!showInactive);
+    $('[id^=caseRoles-selector] tbody tr.disabled').toggle(showInactive);
+  }
+
   $('#crm-container').on('crmLoad', '#crm-main-content-wrapper', detachMiniForms);
 
   $(document).ready(function() {
@@ -222,6 +230,9 @@
           $('#case_id_' + id).dataTable().api().draw();
         });
       })
+      // Toggle to show/hide inactive case roles
+      .on('crmLoad', 'table#caseRoles-selector-' + caseId(), showHideInactiveRoles)
+      .on('change', '#role_inactive', showHideInactiveRoles)
       .on('click', 'a.case-miniform', function(e) {
         var dialog,
           $el = $(this),
diff --git a/civicrm/templates/CRM/Case/Form/CaseView.tpl b/civicrm/templates/CRM/Case/Form/CaseView.tpl
index dc6b80ea4071def597ebe7d73085b4784ef27ae6..95677b07ecaa7083d858592eb888eeb5b26c650e 100644
--- a/civicrm/templates/CRM/Case/Form/CaseView.tpl
+++ b/civicrm/templates/CRM/Case/Form/CaseView.tpl
@@ -147,30 +147,14 @@
       {/if}
 
       <div id="editCaseRoleDialog" class="hiddenElement">
-        <div><label for="edit_role_contact_id">{ts}Change To{/ts}:</label></div>
+        <div><label for="edit_role_contact_id">{ts}Change To{/ts} <span class="crm-marker">*</span></label></div>
         <div><input name="edit_role_contact_id" placeholder="{ts}- select contact -{/ts}" class="huge" /></div>
       </div>
       <div id="caseRoles-selector-show-active">
         {* Add checkbox to show inactive roles. For open cases, default value is unchecked, i.e. show active roles. For closed cases default is checked. *}
         <label><input type="checkbox" id="role_inactive" name="role_inactive[]"{if $caseDetails.status_class neq 'Opened'} checked="checked"{/if}>{ts}Show Inactive relationships{/ts}</label>
       </div>
-      {literal}
-        <script type="text/javascript">
-            (function($) {
-                // hide the inactive role when checkbox is checked
-                $('input[type=checkbox][id=role_inactive]').change(function() {
-                  if (this.checked == true) {
-                    CRM.$('[id^=caseRoles-selector] tbody tr').not('.disabled').hide();
-                    CRM.$('[id^=caseRoles-selector] tbody tr.disabled').show();
-                  } else if (this.checked == false) {
-                    CRM.$('[id^=caseRoles-selector] tbody tr').not('.disabled').show();
-                    CRM.$('[id^=caseRoles-selector] tbody tr.disabled').hide();
-                  }
-                });
-            })(CRM.$);
-        </script>
-      {/literal}
-      <table id="caseRoles-selector-{$caseID}"  class="report-layout crm-ajax-table" data-page-length="10">
+      <table id="caseRoles-selector-{$caseID}" class="report-layout crm-ajax-table" data-page-length="10">
         <thead>
           <tr>
             <th data-data="relation">{ts}Case Role{/ts}</th>
@@ -188,19 +172,9 @@
         <script type="text/javascript">
           (function($) {
             var caseId = {/literal}{$caseID}{literal};
-            CRM.$('table#caseRoles-selector-' + caseId).data({
+            $('table#caseRoles-selector-' + caseId).data({
               "ajax": {
                 "url": {/literal}'{crmURL p="civicrm/ajax/caseroles" h=0 q="snippet=4&caseID=$caseId&cid=$contactID&userID=$userID"}'{literal},
-                "complete" : function(){
-                  if (CRM.$('input[type=checkbox][id=role_inactive]').prop('checked')) {
-                    CRM.$('[id^=caseRoles-selector] tbody tr').not('.disabled').hide();
-                    CRM.$('[id^=caseRoles-selector] tbody tr.disabled').show();
-                  }
-                  else {
-                    CRM.$('[id^=caseRoles-selector] tbody tr').not('.disabled').show();
-                    CRM.$('[id^=caseRoles-selector] tbody tr.disabled').hide();
-                  }
-                }
               }
             });
           })(CRM.$);
diff --git a/civicrm/templates/CRM/Contact/Form/Merge.tpl b/civicrm/templates/CRM/Contact/Form/Merge.tpl
index 772881743170a6d853f7298e08f9af550ed398a2..ef79bdc7eb93393be38db304cbcd9cf0991a9b87 100644
--- a/civicrm/templates/CRM/Contact/Form/Merge.tpl
+++ b/civicrm/templates/CRM/Contact/Form/Merge.tpl
@@ -90,10 +90,8 @@
             {$row.title|escape}
           </td>
         {/if}
-
-          {assign var=position  value=$field|strrpos:'_'}
-          {assign var=blockId   value=$field|substr:$position+1}
-          {assign var=blockName value=$field|substr:14:$position-14}
+          {assign var=blockId  value=$row.location_block_index}
+          {assign var=blockName value=$row.location_entity}
 
           <td>
             {* @TODO check if this is ever an array or a fileName? *}
diff --git a/civicrm/templates/CRM/Contact/Form/Search/Advanced.tpl b/civicrm/templates/CRM/Contact/Form/Search/Advanced.tpl
index 81f7cce2761a73122666633eae37ff0d491d9dab..6ebbe18c48bcdef1f921716c43df66703066f3fa 100644
--- a/civicrm/templates/CRM/Contact/Form/Search/Advanced.tpl
+++ b/civicrm/templates/CRM/Contact/Form/Search/Advanced.tpl
@@ -13,8 +13,8 @@
 
   {include file="CRM/Contact/Form/Search/Intro.tpl"}
 
-  <div class="crm-accordion-wrapper crm-advanced_search_form-accordion {if !empty($ssID) or $rows}collapsed{/if}">
-    <div class="crm-accordion-header crm-master-accordion-header">
+  <details class="crm-advanced_search_form-accordion" {if !$rows}open{/if} >
+    <summary class="crm-master-accordion-header">
       {if !empty($savedSearch)}
         {ts 1=$savedSearch.name}Edit %1 Smart Group Criteria{/ts}
       {elseif !empty($ssID) or $rows}
@@ -23,11 +23,11 @@
         {ts}Search Criteria{/ts}
       {/if}
       {help id='id-advanced-intro'}
-    </div>
+    </summary>
     <div class="crm-accordion-body">
       {include file="CRM/Contact/Form/Search/AdvancedCriteria.tpl"}
     </div>
-  </div>
+  </details>
 </div>
 
 {if $rowsEmpty}
diff --git a/civicrm/templates/CRM/Contact/Form/Search/AdvancedCriteria.tpl b/civicrm/templates/CRM/Contact/Form/Search/AdvancedCriteria.tpl
index b213089691fcfd6b395c65a05c07993e7e2544d2..715eeee7f1153b4e53bdc8a5bc24c481f0556427 100644
--- a/civicrm/templates/CRM/Contact/Form/Search/AdvancedCriteria.tpl
+++ b/civicrm/templates/CRM/Contact/Form/Search/AdvancedCriteria.tpl
@@ -24,7 +24,6 @@ CRM.$(function($) {
     var header = $(this).parent();
     header.next().html('');
     header.removeClass('active');
-    header.parent('.crm-ajax-accordion:not(.collapsed)').crmAccordionToggle();
     // Reset results-display mode if it depends on this pane
     var mode = modes[$('#component_mode').val()] || null;
     if (mode && header.attr('id') == mode) {
@@ -72,6 +71,8 @@ CRM.$(function($) {
       CRM.loadPage(url, {target: body, block: false});
     }
   }
+  // Keeps the detail/accordion of 'active' fieldsets open after a search
+  $('summary.active').parent('details').attr('open', '');
 });
 </script>
 {/literal}
@@ -86,37 +87,37 @@ CRM.$(function($) {
 {/if}
 
 {strip}
-  <div class="crm-accordion-wrapper crm-search_criteria_basic-accordion ">
-    <div class="crm-accordion-header">
+  <details class="crm-accordion-wrapper crm-search_criteria_basic-accordion" open>
+    <summary class="crm-accordion-header">
       {ts}Display Settings For Results{/ts}
-    </div>
+    </summary>
     <div class="crm-accordion-body">
       {include file="CRM/Contact/Form/Search/Criteria/DisplaySettings.tpl"}
     </div>
-  </div>
-  <div class="crm-accordion-wrapper crm-search_criteria_basic-accordion ">
-    <div class="crm-accordion-header">
+  </details>
+  <details class="crm-accordion-wrapper crm-search_criteria_basic-accordion" open>
+    <summary class="crm-accordion-header">
       {ts}Search Settings{/ts}
-    </div>
+    </summary>
     <div class="crm-accordion-body">
       {include file="CRM/Contact/Form/Search/Criteria/SearchSettings.tpl"}
     </div>
-  </div>
-  <div class="crm-accordion-wrapper crm-search_criteria_basic-accordion ">
-    <div class="crm-accordion-header">
+  </details>
+  <details class="crm-accordion-wrapper crm-search_criteria_basic-accordion" open>
+    <summary class="crm-accordion-header">
       {ts}Basic Criteria{/ts}
-    </div>
+    </summary>
     <div class="crm-accordion-body">
       {include file="CRM/Contact/Form/Search/Criteria/Basic.tpl"}
     </div>
-  </div>
+  </details>
   {foreach from=$allPanes key=paneName item=paneValue}
-    <div class="crm-accordion-wrapper crm-ajax-accordion crm-{$paneValue.id}-accordion {if $paneValue.open eq 'true' || array_key_exists($paneName, $openedPanes)} {else}collapsed{/if}">
-      <div class="crm-accordion-header" id="{$paneValue.id}">
+    <details class="crm-accordion-wrapper crm-ajax-accordion crm-{$paneValue.id}-accordion {if $paneValue.open eq 'true' || array_key_exists($paneName, $openedPanes)} {else}collapsed{/if}">
+      <summary class="crm-accordion-header" id="{$paneValue.id}">
         {$paneName}
-      </div>
+      </summary>
     <div class="crm-accordion-body {$paneValue.id}"></div>
-    </div><!-- Surplus /div is required (not sure why but breakage is obvious when you remove it) -->
+    </details>
   {/foreach}
   <div class="spacer"></div>
 
diff --git a/civicrm/templates/CRM/Contact/Form/Search/Builder.tpl b/civicrm/templates/CRM/Contact/Form/Search/Builder.tpl
index f880e499608187ce9c08c6c6ac77972ffe0b10ee..2739f00eecc151aa1c5cf0e3e6fa56b82e8a4d04 100644
--- a/civicrm/templates/CRM/Contact/Form/Search/Builder.tpl
+++ b/civicrm/templates/CRM/Contact/Form/Search/Builder.tpl
@@ -8,7 +8,11 @@
  +--------------------------------------------------------------------+
 *}
 {* Search Builder *}
-
+<div class="messages status no-popup">
+  {icon icon="fa-info-circle"}{/icon}
+  {capture assign='skUrl'}{crmURL p='civicrm/admin/search'}{/capture}
+  {ts 1="href='$skUrl'"}Search Builder is a legacy part of CiviCRM. It is recommended to <a %1>use SearchKit instead</a>.{/ts}
+</div>
 <div class="crm-form-block crm-search-form-block">
   <div class="crm-accordion-wrapper crm-search_builder-accordion {if $rows and !$showSearchForm}collapsed{/if}">
     <div class="crm-accordion-header crm-master-accordion-header">
diff --git a/civicrm/templates/CRM/Contact/Import/Form/Summary.tpl b/civicrm/templates/CRM/Contact/Import/Form/Summary.tpl
index f0d6368f62fe543bc070d80fb727f1f84003b07d..0fa34e259e0b5d810b0882e2673a0b380d063cdb 100644
--- a/civicrm/templates/CRM/Contact/Import/Form/Summary.tpl
+++ b/civicrm/templates/CRM/Contact/Import/Form/Summary.tpl
@@ -118,7 +118,7 @@
     {if $groupAdditions}
     <tr><td class="label crm-grid-cell">{ts}Import to Groups{/ts}</td>
         <td colspan="2" class="explanation">
-            {foreach from="$groupAdditions" item="group"}
+            {foreach from=$groupAdditions item="group"}
                 <label><a href="{$group.url}">{$group.name}</a></label>:
                 {if $group.new}
                     {ts count=$group.added plural='%count contacts added to this new group.'}One contact added to this new group.{/ts}
@@ -134,7 +134,7 @@
     {if $tagAdditions}
     <tr><td class="label crm-grid-cell">{ts}Tagged Imported Contacts{/ts}</td>
         <td colspan="2" class="explanation">
-            {foreach from="$tagAdditions" item="tag"}
+            {foreach from=$tagAdditions item="tag"}
                 <label>{$tag.name}</label>:
                 {ts count=$tag.added plural='%count contacts are tagged with this tag.'}One contact is tagged with this tag.{/ts}
                 {if $tag.notAdded}{ts count=$tag.notAdded plural='%count contacts NOT tagged (already tagged to this tag).'}One contact NOT tagged (already tagged to this tag).{/ts}{/if}<br />
diff --git a/civicrm/templates/CRM/Contact/Page/View/CustomDataView.tpl b/civicrm/templates/CRM/Contact/Page/View/CustomDataView.tpl
index b895d1cdd5317d5d45e22ba08a82fce7e3f0cffc..e3b17525165d2c4e9142d8538be5282ce1f5f664 100644
--- a/civicrm/templates/CRM/Contact/Page/View/CustomDataView.tpl
+++ b/civicrm/templates/CRM/Contact/Page/View/CustomDataView.tpl
@@ -14,17 +14,17 @@
   {assign var="count" value=$customGroupCount%2}
   {if ($count eq $side) or $skipTitle}
     {foreach from=$customValues item=cd_edit key=cvID}
-      <div class="customFieldGroup crm-collapsible{if !empty($cd_edit.collapse_display)} collapsed{/if} ui-corner-all {$cd_edit.name} crm-custom-set-block-{$customGroupId}">
-        <div class="collapsible-title">
+      <details class="customFieldGroup crm-accordion-wrapper ui-corner-all {$cd_edit.name} crm-custom-set-block-{$customGroupId}" {if !empty($cd_edit.collapse_display)} open{/if}>
+        <summary class="crm-accordion-header crm-master-accordion-header">
           {$cd_edit.title}
-        </div>
+        </summary>
         {if $cvID eq 0}
           {assign var='cvID' value='-1'}
         {/if}
         <div class="crm-summary-block" id="custom-set-block-{$customGroupId}-{$cvID}">
           {include file="CRM/Contact/Page/View/CustomDataFieldView.tpl" customGroupId=$customGroupId customRecId=$cvID cgcount=$cgcount}
         </div>
-      </div>
+      </details>
       {assign var="cgcount" value=$cgcount+1}
     {/foreach}
   {/if}
diff --git a/civicrm/templates/CRM/Contribute/Form/AdditionalPayment.tpl b/civicrm/templates/CRM/Contribute/Form/AdditionalPayment.tpl
index 6c01148419e8846cae4431d5664c352243045547..52d54ec903be99b5fac77134ebc75fe03bd63507 100644
--- a/civicrm/templates/CRM/Contribute/Form/AdditionalPayment.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/AdditionalPayment.tpl
@@ -107,9 +107,6 @@
 
     {literal}
     <script type="text/javascript">
-
-    var url = {/literal}{$dataUrl|@json_encode}{literal};
-
       CRM.$(function($) {
         showHideByValue( 'is_email_receipt', '', 'notice', 'table-row', 'radio', false );
         showHideByValue( 'is_email_receipt', '', 'fromEmail', 'table-row', 'radio', false );
diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution.tpl
index 0e6c1cabc38fcec960455a43af2ad62ca5a27748..88c66e1925ad99466737248eb182942f39a0485d 100644
--- a/civicrm/templates/CRM/Contribute/Form/Contribution.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/Contribution.tpl
@@ -358,8 +358,6 @@
           }
         }
 
-        var url = {/literal}{$dataUrl|@json_encode}{literal};
-
         {/literal}
         {if $context eq 'standalone' and $outBound_option != 2}
         {literal}
diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl
index 5d8492e35d52730a026d64cd98212b07a261a4ad..1e8442f936f800d7e5d29c891260081032f2f9d2 100644
--- a/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl
@@ -33,22 +33,22 @@
       </div>
 
       <div class="display-block">
-        {if $lineItem and $isDisplayLineItems}
+        {if $isDisplayLineItems && $lineItem}
           {if !$amount}{assign var="amount" value=0}{/if}
           {assign var="totalAmount" value=$amount}
-          {include file="CRM/Price/Page/LineItem.tpl" context="Contribution"}
+          {include file="CRM/Price/Page/LineItem.tpl" context="Contribution" getTaxDetails=$totalTaxAmount displayLineItemFinancialType=false pricesetFieldsCount=false currencySymbol='' hookDiscount=''}
         {elseif $is_separate_payment}
           {if $amount AND $minimum_fee}
             {$membership_name} {ts}Membership{/ts}:
-            <strong>{$minimum_fee|crmMoney}</strong>
+            <strong>{$membershipTotalAmount|crmMoney}</strong>
             <br/>
             {ts}Additional Contribution{/ts}:
-            <strong>{$amount|crmMoney}</strong>
+            <strong>{$nonMembershipTotalAmount|crmMoney}</strong>
             <br/>
             <strong> -------------------------------------------</strong>
             <br/>
             {ts}Total{/ts}:
-            <strong>{$amount+$minimum_fee|crmMoney}</strong>
+            <strong>{$orderTotal|crmMoney}</strong>
             <br/>
           {elseif $amount}
             {ts}Amount{/ts}:
@@ -231,14 +231,14 @@
 
   {* Show credit or debit card section for 'direct' mode, except for PayPal Express (detected because credit card number is empty) *}
     {crmRegion name="contribution-confirm-billing-block"}
-    {if in_array('credit_card_number', $form) || in_array('bank_account_number', $form)}
+    {if in_array('credit_card_number', $paymentFields) || in_array('bank_account_number', $paymentFields)}
       <div class="crm-group credit_card-group">
         {if $paymentFieldsetLabel}
           <div class="header-dark">
             {$paymentFieldsetLabel}
           </div>
         {/if}
-        {if in_array('bank_account_number', $form) && $bank_account_number}
+        {if in_array('bank_account_number', $paymentFields) && $bank_account_number}
           <div class="display-block">
             {ts}Account Holder{/ts}: {$account_holder}<br/>
             {ts}Bank Account Number{/ts}: {$bank_account_number}<br/>
@@ -256,7 +256,7 @@
             </div>
           {/if}
         {/if}
-        {if in_array('credit_card_number', $form) && $credit_card_number}
+        {if in_array('credit_card_number', $paymentFields) && $credit_card_number}
           <div class="crm-section no-label credit_card_details-section">
             <div class="content">{$credit_card_type}</div>
             <div class="content">{$credit_card_number}</div>
@@ -268,7 +268,7 @@
     {/if}
     {/crmRegion}
 
-  {include file="CRM/Contribute/Form/Contribution/PremiumBlock.tpl" context="confirmContribution"}
+  {include file="CRM/Contribute/Form/Contribution/PremiumBlock.tpl" context="confirmContribution" showPremiumSelectionFields=false preview=false}
 
   {if $customPost}
     <fieldset class="label-left crm-profile-view">
diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl
index 33ff5ce7f32c73ba597a6f4314eab3abce9c88f2..84f8490e06353920d35c658b0acd001756455928 100644
--- a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl
@@ -8,7 +8,7 @@
  +--------------------------------------------------------------------+
 *}
 {* Callback snippet: On-behalf profile *}
-{if $snippet and !empty($isOnBehalfCallback) and !$ccid}
+{if $snippet and !empty($isOnBehalfCallback) and !$isPaymentOnExistingContribution}
   <div class="crm-public-form-item crm-section">
     {include file="CRM/Contribute/Form/Contribution/OnBehalfOf.tpl" context="front-end"}
   </div>
@@ -34,6 +34,8 @@
     function clearAmountOther(otherPriceFieldName) {
       cj('#' + otherPriceFieldName).val('');
       cj('#' + otherPriceFieldName).blur();
+      // @todo - remove the next 2 lines - they seems to relate to a field that is never present
+      // as amount_other will be (e.g) price_4
       if (document.Main.amount_other == null) return; // other_amt field not present; do nothing
       document.Main.amount_other.value = "";
     }
@@ -54,7 +56,7 @@
   <div class="crm-contribution-page-id-{$contributionPageID} crm-block crm-contribution-main-form-block" data-page-id="{$contributionPageID}" data-page-template="main">
 
     {crmRegion name='contribution-main-not-you-block'}
-    {if $contact_id && !$ccid}
+    {if $contact_id && !$isPaymentOnExistingContribution}
       <div class="messages status no-popup crm-not-you-message">
         {ts 1=$display_name}Welcome %1{/ts}. (<a href="{crmURL p='civicrm/contribute/transact' q="cid=0&reset=1&id=`$contributionPageID`"}" title="{ts}Click here to do this for a different person.{/ts}">{ts 1=$display_name}Not %1, or want to do this for a different person{/ts}</a>?)
       </div>
@@ -62,7 +64,7 @@
     {/crmRegion}
 
     <div id="intro_text" class="crm-public-form-item crm-section intro_text-section">
-      {$intro_text}
+      {$intro_text|purify}
     </div>
     {include file="CRM/common/cidzero.tpl"}
 
@@ -70,11 +72,11 @@
       <div class="help">{ts}You have a current Lifetime Membership which does not need to be renewed.{/ts}</div>
     {/if}
 
-    {if $isShowMembershipBlock && !$ccid}
+    {if $isShowMembershipBlock && !$isPaymentOnExistingContribution}
       <div class="crm-public-form-item crm-section">
         {include file="CRM/Contribute/Form/Contribution/MainMembershipBlock.tpl"}
       </div>
-    {elseif !empty($ccid)}
+    {elseif $isPaymentOnExistingContribution}
       {if $lineItem && $priceSetID && !$is_quick_config}
         <div class="header-dark">
           {ts}Contribution Information{/ts}{if $display_name} &ndash; {$display_name}{/if}
@@ -93,7 +95,7 @@
       </div>
     {/if}
 
-    {if !$ccid}
+    {if !$isPaymentOnExistingContribution}
       {crmRegion name='contribution-main-pledge-block'}
       {if $pledgeBlock}
         {if array_key_exists('pledge_amount', $form)}
@@ -183,7 +185,7 @@
         {include file="CRM/common/CMSUser.tpl"}
       </div>
       <div class="crm-public-form-item crm-section premium_block-section">
-        {include file="CRM/Contribute/Form/Contribution/PremiumBlock.tpl" context="makeContribution" preview=false}
+        {include file="CRM/Contribute/Form/Contribution/PremiumBlock.tpl" context="makeContribution" preview=false showPremiumSelectionFields=true}
       </div>
 
       {if $honoreeProfileFields && $honoreeProfileFields|@count}
@@ -317,9 +319,9 @@
 
     function toggleRecur() {
       var isRecur = cj('input[id="is_recur"]:checked');
-      var allowAutoRenew = {/literal}'{$allowAutoRenewMembership}'{literal};
+
       var quickConfig = {/literal}'{$quickConfig}'{literal};
-      if (allowAutoRenew && cj("#auto_renew") && quickConfig) {
+      if (cj("#auto_renew") && quickConfig) {
         showHideAutoRenew(null);
       }
 
diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/MainMembershipBlock.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/MainMembershipBlock.tpl
index 23b2f2b4de4deed67264efcca8e65db1310d4b7e..c4aca6522042f35a366ee11e6a5cc8cba82e2021 100644
--- a/civicrm/templates/CRM/Contribute/Form/Contribution/MainMembershipBlock.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/Contribution/MainMembershipBlock.tpl
@@ -20,10 +20,10 @@
           </div>
         {/if}
       {else}
-        {if $membershipBlock.new_title}
+        {if array_key_exists('new_title', $membershipBlock) && $membershipBlock.new_title}
           <legend>{$membershipBlock.new_title}</legend>
         {/if}
-        {if $membershipBlock.new_text}
+        {if array_key_exists('new_text', $membershipBlock) && $membershipBlock.new_text}
           <div id="membership-intro" class="crm-section membership_new_intro-section">
             {$membershipBlock.new_text}
           </div>
@@ -52,28 +52,14 @@
   </div>
   {literal}
   <script type="text/javascript">
-    CRM.$(function($) {
-      //if price set is set we use below below code to show for showing auto renew
-      var autoRenewOption =  {/literal}'{$autoRenewOption}'{literal};
-      var autoRenew = $("#auto_renew_section");
-      var autoRenewCheckbox = $("#auto_renew");
-      var forceRenew = $("#force_renew");
-      autoRenew.hide();
-      forceRenew.hide();
-      if ( autoRenewOption == 1 ) {
-        autoRenew.show();
-      } else if ( autoRenewOption == 2 ) {
-        autoRenewCheckbox.prop('checked',  true );
-        autoRenewCheckbox.attr( 'readonly', true );
-        autoRenew.hide();
-        forceRenew.show();
-      }
-    });
+
   </script>
 {/literal}
 </div>
 
-{if $membershipBlock AND $is_quick_config}
+{if $isPaymentOnExistingContribution && $membershipBlock && $is_quick_config}
+    {* This code is hit only when ccid is in the url to pay on an existing contribution and it is quick config *}
+    {* Removing the contents of this if does not result in any apparent change & it may be removable *}
     {strip}
       <table id="membership-listings">
           {foreach from=$membershipTypes item=row}
@@ -151,17 +137,18 @@
       if ( !memTypeId ) memTypeId = cj('input:radio[name='+priceSetName+']:checked').attr('membership-type');
 
       //does this page has only one membership type.
-      var singleMembership = {/literal}'{$singleMembership}'{literal};
-      if ( !memTypeId && singleMembership ) memTypeId = cj("input:radio[name="+priceSetName+"]").attr('membership-type');
       var renewOptions  = {/literal}{$autoRenewMembershipTypeOptions}{literal};
       var currentOption = eval( "renewOptions." + 'autoRenewMembershipType_' + memTypeId );
+      if (memTypeId === undefined) {
+        currentOption = 0;
+      }
       var autoRenew = cj('#auto_renew_section');
       var autoRenewC = cj('input[name="auto_renew"]');
       var forceRenew = cj("#force_renew");
 
       var readOnly = false;
       var isChecked  = false;
-      if ( currentOption == 0 ) {
+      if (currentOption == 0 ) {
         isChecked = false;
         forceRenew.hide();
         autoRenew.hide();
diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/MembershipBlock.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/MembershipBlock.tpl
index e387bf4b4f8b797ccc6dc6762feacf6f75a52454..04cd616d8e85274be5159999953e94ca16386184 100644
--- a/civicrm/templates/CRM/Contribute/Form/Contribution/MembershipBlock.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/Contribution/MembershipBlock.tpl
@@ -13,13 +13,13 @@
 {if $membershipBlock AND $is_quick_config}
     <div class="header-dark">
       {if $renewal_mode}
-        {if $membershipBlock.renewal_title}
+        {if array_key_exists('renewal_title', $membershipBlock) && $membershipBlock.renewal_title}
           {$membershipBlock.renewal_title}
         {else}
           {ts}Select a Membership Renewal Level{/ts}
         {/if}
       {else}
-        {if $membershipBlock.new_title}
+        {if array_key_exists('new_title', $membershipBlock) && $membershipBlock.new_title}
           {$membershipBlock.new_title}
         {else}
           {ts}Select a Membership Level{/ts}
@@ -42,7 +42,7 @@
         </tr>
 
       {/foreach}
-      {if $form.auto_renew}
+      {if array_key_exists('auto_renew', $form)}
         <tr id="allow_auto_renew">
           <td style="width: auto;">{$form.auto_renew.html}</td>
           <td style="width: auto;">
diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl
index 309ced9349f353f81c6340b1b818389cf557b73a..6f69bf58b20ccc7722713749e0d3ce35963d74ee 100644
--- a/civicrm/templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl
@@ -12,11 +12,11 @@
     {if $context EQ "makeContribution"}
       <fieldset class="crm-group premiums_select-group">
       {if $premiumBlock.premiums_intro_title}
-        <legend>{$premiumBlock.premiums_intro_title}</legend>
+        <legend>{$premiumBlock.premiums_intro_title|escape}</legend>
       {/if}
       {if $premiumBlock.premiums_intro_text}
         <div id="premiums-intro" class="crm-section premiums_intro-section">
-          {$premiumBlock.premiums_intro_text}
+          {$premiumBlock.premiums_intro_text|escape}
         </div>
       {/if}
     {/if}
@@ -25,7 +25,7 @@
     <div class="crm-group premium_display-group">
       <div class="header-dark">
         {if $premiumBlock.premiums_intro_title}
-          {$premiumBlock.premiums_intro_title}
+          {$premiumBlock.premiums_intro_title|escape}
         {else}
           {ts}Your Premium Selection{/ts}
         {/if}
@@ -33,33 +33,33 @@
     {/if}
 
     {if $preview}
-      {assign var="showSelectOptions" value="1"}
+      {assign var="showPremiumSelectionFields" value="1"}
     {/if}
 
     {strip}
       <div id="premiums-listings">
-      {if $showPremium AND !$preview AND $premiumBlock.premiums_nothankyou_position EQ 1}
+      {if $showPremiumSelectionFields AND !$preview AND $premiumBlock.premiums_nothankyou_position EQ 1}
         <div class="premium premium-no_thanks" id="premium_id-no_thanks" min_contribution="0">
           <div class="premium-short">
-            <input type="checkbox" disabled="disabled" /> {$premiumBlock.premiums_nothankyou_label}
+            <input type="checkbox" disabled="disabled" /> {$premiumBlock.premiums_nothankyou_label|escape}
           </div>
           <div class="premium-full">
-            <input type="checkbox" checked="checked" disabled="disabled" /> {$premiumBlock.premiums_nothankyou_label}
+            <input type="checkbox" checked="checked" disabled="disabled" /> {$premiumBlock.premiums_nothankyou_label|escape}
           </div>
         </div>
       {/if}
       {foreach from=$products item=row}
-        <div class="premium {if $showPremium}premium-selectable{/if}" id="premium_id-{$row.id}" min_contribution="{$row.min_contribution}">
+        <div class="premium {if $showPremiumSelectionFields}premium-selectable{/if}" id="premium_id-{$row.id}" min_contribution="{$row.min_contribution}">
           <div class="premium-short">
-            {if $row.thumbnail}<div class="premium-short-thumbnail"><img src="{$row.thumbnail}" alt="{$row.name|escape}" /></div>{/if}
-            <div class="premium-short-content">{$row.name}</div>
+            {if $row.thumbnail}<div class="premium-short-thumbnail"><img src="{$row.thumbnail|purify}" alt="{$row.name|escape}" /></div>{/if}
+            <div class="premium-short-content">{$row.name|escape}</div>
             <div style="clear:both"></div>
           </div>
 
           <div class="premium-full">
-            <div class="premium-full-image">{if $row.image}<img src="{$row.image}" alt="{$row.name|escape}" />{/if}</div>
+            <div class="premium-full-image">{if $row.image}<img src="{$row.image|escape}" alt="{$row.name|escape}" />{/if}</div>
             <div class="premium-full-content">
-              <div class="premium-full-title">{$row.name}</div>
+              <div class="premium-full-title">{$row.name|escape}</div>
               <div class="premium-full-disabled">
                 {ts 1=$row.min_contribution|crmMoney}You must contribute at least %1 to get this item{/ts}<br/>
                 <button type="button" amount="{$row.min_contribution}">
@@ -67,18 +67,16 @@
                 </button>
               </div>
               <div class="premium-full-description">
-                {$row.description}
+                {$row.description|escape}
               </div>
-              {if $showSelectOptions}
-                {assign var="pid" value="options_"|cat:$row.id}
-                {if $pid}
+              {if $showPremiumSelectionFields}
+                {assign var="premium_option" value="options_"|cat:$row.id}
                   <div class="premium-full-options">
-                    <p>{$form.$pid.html}</p>
+                    <p>{$form.$premium_option.html}</p>
                   </div>
-                {/if}
               {else}
                 <div class="premium-full-options">
-                  <p><strong>{$row.options}</strong></p>
+                  <p><strong>{$row.options|purify}</strong></p>
                 </div>
               {/if}
               {if (($premiumBlock.premiums_display_min_contribution AND $context EQ "makeContribution") OR $preview EQ 1) AND $row.min_contribution GT 0}
@@ -90,13 +88,13 @@
           <div style="clear:both"></div>
         </div>
       {/foreach}
-      {if $showPremium AND !$preview AND $premiumBlock.premiums_nothankyou_position EQ 2}
+      {if $showPremiumSelectionFields AND !$preview AND $premiumBlock.premiums_nothankyou_position EQ 2}
         <div class="premium premium-no_thanks" id="premium_id-no_thanks" min_contribution="0">
           <div class="premium-short">
-            <input type="checkbox" disabled="disabled" /> {$premiumBlock.premiums_nothankyou_label}
+            <input type="checkbox" disabled="disabled" /> {$premiumBlock.premiums_nothankyou_label|escape}
           </div>
           <div class="premium-full">
-            <input type="checkbox" checked="checked" disabled="disabled" /> {$premiumBlock.premiums_nothankyou_label}
+            <input type="checkbox" checked="checked" disabled="disabled" /> {$premiumBlock.premiums_nothankyou_label|escape}
           </div>
         </div>
       {/if}
diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/ThankYou.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/ThankYou.tpl
index 7f4b6bd0366760187cfc55323bd4ac505e8e00a7..74854f2d16964f0f0036cc502586eced6de80fc5 100644
--- a/civicrm/templates/CRM/Contribute/Form/Contribution/ThankYou.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/Contribution/ThankYou.tpl
@@ -45,7 +45,7 @@
         </div>
       {/if}
     {elseif $isPendingOutcome}
-      <div>{ts 1=$paymentProcessor.name}Your contribution has been submitted to %1 for processing.{/ts}</div>
+      <div>{ts 1=$paymentProcessorName|escape}Your contribution has been submitted to %1 for processing.{/ts}</div>
         {if $is_email_receipt}
       <div>
         {if $onBehalfEmail AND ($onBehalfEmail neq $email)}
@@ -82,7 +82,7 @@
         {if $lineItem and $priceSetID}
           {if !$amount}{assign var="amount" value=0}{/if}
           {assign var="totalAmount" value=$amount}
-          {include file="CRM/Price/Page/LineItem.tpl" context="Contribution"}
+          {include file="CRM/Price/Page/LineItem.tpl" context="Contribution" displayLineItemFinancialType=false pricesetFieldsCount=false currencySymbol='' hookDiscount=''}
         {elseif $membership_amount}
           {$membership_name} {ts}Membership{/ts}: <strong>{$membership_amount|crmMoney}</strong><br />
           {if $amount}
@@ -93,7 +93,7 @@
             {/if}
           {/if}
           <strong> -------------------------------------------</strong><br />
-          {ts}Total{/ts}: <strong>{$amount+$membership_amount|crmMoney}</strong><br />
+          {ts}Total{/ts}: <strong>{$orderTotal|crmMoney}</strong><br />
         {else}
           {if $totalTaxAmount}
             {ts}Tax Amount{/ts}: <strong>{$totalTaxAmount|crmMoney}</strong><br />
@@ -116,7 +116,7 @@
           {if !empty($auto_renew)} {* Auto-renew membership confirmation *}
             {crmRegion name="contribution-thankyou-recur-membership"}
               <br />
-              {if $installments > 1}
+              {if !$installments || $installments > 1}
                 {if $frequency_interval > 1}
                   <strong>{ts 1=$frequency_interval 2=$frequency_unit}This membership will be renewed automatically every %1 %2(s).{/ts}</strong>
                 {else}
@@ -273,7 +273,7 @@
     </div>
   {/if}
 
-  {if in_array('credit_card_number', $form) || in_array('bank_account_number', $form) && ($amount GT 0 OR $minimum_fee GT 0)}
+  {if in_array('credit_card_number', $paymentFields) || in_array('bank_account_number', $paymentFields) && ($amount GT 0 OR $minimum_fee GT 0)}
     {crmRegion name="contribution-thankyou-billing-block"}
       <div class="crm-group credit_card-group">
         {if $paymentFieldsetLabel}
@@ -281,7 +281,7 @@
             {$paymentFieldsetLabel}
           </div>
         {/if}
-          {if in_array('bank_account_number', $form) && $bank_account_number}
+          {if in_array('bank_account_number', $paymentFields) && $bank_account_number}
           <div class="display-block">
             {ts}Account Holder{/ts}: {$account_holder}<br />
             {ts}Bank Identification Number{/ts}: {$bank_identification_number}<br />
@@ -300,7 +300,7 @@
     {/crmRegion}
   {/if}
 
-  {include file="CRM/Contribute/Form/Contribution/PremiumBlock.tpl" context="thankContribution"}
+  {include file="CRM/Contribute/Form/Contribution/PremiumBlock.tpl" context="thankContribution" showPremiumSelectionFields=false preview=false}
 
   {if $customPost}
     <fieldset class="label-left crm-profile-view">
@@ -315,6 +315,6 @@
   </div>
   {if $isShare}
     {capture assign=contributionUrl}{crmURL p='civicrm/contribute/transact' q="$qParams" a=1 fe=1 h=1}{/capture}
-    {include file="CRM/common/SocialNetwork.tpl" url=$contributionUrl title=$title pageURL=$contributionUrl}
+    {include file="CRM/common/SocialNetwork.tpl" url=$contributionUrl title=false pageURL=$contributionUrl emailMode=false}
   {/if}
 </div>
diff --git a/civicrm/templates/CRM/Contribute/Form/ContributionPage/ThankYou.tpl b/civicrm/templates/CRM/Contribute/Form/ContributionPage/ThankYou.tpl
index 77bdef9dfeba62a2ac9156abf837b5f52e561a68..309f14580d59e5702aac4dd0b40768aed80a9cf4 100644
--- a/civicrm/templates/CRM/Contribute/Form/ContributionPage/ThankYou.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/ContributionPage/ThankYou.tpl
@@ -73,5 +73,5 @@
  {/literal}
 </script>
 {/crmRegion}
-{crmRegion name="contribute-form-contributionpage-thankyou-post}
+{crmRegion name="contribute-form-contributionpage-thankyou-post"}
 {/crmRegion}
diff --git a/civicrm/templates/CRM/Contribute/Page/ManagePremiums.tpl b/civicrm/templates/CRM/Contribute/Page/ManagePremiums.tpl
index 9760a62a99368fe0e7d28af2b3a59aa4130bff5e..d5ec4b8f440369ceda1c1cf14e37d526c7980adf 100644
--- a/civicrm/templates/CRM/Contribute/Page/ManagePremiums.tpl
+++ b/civicrm/templates/CRM/Contribute/Page/ManagePremiums.tpl
@@ -43,13 +43,13 @@
            </tr>
           </thead>
         {foreach from=$rows item=row}
-        <tr id="product-{$row.id}" class="crm-entity {cycle values="odd-row,even-row"}{if !empty($row.class)} {$row.class}{/if}{if NOT $row.is_active} disabled{/if}">
-          <td class="crm-contribution-form-block-name crm-editable" data-field="name">{$row.name}</td>
-          <td class="crm-contribution-form-block-sku crm-editable" data-field="sku">{$row.sku}</td>
+        <tr id="product-{$row.id}" class="crm-entity {cycle values="odd-row,even-row"} {$row.class}{if NOT $row.is_active} disabled{/if}">
+          <td class="crm-contribution-form-block-name crm-editable" data-field="name">{$row.name|escape}</td>
+          <td class="crm-contribution-form-block-sku crm-editable" data-field="sku">{$row.sku|escape}</td>
           <td class="crm-contribution-form-block-price">{$row.price|crmMoney}</td>
           <td class="crm-contribution-form-block-min_contribution">{$row.min_contribution|crmMoney}</td>
           <td class="crm-contribution-form-block-cost">{$row.cost|crmMoney}</td>
-          <td class="crm-contribution-form-block-financial_type">{$row.financial_type}</td>
+          <td class="crm-contribution-form-block-financial_type">{$row.financial_type|escape}</td>
           <td id="row_{$row.id}_status" >{if $row.is_active eq 1} {ts}Yes{/ts} {else} {ts}No{/ts} {/if}</td>
           <td id={$row.id}>{$row.action|smarty:nodefaults|replace:'xx':$row.id}</td>
         </tr>
@@ -66,7 +66,7 @@
     {if $action ne 1 and $action ne 2}
     <div class="messages status no-popup">
         <img src="{$config->resourceBase}i/Inform.gif" alt="{ts}status{/ts}"/>
-        {capture assign=crmURL}{crmURL p='civicrm/admin/contribute/managePremiums' q="action=add&reset=1"}{/capture}
+        {capture assign=crmURL}{crmURL p='civicrm/admin/contribute/managePremiums/edit' q="action=add&reset=1"}{/capture}
         {ts 1=$crmURL}No premium products have been created for your site. You can <a href='%1'>add one</a>.{/ts}
     </div>
     {/if}
diff --git a/civicrm/templates/CRM/Contribute/Page/Premium.tpl b/civicrm/templates/CRM/Contribute/Page/Premium.tpl
index 377ff12a2fd9edac563516c54a3be77e23fa9af8..0424e00d0f1bcf63d8d37fa5d855c515c3448a28 100644
--- a/civicrm/templates/CRM/Contribute/Page/Premium.tpl
+++ b/civicrm/templates/CRM/Contribute/Page/Premium.tpl
@@ -28,14 +28,14 @@
         </tr>
         {foreach from=$rows item=row}
         <tr class="{cycle values='odd-row,even-row'}{if !empty($row.class)} {$row.class}{/if}{if NOT $row.is_active} disabled{/if}">
-          <td class="crm-contribution-form-block-product_name">{$row.product_name}</td>
-          <td class="crm-contribution-form-block-sku">{$row.sku}</td>
+          <td class="crm-contribution-form-block-product_name">{$row.product_name|escape}</td>
+          <td class="crm-contribution-form-block-sku">{$row.sku|escape}</td>
           <td class="crm-contribution-form-block-price">{$row.price|crmMoney}</td>
           <td class="crm-contribution-form-block-min_contribution">{$row.min_contribution|crmMoney}</td>
           <td class="crm-contribution-form-block-cost">{$row.cost|crmMoney}</td>
-          <td class="crm-contribution-form-block-financial_type">{$row.financial_type}</td>
+          <td class="crm-contribution-form-block-financial_type">{$row.financial_type|escape}</td>
           <td class="nowrap crm-contribution-form-block-weight">{$row.weight|smarty:nodefaults}</td>
-          <td class="crm-contribution-form-block-action">{$row.action}</td>
+          <td class="crm-contribution-form-block-action">{$row.action|smarty:nodefaults}</td>
         </tr>
         {/foreach}
         </table>
@@ -48,16 +48,14 @@
     {/if}
 </div>
 {else}
-  {if $showForm eq false}
-    <div class="messages status no-popup">
-      {if $products ne null}
-        {icon icon="fa-info-circle"}{/icon}
-        {capture assign=crmURL}{crmURL p='civicrm/admin/contribute/addProductToPage' q="reset=1&action=update&id=$id"}{/capture}
-        {ts 1=$crmURL}There are no premiums offered on this contribution page yet. You can <a href='%1'>add one</a>.{/ts}
-      {else}
-        {icon icon="fa-info-circle"}{/icon}
-        {ts 1=$managePremiumsURL}There are no active premiums for your site. You can <a href='%1'>create and/or enable premiums here</a>.{/ts}
-      {/if}
-    </div>
-  {/if}
+  <div class="messages status no-popup">
+    {if $products ne null}
+      {icon icon="fa-info-circle"}{/icon}
+      {capture assign=crmURL}{crmURL p='civicrm/admin/contribute/addProductToPage' q="reset=1&action=update&id=$id"}{/capture}
+      {ts 1=$crmURL}There are no premiums offered on this contribution page yet. You can <a href='%1'>add one</a>.{/ts}
+    {else}
+      {icon icon="fa-info-circle"}{/icon}
+      {ts 1=$managePremiumsURL}There are no active premiums for your site. You can <a href='%1'>create and/or enable premiums here</a>.{/ts}
+    {/if}
+  </div>
 {/if}
diff --git a/civicrm/templates/CRM/Core/Form/RecurringEntity.tpl b/civicrm/templates/CRM/Core/Form/RecurringEntity.tpl
index 3949653a14226ac26fc49d9e7c29c4ec614adc4d..1a2f3bd6f16626ef9fd46c781651706bb39ed674 100644
--- a/civicrm/templates/CRM/Core/Form/RecurringEntity.tpl
+++ b/civicrm/templates/CRM/Core/Form/RecurringEntity.tpl
@@ -213,6 +213,10 @@
           previewDialog();
         }
       }
+      else {
+        // Avoid jquery validation on required fields if they are visible
+        $('#recurring-entity-block :input').removeClass('required');
+      }
     });
 
     // Enable/disable form buttons when not embedded in another form
diff --git a/civicrm/templates/CRM/Custom/Form/Field.tpl b/civicrm/templates/CRM/Custom/Form/Field.tpl
index e4476c6442009a33e34ec3adedf960ff2747b6a1..d2e4dea8de00a40e446b66a7d8fe059e65332ce8 100644
--- a/civicrm/templates/CRM/Custom/Form/Field.tpl
+++ b/civicrm/templates/CRM/Custom/Form/Field.tpl
@@ -173,11 +173,7 @@
       </td>
     </tr>
   </table>
-  {if $action ne 4}
-    <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div>
-  {else}
-    <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div>
-  {/if}
+  <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div>
 </div>
 {literal}
 <script type="text/javascript">
diff --git a/civicrm/templates/CRM/Dashlet/Page/Blog.tpl b/civicrm/templates/CRM/Dashlet/Page/Blog.tpl
index 00d6ce4633547f92cf70ec057f5cade368c2b5d7..cdf9edc472d10e8428886210bcb0a17888994bb3 100644
--- a/civicrm/templates/CRM/Dashlet/Page/Blog.tpl
+++ b/civicrm/templates/CRM/Dashlet/Page/Blog.tpl
@@ -11,6 +11,7 @@
 <style type="text/css">
   #civicrm-news-feed {
     border: 0 none;
+    font-family: inherit; // Stops JQueryUI's attempt to make this section Verdana
   }
   #civicrm-news-feed .crm-news-feed-unread .crm-news-feed-item-title {
     font-weight: bold;
@@ -45,16 +46,16 @@
   {foreach from=$feeds item="channel"}
     <div id="civicrm-news-feed-{$channel.name}">
     {foreach from=$channel.items item=article}
-      <div class="crm-accordion-wrapper collapsed">
-        <div class="crm-accordion-header">
+      <details class="crm-accordion-wrapper">
+        <summary class="crm-accordion-header">
           <span class="crm-news-feed-item-title">{$article.title|smarty:nodefaults|purify}</span>
           <span class="crm-news-feed-item-preview"> - {if function_exists('mb_substr')}{$article.description|smarty:nodefaults|strip_tags|mb_substr:0:150}{else}{$article.description|smarty:nodefaults|strip_tags}{/if}</span>
-        </div>
+        </summary>
         <div class="crm-accordion-body">
           <div>{$article.description|smarty:nodefaults|purify}</div>
           <p class="crm-news-feed-item-link"><a target="_blank" href="{$article.link|smarty:nodefaults|purify}" title="{$article.title|smarty:nodefaults|escape}"><i class="crm-i fa-external-link" aria-hidden="true"></i> {ts}read more{/ts}…</a></p>
         </div>
-      </div>
+      </details>
     {/foreach}
     </div>
   {/foreach}
diff --git a/civicrm/templates/CRM/Event/Form/ManageEvent/EventInfo.tpl b/civicrm/templates/CRM/Event/Form/ManageEvent/EventInfo.tpl
index 9bfff190ccaea48de54df714a71c867581d073c7..326ef4aa007b60d6c8f89121df4bfc03af7891f6 100644
--- a/civicrm/templates/CRM/Event/Form/ManageEvent/EventInfo.tpl
+++ b/civicrm/templates/CRM/Event/Form/ManageEvent/EventInfo.tpl
@@ -105,6 +105,10 @@
       <td>&nbsp;</td>
       <td>{$form.is_active.html} {$form.is_active.label}</td>
     </tr>
+    <tr class="crm-event-manage-eventinfo-form-block-is_show_calendar_links">
+      <td>&nbsp;</td>
+      <td>{$form.is_show_calendar_links.html} {$form.is_show_calendar_links.label}</td>
+    </tr>
 
     {if $eventID AND !$isTemplate}
       <tr class="crm-event-manage-eventinfo-form-block-info_link">
diff --git a/civicrm/templates/CRM/Event/Form/Registration/Confirm.tpl b/civicrm/templates/CRM/Event/Form/Registration/Confirm.tpl
index a546f2b650fc02491188047a5e2e10caa7d1b692..006f9e2c9fc801dc4ff2271f5f8c9b8981dfa66c 100644
--- a/civicrm/templates/CRM/Event/Form/Registration/Confirm.tpl
+++ b/civicrm/templates/CRM/Event/Form/Registration/Confirm.tpl
@@ -13,19 +13,16 @@
 
 <div class="crm-event-id-{$event.id} crm-block crm-event-confirm-form-block">
     <div class="messages status section continue_message-section"><p>
+    {capture assign=register}{ts}Register{/ts}{/capture}
     {if $isOnWaitlist}
         {ts}Please verify your information.{/ts} <strong>{ts}If space becomes available you will receive an email with a link to complete your registration.{/ts}</strong>
-        {ts 1=$form.buttons._qf_Confirm_next.html|strip_tags}Click <strong>%1</strong> to be added to the WAIT LIST for this event.{/ts}
+        {ts 1=$register}Click <strong>%1</strong> to be added to the WAIT LIST for this event.{/ts}
     {elseif $isRequireApproval}
         {ts}Please verify your information.{/ts} <strong>{ts}Once approved, you will receive an email with a link to complete the registration process.{/ts}</strong>
-        {ts 1=$form.buttons._qf_Confirm_next.html|strip_tags}Click <strong>%1</strong> to submit your registration for approval.{/ts}
+        {ts 1=$register}Click <strong>%1</strong> to submit your registration for approval.{/ts}
     {else}
         {ts}Please verify your information.{/ts}
-        {if $contributeMode EQ 'notify' and !$is_pay_later and !$isAmountzero}
-            {ts 1=$form.buttons._qf_Confirm_next.html|strip_tags 2=$paymentProcessor.frontend_title}Click <strong>%1</strong> to checkout with %2.{/ts}
-        {else}
-            {ts 1=$form.buttons._qf_Confirm_next.html|strip_tags}Click <strong>%1</strong> to complete your registration.{/ts}
-        {/if}
+        {$verifyText}
     {/if}
     </p></div>
     {if $is_pay_later and !$isAmountzero and !$isOnWaitlist and !$isRequireApproval}
diff --git a/civicrm/templates/CRM/Event/Form/Registration/ThankYou.tpl b/civicrm/templates/CRM/Event/Form/Registration/ThankYou.tpl
index 14fe56cfa54253e4718aaecf8a84c7ee6a508fec..f697f70e55d33f30cae13bde2f6434dac6821772 100644
--- a/civicrm/templates/CRM/Event/Form/Registration/ThankYou.tpl
+++ b/civicrm/templates/CRM/Event/Form/Registration/ThankYou.tpl
@@ -51,11 +51,11 @@
             {if $is_email_confirm}
                 <p>{ts 1=$email}An email with event details has been sent to %1.{/ts}</p>
             {/if}
-        {* PayPal_Standard sets contribution_mode to 'notify'. We don't know if transaction is successful until we receive the IPN (payment notification) *}
-        {elseif $contributeMode EQ 'notify' and $paidEvent}
-            <p>{ts 1=$paymentProcessor.name}Your registration payment has been submitted to %1 for processing.{/ts}</p>
+        {* This text is determined by the payment processor *}
+        {elseif $eventConfirmText}
+            <p>{$eventConfirmText}</p>
             {if $is_email_confirm}
-                <p>{ts 1=$email}A registration confirmation email will be sent to %1 once the transaction is processed successfully.{/ts}</p>
+                <p>{$eventEmailConfirmText}</p>
             {/if}
         {else}
             <p>{ts}Your registration has been processed successfully.{/ts}</p>
@@ -196,13 +196,13 @@
         <a href="{crmURL p='civicrm/event/info' q="reset=1&id=`$event.id`"}"><i class="crm-i fa-chevron-left" aria-hidden="true"></i> {ts 1=$event.event_title}Back to "%1" event information{/ts}</a>
     </div>
 
-    {if $event.is_public}
+    {if $event.is_public and $event.is_show_calendar_links}
       <div class="action-link section iCal_links-section">
         {include file="CRM/Event/Page/iCalLinks.tpl"}
       </div>
     {/if}
     {if $event.is_share}
-    {capture assign=eventUrl}{crmURL p='civicrm/event/info' q="id=`$event.id`&amp;reset=1" a=1 fe=1 h=1}{/capture}
-    {include file="CRM/common/SocialNetwork.tpl" url=$eventUrl title=$event.title pageURL=$eventUrl}
+      {capture assign=eventUrl}{crmURL p='civicrm/event/info' q="id=`$event.id`&amp;reset=1" a=1 fe=1 h=1}{/capture}
+      {include file="CRM/common/SocialNetwork.tpl" url=$eventUrl title=$event.title pageURL=$eventUrl emailMode=false}
     {/if}
 </div>
diff --git a/civicrm/templates/CRM/Event/Page/EventInfo.tpl b/civicrm/templates/CRM/Event/Page/EventInfo.tpl
index 4d0975257808bf2fef857fae0af121b9ba5a40f2..ed71354dc4bd30a1b132bc01f2501a468a2c3072 100644
--- a/civicrm/templates/CRM/Event/Page/EventInfo.tpl
+++ b/civicrm/templates/CRM/Event/Page/EventInfo.tpl
@@ -222,7 +222,7 @@
         {/if}
       {/crmRegion}
     </div>
-    {if $event.is_public}
+    {if $event.is_public and $event.is_show_calendar_links}
         <div class="action-link section iCal_links-section">
           {include file="CRM/Event/Page/iCalLinks.tpl"}
         </div>
diff --git a/civicrm/templates/CRM/Friend/Form.tpl b/civicrm/templates/CRM/Friend/Form.tpl
index 63d521a85a045ef438f829e848744d18e11981ad..3988e7d6f40af88289e21b62b97268554dcc6d15 100644
--- a/civicrm/templates/CRM/Friend/Form.tpl
+++ b/civicrm/templates/CRM/Friend/Form.tpl
@@ -81,5 +81,5 @@
   {else}
     {capture assign=pageURL}{crmURL p='civicrm/contribute/transact' q="reset=1&amp;id=`$entityID`" a=1 fe=1 h=1}{/capture}
   {/if}
-  {include file="CRM/common/SocialNetwork.tpl" url=$pageURL title=$title pageURL=$pageURL}
+  {include file="CRM/common/SocialNetwork.tpl" url=$pageURL title=$title pageURL=$pageURL emailMode=false}
 {/if}
diff --git a/civicrm/templates/CRM/Member/Page/Tab.tpl b/civicrm/templates/CRM/Member/Page/Tab.tpl
index b1482ccef6f62843751ea97048e18aec2f51e7af..65943e0ebb5ebb811a92da740e7599472e97b6db 100644
--- a/civicrm/templates/CRM/Member/Page/Tab.tpl
+++ b/civicrm/templates/CRM/Member/Page/Tab.tpl
@@ -28,7 +28,7 @@
         </div>
 
         <div class="action-link">
-          {include file="CRM/common/formButtons.tpl" location="top"}
+          {include file="CRM/common/formButtons.tpl" location="top" form=false}
         </div>
     {/if}
     {if NOT ($activeMembers or $inActiveMembers) and $action ne 2 and $action ne 1 and $action ne 8 and $action ne 4 and $action ne 32768}
diff --git a/civicrm/templates/CRM/Price/Form/Field.tpl b/civicrm/templates/CRM/Price/Form/Field.tpl
index 74a9cc2718c2c43a64a006a353dbd293cc07e348..3873b2b3144bb8bd0e3139dc2186a5400b355aa6 100644
--- a/civicrm/templates/CRM/Price/Form/Field.tpl
+++ b/civicrm/templates/CRM/Price/Form/Field.tpl
@@ -144,7 +144,7 @@
 
 {if $action eq 1}
 {* Conditionally show table for setting up selection options - for field types = radio, checkbox or select *}
-  <div id='showoption' class="hiddenElement">{ include file="CRM/Price/Form/OptionFields.tpl"}</div>
+  <div id='showoption' class="hiddenElement">{include file="CRM/Price/Form/OptionFields.tpl"}</div>
 {/if}
   <table class="form-layout">
     <tr id="optionsPerLine" class="crm-price-field-form-block-options_per_line">
diff --git a/civicrm/templates/CRM/Price/Form/PriceSet.tpl b/civicrm/templates/CRM/Price/Form/PriceSet.tpl
index 6f64069ee4317d219871fe66dbff64a3dc702692..32503867de7ec6b1ee58c0bc5fed41e24c1b2170 100644
--- a/civicrm/templates/CRM/Price/Form/PriceSet.tpl
+++ b/civicrm/templates/CRM/Price/Form/PriceSet.tpl
@@ -95,21 +95,19 @@
                 </div>
 
             {/if}
-              {if !empty($extends) && $extends eq "Membership"}
-                {if ($element.id == $priceSet.auto_renew_membership_field)}
-                  <div id="allow_auto_renew">
-                    <div class='crm-section auto-renew'>
-                      <div class='label'></div>
-                      <div class='content' id="auto_renew_section">
-                        {if $form.auto_renew}
-                          {$form.auto_renew.html}&nbsp;{$form.auto_renew.label|smarty:nodefaults|purify}
-                        {/if}
-                      </div>
-                      <div class='content' id="force_renew" style='display: none'>{ts}Membership will renew automatically.{/ts}</div>
-                    </div>
+            {if (array_key_exists('auto_renew', $form)) && !empty($extends) && $extends eq "Membership" && array_key_exists('supports_auto_renew', $element) && $element.supports_auto_renew}
+              <div id="allow_auto_renew">
+                <div class='crm-section auto-renew'>
+                  <div class='label'></div>
+                  <div class='content' id="auto_renew_section">
+                    {if $form.auto_renew}
+                      {$form.auto_renew.html}&nbsp;{$form.auto_renew.label|smarty:nodefaults|purify}
+                    {/if}
                   </div>
-                {/if}
-              {/if}
+                  <div class='content' id="force_renew" style='display: none'>{ts}Membership will renew automatically.{/ts}</div>
+                </div>
+              </div>
+            {/if}
               <div class="clear"></div>
           </div>
         {/if}
diff --git a/civicrm/templates/CRM/Report/Form/Layout/Table.tpl b/civicrm/templates/CRM/Report/Form/Layout/Table.tpl
index d27ff1f48e37732464c22ec4d3baed0f975a69de..8187b41455cf88044a526b9cb60cdf86b47964ec 100644
--- a/civicrm/templates/CRM/Report/Form/Layout/Table.tpl
+++ b/civicrm/templates/CRM/Report/Form/Layout/Table.tpl
@@ -52,91 +52,89 @@
         {* pre-compile section header here, rather than doing it every time under foreach *}
         {capture assign=sectionHeaderTemplate}
             {assign var=columnCount value=$columnHeaders|@count}
-            {assign var=l value=$smarty.ldelim}
-            {assign var=r value=$smarty.rdelim}
             {assign var=pageBroke value=0}
-            {foreach from=$sections item=section key=column name=sections}
-                {counter assign="h"}
-                {$l}isValueChange value=$row.{$column} key="{$column}" assign=isValueChanged{$r}
-                {$l}if $isValueChanged{$r}
-
-                    {$l}if $sections.{$column}.type & 4{$r}
-                        {$l}assign var=printValue value=$row.{$column}|crmDate{$r}
-                    {$l}elseif $sections.{$column}.type eq 1024{$r}
-                        {$l}assign var=printValue value=$row.{$column}|crmMoney{$r}
-                    {$l}else{$r}
-                        {$l}assign var=printValue value=$row.{$column}{$r}
-                    {$l}/if{$r}
-                    {$l}if $rowid neq 0{$r}
-                      {if $section.pageBreak}
-                        {$l}if $pageBroke >= {$h} or $pageBroke == 0{$r}
-                          </table>
-                          <div class="page-break"></div>
-                          <table class="report-layout display">
-                        {$l}/if{$r}
-                        {$l}assign var=pageBroke value={$h}{$r}
-                      {/if}
-                    {$l}/if{$r}
-                    <tr class="crm-report-sectionHeader crm-report-sectionHeader-{$h}"><th colspan="{$columnCount}">
-
-                        <h{$h}>{$section.title|escape}: {$l}$printValue|default:"<em>none</em>"{$r}
-                            ({$l}sectionTotal key=$row.{$column} depth={$smarty.foreach.sections.index}{$r})
-                        </h{$h}>
-                    </th></tr>
-                    {if $smarty.foreach.sections.last}
-                        <tr class="crm-report-sectionCols">{$l}$tableHeader{$r}</tr>
-                    {/if}
-                {$l}/if{$r}
-            {/foreach}
         {/capture}
 
         {foreach from=$rows item=row key=rowid}
-           {eval var=$sectionHeaderTemplate}
-            <tr  class="{cycle values="odd-row,even-row"} {if $row.class}{$row.class}{/if} crm-report" id="crm-report_{$rowid}">
-                {foreach from=$columnHeaders item=header key=field}
-                    {assign var=fieldLink value=$field|cat:"_link"}
-                    {assign var=fieldHover value=$field|cat:"_hover"}
-                    {assign var=fieldClass value=$field|cat:"_class"}
-                    <td class="crm-report-{$field}{if $header.type eq 1024 OR $header.type eq 1 OR $header.type eq 512} report-contents-right{elseif $row.$field eq 'Subtotal'} report-label{/if}">
-                        {if array_key_exists($fieldLink, $row) && $row.$fieldLink}
-                            <a href="{$row.$fieldLink}"
-                               {if array_key_exists($fieldHover, $row)}title="{$row.$fieldHover|escape}"{/if}
-                               {if array_key_exists($fieldClass, $row)}class="{$row.$fieldClass}"{/if}
-                            >
-                        {/if}
+          {foreach from=$sections item=section key=column name=sections}
+            {counter start=1 assign="h"}
+            {assign var=sectionColumn value=$sections.$column}
+            {isValueChange value=$row.$column key=$column assign=isValueChanged}
+              {if $isValueChanged}
 
-                        {if is_array($row.$field)}
-                            {foreach from=$row.$field item=fieldrow key=fieldid}
-                                <div class="crm-report-{$field}-row-{$fieldid}">{$fieldrow}</div>
-                            {/foreach}
-                        {elseif $row.$field eq 'Subtotal'}
-                            {$row.$field}
-                        {elseif $header.type & 4 OR $header.type & 256}
-                            {if $header.group_by eq 'MONTH' or $header.group_by eq 'QUARTER'}
-                                {$row.$field|crmDate:$config->dateformatPartial}
-                            {elseif $header.group_by eq 'YEAR'}
-                                {$row.$field|crmDate:$config->dateformatYear}
-                            {else}
-                                {if $header.type == 4}
-                                   {$row.$field|truncate:10:''|crmDate}
-                                {else}
-                                   {$row.$field|crmDate}
-                                {/if}
-                            {/if}
-                        {elseif $header.type eq 1024}
-                            {if $currencyColumn}
-                                <span class="nowrap">{$row.$field|crmMoney:$row.$currencyColumn}</span>
-                            {else}
-                                <span class="nowrap">{$row.$field|crmMoney}</span>
-                           {/if}
-                        {else}
-                            {$row.$field|smarty:nodefaults|purify}
-                        {/if}
+              {if $sectionColumn.type & 4}
+              {assign var=printValue value=$row.$column|crmDate}
+              {elseif $sectionColumn.type eq 1024}
+              {assign var=printValue value=$row.$column|crmMoney}
+              {else}
+              {assign var=printValue value=$row.$column}
+              {/if}
+              {if $rowid neq 0}
+              {if $section.pageBreak}
+                  {if $pageBroke >= $h or $pageBroke == 0}
+                </table>
+                <div class="page-break"></div>
+                <table class="report-layout display">
+                  {/if}
+                  {assign var=pageBroke value=$h}
+              {/if}
+              {/if}
+            <tr class="crm-report-sectionHeader crm-report-sectionHeader-{$h}"><th colspan="{$columnCount}">
 
-                        {if array_key_exists($fieldLink, $row) && $row.$fieldLink}</a>{/if}
-                    </td>
-                {/foreach}
-            </tr>
+                <h{$h}>{$section.title|escape}: {$printValue|default:"<em>none</em>"}
+                  ({sectionTotal key=$row.$column depth=$smarty.foreach.sections.index totals=$sectionTotals})
+                </h{$h}>
+              </th></tr>
+              {if $smarty.foreach.sections.last}
+                <tr class="crm-report-sectionCols">{$tableHeader}</tr>
+              {/if}
+              {/if}
+          {/foreach}
+          <tr  class="{cycle values="odd-row,even-row"} {if $row.class}{$row.class}{/if} crm-report" id="crm-report_{$rowid}">
+              {foreach from=$columnHeaders item=header key=field}
+                  {assign var=fieldLink value=$field|cat:"_link"}
+                  {assign var=fieldHover value=$field|cat:"_hover"}
+                  {assign var=fieldClass value=$field|cat:"_class"}
+                  <td class="crm-report-{$field}{if $header.type eq 1024 OR $header.type eq 1 OR $header.type eq 512} report-contents-right{elseif array_key_exists($field, $row) && $row.$field eq 'Subtotal'} report-label{/if}">
+                      {if array_key_exists($fieldLink, $row) && $row.$fieldLink}
+                          <a href="{$row.$fieldLink}"
+                             {if array_key_exists($fieldHover, $row)}title="{$row.$fieldHover|escape}"{/if}
+                             {if array_key_exists($fieldClass, $row)}class="{$row.$fieldClass}"{/if}
+                          >
+                      {/if}
+
+                      {if array_key_exists($field, $row) && is_array($row.$field)}
+                          {foreach from=$row.$field item=fieldrow key=fieldid}
+                              <div class="crm-report-{$field}-row-{$fieldid}">{$fieldrow}</div>
+                          {/foreach}
+                      {elseif array_key_exists($field, $row) && $row.$field eq 'Subtotal'}
+                          {$row.$field}
+                      {elseif $header.type & 4 OR $header.type & 256}
+                          {if $header.group_by eq 'MONTH' or $header.group_by eq 'QUARTER'}
+                              {$row.$field|crmDate:$config->dateformatPartial}
+                          {elseif $header.group_by eq 'YEAR'}
+                              {$row.$field|crmDate:$config->dateformatYear}
+                          {else}
+                              {if $header.type == 4}
+                                 {$row.$field|truncate:10:''|crmDate}
+                              {else}
+                                 {$row.$field|crmDate}
+                              {/if}
+                          {/if}
+                      {elseif $header.type eq 1024}
+                          {if $currencyColumn}
+                              <span class="nowrap">{$row.$field|crmMoney:$row.$currencyColumn}</span>
+                          {else}
+                              <span class="nowrap">{$row.$field|crmMoney}</span>
+                         {/if}
+                      {elseif array_key_exists($field, $row)}
+                          {$row.$field|smarty:nodefaults|purify}
+                      {/if}
+
+                      {if array_key_exists($fieldLink, $row) && $row.$fieldLink}</a>{/if}
+                  </td>
+              {/foreach}
+          </tr>
         {/foreach}
 
         {if $grandStat}
@@ -150,7 +148,7 @@
                             {else}
                                 {$grandStat.$field|crmMoney}
                             {/if}
-                        {else}
+                        {elseif array_key_exists($field, $grandStat)}
                             {$grandStat.$field}
                         {/if}
                     </td>
diff --git a/civicrm/templates/CRM/Report/Form/Statistics.tpl b/civicrm/templates/CRM/Report/Form/Statistics.tpl
index e4625d9ab4898109f0118f84866aea10295f6fba..1564576e2d2560434c37945485b2be0201c185c1 100644
--- a/civicrm/templates/CRM/Report/Form/Statistics.tpl
+++ b/civicrm/templates/CRM/Report/Form/Statistics.tpl
@@ -37,9 +37,9 @@
         <tr>
           <th class="statistics" scope="row">{$row.title}</th>
           <td>
-            {if $row.type eq 1024}
+            {if array_key_exists('type', $row) && $row.type eq 1024}
               {$row.value|crmMoney|escape}
-            {elseif $row.type eq 2}
+            {elseif array_key_exists('type', $row) && $row.type eq 2}
               {$row.value|purify}
             {else}
                {$row.value|crmNumberFormat|escape}
diff --git a/civicrm/templates/CRM/Report/Form/Tabs/Filters.tpl b/civicrm/templates/CRM/Report/Form/Tabs/Filters.tpl
index e2f25de8b1252d16b029a1172690570648c01111..b3a701f52bfbd9e076d1a63639883508499fb785 100644
--- a/civicrm/templates/CRM/Report/Form/Tabs/Filters.tpl
+++ b/civicrm/templates/CRM/Report/Form/Tabs/Filters.tpl
@@ -32,7 +32,7 @@
                     <td class="label report-contents">{if !empty($field.title)}{$field.title}{/if}</td>
                       {include file="CRM/Core/DatePickerRangeWrapper.tpl" fieldName=$fieldName hideRelativeLabel=1 from='_from' to='_to' class='' colspan=''}
                   </tr>
-                {elseif $form.$fieldOp.html}
+                {elseif array_key_exists($fieldOp, $form) && $form.$fieldOp.html}
                   <tr class="report-contents crm-report crm-report-criteria-filter crm-report-criteria-filter-{$tableName}" {if array_key_exists('no_display', $field) && $field.no_display} style="display: none;"{/if}>
                     <td class="label report-contents">{if !empty($field.title)}{$field.title}{/if}</td>
                     <td class="report-contents">{$form.$fieldOp.html}</td>
diff --git a/civicrm/templates/CRM/common/formButtons.tpl b/civicrm/templates/CRM/common/formButtons.tpl
index be89d454e1ebcf1d670d1c19c8b4fc82b9df09f0..05a7a60cd068a522f68af560b2297fe684d08e94 100644
--- a/civicrm/templates/CRM/common/formButtons.tpl
+++ b/civicrm/templates/CRM/common/formButtons.tpl
@@ -12,23 +12,24 @@
 {* Loops through $linkButtons and assigns html "a" (link) buttons to the template. Used for additional entity functions such as "Move to Case" or "Renew Membership" *}
 {if $linkButtons}
   {foreach from=$linkButtons item=linkButton}
-    {if $linkButton.accessKey}
+    {if array_key_exists('accessKey', $linkButton) && $linkButton.accessKey}
       {capture assign=accessKey}accesskey="{$linkButton.accessKey}"{/capture}
     {else}{assign var="accessKey" value=""}
     {/if}
-    {if $linkButton.icon}
+    {if array_key_exists('icon', $linkButton) && $linkButton.icon}
       {capture assign=icon}<i class="crm-i {$linkButton.icon}" aria-hidden="true"></i> {/capture}
     {else}{assign var="icon" value=""}
     {/if}
-    {if $linkButton.ref}
+    {if array_key_exists('ref', $linkButton) && $linkButton.ref}
       {capture assign=linkname}name="{$linkButton.ref}"{/capture}
-    {else}{capture assign=linkname}name="{$linkButton.name}"{/capture}
+    {else}{capture assign=linkname}{if array_key_exists('name', $linkButton)}name="{$linkButton.name}"{/if}{/capture}
     {/if}
-    <a class="button{if array_key_exists('class', $linkButton)} {$linkButton.class}{/if}" {$linkname} href="{crmURL p=$linkButton.url q=$linkButton.qs}" {$accessKey} {$linkButton.extra}><span>{$icon|smarty:nodefaults}{$linkButton.title}</span></a>
+    <a class="button{if array_key_exists('class', $linkButton)} {$linkButton.class}{/if}" {$linkname} href="{crmURL p=$linkButton.url q=$linkButton.qs}" {$accessKey} {if array_key_exists('extra', $linkButton)}{$linkButton.extra}>{/if}<span>{$icon|smarty:nodefaults}{$linkButton.title}</span></a>
   {/foreach}
 {/if}
-
-{foreach from=$form.buttons item=button key=key name=btns}
+{if $form}
+  {* This could be called from Membership View - which is a page not a form but uses it for the links above *}
+  {foreach from=$form.buttons item=button key=key name=btns}
   {if $key|substring:0:4 EQ '_qf_'}
     {if $location}
       {$form.buttons.$key.html|crmReplace:id:"$key-$location"}
@@ -37,4 +38,5 @@
     {/if}
   {/if}
 {/foreach}
+{/if}
 {/crmRegion}
diff --git a/civicrm/templates/CRM/common/jcalendar.tpl b/civicrm/templates/CRM/common/jcalendar.tpl
index d3044553d212c2f22abf75cf79f5a113849a8826..33f5217a1a3d3602bd71396f6386c30ffb4b5611 100644
--- a/civicrm/templates/CRM/common/jcalendar.tpl
+++ b/civicrm/templates/CRM/common/jcalendar.tpl
@@ -10,7 +10,7 @@
 {if $batchUpdate}
     {assign var='elementId'   value=$form.field.$elementIndex.$elementName.id}
     {assign var="tElement" value=$elementName|cat:"_time"}
-    {assign var="timeElement" value=field_`$elementIndex`_`$elementName`_time}
+    {assign var="timeElement" value="field_`$elementIndex`_`$elementName`_time"}
     {$form.field.$elementIndex.$elementName.html}
 {elseif $elementIndex}
     {assign var='elementId'   value=$form.$elementName.$elementIndex.id}
diff --git a/civicrm/templates/CRM/common/joomla.tpl b/civicrm/templates/CRM/common/joomla.tpl
index 4ef44334281364b1b60d62cec0bc0c1422cfe98f..7c48858c06e08209737f2fd256164fe5a0ede738 100644
--- a/civicrm/templates/CRM/common/joomla.tpl
+++ b/civicrm/templates/CRM/common/joomla.tpl
@@ -37,10 +37,6 @@
 
     <div class="clear"></div>
 
-    {if $localTasks}
-        {include file="CRM/common/localNav.tpl"}
-    {/if}
-
     <div id="crm-main-content-wrapper">
       {include file="CRM/common/status.tpl"}
       {crmRegion name='page-body'}
diff --git a/civicrm/templates/CRM/common/paymentBlock.tpl b/civicrm/templates/CRM/common/paymentBlock.tpl
index 7844e4a7e50f34892366a56fee7cb219a4a2261d..8a3c00436b80dfd05acf66fb87abcda358c9f827 100644
--- a/civicrm/templates/CRM/common/paymentBlock.tpl
+++ b/civicrm/templates/CRM/common/paymentBlock.tpl
@@ -52,8 +52,7 @@
    */
   function skipPaymentMethod() {
     var isHide = false;
-    var isMultiple = {/literal}{$event.is_multiple_registrations|@json_encode}{literal};
-    var alwaysShowFlag = (isMultiple && cj("#additional_participants").val());
+    var alwaysShowFlag = (cj("#additional_participants").val());
     var alwaysHideFlag = (cj("#bypass_payment").val() == 1);
     var total_amount_tmp =  cj('#pricevalue').data('raw-total');
     // Hide billing questions if this is free
diff --git a/civicrm/templates/CRM/common/standalone.tpl b/civicrm/templates/CRM/common/standalone.tpl
index e84e85a76521fe9c605fc872a588e164c264217d..75f7382abd8742ff21983597b0b58ca29171d2f9 100644
--- a/civicrm/templates/CRM/common/standalone.tpl
+++ b/civicrm/templates/CRM/common/standalone.tpl
@@ -1,9 +1,8 @@
 <!DOCTYPE html >
-<html lang="{$config->lcMessages|substr:0:2}">
+<html lang="{$config->lcMessages|substr:0:2}" class="crm-standalone" >
  <head>
-  <meta http-equiv="Content-Style-Type" content="text/css" />
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   <link rel="Shortcut Icon" type="image/x-icon" href="{$config->resourceBase}i/widget/favicon.png" />
 
   {* @todo crmRegion below should replace this, but not working? *}
@@ -66,10 +65,6 @@
       {/crmRegion}
     </div>
 
-    {if isset($localTasks)}
-      {include file="CRM/common/localNav.tpl"}
-    {/if}
-
     {crmRegion name='page-footer'}
       {if !empty($urlIsPublic)}
         {include file="CRM/common/publicFooter.tpl"}
diff --git a/civicrm/vendor/autoload.php b/civicrm/vendor/autoload.php
index 7fe1163c190128ceb257024542999c8f9dcd13c1..1f0eb8d040a1fdf3fe8b8cfe47242392222742af 100644
--- a/civicrm/vendor/autoload.php
+++ b/civicrm/vendor/autoload.php
@@ -9,4 +9,4 @@ if (PHP_VERSION_ID < 50600) {
 
 require_once __DIR__ . '/composer/autoload_real.php';
 
-return ComposerAutoloaderInit950b3ed6f0b1ecab18eb0dbdaefa6b56::getLoader();
+return ComposerAutoloaderInit98eee021afc9a2f48b8e515948cdf197::getLoader();
diff --git a/civicrm/vendor/composer/autoload_classmap.php b/civicrm/vendor/composer/autoload_classmap.php
index d1977b86e3c207b3634ba7b88d26fb2a2b506d66..ecfababa580cc1f2f8d193626c4a2d7a07df12f4 100644
--- a/civicrm/vendor/composer/autoload_classmap.php
+++ b/civicrm/vendor/composer/autoload_classmap.php
@@ -21,7 +21,6 @@ return array(
     'Dompdf\\Cpdf' => $vendorDir . '/dompdf/dompdf/lib/Cpdf.php',
     'ICallbackNamed' => $vendorDir . '/rubobaquero/phpquery/phpQuery/phpQuery/Callback.php',
     'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
-    'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
     'PDF417' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/pdf417.php',
     'PEAR_Exception' => $vendorDir . '/pear/pear_exception/PEAR/Exception.php',
     'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
diff --git a/civicrm/vendor/composer/autoload_files.php b/civicrm/vendor/composer/autoload_files.php
index b6304b38662a7e1b3e742d7afb278f795000778e..4278566418c9d8ca0a1f50f3bfd8636dcff1de74 100644
--- a/civicrm/vendor/composer/autoload_files.php
+++ b/civicrm/vendor/composer/autoload_files.php
@@ -7,13 +7,11 @@ $baseDir = dirname($vendorDir);
 
 return array(
     'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
-    '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
     '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
     '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
-    'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
     'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
     'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
-    'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
+    '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
     '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
     '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
     '7e9bd612cc444b3eed788ebbe46263a0' => $vendorDir . '/laminas/laminas-zendframework-bridge/src/autoload.php',
@@ -77,6 +75,7 @@ return array(
     '4888a6f58c08148ebe17682f9ce9b2a8' => $vendorDir . '/markbaker/matrix/classes/src/Operations/divideby.php',
     'eef6fa3879d3efa347cd24d5eb348f85' => $vendorDir . '/markbaker/matrix/classes/src/Operations/divideinto.php',
     'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
+    '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
     '23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php',
     '9e4824c5afbdc1482b6025ce3d4dfde8' => $vendorDir . '/league/csv/src/functions_include.php',
     'def43f6c87e4f8dfd0c9e1b1bab14fe8' => $vendorDir . '/symfony/polyfill-iconv/bootstrap.php',
diff --git a/civicrm/vendor/composer/autoload_psr4.php b/civicrm/vendor/composer/autoload_psr4.php
index e37f9ad0b282dbfb026d5f9812cac5d948d9035d..49197b9f11376f5d85b002efce323eabfdd1c1ab 100644
--- a/civicrm/vendor/composer/autoload_psr4.php
+++ b/civicrm/vendor/composer/autoload_psr4.php
@@ -20,8 +20,6 @@ return array(
     'Symfony\\Polyfill\\Php73\\' => array($vendorDir . '/symfony/polyfill-php73'),
     'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
     'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
-    'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'),
-    'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'),
     'Symfony\\Polyfill\\Iconv\\' => array($vendorDir . '/symfony/polyfill-iconv'),
     'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
     'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'),
diff --git a/civicrm/vendor/composer/autoload_real.php b/civicrm/vendor/composer/autoload_real.php
index 0fe83035e69ef4ac6f65e0ecf1964627b4fb8678..1310d5a1c803dbfeb583bf024b1f5316c6556b26 100644
--- a/civicrm/vendor/composer/autoload_real.php
+++ b/civicrm/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
 
 // autoload_real.php @generated by Composer
 
-class ComposerAutoloaderInit950b3ed6f0b1ecab18eb0dbdaefa6b56
+class ComposerAutoloaderInit98eee021afc9a2f48b8e515948cdf197
 {
     private static $loader;
 
@@ -24,22 +24,22 @@ class ComposerAutoloaderInit950b3ed6f0b1ecab18eb0dbdaefa6b56
 
         require __DIR__ . '/platform_check.php';
 
-        spl_autoload_register(array('ComposerAutoloaderInit950b3ed6f0b1ecab18eb0dbdaefa6b56', 'loadClassLoader'), true, true);
+        spl_autoload_register(array('ComposerAutoloaderInit98eee021afc9a2f48b8e515948cdf197', 'loadClassLoader'), true, true);
         self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
-        spl_autoload_unregister(array('ComposerAutoloaderInit950b3ed6f0b1ecab18eb0dbdaefa6b56', 'loadClassLoader'));
+        spl_autoload_unregister(array('ComposerAutoloaderInit98eee021afc9a2f48b8e515948cdf197', 'loadClassLoader'));
 
         $includePaths = require __DIR__ . '/include_paths.php';
         $includePaths[] = get_include_path();
         set_include_path(implode(PATH_SEPARATOR, $includePaths));
 
         require __DIR__ . '/autoload_static.php';
-        call_user_func(\Composer\Autoload\ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56::getInitializer($loader));
+        call_user_func(\Composer\Autoload\ComposerStaticInit98eee021afc9a2f48b8e515948cdf197::getInitializer($loader));
 
         $loader->register(true);
 
-        $includeFiles = \Composer\Autoload\ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56::$files;
+        $includeFiles = \Composer\Autoload\ComposerStaticInit98eee021afc9a2f48b8e515948cdf197::$files;
         foreach ($includeFiles as $fileIdentifier => $file) {
-            composerRequire950b3ed6f0b1ecab18eb0dbdaefa6b56($fileIdentifier, $file);
+            composerRequire98eee021afc9a2f48b8e515948cdf197($fileIdentifier, $file);
         }
 
         return $loader;
@@ -51,7 +51,7 @@ class ComposerAutoloaderInit950b3ed6f0b1ecab18eb0dbdaefa6b56
  * @param string $file
  * @return void
  */
-function composerRequire950b3ed6f0b1ecab18eb0dbdaefa6b56($fileIdentifier, $file)
+function composerRequire98eee021afc9a2f48b8e515948cdf197($fileIdentifier, $file)
 {
     if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
         $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
diff --git a/civicrm/vendor/composer/autoload_static.php b/civicrm/vendor/composer/autoload_static.php
index c2de4f34d69454c34a00830bb5f24848fc97ac22..adc2eb280f36b6f6cfa0978e96e6badf84f8843a 100644
--- a/civicrm/vendor/composer/autoload_static.php
+++ b/civicrm/vendor/composer/autoload_static.php
@@ -4,17 +4,15 @@
 
 namespace Composer\Autoload;
 
-class ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56
+class ComposerStaticInit98eee021afc9a2f48b8e515948cdf197
 {
     public static $files = array (
         'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
-        '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
         '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
         '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
-        'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
         'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
         'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
-        'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
+        '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
         '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
         '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
         '7e9bd612cc444b3eed788ebbe46263a0' => __DIR__ . '/..' . '/laminas/laminas-zendframework-bridge/src/autoload.php',
@@ -78,6 +76,7 @@ class ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56
         '4888a6f58c08148ebe17682f9ce9b2a8' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/divideby.php',
         'eef6fa3879d3efa347cd24d5eb348f85' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/divideinto.php',
         'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
+        '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
         '23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php',
         '9e4824c5afbdc1482b6025ce3d4dfde8' => __DIR__ . '/..' . '/league/csv/src/functions_include.php',
         'def43f6c87e4f8dfd0c9e1b1bab14fe8' => __DIR__ . '/..' . '/symfony/polyfill-iconv/bootstrap.php',
@@ -127,8 +126,6 @@ class ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56
             'Symfony\\Polyfill\\Php73\\' => 23,
             'Symfony\\Polyfill\\Php72\\' => 23,
             'Symfony\\Polyfill\\Mbstring\\' => 26,
-            'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33,
-            'Symfony\\Polyfill\\Intl\\Idn\\' => 26,
             'Symfony\\Polyfill\\Iconv\\' => 23,
             'Symfony\\Polyfill\\Ctype\\' => 23,
             'Symfony\\Contracts\\Service\\' => 26,
@@ -260,14 +257,6 @@ class ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56
         array (
             0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
         ),
-        'Symfony\\Polyfill\\Intl\\Normalizer\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer',
-        ),
-        'Symfony\\Polyfill\\Intl\\Idn\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn',
-        ),
         'Symfony\\Polyfill\\Iconv\\' => 
         array (
             0 => __DIR__ . '/..' . '/symfony/polyfill-iconv',
@@ -581,7 +570,6 @@ class ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56
         'Dompdf\\Cpdf' => __DIR__ . '/..' . '/dompdf/dompdf/lib/Cpdf.php',
         'ICallbackNamed' => __DIR__ . '/..' . '/rubobaquero/phpquery/phpQuery/phpQuery/Callback.php',
         'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
-        'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
         'PDF417' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/pdf417.php',
         'PEAR_Exception' => __DIR__ . '/..' . '/pear/pear_exception/PEAR/Exception.php',
         'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
@@ -725,11 +713,11 @@ class ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->prefixLengthsPsr4 = ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56::$prefixLengthsPsr4;
-            $loader->prefixDirsPsr4 = ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56::$prefixDirsPsr4;
-            $loader->prefixesPsr0 = ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56::$prefixesPsr0;
-            $loader->fallbackDirsPsr0 = ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56::$fallbackDirsPsr0;
-            $loader->classMap = ComposerStaticInit950b3ed6f0b1ecab18eb0dbdaefa6b56::$classMap;
+            $loader->prefixLengthsPsr4 = ComposerStaticInit98eee021afc9a2f48b8e515948cdf197::$prefixLengthsPsr4;
+            $loader->prefixDirsPsr4 = ComposerStaticInit98eee021afc9a2f48b8e515948cdf197::$prefixDirsPsr4;
+            $loader->prefixesPsr0 = ComposerStaticInit98eee021afc9a2f48b8e515948cdf197::$prefixesPsr0;
+            $loader->fallbackDirsPsr0 = ComposerStaticInit98eee021afc9a2f48b8e515948cdf197::$fallbackDirsPsr0;
+            $loader->classMap = ComposerStaticInit98eee021afc9a2f48b8e515948cdf197::$classMap;
 
         }, null, ClassLoader::class);
     }
diff --git a/civicrm/vendor/composer/installed.json b/civicrm/vendor/composer/installed.json
index be1196ae0928c36ac9006acf7450abac4b746c4d..e7fe8ccfb3d57908d8cc9ec1700410da533395e2 100644
--- a/civicrm/vendor/composer/installed.json
+++ b/civicrm/vendor/composer/installed.json
@@ -643,26 +643,35 @@
         },
         {
             "name": "firebase/php-jwt",
-            "version": "v5.2.1",
-            "version_normalized": "5.2.1.0",
+            "version": "v6.4.0",
+            "version_normalized": "6.4.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/firebase/php-jwt.git",
-                "reference": "f42c9110abe98dd6cfe9053c49bc86acc70b2d23"
+                "reference": "4dd1e007f22a927ac77da5a3fbb067b42d3bc224"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/firebase/php-jwt/zipball/f42c9110abe98dd6cfe9053c49bc86acc70b2d23",
-                "reference": "f42c9110abe98dd6cfe9053c49bc86acc70b2d23",
+                "url": "https://api.github.com/repos/firebase/php-jwt/zipball/4dd1e007f22a927ac77da5a3fbb067b42d3bc224",
+                "reference": "4dd1e007f22a927ac77da5a3fbb067b42d3bc224",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.0"
+                "php": "^7.1||^8.0"
             },
             "require-dev": {
-                "phpunit/phpunit": ">=4.8 <=9"
+                "guzzlehttp/guzzle": "^6.5||^7.4",
+                "phpspec/prophecy-phpunit": "^1.1",
+                "phpunit/phpunit": "^7.5||^9.5",
+                "psr/cache": "^1.0||^2.0",
+                "psr/http-client": "^1.0",
+                "psr/http-factory": "^1.0"
+            },
+            "suggest": {
+                "ext-sodium": "Support EdDSA (Ed25519) signatures",
+                "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present"
             },
-            "time": "2021-02-12T00:02:00+00:00",
+            "time": "2023-02-09T21:01:23+00:00",
             "type": "library",
             "installation-source": "dist",
             "autoload": {
@@ -694,45 +703,54 @@
             ],
             "support": {
                 "issues": "https://github.com/firebase/php-jwt/issues",
-                "source": "https://github.com/firebase/php-jwt/tree/v5.2.1"
+                "source": "https://github.com/firebase/php-jwt/tree/v6.4.0"
             },
             "install-path": "../firebase/php-jwt"
         },
         {
             "name": "guzzlehttp/guzzle",
-            "version": "6.5.8",
-            "version_normalized": "6.5.8.0",
+            "version": "7.6.1",
+            "version_normalized": "7.6.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981"
+                "reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981",
-                "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/8444a2bacf1960bc6a2b62ed86b8e72e11eebe51",
+                "reference": "8444a2bacf1960bc6a2b62ed86b8e72e11eebe51",
                 "shasum": ""
             },
             "require": {
                 "ext-json": "*",
-                "guzzlehttp/promises": "^1.0",
-                "guzzlehttp/psr7": "^1.9",
-                "php": ">=5.5",
-                "symfony/polyfill-intl-idn": "^1.17"
+                "guzzlehttp/promises": "^1.5",
+                "guzzlehttp/psr7": "^1.9.1 || ^2.4.5",
+                "php": "^7.2.5 || ^8.0",
+                "psr/http-client": "^1.0",
+                "symfony/deprecation-contracts": "^2.2 || ^3.0"
+            },
+            "provide": {
+                "psr/http-client-implementation": "1.0"
             },
             "require-dev": {
+                "bamarni/composer-bin-plugin": "^1.8.1",
                 "ext-curl": "*",
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-                "psr/log": "^1.1"
+                "php-http/client-integration-tests": "^3.0",
+                "phpunit/phpunit": "^8.5.29 || ^9.5.23",
+                "psr/log": "^1.1 || ^2.0 || ^3.0"
             },
             "suggest": {
+                "ext-curl": "Required for CURL handler support",
+                "ext-intl": "Required for Internationalized Domain Name (IDN) support",
                 "psr/log": "Required for using the Log middleware"
             },
-            "time": "2022-06-20T22:16:07+00:00",
+            "time": "2023-05-15T20:43:01+00:00",
             "type": "library",
             "extra": {
-                "branch-alias": {
-                    "dev-master": "6.5-dev"
+                "bamarni-bin": {
+                    "bin-links": true,
+                    "forward-command": false
                 }
             },
             "installation-source": "dist",
@@ -786,19 +804,20 @@
                 }
             ],
             "description": "Guzzle is a PHP HTTP client library",
-            "homepage": "http://guzzlephp.org/",
             "keywords": [
                 "client",
                 "curl",
                 "framework",
                 "http",
                 "http client",
+                "psr-18",
+                "psr-7",
                 "rest",
                 "web service"
             ],
             "support": {
                 "issues": "https://github.com/guzzle/guzzle/issues",
-                "source": "https://github.com/guzzle/guzzle/tree/6.5.8"
+                "source": "https://github.com/guzzle/guzzle/tree/7.6.1"
             },
             "funding": [
                 {
@@ -3791,6 +3810,76 @@
             ],
             "install-path": "../symfony/dependency-injection"
         },
+        {
+            "name": "symfony/deprecation-contracts",
+            "version": "v2.5.2",
+            "version_normalized": "2.5.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/deprecation-contracts.git",
+                "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
+                "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "time": "2022-01-02T09:53:40+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "2.5-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "files": [
+                    "function.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "A generic function and convention to trigger deprecation notices",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/deprecation-contracts"
+        },
         {
             "name": "symfony/event-dispatcher",
             "version": "v4.4.42",
@@ -4262,183 +4351,6 @@
             ],
             "install-path": "../symfony/polyfill-iconv"
         },
-        {
-            "name": "symfony/polyfill-intl-idn",
-            "version": "v1.27.0",
-            "version_normalized": "1.27.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-idn.git",
-                "reference": "639084e360537a19f9ee352433b84ce831f3d2da"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da",
-                "reference": "639084e360537a19f9ee352433b84ce831f3d2da",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1",
-                "symfony/polyfill-intl-normalizer": "^1.10",
-                "symfony/polyfill-php72": "^1.10"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "time": "2022-11-03T14:55:06+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Idn\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Laurent Bassin",
-                    "email": "laurent@bassin.info"
-                },
-                {
-                    "name": "Trevor Rowbotham",
-                    "email": "trevor.rowbotham@pm.me"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "idn",
-                "intl",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/polyfill-intl-idn"
-        },
-        {
-            "name": "symfony/polyfill-intl-normalizer",
-            "version": "v1.27.0",
-            "version_normalized": "1.27.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
-                "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6",
-                "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "time": "2022-11-03T14:55:06+00:00",
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.27-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "installation-source": "dist",
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for intl's Normalizer class and related functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "intl",
-                "normalizer",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "install-path": "../symfony/polyfill-intl-normalizer"
-        },
         {
             "name": "symfony/polyfill-mbstring",
             "version": "v1.27.0",
diff --git a/civicrm/vendor/composer/installed.php b/civicrm/vendor/composer/installed.php
index 2302ab5f8bd3bffa8dc2ff4f02dfff1230878a30..d936a978504099720c819c203e56c7b4b340ec53 100644
--- a/civicrm/vendor/composer/installed.php
+++ b/civicrm/vendor/composer/installed.php
@@ -1,9 +1,9 @@
 <?php return array(
     'root' => array(
         'name' => 'civicrm/civicrm-core',
-        'pretty_version' => '5.68.x-dev',
-        'version' => '5.68.9999999.9999999-dev',
-        'reference' => 'fca30dd508a215b3728b2da8bfe214c9547f99b5',
+        'pretty_version' => '5.69.x-dev',
+        'version' => '5.69.9999999.9999999-dev',
+        'reference' => '592d3f7c72623329abcf153e2af32e0fb69fe6e9',
         'type' => 'library',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
@@ -38,9 +38,9 @@
             'dev_requirement' => false,
         ),
         'civicrm/civicrm-core' => array(
-            'pretty_version' => '5.68.x-dev',
-            'version' => '5.68.9999999.9999999-dev',
-            'reference' => 'fca30dd508a215b3728b2da8bfe214c9547f99b5',
+            'pretty_version' => '5.69.x-dev',
+            'version' => '5.69.9999999.9999999-dev',
+            'reference' => '592d3f7c72623329abcf153e2af32e0fb69fe6e9',
             'type' => 'library',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
@@ -119,18 +119,18 @@
             'dev_requirement' => false,
         ),
         'firebase/php-jwt' => array(
-            'pretty_version' => 'v5.2.1',
-            'version' => '5.2.1.0',
-            'reference' => 'f42c9110abe98dd6cfe9053c49bc86acc70b2d23',
+            'pretty_version' => 'v6.4.0',
+            'version' => '6.4.0.0',
+            'reference' => '4dd1e007f22a927ac77da5a3fbb067b42d3bc224',
             'type' => 'library',
             'install_path' => __DIR__ . '/../firebase/php-jwt',
             'aliases' => array(),
             'dev_requirement' => false,
         ),
         'guzzlehttp/guzzle' => array(
-            'pretty_version' => '6.5.8',
-            'version' => '6.5.8.0',
-            'reference' => 'a52f0440530b54fa079ce76e8c5d196a42cad981',
+            'pretty_version' => '7.6.1',
+            'version' => '7.6.1.0',
+            'reference' => '8444a2bacf1960bc6a2b62ed86b8e72e11eebe51',
             'type' => 'library',
             'install_path' => __DIR__ . '/../guzzlehttp/guzzle',
             'aliases' => array(),
@@ -451,6 +451,12 @@
             'aliases' => array(),
             'dev_requirement' => false,
         ),
+        'psr/http-client-implementation' => array(
+            'dev_requirement' => false,
+            'provided' => array(
+                0 => '1.0',
+            ),
+        ),
         'psr/http-factory' => array(
             'pretty_version' => '1.0.1',
             'version' => '1.0.1.0',
@@ -562,6 +568,15 @@
             'aliases' => array(),
             'dev_requirement' => false,
         ),
+        'symfony/deprecation-contracts' => array(
+            'pretty_version' => 'v2.5.2',
+            'version' => '2.5.2.0',
+            'reference' => 'e8b495ea28c1d97b5e0c121748d6f9b53d075c66',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
+            'aliases' => array(),
+            'dev_requirement' => false,
+        ),
         'symfony/event-dispatcher' => array(
             'pretty_version' => 'v4.4.42',
             'version' => '4.4.42.0',
@@ -622,24 +637,6 @@
             'aliases' => array(),
             'dev_requirement' => false,
         ),
-        'symfony/polyfill-intl-idn' => array(
-            'pretty_version' => 'v1.27.0',
-            'version' => '1.27.0.0',
-            'reference' => '639084e360537a19f9ee352433b84ce831f3d2da',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../symfony/polyfill-intl-idn',
-            'aliases' => array(),
-            'dev_requirement' => false,
-        ),
-        'symfony/polyfill-intl-normalizer' => array(
-            'pretty_version' => 'v1.27.0',
-            'version' => '1.27.0.0',
-            'reference' => '19bd1e4fcd5b91116f14d8533c57831ed00571b6',
-            'type' => 'library',
-            'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer',
-            'aliases' => array(),
-            'dev_requirement' => false,
-        ),
         'symfony/polyfill-mbstring' => array(
             'pretty_version' => 'v1.27.0',
             'version' => '1.27.0.0',
diff --git a/civicrm/vendor/firebase/php-jwt/CHANGELOG.md b/civicrm/vendor/firebase/php-jwt/CHANGELOG.md
new file mode 100644
index 0000000000000000000000000000000000000000..9242bd30d533a3fc18f80a9a989407b7e7955a67
--- /dev/null
+++ b/civicrm/vendor/firebase/php-jwt/CHANGELOG.md
@@ -0,0 +1,105 @@
+# Changelog
+
+## [6.4.0](https://github.com/firebase/php-jwt/compare/v6.3.2...v6.4.0) (2023-02-08)
+
+
+### Features
+
+* add support for W3C ES256K ([#462](https://github.com/firebase/php-jwt/issues/462)) ([213924f](https://github.com/firebase/php-jwt/commit/213924f51936291fbbca99158b11bd4ae56c2c95))
+* improve caching by only decoding jwks when necessary ([#486](https://github.com/firebase/php-jwt/issues/486)) ([78d3ed1](https://github.com/firebase/php-jwt/commit/78d3ed1073553f7d0bbffa6c2010009a0d483d5c))
+
+## [6.3.2](https://github.com/firebase/php-jwt/compare/v6.3.1...v6.3.2) (2022-11-01)
+
+
+### Bug Fixes
+
+* check kid before using as array index ([bad1b04](https://github.com/firebase/php-jwt/commit/bad1b040d0c736bbf86814c6b5ae614f517cf7bd))
+
+## [6.3.1](https://github.com/firebase/php-jwt/compare/v6.3.0...v6.3.1) (2022-11-01)
+
+
+### Bug Fixes
+
+* casing of GET for PSR compat ([#451](https://github.com/firebase/php-jwt/issues/451)) ([60b52b7](https://github.com/firebase/php-jwt/commit/60b52b71978790eafcf3b95cfbd83db0439e8d22))
+* string interpolation format for php 8.2 ([#446](https://github.com/firebase/php-jwt/issues/446)) ([2e07d8a](https://github.com/firebase/php-jwt/commit/2e07d8a1524d12b69b110ad649f17461d068b8f2))
+
+## 6.3.0 / 2022-07-15
+
+ - Added ES256 support to JWK parsing ([#399](https://github.com/firebase/php-jwt/pull/399))
+ - Fixed potential caching error in `CachedKeySet` by caching jwks as strings ([#435](https://github.com/firebase/php-jwt/pull/435))
+
+## 6.2.0 / 2022-05-14
+
+ - Added `CachedKeySet` ([#397](https://github.com/firebase/php-jwt/pull/397))
+ - Added `$defaultAlg` parameter to `JWT::parseKey` and `JWT::parseKeySet` ([#426](https://github.com/firebase/php-jwt/pull/426)).
+
+## 6.1.0 / 2022-03-23
+
+ - Drop support for PHP 5.3, 5.4, 5.5, 5.6, and 7.0
+ - Add parameter typing and return types where possible
+
+## 6.0.0 / 2022-01-24
+
+ - **Backwards-Compatibility Breaking Changes**: See the [Release Notes](https://github.com/firebase/php-jwt/releases/tag/v6.0.0) for more information.
+ - New Key object to prevent key/algorithm type confusion (#365)
+ - Add JWK support (#273)
+ - Add ES256 support (#256)
+ - Add ES384 support (#324)
+ - Add Ed25519 support (#343)
+
+## 5.0.0 / 2017-06-26
+- Support RS384 and RS512.
+  See [#117](https://github.com/firebase/php-jwt/pull/117). Thanks [@joostfaassen](https://github.com/joostfaassen)!
+- Add an example for RS256 openssl.
+  See [#125](https://github.com/firebase/php-jwt/pull/125). Thanks [@akeeman](https://github.com/akeeman)!
+- Detect invalid Base64 encoding in signature.
+  See [#162](https://github.com/firebase/php-jwt/pull/162). Thanks [@psignoret](https://github.com/psignoret)!
+- Update `JWT::verify` to handle OpenSSL errors.
+  See [#159](https://github.com/firebase/php-jwt/pull/159). Thanks [@bshaffer](https://github.com/bshaffer)!
+- Add `array` type hinting to `decode` method
+  See [#101](https://github.com/firebase/php-jwt/pull/101). Thanks [@hywak](https://github.com/hywak)!
+- Add all JSON error types.
+  See [#110](https://github.com/firebase/php-jwt/pull/110). Thanks [@gbalduzzi](https://github.com/gbalduzzi)!
+- Bugfix 'kid' not in given key list.
+  See [#129](https://github.com/firebase/php-jwt/pull/129). Thanks [@stampycode](https://github.com/stampycode)!
+- Miscellaneous cleanup, documentation and test fixes.
+  See [#107](https://github.com/firebase/php-jwt/pull/107), [#115](https://github.com/firebase/php-jwt/pull/115),
+  [#160](https://github.com/firebase/php-jwt/pull/160), [#161](https://github.com/firebase/php-jwt/pull/161), and
+  [#165](https://github.com/firebase/php-jwt/pull/165). Thanks [@akeeman](https://github.com/akeeman),
+  [@chinedufn](https://github.com/chinedufn), and [@bshaffer](https://github.com/bshaffer)!
+
+## 4.0.0 / 2016-07-17
+- Add support for late static binding. See [#88](https://github.com/firebase/php-jwt/pull/88) for details. Thanks to [@chappy84](https://github.com/chappy84)!
+- Use static `$timestamp` instead of `time()` to improve unit testing. See [#93](https://github.com/firebase/php-jwt/pull/93) for details. Thanks to [@josephmcdermott](https://github.com/josephmcdermott)!
+- Fixes to exceptions classes. See [#81](https://github.com/firebase/php-jwt/pull/81) for details. Thanks to [@Maks3w](https://github.com/Maks3w)!
+- Fixes to PHPDoc. See [#76](https://github.com/firebase/php-jwt/pull/76) for details. Thanks to [@akeeman](https://github.com/akeeman)!
+
+## 3.0.0 / 2015-07-22
+- Minimum PHP version updated from `5.2.0` to `5.3.0`.
+- Add `\Firebase\JWT` namespace. See
+[#59](https://github.com/firebase/php-jwt/pull/59) for details. Thanks to
+[@Dashron](https://github.com/Dashron)!
+- Require a non-empty key to decode and verify a JWT. See
+[#60](https://github.com/firebase/php-jwt/pull/60) for details. Thanks to
+[@sjones608](https://github.com/sjones608)!
+- Cleaner documentation blocks in the code. See
+[#62](https://github.com/firebase/php-jwt/pull/62) for details. Thanks to
+[@johanderuijter](https://github.com/johanderuijter)!
+
+## 2.2.0 / 2015-06-22
+- Add support for adding custom, optional JWT headers to `JWT::encode()`. See
+[#53](https://github.com/firebase/php-jwt/pull/53/files) for details. Thanks to
+[@mcocaro](https://github.com/mcocaro)!
+
+## 2.1.0 / 2015-05-20
+- Add support for adding a leeway to `JWT:decode()` that accounts for clock skew
+between signing and verifying entities. Thanks to [@lcabral](https://github.com/lcabral)!
+- Add support for passing an object implementing the `ArrayAccess` interface for
+`$keys` argument in `JWT::decode()`. Thanks to [@aztech-dev](https://github.com/aztech-dev)!
+
+## 2.0.0 / 2015-04-01
+- **Note**: It is strongly recommended that you update to > v2.0.0 to address
+  known security vulnerabilities in prior versions when both symmetric and
+  asymmetric keys are used together.
+- Update signature for `JWT::decode(...)` to require an array of supported
+  algorithms to use when verifying token signatures.
diff --git a/civicrm/vendor/firebase/php-jwt/LICENSE b/civicrm/vendor/firebase/php-jwt/LICENSE
index cb0c49b33110d8abfc89e849cf980951dd90e301..11c0146651c50f89d0c4e2610866b25ac6eb04e5 100644
--- a/civicrm/vendor/firebase/php-jwt/LICENSE
+++ b/civicrm/vendor/firebase/php-jwt/LICENSE
@@ -13,7 +13,7 @@ modification, are permitted provided that the following conditions are met:
       disclaimer in the documentation and/or other materials provided
       with the distribution.
 
-    * Neither the name of Neuman Vong nor the names of other
+    * Neither the name of the copyright holder nor the names of other
       contributors may be used to endorse or promote products derived
       from this software without specific prior written permission.
 
diff --git a/civicrm/vendor/firebase/php-jwt/README.md b/civicrm/vendor/firebase/php-jwt/README.md
index ba139079f1f02b54811d3e4bc18893e51d3e92ad..ae2b389563a086e02a9b3c3f8fddbdee2518773e 100644
--- a/civicrm/vendor/firebase/php-jwt/README.md
+++ b/civicrm/vendor/firebase/php-jwt/README.md
@@ -1,4 +1,4 @@
-[![Build Status](https://travis-ci.org/firebase/php-jwt.png?branch=master)](https://travis-ci.org/firebase/php-jwt)
+![Build Status](https://github.com/firebase/php-jwt/actions/workflows/tests.yml/badge.svg)
 [![Latest Stable Version](https://poser.pugx.org/firebase/php-jwt/v/stable)](https://packagist.org/packages/firebase/php-jwt)
 [![Total Downloads](https://poser.pugx.org/firebase/php-jwt/downloads)](https://packagist.org/packages/firebase/php-jwt)
 [![License](https://poser.pugx.org/firebase/php-jwt/license)](https://packagist.org/packages/firebase/php-jwt)
@@ -16,19 +16,26 @@ Use composer to manage your dependencies and download PHP-JWT:
 composer require firebase/php-jwt
 ```
 
+Optionally, install the `paragonie/sodium_compat` package from composer if your
+php is < 7.2 or does not have libsodium installed:
+
+```bash
+composer require paragonie/sodium_compat
+```
+
 Example
 -------
 ```php
-<?php
-use \Firebase\JWT\JWT;
-
-$key = "example_key";
-$payload = array(
-    "iss" => "http://example.org",
-    "aud" => "http://example.com",
-    "iat" => 1356999524,
-    "nbf" => 1357000000
-);
+use Firebase\JWT\JWT;
+use Firebase\JWT\Key;
+
+$key = 'example_key';
+$payload = [
+    'iss' => 'http://example.org',
+    'aud' => 'http://example.com',
+    'iat' => 1356999524,
+    'nbf' => 1357000000
+];
 
 /**
  * IMPORTANT:
@@ -36,8 +43,8 @@ $payload = array(
  * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40
  * for a list of spec-compliant algorithms.
  */
-$jwt = JWT::encode($payload, $key);
-$decoded = JWT::decode($jwt, $key, array('HS256'));
+$jwt = JWT::encode($payload, $key, 'HS256');
+$decoded = JWT::decode($jwt, new Key($key, 'HS256'));
 
 print_r($decoded);
 
@@ -56,15 +63,13 @@ $decoded_array = (array) $decoded;
  * Source: http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html#nbfDef
  */
 JWT::$leeway = 60; // $leeway in seconds
-$decoded = JWT::decode($jwt, $key, array('HS256'));
-
-?>
+$decoded = JWT::decode($jwt, new Key($key, 'HS256'));
 ```
 Example with RS256 (openssl)
 ----------------------------
 ```php
-<?php
-use \Firebase\JWT\JWT;
+use Firebase\JWT\JWT;
+use Firebase\JWT\Key;
 
 $privateKey = <<<EOD
 -----BEGIN RSA PRIVATE KEY-----
@@ -93,17 +98,17 @@ ehde/zUxo6UvS7UrBQIDAQAB
 -----END PUBLIC KEY-----
 EOD;
 
-$payload = array(
-    "iss" => "example.org",
-    "aud" => "example.com",
-    "iat" => 1356999524,
-    "nbf" => 1357000000
-);
+$payload = [
+    'iss' => 'example.org',
+    'aud' => 'example.com',
+    'iat' => 1356999524,
+    'nbf' => 1357000000
+];
 
 $jwt = JWT::encode($payload, $privateKey, 'RS256');
 echo "Encode:\n" . print_r($jwt, true) . "\n";
 
-$decoded = JWT::decode($jwt, $publicKey, array('RS256'));
+$decoded = JWT::decode($jwt, new Key($publicKey, 'RS256'));
 
 /*
  NOTE: This will now be an object instead of an associative array. To get
@@ -112,82 +117,196 @@ $decoded = JWT::decode($jwt, $publicKey, array('RS256'));
 
 $decoded_array = (array) $decoded;
 echo "Decode:\n" . print_r($decoded_array, true) . "\n";
-?>
 ```
 
+Example with a passphrase
+-------------------------
+
+```php
+use Firebase\JWT\JWT;
+use Firebase\JWT\Key;
+
+// Your passphrase
+$passphrase = '[YOUR_PASSPHRASE]';
+
+// Your private key file with passphrase
+// Can be generated with "ssh-keygen -t rsa -m pem"
+$privateKeyFile = '/path/to/key-with-passphrase.pem';
+
+// Create a private key of type "resource"
+$privateKey = openssl_pkey_get_private(
+    file_get_contents($privateKeyFile),
+    $passphrase
+);
+
+$payload = [
+    'iss' => 'example.org',
+    'aud' => 'example.com',
+    'iat' => 1356999524,
+    'nbf' => 1357000000
+];
+
+$jwt = JWT::encode($payload, $privateKey, 'RS256');
+echo "Encode:\n" . print_r($jwt, true) . "\n";
+
+// Get public key from the private key, or pull from from a file.
+$publicKey = openssl_pkey_get_details($privateKey)['key'];
+
+$decoded = JWT::decode($jwt, new Key($publicKey, 'RS256'));
+echo "Decode:\n" . print_r((array) $decoded, true) . "\n";
+```
+
+Example with EdDSA (libsodium and Ed25519 signature)
+----------------------------
+```php
+use Firebase\JWT\JWT;
+use Firebase\JWT\Key;
+
+// Public and private keys are expected to be Base64 encoded. The last
+// non-empty line is used so that keys can be generated with
+// sodium_crypto_sign_keypair(). The secret keys generated by other tools may
+// need to be adjusted to match the input expected by libsodium.
+
+$keyPair = sodium_crypto_sign_keypair();
+
+$privateKey = base64_encode(sodium_crypto_sign_secretkey($keyPair));
+
+$publicKey = base64_encode(sodium_crypto_sign_publickey($keyPair));
+
+$payload = [
+    'iss' => 'example.org',
+    'aud' => 'example.com',
+    'iat' => 1356999524,
+    'nbf' => 1357000000
+];
+
+$jwt = JWT::encode($payload, $privateKey, 'EdDSA');
+echo "Encode:\n" . print_r($jwt, true) . "\n";
+
+$decoded = JWT::decode($jwt, new Key($publicKey, 'EdDSA'));
+echo "Decode:\n" . print_r((array) $decoded, true) . "\n";
+````
+
 Using JWKs
 ----------
 
 ```php
+use Firebase\JWT\JWK;
+use Firebase\JWT\JWT;
+
 // Set of keys. The "keys" key is required. For example, the JSON response to
 // this endpoint: https://www.gstatic.com/iap/verify/public_key-jwk
 $jwks = ['keys' => []];
 
-// JWK::parseKeySet($jwks) returns an associative array of **kid** to private
-// key. Pass this as the second parameter to JWT::decode.
-JWT::decode($payload, JWK::parseKeySet($jwks), $supportedAlgorithm);
+// JWK::parseKeySet($jwks) returns an associative array of **kid** to Firebase\JWT\Key
+// objects. Pass this as the second parameter to JWT::decode.
+JWT::decode($payload, JWK::parseKeySet($jwks));
+```
+
+Using Cached Key Sets
+---------------------
+
+The `CachedKeySet` class can be used to fetch and cache JWKS (JSON Web Key Sets) from a public URI.
+This has the following advantages:
+
+1. The results are cached for performance.
+2. If an unrecognized key is requested, the cache is refreshed, to accomodate for key rotation.
+3. If rate limiting is enabled, the JWKS URI will not make more than 10 requests a second.
+
+```php
+use Firebase\JWT\CachedKeySet;
+use Firebase\JWT\JWT;
+
+// The URI for the JWKS you wish to cache the results from
+$jwksUri = 'https://www.gstatic.com/iap/verify/public_key-jwk';
+
+// Create an HTTP client (can be any PSR-7 compatible HTTP client)
+$httpClient = new GuzzleHttp\Client();
+
+// Create an HTTP request factory (can be any PSR-17 compatible HTTP request factory)
+$httpFactory = new GuzzleHttp\Psr\HttpFactory();
+
+// Create a cache item pool (can be any PSR-6 compatible cache item pool)
+$cacheItemPool = Phpfastcache\CacheManager::getInstance('files');
+
+$keySet = new CachedKeySet(
+    $jwksUri,
+    $httpClient,
+    $httpFactory,
+    $cacheItemPool,
+    null, // $expiresAfter int seconds to set the JWKS to expire
+    true  // $rateLimit    true to enable rate limit of 10 RPS on lookup of invalid keys
+);
+
+$jwt = 'eyJhbGci...'; // Some JWT signed by a key from the $jwkUri above
+$decoded = JWT::decode($jwt, $keySet);
+```
+
+Miscellaneous
+-------------
+
+#### Exception Handling
+
+When a call to `JWT::decode` is invalid, it will throw one of the following exceptions:
+
+```php
+use Firebase\JWT\JWT;
+use Firebase\JWT\SignatureInvalidException;
+use Firebase\JWT\BeforeValidException;
+use Firebase\JWT\ExpiredException;
+use DomainException;
+use InvalidArgumentException;
+use UnexpectedValueException;
+
+try {
+    $decoded = JWT::decode($payload, $keys);
+} catch (InvalidArgumentException $e) {
+    // provided key/key-array is empty or malformed.
+} catch (DomainException $e) {
+    // provided algorithm is unsupported OR
+    // provided key is invalid OR
+    // unknown error thrown in openSSL or libsodium OR
+    // libsodium is required but not available.
+} catch (SignatureInvalidException $e) {
+    // provided JWT signature verification failed.
+} catch (BeforeValidException $e) {
+    // provided JWT is trying to be used before "nbf" claim OR
+    // provided JWT is trying to be used before "iat" claim.
+} catch (ExpiredException $e) {
+    // provided JWT is trying to be used after "exp" claim.
+} catch (UnexpectedValueException $e) {
+    // provided JWT is malformed OR
+    // provided JWT is missing an algorithm / using an unsupported algorithm OR
+    // provided JWT algorithm does not match provided key OR
+    // provided key ID in key/key-array is empty or invalid.
+}
 ```
 
-Changelog
----------
-
-#### 5.0.0 / 2017-06-26
-- Support RS384 and RS512.
-  See [#117](https://github.com/firebase/php-jwt/pull/117). Thanks [@joostfaassen](https://github.com/joostfaassen)!
-- Add an example for RS256 openssl.
-  See [#125](https://github.com/firebase/php-jwt/pull/125). Thanks [@akeeman](https://github.com/akeeman)!
-- Detect invalid Base64 encoding in signature.
-  See [#162](https://github.com/firebase/php-jwt/pull/162). Thanks [@psignoret](https://github.com/psignoret)!
-- Update `JWT::verify` to handle OpenSSL errors.
-  See [#159](https://github.com/firebase/php-jwt/pull/159). Thanks [@bshaffer](https://github.com/bshaffer)!
-- Add `array` type hinting to `decode` method
-  See [#101](https://github.com/firebase/php-jwt/pull/101). Thanks [@hywak](https://github.com/hywak)!
-- Add all JSON error types.
-  See [#110](https://github.com/firebase/php-jwt/pull/110). Thanks [@gbalduzzi](https://github.com/gbalduzzi)!
-- Bugfix 'kid' not in given key list.
-  See [#129](https://github.com/firebase/php-jwt/pull/129). Thanks [@stampycode](https://github.com/stampycode)!
-- Miscellaneous cleanup, documentation and test fixes.
-  See [#107](https://github.com/firebase/php-jwt/pull/107), [#115](https://github.com/firebase/php-jwt/pull/115),
-  [#160](https://github.com/firebase/php-jwt/pull/160), [#161](https://github.com/firebase/php-jwt/pull/161), and
-  [#165](https://github.com/firebase/php-jwt/pull/165). Thanks [@akeeman](https://github.com/akeeman),
-  [@chinedufn](https://github.com/chinedufn), and [@bshaffer](https://github.com/bshaffer)!
-
-#### 4.0.0 / 2016-07-17
-- Add support for late static binding. See [#88](https://github.com/firebase/php-jwt/pull/88) for details. Thanks to [@chappy84](https://github.com/chappy84)!
-- Use static `$timestamp` instead of `time()` to improve unit testing. See [#93](https://github.com/firebase/php-jwt/pull/93) for details. Thanks to [@josephmcdermott](https://github.com/josephmcdermott)!
-- Fixes to exceptions classes. See [#81](https://github.com/firebase/php-jwt/pull/81) for details. Thanks to [@Maks3w](https://github.com/Maks3w)!
-- Fixes to PHPDoc. See [#76](https://github.com/firebase/php-jwt/pull/76) for details. Thanks to [@akeeman](https://github.com/akeeman)!
-
-#### 3.0.0 / 2015-07-22
-- Minimum PHP version updated from `5.2.0` to `5.3.0`.
-- Add `\Firebase\JWT` namespace. See
-[#59](https://github.com/firebase/php-jwt/pull/59) for details. Thanks to
-[@Dashron](https://github.com/Dashron)!
-- Require a non-empty key to decode and verify a JWT. See
-[#60](https://github.com/firebase/php-jwt/pull/60) for details. Thanks to
-[@sjones608](https://github.com/sjones608)!
-- Cleaner documentation blocks in the code. See
-[#62](https://github.com/firebase/php-jwt/pull/62) for details. Thanks to
-[@johanderuijter](https://github.com/johanderuijter)!
-
-#### 2.2.0 / 2015-06-22
-- Add support for adding custom, optional JWT headers to `JWT::encode()`. See
-[#53](https://github.com/firebase/php-jwt/pull/53/files) for details. Thanks to
-[@mcocaro](https://github.com/mcocaro)!
-
-#### 2.1.0 / 2015-05-20
-- Add support for adding a leeway to `JWT:decode()` that accounts for clock skew
-between signing and verifying entities. Thanks to [@lcabral](https://github.com/lcabral)!
-- Add support for passing an object implementing the `ArrayAccess` interface for
-`$keys` argument in `JWT::decode()`. Thanks to [@aztech-dev](https://github.com/aztech-dev)!
-
-#### 2.0.0 / 2015-04-01
-- **Note**: It is strongly recommended that you update to > v2.0.0 to address
-  known security vulnerabilities in prior versions when both symmetric and
-  asymmetric keys are used together.
-- Update signature for `JWT::decode(...)` to require an array of supported
-  algorithms to use when verifying token signatures.
+All exceptions in the `Firebase\JWT` namespace extend `UnexpectedValueException`, and can be simplified
+like this:
 
+```php
+try {
+    $decoded = JWT::decode($payload, $keys);
+} catch (LogicException $e) {
+    // errors having to do with environmental setup or malformed JWT Keys
+} catch (UnexpectedValueException $e) {
+    // errors having to do with JWT signature and claims
+}
+```
+
+#### Casting to array
+
+The return value of `JWT::decode` is the generic PHP object `stdClass`. If you'd like to handle with arrays
+instead, you can do the following:
+
+```php
+// return type is stdClass
+$decoded = JWT::decode($payload, $keys);
+
+// cast to array
+$decoded = json_decode(json_encode($decoded), true);
+```
 
 Tests
 -----
diff --git a/civicrm/vendor/firebase/php-jwt/composer.json b/civicrm/vendor/firebase/php-jwt/composer.json
index 25d1cfa96ad71085e2456d8f22ee38536778bfa5..c9aa3dbbc26abeeb7eb8ba4998a6cc2af5f79879 100644
--- a/civicrm/vendor/firebase/php-jwt/composer.json
+++ b/civicrm/vendor/firebase/php-jwt/composer.json
@@ -20,7 +20,11 @@
     ],
     "license": "BSD-3-Clause",
     "require": {
-        "php": ">=5.3.0"
+        "php": "^7.1||^8.0"
+    },
+    "suggest": {
+        "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present",
+        "ext-sodium": "Support EdDSA (Ed25519) signatures"
     },
     "autoload": {
         "psr-4": {
@@ -28,6 +32,11 @@
         }
     },
     "require-dev": {
-        "phpunit/phpunit": ">=4.8 <=9"
+        "guzzlehttp/guzzle": "^6.5||^7.4",
+        "phpspec/prophecy-phpunit": "^1.1",
+        "phpunit/phpunit": "^7.5||^9.5",
+        "psr/cache": "^1.0||^2.0",
+        "psr/http-client": "^1.0",
+        "psr/http-factory": "^1.0"
     }
 }
diff --git a/civicrm/vendor/firebase/php-jwt/src/BeforeValidException.php b/civicrm/vendor/firebase/php-jwt/src/BeforeValidException.php
index fdf82bd94296dcff62000594bb788153e9d5079b..c147852b980f94e5aba21b5707ab99edf81fd7fe 100644
--- a/civicrm/vendor/firebase/php-jwt/src/BeforeValidException.php
+++ b/civicrm/vendor/firebase/php-jwt/src/BeforeValidException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Firebase\JWT;
 
 class BeforeValidException extends \UnexpectedValueException
diff --git a/civicrm/vendor/firebase/php-jwt/src/CachedKeySet.php b/civicrm/vendor/firebase/php-jwt/src/CachedKeySet.php
new file mode 100644
index 0000000000000000000000000000000000000000..baf801f13f03c0e773f9e5a8a2d4844f91a49aca
--- /dev/null
+++ b/civicrm/vendor/firebase/php-jwt/src/CachedKeySet.php
@@ -0,0 +1,258 @@
+<?php
+
+namespace Firebase\JWT;
+
+use ArrayAccess;
+use InvalidArgumentException;
+use LogicException;
+use OutOfBoundsException;
+use Psr\Cache\CacheItemInterface;
+use Psr\Cache\CacheItemPoolInterface;
+use Psr\Http\Client\ClientInterface;
+use Psr\Http\Message\RequestFactoryInterface;
+use RuntimeException;
+use UnexpectedValueException;
+
+/**
+ * @implements ArrayAccess<string, Key>
+ */
+class CachedKeySet implements ArrayAccess
+{
+    /**
+     * @var string
+     */
+    private $jwksUri;
+    /**
+     * @var ClientInterface
+     */
+    private $httpClient;
+    /**
+     * @var RequestFactoryInterface
+     */
+    private $httpFactory;
+    /**
+     * @var CacheItemPoolInterface
+     */
+    private $cache;
+    /**
+     * @var ?int
+     */
+    private $expiresAfter;
+    /**
+     * @var ?CacheItemInterface
+     */
+    private $cacheItem;
+    /**
+     * @var array<string, array<mixed>>
+     */
+    private $keySet;
+    /**
+     * @var string
+     */
+    private $cacheKey;
+    /**
+     * @var string
+     */
+    private $cacheKeyPrefix = 'jwks';
+    /**
+     * @var int
+     */
+    private $maxKeyLength = 64;
+    /**
+     * @var bool
+     */
+    private $rateLimit;
+    /**
+     * @var string
+     */
+    private $rateLimitCacheKey;
+    /**
+     * @var int
+     */
+    private $maxCallsPerMinute = 10;
+    /**
+     * @var string|null
+     */
+    private $defaultAlg;
+
+    public function __construct(
+        string $jwksUri,
+        ClientInterface $httpClient,
+        RequestFactoryInterface $httpFactory,
+        CacheItemPoolInterface $cache,
+        int $expiresAfter = null,
+        bool $rateLimit = false,
+        string $defaultAlg = null
+    ) {
+        $this->jwksUri = $jwksUri;
+        $this->httpClient = $httpClient;
+        $this->httpFactory = $httpFactory;
+        $this->cache = $cache;
+        $this->expiresAfter = $expiresAfter;
+        $this->rateLimit = $rateLimit;
+        $this->defaultAlg = $defaultAlg;
+        $this->setCacheKeys();
+    }
+
+    /**
+     * @param string $keyId
+     * @return Key
+     */
+    public function offsetGet($keyId): Key
+    {
+        if (!$this->keyIdExists($keyId)) {
+            throw new OutOfBoundsException('Key ID not found');
+        }
+        return JWK::parseKey($this->keySet[$keyId], $this->defaultAlg);
+    }
+
+    /**
+     * @param string $keyId
+     * @return bool
+     */
+    public function offsetExists($keyId): bool
+    {
+        return $this->keyIdExists($keyId);
+    }
+
+    /**
+     * @param string $offset
+     * @param Key $value
+     */
+    public function offsetSet($offset, $value): void
+    {
+        throw new LogicException('Method not implemented');
+    }
+
+    /**
+     * @param string $offset
+     */
+    public function offsetUnset($offset): void
+    {
+        throw new LogicException('Method not implemented');
+    }
+
+    /**
+     * @return array<mixed>
+     */
+    private function formatJwksForCache(string $jwks): array
+    {
+        $jwks = json_decode($jwks, true);
+
+        if (!isset($jwks['keys'])) {
+            throw new UnexpectedValueException('"keys" member must exist in the JWK Set');
+        }
+
+        if (empty($jwks['keys'])) {
+            throw new InvalidArgumentException('JWK Set did not contain any keys');
+        }
+
+        $keys = [];
+        foreach ($jwks['keys'] as $k => $v) {
+            $kid = isset($v['kid']) ? $v['kid'] : $k;
+            $keys[(string) $kid] = $v;
+        }
+
+        return $keys;
+    }
+
+    private function keyIdExists(string $keyId): bool
+    {
+        if (null === $this->keySet) {
+            $item = $this->getCacheItem();
+            // Try to load keys from cache
+            if ($item->isHit()) {
+                // item found! retrieve it
+                $this->keySet = $item->get();
+                // If the cached item is a string, the JWKS response was cached (previous behavior).
+                // Parse this into expected format array<kid, jwk> instead.
+                if (\is_string($this->keySet)) {
+                    $this->keySet = $this->formatJwksForCache($this->keySet);
+                }
+            }
+        }
+
+        if (!isset($this->keySet[$keyId])) {
+            if ($this->rateLimitExceeded()) {
+                return false;
+            }
+            $request = $this->httpFactory->createRequest('GET', $this->jwksUri);
+            $jwksResponse = $this->httpClient->sendRequest($request);
+            $this->keySet = $this->formatJwksForCache((string) $jwksResponse->getBody());
+
+            if (!isset($this->keySet[$keyId])) {
+                return false;
+            }
+
+            $item = $this->getCacheItem();
+            $item->set($this->keySet);
+            if ($this->expiresAfter) {
+                $item->expiresAfter($this->expiresAfter);
+            }
+            $this->cache->save($item);
+        }
+
+        return true;
+    }
+
+    private function rateLimitExceeded(): bool
+    {
+        if (!$this->rateLimit) {
+            return false;
+        }
+
+        $cacheItem = $this->cache->getItem($this->rateLimitCacheKey);
+        if (!$cacheItem->isHit()) {
+            $cacheItem->expiresAfter(1); // # of calls are cached each minute
+        }
+
+        $callsPerMinute = (int) $cacheItem->get();
+        if (++$callsPerMinute > $this->maxCallsPerMinute) {
+            return true;
+        }
+        $cacheItem->set($callsPerMinute);
+        $this->cache->save($cacheItem);
+        return false;
+    }
+
+    private function getCacheItem(): CacheItemInterface
+    {
+        if (\is_null($this->cacheItem)) {
+            $this->cacheItem = $this->cache->getItem($this->cacheKey);
+        }
+
+        return $this->cacheItem;
+    }
+
+    private function setCacheKeys(): void
+    {
+        if (empty($this->jwksUri)) {
+            throw new RuntimeException('JWKS URI is empty');
+        }
+
+        // ensure we do not have illegal characters
+        $key = preg_replace('|[^a-zA-Z0-9_\.!]|', '', $this->jwksUri);
+
+        // add prefix
+        $key = $this->cacheKeyPrefix . $key;
+
+        // Hash keys if they exceed $maxKeyLength of 64
+        if (\strlen($key) > $this->maxKeyLength) {
+            $key = substr(hash('sha256', $key), 0, $this->maxKeyLength);
+        }
+
+        $this->cacheKey = $key;
+
+        if ($this->rateLimit) {
+            // add prefix
+            $rateLimitKey = $this->cacheKeyPrefix . 'ratelimit' . $key;
+
+            // Hash keys if they exceed $maxKeyLength of 64
+            if (\strlen($rateLimitKey) > $this->maxKeyLength) {
+                $rateLimitKey = substr(hash('sha256', $rateLimitKey), 0, $this->maxKeyLength);
+            }
+
+            $this->rateLimitCacheKey = $rateLimitKey;
+        }
+    }
+}
diff --git a/civicrm/vendor/firebase/php-jwt/src/ExpiredException.php b/civicrm/vendor/firebase/php-jwt/src/ExpiredException.php
index 7f7d056824841fabf8ab9e5ea1a7453d69b75c70..81ba52d43f60d773d7557e9ef7f28d54a3d03994 100644
--- a/civicrm/vendor/firebase/php-jwt/src/ExpiredException.php
+++ b/civicrm/vendor/firebase/php-jwt/src/ExpiredException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Firebase\JWT;
 
 class ExpiredException extends \UnexpectedValueException
diff --git a/civicrm/vendor/firebase/php-jwt/src/JWK.php b/civicrm/vendor/firebase/php-jwt/src/JWK.php
index 7632f4a4080f07a4ad5909c0d1244a51cdc69453..c7eff8ae4839fc10b1e1510f330606333ad4322b 100644
--- a/civicrm/vendor/firebase/php-jwt/src/JWK.php
+++ b/civicrm/vendor/firebase/php-jwt/src/JWK.php
@@ -20,12 +20,25 @@ use UnexpectedValueException;
  */
 class JWK
 {
+    private const OID = '1.2.840.10045.2.1';
+    private const ASN1_OBJECT_IDENTIFIER = 0x06;
+    private const ASN1_SEQUENCE = 0x10; // also defined in JWT
+    private const ASN1_BIT_STRING = 0x03;
+    private const EC_CURVES = [
+        'P-256' => '1.2.840.10045.3.1.7', // Len: 64
+        'secp256k1' => '1.3.132.0.10', // Len: 64
+        // 'P-384' => '1.3.132.0.34', // Len: 96 (not yet supported)
+        // 'P-521' => '1.3.132.0.35', // Len: 132 (not supported)
+    ];
+
     /**
      * Parse a set of JWK keys
      *
-     * @param array $jwks The JSON Web Key Set as an associative array
+     * @param array<mixed> $jwks The JSON Web Key Set as an associative array
+     * @param string       $defaultAlg The algorithm for the Key object if "alg" is not set in the
+     *                                 JSON Web Key Set
      *
-     * @return array An associative array that represents the set of keys
+     * @return array<string, Key> An associative array of key IDs (kid) to Key objects
      *
      * @throws InvalidArgumentException     Provided JWK Set is empty
      * @throws UnexpectedValueException     Provided JWK Set was invalid
@@ -33,21 +46,22 @@ class JWK
      *
      * @uses parseKey
      */
-    public static function parseKeySet(array $jwks)
+    public static function parseKeySet(array $jwks, string $defaultAlg = null): array
     {
-        $keys = array();
+        $keys = [];
 
         if (!isset($jwks['keys'])) {
             throw new UnexpectedValueException('"keys" member must exist in the JWK Set');
         }
+
         if (empty($jwks['keys'])) {
             throw new InvalidArgumentException('JWK Set did not contain any keys');
         }
 
         foreach ($jwks['keys'] as $k => $v) {
             $kid = isset($v['kid']) ? $v['kid'] : $k;
-            if ($key = self::parseKey($v)) {
-                $keys[$kid] = $key;
+            if ($key = self::parseKey($v, $defaultAlg)) {
+                $keys[(string) $kid] = $key;
             }
         }
 
@@ -61,9 +75,11 @@ class JWK
     /**
      * Parse a JWK key
      *
-     * @param array $jwk An individual JWK
+     * @param array<mixed> $jwk An individual JWK
+     * @param string       $defaultAlg The algorithm for the Key object if "alg" is not set in the
+     *                                 JSON Web Key Set
      *
-     * @return resource|array An associative array that represents the key
+     * @return Key The key object for the JWK
      *
      * @throws InvalidArgumentException     Provided JWK is empty
      * @throws UnexpectedValueException     Provided JWK was invalid
@@ -71,18 +87,30 @@ class JWK
      *
      * @uses createPemFromModulusAndExponent
      */
-    private static function parseKey(array $jwk)
+    public static function parseKey(array $jwk, string $defaultAlg = null): ?Key
     {
         if (empty($jwk)) {
             throw new InvalidArgumentException('JWK must not be empty');
         }
+
         if (!isset($jwk['kty'])) {
             throw new UnexpectedValueException('JWK must contain a "kty" parameter');
         }
 
+        if (!isset($jwk['alg'])) {
+            if (\is_null($defaultAlg)) {
+                // The "alg" parameter is optional in a KTY, but an algorithm is required
+                // for parsing in this library. Use the $defaultAlg parameter when parsing the
+                // key set in order to prevent this error.
+                // @see https://datatracker.ietf.org/doc/html/rfc7517#section-4.4
+                throw new UnexpectedValueException('JWK must contain an "alg" parameter');
+            }
+            $jwk['alg'] = $defaultAlg;
+        }
+
         switch ($jwk['kty']) {
             case 'RSA':
-                if (\array_key_exists('d', $jwk)) {
+                if (!empty($jwk['d'])) {
                     throw new UnexpectedValueException('RSA private keys are not supported');
                 }
                 if (!isset($jwk['n']) || !isset($jwk['e'])) {
@@ -96,11 +124,72 @@ class JWK
                         'OpenSSL error: ' . \openssl_error_string()
                     );
                 }
-                return $publicKey;
+                return new Key($publicKey, $jwk['alg']);
+            case 'EC':
+                if (isset($jwk['d'])) {
+                    // The key is actually a private key
+                    throw new UnexpectedValueException('Key data must be for a public key');
+                }
+
+                if (empty($jwk['crv'])) {
+                    throw new UnexpectedValueException('crv not set');
+                }
+
+                if (!isset(self::EC_CURVES[$jwk['crv']])) {
+                    throw new DomainException('Unrecognised or unsupported EC curve');
+                }
+
+                if (empty($jwk['x']) || empty($jwk['y'])) {
+                    throw new UnexpectedValueException('x and y not set');
+                }
+
+                $publicKey = self::createPemFromCrvAndXYCoordinates($jwk['crv'], $jwk['x'], $jwk['y']);
+                return new Key($publicKey, $jwk['alg']);
             default:
                 // Currently only RSA is supported
                 break;
         }
+
+        return null;
+    }
+
+    /**
+     * Converts the EC JWK values to pem format.
+     *
+     * @param   string  $crv The EC curve (only P-256 is supported)
+     * @param   string  $x   The EC x-coordinate
+     * @param   string  $y   The EC y-coordinate
+     *
+     * @return  string
+     */
+    private static function createPemFromCrvAndXYCoordinates(string $crv, string $x, string $y): string
+    {
+        $pem =
+            self::encodeDER(
+                self::ASN1_SEQUENCE,
+                self::encodeDER(
+                    self::ASN1_SEQUENCE,
+                    self::encodeDER(
+                        self::ASN1_OBJECT_IDENTIFIER,
+                        self::encodeOID(self::OID)
+                    )
+                    . self::encodeDER(
+                        self::ASN1_OBJECT_IDENTIFIER,
+                        self::encodeOID(self::EC_CURVES[$crv])
+                    )
+                ) .
+                self::encodeDER(
+                    self::ASN1_BIT_STRING,
+                    \chr(0x00) . \chr(0x04)
+                    . JWT::urlsafeB64Decode($x)
+                    . JWT::urlsafeB64Decode($y)
+                )
+            );
+
+        return sprintf(
+            "-----BEGIN PUBLIC KEY-----\n%s\n-----END PUBLIC KEY-----\n",
+            wordwrap(base64_encode($pem), 64, "\n", true)
+        );
     }
 
     /**
@@ -113,22 +202,22 @@ class JWK
      *
      * @uses encodeLength
      */
-    private static function createPemFromModulusAndExponent($n, $e)
-    {
-        $modulus = JWT::urlsafeB64Decode($n);
-        $publicExponent = JWT::urlsafeB64Decode($e);
+    private static function createPemFromModulusAndExponent(
+        string $n,
+        string $e
+    ): string {
+        $mod = JWT::urlsafeB64Decode($n);
+        $exp = JWT::urlsafeB64Decode($e);
 
-        $components = array(
-            'modulus' => \pack('Ca*a*', 2, self::encodeLength(\strlen($modulus)), $modulus),
-            'publicExponent' => \pack('Ca*a*', 2, self::encodeLength(\strlen($publicExponent)), $publicExponent)
-        );
+        $modulus = \pack('Ca*a*', 2, self::encodeLength(\strlen($mod)), $mod);
+        $publicExponent = \pack('Ca*a*', 2, self::encodeLength(\strlen($exp)), $exp);
 
         $rsaPublicKey = \pack(
             'Ca*a*a*',
             48,
-            self::encodeLength(\strlen($components['modulus']) + \strlen($components['publicExponent'])),
-            $components['modulus'],
-            $components['publicExponent']
+            self::encodeLength(\strlen($modulus) + \strlen($publicExponent)),
+            $modulus,
+            $publicExponent
         );
 
         // sequence(oid(1.2.840.113549.1.1.1), null)) = rsaEncryption.
@@ -143,11 +232,9 @@ class JWK
             $rsaOID . $rsaPublicKey
         );
 
-        $rsaPublicKey = "-----BEGIN PUBLIC KEY-----\r\n" .
+        return "-----BEGIN PUBLIC KEY-----\r\n" .
             \chunk_split(\base64_encode($rsaPublicKey), 64) .
             '-----END PUBLIC KEY-----';
-
-        return $rsaPublicKey;
     }
 
     /**
@@ -159,7 +246,7 @@ class JWK
      * @param int $length
      * @return string
      */
-    private static function encodeLength($length)
+    private static function encodeLength(int $length): string
     {
         if ($length <= 0x7F) {
             return \chr($length);
@@ -169,4 +256,68 @@ class JWK
 
         return \pack('Ca*', 0x80 | \strlen($temp), $temp);
     }
+
+    /**
+     * Encodes a value into a DER object.
+     * Also defined in Firebase\JWT\JWT
+     *
+     * @param   int     $type DER tag
+     * @param   string  $value the value to encode
+     * @return  string  the encoded object
+     */
+    private static function encodeDER(int $type, string $value): string
+    {
+        $tag_header = 0;
+        if ($type === self::ASN1_SEQUENCE) {
+            $tag_header |= 0x20;
+        }
+
+        // Type
+        $der = \chr($tag_header | $type);
+
+        // Length
+        $der .= \chr(\strlen($value));
+
+        return $der . $value;
+    }
+
+    /**
+     * Encodes a string into a DER-encoded OID.
+     *
+     * @param   string $oid the OID string
+     * @return  string the binary DER-encoded OID
+     */
+    private static function encodeOID(string $oid): string
+    {
+        $octets = explode('.', $oid);
+
+        // Get the first octet
+        $first = (int) array_shift($octets);
+        $second = (int) array_shift($octets);
+        $oid = \chr($first * 40 + $second);
+
+        // Iterate over subsequent octets
+        foreach ($octets as $octet) {
+            if ($octet == 0) {
+                $oid .= \chr(0x00);
+                continue;
+            }
+            $bin = '';
+
+            while ($octet) {
+                $bin .= \chr(0x80 | ($octet & 0x7f));
+                $octet >>= 7;
+            }
+            $bin[0] = $bin[0] & \chr(0x7f);
+
+            // Convert to big endian if necessary
+            if (pack('V', 65534) == pack('L', 65534)) {
+                $oid .= strrev($bin);
+            } else {
+                $oid .= $bin;
+            }
+        }
+
+        return $oid;
+    }
 }
diff --git a/civicrm/vendor/firebase/php-jwt/src/JWT.php b/civicrm/vendor/firebase/php-jwt/src/JWT.php
index 4860028bc620c9707e10c3bfc95a442bfedc25de..269e8caf0d3d48f0d1b8df52650afea3a2aae93f 100644
--- a/civicrm/vendor/firebase/php-jwt/src/JWT.php
+++ b/civicrm/vendor/firebase/php-jwt/src/JWT.php
@@ -2,10 +2,15 @@
 
 namespace Firebase\JWT;
 
-use \DomainException;
-use \InvalidArgumentException;
-use \UnexpectedValueException;
-use \DateTime;
+use ArrayAccess;
+use DateTime;
+use DomainException;
+use Exception;
+use InvalidArgumentException;
+use OpenSSLAsymmetricKey;
+use OpenSSLCertificate;
+use stdClass;
+use UnexpectedValueException;
 
 /**
  * JSON Web Token implementation, based on this spec:
@@ -22,46 +27,58 @@ use \DateTime;
  */
 class JWT
 {
-    const ASN1_INTEGER = 0x02;
-    const ASN1_SEQUENCE = 0x10;
-    const ASN1_BIT_STRING = 0x03;
+    private const ASN1_INTEGER = 0x02;
+    private const ASN1_SEQUENCE = 0x10;
+    private const ASN1_BIT_STRING = 0x03;
 
     /**
      * When checking nbf, iat or expiration times,
      * we want to provide some extra leeway time to
      * account for clock skew.
+     *
+     * @var int
      */
     public static $leeway = 0;
 
     /**
      * Allow the current timestamp to be specified.
      * Useful for fixing a value within unit testing.
-     *
      * Will default to PHP time() value if null.
+     *
+     * @var ?int
      */
     public static $timestamp = null;
 
-    public static $supported_algs = array(
-        'ES256' => array('openssl', 'SHA256'),
-        'HS256' => array('hash_hmac', 'SHA256'),
-        'HS384' => array('hash_hmac', 'SHA384'),
-        'HS512' => array('hash_hmac', 'SHA512'),
-        'RS256' => array('openssl', 'SHA256'),
-        'RS384' => array('openssl', 'SHA384'),
-        'RS512' => array('openssl', 'SHA512'),
-    );
+    /**
+     * @var array<string, string[]>
+     */
+    public static $supported_algs = [
+        'ES384' => ['openssl', 'SHA384'],
+        'ES256' => ['openssl', 'SHA256'],
+        'ES256K' => ['openssl', 'SHA256'],
+        'HS256' => ['hash_hmac', 'SHA256'],
+        'HS384' => ['hash_hmac', 'SHA384'],
+        'HS512' => ['hash_hmac', 'SHA512'],
+        'RS256' => ['openssl', 'SHA256'],
+        'RS384' => ['openssl', 'SHA384'],
+        'RS512' => ['openssl', 'SHA512'],
+        'EdDSA' => ['sodium_crypto', 'EdDSA'],
+    ];
 
     /**
      * Decodes a JWT string into a PHP object.
      *
-     * @param string                    $jwt            The JWT
-     * @param string|array|resource     $key            The key, or map of keys.
-     *                                                  If the algorithm used is asymmetric, this is the public key
-     * @param array                     $allowed_algs   List of supported verification algorithms
-     *                                                  Supported algorithms are 'ES256', 'HS256', 'HS384', 'HS512', 'RS256', 'RS384', and 'RS512'
+     * @param string                 $jwt            The JWT
+     * @param Key|array<string,Key> $keyOrKeyArray  The Key or associative array of key IDs (kid) to Key objects.
+     *                                               If the algorithm used is asymmetric, this is the public key
+     *                                               Each Key object contains an algorithm and matching key.
+     *                                               Supported algorithms are 'ES384','ES256', 'HS256', 'HS384',
+     *                                               'HS512', 'RS256', 'RS384', and 'RS512'
      *
-     * @return object The JWT's payload as a PHP object
+     * @return stdClass The JWT's payload as a PHP object
      *
+     * @throws InvalidArgumentException     Provided key/key-array was empty or malformed
+     * @throws DomainException              Provided JWT is malformed
      * @throws UnexpectedValueException     Provided JWT was invalid
      * @throws SignatureInvalidException    Provided JWT was invalid because the signature verification failed
      * @throws BeforeValidException         Provided JWT is trying to be used before it's eligible as defined by 'nbf'
@@ -71,54 +88,56 @@ class JWT
      * @uses jsonDecode
      * @uses urlsafeB64Decode
      */
-    public static function decode($jwt, $key, array $allowed_algs = array())
-    {
+    public static function decode(
+        string $jwt,
+        $keyOrKeyArray
+    ): stdClass {
+        // Validate JWT
         $timestamp = \is_null(static::$timestamp) ? \time() : static::$timestamp;
 
-        if (empty($key)) {
+        if (empty($keyOrKeyArray)) {
             throw new InvalidArgumentException('Key may not be empty');
         }
         $tks = \explode('.', $jwt);
-        if (\count($tks) != 3) {
+        if (\count($tks) !== 3) {
             throw new UnexpectedValueException('Wrong number of segments');
         }
         list($headb64, $bodyb64, $cryptob64) = $tks;
-        if (null === ($header = static::jsonDecode(static::urlsafeB64Decode($headb64)))) {
+        $headerRaw = static::urlsafeB64Decode($headb64);
+        if (null === ($header = static::jsonDecode($headerRaw))) {
             throw new UnexpectedValueException('Invalid header encoding');
         }
-        if (null === $payload = static::jsonDecode(static::urlsafeB64Decode($bodyb64))) {
+        $payloadRaw = static::urlsafeB64Decode($bodyb64);
+        if (null === ($payload = static::jsonDecode($payloadRaw))) {
             throw new UnexpectedValueException('Invalid claims encoding');
         }
-        if (false === ($sig = static::urlsafeB64Decode($cryptob64))) {
-            throw new UnexpectedValueException('Invalid signature encoding');
+        if (\is_array($payload)) {
+            // prevent PHP Fatal Error in edge-cases when payload is empty array
+            $payload = (object) $payload;
+        }
+        if (!$payload instanceof stdClass) {
+            throw new UnexpectedValueException('Payload must be a JSON object');
         }
+        $sig = static::urlsafeB64Decode($cryptob64);
         if (empty($header->alg)) {
             throw new UnexpectedValueException('Empty algorithm');
         }
         if (empty(static::$supported_algs[$header->alg])) {
             throw new UnexpectedValueException('Algorithm not supported');
         }
-        if (!\in_array($header->alg, $allowed_algs)) {
-            throw new UnexpectedValueException('Algorithm not allowed');
+
+        $key = self::getKey($keyOrKeyArray, property_exists($header, 'kid') ? $header->kid : null);
+
+        // Check the algorithm
+        if (!self::constantTimeEquals($key->getAlgorithm(), $header->alg)) {
+            // See issue #351
+            throw new UnexpectedValueException('Incorrect key for this algorithm');
         }
-        if ($header->alg === 'ES256') {
-            // OpenSSL expects an ASN.1 DER sequence for ES256 signatures
+        if (\in_array($header->alg, ['ES256', 'ES256K', 'ES384'], true)) {
+            // OpenSSL expects an ASN.1 DER sequence for ES256/ES256K/ES384 signatures
             $sig = self::signatureToDER($sig);
         }
-
-        if (\is_array($key) || $key instanceof \ArrayAccess) {
-            if (isset($header->kid)) {
-                if (!isset($key[$header->kid])) {
-                    throw new UnexpectedValueException('"kid" invalid, unable to lookup correct key');
-                }
-                $key = $key[$header->kid];
-            } else {
-                throw new UnexpectedValueException('"kid" empty, unable to lookup correct key');
-            }
-        }
-
-        // Check the signature
-        if (!static::verify("$headb64.$bodyb64", $sig, $key, $header->alg)) {
+        if (!self::verify("{$headb64}.{$bodyb64}", $sig, $key->getKeyMaterial(), $header->alg)) {
             throw new SignatureInvalidException('Signature verification failed');
         }
 
@@ -148,33 +167,37 @@ class JWT
     }
 
     /**
-     * Converts and signs a PHP object or array into a JWT string.
+     * Converts and signs a PHP array into a JWT string.
      *
-     * @param object|array  $payload    PHP object or array
-     * @param string        $key        The secret key.
-     *                                  If the algorithm used is asymmetric, this is the private key
-     * @param string        $alg        The signing algorithm.
-     *                                  Supported algorithms are 'ES256', 'HS256', 'HS384', 'HS512', 'RS256', 'RS384', and 'RS512'
-     * @param mixed         $keyId
-     * @param array         $head       An array with header elements to attach
+     * @param array<mixed>          $payload PHP array
+     * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate $key The secret key.
+     * @param string                $alg     Supported algorithms are 'ES384','ES256', 'ES256K', 'HS256',
+     *                                       'HS384', 'HS512', 'RS256', 'RS384', and 'RS512'
+     * @param string                $keyId
+     * @param array<string, string> $head    An array with header elements to attach
      *
      * @return string A signed JWT
      *
      * @uses jsonEncode
      * @uses urlsafeB64Encode
      */
-    public static function encode($payload, $key, $alg = 'HS256', $keyId = null, $head = null)
-    {
-        $header = array('typ' => 'JWT', 'alg' => $alg);
+    public static function encode(
+        array $payload,
+        $key,
+        string $alg,
+        string $keyId = null,
+        array $head = null
+    ): string {
+        $header = ['typ' => 'JWT', 'alg' => $alg];
         if ($keyId !== null) {
             $header['kid'] = $keyId;
         }
         if (isset($head) && \is_array($head)) {
             $header = \array_merge($head, $header);
         }
-        $segments = array();
-        $segments[] = static::urlsafeB64Encode(static::jsonEncode($header));
-        $segments[] = static::urlsafeB64Encode(static::jsonEncode($payload));
+        $segments = [];
+        $segments[] = static::urlsafeB64Encode((string) static::jsonEncode($header));
+        $segments[] = static::urlsafeB64Encode((string) static::jsonEncode($payload));
         $signing_input = \implode('.', $segments);
 
         $signature = static::sign($signing_input, $key, $alg);
@@ -186,53 +209,84 @@ class JWT
     /**
      * Sign a string with a given key and algorithm.
      *
-     * @param string            $msg    The message to sign
-     * @param string|resource   $key    The secret key
-     * @param string            $alg    The signing algorithm.
-     *                                  Supported algorithms are 'ES256', 'HS256', 'HS384', 'HS512', 'RS256', 'RS384', and 'RS512'
+     * @param string $msg  The message to sign
+     * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate  $key  The secret key.
+     * @param string $alg  Supported algorithms are 'ES384','ES256', 'ES256K', 'HS256',
+     *                    'HS384', 'HS512', 'RS256', 'RS384', and 'RS512'
      *
      * @return string An encrypted message
      *
-     * @throws DomainException Unsupported algorithm was specified
+     * @throws DomainException Unsupported algorithm or bad key was specified
      */
-    public static function sign($msg, $key, $alg = 'HS256')
-    {
+    public static function sign(
+        string $msg,
+        $key,
+        string $alg
+    ): string {
         if (empty(static::$supported_algs[$alg])) {
             throw new DomainException('Algorithm not supported');
         }
         list($function, $algorithm) = static::$supported_algs[$alg];
         switch ($function) {
             case 'hash_hmac':
+                if (!\is_string($key)) {
+                    throw new InvalidArgumentException('key must be a string when using hmac');
+                }
                 return \hash_hmac($algorithm, $msg, $key, true);
             case 'openssl':
                 $signature = '';
-                $success = \openssl_sign($msg, $signature, $key, $algorithm);
+                $success = \openssl_sign($msg, $signature, $key, $algorithm); // @phpstan-ignore-line
                 if (!$success) {
-                    throw new DomainException("OpenSSL unable to sign data");
-                } else {
-                    if ($alg === 'ES256') {
-                        $signature = self::signatureFromDER($signature, 256);
+                    throw new DomainException('OpenSSL unable to sign data');
+                }
+                if ($alg === 'ES256' || $alg === 'ES256K') {
+                    $signature = self::signatureFromDER($signature, 256);
+                } elseif ($alg === 'ES384') {
+                    $signature = self::signatureFromDER($signature, 384);
+                }
+                return $signature;
+            case 'sodium_crypto':
+                if (!\function_exists('sodium_crypto_sign_detached')) {
+                    throw new DomainException('libsodium is not available');
+                }
+                if (!\is_string($key)) {
+                    throw new InvalidArgumentException('key must be a string when using EdDSA');
+                }
+                try {
+                    // The last non-empty line is used as the key.
+                    $lines = array_filter(explode("\n", $key));
+                    $key = base64_decode((string) end($lines));
+                    if (\strlen($key) === 0) {
+                        throw new DomainException('Key cannot be empty string');
                     }
-                    return $signature;
+                    return sodium_crypto_sign_detached($msg, $key);
+                } catch (Exception $e) {
+                    throw new DomainException($e->getMessage(), 0, $e);
                 }
         }
+
+        throw new DomainException('Algorithm not supported');
     }
 
     /**
      * Verify a signature with the message, key and method. Not all methods
      * are symmetric, so we must have a separate verify and sign method.
      *
-     * @param string            $msg        The original message (header and body)
-     * @param string            $signature  The original signature
-     * @param string|resource   $key        For HS*, a string key works. for RS*, must be a resource of an openssl public key
-     * @param string            $alg        The algorithm
+     * @param string $msg         The original message (header and body)
+     * @param string $signature   The original signature
+     * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate  $keyMaterial For HS*, a string key works. for RS*, must be an instance of OpenSSLAsymmetricKey
+     * @param string $alg         The algorithm
      *
      * @return bool
      *
-     * @throws DomainException Invalid Algorithm or OpenSSL failure
+     * @throws DomainException Invalid Algorithm, bad key, or OpenSSL failure
      */
-    private static function verify($msg, $signature, $key, $alg)
-    {
+    private static function verify(
+        string $msg,
+        string $signature,
+        $keyMaterial,
+        string $alg
+    ): bool {
         if (empty(static::$supported_algs[$alg])) {
             throw new DomainException('Algorithm not supported');
         }
@@ -240,31 +294,45 @@ class JWT
         list($function, $algorithm) = static::$supported_algs[$alg];
         switch ($function) {
             case 'openssl':
-                $success = \openssl_verify($msg, $signature, $key, $algorithm);
+                $success = \openssl_verify($msg, $signature, $keyMaterial, $algorithm); // @phpstan-ignore-line
                 if ($success === 1) {
                     return true;
-                } elseif ($success === 0) {
+                }
+                if ($success === 0) {
                     return false;
                 }
                 // returns 1 on success, 0 on failure, -1 on error.
                 throw new DomainException(
                     'OpenSSL error: ' . \openssl_error_string()
                 );
+            case 'sodium_crypto':
+                if (!\function_exists('sodium_crypto_sign_verify_detached')) {
+                    throw new DomainException('libsodium is not available');
+                }
+                if (!\is_string($keyMaterial)) {
+                    throw new InvalidArgumentException('key must be a string when using EdDSA');
+                }
+                try {
+                    // The last non-empty line is used as the key.
+                    $lines = array_filter(explode("\n", $keyMaterial));
+                    $key = base64_decode((string) end($lines));
+                    if (\strlen($key) === 0) {
+                        throw new DomainException('Key cannot be empty string');
+                    }
+                    if (\strlen($signature) === 0) {
+                        throw new DomainException('Signature cannot be empty string');
+                    }
+                    return sodium_crypto_sign_verify_detached($signature, $msg, $key);
+                } catch (Exception $e) {
+                    throw new DomainException($e->getMessage(), 0, $e);
+                }
             case 'hash_hmac':
             default:
-                $hash = \hash_hmac($algorithm, $msg, $key, true);
-                if (\function_exists('hash_equals')) {
-                    return \hash_equals($signature, $hash);
-                }
-                $len = \min(static::safeStrlen($signature), static::safeStrlen($hash));
-
-                $status = 0;
-                for ($i = 0; $i < $len; $i++) {
-                    $status |= (\ord($signature[$i]) ^ \ord($hash[$i]));
+                if (!\is_string($keyMaterial)) {
+                    throw new InvalidArgumentException('key must be a string when using hmac');
                 }
-                $status |= (static::safeStrlen($signature) ^ static::safeStrlen($hash));
-
-                return ($status === 0);
+                $hash = \hash_hmac($algorithm, $msg, $keyMaterial, true);
+                return self::constantTimeEquals($hash, $signature);
         }
     }
 
@@ -273,30 +341,16 @@ class JWT
      *
      * @param string $input JSON string
      *
-     * @return object Object representation of JSON string
+     * @return mixed The decoded JSON string
      *
      * @throws DomainException Provided string was invalid JSON
      */
-    public static function jsonDecode($input)
+    public static function jsonDecode(string $input)
     {
-        if (\version_compare(PHP_VERSION, '5.4.0', '>=') && !(\defined('JSON_C_VERSION') && PHP_INT_SIZE > 4)) {
-            /** In PHP >=5.4.0, json_decode() accepts an options parameter, that allows you
-             * to specify that large ints (like Steam Transaction IDs) should be treated as
-             * strings, rather than the PHP default behaviour of converting them to floats.
-             */
-            $obj = \json_decode($input, false, 512, JSON_BIGINT_AS_STRING);
-        } else {
-            /** Not all servers will support that, however, so for older versions we must
-             * manually detect large ints in the JSON string and quote them (thus converting
-             *them to strings) before decoding, hence the preg_replace() call.
-             */
-            $max_int_length = \strlen((string) PHP_INT_MAX) - 1;
-            $json_without_bigints = \preg_replace('/:\s*(-?\d{'.$max_int_length.',})/', ': "$1"', $input);
-            $obj = \json_decode($json_without_bigints);
-        }
+        $obj = \json_decode($input, false, 512, JSON_BIGINT_AS_STRING);
 
         if ($errno = \json_last_error()) {
-            static::handleJsonError($errno);
+            self::handleJsonError($errno);
         } elseif ($obj === null && $input !== 'null') {
             throw new DomainException('Null result with non-null input');
         }
@@ -304,22 +358,30 @@ class JWT
     }
 
     /**
-     * Encode a PHP object into a JSON string.
+     * Encode a PHP array into a JSON string.
      *
-     * @param object|array $input A PHP object or array
+     * @param array<mixed> $input A PHP array
      *
-     * @return string JSON representation of the PHP object or array
+     * @return string JSON representation of the PHP array
      *
      * @throws DomainException Provided object could not be encoded to valid JSON
      */
-    public static function jsonEncode($input)
+    public static function jsonEncode(array $input): string
     {
-        $json = \json_encode($input);
+        if (PHP_VERSION_ID >= 50400) {
+            $json = \json_encode($input, \JSON_UNESCAPED_SLASHES);
+        } else {
+            // PHP 5.3 only
+            $json = \json_encode($input);
+        }
         if ($errno = \json_last_error()) {
-            static::handleJsonError($errno);
+            self::handleJsonError($errno);
         } elseif ($json === 'null' && $input !== null) {
             throw new DomainException('Null result with non-null input');
         }
+        if ($json === false) {
+            throw new DomainException('Provided object could not be encoded to valid JSON');
+        }
         return $json;
     }
 
@@ -329,8 +391,10 @@ class JWT
      * @param string $input A Base64 encoded string
      *
      * @return string A decoded string
+     *
+     * @throws InvalidArgumentException invalid base64 characters
      */
-    public static function urlsafeB64Decode($input)
+    public static function urlsafeB64Decode(string $input): string
     {
         $remainder = \strlen($input) % 4;
         if ($remainder) {
@@ -347,27 +411,85 @@ class JWT
      *
      * @return string The base64 encode of what you passed in
      */
-    public static function urlsafeB64Encode($input)
+    public static function urlsafeB64Encode(string $input): string
     {
         return \str_replace('=', '', \strtr(\base64_encode($input), '+/', '-_'));
     }
 
+
+    /**
+     * Determine if an algorithm has been provided for each Key
+     *
+     * @param Key|ArrayAccess<string,Key>|array<string,Key> $keyOrKeyArray
+     * @param string|null            $kid
+     *
+     * @throws UnexpectedValueException
+     *
+     * @return Key
+     */
+    private static function getKey(
+        $keyOrKeyArray,
+        ?string $kid
+    ): Key {
+        if ($keyOrKeyArray instanceof Key) {
+            return $keyOrKeyArray;
+        }
+
+        if (empty($kid)) {
+            throw new UnexpectedValueException('"kid" empty, unable to lookup correct key');
+        }
+
+        if ($keyOrKeyArray instanceof CachedKeySet) {
+            // Skip "isset" check, as this will automatically refresh if not set
+            return $keyOrKeyArray[$kid];
+        }
+
+        if (!isset($keyOrKeyArray[$kid])) {
+            throw new UnexpectedValueException('"kid" invalid, unable to lookup correct key');
+        }
+
+        return $keyOrKeyArray[$kid];
+    }
+
+    /**
+     * @param string $left  The string of known length to compare against
+     * @param string $right The user-supplied string
+     * @return bool
+     */
+    public static function constantTimeEquals(string $left, string $right): bool
+    {
+        if (\function_exists('hash_equals')) {
+            return \hash_equals($left, $right);
+        }
+        $len = \min(self::safeStrlen($left), self::safeStrlen($right));
+
+        $status = 0;
+        for ($i = 0; $i < $len; $i++) {
+            $status |= (\ord($left[$i]) ^ \ord($right[$i]));
+        }
+        $status |= (self::safeStrlen($left) ^ self::safeStrlen($right));
+
+        return ($status === 0);
+    }
+
     /**
      * Helper method to create a JSON error.
      *
      * @param int $errno An error number from json_last_error()
      *
+     * @throws DomainException
+     *
      * @return void
      */
-    private static function handleJsonError($errno)
+    private static function handleJsonError(int $errno): void
     {
-        $messages = array(
+        $messages = [
             JSON_ERROR_DEPTH => 'Maximum stack depth exceeded',
             JSON_ERROR_STATE_MISMATCH => 'Invalid or malformed JSON',
             JSON_ERROR_CTRL_CHAR => 'Unexpected control character found',
             JSON_ERROR_SYNTAX => 'Syntax error, malformed JSON',
             JSON_ERROR_UTF8 => 'Malformed UTF-8 characters' //PHP >= 5.3.3
-        );
+        ];
         throw new DomainException(
             isset($messages[$errno])
             ? $messages[$errno]
@@ -382,7 +504,7 @@ class JWT
      *
      * @return int
      */
-    private static function safeStrlen($str)
+    private static function safeStrlen(string $str): int
     {
         if (\function_exists('mb_strlen')) {
             return \mb_strlen($str, '8bit');
@@ -396,10 +518,11 @@ class JWT
      * @param   string $sig The ECDSA signature to convert
      * @return  string The encoded DER object
      */
-    private static function signatureToDER($sig)
+    private static function signatureToDER(string $sig): string
     {
         // Separate the signature into r-value and s-value
-        list($r, $s) = \str_split($sig, (int) (\strlen($sig) / 2));
+        $length = max(1, (int) (\strlen($sig) / 2));
+        list($r, $s) = \str_split($sig, $length);
 
         // Trim leading zeros
         $r = \ltrim($r, "\x00");
@@ -426,9 +549,10 @@ class JWT
      *
      * @param   int     $type DER tag
      * @param   string  $value the value to encode
+     *
      * @return  string  the encoded object
      */
-    private static function encodeDER($type, $value)
+    private static function encodeDER(int $type, string $value): string
     {
         $tag_header = 0;
         if ($type === self::ASN1_SEQUENCE) {
@@ -449,9 +573,10 @@ class JWT
      *
      * @param   string  $der binary signature in DER format
      * @param   int     $keySize the number of bits in the key
+     *
      * @return  string  the signature
      */
-    private static function signatureFromDER($der, $keySize)
+    private static function signatureFromDER(string $der, int $keySize): string
     {
         // OpenSSL returns the ECDSA signatures as a binary ASN.1 DER SEQUENCE
         list($offset, $_) = self::readDER($der);
@@ -476,9 +601,10 @@ class JWT
      * @param string $der the binary data in DER format
      * @param int $offset the offset of the data stream containing the object
      * to decode
-     * @return array [$offset, $data] the new offset and the decoded object
+     *
+     * @return array{int, string|null} the new offset and the decoded object
      */
-    private static function readDER($der, $offset = 0)
+    private static function readDER(string $der, int $offset = 0): array
     {
         $pos = $offset;
         $size = \strlen($der);
@@ -496,7 +622,7 @@ class JWT
         }
 
         // Value
-        if ($type == self::ASN1_BIT_STRING) {
+        if ($type === self::ASN1_BIT_STRING) {
             $pos++; // Skip the first contents octet (padding indicator)
             $data = \substr($der, $pos, $len - 1);
             $pos += $len - 1;
@@ -507,6 +633,6 @@ class JWT
             $data = null;
         }
 
-        return array($pos, $data);
+        return [$pos, $data];
     }
 }
diff --git a/civicrm/vendor/firebase/php-jwt/src/Key.php b/civicrm/vendor/firebase/php-jwt/src/Key.php
new file mode 100644
index 0000000000000000000000000000000000000000..00cf7f2edf37051254e71bca941f975ba66ce60b
--- /dev/null
+++ b/civicrm/vendor/firebase/php-jwt/src/Key.php
@@ -0,0 +1,64 @@
+<?php
+
+namespace Firebase\JWT;
+
+use InvalidArgumentException;
+use OpenSSLAsymmetricKey;
+use OpenSSLCertificate;
+use TypeError;
+
+class Key
+{
+    /** @var string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate */
+    private $keyMaterial;
+    /** @var string */
+    private $algorithm;
+
+    /**
+     * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate $keyMaterial
+     * @param string $algorithm
+     */
+    public function __construct(
+        $keyMaterial,
+        string $algorithm
+    ) {
+        if (
+            !\is_string($keyMaterial)
+            && !$keyMaterial instanceof OpenSSLAsymmetricKey
+            && !$keyMaterial instanceof OpenSSLCertificate
+            && !\is_resource($keyMaterial)
+        ) {
+            throw new TypeError('Key material must be a string, resource, or OpenSSLAsymmetricKey');
+        }
+
+        if (empty($keyMaterial)) {
+            throw new InvalidArgumentException('Key material must not be empty');
+        }
+
+        if (empty($algorithm)) {
+            throw new InvalidArgumentException('Algorithm must not be empty');
+        }
+
+        // TODO: Remove in PHP 8.0 in favor of class constructor property promotion
+        $this->keyMaterial = $keyMaterial;
+        $this->algorithm = $algorithm;
+    }
+
+    /**
+     * Return the algorithm valid for this key
+     *
+     * @return string
+     */
+    public function getAlgorithm(): string
+    {
+        return $this->algorithm;
+    }
+
+    /**
+     * @return string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate
+     */
+    public function getKeyMaterial()
+    {
+        return $this->keyMaterial;
+    }
+}
diff --git a/civicrm/vendor/firebase/php-jwt/src/SignatureInvalidException.php b/civicrm/vendor/firebase/php-jwt/src/SignatureInvalidException.php
index 87cb34df79b367bd51b7267e7ffd6aace8f7f97b..d35dee9f185f2b54e23ef5da4b91c190a80b8ed5 100644
--- a/civicrm/vendor/firebase/php-jwt/src/SignatureInvalidException.php
+++ b/civicrm/vendor/firebase/php-jwt/src/SignatureInvalidException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Firebase\JWT;
 
 class SignatureInvalidException extends \UnexpectedValueException
diff --git a/civicrm/vendor/guzzlehttp/guzzle/.php_cs b/civicrm/vendor/guzzlehttp/guzzle/.php_cs
deleted file mode 100644
index 2dd5036c1f2b63fcf74a59df09d3b9e649e91e19..0000000000000000000000000000000000000000
--- a/civicrm/vendor/guzzlehttp/guzzle/.php_cs
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-$config = PhpCsFixer\Config::create()
-    ->setRiskyAllowed(true)
-    ->setRules([
-        '@PSR2' => true,
-        'array_syntax' => ['syntax' => 'short'],
-        'declare_strict_types' => false,
-        'concat_space' => ['spacing'=>'one'],
-        'php_unit_test_case_static_method_calls' => ['call_type' => 'self'],
-        'ordered_imports' => true,
-        // 'phpdoc_align' => ['align'=>'vertical'],
-        // 'native_function_invocation' => true,
-    ])
-    ->setFinder(
-        PhpCsFixer\Finder::create()
-            ->in(__DIR__.'/src')
-            ->in(__DIR__.'/tests')
-            ->name('*.php')
-    )
-;
-
-return $config;
diff --git a/civicrm/vendor/guzzlehttp/guzzle/CHANGELOG.md b/civicrm/vendor/guzzlehttp/guzzle/CHANGELOG.md
index b053017a96c20afe1171b6b99611488620b4e2c1..2cd234a3dda58f2a5b02043f4c973867dc8f335d 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/CHANGELOG.md
+++ b/civicrm/vendor/guzzlehttp/guzzle/CHANGELOG.md
@@ -1,31 +1,243 @@
 # Change Log
 
-## 6.5.8 - 2022-06-20
+Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version.
+
+## 7.6.1 - 2023-05-15
+
+### Fixed
+
+- Fix `SetCookie::fromString` MaxAge deprecation warning and skip invalid MaxAge values
+
+## 7.6.0 - 2023-05-14
+
+### Added
+
+- Support for setting the minimum TLS version in a unified way
+- Apply on request the version set in options parameters
+
+## 7.5.2 - 2023-05-14
+
+### Fixed
+
+- Fixed set cookie constructor validation
+- Fixed handling of files with `'0'` body
+
+### Changed
+
+- Corrected docs and default connect timeout value to 300 seconds
+
+## 7.5.1 - 2023-04-17
+
+### Fixed
+
+- Fixed `NO_PROXY` settings so that setting the `proxy` option to `no` overrides the env variable
+
+### Changed
+
+- Adjusted `guzzlehttp/psr7` version constraint to `^1.9.1 || ^2.4.5`
+
+## 7.5.0 - 2022-08-28
+
+### Added
+
+- Support PHP 8.2
+- Add request to delay closure params
+
+## 7.4.5 - 2022-06-20
+
+### Fixed
 
 * Fix change in port should be considered a change in origin
 * Fix `CURLOPT_HTTPAUTH` option not cleared on change of origin
 
-## 6.5.7 - 2022-06-09
+## 7.4.4 - 2022-06-09
+
+### Fixed
 
 * Fix failure to strip Authorization header on HTTP downgrade
 * Fix failure to strip the Cookie header on change in host or HTTP downgrade
 
-## 6.5.6 - 2022-05-25
+## 7.4.3 - 2022-05-25
+
+### Fixed
 
 * Fix cross-domain cookie leakage
 
-## 6.5.5 - 2020-06-16
+## 7.4.2 - 2022-03-20
+
+### Fixed
+
+- Remove curl auth on cross-domain redirects to align with the Authorization HTTP header
+- Reject non-HTTP schemes in StreamHandler
+- Set a default ssl.peer_name context in StreamHandler to allow `force_ip_resolve`
+
+## 7.4.1 - 2021-12-06
+
+### Changed
+
+- Replaced implicit URI to string coercion [#2946](https://github.com/guzzle/guzzle/pull/2946)
+- Allow `symfony/deprecation-contracts` version 3 [#2961](https://github.com/guzzle/guzzle/pull/2961)
+
+### Fixed
+
+- Only close curl handle if it's done [#2950](https://github.com/guzzle/guzzle/pull/2950)
+
+## 7.4.0 - 2021-10-18
+
+### Added
+
+- Support PHP 8.1 [#2929](https://github.com/guzzle/guzzle/pull/2929), [#2939](https://github.com/guzzle/guzzle/pull/2939)
+- Support `psr/log` version 2 and 3 [#2943](https://github.com/guzzle/guzzle/pull/2943)
+
+### Fixed
+
+- Make sure we always call `restore_error_handler()` [#2915](https://github.com/guzzle/guzzle/pull/2915)
+- Fix progress parameter type compatibility between the cURL and stream handlers [#2936](https://github.com/guzzle/guzzle/pull/2936)
+- Throw `InvalidArgumentException` when an incorrect `headers` array is provided [#2916](https://github.com/guzzle/guzzle/pull/2916), [#2942](https://github.com/guzzle/guzzle/pull/2942)
+
+### Changed
+
+- Be more strict with types [#2914](https://github.com/guzzle/guzzle/pull/2914), [#2917](https://github.com/guzzle/guzzle/pull/2917), [#2919](https://github.com/guzzle/guzzle/pull/2919), [#2945](https://github.com/guzzle/guzzle/pull/2945)
+
+## 7.3.0 - 2021-03-23
+
+### Added
+
+- Support for DER and P12 certificates [#2413](https://github.com/guzzle/guzzle/pull/2413)
+- Support the cURL (http://) scheme for StreamHandler proxies [#2850](https://github.com/guzzle/guzzle/pull/2850)
+- Support for `guzzlehttp/psr7:^2.0` [#2878](https://github.com/guzzle/guzzle/pull/2878)
+
+### Fixed
+
+- Handle exceptions on invalid header consistently between PHP versions and handlers [#2872](https://github.com/guzzle/guzzle/pull/2872)
 
-* Unpin version constraint for `symfony/polyfill-intl-idn` [#2678](https://github.com/guzzle/guzzle/pull/2678)
+## 7.2.0 - 2020-10-10
 
-## 6.5.4 - 2020-05-25
+### Added
 
-* Fix various intl icu issues [#2626](https://github.com/guzzle/guzzle/pull/2626)
+- Support for PHP 8 [#2712](https://github.com/guzzle/guzzle/pull/2712), [#2715](https://github.com/guzzle/guzzle/pull/2715), [#2789](https://github.com/guzzle/guzzle/pull/2789)
+- Support passing a body summarizer to the http errors middleware [#2795](https://github.com/guzzle/guzzle/pull/2795)
 
-## 6.5.3 - 2020-04-18
+### Fixed
 
+- Handle exceptions during response creation [#2591](https://github.com/guzzle/guzzle/pull/2591)
+- Fix CURLOPT_ENCODING not to be overwritten [#2595](https://github.com/guzzle/guzzle/pull/2595)
+- Make sure the Request always has a body object [#2804](https://github.com/guzzle/guzzle/pull/2804)
+
+### Changed
+
+- The `TooManyRedirectsException` has a response [#2660](https://github.com/guzzle/guzzle/pull/2660)
+- Avoid "functions" from dependencies [#2712](https://github.com/guzzle/guzzle/pull/2712)
+
+### Deprecated
+
+- Using environment variable GUZZLE_CURL_SELECT_TIMEOUT [#2786](https://github.com/guzzle/guzzle/pull/2786)
+
+## 7.1.1 - 2020-09-30
+
+### Fixed
+
+- Incorrect EOF detection for response body streams on Windows.
+
+### Changed
+
+- We dont connect curl `sink` on HEAD requests.
+- Removed some PHP 5 workarounds
+
+## 7.1.0 - 2020-09-22
+
+### Added
+
+- `GuzzleHttp\MessageFormatterInterface`
+
+### Fixed
+
+- Fixed issue that caused cookies with no value not to be stored.
+- On redirects, we allow all safe methods like GET, HEAD and OPTIONS.
+- Fixed logging on empty responses.
+- Make sure MessageFormatter::format returns string
+
+### Deprecated
+
+- All functions in `GuzzleHttp` has been deprecated. Use static methods on `Utils` instead.
+- `ClientInterface::getConfig()`
+- `Client::getConfig()`
+- `Client::__call()`
+- `Utils::defaultCaBundle()`
+- `CurlFactory::LOW_CURL_VERSION_NUMBER`
+
+## 7.0.1 - 2020-06-27
+
+* Fix multiply defined functions fatal error [#2699](https://github.com/guzzle/guzzle/pull/2699)
+
+## 7.0.0 - 2020-06-27
+
+No changes since 7.0.0-rc1.
+
+## 7.0.0-rc1 - 2020-06-15
+
+### Changed
+
+* Use error level for logging errors in Middleware [#2629](https://github.com/guzzle/guzzle/pull/2629)
+* Disabled IDN support by default and require ext-intl to use it [#2675](https://github.com/guzzle/guzzle/pull/2675)
+
+## 7.0.0-beta2 - 2020-05-25
+
+### Added
+
+* Using `Utils` class instead of functions in the `GuzzleHttp` namespace. [#2546](https://github.com/guzzle/guzzle/pull/2546)
+* `ClientInterface::MAJOR_VERSION` [#2583](https://github.com/guzzle/guzzle/pull/2583)
+
+### Changed
+
+* Avoid the `getenv` function when unsafe [#2531](https://github.com/guzzle/guzzle/pull/2531)
+* Added real client methods [#2529](https://github.com/guzzle/guzzle/pull/2529)
+* Avoid functions due to global install conflicts [#2546](https://github.com/guzzle/guzzle/pull/2546)
 * Use Symfony intl-idn polyfill [#2550](https://github.com/guzzle/guzzle/pull/2550)
-* Remove use of internal functions [#2548](https://github.com/guzzle/guzzle/pull/2548)
+* Adding methods for HTTP verbs like `Client::get()`, `Client::head()`, `Client::patch()` etc [#2529](https://github.com/guzzle/guzzle/pull/2529)
+* `ConnectException` extends `TransferException` [#2541](https://github.com/guzzle/guzzle/pull/2541)
+* Updated the default User Agent to "GuzzleHttp/7" [#2654](https://github.com/guzzle/guzzle/pull/2654)
+
+### Fixed
+
+* Various intl icu issues [#2626](https://github.com/guzzle/guzzle/pull/2626)
+
+### Removed
+
+* Pool option `pool_size` [#2528](https://github.com/guzzle/guzzle/pull/2528)
+
+## 7.0.0-beta1 - 2019-12-30
+
+The diff might look very big but 95% of Guzzle users will be able to upgrade without modification.
+Please see [the upgrade document](UPGRADING.md) that describes all BC breaking changes.
+
+### Added
+
+* Implement PSR-18 and dropped PHP 5 support [#2421](https://github.com/guzzle/guzzle/pull/2421) [#2474](https://github.com/guzzle/guzzle/pull/2474)
+* PHP 7 types [#2442](https://github.com/guzzle/guzzle/pull/2442) [#2449](https://github.com/guzzle/guzzle/pull/2449) [#2466](https://github.com/guzzle/guzzle/pull/2466) [#2497](https://github.com/guzzle/guzzle/pull/2497) [#2499](https://github.com/guzzle/guzzle/pull/2499)
+* IDN support for redirects [2424](https://github.com/guzzle/guzzle/pull/2424)
+
+### Changed
+
+* Dont allow passing null as third argument to `BadResponseException::__construct()` [#2427](https://github.com/guzzle/guzzle/pull/2427)
+* Use SAPI constant instead of method call [#2450](https://github.com/guzzle/guzzle/pull/2450)
+* Use native function invocation [#2444](https://github.com/guzzle/guzzle/pull/2444)
+* Better defaults for PHP installations with old ICU lib [2454](https://github.com/guzzle/guzzle/pull/2454)
+* Added visibility to all constants [#2462](https://github.com/guzzle/guzzle/pull/2462)
+* Dont allow passing `null` as URI to `Client::request()` and `Client::requestAsync()` [#2461](https://github.com/guzzle/guzzle/pull/2461)
+* Widen the exception argument to throwable [#2495](https://github.com/guzzle/guzzle/pull/2495)
+
+### Fixed
+
+* Logging when Promise rejected with a string [#2311](https://github.com/guzzle/guzzle/pull/2311)
+
+### Removed
+
+* Class `SeekException` [#2162](https://github.com/guzzle/guzzle/pull/2162)
+* `RequestException::getResponseBodySummary()` [#2425](https://github.com/guzzle/guzzle/pull/2425)
+* `CookieJar::getCookieValue()` [#2433](https://github.com/guzzle/guzzle/pull/2433)
+* `uri_template()` and `UriTemplate` [#2440](https://github.com/guzzle/guzzle/pull/2440)
+* Request options `save_to` and `exceptions` [#2464](https://github.com/guzzle/guzzle/pull/2464)
 
 ## 6.5.2 - 2019-12-23
 
@@ -41,16 +253,13 @@
 * Improvement: Added support for reset internal queue in MockHandler. [#2143](https://github.com/guzzle/guzzle/pull/2143)
 * Improvement: Added support to pass arbitrary options to `curl_multi_init`. [#2287](https://github.com/guzzle/guzzle/pull/2287)
 * Fix: Gracefully handle passing `null` to the `header` option. [#2132](https://github.com/guzzle/guzzle/pull/2132)
-* Fix: `RetryMiddleware` did not do exponential delay between retries due unit mismatch. [#2132](https://github.com/guzzle/guzzle/pull/2132)
-  Previously, `RetryMiddleware` would sleep for 1 millisecond, then 2 milliseconds, then 4 milliseconds.
-  **After this change, `RetryMiddleware` will sleep for 1 second, then 2 seconds, then 4 seconds.**
-  `Middleware::retry()` accepts a second callback parameter to override the default timeouts if needed.
+* Fix: `RetryMiddleware` did not do exponential delay between retires due unit mismatch. [#2132](https://github.com/guzzle/guzzle/pull/2132)
 * Fix: Prevent undefined offset when using array for ssl_key options. [#2348](https://github.com/guzzle/guzzle/pull/2348)
 * Deprecated `ClientInterface::VERSION`
 
 ## 6.4.1 - 2019-10-23
 
-* No `guzzle.phar` was created in 6.4.0 due expired API token. This release will fix that 
+* No `guzzle.phar` was created in 6.4.0 due expired API token. This release will fix that
 * Added `parent::__construct()` to `FileCookieJar` and `SessionCookieJar`
 
 ## 6.4.0 - 2019-10-23
@@ -372,7 +581,7 @@ object).
   * Note: This has been changed in 5.0.3 to now encode query string values by
     default unless the `rawString` argument is provided when setting the query
     string on a URL: Now allowing many more characters to be present in the
-    query string without being percent encoded. See http://tools.ietf.org/html/rfc3986#appendix-A
+    query string without being percent encoded. See https://tools.ietf.org/html/rfc3986#appendix-A
 
 ## 5.0.1 - 2014-10-16
 
@@ -414,7 +623,7 @@ interfaces.
   responses, `GuzzleHttp\Collection`, `GuzzleHttp\Url`,
   `GuzzleHttp\Query`, `GuzzleHttp\Post\PostBody`, and
   `GuzzleHttp\Cookie\SetCookie`. This blog post provides a good outline of
-  why I did this: http://ocramius.github.io/blog/fluent-interfaces-are-evil/.
+  why I did this: https://ocramius.github.io/blog/fluent-interfaces-are-evil/.
   This also makes the Guzzle message interfaces compatible with the current
   PSR-7 message proposal.
 * Removed "functions.php", so that Guzzle is truly PSR-4 compliant. Except
@@ -600,8 +809,6 @@ interfaces.
 
 ## 4.0.0 - 2014-03-29
 
-* For more information on the 4.0 transition, see:
-  http://mtdowling.com/blog/2014/03/15/guzzle-4-rc/
 * For information on changes and upgrading, see:
   https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40
 * Added `GuzzleHttp\batch()` as a convenience function for sending requests in
@@ -910,7 +1117,7 @@ interfaces.
 
 ## 3.4.0 - 2013-04-11
 
-* Bug fix: URLs are now resolved correctly based on http://tools.ietf.org/html/rfc3986#section-5.2. #289
+* Bug fix: URLs are now resolved correctly based on https://tools.ietf.org/html/rfc3986#section-5.2. #289
 * Bug fix: Absolute URLs with a path in a service description will now properly override the base URL. #289
 * Bug fix: Parsing a query string with a single PHP array value will now result in an array. #263
 * Bug fix: Better normalization of the User-Agent header to prevent duplicate headers. #264.
diff --git a/civicrm/vendor/guzzlehttp/guzzle/Dockerfile b/civicrm/vendor/guzzlehttp/guzzle/Dockerfile
deleted file mode 100644
index f6a095230e85638cc9f98dd7beef2bcf8c87e98e..0000000000000000000000000000000000000000
--- a/civicrm/vendor/guzzlehttp/guzzle/Dockerfile
+++ /dev/null
@@ -1,18 +0,0 @@
-FROM composer:latest as setup
-
-RUN mkdir /guzzle
-
-WORKDIR /guzzle
-
-RUN set -xe \
-    && composer init --name=guzzlehttp/test --description="Simple project for testing Guzzle scripts" --author="Márk Sági-Kazár <mark.sagikazar@gmail.com>" --no-interaction \
-    && composer require guzzlehttp/guzzle
-
-
-FROM php:7.3
-
-RUN mkdir /guzzle
-
-WORKDIR /guzzle
-
-COPY --from=setup /guzzle /guzzle
diff --git a/civicrm/vendor/guzzlehttp/guzzle/README.md b/civicrm/vendor/guzzlehttp/guzzle/README.md
index bc98e1a100f0defa59ee50ed969296b038037080..428f346f0cb2555f1689008933a45434953ce48c 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/README.md
+++ b/civicrm/vendor/guzzlehttp/guzzle/README.md
@@ -15,6 +15,7 @@ trivial to integrate with web services.
 - Can send both synchronous and asynchronous requests using the same interface.
 - Uses PSR-7 interfaces for requests, responses, and streams. This allows you
   to utilize other PSR-7 compatible libraries with Guzzle.
+- Supports PSR-18 allowing interoperability between other PSR-18 HTTP Clients.
 - Abstracts away the underlying HTTP transport, allowing you to write
   environment and transport agnostic code; i.e., no hard dependency on cURL,
   PHP streams, sockets, or non-blocking event loops.
@@ -24,11 +25,11 @@ trivial to integrate with web services.
 $client = new \GuzzleHttp\Client();
 $response = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle');
 
-echo $response->getStatusCode(); # 200
-echo $response->getHeaderLine('content-type'); # 'application/json; charset=utf8'
-echo $response->getBody(); # '{"id": 1420053, "name": "guzzle", ...}'
+echo $response->getStatusCode(); // 200
+echo $response->getHeaderLine('content-type'); // 'application/json; charset=utf8'
+echo $response->getBody(); // '{"id": 1420053, "name": "guzzle", ...}'
 
-# Send an asynchronous request.
+// Send an asynchronous request.
 $request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
 $promise = $client->sendAsync($request)->then(function ($response) {
     echo 'I completed! ' . $response->getBody();
@@ -52,29 +53,10 @@ We use GitHub issues only to discuss bugs and new features. For support please r
 The recommended way to install Guzzle is through
 [Composer](https://getcomposer.org/).
 
-```bash
-# Install Composer
-curl -sS https://getcomposer.org/installer | php
-```
-
-Next, run the Composer command to install the latest stable version of Guzzle:
-
 ```bash
 composer require guzzlehttp/guzzle
 ```
 
-After installing, you need to require Composer's autoloader:
-
-```php
-require 'vendor/autoload.php';
-```
-
-You can then later update Guzzle using composer:
-
- ```bash
-composer update
- ```
-
 
 ## Version Guidance
 
@@ -84,7 +66,7 @@ composer update
 | 4.x     | EOL            | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A                 | No    | >=5.4,<7.0   |
 | 5.x     | EOL            | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No    | >=5.4,<7.4   |
 | 6.x     | Security fixes | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes   | >=5.5,<8.0   |
-| 7.x     | Latest         | `guzzlehttp/guzzle` | `GuzzleHttp` | [v7][guzzle-7-repo] | [v7][guzzle-7-docs] | Yes   | >=7.2.5,<8.2 |
+| 7.x     | Latest         | `guzzlehttp/guzzle` | `GuzzleHttp` | [v7][guzzle-7-repo] | [v7][guzzle-7-docs] | Yes   | >=7.2.5,<8.3 |
 
 [guzzle-3-repo]: https://github.com/guzzle/guzzle3
 [guzzle-4-repo]: https://github.com/guzzle/guzzle/tree/4.x
@@ -95,3 +77,18 @@ composer update
 [guzzle-5-docs]: https://docs.guzzlephp.org/en/5.3/
 [guzzle-6-docs]: https://docs.guzzlephp.org/en/6.5/
 [guzzle-7-docs]: https://docs.guzzlephp.org/en/latest/
+
+
+## Security
+
+If you discover a security vulnerability within this package, please send an email to security@tidelift.com. All security vulnerabilities will be promptly addressed. Please do not disclose security-related issues publicly until a fix has been announced. Please see [Security Policy](https://github.com/guzzle/guzzle/security/policy) for more information.
+
+## License
+
+Guzzle is made available under the MIT License (MIT). Please see [License File](LICENSE) for more information.
+
+## For Enterprise
+
+Available as part of the Tidelift Subscription
+
+The maintainers of Guzzle and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/packagist-guzzlehttp-guzzle?utm_source=packagist-guzzlehttp-guzzle&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
diff --git a/civicrm/vendor/guzzlehttp/guzzle/UPGRADING.md b/civicrm/vendor/guzzlehttp/guzzle/UPGRADING.md
index 91d1dcc99317e1dd713f18638cf97d2921d31f6a..45417a7e1fc868de11ece660f6eae537d2a470ae 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/UPGRADING.md
+++ b/civicrm/vendor/guzzlehttp/guzzle/UPGRADING.md
@@ -1,10 +1,60 @@
 Guzzle Upgrade Guide
 ====================
 
+6.0 to 7.0
+----------
+
+In order to take advantage of the new features of PHP, Guzzle dropped the support
+of PHP 5. The minimum supported PHP version is now PHP 7.2. Type hints and return
+types for functions and methods have been added wherever possible. 
+
+Please make sure:
+- You are calling a function or a method with the correct type.
+- If you extend a class of Guzzle; update all signatures on methods you override.
+
+#### Other backwards compatibility breaking changes
+
+- Class `GuzzleHttp\UriTemplate` is removed.
+- Class `GuzzleHttp\Exception\SeekException` is removed.
+- Classes `GuzzleHttp\Exception\BadResponseException`, `GuzzleHttp\Exception\ClientException`, 
+  `GuzzleHttp\Exception\ServerException` can no longer be initialized with an empty
+  Response as argument.
+- Class `GuzzleHttp\Exception\ConnectException` now extends `GuzzleHttp\Exception\TransferException`
+  instead of `GuzzleHttp\Exception\RequestException`.
+- Function `GuzzleHttp\Exception\ConnectException::getResponse()` is removed.
+- Function `GuzzleHttp\Exception\ConnectException::hasResponse()` is removed.
+- Constant `GuzzleHttp\ClientInterface::VERSION` is removed. Added `GuzzleHttp\ClientInterface::MAJOR_VERSION` instead.
+- Function `GuzzleHttp\Exception\RequestException::getResponseBodySummary` is removed.
+  Use `\GuzzleHttp\Psr7\get_message_body_summary` as an alternative.
+- Function `GuzzleHttp\Cookie\CookieJar::getCookieValue` is removed.
+- Request option `exception` is removed. Please use `http_errors`.
+- Request option `save_to` is removed. Please use `sink`.
+- Pool option `pool_size` is removed. Please use `concurrency`.
+- We now look for environment variables in the `$_SERVER` super global, due to thread safety issues with `getenv`. We continue to fallback to `getenv` in CLI environments, for maximum compatibility.
+- The `get`, `head`, `put`, `post`, `patch`, `delete`, `getAsync`, `headAsync`, `putAsync`, `postAsync`, `patchAsync`, and `deleteAsync` methods are now implemented as genuine methods on `GuzzleHttp\Client`, with strong typing. The original `__call` implementation remains unchanged for now, for maximum backwards compatibility, but won't be invoked under normal operation.
+- The `log` middleware will log the errors with level `error` instead of `notice` 
+- Support for international domain names (IDN) is now disabled by default, and enabling it requires installing ext-intl, linked against a modern version of the C library (ICU 4.6 or higher).
+
+#### Native functions calls
+
+All internal native functions calls of Guzzle are now prefixed with a slash. This
+change makes it impossible for method overloading by other libraries or applications.
+Example:
+
+```php
+// Before:
+curl_version();
+
+// After:
+\curl_version();
+```
+
+For the full diff you can check [here](https://github.com/guzzle/guzzle/compare/6.5.4..master).
+
 5.0 to 6.0
 ----------
 
-Guzzle now uses [PSR-7](http://www.php-fig.org/psr/psr-7/) for HTTP messages.
+Guzzle now uses [PSR-7](https://www.php-fig.org/psr/psr-7/) for HTTP messages.
 Due to the fact that these messages are immutable, this prompted a refactoring
 of Guzzle to use a middleware based system rather than an event system. Any
 HTTP message interaction (e.g., `GuzzleHttp\Message\Request`) need to be
@@ -167,7 +217,7 @@ passing a `GuzzleHttp\Adapter\AdapterInterface`, you must now pass a PHP
 
 ## Removed Fluent Interfaces
 
-[Fluent interfaces were removed](http://ocramius.github.io/blog/fluent-interfaces-are-evil)
+[Fluent interfaces were removed](https://ocramius.github.io/blog/fluent-interfaces-are-evil/)
 from the following classes:
 
 - `GuzzleHttp\Collection`
@@ -820,7 +870,7 @@ HeaderInterface (e.g. toArray(), getAll(), etc.).
 3.3 to 3.4
 ----------
 
-Base URLs of a client now follow the rules of http://tools.ietf.org/html/rfc3986#section-5.2.2 when merging URLs.
+Base URLs of a client now follow the rules of https://tools.ietf.org/html/rfc3986#section-5.2.2 when merging URLs.
 
 3.2 to 3.3
 ----------
diff --git a/civicrm/vendor/guzzlehttp/guzzle/composer.json b/civicrm/vendor/guzzlehttp/guzzle/composer.json
index a57d78f6056eb877c2d4801f021ea2b2b18dd1ce..b38d5d99fcfaf6bb6ea68538ec5a59aa09b686e6 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/composer.json
+++ b/civicrm/vendor/guzzlehttp/guzzle/composer.json
@@ -1,6 +1,5 @@
 {
     "name": "guzzlehttp/guzzle",
-    "type": "library",
     "description": "Guzzle is a PHP HTTP client library",
     "keywords": [
         "framework",
@@ -9,9 +8,10 @@
         "web service",
         "curl",
         "client",
-        "HTTP client"
+        "HTTP client",
+        "PSR-7",
+        "PSR-18"
     ],
-    "homepage": "http://guzzlephp.org/",
     "license": "MIT",
     "authors": [
         {
@@ -51,29 +51,39 @@
         }
     ],
     "require": {
-        "php": ">=5.5",
+        "php": "^7.2.5 || ^8.0",
         "ext-json": "*",
-        "symfony/polyfill-intl-idn": "^1.17",
-        "guzzlehttp/promises": "^1.0",
-        "guzzlehttp/psr7": "^1.9"
+        "guzzlehttp/promises": "^1.5",
+        "guzzlehttp/psr7": "^1.9.1 || ^2.4.5",
+        "psr/http-client": "^1.0",
+        "symfony/deprecation-contracts": "^2.2 || ^3.0"
+    },
+    "provide": {
+        "psr/http-client-implementation": "1.0"
     },
     "require-dev": {
         "ext-curl": "*",
-        "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-        "psr/log": "^1.1"
+        "bamarni/composer-bin-plugin": "^1.8.1",
+        "php-http/client-integration-tests": "^3.0",
+        "phpunit/phpunit": "^8.5.29 || ^9.5.23",
+        "psr/log": "^1.1 || ^2.0 || ^3.0"
     },
     "suggest": {
+        "ext-curl": "Required for CURL handler support",
+        "ext-intl": "Required for Internationalized Domain Name (IDN) support",
         "psr/log": "Required for using the Log middleware"
     },
     "config": {
-        "sort-packages": true,
         "allow-plugins": {
             "bamarni/composer-bin-plugin": true
-        }
+        },
+        "preferred-install": "dist",
+        "sort-packages": true
     },
     "extra": {
-        "branch-alias": {
-            "dev-master": "6.5-dev"
+        "bamarni-bin": {
+            "bin-links": true,
+            "forward-command": false
         }
     },
     "autoload": {
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/BodySummarizer.php b/civicrm/vendor/guzzlehttp/guzzle/src/BodySummarizer.php
new file mode 100644
index 0000000000000000000000000000000000000000..6eca94ef97a97f051fa5458cde2f1e7a2bd65316
--- /dev/null
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/BodySummarizer.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace GuzzleHttp;
+
+use Psr\Http\Message\MessageInterface;
+
+final class BodySummarizer implements BodySummarizerInterface
+{
+    /**
+     * @var int|null
+     */
+    private $truncateAt;
+
+    public function __construct(int $truncateAt = null)
+    {
+        $this->truncateAt = $truncateAt;
+    }
+
+    /**
+     * Returns a summarized message body.
+     */
+    public function summarize(MessageInterface $message): ?string
+    {
+        return $this->truncateAt === null
+            ? \GuzzleHttp\Psr7\Message::bodySummary($message)
+            : \GuzzleHttp\Psr7\Message::bodySummary($message, $this->truncateAt);
+    }
+}
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php b/civicrm/vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..3e02e036e322b8908e760beda3edbf06b5c490ed
--- /dev/null
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace GuzzleHttp;
+
+use Psr\Http\Message\MessageInterface;
+
+interface BodySummarizerInterface
+{
+    /**
+     * Returns a summarized message body.
+     */
+    public function summarize(MessageInterface $message): ?string;
+}
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Client.php b/civicrm/vendor/guzzlehttp/guzzle/src/Client.php
index 315a022cf4b74e69dfacdc0cd1b359b27cd2ef01..c21fcb6e467c2a4ded9c9f3a154a1e545922817f 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Client.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Client.php
@@ -1,31 +1,26 @@
 <?php
+
 namespace GuzzleHttp;
 
 use GuzzleHttp\Cookie\CookieJar;
 use GuzzleHttp\Exception\GuzzleException;
-use GuzzleHttp\Promise;
-use GuzzleHttp\Psr7;
+use GuzzleHttp\Exception\InvalidArgumentException;
+use GuzzleHttp\Promise as P;
+use GuzzleHttp\Promise\PromiseInterface;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\UriInterface;
 
 /**
- * @method ResponseInterface get(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface head(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface put(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface post(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface patch(string|UriInterface $uri, array $options = [])
- * @method ResponseInterface delete(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface getAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface headAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface putAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface postAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface patchAsync(string|UriInterface $uri, array $options = [])
- * @method Promise\PromiseInterface deleteAsync(string|UriInterface $uri, array $options = [])
+ * @final
  */
-class Client implements ClientInterface
+class Client implements ClientInterface, \Psr\Http\Client\ClientInterface
 {
-    /** @var array Default request options */
+    use ClientTrait;
+
+    /**
+     * @var array Default request options
+     */
     private $config;
 
     /**
@@ -63,13 +58,13 @@ class Client implements ClientInterface
     {
         if (!isset($config['handler'])) {
             $config['handler'] = HandlerStack::create();
-        } elseif (!is_callable($config['handler'])) {
-            throw new \InvalidArgumentException('handler must be a callable');
+        } elseif (!\is_callable($config['handler'])) {
+            throw new InvalidArgumentException('handler must be a callable');
         }
 
         // Convert the base_uri to a UriInterface
         if (isset($config['base_uri'])) {
-            $config['base_uri'] = Psr7\uri_for($config['base_uri']);
+            $config['base_uri'] = Psr7\Utils::uriFor($config['base_uri']);
         }
 
         $this->configureDefaults($config);
@@ -79,19 +74,21 @@ class Client implements ClientInterface
      * @param string $method
      * @param array  $args
      *
-     * @return Promise\PromiseInterface
+     * @return PromiseInterface|ResponseInterface
+     *
+     * @deprecated Client::__call will be removed in guzzlehttp/guzzle:8.0.
      */
     public function __call($method, $args)
     {
-        if (count($args) < 1) {
-            throw new \InvalidArgumentException('Magic request methods require a URI and optional options array');
+        if (\count($args) < 1) {
+            throw new InvalidArgumentException('Magic request methods require a URI and optional options array');
         }
 
         $uri = $args[0];
-        $opts = isset($args[1]) ? $args[1] : [];
+        $opts = $args[1] ?? [];
 
-        return substr($method, -5) === 'Async'
-            ? $this->requestAsync(substr($method, 0, -5), $uri, $opts)
+        return \substr($method, -5) === 'Async'
+            ? $this->requestAsync(\substr($method, 0, -5), $uri, $opts)
             : $this->request($method, $uri, $opts);
     }
 
@@ -100,10 +97,8 @@ class Client implements ClientInterface
      *
      * @param array $options Request options to apply to the given
      *                       request and to the transfer. See \GuzzleHttp\RequestOptions.
-     *
-     * @return Promise\PromiseInterface
      */
-    public function sendAsync(RequestInterface $request, array $options = [])
+    public function sendAsync(RequestInterface $request, array $options = []): PromiseInterface
     {
         // Merge the base URI into the request URI if needed.
         $options = $this->prepareDefaults($options);
@@ -120,15 +115,28 @@ class Client implements ClientInterface
      * @param array $options Request options to apply to the given
      *                       request and to the transfer. See \GuzzleHttp\RequestOptions.
      *
-     * @return ResponseInterface
      * @throws GuzzleException
      */
-    public function send(RequestInterface $request, array $options = [])
+    public function send(RequestInterface $request, array $options = []): ResponseInterface
     {
         $options[RequestOptions::SYNCHRONOUS] = true;
         return $this->sendAsync($request, $options)->wait();
     }
 
+    /**
+     * The HttpClient PSR (PSR-18) specify this method.
+     *
+     * @inheritDoc
+     */
+    public function sendRequest(RequestInterface $request): ResponseInterface
+    {
+        $options[RequestOptions::SYNCHRONOUS] = true;
+        $options[RequestOptions::ALLOW_REDIRECTS] = false;
+        $options[RequestOptions::HTTP_ERRORS] = false;
+
+        return $this->sendAsync($request, $options)->wait();
+    }
+
     /**
      * Create and send an asynchronous HTTP request.
      *
@@ -140,20 +148,18 @@ class Client implements ClientInterface
      * @param string              $method  HTTP method
      * @param string|UriInterface $uri     URI object or string.
      * @param array               $options Request options to apply. See \GuzzleHttp\RequestOptions.
-     *
-     * @return Promise\PromiseInterface
      */
-    public function requestAsync($method, $uri = '', array $options = [])
+    public function requestAsync(string $method, $uri = '', array $options = []): PromiseInterface
     {
         $options = $this->prepareDefaults($options);
         // Remove request modifying parameter because it can be done up-front.
-        $headers = isset($options['headers']) ? $options['headers'] : [];
-        $body = isset($options['body']) ? $options['body'] : null;
-        $version = isset($options['version']) ? $options['version'] : '1.1';
+        $headers = $options['headers'] ?? [];
+        $body = $options['body'] ?? null;
+        $version = $options['version'] ?? '1.1';
         // Merge the URI into the base URI.
-        $uri = $this->buildUri($uri, $options);
-        if (is_array($body)) {
-            $this->invalidBody();
+        $uri = $this->buildUri(Psr7\Utils::uriFor($uri), $options);
+        if (\is_array($body)) {
+            throw $this->invalidBody();
         }
         $request = new Psr7\Request($method, $uri, $headers, $body, $version);
         // Remove the option so that they are not doubly-applied.
@@ -173,10 +179,9 @@ class Client implements ClientInterface
      * @param string|UriInterface $uri     URI object or string.
      * @param array               $options Request options to apply. See \GuzzleHttp\RequestOptions.
      *
-     * @return ResponseInterface
      * @throws GuzzleException
      */
-    public function request($method, $uri = '', array $options = [])
+    public function request(string $method, $uri = '', array $options = []): ResponseInterface
     {
         $options[RequestOptions::SYNCHRONOUS] = true;
         return $this->requestAsync($method, $uri, $options)->wait();
@@ -192,30 +197,24 @@ class Client implements ClientInterface
      * @param string|null $option The config option to retrieve.
      *
      * @return mixed
+     *
+     * @deprecated Client::getConfig will be removed in guzzlehttp/guzzle:8.0.
      */
-    public function getConfig($option = null)
+    public function getConfig(?string $option = null)
     {
         return $option === null
             ? $this->config
-            : (isset($this->config[$option]) ? $this->config[$option] : null);
+            : ($this->config[$option] ?? null);
     }
 
-    /**
-     * @param  string|null $uri
-     *
-     * @return UriInterface
-     */
-    private function buildUri($uri, array $config)
+    private function buildUri(UriInterface $uri, array $config): UriInterface
     {
-        // for BC we accept null which would otherwise fail in uri_for
-        $uri = Psr7\uri_for($uri === null ? '' : $uri);
-
         if (isset($config['base_uri'])) {
-            $uri = Psr7\UriResolver::resolve(Psr7\uri_for($config['base_uri']), $uri);
+            $uri = Psr7\UriResolver::resolve(Psr7\Utils::uriFor($config['base_uri']), $uri);
         }
 
         if (isset($config['idn_conversion']) && ($config['idn_conversion'] !== false)) {
-            $idnOptions = ($config['idn_conversion'] === true) ? IDNA_DEFAULT : $config['idn_conversion'];
+            $idnOptions = ($config['idn_conversion'] === true) ? \IDNA_DEFAULT : $config['idn_conversion'];
             $uri = Utils::idnUriConvert($uri, $idnOptions);
         }
 
@@ -224,11 +223,8 @@ class Client implements ClientInterface
 
     /**
      * Configures the default options for a client.
-     *
-     * @param array $config
-     * @return void
      */
-    private function configureDefaults(array $config)
+    private function configureDefaults(array $config): void
     {
         $defaults = [
             'allow_redirects' => RedirectMiddleware::$defaultSettings,
@@ -236,7 +232,7 @@ class Client implements ClientInterface
             'decode_content'  => true,
             'verify'          => true,
             'cookies'         => false,
-            'idn_conversion'  => true,
+            'idn_conversion'  => false,
         ];
 
         // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set.
@@ -244,17 +240,17 @@ class Client implements ClientInterface
         // We can only trust the HTTP_PROXY environment variable in a CLI
         // process due to the fact that PHP has no reliable mechanism to
         // get environment variables that start with "HTTP_".
-        if (php_sapi_name() === 'cli' && getenv('HTTP_PROXY')) {
-            $defaults['proxy']['http'] = getenv('HTTP_PROXY');
+        if (\PHP_SAPI === 'cli' && ($proxy = Utils::getenv('HTTP_PROXY'))) {
+            $defaults['proxy']['http'] = $proxy;
         }
 
-        if ($proxy = getenv('HTTPS_PROXY')) {
+        if ($proxy = Utils::getenv('HTTPS_PROXY')) {
             $defaults['proxy']['https'] = $proxy;
         }
 
-        if ($noProxy = getenv('NO_PROXY')) {
-            $cleanedNoProxy = str_replace(' ', '', $noProxy);
-            $defaults['proxy']['no'] = explode(',', $cleanedNoProxy);
+        if ($noProxy = Utils::getenv('NO_PROXY')) {
+            $cleanedNoProxy = \str_replace(' ', '', $noProxy);
+            $defaults['proxy']['no'] = \explode(',', $cleanedNoProxy);
         }
 
         $this->config = $config + $defaults;
@@ -265,15 +261,15 @@ class Client implements ClientInterface
 
         // Add the default user-agent header.
         if (!isset($this->config['headers'])) {
-            $this->config['headers'] = ['User-Agent' => default_user_agent()];
+            $this->config['headers'] = ['User-Agent' => Utils::defaultUserAgent()];
         } else {
             // Add the User-Agent header if one was not already set.
-            foreach (array_keys($this->config['headers']) as $name) {
-                if (strtolower($name) === 'user-agent') {
+            foreach (\array_keys($this->config['headers']) as $name) {
+                if (\strtolower($name) === 'user-agent') {
                     return;
                 }
             }
-            $this->config['headers']['User-Agent'] = default_user_agent();
+            $this->config['headers']['User-Agent'] = Utils::defaultUserAgent();
         }
     }
 
@@ -281,10 +277,8 @@ class Client implements ClientInterface
      * Merges default options into the array.
      *
      * @param array $options Options to modify by reference
-     *
-     * @return array
      */
-    private function prepareDefaults(array $options)
+    private function prepareDefaults(array $options): array
     {
         $defaults = $this->config;
 
@@ -296,13 +290,13 @@ class Client implements ClientInterface
 
         // Special handling for headers is required as they are added as
         // conditional headers and as headers passed to a request ctor.
-        if (array_key_exists('headers', $options)) {
+        if (\array_key_exists('headers', $options)) {
             // Allows default headers to be unset.
             if ($options['headers'] === null) {
                 $defaults['_conditional'] = [];
                 unset($options['headers']);
-            } elseif (!is_array($options['headers'])) {
-                throw new \InvalidArgumentException('headers must be an array');
+            } elseif (!\is_array($options['headers'])) {
+                throw new InvalidArgumentException('headers must be an array');
             }
         }
 
@@ -326,65 +320,49 @@ class Client implements ClientInterface
      * as-is without merging in default options.
      *
      * @param array $options See \GuzzleHttp\RequestOptions.
-     *
-     * @return Promise\PromiseInterface
      */
-    private function transfer(RequestInterface $request, array $options)
+    private function transfer(RequestInterface $request, array $options): PromiseInterface
     {
-        // save_to -> sink
-        if (isset($options['save_to'])) {
-            $options['sink'] = $options['save_to'];
-            unset($options['save_to']);
-        }
-
-        // exceptions -> http_errors
-        if (isset($options['exceptions'])) {
-            $options['http_errors'] = $options['exceptions'];
-            unset($options['exceptions']);
-        }
-
         $request = $this->applyOptions($request, $options);
         /** @var HandlerStack $handler */
         $handler = $options['handler'];
 
         try {
-            return Promise\promise_for($handler($request, $options));
+            return P\Create::promiseFor($handler($request, $options));
         } catch (\Exception $e) {
-            return Promise\rejection_for($e);
+            return P\Create::rejectionFor($e);
         }
     }
 
     /**
      * Applies the array of request options to a request.
-     *
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return RequestInterface
      */
-    private function applyOptions(RequestInterface $request, array &$options)
+    private function applyOptions(RequestInterface $request, array &$options): RequestInterface
     {
         $modify = [
             'set_headers' => [],
         ];
 
         if (isset($options['headers'])) {
+            if (array_keys($options['headers']) === range(0, count($options['headers']) - 1)) {
+                throw new InvalidArgumentException('The headers array must have header name as keys.');
+            }
             $modify['set_headers'] = $options['headers'];
             unset($options['headers']);
         }
 
         if (isset($options['form_params'])) {
             if (isset($options['multipart'])) {
-                throw new \InvalidArgumentException('You cannot use '
+                throw new InvalidArgumentException('You cannot use '
                     . 'form_params and multipart at the same time. Use the '
                     . 'form_params option if you want to send application/'
                     . 'x-www-form-urlencoded requests, and the multipart '
                     . 'option to send multipart/form-data requests.');
             }
-            $options['body'] = http_build_query($options['form_params'], '', '&');
+            $options['body'] = \http_build_query($options['form_params'], '', '&');
             unset($options['form_params']);
             // Ensure that we don't have the header in different case and set the new value.
-            $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
+            $options['_conditional'] = Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']);
             $options['_conditional']['Content-Type'] = 'application/x-www-form-urlencoded';
         }
 
@@ -394,10 +372,10 @@ class Client implements ClientInterface
         }
 
         if (isset($options['json'])) {
-            $options['body'] = \GuzzleHttp\json_encode($options['json']);
+            $options['body'] = Utils::jsonEncode($options['json']);
             unset($options['json']);
             // Ensure that we don't have the header in different case and set the new value.
-            $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
+            $options['_conditional'] = Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']);
             $options['_conditional']['Content-Type'] = 'application/json';
         }
 
@@ -405,47 +383,47 @@ class Client implements ClientInterface
             && $options['decode_content'] !== true
         ) {
             // Ensure that we don't have the header in different case and set the new value.
-            $options['_conditional'] = Psr7\_caseless_remove(['Accept-Encoding'], $options['_conditional']);
+            $options['_conditional'] = Psr7\Utils::caselessRemove(['Accept-Encoding'], $options['_conditional']);
             $modify['set_headers']['Accept-Encoding'] = $options['decode_content'];
         }
 
         if (isset($options['body'])) {
-            if (is_array($options['body'])) {
-                $this->invalidBody();
+            if (\is_array($options['body'])) {
+                throw $this->invalidBody();
             }
-            $modify['body'] = Psr7\stream_for($options['body']);
+            $modify['body'] = Psr7\Utils::streamFor($options['body']);
             unset($options['body']);
         }
 
-        if (!empty($options['auth']) && is_array($options['auth'])) {
+        if (!empty($options['auth']) && \is_array($options['auth'])) {
             $value = $options['auth'];
-            $type = isset($value[2]) ? strtolower($value[2]) : 'basic';
+            $type = isset($value[2]) ? \strtolower($value[2]) : 'basic';
             switch ($type) {
                 case 'basic':
                     // Ensure that we don't have the header in different case and set the new value.
-                    $modify['set_headers'] = Psr7\_caseless_remove(['Authorization'], $modify['set_headers']);
+                    $modify['set_headers'] = Psr7\Utils::caselessRemove(['Authorization'], $modify['set_headers']);
                     $modify['set_headers']['Authorization'] = 'Basic '
-                        . base64_encode("$value[0]:$value[1]");
+                        . \base64_encode("$value[0]:$value[1]");
                     break;
                 case 'digest':
                     // @todo: Do not rely on curl
-                    $options['curl'][CURLOPT_HTTPAUTH] = CURLAUTH_DIGEST;
-                    $options['curl'][CURLOPT_USERPWD] = "$value[0]:$value[1]";
+                    $options['curl'][\CURLOPT_HTTPAUTH] = \CURLAUTH_DIGEST;
+                    $options['curl'][\CURLOPT_USERPWD] = "$value[0]:$value[1]";
                     break;
                 case 'ntlm':
-                    $options['curl'][CURLOPT_HTTPAUTH] = CURLAUTH_NTLM;
-                    $options['curl'][CURLOPT_USERPWD] = "$value[0]:$value[1]";
+                    $options['curl'][\CURLOPT_HTTPAUTH] = \CURLAUTH_NTLM;
+                    $options['curl'][\CURLOPT_USERPWD] = "$value[0]:$value[1]";
                     break;
             }
         }
 
         if (isset($options['query'])) {
             $value = $options['query'];
-            if (is_array($value)) {
-                $value = http_build_query($value, null, '&', PHP_QUERY_RFC3986);
+            if (\is_array($value)) {
+                $value = \http_build_query($value, '', '&', \PHP_QUERY_RFC3986);
             }
-            if (!is_string($value)) {
-                throw new \InvalidArgumentException('query must be a string or array');
+            if (!\is_string($value)) {
+                throw new InvalidArgumentException('query must be a string or array');
             }
             $modify['query'] = $value;
             unset($options['query']);
@@ -454,16 +432,20 @@ class Client implements ClientInterface
         // Ensure that sink is not an invalid value.
         if (isset($options['sink'])) {
             // TODO: Add more sink validation?
-            if (is_bool($options['sink'])) {
-                throw new \InvalidArgumentException('sink must not be a boolean');
+            if (\is_bool($options['sink'])) {
+                throw new InvalidArgumentException('sink must not be a boolean');
             }
         }
 
-        $request = Psr7\modify_request($request, $modify);
+        if (isset($options['version'])) {
+            $modify['version'] = $options['version'];
+        }
+
+        $request = Psr7\Utils::modifyRequest($request, $modify);
         if ($request->getBody() instanceof Psr7\MultipartStream) {
             // Use a multipart/form-data POST if a Content-Type is not set.
             // Ensure that we don't have the header in different case and set the new value.
-            $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
+            $options['_conditional'] = Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']);
             $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary='
                 . $request->getBody()->getBoundary();
         }
@@ -477,7 +459,7 @@ class Client implements ClientInterface
                     $modify['set_headers'][$k] = $v;
                 }
             }
-            $request = Psr7\modify_request($request, $modify);
+            $request = Psr7\Utils::modifyRequest($request, $modify);
             // Don't pass this internal value along to middleware/handlers.
             unset($options['_conditional']);
         }
@@ -486,14 +468,12 @@ class Client implements ClientInterface
     }
 
     /**
-     * Throw Exception with pre-set message.
-     * @return void
-     * @throws \InvalidArgumentException Invalid body.
+     * Return an InvalidArgumentException with pre-set message.
      */
-    private function invalidBody()
+    private function invalidBody(): InvalidArgumentException
     {
-        throw new \InvalidArgumentException('Passing in the "body" request '
-            . 'option as an array to send a POST request has been deprecated. '
+        return new InvalidArgumentException('Passing in the "body" request '
+            . 'option as an array to send a request is not supported. '
             . 'Please use the "form_params" request option to send a '
             . 'application/x-www-form-urlencoded request, or the "multipart" '
             . 'request option to send a multipart/form-data request.');
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/ClientInterface.php b/civicrm/vendor/guzzlehttp/guzzle/src/ClientInterface.php
index 638b75dca4d7eea4bae50396c112010aa16963ef..6aaee61afc27304a6606087fa95cd8c8f27ba64e 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/ClientInterface.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/ClientInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp;
 
 use GuzzleHttp\Exception\GuzzleException;
@@ -13,9 +14,9 @@ use Psr\Http\Message\UriInterface;
 interface ClientInterface
 {
     /**
-     * @deprecated Will be removed in Guzzle 7.0.0
+     * The Guzzle major version.
      */
-    const VERSION = '6.5.5';
+    public const MAJOR_VERSION = 7;
 
     /**
      * Send an HTTP request.
@@ -24,10 +25,9 @@ interface ClientInterface
      * @param array            $options Request options to apply to the given
      *                                  request and to the transfer.
      *
-     * @return ResponseInterface
      * @throws GuzzleException
      */
-    public function send(RequestInterface $request, array $options = []);
+    public function send(RequestInterface $request, array $options = []): ResponseInterface;
 
     /**
      * Asynchronously send an HTTP request.
@@ -35,10 +35,8 @@ interface ClientInterface
      * @param RequestInterface $request Request to send
      * @param array            $options Request options to apply to the given
      *                                  request and to the transfer.
-     *
-     * @return PromiseInterface
      */
-    public function sendAsync(RequestInterface $request, array $options = []);
+    public function sendAsync(RequestInterface $request, array $options = []): PromiseInterface;
 
     /**
      * Create and send an HTTP request.
@@ -51,10 +49,9 @@ interface ClientInterface
      * @param string|UriInterface $uri     URI object or string.
      * @param array               $options Request options to apply.
      *
-     * @return ResponseInterface
      * @throws GuzzleException
      */
-    public function request($method, $uri, array $options = []);
+    public function request(string $method, $uri, array $options = []): ResponseInterface;
 
     /**
      * Create and send an asynchronous HTTP request.
@@ -67,10 +64,8 @@ interface ClientInterface
      * @param string              $method  HTTP method
      * @param string|UriInterface $uri     URI object or string.
      * @param array               $options Request options to apply.
-     *
-     * @return PromiseInterface
      */
-    public function requestAsync($method, $uri, array $options = []);
+    public function requestAsync(string $method, $uri, array $options = []): PromiseInterface;
 
     /**
      * Get a client configuration option.
@@ -82,6 +77,8 @@ interface ClientInterface
      * @param string|null $option The config option to retrieve.
      *
      * @return mixed
+     *
+     * @deprecated ClientInterface::getConfig will be removed in guzzlehttp/guzzle:8.0.
      */
-    public function getConfig($option = null);
+    public function getConfig(?string $option = null);
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/ClientTrait.php b/civicrm/vendor/guzzlehttp/guzzle/src/ClientTrait.php
new file mode 100644
index 0000000000000000000000000000000000000000..c584c76cbf48eb88af97e8ef7d4482b39e49aa33
--- /dev/null
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/ClientTrait.php
@@ -0,0 +1,241 @@
+<?php
+
+namespace GuzzleHttp;
+
+use GuzzleHttp\Exception\GuzzleException;
+use GuzzleHttp\Promise\PromiseInterface;
+use Psr\Http\Message\ResponseInterface;
+use Psr\Http\Message\UriInterface;
+
+/**
+ * Client interface for sending HTTP requests.
+ */
+trait ClientTrait
+{
+    /**
+     * Create and send an HTTP request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well.
+     *
+     * @param string              $method  HTTP method.
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     *
+     * @throws GuzzleException
+     */
+    abstract public function request(string $method, $uri, array $options = []): ResponseInterface;
+
+    /**
+     * Create and send an HTTP GET request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     *
+     * @throws GuzzleException
+     */
+    public function get($uri, array $options = []): ResponseInterface
+    {
+        return $this->request('GET', $uri, $options);
+    }
+
+    /**
+     * Create and send an HTTP HEAD request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     *
+     * @throws GuzzleException
+     */
+    public function head($uri, array $options = []): ResponseInterface
+    {
+        return $this->request('HEAD', $uri, $options);
+    }
+
+    /**
+     * Create and send an HTTP PUT request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     *
+     * @throws GuzzleException
+     */
+    public function put($uri, array $options = []): ResponseInterface
+    {
+        return $this->request('PUT', $uri, $options);
+    }
+
+    /**
+     * Create and send an HTTP POST request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     *
+     * @throws GuzzleException
+     */
+    public function post($uri, array $options = []): ResponseInterface
+    {
+        return $this->request('POST', $uri, $options);
+    }
+
+    /**
+     * Create and send an HTTP PATCH request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     *
+     * @throws GuzzleException
+     */
+    public function patch($uri, array $options = []): ResponseInterface
+    {
+        return $this->request('PATCH', $uri, $options);
+    }
+
+    /**
+     * Create and send an HTTP DELETE request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     *
+     * @throws GuzzleException
+     */
+    public function delete($uri, array $options = []): ResponseInterface
+    {
+        return $this->request('DELETE', $uri, $options);
+    }
+
+    /**
+     * Create and send an asynchronous HTTP request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well. Use an array to provide a URL
+     * template and additional variables to use in the URL template expansion.
+     *
+     * @param string              $method  HTTP method
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     */
+    abstract public function requestAsync(string $method, $uri, array $options = []): PromiseInterface;
+
+    /**
+     * Create and send an asynchronous HTTP GET request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well. Use an array to provide a URL
+     * template and additional variables to use in the URL template expansion.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     */
+    public function getAsync($uri, array $options = []): PromiseInterface
+    {
+        return $this->requestAsync('GET', $uri, $options);
+    }
+
+    /**
+     * Create and send an asynchronous HTTP HEAD request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well. Use an array to provide a URL
+     * template and additional variables to use in the URL template expansion.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     */
+    public function headAsync($uri, array $options = []): PromiseInterface
+    {
+        return $this->requestAsync('HEAD', $uri, $options);
+    }
+
+    /**
+     * Create and send an asynchronous HTTP PUT request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well. Use an array to provide a URL
+     * template and additional variables to use in the URL template expansion.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     */
+    public function putAsync($uri, array $options = []): PromiseInterface
+    {
+        return $this->requestAsync('PUT', $uri, $options);
+    }
+
+    /**
+     * Create and send an asynchronous HTTP POST request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well. Use an array to provide a URL
+     * template and additional variables to use in the URL template expansion.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     */
+    public function postAsync($uri, array $options = []): PromiseInterface
+    {
+        return $this->requestAsync('POST', $uri, $options);
+    }
+
+    /**
+     * Create and send an asynchronous HTTP PATCH request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well. Use an array to provide a URL
+     * template and additional variables to use in the URL template expansion.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     */
+    public function patchAsync($uri, array $options = []): PromiseInterface
+    {
+        return $this->requestAsync('PATCH', $uri, $options);
+    }
+
+    /**
+     * Create and send an asynchronous HTTP DELETE request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well. Use an array to provide a URL
+     * template and additional variables to use in the URL template expansion.
+     *
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply.
+     */
+    public function deleteAsync($uri, array $options = []): PromiseInterface
+    {
+        return $this->requestAsync('DELETE', $uri, $options);
+    }
+}
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
index 394df3a7cf1b828ce8aafd819e6b18ef6602714d..9985a9814df9032472e23430915dcbf651845915 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Cookie;
 
 use Psr\Http\Message\RequestInterface;
@@ -9,20 +10,24 @@ use Psr\Http\Message\ResponseInterface;
  */
 class CookieJar implements CookieJarInterface
 {
-    /** @var SetCookie[] Loaded cookie data */
+    /**
+     * @var SetCookie[] Loaded cookie data
+     */
     private $cookies = [];
 
-    /** @var bool */
+    /**
+     * @var bool
+     */
     private $strictMode;
 
     /**
-     * @param bool $strictMode   Set to true to throw exceptions when invalid
+     * @param bool  $strictMode  Set to true to throw exceptions when invalid
      *                           cookies are added to the cookie jar.
      * @param array $cookieArray Array of SetCookie objects or a hash of
      *                           arrays that can be used with the SetCookie
      *                           constructor
      */
-    public function __construct($strictMode = false, $cookieArray = [])
+    public function __construct(bool $strictMode = false, array $cookieArray = [])
     {
         $this->strictMode = $strictMode;
 
@@ -39,10 +44,8 @@ class CookieJar implements CookieJarInterface
      *
      * @param array  $cookies Cookies to create the jar from
      * @param string $domain  Domain to set the cookies to
-     *
-     * @return self
      */
-    public static function fromArray(array $cookies, $domain)
+    public static function fromArray(array $cookies, string $domain): self
     {
         $cookieJar = new self();
         foreach ($cookies as $name => $value) {
@@ -57,26 +60,15 @@ class CookieJar implements CookieJarInterface
         return $cookieJar;
     }
 
-    /**
-     * @deprecated
-     */
-    public static function getCookieValue($value)
-    {
-        return $value;
-    }
-
     /**
      * Evaluate if this cookie should be persisted to storage
      * that survives between requests.
      *
-     * @param SetCookie $cookie Being evaluated.
-     * @param bool $allowSessionCookies If we should persist session cookies
-     * @return bool
+     * @param SetCookie $cookie              Being evaluated.
+     * @param bool      $allowSessionCookies If we should persist session cookies
      */
-    public static function shouldPersist(
-        SetCookie $cookie,
-        $allowSessionCookies = false
-    ) {
+    public static function shouldPersist(SetCookie $cookie, bool $allowSessionCookies = false): bool
+    {
         if ($cookie->getExpires() || $allowSessionCookies) {
             if (!$cookie->getDiscard()) {
                 return true;
@@ -90,16 +82,13 @@ class CookieJar implements CookieJarInterface
      * Finds and returns the cookie based on the name
      *
      * @param string $name cookie name to search for
+     *
      * @return SetCookie|null cookie that was found or null if not found
      */
-    public function getCookieByName($name)
+    public function getCookieByName(string $name): ?SetCookie
     {
-        // don't allow a non string name
-        if ($name === null || !is_scalar($name)) {
-            return null;
-        }
         foreach ($this->cookies as $cookie) {
-            if ($cookie->getName() !== null && strcasecmp($cookie->getName(), $name) === 0) {
+            if ($cookie->getName() !== null && \strcasecmp($cookie->getName(), $name) === 0) {
                 return $cookie;
             }
         }
@@ -107,37 +96,43 @@ class CookieJar implements CookieJarInterface
         return null;
     }
 
-    public function toArray()
+    /**
+     * @inheritDoc
+     */
+    public function toArray(): array
     {
-        return array_map(function (SetCookie $cookie) {
+        return \array_map(static function (SetCookie $cookie): array {
             return $cookie->toArray();
         }, $this->getIterator()->getArrayCopy());
     }
 
-    public function clear($domain = null, $path = null, $name = null)
+    /**
+     * @inheritDoc
+     */
+    public function clear(?string $domain = null, ?string $path = null, ?string $name = null): void
     {
         if (!$domain) {
             $this->cookies = [];
             return;
         } elseif (!$path) {
-            $this->cookies = array_filter(
+            $this->cookies = \array_filter(
                 $this->cookies,
-                function (SetCookie $cookie) use ($domain) {
+                static function (SetCookie $cookie) use ($domain): bool {
                     return !$cookie->matchesDomain($domain);
                 }
             );
         } elseif (!$name) {
-            $this->cookies = array_filter(
+            $this->cookies = \array_filter(
                 $this->cookies,
-                function (SetCookie $cookie) use ($path, $domain) {
+                static function (SetCookie $cookie) use ($path, $domain): bool {
                     return !($cookie->matchesPath($path) &&
                         $cookie->matchesDomain($domain));
                 }
             );
         } else {
-            $this->cookies = array_filter(
+            $this->cookies = \array_filter(
                 $this->cookies,
-                function (SetCookie $cookie) use ($path, $domain, $name) {
+                static function (SetCookie $cookie) use ($path, $domain, $name) {
                     return !($cookie->getName() == $name &&
                         $cookie->matchesPath($path) &&
                         $cookie->matchesDomain($domain));
@@ -146,17 +141,23 @@ class CookieJar implements CookieJarInterface
         }
     }
 
-    public function clearSessionCookies()
+    /**
+     * @inheritDoc
+     */
+    public function clearSessionCookies(): void
     {
-        $this->cookies = array_filter(
+        $this->cookies = \array_filter(
             $this->cookies,
-            function (SetCookie $cookie) {
+            static function (SetCookie $cookie): bool {
                 return !$cookie->getDiscard() && $cookie->getExpires();
             }
         );
     }
 
-    public function setCookie(SetCookie $cookie)
+    /**
+     * @inheritDoc
+     */
+    public function setCookie(SetCookie $cookie): bool
     {
         // If the name string is empty (but not 0), ignore the set-cookie
         // string entirely.
@@ -170,15 +171,13 @@ class CookieJar implements CookieJarInterface
         if ($result !== true) {
             if ($this->strictMode) {
                 throw new \RuntimeException('Invalid cookie: ' . $result);
-            } else {
-                $this->removeCookieIfEmpty($cookie);
-                return false;
             }
+            $this->removeCookieIfEmpty($cookie);
+            return false;
         }
 
         // Resolve conflicts with previously set cookies
         foreach ($this->cookies as $i => $c) {
-
             // Two cookies are identical, when their path, and domain are
             // identical.
             if ($c->getPath() != $cookie->getPath() ||
@@ -217,27 +216,28 @@ class CookieJar implements CookieJarInterface
         return true;
     }
 
-    public function count()
+    public function count(): int
     {
-        return count($this->cookies);
+        return \count($this->cookies);
     }
 
-    public function getIterator()
+    /**
+     * @return \ArrayIterator<int, SetCookie>
+     */
+    public function getIterator(): \ArrayIterator
     {
-        return new \ArrayIterator(array_values($this->cookies));
+        return new \ArrayIterator(\array_values($this->cookies));
     }
 
-    public function extractCookies(
-        RequestInterface $request,
-        ResponseInterface $response
-    ) {
+    public function extractCookies(RequestInterface $request, ResponseInterface $response): void
+    {
         if ($cookieHeader = $response->getHeader('Set-Cookie')) {
             foreach ($cookieHeader as $cookie) {
                 $sc = SetCookie::fromString($cookie);
                 if (!$sc->getDomain()) {
                     $sc->setDomain($request->getUri()->getHost());
                 }
-                if (0 !== strpos($sc->getPath(), '/')) {
+                if (0 !== \strpos($sc->getPath(), '/')) {
                     $sc->setPath($this->getCookiePathFromRequest($request));
                 }
                 if (!$sc->matchesDomain($request->getUri()->getHost())) {
@@ -254,30 +254,28 @@ class CookieJar implements CookieJarInterface
      * Computes cookie path following RFC 6265 section 5.1.4
      *
      * @link https://tools.ietf.org/html/rfc6265#section-5.1.4
-     *
-     * @param RequestInterface $request
-     * @return string
      */
-    private function getCookiePathFromRequest(RequestInterface $request)
+    private function getCookiePathFromRequest(RequestInterface $request): string
     {
         $uriPath = $request->getUri()->getPath();
-        if (''  === $uriPath) {
+        if ('' === $uriPath) {
             return '/';
         }
-        if (0 !== strpos($uriPath, '/')) {
+        if (0 !== \strpos($uriPath, '/')) {
             return '/';
         }
         if ('/' === $uriPath) {
             return '/';
         }
-        if (0 === $lastSlashPos = strrpos($uriPath, '/')) {
+        $lastSlashPos = \strrpos($uriPath, '/');
+        if (0 === $lastSlashPos || false === $lastSlashPos) {
             return '/';
         }
 
-        return substr($uriPath, 0, $lastSlashPos);
+        return \substr($uriPath, 0, $lastSlashPos);
     }
 
-    public function withCookieHeader(RequestInterface $request)
+    public function withCookieHeader(RequestInterface $request): RequestInterface
     {
         $values = [];
         $uri = $request->getUri();
@@ -297,17 +295,15 @@ class CookieJar implements CookieJarInterface
         }
 
         return $values
-            ? $request->withHeader('Cookie', implode('; ', $values))
+            ? $request->withHeader('Cookie', \implode('; ', $values))
             : $request;
     }
 
     /**
      * If a cookie already exists and the server asks to set it again with a
      * null value, the cookie must be deleted.
-     *
-     * @param SetCookie $cookie
      */
-    private function removeCookieIfEmpty(SetCookie $cookie)
+    private function removeCookieIfEmpty(SetCookie $cookie): void
     {
         $cookieValue = $cookie->getValue();
         if ($cookieValue === null || $cookieValue === '') {
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
index 6ee11885e1f1f2cfc82ffc1d463966e24ddd9d25..7df374b5bee97778690e3cf1f9cbb79d8b0f820b 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Cookie;
 
 use Psr\Http\Message\RequestInterface;
@@ -12,7 +13,8 @@ use Psr\Http\Message\ResponseInterface;
  * necessary. Subclasses are also responsible for storing and retrieving
  * cookies from a file, database, etc.
  *
- * @link http://docs.python.org/2/library/cookielib.html Inspiration
+ * @link https://docs.python.org/2/library/cookielib.html Inspiration
+ * @extends \IteratorAggregate<SetCookie>
  */
 interface CookieJarInterface extends \Countable, \IteratorAggregate
 {
@@ -26,7 +28,7 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
      *
      * @return RequestInterface returns the modified request.
      */
-    public function withCookieHeader(RequestInterface $request);
+    public function withCookieHeader(RequestInterface $request): RequestInterface;
 
     /**
      * Extract cookies from an HTTP response and store them in the CookieJar.
@@ -34,10 +36,7 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
      * @param RequestInterface  $request  Request that was sent
      * @param ResponseInterface $response Response that was received
      */
-    public function extractCookies(
-        RequestInterface $request,
-        ResponseInterface $response
-    );
+    public function extractCookies(RequestInterface $request, ResponseInterface $response): void;
 
     /**
      * Sets a cookie in the cookie jar.
@@ -46,7 +45,7 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
      *
      * @return bool Returns true on success or false on failure
      */
-    public function setCookie(SetCookie $cookie);
+    public function setCookie(SetCookie $cookie): bool;
 
     /**
      * Remove cookies currently held in the cookie jar.
@@ -61,10 +60,8 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
      * @param string|null $domain Clears cookies matching a domain
      * @param string|null $path   Clears cookies matching a domain and path
      * @param string|null $name   Clears cookies matching a domain, path, and name
-     *
-     * @return CookieJarInterface
      */
-    public function clear($domain = null, $path = null, $name = null);
+    public function clear(?string $domain = null, ?string $path = null, ?string $name = null): void;
 
     /**
      * Discard all sessions cookies.
@@ -73,12 +70,10 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
      * field set to true. To be called when the user agent shuts down according
      * to RFC 2965.
      */
-    public function clearSessionCookies();
+    public function clearSessionCookies(): void;
 
     /**
      * Converts the cookie jar to an array.
-     *
-     * @return array
      */
-    public function toArray();
+    public function toArray(): array;
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
index 3fb8600ef07be182db6d8ad607b73582ec1746e3..290236d543c3b89c6ed47d60cc7f1814a3ec8767 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
@@ -1,33 +1,40 @@
 <?php
+
 namespace GuzzleHttp\Cookie;
 
+use GuzzleHttp\Utils;
+
 /**
  * Persists non-session cookies using a JSON formatted file
  */
 class FileCookieJar extends CookieJar
 {
-    /** @var string filename */
+    /**
+     * @var string filename
+     */
     private $filename;
 
-    /** @var bool Control whether to persist session cookies or not. */
+    /**
+     * @var bool Control whether to persist session cookies or not.
+     */
     private $storeSessionCookies;
 
     /**
      * Create a new FileCookieJar object
      *
-     * @param string $cookieFile        File to store the cookie data
-     * @param bool $storeSessionCookies Set to true to store session cookies
-     *                                  in the cookie jar.
+     * @param string $cookieFile          File to store the cookie data
+     * @param bool   $storeSessionCookies Set to true to store session cookies
+     *                                    in the cookie jar.
      *
      * @throws \RuntimeException if the file cannot be found or created
      */
-    public function __construct($cookieFile, $storeSessionCookies = false)
+    public function __construct(string $cookieFile, bool $storeSessionCookies = false)
     {
         parent::__construct();
         $this->filename = $cookieFile;
         $this->storeSessionCookies = $storeSessionCookies;
 
-        if (file_exists($cookieFile)) {
+        if (\file_exists($cookieFile)) {
             $this->load($cookieFile);
         }
     }
@@ -44,20 +51,21 @@ class FileCookieJar extends CookieJar
      * Saves the cookies to a file.
      *
      * @param string $filename File to save
+     *
      * @throws \RuntimeException if the file cannot be found or created
      */
-    public function save($filename)
+    public function save(string $filename): void
     {
         $json = [];
+        /** @var SetCookie $cookie */
         foreach ($this as $cookie) {
-            /** @var SetCookie $cookie */
             if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
                 $json[] = $cookie->toArray();
             }
         }
 
-        $jsonStr = \GuzzleHttp\json_encode($json);
-        if (false === file_put_contents($filename, $jsonStr, LOCK_EX)) {
+        $jsonStr = Utils::jsonEncode($json);
+        if (false === \file_put_contents($filename, $jsonStr, \LOCK_EX)) {
             throw new \RuntimeException("Unable to save file {$filename}");
         }
     }
@@ -68,23 +76,25 @@ class FileCookieJar extends CookieJar
      * Old cookies are kept unless overwritten by newly loaded ones.
      *
      * @param string $filename Cookie file to load.
+     *
      * @throws \RuntimeException if the file cannot be loaded.
      */
-    public function load($filename)
+    public function load(string $filename): void
     {
-        $json = file_get_contents($filename);
+        $json = \file_get_contents($filename);
         if (false === $json) {
             throw new \RuntimeException("Unable to load file {$filename}");
-        } elseif ($json === '') {
+        }
+        if ($json === '') {
             return;
         }
 
-        $data = \GuzzleHttp\json_decode($json, true);
-        if (is_array($data)) {
-            foreach (json_decode($json, true) as $cookie) {
+        $data = Utils::jsonDecode($json, true);
+        if (\is_array($data)) {
+            foreach ($data as $cookie) {
                 $this->setCookie(new SetCookie($cookie));
             }
-        } elseif (strlen($data)) {
+        } elseif (\is_scalar($data) && !empty($data)) {
             throw new \RuntimeException("Invalid cookie file: {$filename}");
         }
     }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
index 0224a2447b14c55eadac53831258e7bdc3041210..5d51ca982013531c86d7521b36325c33c9567d6c 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Cookie;
 
 /**
@@ -6,21 +7,25 @@ namespace GuzzleHttp\Cookie;
  */
 class SessionCookieJar extends CookieJar
 {
-    /** @var string session key */
+    /**
+     * @var string session key
+     */
     private $sessionKey;
-    
-    /** @var bool Control whether to persist session cookies or not. */
+
+    /**
+     * @var bool Control whether to persist session cookies or not.
+     */
     private $storeSessionCookies;
 
     /**
      * Create a new SessionCookieJar object
      *
-     * @param string $sessionKey        Session key name to store the cookie
-     *                                  data in session
-     * @param bool $storeSessionCookies Set to true to store session cookies
-     *                                  in the cookie jar.
+     * @param string $sessionKey          Session key name to store the cookie
+     *                                    data in session
+     * @param bool   $storeSessionCookies Set to true to store session cookies
+     *                                    in the cookie jar.
      */
-    public function __construct($sessionKey, $storeSessionCookies = false)
+    public function __construct(string $sessionKey, bool $storeSessionCookies = false)
     {
         parent::__construct();
         $this->sessionKey = $sessionKey;
@@ -39,33 +44,33 @@ class SessionCookieJar extends CookieJar
     /**
      * Save cookies to the client session
      */
-    public function save()
+    public function save(): void
     {
         $json = [];
+        /** @var SetCookie $cookie */
         foreach ($this as $cookie) {
-            /** @var SetCookie $cookie */
             if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
                 $json[] = $cookie->toArray();
             }
         }
 
-        $_SESSION[$this->sessionKey] = json_encode($json);
+        $_SESSION[$this->sessionKey] = \json_encode($json);
     }
 
     /**
      * Load the contents of the client session into the data array
      */
-    protected function load()
+    protected function load(): void
     {
         if (!isset($_SESSION[$this->sessionKey])) {
             return;
         }
-        $data = json_decode($_SESSION[$this->sessionKey], true);
-        if (is_array($data)) {
+        $data = \json_decode($_SESSION[$this->sessionKey], true);
+        if (\is_array($data)) {
             foreach ($data as $cookie) {
                 $this->setCookie(new SetCookie($cookie));
             }
-        } elseif (strlen($data)) {
+        } elseif (\strlen($data)) {
             throw new \RuntimeException("Invalid cookie data");
         }
     }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
index 55f6901a7346b3b7243d02482321f8318d2a168e..3f04e307ffe6bad074bd7bbf0a5bf697c51da0d0 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Cookie;
 
 /**
@@ -6,7 +7,9 @@ namespace GuzzleHttp\Cookie;
  */
 class SetCookie
 {
-    /** @var array */
+    /**
+     * @var array
+     */
     private static $defaults = [
         'Name'     => null,
         'Value'    => null,
@@ -19,43 +22,49 @@ class SetCookie
         'HttpOnly' => false
     ];
 
-    /** @var array Cookie data */
+    /**
+     * @var array Cookie data
+     */
     private $data;
 
     /**
-     * Create a new SetCookie object from a string
+     * Create a new SetCookie object from a string.
      *
      * @param string $cookie Set-Cookie header string
-     *
-     * @return self
      */
-    public static function fromString($cookie)
+    public static function fromString(string $cookie): self
     {
         // Create the default return array
         $data = self::$defaults;
         // Explode the cookie string using a series of semicolons
-        $pieces = array_filter(array_map('trim', explode(';', $cookie)));
+        $pieces = \array_filter(\array_map('trim', \explode(';', $cookie)));
         // The name of the cookie (first kvp) must exist and include an equal sign.
-        if (empty($pieces[0]) || !strpos($pieces[0], '=')) {
+        if (!isset($pieces[0]) || \strpos($pieces[0], '=') === false) {
             return new self($data);
         }
 
         // Add the cookie pieces into the parsed data array
         foreach ($pieces as $part) {
-            $cookieParts = explode('=', $part, 2);
-            $key = trim($cookieParts[0]);
+            $cookieParts = \explode('=', $part, 2);
+            $key = \trim($cookieParts[0]);
             $value = isset($cookieParts[1])
-                ? trim($cookieParts[1], " \n\r\t\0\x0B")
+                ? \trim($cookieParts[1], " \n\r\t\0\x0B")
                 : true;
 
             // Only check for non-cookies when cookies have been found
-            if (empty($data['Name'])) {
+            if (!isset($data['Name'])) {
                 $data['Name'] = $key;
                 $data['Value'] = $value;
             } else {
-                foreach (array_keys(self::$defaults) as $search) {
-                    if (!strcasecmp($search, $key)) {
-                        $data[$search] = $value;
+                foreach (\array_keys(self::$defaults) as $search) {
+                    if (!\strcasecmp($search, $key)) {
+                        if ($search === 'Max-Age') {
+                            if (is_numeric($value)) {
+                                $data[$search] = (int) $value;
+                            }
+                        } else {
+                            $data[$search] = $value;
+                        }
                         continue 2;
                     }
                 }
@@ -71,39 +80,81 @@ class SetCookie
      */
     public function __construct(array $data = [])
     {
-        $this->data = array_replace(self::$defaults, $data);
+        $this->data = self::$defaults;
+
+        if (isset($data['Name'])) {
+            $this->setName($data['Name']);
+        }
+
+        if (isset($data['Value'])) {
+            $this->setValue($data['Value']);
+        }
+
+        if (isset($data['Domain'])) {
+            $this->setDomain($data['Domain']);
+        }
+
+        if (isset($data['Path'])) {
+            $this->setPath($data['Path']);
+        }
+
+        if (isset($data['Max-Age'])) {
+            $this->setMaxAge($data['Max-Age']);
+        }
+
+        if (isset($data['Expires'])) {
+            $this->setExpires($data['Expires']);
+        }
+
+        if (isset($data['Secure'])) {
+            $this->setSecure($data['Secure']);
+        }
+
+        if (isset($data['Discard'])) {
+            $this->setDiscard($data['Discard']);
+        }
+
+        if (isset($data['HttpOnly'])) {
+            $this->setHttpOnly($data['HttpOnly']);
+        }
+
+        // Set the remaining values that don't have extra validation logic
+        foreach (array_diff(array_keys($data), array_keys(self::$defaults)) as $key) {
+            $this->data[$key] = $data[$key];
+        }
+
         // Extract the Expires value and turn it into a UNIX timestamp if needed
         if (!$this->getExpires() && $this->getMaxAge()) {
             // Calculate the Expires date
-            $this->setExpires(time() + $this->getMaxAge());
-        } elseif ($this->getExpires() && !is_numeric($this->getExpires())) {
-            $this->setExpires($this->getExpires());
+            $this->setExpires(\time() + $this->getMaxAge());
+        } elseif (null !== ($expires = $this->getExpires()) && !\is_numeric($expires)) {
+            $this->setExpires($expires);
         }
     }
 
     public function __toString()
     {
-        $str = $this->data['Name'] . '=' . $this->data['Value'] . '; ';
+        $str = $this->data['Name'] . '=' . ($this->data['Value'] ?? '') . '; ';
         foreach ($this->data as $k => $v) {
             if ($k !== 'Name' && $k !== 'Value' && $v !== null && $v !== false) {
                 if ($k === 'Expires') {
-                    $str .= 'Expires=' . gmdate('D, d M Y H:i:s \G\M\T', $v) . '; ';
+                    $str .= 'Expires=' . \gmdate('D, d M Y H:i:s \G\M\T', $v) . '; ';
                 } else {
                     $str .= ($v === true ? $k : "{$k}={$v}") . '; ';
                 }
             }
         }
 
-        return rtrim($str, '; ');
+        return \rtrim($str, '; ');
     }
 
-    public function toArray()
+    public function toArray(): array
     {
         return $this->data;
     }
 
     /**
-     * Get the cookie name
+     * Get the cookie name.
      *
      * @return string
      */
@@ -113,19 +164,23 @@ class SetCookie
     }
 
     /**
-     * Set the cookie name
+     * Set the cookie name.
      *
      * @param string $name Cookie name
      */
-    public function setName($name)
+    public function setName($name): void
     {
-        $this->data['Name'] = $name;
+        if (!is_string($name)) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['Name'] = (string) $name;
     }
 
     /**
-     * Get the cookie value
+     * Get the cookie value.
      *
-     * @return string
+     * @return string|null
      */
     public function getValue()
     {
@@ -133,17 +188,21 @@ class SetCookie
     }
 
     /**
-     * Set the cookie value
+     * Set the cookie value.
      *
      * @param string $value Cookie value
      */
-    public function setValue($value)
+    public function setValue($value): void
     {
-        $this->data['Value'] = $value;
+        if (!is_string($value)) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['Value'] = (string) $value;
     }
 
     /**
-     * Get the domain
+     * Get the domain.
      *
      * @return string|null
      */
@@ -153,17 +212,21 @@ class SetCookie
     }
 
     /**
-     * Set the domain of the cookie
+     * Set the domain of the cookie.
      *
-     * @param string $domain
+     * @param string|null $domain
      */
-    public function setDomain($domain)
+    public function setDomain($domain): void
     {
-        $this->data['Domain'] = $domain;
+        if (!is_string($domain) && null !== $domain) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string or null to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['Domain'] = null === $domain ? null : (string) $domain;
     }
 
     /**
-     * Get the path
+     * Get the path.
      *
      * @return string
      */
@@ -173,39 +236,47 @@ class SetCookie
     }
 
     /**
-     * Set the path of the cookie
+     * Set the path of the cookie.
      *
      * @param string $path Path of the cookie
      */
-    public function setPath($path)
+    public function setPath($path): void
     {
-        $this->data['Path'] = $path;
+        if (!is_string($path)) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['Path'] = (string) $path;
     }
 
     /**
-     * Maximum lifetime of the cookie in seconds
+     * Maximum lifetime of the cookie in seconds.
      *
      * @return int|null
      */
     public function getMaxAge()
     {
-        return $this->data['Max-Age'];
+        return null === $this->data['Max-Age'] ? null : (int) $this->data['Max-Age'];
     }
 
     /**
-     * Set the max-age of the cookie
+     * Set the max-age of the cookie.
      *
-     * @param int $maxAge Max age of the cookie in seconds
+     * @param int|null $maxAge Max age of the cookie in seconds
      */
-    public function setMaxAge($maxAge)
+    public function setMaxAge($maxAge): void
     {
-        $this->data['Max-Age'] = $maxAge;
+        if (!is_int($maxAge) && null !== $maxAge) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing an int or null to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['Max-Age'] = $maxAge === null ? null : (int) $maxAge;
     }
 
     /**
-     * The UNIX timestamp when the cookie Expires
+     * The UNIX timestamp when the cookie Expires.
      *
-     * @return mixed
+     * @return string|int|null
      */
     public function getExpires()
     {
@@ -213,21 +284,23 @@ class SetCookie
     }
 
     /**
-     * Set the unix timestamp for which the cookie will expire
+     * Set the unix timestamp for which the cookie will expire.
      *
-     * @param int $timestamp Unix timestamp
+     * @param int|string|null $timestamp Unix timestamp or any English textual datetime description.
      */
-    public function setExpires($timestamp)
+    public function setExpires($timestamp): void
     {
-        $this->data['Expires'] = is_numeric($timestamp)
-            ? (int) $timestamp
-            : strtotime($timestamp);
+        if (!is_int($timestamp) && !is_string($timestamp) && null !== $timestamp) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing an int, string or null to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['Expires'] = null === $timestamp ? null : (\is_numeric($timestamp) ? (int) $timestamp : \strtotime((string) $timestamp));
     }
 
     /**
-     * Get whether or not this is a secure cookie
+     * Get whether or not this is a secure cookie.
      *
-     * @return bool|null
+     * @return bool
      */
     public function getSecure()
     {
@@ -235,17 +308,21 @@ class SetCookie
     }
 
     /**
-     * Set whether or not the cookie is secure
+     * Set whether or not the cookie is secure.
      *
      * @param bool $secure Set to true or false if secure
      */
-    public function setSecure($secure)
+    public function setSecure($secure): void
     {
-        $this->data['Secure'] = $secure;
+        if (!is_bool($secure)) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a bool to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['Secure'] = (bool) $secure;
     }
 
     /**
-     * Get whether or not this is a session cookie
+     * Get whether or not this is a session cookie.
      *
      * @return bool|null
      */
@@ -255,17 +332,21 @@ class SetCookie
     }
 
     /**
-     * Set whether or not this is a session cookie
+     * Set whether or not this is a session cookie.
      *
      * @param bool $discard Set to true or false if this is a session cookie
      */
-    public function setDiscard($discard)
+    public function setDiscard($discard): void
     {
-        $this->data['Discard'] = $discard;
+        if (!is_bool($discard)) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a bool to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['Discard'] = (bool) $discard;
     }
 
     /**
-     * Get whether or not this is an HTTP only cookie
+     * Get whether or not this is an HTTP only cookie.
      *
      * @return bool
      */
@@ -275,13 +356,17 @@ class SetCookie
     }
 
     /**
-     * Set whether or not this is an HTTP only cookie
+     * Set whether or not this is an HTTP only cookie.
      *
      * @param bool $httpOnly Set to true or false if this is HTTP only
      */
-    public function setHttpOnly($httpOnly)
+    public function setHttpOnly($httpOnly): void
     {
-        $this->data['HttpOnly'] = $httpOnly;
+        if (!is_bool($httpOnly)) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a bool to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
+        $this->data['HttpOnly'] = (bool) $httpOnly;
     }
 
     /**
@@ -298,10 +383,8 @@ class SetCookie
      *   path is a %x2F ("/") character.
      *
      * @param string $requestPath Path to check against
-     *
-     * @return bool
      */
-    public function matchesPath($requestPath)
+    public function matchesPath(string $requestPath): bool
     {
         $cookiePath = $this->getPath();
 
@@ -311,27 +394,25 @@ class SetCookie
         }
 
         // Ensure that the cookie-path is a prefix of the request path.
-        if (0 !== strpos($requestPath, $cookiePath)) {
+        if (0 !== \strpos($requestPath, $cookiePath)) {
             return false;
         }
 
         // Match if the last character of the cookie-path is "/"
-        if (substr($cookiePath, -1, 1) === '/') {
+        if (\substr($cookiePath, -1, 1) === '/') {
             return true;
         }
 
         // Match if the first character not included in cookie path is "/"
-        return substr($requestPath, strlen($cookiePath), 1) === '/';
+        return \substr($requestPath, \strlen($cookiePath), 1) === '/';
     }
 
     /**
-     * Check if the cookie matches a domain value
+     * Check if the cookie matches a domain value.
      *
      * @param string $domain Domain to check against
-     *
-     * @return bool
      */
-    public function matchesDomain($domain)
+    public function matchesDomain(string $domain): bool
     {
         $cookieDomain = $this->getDomain();
         if (null === $cookieDomain) {
@@ -339,10 +420,10 @@ class SetCookie
         }
 
         // Remove the leading '.' as per spec in RFC 6265.
-        // http://tools.ietf.org/html/rfc6265#section-5.2.3
-        $cookieDomain = ltrim(strtolower($cookieDomain), '.');
+        // https://tools.ietf.org/html/rfc6265#section-5.2.3
+        $cookieDomain = \ltrim(\strtolower($cookieDomain), '.');
 
-        $domain = strtolower($domain);
+        $domain = \strtolower($domain);
 
         // Domain not set or exact match.
         if ('' === $cookieDomain || $domain === $cookieDomain) {
@@ -350,39 +431,36 @@ class SetCookie
         }
 
         // Matching the subdomain according to RFC 6265.
-        // http://tools.ietf.org/html/rfc6265#section-5.1.3
-        if (filter_var($domain, FILTER_VALIDATE_IP)) {
+        // https://tools.ietf.org/html/rfc6265#section-5.1.3
+        if (\filter_var($domain, \FILTER_VALIDATE_IP)) {
             return false;
         }
 
-        return (bool) preg_match('/\.' . preg_quote($cookieDomain, '/') . '$/', $domain);
+        return (bool) \preg_match('/\.' . \preg_quote($cookieDomain, '/') . '$/', $domain);
     }
 
     /**
-     * Check if the cookie is expired
-     *
-     * @return bool
+     * Check if the cookie is expired.
      */
-    public function isExpired()
+    public function isExpired(): bool
     {
-        return $this->getExpires() !== null && time() > $this->getExpires();
+        return $this->getExpires() !== null && \time() > $this->getExpires();
     }
 
     /**
-     * Check if the cookie is valid according to RFC 6265
+     * Check if the cookie is valid according to RFC 6265.
      *
      * @return bool|string Returns true if valid or an error message if invalid
      */
     public function validate()
     {
-        // Names must not be empty, but can be 0
         $name = $this->getName();
-        if (empty($name) && !is_numeric($name)) {
+        if ($name === '') {
             return 'The cookie name must not be empty';
         }
 
         // Check if any of the invalid characters are present in the cookie name
-        if (preg_match(
+        if (\preg_match(
             '/[\x00-\x20\x22\x28-\x29\x2c\x2f\x3a-\x40\x5c\x7b\x7d\x7f]/',
             $name
         )) {
@@ -391,17 +469,17 @@ class SetCookie
                 . 'following characters: ()<>@,;:\"/?={}';
         }
 
-        // Value must not be empty, but can be 0
+        // Value must not be null. 0 and empty string are valid. Empty strings
+        // are technically against RFC 6265, but known to happen in the wild.
         $value = $this->getValue();
-        if (empty($value) && !is_numeric($value)) {
+        if ($value === null) {
             return 'The cookie value must not be empty';
         }
 
-        // Domains must not be empty, but can be 0
-        // A "0" is not a valid internet domain, but may be used as server name
-        // in a private network.
+        // Domains must not be empty, but can be 0. "0" is not a valid internet
+        // domain, but may be used as server name in a private network.
         $domain = $this->getDomain();
-        if (empty($domain) && !is_numeric($domain)) {
+        if ($domain === null || $domain === '') {
             return 'The cookie domain must not be empty';
         }
 
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php
index 427d896fb2f2a715d6c797b87ec6159ddf8453bc..a80956c9d2a0368a3de8c114b357f2dd7f9e338a 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Exception;
 
 use Psr\Http\Message\RequestInterface;
@@ -10,18 +11,29 @@ use Psr\Http\Message\ResponseInterface;
 class BadResponseException extends RequestException
 {
     public function __construct(
-        $message,
+        string $message,
         RequestInterface $request,
-        ResponseInterface $response = null,
-        \Exception $previous = null,
+        ResponseInterface $response,
+        \Throwable $previous = null,
         array $handlerContext = []
     ) {
-        if (null === $response) {
-            @trigger_error(
-                'Instantiating the ' . __CLASS__ . ' class without a Response is deprecated since version 6.3 and will be removed in 7.0.',
-                E_USER_DEPRECATED
-            );
-        }
         parent::__construct($message, $request, $response, $previous, $handlerContext);
     }
+
+    /**
+     * Current exception and the ones that extend it will always have a response.
+     */
+    public function hasResponse(): bool
+    {
+        return true;
+    }
+
+    /**
+     * This function narrows the return type from the parent class and does not allow it to be nullable.
+     */
+    public function getResponse(): ResponseInterface
+    {
+        /** @var ResponseInterface */
+        return parent::getResponse();
+    }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
index 4cfd393cc1a48c227f450caaf6f5eeac9bb7e214..12fa5e3518c4487f13d20fd7622c2f81583852d3 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Exception;
 
 /**
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php
index d33b0cc19d6f808fd16ad5f24982348b219cb999..e1a31519cfa2d6f36a8e5f807285bf6c51195934 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php
@@ -1,6 +1,8 @@
 <?php
+
 namespace GuzzleHttp\Exception;
 
+use Psr\Http\Client\NetworkExceptionInterface;
 use Psr\Http\Message\RequestInterface;
 
 /**
@@ -8,30 +10,47 @@ use Psr\Http\Message\RequestInterface;
  *
  * Note that no response is present for a ConnectException
  */
-class ConnectException extends RequestException
+class ConnectException extends TransferException implements NetworkExceptionInterface
 {
+    /**
+     * @var RequestInterface
+     */
+    private $request;
+
+    /**
+     * @var array
+     */
+    private $handlerContext;
+
     public function __construct(
-        $message,
+        string $message,
         RequestInterface $request,
-        \Exception $previous = null,
+        \Throwable $previous = null,
         array $handlerContext = []
     ) {
-        parent::__construct($message, $request, null, $previous, $handlerContext);
+        parent::__construct($message, 0, $previous);
+        $this->request = $request;
+        $this->handlerContext = $handlerContext;
     }
 
     /**
-     * @return null
+     * Get the request that caused the exception
      */
-    public function getResponse()
+    public function getRequest(): RequestInterface
     {
-        return null;
+        return $this->request;
     }
 
     /**
-     * @return bool
+     * Get contextual information about the error from the underlying handler.
+     *
+     * The contents of this array will vary depending on which handler you are
+     * using. It may also be just an empty array. Relying on this data will
+     * couple you to a specific handler, but can give more debug information
+     * when needed.
      */
-    public function hasResponse()
+    public function getHandlerContext(): array
     {
-        return false;
+        return $this->handlerContext;
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
index 27b2722b0b6716d131b74631359cda86d3dcbbdb..fa3ed6998c2d16fb7a4194c9fbae2764909de5f2 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
@@ -1,23 +1,9 @@
 <?php
+
 namespace GuzzleHttp\Exception;
 
-use Throwable;
+use Psr\Http\Client\ClientExceptionInterface;
 
-if (interface_exists(Throwable::class)) {
-    interface GuzzleException extends Throwable
-    {
-    }
-} else {
-    /**
-     * @method string getMessage()
-     * @method \Throwable|null getPrevious()
-     * @method mixed getCode()
-     * @method string getFile()
-     * @method int getLine()
-     * @method array getTrace()
-     * @method string getTraceAsString()
-     */
-    interface GuzzleException
-    {
-    }
+interface GuzzleException extends ClientExceptionInterface
+{
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
index 12dd081eb6c2b99f9561e5bb37ffd51bd968ea7f..c2d0a9cccfc5151114033c751754de01de298aa0 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
@@ -1,7 +1,10 @@
 <?php
+
 namespace GuzzleHttp\Exception;
 
-use GuzzleHttp\Promise\PromiseInterface;
+use GuzzleHttp\BodySummarizer;
+use GuzzleHttp\BodySummarizerInterface;
+use Psr\Http\Client\RequestExceptionInterface;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\UriInterface;
@@ -9,28 +12,32 @@ use Psr\Http\Message\UriInterface;
 /**
  * HTTP Request exception
  */
-class RequestException extends TransferException
+class RequestException extends TransferException implements RequestExceptionInterface
 {
-    /** @var RequestInterface */
+    /**
+     * @var RequestInterface
+     */
     private $request;
 
-    /** @var ResponseInterface|null */
+    /**
+     * @var ResponseInterface|null
+     */
     private $response;
 
-    /** @var array */
+    /**
+     * @var array
+     */
     private $handlerContext;
 
     public function __construct(
-        $message,
+        string $message,
         RequestInterface $request,
         ResponseInterface $response = null,
-        \Exception $previous = null,
+        \Throwable $previous = null,
         array $handlerContext = []
     ) {
         // Set the code of the exception if the response is set and not future.
-        $code = $response && !($response instanceof PromiseInterface)
-            ? $response->getStatusCode()
-            : 0;
+        $code = $response ? $response->getStatusCode() : 0;
         parent::__construct($message, $code, $previous);
         $this->request = $request;
         $this->response = $response;
@@ -39,46 +46,39 @@ class RequestException extends TransferException
 
     /**
      * Wrap non-RequestExceptions with a RequestException
-     *
-     * @param RequestInterface $request
-     * @param \Exception       $e
-     *
-     * @return RequestException
      */
-    public static function wrapException(RequestInterface $request, \Exception $e)
+    public static function wrapException(RequestInterface $request, \Throwable $e): RequestException
     {
-        return $e instanceof RequestException
-            ? $e
-            : new RequestException($e->getMessage(), $request, null, $e);
+        return $e instanceof RequestException ? $e : new RequestException($e->getMessage(), $request, null, $e);
     }
 
     /**
      * Factory method to create a new exception with a normalized error message
      *
-     * @param RequestInterface  $request  Request
-     * @param ResponseInterface $response Response received
-     * @param \Exception        $previous Previous exception
-     * @param array             $ctx      Optional handler context.
-     *
-     * @return self
+     * @param RequestInterface             $request        Request sent
+     * @param ResponseInterface            $response       Response received
+     * @param \Throwable|null              $previous       Previous exception
+     * @param array                        $handlerContext Optional handler context
+     * @param BodySummarizerInterface|null $bodySummarizer Optional body summarizer
      */
     public static function create(
         RequestInterface $request,
         ResponseInterface $response = null,
-        \Exception $previous = null,
-        array $ctx = []
-    ) {
+        \Throwable $previous = null,
+        array $handlerContext = [],
+        BodySummarizerInterface $bodySummarizer = null
+    ): self {
         if (!$response) {
             return new self(
                 'Error completing request',
                 $request,
                 null,
                 $previous,
-                $ctx
+                $handlerContext
             );
         }
 
-        $level = (int) floor($response->getStatusCode() / 100);
+        $level = (int) \floor($response->getStatusCode() / 100);
         if ($level === 4) {
             $label = 'Client error';
             $className = ClientException::class;
@@ -95,51 +95,33 @@ class RequestException extends TransferException
 
         // Client Error: `GET /` resulted in a `404 Not Found` response:
         // <html> ... (truncated)
-        $message = sprintf(
+        $message = \sprintf(
             '%s: `%s %s` resulted in a `%s %s` response',
             $label,
             $request->getMethod(),
-            $uri,
+            $uri->__toString(),
             $response->getStatusCode(),
             $response->getReasonPhrase()
         );
 
-        $summary = static::getResponseBodySummary($response);
+        $summary = ($bodySummarizer ?? new BodySummarizer())->summarize($response);
 
         if ($summary !== null) {
             $message .= ":\n{$summary}\n";
         }
 
-        return new $className($message, $request, $response, $previous, $ctx);
-    }
-
-    /**
-     * Get a short summary of the response
-     *
-     * Will return `null` if the response is not printable.
-     *
-     * @param ResponseInterface $response
-     *
-     * @return string|null
-     */
-    public static function getResponseBodySummary(ResponseInterface $response)
-    {
-        return \GuzzleHttp\Psr7\get_message_body_summary($response);
+        return new $className($message, $request, $response, $previous, $handlerContext);
     }
 
     /**
      * Obfuscates URI if there is a username and a password present
-     *
-     * @param UriInterface $uri
-     *
-     * @return UriInterface
      */
-    private static function obfuscateUri(UriInterface $uri)
+    private static function obfuscateUri(UriInterface $uri): UriInterface
     {
         $userInfo = $uri->getUserInfo();
 
-        if (false !== ($pos = strpos($userInfo, ':'))) {
-            return $uri->withUserInfo(substr($userInfo, 0, $pos), '***');
+        if (false !== ($pos = \strpos($userInfo, ':'))) {
+            return $uri->withUserInfo(\substr($userInfo, 0, $pos), '***');
         }
 
         return $uri;
@@ -147,30 +129,24 @@ class RequestException extends TransferException
 
     /**
      * Get the request that caused the exception
-     *
-     * @return RequestInterface
      */
-    public function getRequest()
+    public function getRequest(): RequestInterface
     {
         return $this->request;
     }
 
     /**
      * Get the associated response
-     *
-     * @return ResponseInterface|null
      */
-    public function getResponse()
+    public function getResponse(): ?ResponseInterface
     {
         return $this->response;
     }
 
     /**
      * Check if a response was received
-     *
-     * @return bool
      */
-    public function hasResponse()
+    public function hasResponse(): bool
     {
         return $this->response !== null;
     }
@@ -182,10 +158,8 @@ class RequestException extends TransferException
      * using. It may also be just an empty array. Relying on this data will
      * couple you to a specific handler, but can give more debug information
      * when needed.
-     *
-     * @return array
      */
-    public function getHandlerContext()
+    public function getHandlerContext(): array
     {
         return $this->handlerContext;
     }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php
deleted file mode 100644
index a77c28926cf94c4232feeda5d3062b87b15dce53..0000000000000000000000000000000000000000
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-namespace GuzzleHttp\Exception;
-
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Exception thrown when a seek fails on a stream.
- */
-class SeekException extends \RuntimeException implements GuzzleException
-{
-    private $stream;
-
-    public function __construct(StreamInterface $stream, $pos = 0, $msg = '')
-    {
-        $this->stream = $stream;
-        $msg = $msg ?: 'Could not seek the stream to position ' . $pos;
-        parent::__construct($msg);
-    }
-
-    /**
-     * @return StreamInterface
-     */
-    public function getStream()
-    {
-        return $this->stream;
-    }
-}
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
index 127094c149959a8c95be188f699bc3e5219e0e19..8055e067c0a36bee35978008d81920b4d37d0834 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Exception;
 
 /**
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
index fff05251d502c010be4ad114381f8b5aa179d37f..fad3a57cfdeafce68ffeea2350bba62e16bc1913 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Exception;
 
 class TooManyRedirectsException extends RequestException
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
index 7c11db3abc1d8b5c5ec60c9f9b9d4fa9d5603817..5076336080a88acd6c0031911d513055e484b9b0 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Exception;
 
 class TransferException extends \RuntimeException implements GuzzleException
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
index 4a28a96ebce6dbd41d31c2e24c1216052644344c..95375e30e734efc5c59f3a875cfbed779ddb3ed7 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
@@ -1,37 +1,50 @@
 <?php
+
 namespace GuzzleHttp\Handler;
 
 use GuzzleHttp\Exception\ConnectException;
 use GuzzleHttp\Exception\RequestException;
+use GuzzleHttp\Promise as P;
 use GuzzleHttp\Promise\FulfilledPromise;
-use GuzzleHttp\Psr7;
+use GuzzleHttp\Promise\PromiseInterface;
 use GuzzleHttp\Psr7\LazyOpenStream;
 use GuzzleHttp\TransferStats;
+use GuzzleHttp\Utils;
 use Psr\Http\Message\RequestInterface;
 
 /**
  * Creates curl resources from a request
+ *
+ * @final
  */
 class CurlFactory implements CurlFactoryInterface
 {
-    const CURL_VERSION_STR = 'curl_version';
-    const LOW_CURL_VERSION_NUMBER = '7.21.2';
+    public const CURL_VERSION_STR = 'curl_version';
+
+    /**
+     * @deprecated
+     */
+    public const LOW_CURL_VERSION_NUMBER = '7.21.2';
 
-    /** @var array */
+    /**
+     * @var resource[]|\CurlHandle[]
+     */
     private $handles = [];
 
-    /** @var int Total number of idle handles to keep in cache */
+    /**
+     * @var int Total number of idle handles to keep in cache
+     */
     private $maxHandles;
 
     /**
      * @param int $maxHandles Maximum number of idle handles.
      */
-    public function __construct($maxHandles)
+    public function __construct(int $maxHandles)
     {
         $this->maxHandles = $maxHandles;
     }
 
-    public function create(RequestInterface $request, array $options)
+    public function create(RequestInterface $request, array $options): EasyHandle
     {
         if (isset($options['curl']['body_as_string'])) {
             $options['_body_as_string'] = $options['curl']['body_as_string'];
@@ -49,35 +62,33 @@ class CurlFactory implements CurlFactoryInterface
 
         // Add handler options from the request configuration options
         if (isset($options['curl'])) {
-            $conf = array_replace($conf, $options['curl']);
+            $conf = \array_replace($conf, $options['curl']);
         }
 
-        $conf[CURLOPT_HEADERFUNCTION] = $this->createHeaderFn($easy);
-        $easy->handle = $this->handles
-            ? array_pop($this->handles)
-            : curl_init();
+        $conf[\CURLOPT_HEADERFUNCTION] = $this->createHeaderFn($easy);
+        $easy->handle = $this->handles ? \array_pop($this->handles) : \curl_init();
         curl_setopt_array($easy->handle, $conf);
 
         return $easy;
     }
 
-    public function release(EasyHandle $easy)
+    public function release(EasyHandle $easy): void
     {
         $resource = $easy->handle;
         unset($easy->handle);
 
-        if (count($this->handles) >= $this->maxHandles) {
-            curl_close($resource);
+        if (\count($this->handles) >= $this->maxHandles) {
+            \curl_close($resource);
         } else {
             // Remove all callback functions as they can hold onto references
             // and are not cleaned up by curl_reset. Using curl_setopt_array
             // does not work for some reason, so removing each one
             // individually.
-            curl_setopt($resource, CURLOPT_HEADERFUNCTION, null);
-            curl_setopt($resource, CURLOPT_READFUNCTION, null);
-            curl_setopt($resource, CURLOPT_WRITEFUNCTION, null);
-            curl_setopt($resource, CURLOPT_PROGRESSFUNCTION, null);
-            curl_reset($resource);
+            \curl_setopt($resource, \CURLOPT_HEADERFUNCTION, null);
+            \curl_setopt($resource, \CURLOPT_READFUNCTION, null);
+            \curl_setopt($resource, \CURLOPT_WRITEFUNCTION, null);
+            \curl_setopt($resource, \CURLOPT_PROGRESSFUNCTION, null);
+            \curl_reset($resource);
             $this->handles[] = $resource;
         }
     }
@@ -86,17 +97,11 @@ class CurlFactory implements CurlFactoryInterface
      * Completes a cURL transaction, either returning a response promise or a
      * rejected promise.
      *
-     * @param callable             $handler
-     * @param EasyHandle           $easy
-     * @param CurlFactoryInterface $factory Dictates how the handle is released
-     *
-     * @return \GuzzleHttp\Promise\PromiseInterface
+     * @param callable(RequestInterface, array): PromiseInterface $handler
+     * @param CurlFactoryInterface                                $factory Dictates how the handle is released
      */
-    public static function finish(
-        callable $handler,
-        EasyHandle $easy,
-        CurlFactoryInterface $factory
-    ) {
+    public static function finish(callable $handler, EasyHandle $easy, CurlFactoryInterface $factory): PromiseInterface
+    {
         if (isset($easy->options['on_stats'])) {
             self::invokeStats($easy);
         }
@@ -117,10 +122,10 @@ class CurlFactory implements CurlFactoryInterface
         return new FulfilledPromise($easy->response);
     }
 
-    private static function invokeStats(EasyHandle $easy)
+    private static function invokeStats(EasyHandle $easy): void
     {
-        $curlStats = curl_getinfo($easy->handle);
-        $curlStats['appconnect_time'] = curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME);
+        $curlStats = \curl_getinfo($easy->handle);
+        $curlStats['appconnect_time'] = \curl_getinfo($easy->handle, \CURLINFO_APPCONNECT_TIME);
         $stats = new TransferStats(
             $easy->request,
             $easy->response,
@@ -128,47 +133,57 @@ class CurlFactory implements CurlFactoryInterface
             $easy->errno,
             $curlStats
         );
-        call_user_func($easy->options['on_stats'], $stats);
+        ($easy->options['on_stats'])($stats);
     }
 
-    private static function finishError(
-        callable $handler,
-        EasyHandle $easy,
-        CurlFactoryInterface $factory
-    ) {
+    /**
+     * @param callable(RequestInterface, array): PromiseInterface $handler
+     */
+    private static function finishError(callable $handler, EasyHandle $easy, CurlFactoryInterface $factory): PromiseInterface
+    {
         // Get error information and release the handle to the factory.
         $ctx = [
             'errno' => $easy->errno,
-            'error' => curl_error($easy->handle),
-            'appconnect_time' => curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME),
-        ] + curl_getinfo($easy->handle);
-        $ctx[self::CURL_VERSION_STR] = curl_version()['version'];
+            'error' => \curl_error($easy->handle),
+            'appconnect_time' => \curl_getinfo($easy->handle, \CURLINFO_APPCONNECT_TIME),
+        ] + \curl_getinfo($easy->handle);
+        $ctx[self::CURL_VERSION_STR] = \curl_version()['version'];
         $factory->release($easy);
 
         // Retry when nothing is present or when curl failed to rewind.
-        if (empty($easy->options['_err_message'])
-            && (!$easy->errno || $easy->errno == 65)
-        ) {
+        if (empty($easy->options['_err_message']) && (!$easy->errno || $easy->errno == 65)) {
             return self::retryFailedRewind($handler, $easy, $ctx);
         }
 
         return self::createRejection($easy, $ctx);
     }
 
-    private static function createRejection(EasyHandle $easy, array $ctx)
+    private static function createRejection(EasyHandle $easy, array $ctx): PromiseInterface
     {
         static $connectionErrors = [
-            CURLE_OPERATION_TIMEOUTED  => true,
-            CURLE_COULDNT_RESOLVE_HOST => true,
-            CURLE_COULDNT_CONNECT      => true,
-            CURLE_SSL_CONNECT_ERROR    => true,
-            CURLE_GOT_NOTHING          => true,
+            \CURLE_OPERATION_TIMEOUTED  => true,
+            \CURLE_COULDNT_RESOLVE_HOST => true,
+            \CURLE_COULDNT_CONNECT      => true,
+            \CURLE_SSL_CONNECT_ERROR    => true,
+            \CURLE_GOT_NOTHING          => true,
         ];
 
+        if ($easy->createResponseException) {
+            return P\Create::rejectionFor(
+                new RequestException(
+                    'An error was encountered while creating the response',
+                    $easy->request,
+                    $easy->response,
+                    $easy->createResponseException,
+                    $ctx
+                )
+            );
+        }
+
         // If an exception was encountered during the onHeaders event, then
         // return a rejected promise that wraps that exception.
         if ($easy->onHeadersException) {
-            return \GuzzleHttp\Promise\rejection_for(
+            return P\Create::rejectionFor(
                 new RequestException(
                     'An error was encountered during the on_headers event',
                     $easy->request,
@@ -178,21 +193,16 @@ class CurlFactory implements CurlFactoryInterface
                 )
             );
         }
-        if (version_compare($ctx[self::CURL_VERSION_STR], self::LOW_CURL_VERSION_NUMBER)) {
-            $message = sprintf(
-                'cURL error %s: %s (%s)',
-                $ctx['errno'],
-                $ctx['error'],
-                'see https://curl.haxx.se/libcurl/c/libcurl-errors.html'
-            );
-        } else {
-            $message = sprintf(
-                'cURL error %s: %s (%s) for %s',
-                $ctx['errno'],
-                $ctx['error'],
-                'see https://curl.haxx.se/libcurl/c/libcurl-errors.html',
-                $easy->request->getUri()
-            );
+
+        $message = \sprintf(
+            'cURL error %s: %s (%s)',
+            $ctx['errno'],
+            $ctx['error'],
+            'see https://curl.haxx.se/libcurl/c/libcurl-errors.html'
+        );
+        $uriString = (string) $easy->request->getUri();
+        if ($uriString !== '' && false === \strpos($ctx['error'], $uriString)) {
+            $message .= \sprintf(' for %s', $uriString);
         }
 
         // Create a connection exception if it was a specific error code.
@@ -200,37 +210,40 @@ class CurlFactory implements CurlFactoryInterface
             ? new ConnectException($message, $easy->request, null, $ctx)
             : new RequestException($message, $easy->request, $easy->response, null, $ctx);
 
-        return \GuzzleHttp\Promise\rejection_for($error);
+        return P\Create::rejectionFor($error);
     }
 
-    private function getDefaultConf(EasyHandle $easy)
+    /**
+     * @return array<int|string, mixed>
+     */
+    private function getDefaultConf(EasyHandle $easy): array
     {
         $conf = [
-            '_headers'             => $easy->request->getHeaders(),
-            CURLOPT_CUSTOMREQUEST  => $easy->request->getMethod(),
-            CURLOPT_URL            => (string) $easy->request->getUri()->withFragment(''),
-            CURLOPT_RETURNTRANSFER => false,
-            CURLOPT_HEADER         => false,
-            CURLOPT_CONNECTTIMEOUT => 150,
+            '_headers'              => $easy->request->getHeaders(),
+            \CURLOPT_CUSTOMREQUEST  => $easy->request->getMethod(),
+            \CURLOPT_URL            => (string) $easy->request->getUri()->withFragment(''),
+            \CURLOPT_RETURNTRANSFER => false,
+            \CURLOPT_HEADER         => false,
+            \CURLOPT_CONNECTTIMEOUT => 300,
         ];
 
-        if (defined('CURLOPT_PROTOCOLS')) {
-            $conf[CURLOPT_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS;
+        if (\defined('CURLOPT_PROTOCOLS')) {
+            $conf[\CURLOPT_PROTOCOLS] = \CURLPROTO_HTTP | \CURLPROTO_HTTPS;
         }
 
         $version = $easy->request->getProtocolVersion();
         if ($version == 1.1) {
-            $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_1;
+            $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_1;
         } elseif ($version == 2.0) {
-            $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_2_0;
+            $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_2_0;
         } else {
-            $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_0;
+            $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_0;
         }
 
         return $conf;
     }
 
-    private function applyMethod(EasyHandle $easy, array &$conf)
+    private function applyMethod(EasyHandle $easy, array &$conf): void
     {
         $body = $easy->request->getBody();
         $size = $body->getSize();
@@ -242,22 +255,22 @@ class CurlFactory implements CurlFactoryInterface
 
         $method = $easy->request->getMethod();
         if ($method === 'PUT' || $method === 'POST') {
-            // See http://tools.ietf.org/html/rfc7230#section-3.3.2
+            // See https://tools.ietf.org/html/rfc7230#section-3.3.2
             if (!$easy->request->hasHeader('Content-Length')) {
-                $conf[CURLOPT_HTTPHEADER][] = 'Content-Length: 0';
+                $conf[\CURLOPT_HTTPHEADER][] = 'Content-Length: 0';
             }
         } elseif ($method === 'HEAD') {
-            $conf[CURLOPT_NOBODY] = true;
+            $conf[\CURLOPT_NOBODY] = true;
             unset(
-                $conf[CURLOPT_WRITEFUNCTION],
-                $conf[CURLOPT_READFUNCTION],
-                $conf[CURLOPT_FILE],
-                $conf[CURLOPT_INFILE]
+                $conf[\CURLOPT_WRITEFUNCTION],
+                $conf[\CURLOPT_READFUNCTION],
+                $conf[\CURLOPT_FILE],
+                $conf[\CURLOPT_INFILE]
             );
         }
     }
 
-    private function applyBody(RequestInterface $request, array $options, array &$conf)
+    private function applyBody(RequestInterface $request, array $options, array &$conf): void
     {
         $size = $request->hasHeader('Content-Length')
             ? (int) $request->getHeaderLine('Content-Length')
@@ -265,40 +278,38 @@ class CurlFactory implements CurlFactoryInterface
 
         // Send the body as a string if the size is less than 1MB OR if the
         // [curl][body_as_string] request value is set.
-        if (($size !== null && $size < 1000000) ||
-            !empty($options['_body_as_string'])
-        ) {
-            $conf[CURLOPT_POSTFIELDS] = (string) $request->getBody();
+        if (($size !== null && $size < 1000000) || !empty($options['_body_as_string'])) {
+            $conf[\CURLOPT_POSTFIELDS] = (string) $request->getBody();
             // Don't duplicate the Content-Length header
             $this->removeHeader('Content-Length', $conf);
             $this->removeHeader('Transfer-Encoding', $conf);
         } else {
-            $conf[CURLOPT_UPLOAD] = true;
+            $conf[\CURLOPT_UPLOAD] = true;
             if ($size !== null) {
-                $conf[CURLOPT_INFILESIZE] = $size;
+                $conf[\CURLOPT_INFILESIZE] = $size;
                 $this->removeHeader('Content-Length', $conf);
             }
             $body = $request->getBody();
             if ($body->isSeekable()) {
                 $body->rewind();
             }
-            $conf[CURLOPT_READFUNCTION] = function ($ch, $fd, $length) use ($body) {
+            $conf[\CURLOPT_READFUNCTION] = static function ($ch, $fd, $length) use ($body) {
                 return $body->read($length);
             };
         }
 
         // If the Expect header is not present, prevent curl from adding it
         if (!$request->hasHeader('Expect')) {
-            $conf[CURLOPT_HTTPHEADER][] = 'Expect:';
+            $conf[\CURLOPT_HTTPHEADER][] = 'Expect:';
         }
 
         // cURL sometimes adds a content-type by default. Prevent this.
         if (!$request->hasHeader('Content-Type')) {
-            $conf[CURLOPT_HTTPHEADER][] = 'Content-Type:';
+            $conf[\CURLOPT_HTTPHEADER][] = 'Content-Type:';
         }
     }
 
-    private function applyHeaders(EasyHandle $easy, array &$conf)
+    private function applyHeaders(EasyHandle $easy, array &$conf): void
     {
         foreach ($conf['_headers'] as $name => $values) {
             foreach ($values as $value) {
@@ -306,16 +317,16 @@ class CurlFactory implements CurlFactoryInterface
                 if ($value === '') {
                     // cURL requires a special format for empty headers.
                     // See https://github.com/guzzle/guzzle/issues/1882 for more details.
-                    $conf[CURLOPT_HTTPHEADER][] = "$name;";
+                    $conf[\CURLOPT_HTTPHEADER][] = "$name;";
                 } else {
-                    $conf[CURLOPT_HTTPHEADER][] = "$name: $value";
+                    $conf[\CURLOPT_HTTPHEADER][] = "$name: $value";
                 }
             }
         }
 
         // Remove the Accept header if one was not set
         if (!$easy->request->hasHeader('Accept')) {
-            $conf[CURLOPT_HTTPHEADER][] = 'Accept:';
+            $conf[\CURLOPT_HTTPHEADER][] = 'Accept:';
         }
     }
 
@@ -325,174 +336,197 @@ class CurlFactory implements CurlFactoryInterface
      * @param string $name    Case-insensitive header to remove
      * @param array  $options Array of options to modify
      */
-    private function removeHeader($name, array &$options)
+    private function removeHeader(string $name, array &$options): void
     {
-        foreach (array_keys($options['_headers']) as $key) {
-            if (!strcasecmp($key, $name)) {
+        foreach (\array_keys($options['_headers']) as $key) {
+            if (!\strcasecmp($key, $name)) {
                 unset($options['_headers'][$key]);
                 return;
             }
         }
     }
 
-    private function applyHandlerOptions(EasyHandle $easy, array &$conf)
+    private function applyHandlerOptions(EasyHandle $easy, array &$conf): void
     {
         $options = $easy->options;
         if (isset($options['verify'])) {
             if ($options['verify'] === false) {
-                unset($conf[CURLOPT_CAINFO]);
-                $conf[CURLOPT_SSL_VERIFYHOST] = 0;
-                $conf[CURLOPT_SSL_VERIFYPEER] = false;
+                unset($conf[\CURLOPT_CAINFO]);
+                $conf[\CURLOPT_SSL_VERIFYHOST] = 0;
+                $conf[\CURLOPT_SSL_VERIFYPEER] = false;
             } else {
-                $conf[CURLOPT_SSL_VERIFYHOST] = 2;
-                $conf[CURLOPT_SSL_VERIFYPEER] = true;
-                if (is_string($options['verify'])) {
+                $conf[\CURLOPT_SSL_VERIFYHOST] = 2;
+                $conf[\CURLOPT_SSL_VERIFYPEER] = true;
+                if (\is_string($options['verify'])) {
                     // Throw an error if the file/folder/link path is not valid or doesn't exist.
-                    if (!file_exists($options['verify'])) {
-                        throw new \InvalidArgumentException(
-                            "SSL CA bundle not found: {$options['verify']}"
-                        );
+                    if (!\file_exists($options['verify'])) {
+                        throw new \InvalidArgumentException("SSL CA bundle not found: {$options['verify']}");
                     }
                     // If it's a directory or a link to a directory use CURLOPT_CAPATH.
                     // If not, it's probably a file, or a link to a file, so use CURLOPT_CAINFO.
-                    if (is_dir($options['verify']) ||
-                        (is_link($options['verify']) && is_dir(readlink($options['verify'])))) {
-                        $conf[CURLOPT_CAPATH] = $options['verify'];
+                    if (
+                        \is_dir($options['verify']) ||
+                        (
+                            \is_link($options['verify']) === true &&
+                            ($verifyLink = \readlink($options['verify'])) !== false &&
+                            \is_dir($verifyLink)
+                        )
+                    ) {
+                        $conf[\CURLOPT_CAPATH] = $options['verify'];
                     } else {
-                        $conf[CURLOPT_CAINFO] = $options['verify'];
+                        $conf[\CURLOPT_CAINFO] = $options['verify'];
                     }
                 }
             }
         }
 
-        if (!empty($options['decode_content'])) {
+        if (!isset($options['curl'][\CURLOPT_ENCODING]) && !empty($options['decode_content'])) {
             $accept = $easy->request->getHeaderLine('Accept-Encoding');
             if ($accept) {
-                $conf[CURLOPT_ENCODING] = $accept;
+                $conf[\CURLOPT_ENCODING] = $accept;
             } else {
-                $conf[CURLOPT_ENCODING] = '';
-                // Don't let curl send the header over the wire
-                $conf[CURLOPT_HTTPHEADER][] = 'Accept-Encoding:';
+                // The empty string enables all available decoders and implicitly
+                // sets a matching 'Accept-Encoding' header.
+                $conf[\CURLOPT_ENCODING] = '';
+                // But as the user did not specify any acceptable encodings we need
+                // to overwrite this implicit header with an empty one.
+                $conf[\CURLOPT_HTTPHEADER][] = 'Accept-Encoding:';
             }
         }
 
-        if (isset($options['sink'])) {
-            $sink = $options['sink'];
-            if (!is_string($sink)) {
-                $sink = \GuzzleHttp\Psr7\stream_for($sink);
-            } elseif (!is_dir(dirname($sink))) {
-                // Ensure that the directory exists before failing in curl.
-                throw new \RuntimeException(sprintf(
-                    'Directory %s does not exist for sink value of %s',
-                    dirname($sink),
-                    $sink
-                ));
-            } else {
-                $sink = new LazyOpenStream($sink, 'w+');
-            }
-            $easy->sink = $sink;
-            $conf[CURLOPT_WRITEFUNCTION] = function ($ch, $write) use ($sink) {
-                return $sink->write($write);
-            };
-        } else {
+        if (!isset($options['sink'])) {
             // Use a default temp stream if no sink was set.
-            $conf[CURLOPT_FILE] = fopen('php://temp', 'w+');
-            $easy->sink = Psr7\stream_for($conf[CURLOPT_FILE]);
+            $options['sink'] = \GuzzleHttp\Psr7\Utils::tryFopen('php://temp', 'w+');
+        }
+        $sink = $options['sink'];
+        if (!\is_string($sink)) {
+            $sink = \GuzzleHttp\Psr7\Utils::streamFor($sink);
+        } elseif (!\is_dir(\dirname($sink))) {
+            // Ensure that the directory exists before failing in curl.
+            throw new \RuntimeException(\sprintf('Directory %s does not exist for sink value of %s', \dirname($sink), $sink));
+        } else {
+            $sink = new LazyOpenStream($sink, 'w+');
         }
+        $easy->sink = $sink;
+        $conf[\CURLOPT_WRITEFUNCTION] = static function ($ch, $write) use ($sink): int {
+            return $sink->write($write);
+        };
+
         $timeoutRequiresNoSignal = false;
         if (isset($options['timeout'])) {
             $timeoutRequiresNoSignal |= $options['timeout'] < 1;
-            $conf[CURLOPT_TIMEOUT_MS] = $options['timeout'] * 1000;
+            $conf[\CURLOPT_TIMEOUT_MS] = $options['timeout'] * 1000;
         }
 
         // CURL default value is CURL_IPRESOLVE_WHATEVER
         if (isset($options['force_ip_resolve'])) {
             if ('v4' === $options['force_ip_resolve']) {
-                $conf[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4;
+                $conf[\CURLOPT_IPRESOLVE] = \CURL_IPRESOLVE_V4;
             } elseif ('v6' === $options['force_ip_resolve']) {
-                $conf[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V6;
+                $conf[\CURLOPT_IPRESOLVE] = \CURL_IPRESOLVE_V6;
             }
         }
 
         if (isset($options['connect_timeout'])) {
             $timeoutRequiresNoSignal |= $options['connect_timeout'] < 1;
-            $conf[CURLOPT_CONNECTTIMEOUT_MS] = $options['connect_timeout'] * 1000;
+            $conf[\CURLOPT_CONNECTTIMEOUT_MS] = $options['connect_timeout'] * 1000;
         }
 
-        if ($timeoutRequiresNoSignal && strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
-            $conf[CURLOPT_NOSIGNAL] = true;
+        if ($timeoutRequiresNoSignal && \strtoupper(\substr(\PHP_OS, 0, 3)) !== 'WIN') {
+            $conf[\CURLOPT_NOSIGNAL] = true;
         }
 
         if (isset($options['proxy'])) {
-            if (!is_array($options['proxy'])) {
-                $conf[CURLOPT_PROXY] = $options['proxy'];
+            if (!\is_array($options['proxy'])) {
+                $conf[\CURLOPT_PROXY] = $options['proxy'];
             } else {
                 $scheme = $easy->request->getUri()->getScheme();
                 if (isset($options['proxy'][$scheme])) {
                     $host = $easy->request->getUri()->getHost();
-                    if (!isset($options['proxy']['no']) ||
-                        !\GuzzleHttp\is_host_in_noproxy($host, $options['proxy']['no'])
-                    ) {
-                        $conf[CURLOPT_PROXY] = $options['proxy'][$scheme];
+                    if (isset($options['proxy']['no']) && Utils::isHostInNoProxy($host, $options['proxy']['no'])) {
+                        unset($conf[\CURLOPT_PROXY]);
+                    } else {
+                        $conf[\CURLOPT_PROXY] = $options['proxy'][$scheme];
                     }
                 }
             }
         }
 
+        if (isset($options['crypto_method'])) {
+            if (\STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT === $options['crypto_method']) {
+                if (!defined('CURL_SSLVERSION_TLSv1_0')) {
+                    throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.0 not supported by your version of cURL');
+                }
+                $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_0;
+            } elseif (\STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT === $options['crypto_method']) {
+                if (!defined('CURL_SSLVERSION_TLSv1_1')) {
+                    throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.1 not supported by your version of cURL');
+                }
+                $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_1;
+            } elseif (\STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT === $options['crypto_method']) {
+                if (!defined('CURL_SSLVERSION_TLSv1_2')) {
+                    throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.2 not supported by your version of cURL');
+                }
+                $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_2;
+            } elseif (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT') && \STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT === $options['crypto_method']) {
+                if (!defined('CURL_SSLVERSION_TLSv1_3')) {
+                    throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.3 not supported by your version of cURL');
+                }
+                $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_3;
+            } else {
+                throw new \InvalidArgumentException('Invalid crypto_method request option: unknown version provided');
+            }
+        }
+
         if (isset($options['cert'])) {
             $cert = $options['cert'];
-            if (is_array($cert)) {
-                $conf[CURLOPT_SSLCERTPASSWD] = $cert[1];
+            if (\is_array($cert)) {
+                $conf[\CURLOPT_SSLCERTPASSWD] = $cert[1];
                 $cert = $cert[0];
             }
-            if (!file_exists($cert)) {
-                throw new \InvalidArgumentException(
-                    "SSL certificate not found: {$cert}"
-                );
+            if (!\file_exists($cert)) {
+                throw new \InvalidArgumentException("SSL certificate not found: {$cert}");
+            }
+            # OpenSSL (versions 0.9.3 and later) also support "P12" for PKCS#12-encoded files.
+            # see https://curl.se/libcurl/c/CURLOPT_SSLCERTTYPE.html
+            $ext = pathinfo($cert, \PATHINFO_EXTENSION);
+            if (preg_match('#^(der|p12)$#i', $ext)) {
+                $conf[\CURLOPT_SSLCERTTYPE] = strtoupper($ext);
             }
-            $conf[CURLOPT_SSLCERT] = $cert;
+            $conf[\CURLOPT_SSLCERT] = $cert;
         }
 
         if (isset($options['ssl_key'])) {
-            if (is_array($options['ssl_key'])) {
-                if (count($options['ssl_key']) === 2) {
-                    list($sslKey, $conf[CURLOPT_SSLKEYPASSWD]) = $options['ssl_key'];
+            if (\is_array($options['ssl_key'])) {
+                if (\count($options['ssl_key']) === 2) {
+                    [$sslKey, $conf[\CURLOPT_SSLKEYPASSWD]] = $options['ssl_key'];
                 } else {
-                    list($sslKey) = $options['ssl_key'];
+                    [$sslKey] = $options['ssl_key'];
                 }
             }
 
-            $sslKey = isset($sslKey) ? $sslKey: $options['ssl_key'];
+            $sslKey = $sslKey ?? $options['ssl_key'];
 
-            if (!file_exists($sslKey)) {
-                throw new \InvalidArgumentException(
-                    "SSL private key not found: {$sslKey}"
-                );
+            if (!\file_exists($sslKey)) {
+                throw new \InvalidArgumentException("SSL private key not found: {$sslKey}");
             }
-            $conf[CURLOPT_SSLKEY] = $sslKey;
+            $conf[\CURLOPT_SSLKEY] = $sslKey;
         }
 
         if (isset($options['progress'])) {
             $progress = $options['progress'];
-            if (!is_callable($progress)) {
-                throw new \InvalidArgumentException(
-                    'progress client option must be callable'
-                );
+            if (!\is_callable($progress)) {
+                throw new \InvalidArgumentException('progress client option must be callable');
             }
-            $conf[CURLOPT_NOPROGRESS] = false;
-            $conf[CURLOPT_PROGRESSFUNCTION] = function () use ($progress) {
-                $args = func_get_args();
-                // PHP 5.5 pushed the handle onto the start of the args
-                if (is_resource($args[0])) {
-                    array_shift($args);
-                }
-                call_user_func_array($progress, $args);
+            $conf[\CURLOPT_NOPROGRESS] = false;
+            $conf[\CURLOPT_PROGRESSFUNCTION] = static function ($resource, int $downloadSize, int $downloaded, int $uploadSize, int $uploaded) use ($progress) {
+                $progress($downloadSize, $downloaded, $uploadSize, $uploaded);
             };
         }
 
         if (!empty($options['debug'])) {
-            $conf[CURLOPT_STDERR] = \GuzzleHttp\debug_resource($options['debug']);
-            $conf[CURLOPT_VERBOSE] = true;
+            $conf[\CURLOPT_STDERR] = Utils::debugResource($options['debug']);
+            $conf[\CURLOPT_VERBOSE] = true;
         }
     }
 
@@ -504,12 +538,11 @@ class CurlFactory implements CurlFactoryInterface
      * stream, and then encountered a "necessary data rewind wasn't possible"
      * error, causing the request to be sent through curl_multi_info_read()
      * without an error status.
+     *
+     * @param callable(RequestInterface, array): PromiseInterface $handler
      */
-    private static function retryFailedRewind(
-        callable $handler,
-        EasyHandle $easy,
-        array $ctx
-    ) {
+    private static function retryFailedRewind(callable $handler, EasyHandle $easy, array $ctx): PromiseInterface
+    {
         try {
             // Only rewind if the body has been read from.
             $body = $easy->request->getBody();
@@ -542,27 +575,32 @@ class CurlFactory implements CurlFactoryInterface
         return $handler($easy->request, $easy->options);
     }
 
-    private function createHeaderFn(EasyHandle $easy)
+    private function createHeaderFn(EasyHandle $easy): callable
     {
         if (isset($easy->options['on_headers'])) {
             $onHeaders = $easy->options['on_headers'];
 
-            if (!is_callable($onHeaders)) {
+            if (!\is_callable($onHeaders)) {
                 throw new \InvalidArgumentException('on_headers must be callable');
             }
         } else {
             $onHeaders = null;
         }
 
-        return function ($ch, $h) use (
+        return static function ($ch, $h) use (
             $onHeaders,
             $easy,
             &$startingResponse
         ) {
-            $value = trim($h);
+            $value = \trim($h);
             if ($value === '') {
                 $startingResponse = true;
-                $easy->createResponse();
+                try {
+                    $easy->createResponse();
+                } catch (\Exception $e) {
+                    $easy->createResponseException = $e;
+                    return -1;
+                }
                 if ($onHeaders !== null) {
                     try {
                         $onHeaders($easy->response);
@@ -579,7 +617,7 @@ class CurlFactory implements CurlFactoryInterface
             } else {
                 $easy->headers[] = $value;
             }
-            return strlen($h);
+            return \strlen($h);
         };
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php
index b0fc236850b5db204532665f3db1f39ae907c4fa..fe57ed5d57e4f45fd0738f2bcaf345f60e8f50bd 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Handler;
 
 use Psr\Http\Message\RequestInterface;
@@ -11,17 +12,14 @@ interface CurlFactoryInterface
      * @param RequestInterface $request Request
      * @param array            $options Transfer options
      *
-     * @return EasyHandle
      * @throws \RuntimeException when an option cannot be applied
      */
-    public function create(RequestInterface $request, array $options);
+    public function create(RequestInterface $request, array $options): EasyHandle;
 
     /**
      * Release an easy handle, allowing it to be reused or closed.
      *
      * This function must call unset on the easy handle's "handle" property.
-     *
-     * @param EasyHandle $easy
      */
-    public function release(EasyHandle $easy);
+    public function release(EasyHandle $easy): void;
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
index 43577da66e25de9e8ab4f9f4fb74ebe20b4afd4a..9ad10a9b012906bd777501e666e99056536f0122 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
@@ -1,7 +1,8 @@
 <?php
+
 namespace GuzzleHttp\Handler;
 
-use GuzzleHttp\Psr7;
+use GuzzleHttp\Promise\PromiseInterface;
 use Psr\Http\Message\RequestInterface;
 
 /**
@@ -10,35 +11,38 @@ use Psr\Http\Message\RequestInterface;
  * When using the CurlHandler, custom curl options can be specified as an
  * associative array of curl option constants mapping to values in the
  * **curl** key of the "client" key of the request.
+ *
+ * @final
  */
 class CurlHandler
 {
-    /** @var CurlFactoryInterface */
+    /**
+     * @var CurlFactoryInterface
+     */
     private $factory;
 
     /**
      * Accepts an associative array of options:
      *
-     * - factory: Optional curl factory used to create cURL handles.
+     * - handle_factory: Optional curl factory used to create cURL handles.
      *
-     * @param array $options Array of options to use with the handler
+     * @param array{handle_factory?: ?CurlFactoryInterface} $options Array of options to use with the handler
      */
     public function __construct(array $options = [])
     {
-        $this->factory = isset($options['handle_factory'])
-            ? $options['handle_factory']
-            : new CurlFactory(3);
+        $this->factory = $options['handle_factory']
+            ?? new CurlFactory(3);
     }
 
-    public function __invoke(RequestInterface $request, array $options)
+    public function __invoke(RequestInterface $request, array $options): PromiseInterface
     {
         if (isset($options['delay'])) {
-            usleep($options['delay'] * 1000);
+            \usleep($options['delay'] * 1000);
         }
 
         $easy = $this->factory->create($request, $options);
-        curl_exec($easy->handle);
-        $easy->errno = curl_errno($easy->handle);
+        \curl_exec($easy->handle);
+        $easy->errno = \curl_errno($easy->handle);
 
         return CurlFactory::finish($this, $easy, $this->factory);
     }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
index 564c95f481e65fca0dc7b7631888f82fc3827044..4356d0247396deae65170cc6abde3e4a533969a2 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
@@ -1,8 +1,10 @@
 <?php
+
 namespace GuzzleHttp\Handler;
 
 use GuzzleHttp\Promise as P;
 use GuzzleHttp\Promise\Promise;
+use GuzzleHttp\Promise\PromiseInterface;
 use GuzzleHttp\Utils;
 use Psr\Http\Message\RequestInterface;
 
@@ -13,16 +15,45 @@ use Psr\Http\Message\RequestInterface;
  * associative array of curl option constants mapping to values in the
  * **curl** key of the provided request options.
  *
- * @property resource $_mh Internal use only. Lazy loaded multi-handle.
+ * @property resource|\CurlMultiHandle $_mh Internal use only. Lazy loaded multi-handle.
+ *
+ * @final
  */
+#[\AllowDynamicProperties]
 class CurlMultiHandler
 {
-    /** @var CurlFactoryInterface */
+    /**
+     * @var CurlFactoryInterface
+     */
     private $factory;
+
+    /**
+     * @var int
+     */
     private $selectTimeout;
-    private $active;
+
+    /**
+     * @var int Will be higher than 0 when `curl_multi_exec` is still running.
+     */
+    private $active = 0;
+
+    /**
+     * @var array Request entry handles, indexed by handle id in `addRequest`.
+     *
+     * @see CurlMultiHandler::addRequest
+     */
     private $handles = [];
+
+    /**
+     * @var array<int, float> An array of delay times, indexed by handle id in `addRequest`.
+     *
+     * @see CurlMultiHandler::addRequest
+     */
     private $delays = [];
+
+    /**
+     * @var array<mixed> An associative array of CURLMOPT_* options and corresponding values for curl_multi_setopt()
+     */
     private $options = [];
 
     /**
@@ -33,52 +64,62 @@ class CurlMultiHandler
      *   out while selecting curl handles. Defaults to 1 second.
      * - options: An associative array of CURLMOPT_* options and
      *   corresponding values for curl_multi_setopt()
-     *
-     * @param array $options
      */
     public function __construct(array $options = [])
     {
-        $this->factory = isset($options['handle_factory'])
-            ? $options['handle_factory'] : new CurlFactory(50);
+        $this->factory = $options['handle_factory'] ?? new CurlFactory(50);
 
         if (isset($options['select_timeout'])) {
             $this->selectTimeout = $options['select_timeout'];
-        } elseif ($selectTimeout = getenv('GUZZLE_CURL_SELECT_TIMEOUT')) {
-            $this->selectTimeout = $selectTimeout;
+        } elseif ($selectTimeout = Utils::getenv('GUZZLE_CURL_SELECT_TIMEOUT')) {
+            @trigger_error('Since guzzlehttp/guzzle 7.2.0: Using environment variable GUZZLE_CURL_SELECT_TIMEOUT is deprecated. Use option "select_timeout" instead.', \E_USER_DEPRECATED);
+            $this->selectTimeout = (int) $selectTimeout;
         } else {
             $this->selectTimeout = 1;
         }
 
-        $this->options = isset($options['options']) ? $options['options'] : [];
+        $this->options = $options['options'] ?? [];
     }
 
+    /**
+     * @param string $name
+     *
+     * @return resource|\CurlMultiHandle
+     *
+     * @throws \BadMethodCallException when another field as `_mh` will be gotten
+     * @throws \RuntimeException       when curl can not initialize a multi handle
+     */
     public function __get($name)
     {
-        if ($name === '_mh') {
-            $this->_mh = curl_multi_init();
+        if ($name !== '_mh') {
+            throw new \BadMethodCallException("Can not get other property as '_mh'.");
+        }
 
-            foreach ($this->options as $option => $value) {
-                // A warning is raised in case of a wrong option.
-                curl_multi_setopt($this->_mh, $option, $value);
-            }
+        $multiHandle = \curl_multi_init();
+
+        if (false === $multiHandle) {
+            throw new \RuntimeException('Can not initialize curl multi handle.');
+        }
+
+        $this->_mh = $multiHandle;
 
-            // Further calls to _mh will return the value directly, without entering the
-            // __get() method at all.
-            return $this->_mh;
+        foreach ($this->options as $option => $value) {
+            // A warning is raised in case of a wrong option.
+            curl_multi_setopt($this->_mh, $option, $value);
         }
 
-        throw new \BadMethodCallException();
+        return $this->_mh;
     }
 
     public function __destruct()
     {
         if (isset($this->_mh)) {
-            curl_multi_close($this->_mh);
+            \curl_multi_close($this->_mh);
             unset($this->_mh);
         }
     }
 
-    public function __invoke(RequestInterface $request, array $options)
+    public function __invoke(RequestInterface $request, array $options): PromiseInterface
     {
         $easy = $this->factory->create($request, $options);
         $id = (int) $easy->handle;
@@ -98,7 +139,7 @@ class CurlMultiHandler
     /**
      * Ticks the curl event loop.
      */
-    public function tick()
+    public function tick(): void
     {
         // Add any delayed handles if needed.
         if ($this->delays) {
@@ -106,7 +147,7 @@ class CurlMultiHandler
             foreach ($this->delays as $id => $delay) {
                 if ($currentTime >= $delay) {
                     unset($this->delays[$id]);
-                    curl_multi_add_handle(
+                    \curl_multi_add_handle(
                         $this->_mh,
                         $this->handles[$id]['easy']->handle
                     );
@@ -115,17 +156,15 @@ class CurlMultiHandler
         }
 
         // Step through the task queue which may add additional requests.
-        P\queue()->run();
+        P\Utils::queue()->run();
 
-        if ($this->active &&
-            curl_multi_select($this->_mh, $this->selectTimeout) === -1
-        ) {
+        if ($this->active && \curl_multi_select($this->_mh, $this->selectTimeout) === -1) {
             // Perform a usleep if a select returns -1.
             // See: https://bugs.php.net/bug.php?id=61141
-            usleep(250);
+            \usleep(250);
         }
 
-        while (curl_multi_exec($this->_mh, $this->active) === CURLM_CALL_MULTI_PERFORM);
+        while (\curl_multi_exec($this->_mh, $this->active) === \CURLM_CALL_MULTI_PERFORM);
 
         $this->processMessages();
     }
@@ -133,26 +172,26 @@ class CurlMultiHandler
     /**
      * Runs until all outstanding connections have completed.
      */
-    public function execute()
+    public function execute(): void
     {
-        $queue = P\queue();
+        $queue = P\Utils::queue();
 
         while ($this->handles || !$queue->isEmpty()) {
             // If there are no transfers, then sleep for the next delay
             if (!$this->active && $this->delays) {
-                usleep($this->timeToNext());
+                \usleep($this->timeToNext());
             }
             $this->tick();
         }
     }
 
-    private function addRequest(array $entry)
+    private function addRequest(array $entry): void
     {
         $easy = $entry['easy'];
         $id = (int) $easy->handle;
         $this->handles[$id] = $entry;
         if (empty($easy->options['delay'])) {
-            curl_multi_add_handle($this->_mh, $easy->handle);
+            \curl_multi_add_handle($this->_mh, $easy->handle);
         } else {
             $this->delays[$id] = Utils::currentTime() + ($easy->options['delay'] / 1000);
         }
@@ -165,8 +204,12 @@ class CurlMultiHandler
      *
      * @return bool True on success, false on failure.
      */
-    private function cancel($id)
+    private function cancel($id): bool
     {
+        if (!is_int($id)) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing an integer to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
         // Cannot cancel if it has been processed.
         if (!isset($this->handles[$id])) {
             return false;
@@ -174,17 +217,21 @@ class CurlMultiHandler
 
         $handle = $this->handles[$id]['easy']->handle;
         unset($this->delays[$id], $this->handles[$id]);
-        curl_multi_remove_handle($this->_mh, $handle);
-        curl_close($handle);
+        \curl_multi_remove_handle($this->_mh, $handle);
+        \curl_close($handle);
 
         return true;
     }
 
-    private function processMessages()
+    private function processMessages(): void
     {
-        while ($done = curl_multi_info_read($this->_mh)) {
+        while ($done = \curl_multi_info_read($this->_mh)) {
+            if ($done['msg'] !== \CURLMSG_DONE) {
+                // if it's not done, then it would be premature to remove the handle. ref https://github.com/guzzle/guzzle/pull/2892#issuecomment-945150216
+                continue;
+            }
             $id = (int) $done['handle'];
-            curl_multi_remove_handle($this->_mh, $done['handle']);
+            \curl_multi_remove_handle($this->_mh, $done['handle']);
 
             if (!isset($this->handles[$id])) {
                 // Probably was cancelled.
@@ -195,25 +242,21 @@ class CurlMultiHandler
             unset($this->handles[$id], $this->delays[$id]);
             $entry['easy']->errno = $done['result'];
             $entry['deferred']->resolve(
-                CurlFactory::finish(
-                    $this,
-                    $entry['easy'],
-                    $this->factory
-                )
+                CurlFactory::finish($this, $entry['easy'], $this->factory)
             );
         }
     }
 
-    private function timeToNext()
+    private function timeToNext(): int
     {
         $currentTime = Utils::currentTime();
-        $nextTime = PHP_INT_MAX;
+        $nextTime = \PHP_INT_MAX;
         foreach ($this->delays as $time) {
             if ($time < $nextTime) {
                 $nextTime = $time;
             }
         }
 
-        return max(0, $nextTime - $currentTime) * 1000000;
+        return ((int) \max(0, $nextTime - $currentTime)) * 1000000;
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php
index 7754e9111b7a18add1a188aa9efff05e2eebe550..224344d7c842ed60ed635cfbe5ef8697a0b6e6bb 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php
@@ -1,7 +1,9 @@
 <?php
+
 namespace GuzzleHttp\Handler;
 
 use GuzzleHttp\Psr7\Response;
+use GuzzleHttp\Utils;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\StreamInterface;
@@ -13,55 +15,68 @@ use Psr\Http\Message\StreamInterface;
  */
 final class EasyHandle
 {
-    /** @var resource cURL resource */
+    /**
+     * @var resource|\CurlHandle cURL resource
+     */
     public $handle;
 
-    /** @var StreamInterface Where data is being written */
+    /**
+     * @var StreamInterface Where data is being written
+     */
     public $sink;
 
-    /** @var array Received HTTP headers so far */
+    /**
+     * @var array Received HTTP headers so far
+     */
     public $headers = [];
 
-    /** @var ResponseInterface Received response (if any) */
+    /**
+     * @var ResponseInterface|null Received response (if any)
+     */
     public $response;
 
-    /** @var RequestInterface Request being sent */
+    /**
+     * @var RequestInterface Request being sent
+     */
     public $request;
 
-    /** @var array Request options */
+    /**
+     * @var array Request options
+     */
     public $options = [];
 
-    /** @var int cURL error number (if any) */
+    /**
+     * @var int cURL error number (if any)
+     */
     public $errno = 0;
 
-    /** @var \Exception Exception during on_headers (if any) */
+    /**
+     * @var \Throwable|null Exception during on_headers (if any)
+     */
     public $onHeadersException;
 
+    /**
+     * @var \Exception|null Exception during createResponse (if any)
+     */
+    public $createResponseException;
+
     /**
      * Attach a response to the easy handle based on the received headers.
      *
-     * @throws \RuntimeException if no headers have been received.
+     * @throws \RuntimeException if no headers have been received or the first
+     *                           header line is invalid.
      */
-    public function createResponse()
+    public function createResponse(): void
     {
-        if (empty($this->headers)) {
-            throw new \RuntimeException('No headers have been received');
-        }
+        [$ver, $status, $reason, $headers] = HeaderProcessor::parseHeaders($this->headers);
 
-        // HTTP-version SP status-code SP reason-phrase
-        $startLine = explode(' ', array_shift($this->headers), 3);
-        $headers = \GuzzleHttp\headers_from_lines($this->headers);
-        $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers);
+        $normalizedKeys = Utils::normalizeHeaderKeys($headers);
 
-        if (!empty($this->options['decode_content'])
-            && isset($normalizedKeys['content-encoding'])
-        ) {
-            $headers['x-encoded-content-encoding']
-                = $headers[$normalizedKeys['content-encoding']];
+        if (!empty($this->options['decode_content']) && isset($normalizedKeys['content-encoding'])) {
+            $headers['x-encoded-content-encoding'] = $headers[$normalizedKeys['content-encoding']];
             unset($headers[$normalizedKeys['content-encoding']]);
             if (isset($normalizedKeys['content-length'])) {
-                $headers['x-encoded-content-length']
-                    = $headers[$normalizedKeys['content-length']];
+                $headers['x-encoded-content-length'] = $headers[$normalizedKeys['content-length']];
 
                 $bodyLength = (int) $this->sink->getSize();
                 if ($bodyLength) {
@@ -74,19 +89,24 @@ final class EasyHandle
 
         // Attach a response to the easy handle with the parsed headers.
         $this->response = new Response(
-            $startLine[1],
+            $status,
             $headers,
             $this->sink,
-            substr($startLine[0], 5),
-            isset($startLine[2]) ? (string) $startLine[2] : null
+            $ver,
+            $reason
         );
     }
 
+    /**
+     * @param string $name
+     *
+     * @return void
+     *
+     * @throws \BadMethodCallException
+     */
     public function __get($name)
     {
-        $msg = $name === 'handle'
-            ? 'The EasyHandle has been released'
-            : 'Invalid property: ' . $name;
+        $msg = $name === 'handle' ? 'The EasyHandle has been released' : 'Invalid property: ' . $name;
         throw new \BadMethodCallException($msg);
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php
new file mode 100644
index 0000000000000000000000000000000000000000..a0988845fd42ebc0d486ffb05f028a47e3a9e370
--- /dev/null
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php
@@ -0,0 +1,42 @@
+<?php
+
+namespace GuzzleHttp\Handler;
+
+use GuzzleHttp\Utils;
+
+/**
+ * @internal
+ */
+final class HeaderProcessor
+{
+    /**
+     * Returns the HTTP version, status code, reason phrase, and headers.
+     *
+     * @param string[] $headers
+     *
+     * @throws \RuntimeException
+     *
+     * @return array{0:string, 1:int, 2:?string, 3:array}
+     */
+    public static function parseHeaders(array $headers): array
+    {
+        if ($headers === []) {
+            throw new \RuntimeException('Expected a non-empty array of header data');
+        }
+
+        $parts = \explode(' ', \array_shift($headers), 3);
+        $version = \explode('/', $parts[0])[1] ?? null;
+
+        if ($version === null) {
+            throw new \RuntimeException('HTTP version missing from header data');
+        }
+
+        $status = $parts[1] ?? null;
+
+        if ($status === null) {
+            throw new \RuntimeException('HTTP status code missing from header data');
+        }
+
+        return [$version, (int) $status, $parts[2] ?? null, Utils::headersFromLines($headers)];
+    }
+}
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
index e41e43956c1cb6f49a9c1a513925a98c0de3d544..79664e2790067a6b1bb42772947ed854e3ecd988 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
@@ -1,81 +1,98 @@
 <?php
+
 namespace GuzzleHttp\Handler;
 
 use GuzzleHttp\Exception\RequestException;
 use GuzzleHttp\HandlerStack;
+use GuzzleHttp\Promise as P;
 use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Promise\RejectedPromise;
 use GuzzleHttp\TransferStats;
+use GuzzleHttp\Utils;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
+use Psr\Http\Message\StreamInterface;
 
 /**
  * Handler that returns responses or throw exceptions from a queue.
+ *
+ * @final
  */
 class MockHandler implements \Countable
 {
+    /**
+     * @var array
+     */
     private $queue = [];
+
+    /**
+     * @var RequestInterface|null
+     */
     private $lastRequest;
-    private $lastOptions;
+
+    /**
+     * @var array
+     */
+    private $lastOptions = [];
+
+    /**
+     * @var callable|null
+     */
     private $onFulfilled;
+
+    /**
+     * @var callable|null
+     */
     private $onRejected;
 
     /**
      * Creates a new MockHandler that uses the default handler stack list of
      * middlewares.
      *
-     * @param array $queue Array of responses, callables, or exceptions.
-     * @param callable $onFulfilled Callback to invoke when the return value is fulfilled.
-     * @param callable $onRejected  Callback to invoke when the return value is rejected.
-     *
-     * @return HandlerStack
+     * @param array|null    $queue       Array of responses, callables, or exceptions.
+     * @param callable|null $onFulfilled Callback to invoke when the return value is fulfilled.
+     * @param callable|null $onRejected  Callback to invoke when the return value is rejected.
      */
-    public static function createWithMiddleware(
-        array $queue = null,
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    ) {
+    public static function createWithMiddleware(array $queue = null, callable $onFulfilled = null, callable $onRejected = null): HandlerStack
+    {
         return HandlerStack::create(new self($queue, $onFulfilled, $onRejected));
     }
 
     /**
      * The passed in value must be an array of
-     * {@see Psr7\Http\Message\ResponseInterface} objects, Exceptions,
+     * {@see \Psr\Http\Message\ResponseInterface} objects, Exceptions,
      * callables, or Promises.
      *
-     * @param array $queue
-     * @param callable $onFulfilled Callback to invoke when the return value is fulfilled.
-     * @param callable $onRejected  Callback to invoke when the return value is rejected.
+     * @param array<int, mixed>|null $queue       The parameters to be passed to the append function, as an indexed array.
+     * @param callable|null          $onFulfilled Callback to invoke when the return value is fulfilled.
+     * @param callable|null          $onRejected  Callback to invoke when the return value is rejected.
      */
-    public function __construct(
-        array $queue = null,
-        callable $onFulfilled = null,
-        callable $onRejected = null
-    ) {
+    public function __construct(array $queue = null, callable $onFulfilled = null, callable $onRejected = null)
+    {
         $this->onFulfilled = $onFulfilled;
         $this->onRejected = $onRejected;
 
         if ($queue) {
-            call_user_func_array([$this, 'append'], $queue);
+            // array_values included for BC
+            $this->append(...array_values($queue));
         }
     }
 
-    public function __invoke(RequestInterface $request, array $options)
+    public function __invoke(RequestInterface $request, array $options): PromiseInterface
     {
         if (!$this->queue) {
             throw new \OutOfBoundsException('Mock queue is empty');
         }
 
-        if (isset($options['delay']) && is_numeric($options['delay'])) {
-            usleep($options['delay'] * 1000);
+        if (isset($options['delay']) && \is_numeric($options['delay'])) {
+            \usleep((int) $options['delay'] * 1000);
         }
 
         $this->lastRequest = $request;
         $this->lastOptions = $options;
-        $response = array_shift($this->queue);
+        $response = \array_shift($this->queue);
 
         if (isset($options['on_headers'])) {
-            if (!is_callable($options['on_headers'])) {
+            if (!\is_callable($options['on_headers'])) {
                 throw new \InvalidArgumentException('on_headers must be callable');
             }
             try {
@@ -86,29 +103,30 @@ class MockHandler implements \Countable
             }
         }
 
-        if (is_callable($response)) {
-            $response = call_user_func($response, $request, $options);
+        if (\is_callable($response)) {
+            $response = $response($request, $options);
         }
 
-        $response = $response instanceof \Exception
-            ? \GuzzleHttp\Promise\rejection_for($response)
-            : \GuzzleHttp\Promise\promise_for($response);
+        $response = $response instanceof \Throwable
+            ? P\Create::rejectionFor($response)
+            : P\Create::promiseFor($response);
 
         return $response->then(
-            function ($value) use ($request, $options) {
+            function (?ResponseInterface $value) use ($request, $options) {
                 $this->invokeStats($request, $options, $value);
                 if ($this->onFulfilled) {
-                    call_user_func($this->onFulfilled, $value);
+                    ($this->onFulfilled)($value);
                 }
-                if (isset($options['sink'])) {
+
+                if ($value !== null && isset($options['sink'])) {
                     $contents = (string) $value->getBody();
                     $sink = $options['sink'];
 
-                    if (is_resource($sink)) {
-                        fwrite($sink, $contents);
-                    } elseif (is_string($sink)) {
-                        file_put_contents($sink, $contents);
-                    } elseif ($sink instanceof \Psr\Http\Message\StreamInterface) {
+                    if (\is_resource($sink)) {
+                        \fwrite($sink, $contents);
+                    } elseif (\is_string($sink)) {
+                        \file_put_contents($sink, $contents);
+                    } elseif ($sink instanceof StreamInterface) {
                         $sink->write($contents);
                     }
                 }
@@ -118,9 +136,9 @@ class MockHandler implements \Countable
             function ($reason) use ($request, $options) {
                 $this->invokeStats($request, $options, null, $reason);
                 if ($this->onRejected) {
-                    call_user_func($this->onRejected, $reason);
+                    ($this->onRejected)($reason);
                 }
-                return \GuzzleHttp\Promise\rejection_for($reason);
+                return P\Create::rejectionFor($reason);
             }
         );
     }
@@ -128,68 +146,66 @@ class MockHandler implements \Countable
     /**
      * Adds one or more variadic requests, exceptions, callables, or promises
      * to the queue.
+     *
+     * @param mixed ...$values
      */
-    public function append()
+    public function append(...$values): void
     {
-        foreach (func_get_args() as $value) {
+        foreach ($values as $value) {
             if ($value instanceof ResponseInterface
-                || $value instanceof \Exception
+                || $value instanceof \Throwable
                 || $value instanceof PromiseInterface
-                || is_callable($value)
+                || \is_callable($value)
             ) {
                 $this->queue[] = $value;
             } else {
-                throw new \InvalidArgumentException('Expected a response or '
-                    . 'exception. Found ' . \GuzzleHttp\describe_type($value));
+                throw new \TypeError('Expected a Response, Promise, Throwable or callable. Found ' . Utils::describeType($value));
             }
         }
     }
 
     /**
      * Get the last received request.
-     *
-     * @return RequestInterface
      */
-    public function getLastRequest()
+    public function getLastRequest(): ?RequestInterface
     {
         return $this->lastRequest;
     }
 
     /**
      * Get the last received request options.
-     *
-     * @return array
      */
-    public function getLastOptions()
+    public function getLastOptions(): array
     {
         return $this->lastOptions;
     }
 
     /**
      * Returns the number of remaining items in the queue.
-     *
-     * @return int
      */
     public function count(): int
     {
-        return count($this->queue);
+        return \count($this->queue);
     }
 
-    public function reset()
+    public function reset(): void
     {
         $this->queue = [];
     }
 
+    /**
+     * @param mixed $reason Promise or reason.
+     */
     private function invokeStats(
         RequestInterface $request,
         array $options,
         ResponseInterface $response = null,
         $reason = null
-    ) {
+    ): void {
         if (isset($options['on_stats'])) {
-            $transferTime = isset($options['transfer_time']) ? $options['transfer_time'] : 0;
+            $transferTime = $options['transfer_time'] ?? 0;
             $stats = new TransferStats($request, $response, $transferTime, $reason);
-            call_user_func($options['on_stats'], $stats);
+            ($options['on_stats'])($stats);
         }
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
index f8b00be0b99ed4b5de18098ca153fa1b44d41685..f045b526c577b8a6398319712a56efa8462409be 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
@@ -1,11 +1,15 @@
 <?php
+
 namespace GuzzleHttp\Handler;
 
+use GuzzleHttp\Promise\PromiseInterface;
 use GuzzleHttp\RequestOptions;
 use Psr\Http\Message\RequestInterface;
 
 /**
  * Provides basic proxies for handlers.
+ *
+ * @final
  */
 class Proxy
 {
@@ -13,19 +17,15 @@ class Proxy
      * Sends synchronous requests to a specific handler while sending all other
      * requests to another handler.
      *
-     * @param callable $default Handler used for normal responses
-     * @param callable $sync    Handler used for synchronous responses.
+     * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $default Handler used for normal responses
+     * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $sync    Handler used for synchronous responses.
      *
-     * @return callable Returns the composed handler.
+     * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the composed handler.
      */
-    public static function wrapSync(
-        callable $default,
-        callable $sync
-    ) {
-        return function (RequestInterface $request, array $options) use ($default, $sync) {
-            return empty($options[RequestOptions::SYNCHRONOUS])
-                ? $default($request, $options)
-                : $sync($request, $options);
+    public static function wrapSync(callable $default, callable $sync): callable
+    {
+        return static function (RequestInterface $request, array $options) use ($default, $sync): PromiseInterface {
+            return empty($options[RequestOptions::SYNCHRONOUS]) ? $default($request, $options) : $sync($request, $options);
         };
     }
 
@@ -37,19 +37,15 @@ class Proxy
      * performance benefits of curl while still supporting true streaming
      * through the StreamHandler.
      *
-     * @param callable $default   Handler used for non-streaming responses
-     * @param callable $streaming Handler used for streaming responses
+     * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $default   Handler used for non-streaming responses
+     * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $streaming Handler used for streaming responses
      *
-     * @return callable Returns the composed handler.
+     * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the composed handler.
      */
-    public static function wrapStreaming(
-        callable $default,
-        callable $streaming
-    ) {
-        return function (RequestInterface $request, array $options) use ($default, $streaming) {
-            return empty($options['stream'])
-                ? $default($request, $options)
-                : $streaming($request, $options);
+    public static function wrapStreaming(callable $default, callable $streaming): callable
+    {
+        return static function (RequestInterface $request, array $options) use ($default, $streaming): PromiseInterface {
+            return empty($options['stream']) ? $default($request, $options) : $streaming($request, $options);
         };
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
index a15734a44de44695121f0d4827d04bbb360ef1bf..310987c20587ab3a66126c1db06a3549da764c5e 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
@@ -1,8 +1,10 @@
 <?php
+
 namespace GuzzleHttp\Handler;
 
 use GuzzleHttp\Exception\ConnectException;
 use GuzzleHttp\Exception\RequestException;
+use GuzzleHttp\Promise as P;
 use GuzzleHttp\Promise\FulfilledPromise;
 use GuzzleHttp\Promise\PromiseInterface;
 use GuzzleHttp\Psr7;
@@ -11,12 +13,18 @@ use GuzzleHttp\Utils;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\StreamInterface;
+use Psr\Http\Message\UriInterface;
 
 /**
  * HTTP handler that uses PHP's HTTP stream wrapper.
+ *
+ * @final
  */
 class StreamHandler
 {
+    /**
+     * @var array
+     */
     private $lastHeaders = [];
 
     /**
@@ -24,14 +32,12 @@ class StreamHandler
      *
      * @param RequestInterface $request Request to send.
      * @param array            $options Request transfer options.
-     *
-     * @return PromiseInterface
      */
-    public function __invoke(RequestInterface $request, array $options)
+    public function __invoke(RequestInterface $request, array $options): PromiseInterface
     {
         // Sleep if there is a delay specified.
         if (isset($options['delay'])) {
-            usleep($options['delay'] * 1000);
+            \usleep($options['delay'] * 1000);
         }
 
         $startTime = isset($options['on_stats']) ? Utils::currentTime() : null;
@@ -58,80 +64,80 @@ class StreamHandler
             // Determine if the error was a networking error.
             $message = $e->getMessage();
             // This list can probably get more comprehensive.
-            if (strpos($message, 'getaddrinfo') // DNS lookup failed
-                || strpos($message, 'Connection refused')
-                || strpos($message, "couldn't connect to host") // error on HHVM
-                || strpos($message, "connection attempt failed")
+            if (false !== \strpos($message, 'getaddrinfo') // DNS lookup failed
+                || false !== \strpos($message, 'Connection refused')
+                || false !== \strpos($message, "couldn't connect to host") // error on HHVM
+                || false !== \strpos($message, "connection attempt failed")
             ) {
                 $e = new ConnectException($e->getMessage(), $request, $e);
+            } else {
+                $e = RequestException::wrapException($request, $e);
             }
-            $e = RequestException::wrapException($request, $e);
             $this->invokeStats($options, $request, $startTime, null, $e);
 
-            return \GuzzleHttp\Promise\rejection_for($e);
+            return P\Create::rejectionFor($e);
         }
     }
 
     private function invokeStats(
         array $options,
         RequestInterface $request,
-        $startTime,
+        ?float $startTime,
         ResponseInterface $response = null,
-        $error = null
-    ) {
+        \Throwable $error = null
+    ): void {
         if (isset($options['on_stats'])) {
-            $stats = new TransferStats(
-                $request,
-                $response,
-                Utils::currentTime() - $startTime,
-                $error,
-                []
-            );
-            call_user_func($options['on_stats'], $stats);
+            $stats = new TransferStats($request, $response, Utils::currentTime() - $startTime, $error, []);
+            ($options['on_stats'])($stats);
         }
     }
 
-    private function createResponse(
-        RequestInterface $request,
-        array $options,
-        $stream,
-        $startTime
-    ) {
+    /**
+     * @param resource $stream
+     */
+    private function createResponse(RequestInterface $request, array $options, $stream, ?float $startTime): PromiseInterface
+    {
         $hdrs = $this->lastHeaders;
         $this->lastHeaders = [];
-        $parts = explode(' ', array_shift($hdrs), 3);
-        $ver = explode('/', $parts[0])[1];
-        $status = $parts[1];
-        $reason = isset($parts[2]) ? $parts[2] : null;
-        $headers = \GuzzleHttp\headers_from_lines($hdrs);
-        list($stream, $headers) = $this->checkDecode($options, $headers, $stream);
-        $stream = Psr7\stream_for($stream);
+
+        try {
+            [$ver, $status, $reason, $headers] = HeaderProcessor::parseHeaders($hdrs);
+        } catch (\Exception $e) {
+            return P\Create::rejectionFor(
+                new RequestException('An error was encountered while creating the response', $request, null, $e)
+            );
+        }
+
+        [$stream, $headers] = $this->checkDecode($options, $headers, $stream);
+        $stream = Psr7\Utils::streamFor($stream);
         $sink = $stream;
 
-        if (strcasecmp('HEAD', $request->getMethod())) {
+        if (\strcasecmp('HEAD', $request->getMethod())) {
             $sink = $this->createSink($stream, $options);
         }
 
-        $response = new Psr7\Response($status, $headers, $sink, $ver, $reason);
+        try {
+            $response = new Psr7\Response($status, $headers, $sink, $ver, $reason);
+        } catch (\Exception $e) {
+            return P\Create::rejectionFor(
+                new RequestException('An error was encountered while creating the response', $request, null, $e)
+            );
+        }
 
         if (isset($options['on_headers'])) {
             try {
                 $options['on_headers']($response);
             } catch (\Exception $e) {
-                $msg = 'An error was encountered during the on_headers event';
-                $ex = new RequestException($msg, $request, $response, $e);
-                return \GuzzleHttp\Promise\rejection_for($ex);
+                return P\Create::rejectionFor(
+                    new RequestException('An error was encountered during the on_headers event', $request, $response, $e)
+                );
             }
         }
 
         // Do not drain when the request is a HEAD request because they have
         // no body.
         if ($sink !== $stream) {
-            $this->drain(
-                $stream,
-                $sink,
-                $response->getHeaderLine('Content-Length')
-            );
+            $this->drain($stream, $sink, $response->getHeaderLine('Content-Length'));
         }
 
         $this->invokeStats($options, $request, $startTime, $response, null);
@@ -139,41 +145,37 @@ class StreamHandler
         return new FulfilledPromise($response);
     }
 
-    private function createSink(StreamInterface $stream, array $options)
+    private function createSink(StreamInterface $stream, array $options): StreamInterface
     {
         if (!empty($options['stream'])) {
             return $stream;
         }
 
-        $sink = isset($options['sink'])
-            ? $options['sink']
-            : fopen('php://temp', 'r+');
+        $sink = $options['sink'] ?? Psr7\Utils::tryFopen('php://temp', 'r+');
 
-        return is_string($sink)
-            ? new Psr7\LazyOpenStream($sink, 'w+')
-            : Psr7\stream_for($sink);
+        return \is_string($sink) ? new Psr7\LazyOpenStream($sink, 'w+') : Psr7\Utils::streamFor($sink);
     }
 
-    private function checkDecode(array $options, array $headers, $stream)
+    /**
+     * @param resource $stream
+     */
+    private function checkDecode(array $options, array $headers, $stream): array
     {
         // Automatically decode responses when instructed.
         if (!empty($options['decode_content'])) {
-            $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers);
+            $normalizedKeys = Utils::normalizeHeaderKeys($headers);
             if (isset($normalizedKeys['content-encoding'])) {
                 $encoding = $headers[$normalizedKeys['content-encoding']];
                 if ($encoding[0] === 'gzip' || $encoding[0] === 'deflate') {
-                    $stream = new Psr7\InflateStream(
-                        Psr7\stream_for($stream)
-                    );
-                    $headers['x-encoded-content-encoding']
-                        = $headers[$normalizedKeys['content-encoding']];
+                    $stream = new Psr7\InflateStream(Psr7\Utils::streamFor($stream));
+                    $headers['x-encoded-content-encoding'] = $headers[$normalizedKeys['content-encoding']];
+
                     // Remove content-encoding header
                     unset($headers[$normalizedKeys['content-encoding']]);
+
                     // Fix content-length header
                     if (isset($normalizedKeys['content-length'])) {
-                        $headers['x-encoded-content-length']
-                            = $headers[$normalizedKeys['content-length']];
-
+                        $headers['x-encoded-content-length'] = $headers[$normalizedKeys['content-length']];
                         $length = (int) $stream->getSize();
                         if ($length === 0) {
                             unset($headers[$normalizedKeys['content-length']]);
@@ -191,27 +193,21 @@ class StreamHandler
     /**
      * Drains the source stream into the "sink" client option.
      *
-     * @param StreamInterface $source
-     * @param StreamInterface $sink
-     * @param string          $contentLength Header specifying the amount of
-     *                                       data to read.
+     * @param string $contentLength Header specifying the amount of
+     *                              data to read.
      *
-     * @return StreamInterface
      * @throws \RuntimeException when the sink option is invalid.
      */
-    private function drain(
-        StreamInterface $source,
-        StreamInterface $sink,
-        $contentLength
-    ) {
+    private function drain(StreamInterface $source, StreamInterface $sink, string $contentLength): StreamInterface
+    {
         // If a content-length header is provided, then stop reading once
         // that number of bytes has been read. This can prevent infinitely
         // reading from a stream when dealing with servers that do not honor
         // Connection: Close headers.
-        Psr7\copy_to_stream(
+        Psr7\Utils::copyToStream(
             $source,
             $sink,
-            (strlen($contentLength) > 0 && (int) $contentLength > 0) ? (int) $contentLength : -1
+            (\strlen($contentLength) > 0 && (int) $contentLength > 0) ? (int) $contentLength : -1
         );
 
         $sink->seek(0);
@@ -226,12 +222,13 @@ class StreamHandler
      * @param callable $callback Callable that returns stream resource
      *
      * @return resource
+     *
      * @throws \RuntimeException on error
      */
     private function createResource(callable $callback)
     {
-        $errors = null;
-        set_error_handler(function ($_, $msg, $file, $line) use (&$errors) {
+        $errors = [];
+        \set_error_handler(static function ($_, $msg, $file, $line) use (&$errors): bool {
             $errors[] = [
                 'message' => $msg,
                 'file'    => $file,
@@ -240,27 +237,37 @@ class StreamHandler
             return true;
         });
 
-        $resource = $callback();
-        restore_error_handler();
+        try {
+            $resource = $callback();
+        } finally {
+            \restore_error_handler();
+        }
 
         if (!$resource) {
             $message = 'Error creating resource: ';
             foreach ($errors as $err) {
                 foreach ($err as $key => $value) {
-                    $message .= "[$key] $value" . PHP_EOL;
+                    $message .= "[$key] $value" . \PHP_EOL;
                 }
             }
-            throw new \RuntimeException(trim($message));
+            throw new \RuntimeException(\trim($message));
         }
 
         return $resource;
     }
 
+    /**
+     * @return resource
+     */
     private function createStream(RequestInterface $request, array $options)
     {
         static $methods;
         if (!$methods) {
-            $methods = array_flip(get_class_methods(__CLASS__));
+            $methods = \array_flip(\get_class_methods(__CLASS__));
+        }
+
+        if (!\in_array($request->getUri()->getScheme(), ['http', 'https'])) {
+            throw new RequestException(\sprintf("The scheme '%s' is not supported.", $request->getUri()->getScheme()), $request);
         }
 
         // HTTP/1.1 streams using the PHP stream wrapper require a
@@ -279,7 +286,7 @@ class StreamHandler
         $params = [];
         $context = $this->getDefaultContext($request);
 
-        if (isset($options['on_headers']) && !is_callable($options['on_headers'])) {
+        if (isset($options['on_headers']) && !\is_callable($options['on_headers'])) {
             throw new \InvalidArgumentException('on_headers must be callable');
         }
 
@@ -293,42 +300,39 @@ class StreamHandler
         }
 
         if (isset($options['stream_context'])) {
-            if (!is_array($options['stream_context'])) {
+            if (!\is_array($options['stream_context'])) {
                 throw new \InvalidArgumentException('stream_context must be an array');
             }
-            $context = array_replace_recursive(
-                $context,
-                $options['stream_context']
-            );
+            $context = \array_replace_recursive($context, $options['stream_context']);
         }
 
         // Microsoft NTLM authentication only supported with curl handler
-        if (isset($options['auth'])
-            && is_array($options['auth'])
-            && isset($options['auth'][2])
-            && 'ntlm' == $options['auth'][2]
-        ) {
+        if (isset($options['auth'][2]) && 'ntlm' === $options['auth'][2]) {
             throw new \InvalidArgumentException('Microsoft NTLM authentication only supported with curl handler');
         }
 
         $uri = $this->resolveHost($request, $options);
 
-        $context = $this->createResource(
-            function () use ($context, $params) {
-                return stream_context_create($context, $params);
+        $contextResource = $this->createResource(
+            static function () use ($context, $params) {
+                return \stream_context_create($context, $params);
             }
         );
 
         return $this->createResource(
-            function () use ($uri, &$http_response_header, $context, $options) {
-                $resource = fopen((string) $uri, 'r', null, $context);
-                $this->lastHeaders = $http_response_header;
+            function () use ($uri, &$http_response_header, $contextResource, $context, $options, $request) {
+                $resource = @\fopen((string) $uri, 'r', false, $contextResource);
+                $this->lastHeaders = $http_response_header ?? [];
+
+                if (false === $resource) {
+                    throw new ConnectException(sprintf('Connection refused for URI %s', $uri), $request, null, $context);
+                }
 
                 if (isset($options['read_timeout'])) {
                     $readTimeout = $options['read_timeout'];
                     $sec = (int) $readTimeout;
                     $usec = ($readTimeout - $sec) * 100000;
-                    stream_set_timeout($resource, $sec, $usec);
+                    \stream_set_timeout($resource, $sec, $usec);
                 }
 
                 return $resource;
@@ -336,42 +340,31 @@ class StreamHandler
         );
     }
 
-    private function resolveHost(RequestInterface $request, array $options)
+    private function resolveHost(RequestInterface $request, array $options): UriInterface
     {
         $uri = $request->getUri();
 
-        if (isset($options['force_ip_resolve']) && !filter_var($uri->getHost(), FILTER_VALIDATE_IP)) {
+        if (isset($options['force_ip_resolve']) && !\filter_var($uri->getHost(), \FILTER_VALIDATE_IP)) {
             if ('v4' === $options['force_ip_resolve']) {
-                $records = dns_get_record($uri->getHost(), DNS_A);
-                if (!isset($records[0]['ip'])) {
-                    throw new ConnectException(
-                        sprintf(
-                            "Could not resolve IPv4 address for host '%s'",
-                            $uri->getHost()
-                        ),
-                        $request
-                    );
+                $records = \dns_get_record($uri->getHost(), \DNS_A);
+                if (false === $records || !isset($records[0]['ip'])) {
+                    throw new ConnectException(\sprintf("Could not resolve IPv4 address for host '%s'", $uri->getHost()), $request);
                 }
-                $uri = $uri->withHost($records[0]['ip']);
-            } elseif ('v6' === $options['force_ip_resolve']) {
-                $records = dns_get_record($uri->getHost(), DNS_AAAA);
-                if (!isset($records[0]['ipv6'])) {
-                    throw new ConnectException(
-                        sprintf(
-                            "Could not resolve IPv6 address for host '%s'",
-                            $uri->getHost()
-                        ),
-                        $request
-                    );
+                return $uri->withHost($records[0]['ip']);
+            }
+            if ('v6' === $options['force_ip_resolve']) {
+                $records = \dns_get_record($uri->getHost(), \DNS_AAAA);
+                if (false === $records || !isset($records[0]['ipv6'])) {
+                    throw new ConnectException(\sprintf("Could not resolve IPv6 address for host '%s'", $uri->getHost()), $request);
                 }
-                $uri = $uri->withHost('[' . $records[0]['ipv6'] . ']');
+                return $uri->withHost('[' . $records[0]['ipv6'] . ']');
             }
         }
 
         return $uri;
     }
 
-    private function getDefaultContext(RequestInterface $request)
+    private function getDefaultContext(RequestInterface $request): array
     {
         $headers = '';
         foreach ($request->getHeaders() as $name => $value) {
@@ -388,11 +381,14 @@ class StreamHandler
                 'ignore_errors'    => true,
                 'follow_location'  => 0,
             ],
+            'ssl' => [
+                'peer_name' => $request->getUri()->getHost(),
+            ],
         ];
 
         $body = (string) $request->getBody();
 
-        if (!empty($body)) {
+        if ('' !== $body) {
             $context['http']['content'] = $body;
             // Prevent the HTTP handler from adding a Content-Type header.
             if (!$request->hasHeader('Content-Type')) {
@@ -400,55 +396,119 @@ class StreamHandler
             }
         }
 
-        $context['http']['header'] = rtrim($context['http']['header']);
+        $context['http']['header'] = \rtrim($context['http']['header']);
 
         return $context;
     }
 
-    private function add_proxy(RequestInterface $request, &$options, $value, &$params)
+    /**
+     * @param mixed $value as passed via Request transfer options.
+     */
+    private function add_proxy(RequestInterface $request, array &$options, $value, array &$params): void
     {
-        if (!is_array($value)) {
-            $options['http']['proxy'] = $value;
+        $uri = null;
+
+        if (!\is_array($value)) {
+            $uri = $value;
         } else {
             $scheme = $request->getUri()->getScheme();
             if (isset($value[$scheme])) {
-                if (!isset($value['no'])
-                    || !\GuzzleHttp\is_host_in_noproxy(
-                        $request->getUri()->getHost(),
-                        $value['no']
-                    )
-                ) {
-                    $options['http']['proxy'] = $value[$scheme];
+                if (!isset($value['no']) || !Utils::isHostInNoProxy($request->getUri()->getHost(), $value['no'])) {
+                    $uri = $value[$scheme];
+                }
+            }
+        }
+
+        if (!$uri) {
+            return;
+        }
+
+        $parsed = $this->parse_proxy($uri);
+        $options['http']['proxy'] = $parsed['proxy'];
+
+        if ($parsed['auth']) {
+            if (!isset($options['http']['header'])) {
+                $options['http']['header'] = [];
+            }
+            $options['http']['header'] .= "\r\nProxy-Authorization: {$parsed['auth']}";
+        }
+    }
+
+    /**
+     * Parses the given proxy URL to make it compatible with the format PHP's stream context expects.
+     */
+    private function parse_proxy(string $url): array
+    {
+        $parsed = \parse_url($url);
+
+        if ($parsed !== false && isset($parsed['scheme']) && $parsed['scheme'] === 'http') {
+            if (isset($parsed['host']) && isset($parsed['port'])) {
+                $auth = null;
+                if (isset($parsed['user']) && isset($parsed['pass'])) {
+                    $auth = \base64_encode("{$parsed['user']}:{$parsed['pass']}");
                 }
+
+                return [
+                    'proxy' => "tcp://{$parsed['host']}:{$parsed['port']}",
+                    'auth' => $auth ? "Basic {$auth}" : null,
+                ];
             }
         }
+
+        // Return proxy as-is.
+        return [
+            'proxy' => $url,
+            'auth' => null,
+        ];
     }
 
-    private function add_timeout(RequestInterface $request, &$options, $value, &$params)
+    /**
+     * @param mixed $value as passed via Request transfer options.
+     */
+    private function add_timeout(RequestInterface $request, array &$options, $value, array &$params): void
     {
         if ($value > 0) {
             $options['http']['timeout'] = $value;
         }
     }
 
-    private function add_verify(RequestInterface $request, &$options, $value, &$params)
+    /**
+     * @param mixed $value as passed via Request transfer options.
+     */
+    private function add_crypto_method(RequestInterface $request, array &$options, $value, array &$params): void
     {
-        if ($value === true) {
-            // PHP 5.6 or greater will find the system cert by default. When
-            // < 5.6, use the Guzzle bundled cacert.
-            if (PHP_VERSION_ID < 50600) {
-                $options['ssl']['cafile'] = \GuzzleHttp\default_ca_bundle();
-            }
-        } elseif (is_string($value)) {
-            $options['ssl']['cafile'] = $value;
-            if (!file_exists($value)) {
-                throw new \RuntimeException("SSL CA bundle not found: $value");
-            }
-        } elseif ($value === false) {
+        if (
+            $value === \STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT
+            || $value === \STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT
+            || $value === \STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT
+            || (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT') && $value === \STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT)
+        ) {
+            $options['http']['crypto_method'] = $value;
+
+            return;
+        }
+
+        throw new \InvalidArgumentException('Invalid crypto_method request option: unknown version provided');
+    }
+
+    /**
+     * @param mixed $value as passed via Request transfer options.
+     */
+    private function add_verify(RequestInterface $request, array &$options, $value, array &$params): void
+    {
+        if ($value === false) {
             $options['ssl']['verify_peer'] = false;
             $options['ssl']['verify_peer_name'] = false;
+
             return;
-        } else {
+        }
+
+        if (\is_string($value)) {
+            $options['ssl']['cafile'] = $value;
+            if (!\file_exists($value)) {
+                throw new \RuntimeException("SSL CA bundle not found: $value");
+            }
+        } elseif ($value !== true) {
             throw new \InvalidArgumentException('Invalid verify request option');
         }
 
@@ -457,88 +517,95 @@ class StreamHandler
         $options['ssl']['allow_self_signed'] = false;
     }
 
-    private function add_cert(RequestInterface $request, &$options, $value, &$params)
+    /**
+     * @param mixed $value as passed via Request transfer options.
+     */
+    private function add_cert(RequestInterface $request, array &$options, $value, array &$params): void
     {
-        if (is_array($value)) {
+        if (\is_array($value)) {
             $options['ssl']['passphrase'] = $value[1];
             $value = $value[0];
         }
 
-        if (!file_exists($value)) {
+        if (!\file_exists($value)) {
             throw new \RuntimeException("SSL certificate not found: {$value}");
         }
 
         $options['ssl']['local_cert'] = $value;
     }
 
-    private function add_progress(RequestInterface $request, &$options, $value, &$params)
+    /**
+     * @param mixed $value as passed via Request transfer options.
+     */
+    private function add_progress(RequestInterface $request, array &$options, $value, array &$params): void
     {
-        $this->addNotification(
+        self::addNotification(
             $params,
-            function ($code, $a, $b, $c, $transferred, $total) use ($value) {
-                if ($code == STREAM_NOTIFY_PROGRESS) {
-                    $value($total, $transferred, null, null);
+            static function ($code, $a, $b, $c, $transferred, $total) use ($value) {
+                if ($code == \STREAM_NOTIFY_PROGRESS) {
+                    // The upload progress cannot be determined. Use 0 for cURL compatibility:
+                    // https://curl.se/libcurl/c/CURLOPT_PROGRESSFUNCTION.html
+                    $value($total, $transferred, 0, 0);
                 }
             }
         );
     }
 
-    private function add_debug(RequestInterface $request, &$options, $value, &$params)
+    /**
+     * @param mixed $value as passed via Request transfer options.
+     */
+    private function add_debug(RequestInterface $request, array &$options, $value, array &$params): void
     {
         if ($value === false) {
             return;
         }
 
         static $map = [
-            STREAM_NOTIFY_CONNECT       => 'CONNECT',
-            STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED',
-            STREAM_NOTIFY_AUTH_RESULT   => 'AUTH_RESULT',
-            STREAM_NOTIFY_MIME_TYPE_IS  => 'MIME_TYPE_IS',
-            STREAM_NOTIFY_FILE_SIZE_IS  => 'FILE_SIZE_IS',
-            STREAM_NOTIFY_REDIRECTED    => 'REDIRECTED',
-            STREAM_NOTIFY_PROGRESS      => 'PROGRESS',
-            STREAM_NOTIFY_FAILURE       => 'FAILURE',
-            STREAM_NOTIFY_COMPLETED     => 'COMPLETED',
-            STREAM_NOTIFY_RESOLVE       => 'RESOLVE',
+            \STREAM_NOTIFY_CONNECT       => 'CONNECT',
+            \STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED',
+            \STREAM_NOTIFY_AUTH_RESULT   => 'AUTH_RESULT',
+            \STREAM_NOTIFY_MIME_TYPE_IS  => 'MIME_TYPE_IS',
+            \STREAM_NOTIFY_FILE_SIZE_IS  => 'FILE_SIZE_IS',
+            \STREAM_NOTIFY_REDIRECTED    => 'REDIRECTED',
+            \STREAM_NOTIFY_PROGRESS      => 'PROGRESS',
+            \STREAM_NOTIFY_FAILURE       => 'FAILURE',
+            \STREAM_NOTIFY_COMPLETED     => 'COMPLETED',
+            \STREAM_NOTIFY_RESOLVE       => 'RESOLVE',
         ];
-        static $args = ['severity', 'message', 'message_code',
-            'bytes_transferred', 'bytes_max'];
+        static $args = ['severity', 'message', 'message_code', 'bytes_transferred', 'bytes_max'];
 
-        $value = \GuzzleHttp\debug_resource($value);
+        $value = Utils::debugResource($value);
         $ident = $request->getMethod() . ' ' . $request->getUri()->withFragment('');
-        $this->addNotification(
+        self::addNotification(
             $params,
-            function () use ($ident, $value, $map, $args) {
-                $passed = func_get_args();
-                $code = array_shift($passed);
-                fprintf($value, '<%s> [%s] ', $ident, $map[$code]);
-                foreach (array_filter($passed) as $i => $v) {
-                    fwrite($value, $args[$i] . ': "' . $v . '" ');
+            static function (int $code, ...$passed) use ($ident, $value, $map, $args): void {
+                \fprintf($value, '<%s> [%s] ', $ident, $map[$code]);
+                foreach (\array_filter($passed) as $i => $v) {
+                    \fwrite($value, $args[$i] . ': "' . $v . '" ');
                 }
-                fwrite($value, "\n");
+                \fwrite($value, "\n");
             }
         );
     }
 
-    private function addNotification(array &$params, callable $notify)
+    private static function addNotification(array &$params, callable $notify): void
     {
         // Wrap the existing function if needed.
         if (!isset($params['notification'])) {
             $params['notification'] = $notify;
         } else {
-            $params['notification'] = $this->callArray([
+            $params['notification'] = self::callArray([
                 $params['notification'],
                 $notify
             ]);
         }
     }
 
-    private function callArray(array $functions)
+    private static function callArray(array $functions): callable
     {
-        return function () use ($functions) {
-            $args = func_get_args();
+        return static function (...$args) use ($functions) {
             foreach ($functions as $fn) {
-                call_user_func_array($fn, $args);
+                $fn(...$args);
             }
         };
     }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/HandlerStack.php b/civicrm/vendor/guzzlehttp/guzzle/src/HandlerStack.php
index 6a49cc0690cb0fa24b8987957aa8e4ba43b7cf05..e0a1d1191322075e8df01272b3b47639a6378835 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/HandlerStack.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/HandlerStack.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp;
 
 use GuzzleHttp\Promise\PromiseInterface;
@@ -8,16 +9,24 @@ use Psr\Http\Message\ResponseInterface;
 /**
  * Creates a composed Guzzle handler function by stacking middlewares on top of
  * an HTTP handler function.
+ *
+ * @final
  */
 class HandlerStack
 {
-    /** @var callable|null */
+    /**
+     * @var (callable(RequestInterface, array): PromiseInterface)|null
+     */
     private $handler;
 
-    /** @var array */
+    /**
+     * @var array{(callable(callable(RequestInterface, array): PromiseInterface): callable), (string|null)}[]
+     */
     private $stack = [];
 
-    /** @var callable|null */
+    /**
+     * @var (callable(RequestInterface, array): PromiseInterface)|null
+     */
     private $cached;
 
     /**
@@ -31,15 +40,13 @@ class HandlerStack
      * The returned handler stack can be passed to a client in the "handler"
      * option.
      *
-     * @param callable $handler HTTP handler function to use with the stack. If no
-     *                          handler is provided, the best handler for your
-     *                          system will be utilized.
-     *
-     * @return HandlerStack
+     * @param (callable(RequestInterface, array): PromiseInterface)|null $handler HTTP handler function to use with the stack. If no
+     *                                                                            handler is provided, the best handler for your
+     *                                                                            system will be utilized.
      */
-    public static function create(callable $handler = null)
+    public static function create(?callable $handler = null): self
     {
-        $stack = new self($handler ?: choose_handler());
+        $stack = new self($handler ?: Utils::chooseHandler());
         $stack->push(Middleware::httpErrors(), 'http_errors');
         $stack->push(Middleware::redirect(), 'allow_redirects');
         $stack->push(Middleware::cookies(), 'cookies');
@@ -49,7 +56,7 @@ class HandlerStack
     }
 
     /**
-     * @param callable $handler Underlying HTTP handler.
+     * @param (callable(RequestInterface, array): PromiseInterface)|null $handler Underlying HTTP handler.
      */
     public function __construct(callable $handler = null)
     {
@@ -59,9 +66,6 @@ class HandlerStack
     /**
      * Invokes the handler stack as a composed handler
      *
-     * @param RequestInterface $request
-     * @param array            $options
-     *
      * @return ResponseInterface|PromiseInterface
      */
     public function __invoke(RequestInterface $request, array $options)
@@ -80,12 +84,13 @@ class HandlerStack
     {
         $depth = 0;
         $stack = [];
-        if ($this->handler) {
+
+        if ($this->handler !== null) {
             $stack[] = "0) Handler: " . $this->debugCallable($this->handler);
         }
 
         $result = '';
-        foreach (array_reverse($this->stack) as $tuple) {
+        foreach (\array_reverse($this->stack) as $tuple) {
             $depth++;
             $str = "{$depth}) Name: '{$tuple[1]}', ";
             $str .= "Function: " . $this->debugCallable($tuple[0]);
@@ -93,7 +98,7 @@ class HandlerStack
             $stack[] = $str;
         }
 
-        foreach (array_keys($stack) as $k) {
+        foreach (\array_keys($stack) as $k) {
             $result .= "< {$stack[$k]}\n";
         }
 
@@ -103,10 +108,10 @@ class HandlerStack
     /**
      * Set the HTTP handler that actually returns a promise.
      *
-     * @param callable $handler Accepts a request and array of options and
-     *                          returns a Promise.
+     * @param callable(RequestInterface, array): PromiseInterface $handler Accepts a request and array of options and
+     *                                                                     returns a Promise.
      */
-    public function setHandler(callable $handler)
+    public function setHandler(callable $handler): void
     {
         $this->handler = $handler;
         $this->cached = null;
@@ -114,33 +119,31 @@ class HandlerStack
 
     /**
      * Returns true if the builder has a handler.
-     *
-     * @return bool
      */
-    public function hasHandler()
+    public function hasHandler(): bool
     {
-        return (bool) $this->handler;
+        return $this->handler !== null ;
     }
 
     /**
      * Unshift a middleware to the bottom of the stack.
      *
-     * @param callable $middleware Middleware function
-     * @param string   $name       Name to register for this middleware.
+     * @param callable(callable): callable $middleware Middleware function
+     * @param string                       $name       Name to register for this middleware.
      */
-    public function unshift(callable $middleware, $name = null)
+    public function unshift(callable $middleware, ?string $name = null): void
     {
-        array_unshift($this->stack, [$middleware, $name]);
+        \array_unshift($this->stack, [$middleware, $name]);
         $this->cached = null;
     }
 
     /**
      * Push a middleware to the top of the stack.
      *
-     * @param callable $middleware Middleware function
-     * @param string   $name       Name to register for this middleware.
+     * @param callable(callable): callable $middleware Middleware function
+     * @param string                       $name       Name to register for this middleware.
      */
-    public function push(callable $middleware, $name = '')
+    public function push(callable $middleware, string $name = ''): void
     {
         $this->stack[] = [$middleware, $name];
         $this->cached = null;
@@ -149,11 +152,11 @@ class HandlerStack
     /**
      * Add a middleware before another middleware by name.
      *
-     * @param string   $findName   Middleware to find
-     * @param callable $middleware Middleware function
-     * @param string   $withName   Name to register for this middleware.
+     * @param string                       $findName   Middleware to find
+     * @param callable(callable): callable $middleware Middleware function
+     * @param string                       $withName   Name to register for this middleware.
      */
-    public function before($findName, callable $middleware, $withName = '')
+    public function before(string $findName, callable $middleware, string $withName = ''): void
     {
         $this->splice($findName, $withName, $middleware, true);
     }
@@ -161,11 +164,11 @@ class HandlerStack
     /**
      * Add a middleware after another middleware by name.
      *
-     * @param string   $findName   Middleware to find
-     * @param callable $middleware Middleware function
-     * @param string   $withName   Name to register for this middleware.
+     * @param string                       $findName   Middleware to find
+     * @param callable(callable): callable $middleware Middleware function
+     * @param string                       $withName   Name to register for this middleware.
      */
-    public function after($findName, callable $middleware, $withName = '')
+    public function after(string $findName, callable $middleware, string $withName = ''): void
     {
         $this->splice($findName, $withName, $middleware, false);
     }
@@ -175,13 +178,17 @@ class HandlerStack
      *
      * @param callable|string $remove Middleware to remove by instance or name.
      */
-    public function remove($remove)
+    public function remove($remove): void
     {
+        if (!is_string($remove) && !is_callable($remove)) {
+            trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a callable or string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
+        }
+
         $this->cached = null;
-        $idx = is_callable($remove) ? 0 : 1;
-        $this->stack = array_values(array_filter(
+        $idx = \is_callable($remove) ? 0 : 1;
+        $this->stack = \array_values(\array_filter(
             $this->stack,
-            function ($tuple) use ($idx, $remove) {
+            static function ($tuple) use ($idx, $remove) {
                 return $tuple[$idx] !== $remove;
             }
         ));
@@ -190,16 +197,17 @@ class HandlerStack
     /**
      * Compose the middleware and handler into a single callable function.
      *
-     * @return callable
+     * @return callable(RequestInterface, array): PromiseInterface
      */
-    public function resolve()
+    public function resolve(): callable
     {
-        if (!$this->cached) {
-            if (!($prev = $this->handler)) {
+        if ($this->cached === null) {
+            if (($prev = $this->handler) === null) {
                 throw new \LogicException('No handler has been specified');
             }
 
-            foreach (array_reverse($this->stack) as $fn) {
+            foreach (\array_reverse($this->stack) as $fn) {
+                /** @var callable(RequestInterface, array): PromiseInterface $prev */
                 $prev = $fn[0]($prev);
             }
 
@@ -209,11 +217,7 @@ class HandlerStack
         return $this->cached;
     }
 
-    /**
-     * @param string $name
-     * @return int
-     */
-    private function findByName($name)
+    private function findByName(string $name): int
     {
         foreach ($this->stack as $k => $v) {
             if ($v[1] === $name) {
@@ -226,13 +230,8 @@ class HandlerStack
 
     /**
      * Splices a function into the middleware list at a specific position.
-     *
-     * @param string   $findName
-     * @param string   $withName
-     * @param callable $middleware
-     * @param bool     $before
      */
-    private function splice($findName, $withName, callable $middleware, $before)
+    private function splice(string $findName, string $withName, callable $middleware, bool $before): void
     {
         $this->cached = null;
         $idx = $this->findByName($findName);
@@ -240,38 +239,37 @@ class HandlerStack
 
         if ($before) {
             if ($idx === 0) {
-                array_unshift($this->stack, $tuple);
+                \array_unshift($this->stack, $tuple);
             } else {
                 $replacement = [$tuple, $this->stack[$idx]];
-                array_splice($this->stack, $idx, 1, $replacement);
+                \array_splice($this->stack, $idx, 1, $replacement);
             }
-        } elseif ($idx === count($this->stack) - 1) {
+        } elseif ($idx === \count($this->stack) - 1) {
             $this->stack[] = $tuple;
         } else {
             $replacement = [$this->stack[$idx], $tuple];
-            array_splice($this->stack, $idx, 1, $replacement);
+            \array_splice($this->stack, $idx, 1, $replacement);
         }
     }
 
     /**
      * Provides a debug string for a given callable.
      *
-     * @param array|callable $fn Function to write as a string.
-     *
-     * @return string
+     * @param callable|string $fn Function to write as a string.
      */
-    private function debugCallable($fn)
+    private function debugCallable($fn): string
     {
-        if (is_string($fn)) {
+        if (\is_string($fn)) {
             return "callable({$fn})";
         }
 
-        if (is_array($fn)) {
-            return is_string($fn[0])
+        if (\is_array($fn)) {
+            return \is_string($fn[0])
                 ? "callable({$fn[0]}::{$fn[1]})"
-                : "callable(['" . get_class($fn[0]) . "', '{$fn[1]}'])";
+                : "callable(['" . \get_class($fn[0]) . "', '{$fn[1]}'])";
         }
 
-        return 'callable(' . spl_object_hash($fn) . ')';
+        /** @var object $fn */
+        return 'callable(' . \spl_object_hash($fn) . ')';
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/MessageFormatter.php b/civicrm/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
index dc36bb524d4b7f2515e9ce053c20557169c990aa..da499547f1e74824b207578818d0f6562eaf9023 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp;
 
 use Psr\Http\Message\MessageInterface;
@@ -31,25 +32,31 @@ use Psr\Http\Message\ResponseInterface;
  * - {res_headers}:    Response headers
  * - {req_body}:       Request body
  * - {res_body}:       Response body
+ *
+ * @final
  */
-class MessageFormatter
+class MessageFormatter implements MessageFormatterInterface
 {
     /**
      * Apache Common Log Format.
-     * @link http://httpd.apache.org/docs/2.4/logs.html#common
+     *
+     * @link https://httpd.apache.org/docs/2.4/logs.html#common
+     *
      * @var string
      */
-    const CLF = "{hostname} {req_header_User-Agent} - [{date_common_log}] \"{method} {target} HTTP/{version}\" {code} {res_header_Content-Length}";
-    const DEBUG = ">>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}";
-    const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}';
+    public const CLF = "{hostname} {req_header_User-Agent} - [{date_common_log}] \"{method} {target} HTTP/{version}\" {code} {res_header_Content-Length}";
+    public const DEBUG = ">>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}";
+    public const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}';
 
-    /** @var string Template used to format log messages */
+    /**
+     * @var string Template used to format log messages
+     */
     private $template;
 
     /**
      * @param string $template Log message template
      */
-    public function __construct($template = self::CLF)
+    public function __construct(?string $template = self::CLF)
     {
         $this->template = $template ?: self::CLF;
     }
@@ -57,20 +64,16 @@ class MessageFormatter
     /**
      * Returns a formatted message string.
      *
-     * @param RequestInterface  $request  Request that was sent
-     * @param ResponseInterface $response Response that was received
-     * @param \Exception        $error    Exception that was received
-     *
-     * @return string
+     * @param RequestInterface       $request  Request that was sent
+     * @param ResponseInterface|null $response Response that was received
+     * @param \Throwable|null        $error    Exception that was received
      */
-    public function format(
-        RequestInterface $request,
-        ResponseInterface $response = null,
-        \Exception $error = null
-    ) {
+    public function format(RequestInterface $request, ?ResponseInterface $response = null, ?\Throwable $error = null): string
+    {
         $cache = [];
 
-        return preg_replace_callback(
+        /** @var string */
+        return \preg_replace_callback(
             '/{\s*([A-Za-z_\-\.0-9]+)\s*}/',
             function (array $matches) use ($request, $response, $error, &$cache) {
                 if (isset($cache[$matches[1]])) {
@@ -80,20 +83,20 @@ class MessageFormatter
                 $result = '';
                 switch ($matches[1]) {
                     case 'request':
-                        $result = Psr7\str($request);
+                        $result = Psr7\Message::toString($request);
                         break;
                     case 'response':
-                        $result = $response ? Psr7\str($response) : '';
+                        $result = $response ? Psr7\Message::toString($response) : '';
                         break;
                     case 'req_headers':
-                        $result = trim($request->getMethod()
+                        $result = \trim($request->getMethod()
                                 . ' ' . $request->getRequestTarget())
                             . ' HTTP/' . $request->getProtocolVersion() . "\r\n"
                             . $this->headers($request);
                         break;
                     case 'res_headers':
                         $result = $response ?
-                            sprintf(
+                            \sprintf(
                                 'HTTP/%s %d %s',
                                 $response->getProtocolVersion(),
                                 $response->getStatusCode(),
@@ -102,17 +105,29 @@ class MessageFormatter
                             : 'NULL';
                         break;
                     case 'req_body':
-                        $result = $request->getBody();
+                        $result = $request->getBody()->__toString();
                         break;
                     case 'res_body':
-                        $result = $response ? $response->getBody() : 'NULL';
+                        if (!$response instanceof ResponseInterface) {
+                            $result = 'NULL';
+                            break;
+                        }
+
+                        $body = $response->getBody();
+
+                        if (!$body->isSeekable()) {
+                            $result = 'RESPONSE_NOT_LOGGEABLE';
+                            break;
+                        }
+
+                        $result = $response->getBody()->__toString();
                         break;
                     case 'ts':
                     case 'date_iso_8601':
-                        $result = gmdate('c');
+                        $result = \gmdate('c');
                         break;
                     case 'date_common_log':
-                        $result = date('d/M/Y:H:i:s O');
+                        $result = \date('d/M/Y:H:i:s O');
                         break;
                     case 'method':
                         $result = $request->getMethod();
@@ -122,7 +137,7 @@ class MessageFormatter
                         break;
                     case 'uri':
                     case 'url':
-                        $result = $request->getUri();
+                        $result = $request->getUri()->__toString();
                         break;
                     case 'target':
                         $result = $request->getRequestTarget();
@@ -139,7 +154,7 @@ class MessageFormatter
                         $result = $request->getHeaderLine('Host');
                         break;
                     case 'hostname':
-                        $result = gethostname();
+                        $result = \gethostname();
                         break;
                     case 'code':
                         $result = $response ? $response->getStatusCode() : 'NULL';
@@ -152,11 +167,11 @@ class MessageFormatter
                         break;
                     default:
                         // handle prefixed dynamic headers
-                        if (strpos($matches[1], 'req_header_') === 0) {
-                            $result = $request->getHeaderLine(substr($matches[1], 11));
-                        } elseif (strpos($matches[1], 'res_header_') === 0) {
+                        if (\strpos($matches[1], 'req_header_') === 0) {
+                            $result = $request->getHeaderLine(\substr($matches[1], 11));
+                        } elseif (\strpos($matches[1], 'res_header_') === 0) {
                             $result = $response
-                                ? $response->getHeaderLine(substr($matches[1], 11))
+                                ? $response->getHeaderLine(\substr($matches[1], 11))
                                 : 'NULL';
                         }
                 }
@@ -170,16 +185,14 @@ class MessageFormatter
 
     /**
      * Get headers from message as string
-     *
-     * @return string
      */
-    private function headers(MessageInterface $message)
+    private function headers(MessageInterface $message): string
     {
         $result = '';
         foreach ($message->getHeaders() as $name => $values) {
-            $result .= $name . ': ' . implode(', ', $values) . "\r\n";
+            $result .= $name . ': ' . \implode(', ', $values) . "\r\n";
         }
 
-        return trim($result);
+        return \trim($result);
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php b/civicrm/vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..a39ac248ee32913583e7e497715ee1f1f461bb3e
--- /dev/null
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace GuzzleHttp;
+
+use Psr\Http\Message\RequestInterface;
+use Psr\Http\Message\ResponseInterface;
+
+interface MessageFormatterInterface
+{
+    /**
+     * Returns a formatted message string.
+     *
+     * @param RequestInterface       $request  Request that was sent
+     * @param ResponseInterface|null $response Response that was received
+     * @param \Throwable|null        $error    Exception that was received
+     */
+    public function format(RequestInterface $request, ?ResponseInterface $response = null, ?\Throwable $error = null): string;
+}
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Middleware.php b/civicrm/vendor/guzzlehttp/guzzle/src/Middleware.php
index bffc1974bbe0d94287ff580d0cfe657e32cf041e..7035c77ffa7e98b3b4232eb21c79d5e66f73b7bc 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Middleware.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Middleware.php
@@ -1,10 +1,12 @@
 <?php
+
 namespace GuzzleHttp;
 
 use GuzzleHttp\Cookie\CookieJarInterface;
 use GuzzleHttp\Exception\RequestException;
-use GuzzleHttp\Promise\RejectedPromise;
-use GuzzleHttp\Psr7;
+use GuzzleHttp\Promise as P;
+use GuzzleHttp\Promise\PromiseInterface;
+use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Log\LoggerInterface;
 
@@ -21,10 +23,10 @@ final class Middleware
      *
      * @return callable Returns a function that accepts the next handler.
      */
-    public static function cookies()
+    public static function cookies(): callable
     {
-        return function (callable $handler) {
-            return function ($request, array $options) use ($handler) {
+        return static function (callable $handler): callable {
+            return static function ($request, array $options) use ($handler) {
                 if (empty($options['cookies'])) {
                     return $handler($request, $options);
                 } elseif (!($options['cookies'] instanceof CookieJarInterface)) {
@@ -34,7 +36,7 @@ final class Middleware
                 $request = $cookieJar->withCookieHeader($request);
                 return $handler($request, $options)
                     ->then(
-                        function ($response) use ($cookieJar, $request) {
+                        static function (ResponseInterface $response) use ($cookieJar, $request): ResponseInterface {
                             $cookieJar->extractCookies($request, $response);
                             return $response;
                         }
@@ -45,24 +47,26 @@ final class Middleware
 
     /**
      * Middleware that throws exceptions for 4xx or 5xx responses when the
-     * "http_error" request option is set to true.
+     * "http_errors" request option is set to true.
      *
-     * @return callable Returns a function that accepts the next handler.
+     * @param BodySummarizerInterface|null $bodySummarizer The body summarizer to use in exception messages.
+     *
+     * @return callable(callable): callable Returns a function that accepts the next handler.
      */
-    public static function httpErrors()
+    public static function httpErrors(BodySummarizerInterface $bodySummarizer = null): callable
     {
-        return function (callable $handler) {
-            return function ($request, array $options) use ($handler) {
+        return static function (callable $handler) use ($bodySummarizer): callable {
+            return static function ($request, array $options) use ($handler, $bodySummarizer) {
                 if (empty($options['http_errors'])) {
                     return $handler($request, $options);
                 }
                 return $handler($request, $options)->then(
-                    function (ResponseInterface $response) use ($request) {
+                    static function (ResponseInterface $response) use ($request, $bodySummarizer) {
                         $code = $response->getStatusCode();
                         if ($code < 400) {
                             return $response;
                         }
-                        throw RequestException::create($request, $response);
+                        throw RequestException::create($request, $response, null, [], $bodySummarizer);
                     }
                 );
             };
@@ -72,21 +76,22 @@ final class Middleware
     /**
      * Middleware that pushes history data to an ArrayAccess container.
      *
-     * @param array|\ArrayAccess $container Container to hold the history (by reference).
+     * @param array|\ArrayAccess<int, array> $container Container to hold the history (by reference).
+     *
+     * @return callable(callable): callable Returns a function that accepts the next handler.
      *
-     * @return callable Returns a function that accepts the next handler.
      * @throws \InvalidArgumentException if container is not an array or ArrayAccess.
      */
-    public static function history(&$container)
+    public static function history(&$container): callable
     {
-        if (!is_array($container) && !$container instanceof \ArrayAccess) {
+        if (!\is_array($container) && !$container instanceof \ArrayAccess) {
             throw new \InvalidArgumentException('history container must be an array or object implementing ArrayAccess');
         }
 
-        return function (callable $handler) use (&$container) {
-            return function ($request, array $options) use ($handler, &$container) {
+        return static function (callable $handler) use (&$container): callable {
+            return static function (RequestInterface $request, array $options) use ($handler, &$container) {
                 return $handler($request, $options)->then(
-                    function ($value) use ($request, &$container, $options) {
+                    static function ($value) use ($request, &$container, $options) {
                         $container[] = [
                             'request'  => $request,
                             'response' => $value,
@@ -95,14 +100,14 @@ final class Middleware
                         ];
                         return $value;
                     },
-                    function ($reason) use ($request, &$container, $options) {
+                    static function ($reason) use ($request, &$container, $options) {
                         $container[] = [
                             'request'  => $request,
                             'response' => null,
                             'error'    => $reason,
                             'options'  => $options
                         ];
-                        return \GuzzleHttp\Promise\rejection_for($reason);
+                        return P\Create::rejectionFor($reason);
                     }
                 );
             };
@@ -122,10 +127,10 @@ final class Middleware
      *
      * @return callable Returns a function that accepts the next handler.
      */
-    public static function tap(callable $before = null, callable $after = null)
+    public static function tap(callable $before = null, callable $after = null): callable
     {
-        return function (callable $handler) use ($before, $after) {
-            return function ($request, array $options) use ($handler, $before, $after) {
+        return static function (callable $handler) use ($before, $after): callable {
+            return static function (RequestInterface $request, array $options) use ($handler, $before, $after) {
                 if ($before) {
                     $before($request, $options);
                 }
@@ -143,9 +148,9 @@ final class Middleware
      *
      * @return callable Returns a function that accepts the next handler.
      */
-    public static function redirect()
+    public static function redirect(): callable
     {
-        return function (callable $handler) {
+        return static function (callable $handler): RedirectMiddleware {
             return new RedirectMiddleware($handler);
         };
     }
@@ -165,9 +170,9 @@ final class Middleware
      *
      * @return callable Returns a function that accepts the next handler.
      */
-    public static function retry(callable $decider, callable $delay = null)
+    public static function retry(callable $decider, callable $delay = null): callable
     {
-        return function (callable $handler) use ($decider, $delay) {
+        return static function (callable $handler) use ($decider, $delay): RetryMiddleware {
             return new RetryMiddleware($decider, $handler, $delay);
         };
     }
@@ -176,29 +181,34 @@ final class Middleware
      * Middleware that logs requests, responses, and errors using a message
      * formatter.
      *
-     * @param LoggerInterface  $logger Logs messages.
-     * @param MessageFormatter $formatter Formatter used to create message strings.
-     * @param string           $logLevel Level at which to log requests.
+     * @phpstan-param \Psr\Log\LogLevel::* $logLevel  Level at which to log requests.
+     *
+     * @param LoggerInterface                            $logger    Logs messages.
+     * @param MessageFormatterInterface|MessageFormatter $formatter Formatter used to create message strings.
+     * @param string                                     $logLevel  Level at which to log requests.
      *
      * @return callable Returns a function that accepts the next handler.
      */
-    public static function log(LoggerInterface $logger, MessageFormatter $formatter, $logLevel = 'info' /* \Psr\Log\LogLevel::INFO */)
+    public static function log(LoggerInterface $logger, $formatter, string $logLevel = 'info'): callable
     {
-        return function (callable $handler) use ($logger, $formatter, $logLevel) {
-            return function ($request, array $options) use ($handler, $logger, $formatter, $logLevel) {
+        // To be compatible with Guzzle 7.1.x we need to allow users to pass a MessageFormatter
+        if (!$formatter instanceof MessageFormatter && !$formatter instanceof MessageFormatterInterface) {
+            throw new \LogicException(sprintf('Argument 2 to %s::log() must be of type %s', self::class, MessageFormatterInterface::class));
+        }
+
+        return static function (callable $handler) use ($logger, $formatter, $logLevel): callable {
+            return static function (RequestInterface $request, array $options = []) use ($handler, $logger, $formatter, $logLevel) {
                 return $handler($request, $options)->then(
-                    function ($response) use ($logger, $request, $formatter, $logLevel) {
+                    static function ($response) use ($logger, $request, $formatter, $logLevel): ResponseInterface {
                         $message = $formatter->format($request, $response);
                         $logger->log($logLevel, $message);
                         return $response;
                     },
-                    function ($reason) use ($logger, $request, $formatter) {
-                        $response = $reason instanceof RequestException
-                            ? $reason->getResponse()
-                            : null;
-                        $message = $formatter->format($request, $response, $reason);
-                        $logger->notice($message);
-                        return \GuzzleHttp\Promise\rejection_for($reason);
+                    static function ($reason) use ($logger, $request, $formatter): PromiseInterface {
+                        $response = $reason instanceof RequestException ? $reason->getResponse() : null;
+                        $message = $formatter->format($request, $response, P\Create::exceptionFor($reason));
+                        $logger->error($message);
+                        return P\Create::rejectionFor($reason);
                     }
                 );
             };
@@ -208,12 +218,10 @@ final class Middleware
     /**
      * This middleware adds a default content-type if possible, a default
      * content-length or transfer-encoding header, and the expect header.
-     *
-     * @return callable
      */
-    public static function prepareBody()
+    public static function prepareBody(): callable
     {
-        return function (callable $handler) {
+        return static function (callable $handler): PrepareBodyMiddleware {
             return new PrepareBodyMiddleware($handler);
         };
     }
@@ -224,12 +232,11 @@ final class Middleware
      *
      * @param callable $fn Function that accepts a RequestInterface and returns
      *                     a RequestInterface.
-     * @return callable
      */
-    public static function mapRequest(callable $fn)
+    public static function mapRequest(callable $fn): callable
     {
-        return function (callable $handler) use ($fn) {
-            return function ($request, array $options) use ($handler, $fn) {
+        return static function (callable $handler) use ($fn): callable {
+            return static function (RequestInterface $request, array $options) use ($handler, $fn) {
                 return $handler($fn($request), $options);
             };
         };
@@ -241,12 +248,11 @@ final class Middleware
      *
      * @param callable $fn Function that accepts a ResponseInterface and
      *                     returns a ResponseInterface.
-     * @return callable
      */
-    public static function mapResponse(callable $fn)
+    public static function mapResponse(callable $fn): callable
     {
-        return function (callable $handler) use ($fn) {
-            return function ($request, array $options) use ($handler, $fn) {
+        return static function (callable $handler) use ($fn): callable {
+            return static function (RequestInterface $request, array $options) use ($handler, $fn) {
                 return $handler($request, $options)->then($fn);
             };
         };
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Pool.php b/civicrm/vendor/guzzlehttp/guzzle/src/Pool.php
index 5838db4f4cf9a7e3596891a8dcf8c80ad5eef3ed..6277c61fbcd51ad3d2482fb22910b58678f459ee 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Pool.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Pool.php
@@ -1,6 +1,8 @@
 <?php
+
 namespace GuzzleHttp;
 
+use GuzzleHttp\Promise as P;
 use GuzzleHttp\Promise\EachPromise;
 use GuzzleHttp\Promise\PromiseInterface;
 use GuzzleHttp\Promise\PromisorInterface;
@@ -16,10 +18,14 @@ use Psr\Http\Message\RequestInterface;
  * When a function is yielded by the iterator, the function is provided the
  * "request_options" array that should be merged on top of any existing
  * options, and the function MUST then return a wait-able promise.
+ *
+ * @final
  */
 class Pool implements PromisorInterface
 {
-    /** @var EachPromise */
+    /**
+     * @var EachPromise
+     */
     private $each;
 
     /**
@@ -27,20 +33,14 @@ class Pool implements PromisorInterface
      * @param array|\Iterator $requests Requests or functions that return
      *                                  requests to send concurrently.
      * @param array           $config   Associative array of options
-     *     - concurrency: (int) Maximum number of requests to send concurrently
-     *     - options: Array of request options to apply to each request.
-     *     - fulfilled: (callable) Function to invoke when a request completes.
-     *     - rejected: (callable) Function to invoke when a request is rejected.
+     *                                  - concurrency: (int) Maximum number of requests to send concurrently
+     *                                  - options: Array of request options to apply to each request.
+     *                                  - fulfilled: (callable) Function to invoke when a request completes.
+     *                                  - rejected: (callable) Function to invoke when a request is rejected.
      */
-    public function __construct(
-        ClientInterface $client,
-        $requests,
-        array $config = []
-    ) {
-        // Backwards compatibility.
-        if (isset($config['pool_size'])) {
-            $config['concurrency'] = $config['pool_size'];
-        } elseif (!isset($config['concurrency'])) {
+    public function __construct(ClientInterface $client, $requests, array $config = [])
+    {
+        if (!isset($config['concurrency'])) {
             $config['concurrency'] = 25;
         }
 
@@ -51,18 +51,15 @@ class Pool implements PromisorInterface
             $opts = [];
         }
 
-        $iterable = \GuzzleHttp\Promise\iter_for($requests);
-        $requests = function () use ($iterable, $client, $opts) {
+        $iterable = P\Create::iterFor($requests);
+        $requests = static function () use ($iterable, $client, $opts) {
             foreach ($iterable as $key => $rfn) {
                 if ($rfn instanceof RequestInterface) {
                     yield $key => $client->sendAsync($rfn, $opts);
-                } elseif (is_callable($rfn)) {
+                } elseif (\is_callable($rfn)) {
                     yield $key => $rfn($opts);
                 } else {
-                    throw new \InvalidArgumentException('Each value yielded by '
-                        . 'the iterator must be a Psr7\Http\Message\RequestInterface '
-                        . 'or a callable that returns a promise that fulfills '
-                        . 'with a Psr7\Message\Http\ResponseInterface object.');
+                    throw new \InvalidArgumentException('Each value yielded by the iterator must be a Psr7\Http\Message\RequestInterface or a callable that returns a promise that fulfills with a Psr7\Message\Http\ResponseInterface object.');
                 }
             }
         };
@@ -72,10 +69,8 @@ class Pool implements PromisorInterface
 
     /**
      * Get promise
-     *
-     * @return PromiseInterface
      */
-    public function promise()
+    public function promise(): PromiseInterface
     {
         return $this->each->promise();
     }
@@ -91,41 +86,37 @@ class Pool implements PromisorInterface
      * @param ClientInterface $client   Client used to send the requests
      * @param array|\Iterator $requests Requests to send concurrently.
      * @param array           $options  Passes through the options available in
-     *                                  {@see GuzzleHttp\Pool::__construct}
+     *                                  {@see \GuzzleHttp\Pool::__construct}
      *
      * @return array Returns an array containing the response or an exception
      *               in the same order that the requests were sent.
+     *
      * @throws \InvalidArgumentException if the event format is incorrect.
      */
-    public static function batch(
-        ClientInterface $client,
-        $requests,
-        array $options = []
-    ) {
+    public static function batch(ClientInterface $client, $requests, array $options = []): array
+    {
         $res = [];
         self::cmpCallback($options, 'fulfilled', $res);
         self::cmpCallback($options, 'rejected', $res);
         $pool = new static($client, $requests, $options);
         $pool->promise()->wait();
-        ksort($res);
+        \ksort($res);
 
         return $res;
     }
 
     /**
      * Execute callback(s)
-     *
-     * @return void
      */
-    private static function cmpCallback(array &$options, $name, array &$results)
+    private static function cmpCallback(array &$options, string $name, array &$results): void
     {
         if (!isset($options[$name])) {
-            $options[$name] = function ($v, $k) use (&$results) {
+            $options[$name] = static function ($v, $k) use (&$results) {
                 $results[$k] = $v;
             };
         } else {
             $currentFn = $options[$name];
-            $options[$name] = function ($v, $k) use (&$results, $currentFn) {
+            $options[$name] = static function ($v, $k) use (&$results, $currentFn) {
                 $currentFn($v, $k);
                 $results[$k] = $v;
             };
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php b/civicrm/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
index 568a1e906c97071c5d7220439278fc9aaf4058f2..7ca628338063b736bf9cdcdbde539e14dbf587ba 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
@@ -1,34 +1,32 @@
 <?php
+
 namespace GuzzleHttp;
 
 use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Psr7;
 use Psr\Http\Message\RequestInterface;
 
 /**
  * Prepares requests that contain a body, adding the Content-Length,
  * Content-Type, and Expect headers.
+ *
+ * @final
  */
 class PrepareBodyMiddleware
 {
-    /** @var callable  */
+    /**
+     * @var callable(RequestInterface, array): PromiseInterface
+     */
     private $nextHandler;
 
     /**
-     * @param callable $nextHandler Next handler to invoke.
+     * @param callable(RequestInterface, array): PromiseInterface $nextHandler Next handler to invoke.
      */
     public function __construct(callable $nextHandler)
     {
         $this->nextHandler = $nextHandler;
     }
 
-    /**
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return PromiseInterface
-     */
-    public function __invoke(RequestInterface $request, array $options)
+    public function __invoke(RequestInterface $request, array $options): PromiseInterface
     {
         $fn = $this->nextHandler;
 
@@ -42,7 +40,7 @@ class PrepareBodyMiddleware
         // Add a default content-type if possible.
         if (!$request->hasHeader('Content-Type')) {
             if ($uri = $request->getBody()->getMetadata('uri')) {
-                if ($type = Psr7\mimetype_from_filename($uri)) {
+                if (is_string($uri) && $type = Psr7\MimeType::fromFilename($uri)) {
                     $modify['set_headers']['Content-Type'] = $type;
                 }
             }
@@ -63,25 +61,20 @@ class PrepareBodyMiddleware
         // Add the expect header if needed.
         $this->addExpectHeader($request, $options, $modify);
 
-        return $fn(Psr7\modify_request($request, $modify), $options);
+        return $fn(Psr7\Utils::modifyRequest($request, $modify), $options);
     }
 
     /**
      * Add expect header
-     *
-     * @return void
      */
-    private function addExpectHeader(
-        RequestInterface $request,
-        array $options,
-        array &$modify
-    ) {
+    private function addExpectHeader(RequestInterface $request, array $options, array &$modify): void
+    {
         // Determine if the Expect header should be used
         if ($request->hasHeader('Expect')) {
             return;
         }
 
-        $expect = isset($options['expect']) ? $options['expect'] : null;
+        $expect = $options['expect'] ?? null;
 
         // Return if disabled or if you're not using HTTP/1.1 or HTTP/2.0
         if ($expect === false || $request->getProtocolVersion() < 1.1) {
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php b/civicrm/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
index 008a29b8c7f226401d6d465b691a7e6af7f6c1f8..f67d448bebddcf422e878ea44cb0418f367227d5 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
@@ -1,10 +1,10 @@
 <?php
+
 namespace GuzzleHttp;
 
 use GuzzleHttp\Exception\BadResponseException;
 use GuzzleHttp\Exception\TooManyRedirectsException;
 use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Psr7;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\UriInterface;
@@ -14,13 +14,18 @@ use Psr\Http\Message\UriInterface;
  *
  * Apply this middleware like other middleware using
  * {@see \GuzzleHttp\Middleware::redirect()}.
+ *
+ * @final
  */
 class RedirectMiddleware
 {
-    const HISTORY_HEADER = 'X-Guzzle-Redirect-History';
+    public const HISTORY_HEADER = 'X-Guzzle-Redirect-History';
 
-    const STATUS_HISTORY_HEADER = 'X-Guzzle-Redirect-Status-History';
+    public const STATUS_HISTORY_HEADER = 'X-Guzzle-Redirect-Status-History';
 
+    /**
+     * @var array
+     */
     public static $defaultSettings = [
         'max'             => 5,
         'protocols'       => ['http', 'https'],
@@ -29,24 +34,20 @@ class RedirectMiddleware
         'track_redirects' => false,
     ];
 
-    /** @var callable  */
+    /**
+     * @var callable(RequestInterface, array): PromiseInterface
+     */
     private $nextHandler;
 
     /**
-     * @param callable $nextHandler Next handler to invoke.
+     * @param callable(RequestInterface, array): PromiseInterface $nextHandler Next handler to invoke.
      */
     public function __construct(callable $nextHandler)
     {
         $this->nextHandler = $nextHandler;
     }
 
-    /**
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return PromiseInterface
-     */
-    public function __invoke(RequestInterface $request, array $options)
+    public function __invoke(RequestInterface $request, array $options): PromiseInterface
     {
         $fn = $this->nextHandler;
 
@@ -56,7 +57,7 @@ class RedirectMiddleware
 
         if ($options['allow_redirects'] === true) {
             $options['allow_redirects'] = self::$defaultSettings;
-        } elseif (!is_array($options['allow_redirects'])) {
+        } elseif (!\is_array($options['allow_redirects'])) {
             throw new \InvalidArgumentException('allow_redirects must be true, false, or array');
         } else {
             // Merge the default settings with the provided settings
@@ -74,24 +75,17 @@ class RedirectMiddleware
     }
 
     /**
-     * @param RequestInterface  $request
-     * @param array             $options
-     * @param ResponseInterface $response
-     *
      * @return ResponseInterface|PromiseInterface
      */
-    public function checkRedirect(
-        RequestInterface $request,
-        array $options,
-        ResponseInterface $response
-    ) {
-        if (substr($response->getStatusCode(), 0, 1) != '3'
+    public function checkRedirect(RequestInterface $request, array $options, ResponseInterface $response)
+    {
+        if (\strpos((string) $response->getStatusCode(), '3') !== 0
             || !$response->hasHeader('Location')
         ) {
             return $response;
         }
 
-        $this->guardMax($request, $options);
+        $this->guardMax($request, $response, $options);
         $nextRequest = $this->modifyRequest($request, $options, $response);
 
         // If authorization is handled by curl, unset it if URI is cross-origin.
@@ -103,15 +97,13 @@ class RedirectMiddleware
         }
 
         if (isset($options['allow_redirects']['on_redirect'])) {
-            call_user_func(
-                $options['allow_redirects']['on_redirect'],
+            ($options['allow_redirects']['on_redirect'])(
                 $request,
                 $response,
                 $nextRequest->getUri()
             );
         }
 
-        /** @var PromiseInterface|ResponseInterface $promise */
         $promise = $this($nextRequest, $options);
 
         // Add headers to be able to track history of redirects.
@@ -128,20 +120,19 @@ class RedirectMiddleware
 
     /**
      * Enable tracking on promise.
-     *
-     * @return PromiseInterface
      */
-    private function withTracking(PromiseInterface $promise, $uri, $statusCode)
+    private function withTracking(PromiseInterface $promise, string $uri, int $statusCode): PromiseInterface
     {
         return $promise->then(
-            function (ResponseInterface $response) use ($uri, $statusCode) {
+            static function (ResponseInterface $response) use ($uri, $statusCode) {
                 // Note that we are pushing to the front of the list as this
                 // would be an earlier response than what is currently present
                 // in the history header.
                 $historyHeader = $response->getHeader(self::HISTORY_HEADER);
                 $statusHeader = $response->getHeader(self::STATUS_HISTORY_HEADER);
-                array_unshift($historyHeader, $uri);
-                array_unshift($statusHeader, $statusCode);
+                \array_unshift($historyHeader, $uri);
+                \array_unshift($statusHeader, (string) $statusCode);
+
                 return $response->withHeader(self::HISTORY_HEADER, $historyHeader)
                                 ->withHeader(self::STATUS_HISTORY_HEADER, $statusHeader);
             }
@@ -151,38 +142,22 @@ class RedirectMiddleware
     /**
      * Check for too many redirects.
      *
-     * @return void
-     *
      * @throws TooManyRedirectsException Too many redirects.
      */
-    private function guardMax(RequestInterface $request, array &$options)
+    private function guardMax(RequestInterface $request, ResponseInterface $response, array &$options): void
     {
-        $current = isset($options['__redirect_count'])
-            ? $options['__redirect_count']
-            : 0;
+        $current = $options['__redirect_count']
+            ?? 0;
         $options['__redirect_count'] = $current + 1;
         $max = $options['allow_redirects']['max'];
 
         if ($options['__redirect_count'] > $max) {
-            throw new TooManyRedirectsException(
-                "Will not follow more than {$max} redirects",
-                $request
-            );
+            throw new TooManyRedirectsException("Will not follow more than {$max} redirects", $request, $response);
         }
     }
 
-    /**
-     * @param RequestInterface  $request
-     * @param array             $options
-     * @param ResponseInterface $response
-     *
-     * @return RequestInterface
-     */
-    public function modifyRequest(
-        RequestInterface $request,
-        array $options,
-        ResponseInterface $response
-    ) {
+    public function modifyRequest(RequestInterface $request, array $options, ResponseInterface $response): RequestInterface
+    {
         // Request modifications to apply.
         $modify = [];
         $protocols = $options['allow_redirects']['protocols'];
@@ -194,18 +169,21 @@ class RedirectMiddleware
         if ($statusCode == 303 ||
             ($statusCode <= 302 && !$options['allow_redirects']['strict'])
         ) {
-            $modify['method'] = 'GET';
+            $safeMethods = ['GET', 'HEAD', 'OPTIONS'];
+            $requestMethod = $request->getMethod();
+
+            $modify['method'] = in_array($requestMethod, $safeMethods) ? $requestMethod : 'GET';
             $modify['body'] = '';
         }
 
         $uri = self::redirectUri($request, $response, $protocols);
         if (isset($options['idn_conversion']) && ($options['idn_conversion'] !== false)) {
-            $idnOptions = ($options['idn_conversion'] === true) ? IDNA_DEFAULT : $options['idn_conversion'];
+            $idnOptions = ($options['idn_conversion'] === true) ? \IDNA_DEFAULT : $options['idn_conversion'];
             $uri = Utils::idnUriConvert($uri, $idnOptions);
         }
 
         $modify['uri'] = $uri;
-        Psr7\rewind_body($request);
+        Psr7\Message::rewindBody($request);
 
         // Add the Referer header if it is told to do so and only
         // add the header if we are not redirecting from https to http.
@@ -224,39 +202,25 @@ class RedirectMiddleware
             $modify['remove_headers'][] = 'Cookie';
         }
 
-        return Psr7\modify_request($request, $modify);
+        return Psr7\Utils::modifyRequest($request, $modify);
     }
 
     /**
      * Set the appropriate URL on the request based on the location header.
-     *
-     * @param RequestInterface  $request
-     * @param ResponseInterface $response
-     * @param array             $protocols
-     *
-     * @return UriInterface
      */
     private static function redirectUri(
         RequestInterface $request,
         ResponseInterface $response,
         array $protocols
-    ) {
+    ): UriInterface {
         $location = Psr7\UriResolver::resolve(
             $request->getUri(),
             new Psr7\Uri($response->getHeaderLine('Location'))
         );
 
         // Ensure that the redirect URI is allowed based on the protocols.
-        if (!in_array($location->getScheme(), $protocols)) {
-            throw new BadResponseException(
-                sprintf(
-                    'Redirect URI, %s, does not use one of the allowed redirect protocols: %s',
-                    $location,
-                    implode(', ', $protocols)
-                ),
-                $request,
-                $response
-            );
+        if (!\in_array($location->getScheme(), $protocols)) {
+            throw new BadResponseException(\sprintf('Redirect URI, %s, does not use one of the allowed redirect protocols: %s', $location, \implode(', ', $protocols)), $request, $response);
         }
 
         return $location;
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/RequestOptions.php b/civicrm/vendor/guzzlehttp/guzzle/src/RequestOptions.php
index 355f658f03457e48a615ec368a4fc6d31b83f1ad..542cd72c0972c0d783c140fbe1bd4e5ac06b6660 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/RequestOptions.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/RequestOptions.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp;
 
 /**
@@ -31,7 +32,7 @@ final class RequestOptions
      *   response that was received, and the effective URI. Any return value
      *   from the on_redirect function is ignored.
      */
-    const ALLOW_REDIRECTS = 'allow_redirects';
+    public const ALLOW_REDIRECTS = 'allow_redirects';
 
     /**
      * auth: (array) Pass an array of HTTP authentication parameters to use
@@ -40,13 +41,13 @@ final class RequestOptions
      * authentication type in index [2]. Pass null to disable authentication
      * for a request.
      */
-    const AUTH = 'auth';
+    public const AUTH = 'auth';
 
     /**
      * body: (resource|string|null|int|float|StreamInterface|callable|\Iterator)
      * Body to send in the request.
      */
-    const BODY = 'body';
+    public const BODY = 'body';
 
     /**
      * cert: (string|array) Set to a string to specify the path to a file
@@ -55,42 +56,54 @@ final class RequestOptions
      * file in the first array element followed by the certificate password
      * in the second array element.
      */
-    const CERT = 'cert';
+    public const CERT = 'cert';
 
     /**
      * cookies: (bool|GuzzleHttp\Cookie\CookieJarInterface, default=false)
      * Specifies whether or not cookies are used in a request or what cookie
      * jar to use or what cookies to send. This option only works if your
      * handler has the `cookie` middleware. Valid values are `false` and
-     * an instance of {@see GuzzleHttp\Cookie\CookieJarInterface}.
+     * an instance of {@see \GuzzleHttp\Cookie\CookieJarInterface}.
      */
-    const COOKIES = 'cookies';
+    public const COOKIES = 'cookies';
 
     /**
      * connect_timeout: (float, default=0) Float describing the number of
      * seconds to wait while trying to connect to a server. Use 0 to wait
-     * indefinitely (the default behavior).
+     * 300 seconds (the default behavior).
+     */
+    public const CONNECT_TIMEOUT = 'connect_timeout';
+
+    /**
+     * crypto_method: (int) A value describing the minimum TLS protocol
+     * version to use.
+     *
+     * This setting must be set to one of the
+     * ``STREAM_CRYPTO_METHOD_TLS*_CLIENT`` constants. PHP 7.4 or higher is
+     * required in order to use TLS 1.3, and cURL 7.34.0 or higher is required
+     * in order to specify a crypto method, with cURL 7.52.0 or higher being
+     * required to use TLS 1.3.
      */
-    const CONNECT_TIMEOUT = 'connect_timeout';
+    public const CRYPTO_METHOD = 'crypto_method';
 
     /**
      * debug: (bool|resource) Set to true or set to a PHP stream returned by
      * fopen()  enable debug output with the HTTP handler used to send a
      * request.
      */
-    const DEBUG = 'debug';
+    public const DEBUG = 'debug';
 
     /**
      * decode_content: (bool, default=true) Specify whether or not
      * Content-Encoding responses (gzip, deflate, etc.) are automatically
      * decoded.
      */
-    const DECODE_CONTENT = 'decode_content';
+    public const DECODE_CONTENT = 'decode_content';
 
     /**
      * delay: (int) The amount of time to delay before sending in milliseconds.
      */
-    const DELAY = 'delay';
+    public const DELAY = 'delay';
 
     /**
      * expect: (bool|integer) Controls the behavior of the
@@ -108,7 +121,7 @@ final class RequestOptions
      * size of the body of a request is greater than 1 MB and a request is
      * using HTTP/1.1.
      */
-    const EXPECT = 'expect';
+    public const EXPECT = 'expect';
 
     /**
      * form_params: (array) Associative array of form field names to values
@@ -116,13 +129,13 @@ final class RequestOptions
      * header to application/x-www-form-urlencoded when no Content-Type header
      * is already present.
      */
-    const FORM_PARAMS = 'form_params';
+    public const FORM_PARAMS = 'form_params';
 
     /**
      * headers: (array) Associative array of HTTP headers. Each value MUST be
      * a string or array of strings.
      */
-    const HEADERS = 'headers';
+    public const HEADERS = 'headers';
 
     /**
      * http_errors: (bool, default=true) Set to false to disable exceptions
@@ -130,7 +143,7 @@ final class RequestOptions
      * exceptions will be thrown for 4xx and 5xx responses. This option only
      * works if your handler has the `httpErrors` middleware.
      */
-    const HTTP_ERRORS = 'http_errors';
+    public const HTTP_ERRORS = 'http_errors';
 
     /**
      * idn: (bool|int, default=true) A combination of IDNA_* constants for
@@ -138,14 +151,14 @@ final class RequestOptions
      * disable IDN support completely, or to true to use the default
      * configuration (IDNA_DEFAULT constant).
      */
-    const IDN_CONVERSION = 'idn_conversion';
+    public const IDN_CONVERSION = 'idn_conversion';
 
     /**
      * json: (mixed) Adds JSON data to a request. The provided value is JSON
      * encoded and a Content-Type header of application/json will be added to
      * the request if no Content-Type header is already present.
      */
-    const JSON = 'json';
+    public const JSON = 'json';
 
     /**
      * multipart: (array) Array of associative arrays, each containing a
@@ -156,14 +169,14 @@ final class RequestOptions
      * the part. If no "filename" key is present, then no "filename" attribute
      * will be added to the part.
      */
-    const MULTIPART = 'multipart';
+    public const MULTIPART = 'multipart';
 
     /**
      * on_headers: (callable) A callable that is invoked when the HTTP headers
      * of the response have been received but the body has not yet begun to
      * download.
      */
-    const ON_HEADERS = 'on_headers';
+    public const ON_HEADERS = 'on_headers';
 
     /**
      * on_stats: (callable) allows you to get access to transfer statistics of
@@ -174,7 +187,7 @@ final class RequestOptions
      * the error encountered. Included in the data is the total amount of time
      * taken to send the request.
      */
-    const ON_STATS = 'on_stats';
+    public const ON_STATS = 'on_stats';
 
     /**
      * progress: (callable) Defines a function to invoke when transfer
@@ -183,14 +196,14 @@ final class RequestOptions
      * number of bytes downloaded so far, the number of bytes expected to be
      * uploaded, the number of bytes uploaded so far.
      */
-    const PROGRESS = 'progress';
+    public const PROGRESS = 'progress';
 
     /**
      * proxy: (string|array) Pass a string to specify an HTTP proxy, or an
      * array to specify different proxies for different protocols (where the
      * key is the protocol and the value is a proxy string).
      */
-    const PROXY = 'proxy';
+    public const PROXY = 'proxy';
 
     /**
      * query: (array|string) Associative array of query string values to add
@@ -198,14 +211,14 @@ final class RequestOptions
      * the string representation. Pass a string value if you need more
      * control than what this method provides
      */
-    const QUERY = 'query';
+    public const QUERY = 'query';
 
     /**
      * sink: (resource|string|StreamInterface) Where the data of the
      * response is written to. Defaults to a PHP temp stream. Providing a
      * string will write data to a file by the given name.
      */
-    const SINK = 'sink';
+    public const SINK = 'sink';
 
     /**
      * synchronous: (bool) Set to true to inform HTTP handlers that you intend
@@ -213,7 +226,7 @@ final class RequestOptions
      * that a promise is still returned if you are using one of the async
      * client methods.
      */
-    const SYNCHRONOUS = 'synchronous';
+    public const SYNCHRONOUS = 'synchronous';
 
     /**
      * ssl_key: (array|string) Specify the path to a file containing a private
@@ -221,13 +234,13 @@ final class RequestOptions
      * containing the path to the SSL key in the first array element followed
      * by the password required for the certificate in the second element.
      */
-    const SSL_KEY = 'ssl_key';
+    public const SSL_KEY = 'ssl_key';
 
     /**
      * stream: Set to true to attempt to stream a response rather than
      * download it all up-front.
      */
-    const STREAM = 'stream';
+    public const STREAM = 'stream';
 
     /**
      * verify: (bool|string, default=true) Describes the SSL certificate
@@ -237,27 +250,27 @@ final class RequestOptions
      * is insecure!). Set to a string to provide the path to a CA bundle on
      * disk to enable verification using a custom certificate.
      */
-    const VERIFY = 'verify';
+    public const VERIFY = 'verify';
 
     /**
      * timeout: (float, default=0) Float describing the timeout of the
      * request in seconds. Use 0 to wait indefinitely (the default behavior).
      */
-    const TIMEOUT = 'timeout';
+    public const TIMEOUT = 'timeout';
 
     /**
      * read_timeout: (float, default=default_socket_timeout ini setting) Float describing
      * the body read timeout, for stream requests.
      */
-    const READ_TIMEOUT = 'read_timeout';
+    public const READ_TIMEOUT = 'read_timeout';
 
     /**
      * version: (float) Specifies the HTTP protocol version to attempt to use.
      */
-    const VERSION = 'version';
+    public const VERSION = 'version';
 
     /**
      * force_ip_resolve: (bool) Force client to use only ipv4 or ipv6 protocol
      */
-    const FORCE_IP_RESOLVE = 'force_ip_resolve';
+    public const FORCE_IP_RESOLVE = 'force_ip_resolve';
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php b/civicrm/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
index 5acc8c5c392eb717c00d0fc5643dacaf670b9149..0236a9d5478ff51523a2d6eb427baf35341573f2 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
@@ -1,42 +1,47 @@
 <?php
+
 namespace GuzzleHttp;
 
+use GuzzleHttp\Promise as P;
 use GuzzleHttp\Promise\PromiseInterface;
-use GuzzleHttp\Promise\RejectedPromise;
-use GuzzleHttp\Psr7;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 
 /**
  * Middleware that retries requests based on the boolean result of
  * invoking the provided "decider" function.
+ *
+ * @final
  */
 class RetryMiddleware
 {
-    /** @var callable  */
+    /**
+     * @var callable(RequestInterface, array): PromiseInterface
+     */
     private $nextHandler;
 
-    /** @var callable */
+    /**
+     * @var callable
+     */
     private $decider;
 
-    /** @var callable */
+    /**
+     * @var callable(int)
+     */
     private $delay;
 
     /**
-     * @param callable $decider     Function that accepts the number of retries,
-     *                              a request, [response], and [exception] and
-     *                              returns true if the request is to be
-     *                              retried.
-     * @param callable $nextHandler Next handler to invoke.
-     * @param callable $delay       Function that accepts the number of retries
-     *                              and [response] and returns the number of
-     *                              milliseconds to delay.
+     * @param callable                                            $decider     Function that accepts the number of retries,
+     *                                                                         a request, [response], and [exception] and
+     *                                                                         returns true if the request is to be
+     *                                                                         retried.
+     * @param callable(RequestInterface, array): PromiseInterface $nextHandler Next handler to invoke.
+     * @param (callable(int): int)|null                           $delay       Function that accepts the number of retries
+     *                                                                         and returns the number of
+     *                                                                         milliseconds to delay.
      */
-    public function __construct(
-        callable $decider,
-        callable $nextHandler,
-        callable $delay = null
-    ) {
+    public function __construct(callable $decider, callable $nextHandler, callable $delay = null)
+    {
         $this->decider = $decider;
         $this->nextHandler = $nextHandler;
         $this->delay = $delay ?: __CLASS__ . '::exponentialDelay';
@@ -45,22 +50,14 @@ class RetryMiddleware
     /**
      * Default exponential backoff delay function.
      *
-     * @param int $retries
-     *
      * @return int milliseconds.
      */
-    public static function exponentialDelay($retries)
+    public static function exponentialDelay(int $retries): int
     {
-        return (int) pow(2, $retries - 1) * 1000;
+        return (int) \pow(2, $retries - 1) * 1000;
     }
 
-    /**
-     * @param RequestInterface $request
-     * @param array            $options
-     *
-     * @return PromiseInterface
-     */
-    public function __invoke(RequestInterface $request, array $options)
+    public function __invoke(RequestInterface $request, array $options): PromiseInterface
     {
         if (!isset($options['retries'])) {
             $options['retries'] = 0;
@@ -76,52 +73,43 @@ class RetryMiddleware
 
     /**
      * Execute fulfilled closure
-     *
-     * @return mixed
      */
-    private function onFulfilled(RequestInterface $req, array $options)
+    private function onFulfilled(RequestInterface $request, array $options): callable
     {
-        return function ($value) use ($req, $options) {
-            if (!call_user_func(
-                $this->decider,
+        return function ($value) use ($request, $options) {
+            if (!($this->decider)(
                 $options['retries'],
-                $req,
+                $request,
                 $value,
                 null
             )) {
                 return $value;
             }
-            return $this->doRetry($req, $options, $value);
+            return $this->doRetry($request, $options, $value);
         };
     }
 
     /**
      * Execute rejected closure
-     *
-     * @return callable
      */
-    private function onRejected(RequestInterface $req, array $options)
+    private function onRejected(RequestInterface $req, array $options): callable
     {
         return function ($reason) use ($req, $options) {
-            if (!call_user_func(
-                $this->decider,
+            if (!($this->decider)(
                 $options['retries'],
                 $req,
                 null,
                 $reason
             )) {
-                return \GuzzleHttp\Promise\rejection_for($reason);
+                return P\Create::rejectionFor($reason);
             }
             return $this->doRetry($req, $options);
         };
     }
 
-    /**
-     * @return self
-     */
-    private function doRetry(RequestInterface $request, array $options, ResponseInterface $response = null)
+    private function doRetry(RequestInterface $request, array $options, ResponseInterface $response = null): PromiseInterface
     {
-        $options['delay'] = call_user_func($this->delay, ++$options['retries'], $response);
+        $options['delay'] = ($this->delay)(++$options['retries'], $response, $request);
 
         return $this($request, $options);
     }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/TransferStats.php b/civicrm/vendor/guzzlehttp/guzzle/src/TransferStats.php
index 87fb3c00164d274d9b5cec535339bcfb059efc84..93fa334c8d7aa71688628270b30f317c97e4d2d9 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/TransferStats.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/TransferStats.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp;
 
 use Psr\Http\Message\RequestInterface;
@@ -11,10 +12,29 @@ use Psr\Http\Message\UriInterface;
  */
 final class TransferStats
 {
+    /**
+     * @var RequestInterface
+     */
     private $request;
+
+    /**
+     * @var ResponseInterface|null
+     */
     private $response;
+
+    /**
+     * @var float|null
+     */
     private $transferTime;
+
+    /**
+     * @var array
+     */
     private $handlerStats;
+
+    /**
+     * @var mixed|null
+     */
     private $handlerErrorData;
 
     /**
@@ -26,10 +46,10 @@ final class TransferStats
      */
     public function __construct(
         RequestInterface $request,
-        ResponseInterface $response = null,
-        $transferTime = null,
+        ?ResponseInterface $response = null,
+        ?float $transferTime = null,
         $handlerErrorData = null,
-        $handlerStats = []
+        array $handlerStats = []
     ) {
         $this->request = $request;
         $this->response = $response;
@@ -38,30 +58,23 @@ final class TransferStats
         $this->handlerStats = $handlerStats;
     }
 
-    /**
-     * @return RequestInterface
-     */
-    public function getRequest()
+    public function getRequest(): RequestInterface
     {
         return $this->request;
     }
 
     /**
      * Returns the response that was received (if any).
-     *
-     * @return ResponseInterface|null
      */
-    public function getResponse()
+    public function getResponse(): ?ResponseInterface
     {
         return $this->response;
     }
 
     /**
      * Returns true if a response was received.
-     *
-     * @return bool
      */
-    public function hasResponse()
+    public function hasResponse(): bool
     {
         return $this->response !== null;
     }
@@ -82,10 +95,8 @@ final class TransferStats
 
     /**
      * Get the effective URI the request was sent to.
-     *
-     * @return UriInterface
      */
-    public function getEffectiveUri()
+    public function getEffectiveUri(): UriInterface
     {
         return $this->request->getUri();
     }
@@ -95,17 +106,15 @@ final class TransferStats
      *
      * @return float|null Time in seconds.
      */
-    public function getTransferTime()
+    public function getTransferTime(): ?float
     {
         return $this->transferTime;
     }
 
     /**
      * Gets an array of all of the handler specific transfer data.
-     *
-     * @return array
      */
-    public function getHandlerStats()
+    public function getHandlerStats(): array
     {
         return $this->handlerStats;
     }
@@ -117,10 +126,8 @@ final class TransferStats
      *
      * @return mixed|null
      */
-    public function getHandlerStat($stat)
+    public function getHandlerStat(string $stat)
     {
-        return isset($this->handlerStats[$stat])
-            ? $this->handlerStats[$stat]
-            : null;
+        return $this->handlerStats[$stat] ?? null;
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/UriTemplate.php b/civicrm/vendor/guzzlehttp/guzzle/src/UriTemplate.php
deleted file mode 100644
index 96dcfd09cd71fb4a2c40b38445faee78568ba0cc..0000000000000000000000000000000000000000
--- a/civicrm/vendor/guzzlehttp/guzzle/src/UriTemplate.php
+++ /dev/null
@@ -1,237 +0,0 @@
-<?php
-namespace GuzzleHttp;
-
-/**
- * Expands URI templates. Userland implementation of PECL uri_template.
- *
- * @link http://tools.ietf.org/html/rfc6570
- */
-class UriTemplate
-{
-    /** @var string URI template */
-    private $template;
-
-    /** @var array Variables to use in the template expansion */
-    private $variables;
-
-    /** @var array Hash for quick operator lookups */
-    private static $operatorHash = [
-        ''  => ['prefix' => '',  'joiner' => ',', 'query' => false],
-        '+' => ['prefix' => '',  'joiner' => ',', 'query' => false],
-        '#' => ['prefix' => '#', 'joiner' => ',', 'query' => false],
-        '.' => ['prefix' => '.', 'joiner' => '.', 'query' => false],
-        '/' => ['prefix' => '/', 'joiner' => '/', 'query' => false],
-        ';' => ['prefix' => ';', 'joiner' => ';', 'query' => true],
-        '?' => ['prefix' => '?', 'joiner' => '&', 'query' => true],
-        '&' => ['prefix' => '&', 'joiner' => '&', 'query' => true]
-    ];
-
-    /** @var array Delimiters */
-    private static $delims = [':', '/', '?', '#', '[', ']', '@', '!', '$',
-        '&', '\'', '(', ')', '*', '+', ',', ';', '='];
-
-    /** @var array Percent encoded delimiters */
-    private static $delimsPct = ['%3A', '%2F', '%3F', '%23', '%5B', '%5D',
-        '%40', '%21', '%24', '%26', '%27', '%28', '%29', '%2A', '%2B', '%2C',
-        '%3B', '%3D'];
-
-    public function expand($template, array $variables)
-    {
-        if (false === strpos($template, '{')) {
-            return $template;
-        }
-
-        $this->template = $template;
-        $this->variables = $variables;
-
-        return preg_replace_callback(
-            '/\{([^\}]+)\}/',
-            [$this, 'expandMatch'],
-            $this->template
-        );
-    }
-
-    /**
-     * Parse an expression into parts
-     *
-     * @param string $expression Expression to parse
-     *
-     * @return array Returns an associative array of parts
-     */
-    private function parseExpression($expression)
-    {
-        $result = [];
-
-        if (isset(self::$operatorHash[$expression[0]])) {
-            $result['operator'] = $expression[0];
-            $expression = substr($expression, 1);
-        } else {
-            $result['operator'] = '';
-        }
-
-        foreach (explode(',', $expression) as $value) {
-            $value = trim($value);
-            $varspec = [];
-            if ($colonPos = strpos($value, ':')) {
-                $varspec['value'] = substr($value, 0, $colonPos);
-                $varspec['modifier'] = ':';
-                $varspec['position'] = (int) substr($value, $colonPos + 1);
-            } elseif (substr($value, -1) === '*') {
-                $varspec['modifier'] = '*';
-                $varspec['value'] = substr($value, 0, -1);
-            } else {
-                $varspec['value'] = (string) $value;
-                $varspec['modifier'] = '';
-            }
-            $result['values'][] = $varspec;
-        }
-
-        return $result;
-    }
-
-    /**
-     * Process an expansion
-     *
-     * @param array $matches Matches met in the preg_replace_callback
-     *
-     * @return string Returns the replacement string
-     */
-    private function expandMatch(array $matches)
-    {
-        static $rfc1738to3986 = ['+' => '%20', '%7e' => '~'];
-
-        $replacements = [];
-        $parsed = self::parseExpression($matches[1]);
-        $prefix = self::$operatorHash[$parsed['operator']]['prefix'];
-        $joiner = self::$operatorHash[$parsed['operator']]['joiner'];
-        $useQuery = self::$operatorHash[$parsed['operator']]['query'];
-
-        foreach ($parsed['values'] as $value) {
-            if (!isset($this->variables[$value['value']])) {
-                continue;
-            }
-
-            $variable = $this->variables[$value['value']];
-            $actuallyUseQuery = $useQuery;
-            $expanded = '';
-
-            if (is_array($variable)) {
-                $isAssoc = $this->isAssoc($variable);
-                $kvp = [];
-                foreach ($variable as $key => $var) {
-                    if ($isAssoc) {
-                        $key = rawurlencode($key);
-                        $isNestedArray = is_array($var);
-                    } else {
-                        $isNestedArray = false;
-                    }
-
-                    if (!$isNestedArray) {
-                        $var = rawurlencode($var);
-                        if ($parsed['operator'] === '+' ||
-                            $parsed['operator'] === '#'
-                        ) {
-                            $var = $this->decodeReserved($var);
-                        }
-                    }
-
-                    if ($value['modifier'] === '*') {
-                        if ($isAssoc) {
-                            if ($isNestedArray) {
-                                // Nested arrays must allow for deeply nested
-                                // structures.
-                                $var = strtr(
-                                    http_build_query([$key => $var]),
-                                    $rfc1738to3986
-                                );
-                            } else {
-                                $var = $key . '=' . $var;
-                            }
-                        } elseif ($key > 0 && $actuallyUseQuery) {
-                            $var = $value['value'] . '=' . $var;
-                        }
-                    }
-
-                    $kvp[$key] = $var;
-                }
-
-                if (empty($variable)) {
-                    $actuallyUseQuery = false;
-                } elseif ($value['modifier'] === '*') {
-                    $expanded = implode($joiner, $kvp);
-                    if ($isAssoc) {
-                        // Don't prepend the value name when using the explode
-                        // modifier with an associative array.
-                        $actuallyUseQuery = false;
-                    }
-                } else {
-                    if ($isAssoc) {
-                        // When an associative array is encountered and the
-                        // explode modifier is not set, then the result must be
-                        // a comma separated list of keys followed by their
-                        // respective values.
-                        foreach ($kvp as $k => &$v) {
-                            $v = $k . ',' . $v;
-                        }
-                    }
-                    $expanded = implode(',', $kvp);
-                }
-            } else {
-                if ($value['modifier'] === ':') {
-                    $variable = substr($variable, 0, $value['position']);
-                }
-                $expanded = rawurlencode($variable);
-                if ($parsed['operator'] === '+' || $parsed['operator'] === '#') {
-                    $expanded = $this->decodeReserved($expanded);
-                }
-            }
-
-            if ($actuallyUseQuery) {
-                if (!$expanded && $joiner !== '&') {
-                    $expanded = $value['value'];
-                } else {
-                    $expanded = $value['value'] . '=' . $expanded;
-                }
-            }
-
-            $replacements[] = $expanded;
-        }
-
-        $ret = implode($joiner, $replacements);
-        if ($ret && $prefix) {
-            return $prefix . $ret;
-        }
-
-        return $ret;
-    }
-
-    /**
-     * Determines if an array is associative.
-     *
-     * This makes the assumption that input arrays are sequences or hashes.
-     * This assumption is a tradeoff for accuracy in favor of speed, but it
-     * should work in almost every case where input is supplied for a URI
-     * template.
-     *
-     * @param array $array Array to check
-     *
-     * @return bool
-     */
-    private function isAssoc(array $array)
-    {
-        return $array && array_keys($array)[0] !== 0;
-    }
-
-    /**
-     * Removes percent encoding on reserved characters (used with + and #
-     * modifiers).
-     *
-     * @param string $string String to fix
-     *
-     * @return string
-     */
-    private function decodeReserved($string)
-    {
-        return str_replace(self::$delimsPct, self::$delims, $string);
-    }
-}
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/Utils.php b/civicrm/vendor/guzzlehttp/guzzle/src/Utils.php
index c698acbf02fbebad93d2e8ec014617f37b23360c..e355f3212f7582bf8658c7b426391857920a5209 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/Utils.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/Utils.php
@@ -1,41 +1,334 @@
 <?php
+
 namespace GuzzleHttp;
 
 use GuzzleHttp\Exception\InvalidArgumentException;
+use GuzzleHttp\Handler\CurlHandler;
+use GuzzleHttp\Handler\CurlMultiHandler;
+use GuzzleHttp\Handler\Proxy;
+use GuzzleHttp\Handler\StreamHandler;
 use Psr\Http\Message\UriInterface;
-use Symfony\Polyfill\Intl\Idn\Idn;
 
 final class Utils
 {
+    /**
+     * Debug function used to describe the provided value type and class.
+     *
+     * @param mixed $input
+     *
+     * @return string Returns a string containing the type of the variable and
+     *                if a class is provided, the class name.
+     */
+    public static function describeType($input): string
+    {
+        switch (\gettype($input)) {
+            case 'object':
+                return 'object(' . \get_class($input) . ')';
+            case 'array':
+                return 'array(' . \count($input) . ')';
+            default:
+                \ob_start();
+                \var_dump($input);
+                // normalize float vs double
+                /** @var string $varDumpContent */
+                $varDumpContent = \ob_get_clean();
+
+                return \str_replace('double(', 'float(', \rtrim($varDumpContent));
+        }
+    }
+
+    /**
+     * Parses an array of header lines into an associative array of headers.
+     *
+     * @param iterable $lines Header lines array of strings in the following
+     *                        format: "Name: Value"
+     */
+    public static function headersFromLines(iterable $lines): array
+    {
+        $headers = [];
+
+        foreach ($lines as $line) {
+            $parts = \explode(':', $line, 2);
+            $headers[\trim($parts[0])][] = isset($parts[1]) ? \trim($parts[1]) : null;
+        }
+
+        return $headers;
+    }
+
+    /**
+     * Returns a debug stream based on the provided variable.
+     *
+     * @param mixed $value Optional value
+     *
+     * @return resource
+     */
+    public static function debugResource($value = null)
+    {
+        if (\is_resource($value)) {
+            return $value;
+        }
+        if (\defined('STDOUT')) {
+            return \STDOUT;
+        }
+
+        return \GuzzleHttp\Psr7\Utils::tryFopen('php://output', 'w');
+    }
+
+    /**
+     * Chooses and creates a default handler to use based on the environment.
+     *
+     * The returned handler is not wrapped by any default middlewares.
+     *
+     * @throws \RuntimeException if no viable Handler is available.
+     *
+     * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the best handler for the given system.
+     */
+    public static function chooseHandler(): callable
+    {
+        $handler = null;
+
+        if (\defined('CURLOPT_CUSTOMREQUEST')) {
+            if (\function_exists('curl_multi_exec') && \function_exists('curl_exec')) {
+                $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler());
+            } elseif (\function_exists('curl_exec')) {
+                $handler = new CurlHandler();
+            } elseif (\function_exists('curl_multi_exec')) {
+                $handler = new CurlMultiHandler();
+            }
+        }
+
+        if (\ini_get('allow_url_fopen')) {
+            $handler = $handler
+                ? Proxy::wrapStreaming($handler, new StreamHandler())
+                : new StreamHandler();
+        } elseif (!$handler) {
+            throw new \RuntimeException('GuzzleHttp requires cURL, the allow_url_fopen ini setting, or a custom HTTP handler.');
+        }
+
+        return $handler;
+    }
+
+    /**
+     * Get the default User-Agent string to use with Guzzle.
+     */
+    public static function defaultUserAgent(): string
+    {
+        return sprintf('GuzzleHttp/%d', ClientInterface::MAJOR_VERSION);
+    }
+
+    /**
+     * Returns the default cacert bundle for the current system.
+     *
+     * First, the openssl.cafile and curl.cainfo php.ini settings are checked.
+     * If those settings are not configured, then the common locations for
+     * bundles found on Red Hat, CentOS, Fedora, Ubuntu, Debian, FreeBSD, OS X
+     * and Windows are checked. If any of these file locations are found on
+     * disk, they will be utilized.
+     *
+     * Note: the result of this function is cached for subsequent calls.
+     *
+     * @throws \RuntimeException if no bundle can be found.
+     *
+     * @deprecated Utils::defaultCaBundle will be removed in guzzlehttp/guzzle:8.0. This method is not needed in PHP 5.6+.
+     */
+    public static function defaultCaBundle(): string
+    {
+        static $cached = null;
+        static $cafiles = [
+            // Red Hat, CentOS, Fedora (provided by the ca-certificates package)
+            '/etc/pki/tls/certs/ca-bundle.crt',
+            // Ubuntu, Debian (provided by the ca-certificates package)
+            '/etc/ssl/certs/ca-certificates.crt',
+            // FreeBSD (provided by the ca_root_nss package)
+            '/usr/local/share/certs/ca-root-nss.crt',
+            // SLES 12 (provided by the ca-certificates package)
+            '/var/lib/ca-certificates/ca-bundle.pem',
+            // OS X provided by homebrew (using the default path)
+            '/usr/local/etc/openssl/cert.pem',
+            // Google app engine
+            '/etc/ca-certificates.crt',
+            // Windows?
+            'C:\\windows\\system32\\curl-ca-bundle.crt',
+            'C:\\windows\\curl-ca-bundle.crt',
+        ];
+
+        if ($cached) {
+            return $cached;
+        }
+
+        if ($ca = \ini_get('openssl.cafile')) {
+            return $cached = $ca;
+        }
+
+        if ($ca = \ini_get('curl.cainfo')) {
+            return $cached = $ca;
+        }
+
+        foreach ($cafiles as $filename) {
+            if (\file_exists($filename)) {
+                return $cached = $filename;
+            }
+        }
+
+        throw new \RuntimeException(
+            <<< EOT
+No system CA bundle could be found in any of the the common system locations.
+PHP versions earlier than 5.6 are not properly configured to use the system's
+CA bundle by default. In order to verify peer certificates, you will need to
+supply the path on disk to a certificate bundle to the 'verify' request
+option: http://docs.guzzlephp.org/en/latest/clients.html#verify. If you do not
+need a specific certificate bundle, then Mozilla provides a commonly used CA
+bundle which can be downloaded here (provided by the maintainer of cURL):
+https://curl.haxx.se/ca/cacert.pem. Once
+you have a CA bundle available on disk, you can set the 'openssl.cafile' PHP
+ini setting to point to the path to the file, allowing you to omit the 'verify'
+request option. See https://curl.haxx.se/docs/sslcerts.html for more
+information.
+EOT
+        );
+    }
+
+    /**
+     * Creates an associative array of lowercase header names to the actual
+     * header casing.
+     */
+    public static function normalizeHeaderKeys(array $headers): array
+    {
+        $result = [];
+        foreach (\array_keys($headers) as $key) {
+            $result[\strtolower($key)] = $key;
+        }
+
+        return $result;
+    }
+
+    /**
+     * Returns true if the provided host matches any of the no proxy areas.
+     *
+     * This method will strip a port from the host if it is present. Each pattern
+     * can be matched with an exact match (e.g., "foo.com" == "foo.com") or a
+     * partial match: (e.g., "foo.com" == "baz.foo.com" and ".foo.com" ==
+     * "baz.foo.com", but ".foo.com" != "foo.com").
+     *
+     * Areas are matched in the following cases:
+     * 1. "*" (without quotes) always matches any hosts.
+     * 2. An exact match.
+     * 3. The area starts with "." and the area is the last part of the host. e.g.
+     *    '.mit.edu' will match any host that ends with '.mit.edu'.
+     *
+     * @param string   $host         Host to check against the patterns.
+     * @param string[] $noProxyArray An array of host patterns.
+     *
+     * @throws InvalidArgumentException
+     */
+    public static function isHostInNoProxy(string $host, array $noProxyArray): bool
+    {
+        if (\strlen($host) === 0) {
+            throw new InvalidArgumentException('Empty host provided');
+        }
+
+        // Strip port if present.
+        [$host] = \explode(':', $host, 2);
+
+        foreach ($noProxyArray as $area) {
+            // Always match on wildcards.
+            if ($area === '*') {
+                return true;
+            }
+
+            if (empty($area)) {
+                // Don't match on empty values.
+                continue;
+            }
+
+            if ($area === $host) {
+                // Exact matches.
+                return true;
+            }
+            // Special match if the area when prefixed with ".". Remove any
+            // existing leading "." and add a new leading ".".
+            $area = '.' . \ltrim($area, '.');
+            if (\substr($host, -(\strlen($area))) === $area) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Wrapper for json_decode that throws when an error occurs.
+     *
+     * @param string $json    JSON data to parse
+     * @param bool   $assoc   When true, returned objects will be converted
+     *                        into associative arrays.
+     * @param int    $depth   User specified recursion depth.
+     * @param int    $options Bitmask of JSON decode options.
+     *
+     * @return object|array|string|int|float|bool|null
+     *
+     * @throws InvalidArgumentException if the JSON cannot be decoded.
+     *
+     * @link https://www.php.net/manual/en/function.json-decode.php
+     */
+    public static function jsonDecode(string $json, bool $assoc = false, int $depth = 512, int $options = 0)
+    {
+        $data = \json_decode($json, $assoc, $depth, $options);
+        if (\JSON_ERROR_NONE !== \json_last_error()) {
+            throw new InvalidArgumentException('json_decode error: ' . \json_last_error_msg());
+        }
+
+        return $data;
+    }
+
+    /**
+     * Wrapper for JSON encoding that throws when an error occurs.
+     *
+     * @param mixed $value   The value being encoded
+     * @param int   $options JSON encode option bitmask
+     * @param int   $depth   Set the maximum depth. Must be greater than zero.
+     *
+     * @throws InvalidArgumentException if the JSON cannot be encoded.
+     *
+     * @link https://www.php.net/manual/en/function.json-encode.php
+     */
+    public static function jsonEncode($value, int $options = 0, int $depth = 512): string
+    {
+        $json = \json_encode($value, $options, $depth);
+        if (\JSON_ERROR_NONE !== \json_last_error()) {
+            throw new InvalidArgumentException('json_encode error: ' . \json_last_error_msg());
+        }
+
+        /** @var string */
+        return $json;
+    }
+
     /**
      * Wrapper for the hrtime() or microtime() functions
      * (depending on the PHP version, one of the two is used)
      *
-     * @return float|mixed UNIX timestamp
+     * @return float UNIX timestamp
      *
      * @internal
      */
-    public static function currentTime()
+    public static function currentTime(): float
     {
-        return function_exists('hrtime') ? hrtime(true) / 1e9 : microtime(true);
+        return (float) \function_exists('hrtime') ? \hrtime(true) / 1e9 : \microtime(true);
     }
 
     /**
-     * @param int $options
-     *
-     * @return UriInterface
      * @throws InvalidArgumentException
      *
      * @internal
      */
-    public static function idnUriConvert(UriInterface $uri, $options = 0)
+    public static function idnUriConvert(UriInterface $uri, int $options = 0): UriInterface
     {
         if ($uri->getHost()) {
             $asciiHost = self::idnToAsci($uri->getHost(), $options, $info);
             if ($asciiHost === false) {
-                $errorBitSet = isset($info['errors']) ? $info['errors'] : 0;
+                $errorBitSet = $info['errors'] ?? 0;
 
-                $errorConstants = array_filter(array_keys(get_defined_constants()), function ($name) {
+                $errorConstants = array_filter(array_keys(get_defined_constants()), static function (string $name): bool {
                     return substr($name, 0, 11) === 'IDNA_ERROR_';
                 });
 
@@ -52,11 +345,10 @@ final class Utils
                 }
 
                 throw new InvalidArgumentException($errorMessage);
-            } else {
-                if ($uri->getHost() !== $asciiHost) {
-                    // Replace URI only if the ASCII version is different
-                    $uri = $uri->withHost($asciiHost);
-                }
+            }
+            if ($uri->getHost() !== $asciiHost) {
+                // Replace URI only if the ASCII version is different
+                $uri = $uri->withHost($asciiHost);
             }
         }
 
@@ -64,29 +356,30 @@ final class Utils
     }
 
     /**
-     * @param string $domain
-     * @param int    $options
-     * @param array  $info
-     *
-     * @return string|false
+     * @internal
      */
-    private static function idnToAsci($domain, $options, &$info = [])
+    public static function getenv(string $name): ?string
     {
-        if (\preg_match('%^[ -~]+$%', $domain) === 1) {
-            return $domain;
+        if (isset($_SERVER[$name])) {
+            return (string) $_SERVER[$name];
         }
 
-        if (\extension_loaded('intl') && defined('INTL_IDNA_VARIANT_UTS46')) {
-            return \idn_to_ascii($domain, $options, INTL_IDNA_VARIANT_UTS46, $info);
+        if (\PHP_SAPI === 'cli' && ($value = \getenv($name)) !== false && $value !== null) {
+            return (string) $value;
         }
 
-        /*
-         * The Idn class is marked as @internal. Verify that class and method exists.
-         */
-        if (method_exists(Idn::class, 'idn_to_ascii')) {
-            return Idn::idn_to_ascii($domain, $options, Idn::INTL_IDNA_VARIANT_UTS46, $info);
+        return null;
+    }
+
+    /**
+     * @return string|false
+     */
+    private static function idnToAsci(string $domain, int $options, ?array &$info = [])
+    {
+        if (\function_exists('idn_to_ascii') && \defined('INTL_IDNA_VARIANT_UTS46')) {
+            return \idn_to_ascii($domain, $options, \INTL_IDNA_VARIANT_UTS46, $info);
         }
 
-        throw new \RuntimeException('ext-intl or symfony/polyfill-intl-idn not loaded or too old');
+        throw new \Error('ext-idn or symfony/polyfill-intl-idn not loaded or too old');
     }
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/functions.php b/civicrm/vendor/guzzlehttp/guzzle/src/functions.php
index c2afd8c7bb19d1fa4e14f02da995348abd1414ab..a70d2cbf3f79bfd9661667916a5bf8ca593b82cb 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/functions.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/functions.php
@@ -1,77 +1,34 @@
 <?php
-namespace GuzzleHttp;
-
-use GuzzleHttp\Handler\CurlHandler;
-use GuzzleHttp\Handler\CurlMultiHandler;
-use GuzzleHttp\Handler\Proxy;
-use GuzzleHttp\Handler\StreamHandler;
-
-/**
- * Expands a URI template
- *
- * @param string $template  URI template
- * @param array  $variables Template variables
- *
- * @return string
- */
-function uri_template($template, array $variables)
-{
-    if (extension_loaded('uri_template')) {
-        // @codeCoverageIgnoreStart
-        return \uri_template($template, $variables);
-        // @codeCoverageIgnoreEnd
-    }
 
-    static $uriTemplate;
-    if (!$uriTemplate) {
-        $uriTemplate = new UriTemplate();
-    }
-
-    return $uriTemplate->expand($template, $variables);
-}
+namespace GuzzleHttp;
 
 /**
  * Debug function used to describe the provided value type and class.
  *
- * @param mixed $input
+ * @param mixed $input Any type of variable to describe the type of. This
+ *                     parameter misses a typehint because of that.
  *
  * @return string Returns a string containing the type of the variable and
  *                if a class is provided, the class name.
+ *
+ * @deprecated describe_type will be removed in guzzlehttp/guzzle:8.0. Use Utils::describeType instead.
  */
-function describe_type($input)
+function describe_type($input): string
 {
-    switch (gettype($input)) {
-        case 'object':
-            return 'object(' . get_class($input) . ')';
-        case 'array':
-            return 'array(' . count($input) . ')';
-        default:
-            ob_start();
-            var_dump($input);
-            // normalize float vs double
-            return str_replace('double(', 'float(', rtrim(ob_get_clean()));
-    }
+    return Utils::describeType($input);
 }
 
 /**
  * Parses an array of header lines into an associative array of headers.
  *
  * @param iterable $lines Header lines array of strings in the following
- *                     format: "Name: Value"
- * @return array
+ *                        format: "Name: Value"
+ *
+ * @deprecated headers_from_lines will be removed in guzzlehttp/guzzle:8.0. Use Utils::headersFromLines instead.
  */
-function headers_from_lines($lines)
+function headers_from_lines(iterable $lines): array
 {
-    $headers = [];
-
-    foreach ($lines as $line) {
-        $parts = explode(':', $line, 2);
-        $headers[trim($parts[0])][] = isset($parts[1])
-            ? trim($parts[1])
-            : null;
-    }
-
-    return $headers;
+    return Utils::headersFromLines($lines);
 }
 
 /**
@@ -80,16 +37,12 @@ function headers_from_lines($lines)
  * @param mixed $value Optional value
  *
  * @return resource
+ *
+ * @deprecated debug_resource will be removed in guzzlehttp/guzzle:8.0. Use Utils::debugResource instead.
  */
 function debug_resource($value = null)
 {
-    if (is_resource($value)) {
-        return $value;
-    } elseif (defined('STDOUT')) {
-        return STDOUT;
-    }
-
-    return fopen('php://output', 'w');
+    return Utils::debugResource($value);
 }
 
 /**
@@ -97,50 +50,25 @@ function debug_resource($value = null)
  *
  * The returned handler is not wrapped by any default middlewares.
  *
- * @return callable Returns the best handler for the given system.
  * @throws \RuntimeException if no viable Handler is available.
+ *
+ * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the best handler for the given system.
+ *
+ * @deprecated choose_handler will be removed in guzzlehttp/guzzle:8.0. Use Utils::chooseHandler instead.
  */
-function choose_handler()
+function choose_handler(): callable
 {
-    $handler = null;
-    if (function_exists('curl_multi_exec') && function_exists('curl_exec')) {
-        $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler());
-    } elseif (function_exists('curl_exec')) {
-        $handler = new CurlHandler();
-    } elseif (function_exists('curl_multi_exec')) {
-        $handler = new CurlMultiHandler();
-    }
-
-    if (ini_get('allow_url_fopen')) {
-        $handler = $handler
-            ? Proxy::wrapStreaming($handler, new StreamHandler())
-            : new StreamHandler();
-    } elseif (!$handler) {
-        throw new \RuntimeException('GuzzleHttp requires cURL, the '
-            . 'allow_url_fopen ini setting, or a custom HTTP handler.');
-    }
-
-    return $handler;
+    return Utils::chooseHandler();
 }
 
 /**
- * Get the default User-Agent string to use with Guzzle
+ * Get the default User-Agent string to use with Guzzle.
  *
- * @return string
+ * @deprecated default_user_agent will be removed in guzzlehttp/guzzle:8.0. Use Utils::defaultUserAgent instead.
  */
-function default_user_agent()
+function default_user_agent(): string
 {
-    static $defaultAgent = '';
-
-    if (!$defaultAgent) {
-        $defaultAgent = 'GuzzleHttp/' . Client::VERSION;
-        if (extension_loaded('curl') && function_exists('curl_version')) {
-            $defaultAgent .= ' curl/' . \curl_version()['version'];
-        }
-        $defaultAgent .= ' PHP/' . PHP_VERSION;
-    }
-
-    return $defaultAgent;
+    return Utils::defaultUserAgent();
 }
 
 /**
@@ -154,82 +82,24 @@ function default_user_agent()
  *
  * Note: the result of this function is cached for subsequent calls.
  *
- * @return string
  * @throws \RuntimeException if no bundle can be found.
+ *
+ * @deprecated default_ca_bundle will be removed in guzzlehttp/guzzle:8.0. This function is not needed in PHP 5.6+.
  */
-function default_ca_bundle()
+function default_ca_bundle(): string
 {
-    static $cached = null;
-    static $cafiles = [
-        // Red Hat, CentOS, Fedora (provided by the ca-certificates package)
-        '/etc/pki/tls/certs/ca-bundle.crt',
-        // Ubuntu, Debian (provided by the ca-certificates package)
-        '/etc/ssl/certs/ca-certificates.crt',
-        // FreeBSD (provided by the ca_root_nss package)
-        '/usr/local/share/certs/ca-root-nss.crt',
-        // SLES 12 (provided by the ca-certificates package)
-        '/var/lib/ca-certificates/ca-bundle.pem',
-        // OS X provided by homebrew (using the default path)
-        '/usr/local/etc/openssl/cert.pem',
-        // Google app engine
-        '/etc/ca-certificates.crt',
-        // Windows?
-        'C:\\windows\\system32\\curl-ca-bundle.crt',
-        'C:\\windows\\curl-ca-bundle.crt',
-    ];
-
-    if ($cached) {
-        return $cached;
-    }
-
-    if ($ca = ini_get('openssl.cafile')) {
-        return $cached = $ca;
-    }
-
-    if ($ca = ini_get('curl.cainfo')) {
-        return $cached = $ca;
-    }
-
-    foreach ($cafiles as $filename) {
-        if (file_exists($filename)) {
-            return $cached = $filename;
-        }
-    }
-
-    throw new \RuntimeException(
-        <<< EOT
-No system CA bundle could be found in any of the the common system locations.
-PHP versions earlier than 5.6 are not properly configured to use the system's
-CA bundle by default. In order to verify peer certificates, you will need to
-supply the path on disk to a certificate bundle to the 'verify' request
-option: http://docs.guzzlephp.org/en/latest/clients.html#verify. If you do not
-need a specific certificate bundle, then Mozilla provides a commonly used CA
-bundle which can be downloaded here (provided by the maintainer of cURL):
-https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt. Once
-you have a CA bundle available on disk, you can set the 'openssl.cafile' PHP
-ini setting to point to the path to the file, allowing you to omit the 'verify'
-request option. See http://curl.haxx.se/docs/sslcerts.html for more
-information.
-EOT
-    );
+    return Utils::defaultCaBundle();
 }
 
 /**
  * Creates an associative array of lowercase header names to the actual
  * header casing.
  *
- * @param array $headers
- *
- * @return array
+ * @deprecated normalize_header_keys will be removed in guzzlehttp/guzzle:8.0. Use Utils::normalizeHeaderKeys instead.
  */
-function normalize_header_keys(array $headers)
+function normalize_header_keys(array $headers): array
 {
-    $result = [];
-    foreach (array_keys($headers) as $key) {
-        $result[strtolower($key)] = $key;
-    }
-
-    return $result;
+    return Utils::normalizeHeaderKeys($headers);
 }
 
 /**
@@ -246,89 +116,52 @@ function normalize_header_keys(array $headers)
  * 3. The area starts with "." and the area is the last part of the host. e.g.
  *    '.mit.edu' will match any host that ends with '.mit.edu'.
  *
- * @param string $host         Host to check against the patterns.
- * @param array  $noProxyArray An array of host patterns.
+ * @param string   $host         Host to check against the patterns.
+ * @param string[] $noProxyArray An array of host patterns.
+ *
+ * @throws Exception\InvalidArgumentException
  *
- * @return bool
+ * @deprecated is_host_in_noproxy will be removed in guzzlehttp/guzzle:8.0. Use Utils::isHostInNoProxy instead.
  */
-function is_host_in_noproxy($host, array $noProxyArray)
+function is_host_in_noproxy(string $host, array $noProxyArray): bool
 {
-    if (strlen($host) === 0) {
-        throw new \InvalidArgumentException('Empty host provided');
-    }
-
-    // Strip port if present.
-    if (strpos($host, ':')) {
-        $host = explode($host, ':', 2)[0];
-    }
-
-    foreach ($noProxyArray as $area) {
-        // Always match on wildcards.
-        if ($area === '*') {
-            return true;
-        } elseif (empty($area)) {
-            // Don't match on empty values.
-            continue;
-        } elseif ($area === $host) {
-            // Exact matches.
-            return true;
-        } else {
-            // Special match if the area when prefixed with ".". Remove any
-            // existing leading "." and add a new leading ".".
-            $area = '.' . ltrim($area, '.');
-            if (substr($host, -(strlen($area))) === $area) {
-                return true;
-            }
-        }
-    }
-
-    return false;
+    return Utils::isHostInNoProxy($host, $noProxyArray);
 }
 
 /**
  * Wrapper for json_decode that throws when an error occurs.
  *
  * @param string $json    JSON data to parse
- * @param bool $assoc     When true, returned objects will be converted
+ * @param bool   $assoc   When true, returned objects will be converted
  *                        into associative arrays.
  * @param int    $depth   User specified recursion depth.
  * @param int    $options Bitmask of JSON decode options.
  *
- * @return mixed
+ * @return object|array|string|int|float|bool|null
+ *
  * @throws Exception\InvalidArgumentException if the JSON cannot be decoded.
- * @link http://www.php.net/manual/en/function.json-decode.php
+ *
+ * @link https://www.php.net/manual/en/function.json-decode.php
+ * @deprecated json_decode will be removed in guzzlehttp/guzzle:8.0. Use Utils::jsonDecode instead.
  */
-function json_decode($json, $assoc = false, $depth = 512, $options = 0)
+function json_decode(string $json, bool $assoc = false, int $depth = 512, int $options = 0)
 {
-    $data = \json_decode($json, $assoc, $depth, $options);
-    if (JSON_ERROR_NONE !== json_last_error()) {
-        throw new Exception\InvalidArgumentException(
-            'json_decode error: ' . json_last_error_msg()
-        );
-    }
-
-    return $data;
+    return Utils::jsonDecode($json, $assoc, $depth, $options);
 }
 
 /**
  * Wrapper for JSON encoding that throws when an error occurs.
  *
  * @param mixed $value   The value being encoded
- * @param int    $options JSON encode option bitmask
- * @param int    $depth   Set the maximum depth. Must be greater than zero.
+ * @param int   $options JSON encode option bitmask
+ * @param int   $depth   Set the maximum depth. Must be greater than zero.
  *
- * @return string
  * @throws Exception\InvalidArgumentException if the JSON cannot be encoded.
- * @link http://www.php.net/manual/en/function.json-encode.php
+ *
+ * @link https://www.php.net/manual/en/function.json-encode.php
+ * @deprecated json_encode will be removed in guzzlehttp/guzzle:8.0. Use Utils::jsonEncode instead.
  */
-function json_encode($value, $options = 0, $depth = 512)
+function json_encode($value, int $options = 0, int $depth = 512): string
 {
-    $json = \json_encode($value, $options, $depth);
-    if (JSON_ERROR_NONE !== json_last_error()) {
-        throw new Exception\InvalidArgumentException(
-            'json_encode error: ' . json_last_error_msg()
-        );
-    }
-
-    return $json;
+    return Utils::jsonEncode($value, $options, $depth);
 }
diff --git a/civicrm/vendor/guzzlehttp/guzzle/src/functions_include.php b/civicrm/vendor/guzzlehttp/guzzle/src/functions_include.php
index a93393acc4e7c5e6021f070ad65dbbf2e3924241..6636a4224db068802c332b15dd21b73ccdeb6b7d 100644
--- a/civicrm/vendor/guzzlehttp/guzzle/src/functions_include.php
+++ b/civicrm/vendor/guzzlehttp/guzzle/src/functions_include.php
@@ -1,6 +1,6 @@
 <?php
 
 // Don't redefine the functions if included multiple times.
-if (!function_exists('GuzzleHttp\uri_template')) {
+if (!\function_exists('GuzzleHttp\describe_type')) {
     require __DIR__ . '/functions.php';
 }
diff --git a/civicrm/vendor/symfony/deprecation-contracts/.gitignore b/civicrm/vendor/symfony/deprecation-contracts/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..c49a5d8df5c6548379f00c77fe572a7217bce218
--- /dev/null
+++ b/civicrm/vendor/symfony/deprecation-contracts/.gitignore
@@ -0,0 +1,3 @@
+vendor/
+composer.lock
+phpunit.xml
diff --git a/civicrm/vendor/symfony/deprecation-contracts/CHANGELOG.md b/civicrm/vendor/symfony/deprecation-contracts/CHANGELOG.md
new file mode 100644
index 0000000000000000000000000000000000000000..7932e26132d319374a768a73230e78c12535987c
--- /dev/null
+++ b/civicrm/vendor/symfony/deprecation-contracts/CHANGELOG.md
@@ -0,0 +1,5 @@
+CHANGELOG
+=========
+
+The changelog is maintained for all Symfony contracts at the following URL:
+https://github.com/symfony/contracts/blob/main/CHANGELOG.md
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/LICENSE b/civicrm/vendor/symfony/deprecation-contracts/LICENSE
similarity index 96%
rename from civicrm/vendor/symfony/polyfill-intl-normalizer/LICENSE
rename to civicrm/vendor/symfony/deprecation-contracts/LICENSE
index 4cd8bdd3007da4d62985ec9e5ca81a1e18ae34d1..406242ff28554c50aa30f065a034902bf2bf340d 100644
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/LICENSE
+++ b/civicrm/vendor/symfony/deprecation-contracts/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2015-2019 Fabien Potencier
+Copyright (c) 2020-2022 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/civicrm/vendor/symfony/deprecation-contracts/README.md b/civicrm/vendor/symfony/deprecation-contracts/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..4957933a6cc50402853ba29e6a7ce00d3e597470
--- /dev/null
+++ b/civicrm/vendor/symfony/deprecation-contracts/README.md
@@ -0,0 +1,26 @@
+Symfony Deprecation Contracts
+=============================
+
+A generic function and convention to trigger deprecation notices.
+
+This package provides a single global function named `trigger_deprecation()` that triggers silenced deprecation notices.
+
+By using a custom PHP error handler such as the one provided by the Symfony ErrorHandler component,
+the triggered deprecations can be caught and logged for later discovery, both on dev and prod environments.
+
+The function requires at least 3 arguments:
+ - the name of the Composer package that is triggering the deprecation
+ - the version of the package that introduced the deprecation
+ - the message of the deprecation
+ - more arguments can be provided: they will be inserted in the message using `printf()` formatting
+
+Example:
+```php
+trigger_deprecation('symfony/blockchain', '8.9', 'Using "%s" is deprecated, use "%s" instead.', 'bitcoin', 'fabcoin');
+```
+
+This will generate the following message:
+`Since symfony/blockchain 8.9: Using "bitcoin" is deprecated, use "fabcoin" instead.`
+
+While not necessarily recommended, the deprecation notices can be completely ignored by declaring an empty
+`function trigger_deprecation() {}` in your application.
diff --git a/civicrm/vendor/symfony/deprecation-contracts/composer.json b/civicrm/vendor/symfony/deprecation-contracts/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..cc7cc12372f438aa7eab8ae2e1fc326c35f31451
--- /dev/null
+++ b/civicrm/vendor/symfony/deprecation-contracts/composer.json
@@ -0,0 +1,35 @@
+{
+    "name": "symfony/deprecation-contracts",
+    "type": "library",
+    "description": "A generic function and convention to trigger deprecation notices",
+    "homepage": "https://symfony.com",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Nicolas Grekas",
+            "email": "p@tchwork.com"
+        },
+        {
+            "name": "Symfony Community",
+            "homepage": "https://symfony.com/contributors"
+        }
+    ],
+    "require": {
+        "php": ">=7.1"
+    },
+    "autoload": {
+        "files": [
+            "function.php"
+        ]
+    },
+    "minimum-stability": "dev",
+    "extra": {
+        "branch-alias": {
+            "dev-main": "2.5-dev"
+        },
+        "thanks": {
+            "name": "symfony/contracts",
+            "url": "https://github.com/symfony/contracts"
+        }
+    }
+}
diff --git a/civicrm/vendor/symfony/deprecation-contracts/function.php b/civicrm/vendor/symfony/deprecation-contracts/function.php
new file mode 100644
index 0000000000000000000000000000000000000000..d4371504a03d7b1ff8055ac7d4cdb3670adcff2f
--- /dev/null
+++ b/civicrm/vendor/symfony/deprecation-contracts/function.php
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+if (!function_exists('trigger_deprecation')) {
+    /**
+     * Triggers a silenced deprecation notice.
+     *
+     * @param string $package The name of the Composer package that is triggering the deprecation
+     * @param string $version The version of the package that introduced the deprecation
+     * @param string $message The message of the deprecation
+     * @param mixed  ...$args Values to insert in the message using printf() formatting
+     *
+     * @author Nicolas Grekas <p@tchwork.com>
+     */
+    function trigger_deprecation(string $package, string $version, string $message, ...$args): void
+    {
+        @trigger_error(($package || $version ? "Since $package $version: " : '').($args ? vsprintf($message, $args) : $message), \E_USER_DEPRECATED);
+    }
+}
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Idn.php b/civicrm/vendor/symfony/polyfill-intl-idn/Idn.php
deleted file mode 100644
index 86710b94e5f657994a99ab70d23efaa28562f1da..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Idn.php
+++ /dev/null
@@ -1,925 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com> and Trevor Rowbotham <trevor.rowbotham@pm.me>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Intl\Idn;
-
-use Exception;
-use Normalizer;
-use Symfony\Polyfill\Intl\Idn\Resources\unidata\DisallowedRanges;
-use Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex;
-
-/**
- * @see https://www.unicode.org/reports/tr46/
- *
- * @internal
- */
-final class Idn
-{
-    public const ERROR_EMPTY_LABEL = 1;
-    public const ERROR_LABEL_TOO_LONG = 2;
-    public const ERROR_DOMAIN_NAME_TOO_LONG = 4;
-    public const ERROR_LEADING_HYPHEN = 8;
-    public const ERROR_TRAILING_HYPHEN = 0x10;
-    public const ERROR_HYPHEN_3_4 = 0x20;
-    public const ERROR_LEADING_COMBINING_MARK = 0x40;
-    public const ERROR_DISALLOWED = 0x80;
-    public const ERROR_PUNYCODE = 0x100;
-    public const ERROR_LABEL_HAS_DOT = 0x200;
-    public const ERROR_INVALID_ACE_LABEL = 0x400;
-    public const ERROR_BIDI = 0x800;
-    public const ERROR_CONTEXTJ = 0x1000;
-    public const ERROR_CONTEXTO_PUNCTUATION = 0x2000;
-    public const ERROR_CONTEXTO_DIGITS = 0x4000;
-
-    public const INTL_IDNA_VARIANT_2003 = 0;
-    public const INTL_IDNA_VARIANT_UTS46 = 1;
-
-    public const IDNA_DEFAULT = 0;
-    public const IDNA_ALLOW_UNASSIGNED = 1;
-    public const IDNA_USE_STD3_RULES = 2;
-    public const IDNA_CHECK_BIDI = 4;
-    public const IDNA_CHECK_CONTEXTJ = 8;
-    public const IDNA_NONTRANSITIONAL_TO_ASCII = 16;
-    public const IDNA_NONTRANSITIONAL_TO_UNICODE = 32;
-
-    public const MAX_DOMAIN_SIZE = 253;
-    public const MAX_LABEL_SIZE = 63;
-
-    public const BASE = 36;
-    public const TMIN = 1;
-    public const TMAX = 26;
-    public const SKEW = 38;
-    public const DAMP = 700;
-    public const INITIAL_BIAS = 72;
-    public const INITIAL_N = 128;
-    public const DELIMITER = '-';
-    public const MAX_INT = 2147483647;
-
-    /**
-     * Contains the numeric value of a basic code point (for use in representing integers) in the
-     * range 0 to BASE-1, or -1 if b is does not represent a value.
-     *
-     * @var array<int, int>
-     */
-    private static $basicToDigit = [
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1,
-
-        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
-        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-
-        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
-        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    ];
-
-    /**
-     * @var array<int, int>
-     */
-    private static $virama;
-
-    /**
-     * @var array<int, string>
-     */
-    private static $mapped;
-
-    /**
-     * @var array<int, bool>
-     */
-    private static $ignored;
-
-    /**
-     * @var array<int, string>
-     */
-    private static $deviation;
-
-    /**
-     * @var array<int, bool>
-     */
-    private static $disallowed;
-
-    /**
-     * @var array<int, string>
-     */
-    private static $disallowed_STD3_mapped;
-
-    /**
-     * @var array<int, bool>
-     */
-    private static $disallowed_STD3_valid;
-
-    /**
-     * @var bool
-     */
-    private static $mappingTableLoaded = false;
-
-    /**
-     * @see https://www.unicode.org/reports/tr46/#ToASCII
-     *
-     * @param string $domainName
-     * @param int    $options
-     * @param int    $variant
-     * @param array  $idna_info
-     *
-     * @return string|false
-     */
-    public static function idn_to_ascii($domainName, $options = self::IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = [])
-    {
-        if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
-            @trigger_error('idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated', \E_USER_DEPRECATED);
-        }
-
-        $options = [
-            'CheckHyphens' => true,
-            'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & self::IDNA_CHECK_BIDI),
-            'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & self::IDNA_CHECK_CONTEXTJ),
-            'UseSTD3ASCIIRules' => 0 !== ($options & self::IDNA_USE_STD3_RULES),
-            'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & self::IDNA_NONTRANSITIONAL_TO_ASCII),
-            'VerifyDnsLength' => true,
-        ];
-        $info = new Info();
-        $labels = self::process((string) $domainName, $options, $info);
-
-        foreach ($labels as $i => $label) {
-            // Only convert labels to punycode that contain non-ASCII code points
-            if (1 === preg_match('/[^\x00-\x7F]/', $label)) {
-                try {
-                    $label = 'xn--'.self::punycodeEncode($label);
-                } catch (Exception $e) {
-                    $info->errors |= self::ERROR_PUNYCODE;
-                }
-
-                $labels[$i] = $label;
-            }
-        }
-
-        if ($options['VerifyDnsLength']) {
-            self::validateDomainAndLabelLength($labels, $info);
-        }
-
-        $idna_info = [
-            'result' => implode('.', $labels),
-            'isTransitionalDifferent' => $info->transitionalDifferent,
-            'errors' => $info->errors,
-        ];
-
-        return 0 === $info->errors ? $idna_info['result'] : false;
-    }
-
-    /**
-     * @see https://www.unicode.org/reports/tr46/#ToUnicode
-     *
-     * @param string $domainName
-     * @param int    $options
-     * @param int    $variant
-     * @param array  $idna_info
-     *
-     * @return string|false
-     */
-    public static function idn_to_utf8($domainName, $options = self::IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = [])
-    {
-        if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
-            @trigger_error('idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated', \E_USER_DEPRECATED);
-        }
-
-        $info = new Info();
-        $labels = self::process((string) $domainName, [
-            'CheckHyphens' => true,
-            'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & self::IDNA_CHECK_BIDI),
-            'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & self::IDNA_CHECK_CONTEXTJ),
-            'UseSTD3ASCIIRules' => 0 !== ($options & self::IDNA_USE_STD3_RULES),
-            'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & self::IDNA_NONTRANSITIONAL_TO_UNICODE),
-        ], $info);
-        $idna_info = [
-            'result' => implode('.', $labels),
-            'isTransitionalDifferent' => $info->transitionalDifferent,
-            'errors' => $info->errors,
-        ];
-
-        return 0 === $info->errors ? $idna_info['result'] : false;
-    }
-
-    /**
-     * @param string $label
-     *
-     * @return bool
-     */
-    private static function isValidContextJ(array $codePoints, $label)
-    {
-        if (!isset(self::$virama)) {
-            self::$virama = require __DIR__.\DIRECTORY_SEPARATOR.'Resources'.\DIRECTORY_SEPARATOR.'unidata'.\DIRECTORY_SEPARATOR.'virama.php';
-        }
-
-        $offset = 0;
-
-        foreach ($codePoints as $i => $codePoint) {
-            if (0x200C !== $codePoint && 0x200D !== $codePoint) {
-                continue;
-            }
-
-            if (!isset($codePoints[$i - 1])) {
-                return false;
-            }
-
-            // If Canonical_Combining_Class(Before(cp)) .eq. Virama Then True;
-            if (isset(self::$virama[$codePoints[$i - 1]])) {
-                continue;
-            }
-
-            // If RegExpMatch((Joining_Type:{L,D})(Joining_Type:T)*\u200C(Joining_Type:T)*(Joining_Type:{R,D})) Then
-            // True;
-            // Generated RegExp = ([Joining_Type:{L,D}][Joining_Type:T]*\u200C[Joining_Type:T]*)[Joining_Type:{R,D}]
-            if (0x200C === $codePoint && 1 === preg_match(Regex::ZWNJ, $label, $matches, \PREG_OFFSET_CAPTURE, $offset)) {
-                $offset += \strlen($matches[1][0]);
-
-                continue;
-            }
-
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * @see https://www.unicode.org/reports/tr46/#ProcessingStepMap
-     *
-     * @param string              $input
-     * @param array<string, bool> $options
-     *
-     * @return string
-     */
-    private static function mapCodePoints($input, array $options, Info $info)
-    {
-        $str = '';
-        $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
-        $transitional = $options['Transitional_Processing'];
-
-        foreach (self::utf8Decode($input) as $codePoint) {
-            $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
-
-            switch ($data['status']) {
-                case 'disallowed':
-                    $info->errors |= self::ERROR_DISALLOWED;
-
-                    // no break.
-
-                case 'valid':
-                    $str .= mb_chr($codePoint, 'utf-8');
-
-                    break;
-
-                case 'ignored':
-                    // Do nothing.
-                    break;
-
-                case 'mapped':
-                    $str .= $data['mapping'];
-
-                    break;
-
-                case 'deviation':
-                    $info->transitionalDifferent = true;
-                    $str .= ($transitional ? $data['mapping'] : mb_chr($codePoint, 'utf-8'));
-
-                    break;
-            }
-        }
-
-        return $str;
-    }
-
-    /**
-     * @see https://www.unicode.org/reports/tr46/#Processing
-     *
-     * @param string              $domain
-     * @param array<string, bool> $options
-     *
-     * @return array<int, string>
-     */
-    private static function process($domain, array $options, Info $info)
-    {
-        // If VerifyDnsLength is not set, we are doing ToUnicode otherwise we are doing ToASCII and
-        // we need to respect the VerifyDnsLength option.
-        $checkForEmptyLabels = !isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'];
-
-        if ($checkForEmptyLabels && '' === $domain) {
-            $info->errors |= self::ERROR_EMPTY_LABEL;
-
-            return [$domain];
-        }
-
-        // Step 1. Map each code point in the domain name string
-        $domain = self::mapCodePoints($domain, $options, $info);
-
-        // Step 2. Normalize the domain name string to Unicode Normalization Form C.
-        if (!Normalizer::isNormalized($domain, Normalizer::FORM_C)) {
-            $domain = Normalizer::normalize($domain, Normalizer::FORM_C);
-        }
-
-        // Step 3. Break the string into labels at U+002E (.) FULL STOP.
-        $labels = explode('.', $domain);
-        $lastLabelIndex = \count($labels) - 1;
-
-        // Step 4. Convert and validate each label in the domain name string.
-        foreach ($labels as $i => $label) {
-            $validationOptions = $options;
-
-            if ('xn--' === substr($label, 0, 4)) {
-                try {
-                    $label = self::punycodeDecode(substr($label, 4));
-                } catch (Exception $e) {
-                    $info->errors |= self::ERROR_PUNYCODE;
-
-                    continue;
-                }
-
-                $validationOptions['Transitional_Processing'] = false;
-                $labels[$i] = $label;
-            }
-
-            self::validateLabel($label, $info, $validationOptions, $i > 0 && $i === $lastLabelIndex);
-        }
-
-        if ($info->bidiDomain && !$info->validBidiDomain) {
-            $info->errors |= self::ERROR_BIDI;
-        }
-
-        // Any input domain name string that does not record an error has been successfully
-        // processed according to this specification. Conversely, if an input domain_name string
-        // causes an error, then the processing of the input domain_name string fails. Determining
-        // what to do with error input is up to the caller, and not in the scope of this document.
-        return $labels;
-    }
-
-    /**
-     * @see https://tools.ietf.org/html/rfc5893#section-2
-     *
-     * @param string $label
-     */
-    private static function validateBidiLabel($label, Info $info)
-    {
-        if (1 === preg_match(Regex::RTL_LABEL, $label)) {
-            $info->bidiDomain = true;
-
-            // Step 1. The first character must be a character with Bidi property L, R, or AL.
-            // If it has the R or AL property, it is an RTL label
-            if (1 !== preg_match(Regex::BIDI_STEP_1_RTL, $label)) {
-                $info->validBidiDomain = false;
-
-                return;
-            }
-
-            // Step 2. In an RTL label, only characters with the Bidi properties R, AL, AN, EN, ES,
-            // CS, ET, ON, BN, or NSM are allowed.
-            if (1 === preg_match(Regex::BIDI_STEP_2, $label)) {
-                $info->validBidiDomain = false;
-
-                return;
-            }
-
-            // Step 3. In an RTL label, the end of the label must be a character with Bidi property
-            // R, AL, EN, or AN, followed by zero or more characters with Bidi property NSM.
-            if (1 !== preg_match(Regex::BIDI_STEP_3, $label)) {
-                $info->validBidiDomain = false;
-
-                return;
-            }
-
-            // Step 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
-            if (1 === preg_match(Regex::BIDI_STEP_4_AN, $label) && 1 === preg_match(Regex::BIDI_STEP_4_EN, $label)) {
-                $info->validBidiDomain = false;
-
-                return;
-            }
-
-            return;
-        }
-
-        // We are a LTR label
-        // Step 1. The first character must be a character with Bidi property L, R, or AL.
-        // If it has the L property, it is an LTR label.
-        if (1 !== preg_match(Regex::BIDI_STEP_1_LTR, $label)) {
-            $info->validBidiDomain = false;
-
-            return;
-        }
-
-        // Step 5. In an LTR label, only characters with the Bidi properties L, EN,
-        // ES, CS, ET, ON, BN, or NSM are allowed.
-        if (1 === preg_match(Regex::BIDI_STEP_5, $label)) {
-            $info->validBidiDomain = false;
-
-            return;
-        }
-
-        // Step 6.In an LTR label, the end of the label must be a character with Bidi property L or
-        // EN, followed by zero or more characters with Bidi property NSM.
-        if (1 !== preg_match(Regex::BIDI_STEP_6, $label)) {
-            $info->validBidiDomain = false;
-
-            return;
-        }
-    }
-
-    /**
-     * @param array<int, string> $labels
-     */
-    private static function validateDomainAndLabelLength(array $labels, Info $info)
-    {
-        $maxDomainSize = self::MAX_DOMAIN_SIZE;
-        $length = \count($labels);
-
-        // Number of "." delimiters.
-        $domainLength = $length - 1;
-
-        // If the last label is empty and it is not the first label, then it is the root label.
-        // Increase the max size by 1, making it 254, to account for the root label's "."
-        // delimiter. This also means we don't need to check the last label's length for being too
-        // long.
-        if ($length > 1 && '' === $labels[$length - 1]) {
-            ++$maxDomainSize;
-            --$length;
-        }
-
-        for ($i = 0; $i < $length; ++$i) {
-            $bytes = \strlen($labels[$i]);
-            $domainLength += $bytes;
-
-            if ($bytes > self::MAX_LABEL_SIZE) {
-                $info->errors |= self::ERROR_LABEL_TOO_LONG;
-            }
-        }
-
-        if ($domainLength > $maxDomainSize) {
-            $info->errors |= self::ERROR_DOMAIN_NAME_TOO_LONG;
-        }
-    }
-
-    /**
-     * @see https://www.unicode.org/reports/tr46/#Validity_Criteria
-     *
-     * @param string              $label
-     * @param array<string, bool> $options
-     * @param bool                $canBeEmpty
-     */
-    private static function validateLabel($label, Info $info, array $options, $canBeEmpty)
-    {
-        if ('' === $label) {
-            if (!$canBeEmpty && (!isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'])) {
-                $info->errors |= self::ERROR_EMPTY_LABEL;
-            }
-
-            return;
-        }
-
-        // Step 1. The label must be in Unicode Normalization Form C.
-        if (!Normalizer::isNormalized($label, Normalizer::FORM_C)) {
-            $info->errors |= self::ERROR_INVALID_ACE_LABEL;
-        }
-
-        $codePoints = self::utf8Decode($label);
-
-        if ($options['CheckHyphens']) {
-            // Step 2. If CheckHyphens, the label must not contain a U+002D HYPHEN-MINUS character
-            // in both the thrid and fourth positions.
-            if (isset($codePoints[2], $codePoints[3]) && 0x002D === $codePoints[2] && 0x002D === $codePoints[3]) {
-                $info->errors |= self::ERROR_HYPHEN_3_4;
-            }
-
-            // Step 3. If CheckHyphens, the label must neither begin nor end with a U+002D
-            // HYPHEN-MINUS character.
-            if ('-' === substr($label, 0, 1)) {
-                $info->errors |= self::ERROR_LEADING_HYPHEN;
-            }
-
-            if ('-' === substr($label, -1, 1)) {
-                $info->errors |= self::ERROR_TRAILING_HYPHEN;
-            }
-        }
-
-        // Step 4. The label must not contain a U+002E (.) FULL STOP.
-        if (false !== strpos($label, '.')) {
-            $info->errors |= self::ERROR_LABEL_HAS_DOT;
-        }
-
-        // Step 5. The label must not begin with a combining mark, that is: General_Category=Mark.
-        if (1 === preg_match(Regex::COMBINING_MARK, $label)) {
-            $info->errors |= self::ERROR_LEADING_COMBINING_MARK;
-        }
-
-        // Step 6. Each code point in the label must only have certain status values according to
-        // Section 5, IDNA Mapping Table:
-        $transitional = $options['Transitional_Processing'];
-        $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
-
-        foreach ($codePoints as $codePoint) {
-            $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
-            $status = $data['status'];
-
-            if ('valid' === $status || (!$transitional && 'deviation' === $status)) {
-                continue;
-            }
-
-            $info->errors |= self::ERROR_DISALLOWED;
-
-            break;
-        }
-
-        // Step 7. If CheckJoiners, the label must satisify the ContextJ rules from Appendix A, in
-        // The Unicode Code Points and Internationalized Domain Names for Applications (IDNA)
-        // [IDNA2008].
-        if ($options['CheckJoiners'] && !self::isValidContextJ($codePoints, $label)) {
-            $info->errors |= self::ERROR_CONTEXTJ;
-        }
-
-        // Step 8. If CheckBidi, and if the domain name is a  Bidi domain name, then the label must
-        // satisfy all six of the numbered conditions in [IDNA2008] RFC 5893, Section 2.
-        if ($options['CheckBidi'] && (!$info->bidiDomain || $info->validBidiDomain)) {
-            self::validateBidiLabel($label, $info);
-        }
-    }
-
-    /**
-     * @see https://tools.ietf.org/html/rfc3492#section-6.2
-     *
-     * @param string $input
-     *
-     * @return string
-     */
-    private static function punycodeDecode($input)
-    {
-        $n = self::INITIAL_N;
-        $out = 0;
-        $i = 0;
-        $bias = self::INITIAL_BIAS;
-        $lastDelimIndex = strrpos($input, self::DELIMITER);
-        $b = false === $lastDelimIndex ? 0 : $lastDelimIndex;
-        $inputLength = \strlen($input);
-        $output = [];
-        $bytes = array_map('ord', str_split($input));
-
-        for ($j = 0; $j < $b; ++$j) {
-            if ($bytes[$j] > 0x7F) {
-                throw new Exception('Invalid input');
-            }
-
-            $output[$out++] = $input[$j];
-        }
-
-        if ($b > 0) {
-            ++$b;
-        }
-
-        for ($in = $b; $in < $inputLength; ++$out) {
-            $oldi = $i;
-            $w = 1;
-
-            for ($k = self::BASE; /* no condition */; $k += self::BASE) {
-                if ($in >= $inputLength) {
-                    throw new Exception('Invalid input');
-                }
-
-                $digit = self::$basicToDigit[$bytes[$in++] & 0xFF];
-
-                if ($digit < 0) {
-                    throw new Exception('Invalid input');
-                }
-
-                if ($digit > intdiv(self::MAX_INT - $i, $w)) {
-                    throw new Exception('Integer overflow');
-                }
-
-                $i += $digit * $w;
-
-                if ($k <= $bias) {
-                    $t = self::TMIN;
-                } elseif ($k >= $bias + self::TMAX) {
-                    $t = self::TMAX;
-                } else {
-                    $t = $k - $bias;
-                }
-
-                if ($digit < $t) {
-                    break;
-                }
-
-                $baseMinusT = self::BASE - $t;
-
-                if ($w > intdiv(self::MAX_INT, $baseMinusT)) {
-                    throw new Exception('Integer overflow');
-                }
-
-                $w *= $baseMinusT;
-            }
-
-            $outPlusOne = $out + 1;
-            $bias = self::adaptBias($i - $oldi, $outPlusOne, 0 === $oldi);
-
-            if (intdiv($i, $outPlusOne) > self::MAX_INT - $n) {
-                throw new Exception('Integer overflow');
-            }
-
-            $n += intdiv($i, $outPlusOne);
-            $i %= $outPlusOne;
-            array_splice($output, $i++, 0, [mb_chr($n, 'utf-8')]);
-        }
-
-        return implode('', $output);
-    }
-
-    /**
-     * @see https://tools.ietf.org/html/rfc3492#section-6.3
-     *
-     * @param string $input
-     *
-     * @return string
-     */
-    private static function punycodeEncode($input)
-    {
-        $n = self::INITIAL_N;
-        $delta = 0;
-        $out = 0;
-        $bias = self::INITIAL_BIAS;
-        $inputLength = 0;
-        $output = '';
-        $iter = self::utf8Decode($input);
-
-        foreach ($iter as $codePoint) {
-            ++$inputLength;
-
-            if ($codePoint < 0x80) {
-                $output .= \chr($codePoint);
-                ++$out;
-            }
-        }
-
-        $h = $out;
-        $b = $out;
-
-        if ($b > 0) {
-            $output .= self::DELIMITER;
-            ++$out;
-        }
-
-        while ($h < $inputLength) {
-            $m = self::MAX_INT;
-
-            foreach ($iter as $codePoint) {
-                if ($codePoint >= $n && $codePoint < $m) {
-                    $m = $codePoint;
-                }
-            }
-
-            if ($m - $n > intdiv(self::MAX_INT - $delta, $h + 1)) {
-                throw new Exception('Integer overflow');
-            }
-
-            $delta += ($m - $n) * ($h + 1);
-            $n = $m;
-
-            foreach ($iter as $codePoint) {
-                if ($codePoint < $n && 0 === ++$delta) {
-                    throw new Exception('Integer overflow');
-                }
-
-                if ($codePoint === $n) {
-                    $q = $delta;
-
-                    for ($k = self::BASE; /* no condition */; $k += self::BASE) {
-                        if ($k <= $bias) {
-                            $t = self::TMIN;
-                        } elseif ($k >= $bias + self::TMAX) {
-                            $t = self::TMAX;
-                        } else {
-                            $t = $k - $bias;
-                        }
-
-                        if ($q < $t) {
-                            break;
-                        }
-
-                        $qMinusT = $q - $t;
-                        $baseMinusT = self::BASE - $t;
-                        $output .= self::encodeDigit($t + $qMinusT % $baseMinusT, false);
-                        ++$out;
-                        $q = intdiv($qMinusT, $baseMinusT);
-                    }
-
-                    $output .= self::encodeDigit($q, false);
-                    ++$out;
-                    $bias = self::adaptBias($delta, $h + 1, $h === $b);
-                    $delta = 0;
-                    ++$h;
-                }
-            }
-
-            ++$delta;
-            ++$n;
-        }
-
-        return $output;
-    }
-
-    /**
-     * @see https://tools.ietf.org/html/rfc3492#section-6.1
-     *
-     * @param int  $delta
-     * @param int  $numPoints
-     * @param bool $firstTime
-     *
-     * @return int
-     */
-    private static function adaptBias($delta, $numPoints, $firstTime)
-    {
-        // xxx >> 1 is a faster way of doing intdiv(xxx, 2)
-        $delta = $firstTime ? intdiv($delta, self::DAMP) : $delta >> 1;
-        $delta += intdiv($delta, $numPoints);
-        $k = 0;
-
-        while ($delta > ((self::BASE - self::TMIN) * self::TMAX) >> 1) {
-            $delta = intdiv($delta, self::BASE - self::TMIN);
-            $k += self::BASE;
-        }
-
-        return $k + intdiv((self::BASE - self::TMIN + 1) * $delta, $delta + self::SKEW);
-    }
-
-    /**
-     * @param int  $d
-     * @param bool $flag
-     *
-     * @return string
-     */
-    private static function encodeDigit($d, $flag)
-    {
-        return \chr($d + 22 + 75 * ($d < 26 ? 1 : 0) - (($flag ? 1 : 0) << 5));
-    }
-
-    /**
-     * Takes a UTF-8 encoded string and converts it into a series of integer code points. Any
-     * invalid byte sequences will be replaced by a U+FFFD replacement code point.
-     *
-     * @see https://encoding.spec.whatwg.org/#utf-8-decoder
-     *
-     * @param string $input
-     *
-     * @return array<int, int>
-     */
-    private static function utf8Decode($input)
-    {
-        $bytesSeen = 0;
-        $bytesNeeded = 0;
-        $lowerBoundary = 0x80;
-        $upperBoundary = 0xBF;
-        $codePoint = 0;
-        $codePoints = [];
-        $length = \strlen($input);
-
-        for ($i = 0; $i < $length; ++$i) {
-            $byte = \ord($input[$i]);
-
-            if (0 === $bytesNeeded) {
-                if ($byte >= 0x00 && $byte <= 0x7F) {
-                    $codePoints[] = $byte;
-
-                    continue;
-                }
-
-                if ($byte >= 0xC2 && $byte <= 0xDF) {
-                    $bytesNeeded = 1;
-                    $codePoint = $byte & 0x1F;
-                } elseif ($byte >= 0xE0 && $byte <= 0xEF) {
-                    if (0xE0 === $byte) {
-                        $lowerBoundary = 0xA0;
-                    } elseif (0xED === $byte) {
-                        $upperBoundary = 0x9F;
-                    }
-
-                    $bytesNeeded = 2;
-                    $codePoint = $byte & 0xF;
-                } elseif ($byte >= 0xF0 && $byte <= 0xF4) {
-                    if (0xF0 === $byte) {
-                        $lowerBoundary = 0x90;
-                    } elseif (0xF4 === $byte) {
-                        $upperBoundary = 0x8F;
-                    }
-
-                    $bytesNeeded = 3;
-                    $codePoint = $byte & 0x7;
-                } else {
-                    $codePoints[] = 0xFFFD;
-                }
-
-                continue;
-            }
-
-            if ($byte < $lowerBoundary || $byte > $upperBoundary) {
-                $codePoint = 0;
-                $bytesNeeded = 0;
-                $bytesSeen = 0;
-                $lowerBoundary = 0x80;
-                $upperBoundary = 0xBF;
-                --$i;
-                $codePoints[] = 0xFFFD;
-
-                continue;
-            }
-
-            $lowerBoundary = 0x80;
-            $upperBoundary = 0xBF;
-            $codePoint = ($codePoint << 6) | ($byte & 0x3F);
-
-            if (++$bytesSeen !== $bytesNeeded) {
-                continue;
-            }
-
-            $codePoints[] = $codePoint;
-            $codePoint = 0;
-            $bytesNeeded = 0;
-            $bytesSeen = 0;
-        }
-
-        // String unexpectedly ended, so append a U+FFFD code point.
-        if (0 !== $bytesNeeded) {
-            $codePoints[] = 0xFFFD;
-        }
-
-        return $codePoints;
-    }
-
-    /**
-     * @param int  $codePoint
-     * @param bool $useSTD3ASCIIRules
-     *
-     * @return array{status: string, mapping?: string}
-     */
-    private static function lookupCodePointStatus($codePoint, $useSTD3ASCIIRules)
-    {
-        if (!self::$mappingTableLoaded) {
-            self::$mappingTableLoaded = true;
-            self::$mapped = require __DIR__.'/Resources/unidata/mapped.php';
-            self::$ignored = require __DIR__.'/Resources/unidata/ignored.php';
-            self::$deviation = require __DIR__.'/Resources/unidata/deviation.php';
-            self::$disallowed = require __DIR__.'/Resources/unidata/disallowed.php';
-            self::$disallowed_STD3_mapped = require __DIR__.'/Resources/unidata/disallowed_STD3_mapped.php';
-            self::$disallowed_STD3_valid = require __DIR__.'/Resources/unidata/disallowed_STD3_valid.php';
-        }
-
-        if (isset(self::$mapped[$codePoint])) {
-            return ['status' => 'mapped', 'mapping' => self::$mapped[$codePoint]];
-        }
-
-        if (isset(self::$ignored[$codePoint])) {
-            return ['status' => 'ignored'];
-        }
-
-        if (isset(self::$deviation[$codePoint])) {
-            return ['status' => 'deviation', 'mapping' => self::$deviation[$codePoint]];
-        }
-
-        if (isset(self::$disallowed[$codePoint]) || DisallowedRanges::inRange($codePoint)) {
-            return ['status' => 'disallowed'];
-        }
-
-        $isDisallowedMapped = isset(self::$disallowed_STD3_mapped[$codePoint]);
-
-        if ($isDisallowedMapped || isset(self::$disallowed_STD3_valid[$codePoint])) {
-            $status = 'disallowed';
-
-            if (!$useSTD3ASCIIRules) {
-                $status = $isDisallowedMapped ? 'mapped' : 'valid';
-            }
-
-            if ($isDisallowedMapped) {
-                return ['status' => $status, 'mapping' => self::$disallowed_STD3_mapped[$codePoint]];
-            }
-
-            return ['status' => $status];
-        }
-
-        return ['status' => 'valid'];
-    }
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Info.php b/civicrm/vendor/symfony/polyfill-intl-idn/Info.php
deleted file mode 100644
index 25c3582b2a64731128adf273acf935532c5bf26f..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Info.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com> and Trevor Rowbotham <trevor.rowbotham@pm.me>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Intl\Idn;
-
-/**
- * @internal
- */
-class Info
-{
-    public $bidiDomain = false;
-    public $errors = 0;
-    public $validBidiDomain = true;
-    public $transitionalDifferent = false;
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/LICENSE b/civicrm/vendor/symfony/polyfill-intl-idn/LICENSE
deleted file mode 100644
index 03c5e25774f3575f2e27efcab97d5daf756506f8..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2018-2019 Fabien Potencier and Trevor Rowbotham <trevor.rowbotham@pm.me>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/README.md b/civicrm/vendor/symfony/polyfill-intl-idn/README.md
deleted file mode 100644
index cae551705ae3d8bbad483315e59295b5735ac6e6..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-Symfony Polyfill / Intl: Idn
-============================
-
-This component provides [`idn_to_ascii`](https://php.net/idn-to-ascii) and [`idn_to_utf8`](https://php.net/idn-to-utf8) functions to users who run php versions without the [Intl](https://php.net/intl) extension.
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php
deleted file mode 100644
index 5bb70e48aca746dcd511e431676228d9d2c0e18f..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php
+++ /dev/null
@@ -1,375 +0,0 @@
-<?php
-
-namespace Symfony\Polyfill\Intl\Idn\Resources\unidata;
-
-/**
- * @internal
- */
-final class DisallowedRanges
-{
-    /**
-     * @param int $codePoint
-     *
-     * @return bool
-     */
-    public static function inRange($codePoint)
-    {
-        if ($codePoint >= 128 && $codePoint <= 159) {
-            return true;
-        }
-
-        if ($codePoint >= 2155 && $codePoint <= 2207) {
-            return true;
-        }
-
-        if ($codePoint >= 3676 && $codePoint <= 3712) {
-            return true;
-        }
-
-        if ($codePoint >= 3808 && $codePoint <= 3839) {
-            return true;
-        }
-
-        if ($codePoint >= 4059 && $codePoint <= 4095) {
-            return true;
-        }
-
-        if ($codePoint >= 4256 && $codePoint <= 4293) {
-            return true;
-        }
-
-        if ($codePoint >= 6849 && $codePoint <= 6911) {
-            return true;
-        }
-
-        if ($codePoint >= 11859 && $codePoint <= 11903) {
-            return true;
-        }
-
-        if ($codePoint >= 42955 && $codePoint <= 42996) {
-            return true;
-        }
-
-        if ($codePoint >= 55296 && $codePoint <= 57343) {
-            return true;
-        }
-
-        if ($codePoint >= 57344 && $codePoint <= 63743) {
-            return true;
-        }
-
-        if ($codePoint >= 64218 && $codePoint <= 64255) {
-            return true;
-        }
-
-        if ($codePoint >= 64976 && $codePoint <= 65007) {
-            return true;
-        }
-
-        if ($codePoint >= 65630 && $codePoint <= 65663) {
-            return true;
-        }
-
-        if ($codePoint >= 65953 && $codePoint <= 65999) {
-            return true;
-        }
-
-        if ($codePoint >= 66046 && $codePoint <= 66175) {
-            return true;
-        }
-
-        if ($codePoint >= 66518 && $codePoint <= 66559) {
-            return true;
-        }
-
-        if ($codePoint >= 66928 && $codePoint <= 67071) {
-            return true;
-        }
-
-        if ($codePoint >= 67432 && $codePoint <= 67583) {
-            return true;
-        }
-
-        if ($codePoint >= 67760 && $codePoint <= 67807) {
-            return true;
-        }
-
-        if ($codePoint >= 67904 && $codePoint <= 67967) {
-            return true;
-        }
-
-        if ($codePoint >= 68256 && $codePoint <= 68287) {
-            return true;
-        }
-
-        if ($codePoint >= 68528 && $codePoint <= 68607) {
-            return true;
-        }
-
-        if ($codePoint >= 68681 && $codePoint <= 68735) {
-            return true;
-        }
-
-        if ($codePoint >= 68922 && $codePoint <= 69215) {
-            return true;
-        }
-
-        if ($codePoint >= 69298 && $codePoint <= 69375) {
-            return true;
-        }
-
-        if ($codePoint >= 69466 && $codePoint <= 69551) {
-            return true;
-        }
-
-        if ($codePoint >= 70207 && $codePoint <= 70271) {
-            return true;
-        }
-
-        if ($codePoint >= 70517 && $codePoint <= 70655) {
-            return true;
-        }
-
-        if ($codePoint >= 70874 && $codePoint <= 71039) {
-            return true;
-        }
-
-        if ($codePoint >= 71134 && $codePoint <= 71167) {
-            return true;
-        }
-
-        if ($codePoint >= 71370 && $codePoint <= 71423) {
-            return true;
-        }
-
-        if ($codePoint >= 71488 && $codePoint <= 71679) {
-            return true;
-        }
-
-        if ($codePoint >= 71740 && $codePoint <= 71839) {
-            return true;
-        }
-
-        if ($codePoint >= 72026 && $codePoint <= 72095) {
-            return true;
-        }
-
-        if ($codePoint >= 72441 && $codePoint <= 72703) {
-            return true;
-        }
-
-        if ($codePoint >= 72887 && $codePoint <= 72959) {
-            return true;
-        }
-
-        if ($codePoint >= 73130 && $codePoint <= 73439) {
-            return true;
-        }
-
-        if ($codePoint >= 73465 && $codePoint <= 73647) {
-            return true;
-        }
-
-        if ($codePoint >= 74650 && $codePoint <= 74751) {
-            return true;
-        }
-
-        if ($codePoint >= 75076 && $codePoint <= 77823) {
-            return true;
-        }
-
-        if ($codePoint >= 78905 && $codePoint <= 82943) {
-            return true;
-        }
-
-        if ($codePoint >= 83527 && $codePoint <= 92159) {
-            return true;
-        }
-
-        if ($codePoint >= 92784 && $codePoint <= 92879) {
-            return true;
-        }
-
-        if ($codePoint >= 93072 && $codePoint <= 93759) {
-            return true;
-        }
-
-        if ($codePoint >= 93851 && $codePoint <= 93951) {
-            return true;
-        }
-
-        if ($codePoint >= 94112 && $codePoint <= 94175) {
-            return true;
-        }
-
-        if ($codePoint >= 101590 && $codePoint <= 101631) {
-            return true;
-        }
-
-        if ($codePoint >= 101641 && $codePoint <= 110591) {
-            return true;
-        }
-
-        if ($codePoint >= 110879 && $codePoint <= 110927) {
-            return true;
-        }
-
-        if ($codePoint >= 111356 && $codePoint <= 113663) {
-            return true;
-        }
-
-        if ($codePoint >= 113828 && $codePoint <= 118783) {
-            return true;
-        }
-
-        if ($codePoint >= 119366 && $codePoint <= 119519) {
-            return true;
-        }
-
-        if ($codePoint >= 119673 && $codePoint <= 119807) {
-            return true;
-        }
-
-        if ($codePoint >= 121520 && $codePoint <= 122879) {
-            return true;
-        }
-
-        if ($codePoint >= 122923 && $codePoint <= 123135) {
-            return true;
-        }
-
-        if ($codePoint >= 123216 && $codePoint <= 123583) {
-            return true;
-        }
-
-        if ($codePoint >= 123648 && $codePoint <= 124927) {
-            return true;
-        }
-
-        if ($codePoint >= 125143 && $codePoint <= 125183) {
-            return true;
-        }
-
-        if ($codePoint >= 125280 && $codePoint <= 126064) {
-            return true;
-        }
-
-        if ($codePoint >= 126133 && $codePoint <= 126208) {
-            return true;
-        }
-
-        if ($codePoint >= 126270 && $codePoint <= 126463) {
-            return true;
-        }
-
-        if ($codePoint >= 126652 && $codePoint <= 126703) {
-            return true;
-        }
-
-        if ($codePoint >= 126706 && $codePoint <= 126975) {
-            return true;
-        }
-
-        if ($codePoint >= 127406 && $codePoint <= 127461) {
-            return true;
-        }
-
-        if ($codePoint >= 127590 && $codePoint <= 127743) {
-            return true;
-        }
-
-        if ($codePoint >= 129202 && $codePoint <= 129279) {
-            return true;
-        }
-
-        if ($codePoint >= 129751 && $codePoint <= 129791) {
-            return true;
-        }
-
-        if ($codePoint >= 129995 && $codePoint <= 130031) {
-            return true;
-        }
-
-        if ($codePoint >= 130042 && $codePoint <= 131069) {
-            return true;
-        }
-
-        if ($codePoint >= 173790 && $codePoint <= 173823) {
-            return true;
-        }
-
-        if ($codePoint >= 191457 && $codePoint <= 194559) {
-            return true;
-        }
-
-        if ($codePoint >= 195102 && $codePoint <= 196605) {
-            return true;
-        }
-
-        if ($codePoint >= 201547 && $codePoint <= 262141) {
-            return true;
-        }
-
-        if ($codePoint >= 262144 && $codePoint <= 327677) {
-            return true;
-        }
-
-        if ($codePoint >= 327680 && $codePoint <= 393213) {
-            return true;
-        }
-
-        if ($codePoint >= 393216 && $codePoint <= 458749) {
-            return true;
-        }
-
-        if ($codePoint >= 458752 && $codePoint <= 524285) {
-            return true;
-        }
-
-        if ($codePoint >= 524288 && $codePoint <= 589821) {
-            return true;
-        }
-
-        if ($codePoint >= 589824 && $codePoint <= 655357) {
-            return true;
-        }
-
-        if ($codePoint >= 655360 && $codePoint <= 720893) {
-            return true;
-        }
-
-        if ($codePoint >= 720896 && $codePoint <= 786429) {
-            return true;
-        }
-
-        if ($codePoint >= 786432 && $codePoint <= 851965) {
-            return true;
-        }
-
-        if ($codePoint >= 851968 && $codePoint <= 917501) {
-            return true;
-        }
-
-        if ($codePoint >= 917536 && $codePoint <= 917631) {
-            return true;
-        }
-
-        if ($codePoint >= 917632 && $codePoint <= 917759) {
-            return true;
-        }
-
-        if ($codePoint >= 918000 && $codePoint <= 983037) {
-            return true;
-        }
-
-        if ($codePoint >= 983040 && $codePoint <= 1048573) {
-            return true;
-        }
-
-        if ($codePoint >= 1048576 && $codePoint <= 1114109) {
-            return true;
-        }
-
-        return false;
-    }
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php
deleted file mode 100644
index 5c1c51ddeecce8c3729e39d698d70176f02a0042..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-namespace Symfony\Polyfill\Intl\Idn\Resources\unidata;
-
-/**
- * @internal
- */
-final class Regex
-{
-    const COMBINING_MARK = '/^[\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{0903}\x{093A}\x{093B}\x{093C}\x{093E}-\x{0940}\x{0941}-\x{0948}\x{0949}-\x{094C}\x{094D}\x{094E}-\x{094F}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{0982}-\x{0983}\x{09BC}\x{09BE}-\x{09C0}\x{09C1}-\x{09C4}\x{09C7}-\x{09C8}\x{09CB}-\x{09CC}\x{09CD}\x{09D7}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A03}\x{0A3C}\x{0A3E}-\x{0A40}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0A83}\x{0ABC}\x{0ABE}-\x{0AC0}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0AC9}\x{0ACB}-\x{0ACC}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B02}-\x{0B03}\x{0B3C}\x{0B3E}\x{0B3F}\x{0B40}\x{0B41}-\x{0B44}\x{0B47}-\x{0B48}\x{0B4B}-\x{0B4C}\x{0B4D}\x{0B55}-\x{0B56}\x{0B57}\x{0B62}-\x{0B63}\x{0B82}\x{0BBE}-\x{0BBF}\x{0BC0}\x{0BC1}-\x{0BC2}\x{0BC6}-\x{0BC8}\x{0BCA}-\x{0BCC}\x{0BCD}\x{0BD7}\x{0C00}\x{0C01}-\x{0C03}\x{0C04}\x{0C3E}-\x{0C40}\x{0C41}-\x{0C44}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0C82}-\x{0C83}\x{0CBC}\x{0CBE}\x{0CBF}\x{0CC0}-\x{0CC4}\x{0CC6}\x{0CC7}-\x{0CC8}\x{0CCA}-\x{0CCB}\x{0CCC}-\x{0CCD}\x{0CD5}-\x{0CD6}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D02}-\x{0D03}\x{0D3B}-\x{0D3C}\x{0D3E}-\x{0D40}\x{0D41}-\x{0D44}\x{0D46}-\x{0D48}\x{0D4A}-\x{0D4C}\x{0D4D}\x{0D57}\x{0D62}-\x{0D63}\x{0D81}\x{0D82}-\x{0D83}\x{0DCA}\x{0DCF}-\x{0DD1}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0DD8}-\x{0DDF}\x{0DF2}-\x{0DF3}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3E}-\x{0F3F}\x{0F71}-\x{0F7E}\x{0F7F}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102B}-\x{102C}\x{102D}-\x{1030}\x{1031}\x{1032}-\x{1037}\x{1038}\x{1039}-\x{103A}\x{103B}-\x{103C}\x{103D}-\x{103E}\x{1056}-\x{1057}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1062}-\x{1064}\x{1067}-\x{106D}\x{1071}-\x{1074}\x{1082}\x{1083}-\x{1084}\x{1085}-\x{1086}\x{1087}-\x{108C}\x{108D}\x{108F}\x{109A}-\x{109C}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B6}\x{17B7}-\x{17BD}\x{17BE}-\x{17C5}\x{17C6}\x{17C7}-\x{17C8}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1923}-\x{1926}\x{1927}-\x{1928}\x{1929}-\x{192B}\x{1930}-\x{1931}\x{1932}\x{1933}-\x{1938}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A19}-\x{1A1A}\x{1A1B}\x{1A55}\x{1A56}\x{1A57}\x{1A58}-\x{1A5E}\x{1A60}\x{1A61}\x{1A62}\x{1A63}-\x{1A64}\x{1A65}-\x{1A6C}\x{1A6D}-\x{1A72}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B04}\x{1B34}\x{1B35}\x{1B36}-\x{1B3A}\x{1B3B}\x{1B3C}\x{1B3D}-\x{1B41}\x{1B42}\x{1B43}-\x{1B44}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1B82}\x{1BA1}\x{1BA2}-\x{1BA5}\x{1BA6}-\x{1BA7}\x{1BA8}-\x{1BA9}\x{1BAA}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE7}\x{1BE8}-\x{1BE9}\x{1BEA}-\x{1BEC}\x{1BED}\x{1BEE}\x{1BEF}-\x{1BF1}\x{1BF2}-\x{1BF3}\x{1C24}-\x{1C2B}\x{1C2C}-\x{1C33}\x{1C34}-\x{1C35}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE1}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF7}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{302E}-\x{302F}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A823}-\x{A824}\x{A825}-\x{A826}\x{A827}\x{A82C}\x{A880}-\x{A881}\x{A8B4}-\x{A8C3}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A952}-\x{A953}\x{A980}-\x{A982}\x{A983}\x{A9B3}\x{A9B4}-\x{A9B5}\x{A9B6}-\x{A9B9}\x{A9BA}-\x{A9BB}\x{A9BC}-\x{A9BD}\x{A9BE}-\x{A9C0}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA2F}-\x{AA30}\x{AA31}-\x{AA32}\x{AA33}-\x{AA34}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA4D}\x{AA7B}\x{AA7C}\x{AA7D}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEB}\x{AAEC}-\x{AAED}\x{AAEE}-\x{AAEF}\x{AAF5}\x{AAF6}\x{ABE3}-\x{ABE4}\x{ABE5}\x{ABE6}-\x{ABE7}\x{ABE8}\x{ABE9}-\x{ABEA}\x{ABEC}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11000}\x{11001}\x{11002}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{11082}\x{110B0}-\x{110B2}\x{110B3}-\x{110B6}\x{110B7}-\x{110B8}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112C}\x{1112D}-\x{11134}\x{11145}-\x{11146}\x{11173}\x{11180}-\x{11181}\x{11182}\x{111B3}-\x{111B5}\x{111B6}-\x{111BE}\x{111BF}-\x{111C0}\x{111C9}-\x{111CC}\x{111CE}\x{111CF}\x{1122C}-\x{1122E}\x{1122F}-\x{11231}\x{11232}-\x{11233}\x{11234}\x{11235}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E0}-\x{112E2}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{11302}-\x{11303}\x{1133B}-\x{1133C}\x{1133E}-\x{1133F}\x{11340}\x{11341}-\x{11344}\x{11347}-\x{11348}\x{1134B}-\x{1134D}\x{11357}\x{11362}-\x{11363}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11435}-\x{11437}\x{11438}-\x{1143F}\x{11440}-\x{11441}\x{11442}-\x{11444}\x{11445}\x{11446}\x{1145E}\x{114B0}-\x{114B2}\x{114B3}-\x{114B8}\x{114B9}\x{114BA}\x{114BB}-\x{114BE}\x{114BF}-\x{114C0}\x{114C1}\x{114C2}-\x{114C3}\x{115AF}-\x{115B1}\x{115B2}-\x{115B5}\x{115B8}-\x{115BB}\x{115BC}-\x{115BD}\x{115BE}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11630}-\x{11632}\x{11633}-\x{1163A}\x{1163B}-\x{1163C}\x{1163D}\x{1163E}\x{1163F}-\x{11640}\x{116AB}\x{116AC}\x{116AD}\x{116AE}-\x{116AF}\x{116B0}-\x{116B5}\x{116B6}\x{116B7}\x{1171D}-\x{1171F}\x{11720}-\x{11721}\x{11722}-\x{11725}\x{11726}\x{11727}-\x{1172B}\x{1182C}-\x{1182E}\x{1182F}-\x{11837}\x{11838}\x{11839}-\x{1183A}\x{11930}-\x{11935}\x{11937}-\x{11938}\x{1193B}-\x{1193C}\x{1193D}\x{1193E}\x{11940}\x{11942}\x{11943}\x{119D1}-\x{119D3}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119DC}-\x{119DF}\x{119E0}\x{119E4}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A39}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A57}-\x{11A58}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A97}\x{11A98}-\x{11A99}\x{11C2F}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3E}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CA9}\x{11CAA}-\x{11CB0}\x{11CB1}\x{11CB2}-\x{11CB3}\x{11CB4}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D8A}-\x{11D8E}\x{11D90}-\x{11D91}\x{11D93}-\x{11D94}\x{11D95}\x{11D96}\x{11D97}\x{11EF3}-\x{11EF4}\x{11EF5}-\x{11EF6}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F51}-\x{16F87}\x{16F8F}-\x{16F92}\x{16FE4}\x{16FF0}-\x{16FF1}\x{1BC9D}-\x{1BC9E}\x{1D165}-\x{1D166}\x{1D167}-\x{1D169}\x{1D16D}-\x{1D172}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{E0100}-\x{E01EF}]/u';
-
-    const RTL_LABEL = '/[\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{200F}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}]/u';
-
-    const BIDI_STEP_1_LTR = '/^[^\x{0000}-\x{0008}\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{000E}-\x{001B}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{0030}-\x{0039}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0085}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B2}-\x{00B3}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00B9}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\x{06DE}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06E9}\x{06EA}-\x{06ED}\x{06EE}-\x{06EF}\x{06F0}-\x{06F9}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0711}\x{0712}-\x{072F}\x{0730}-\x{074A}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07A6}-\x{07B0}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07F6}\x{07F7}-\x{07F9}\x{07FA}\x{07FB}-\x{07FC}\x{07FD}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{0859}-\x{085B}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09F2}-\x{09F3}\x{09FB}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AF1}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0BF3}-\x{0BF8}\x{0BF9}\x{0BFA}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C78}-\x{0C7E}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E3F}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3A}\x{0F3B}\x{0F3C}\x{0F3D}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1390}-\x{1399}\x{1400}\x{1680}\x{169B}\x{169C}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DB}\x{17DD}\x{17F0}-\x{17F9}\x{1800}-\x{1805}\x{1806}\x{1807}-\x{180A}\x{180B}-\x{180D}\x{180E}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1940}\x{1944}-\x{1945}\x{19DE}-\x{19FF}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{2000}-\x{200A}\x{200B}-\x{200D}\x{200F}\x{2010}-\x{2015}\x{2016}-\x{2017}\x{2018}\x{2019}\x{201A}\x{201B}-\x{201C}\x{201D}\x{201E}\x{201F}\x{2020}-\x{2027}\x{2028}\x{2029}\x{202A}\x{202B}\x{202C}\x{202D}\x{202E}\x{202F}\x{2030}-\x{2034}\x{2035}-\x{2038}\x{2039}\x{203A}\x{203B}-\x{203E}\x{203F}-\x{2040}\x{2041}-\x{2043}\x{2044}\x{2045}\x{2046}\x{2047}-\x{2051}\x{2052}\x{2053}\x{2054}\x{2055}-\x{205E}\x{205F}\x{2060}-\x{2064}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}\x{206A}-\x{206F}\x{2070}\x{2074}-\x{2079}\x{207A}-\x{207B}\x{207C}\x{207D}\x{207E}\x{2080}-\x{2089}\x{208A}-\x{208B}\x{208C}\x{208D}\x{208E}\x{20A0}-\x{20BF}\x{20C0}-\x{20CF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2100}-\x{2101}\x{2103}-\x{2106}\x{2108}-\x{2109}\x{2114}\x{2116}-\x{2117}\x{2118}\x{211E}-\x{2123}\x{2125}\x{2127}\x{2129}\x{212E}\x{213A}-\x{213B}\x{2140}-\x{2144}\x{214A}\x{214B}\x{214C}-\x{214D}\x{2150}-\x{215F}\x{2189}\x{218A}-\x{218B}\x{2190}-\x{2194}\x{2195}-\x{2199}\x{219A}-\x{219B}\x{219C}-\x{219F}\x{21A0}\x{21A1}-\x{21A2}\x{21A3}\x{21A4}-\x{21A5}\x{21A6}\x{21A7}-\x{21AD}\x{21AE}\x{21AF}-\x{21CD}\x{21CE}-\x{21CF}\x{21D0}-\x{21D1}\x{21D2}\x{21D3}\x{21D4}\x{21D5}-\x{21F3}\x{21F4}-\x{2211}\x{2212}\x{2213}\x{2214}-\x{22FF}\x{2300}-\x{2307}\x{2308}\x{2309}\x{230A}\x{230B}\x{230C}-\x{231F}\x{2320}-\x{2321}\x{2322}-\x{2328}\x{2329}\x{232A}\x{232B}-\x{2335}\x{237B}\x{237C}\x{237D}-\x{2394}\x{2396}-\x{239A}\x{239B}-\x{23B3}\x{23B4}-\x{23DB}\x{23DC}-\x{23E1}\x{23E2}-\x{2426}\x{2440}-\x{244A}\x{2460}-\x{2487}\x{2488}-\x{249B}\x{24EA}-\x{24FF}\x{2500}-\x{25B6}\x{25B7}\x{25B8}-\x{25C0}\x{25C1}\x{25C2}-\x{25F7}\x{25F8}-\x{25FF}\x{2600}-\x{266E}\x{266F}\x{2670}-\x{26AB}\x{26AD}-\x{2767}\x{2768}\x{2769}\x{276A}\x{276B}\x{276C}\x{276D}\x{276E}\x{276F}\x{2770}\x{2771}\x{2772}\x{2773}\x{2774}\x{2775}\x{2776}-\x{2793}\x{2794}-\x{27BF}\x{27C0}-\x{27C4}\x{27C5}\x{27C6}\x{27C7}-\x{27E5}\x{27E6}\x{27E7}\x{27E8}\x{27E9}\x{27EA}\x{27EB}\x{27EC}\x{27ED}\x{27EE}\x{27EF}\x{27F0}-\x{27FF}\x{2900}-\x{2982}\x{2983}\x{2984}\x{2985}\x{2986}\x{2987}\x{2988}\x{2989}\x{298A}\x{298B}\x{298C}\x{298D}\x{298E}\x{298F}\x{2990}\x{2991}\x{2992}\x{2993}\x{2994}\x{2995}\x{2996}\x{2997}\x{2998}\x{2999}-\x{29D7}\x{29D8}\x{29D9}\x{29DA}\x{29DB}\x{29DC}-\x{29FB}\x{29FC}\x{29FD}\x{29FE}-\x{2AFF}\x{2B00}-\x{2B2F}\x{2B30}-\x{2B44}\x{2B45}-\x{2B46}\x{2B47}-\x{2B4C}\x{2B4D}-\x{2B73}\x{2B76}-\x{2B95}\x{2B97}-\x{2BFF}\x{2CE5}-\x{2CEA}\x{2CEF}-\x{2CF1}\x{2CF9}-\x{2CFC}\x{2CFD}\x{2CFE}-\x{2CFF}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E00}-\x{2E01}\x{2E02}\x{2E03}\x{2E04}\x{2E05}\x{2E06}-\x{2E08}\x{2E09}\x{2E0A}\x{2E0B}\x{2E0C}\x{2E0D}\x{2E0E}-\x{2E16}\x{2E17}\x{2E18}-\x{2E19}\x{2E1A}\x{2E1B}\x{2E1C}\x{2E1D}\x{2E1E}-\x{2E1F}\x{2E20}\x{2E21}\x{2E22}\x{2E23}\x{2E24}\x{2E25}\x{2E26}\x{2E27}\x{2E28}\x{2E29}\x{2E2A}-\x{2E2E}\x{2E2F}\x{2E30}-\x{2E39}\x{2E3A}-\x{2E3B}\x{2E3C}-\x{2E3F}\x{2E40}\x{2E41}\x{2E42}\x{2E43}-\x{2E4F}\x{2E50}-\x{2E51}\x{2E52}\x{2E80}-\x{2E99}\x{2E9B}-\x{2EF3}\x{2F00}-\x{2FD5}\x{2FF0}-\x{2FFB}\x{3000}\x{3001}-\x{3003}\x{3004}\x{3008}\x{3009}\x{300A}\x{300B}\x{300C}\x{300D}\x{300E}\x{300F}\x{3010}\x{3011}\x{3012}-\x{3013}\x{3014}\x{3015}\x{3016}\x{3017}\x{3018}\x{3019}\x{301A}\x{301B}\x{301C}\x{301D}\x{301E}-\x{301F}\x{3020}\x{302A}-\x{302D}\x{3030}\x{3036}-\x{3037}\x{303D}\x{303E}-\x{303F}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{30A0}\x{30FB}\x{31C0}-\x{31E3}\x{321D}-\x{321E}\x{3250}\x{3251}-\x{325F}\x{327C}-\x{327E}\x{32B1}-\x{32BF}\x{32CC}-\x{32CF}\x{3377}-\x{337A}\x{33DE}-\x{33DF}\x{33FF}\x{4DC0}-\x{4DFF}\x{A490}-\x{A4C6}\x{A60D}-\x{A60F}\x{A66F}\x{A670}-\x{A672}\x{A673}\x{A674}-\x{A67D}\x{A67E}\x{A67F}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A788}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A828}-\x{A82B}\x{A82C}\x{A838}\x{A839}\x{A874}-\x{A877}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{AB6A}-\x{AB6B}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1D}\x{FB1E}\x{FB1F}-\x{FB28}\x{FB29}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD3E}\x{FD3F}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDD0}-\x{FDEF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFD}\x{FDFE}-\x{FDFF}\x{FE00}-\x{FE0F}\x{FE10}-\x{FE16}\x{FE17}\x{FE18}\x{FE19}\x{FE20}-\x{FE2F}\x{FE30}\x{FE31}-\x{FE32}\x{FE33}-\x{FE34}\x{FE35}\x{FE36}\x{FE37}\x{FE38}\x{FE39}\x{FE3A}\x{FE3B}\x{FE3C}\x{FE3D}\x{FE3E}\x{FE3F}\x{FE40}\x{FE41}\x{FE42}\x{FE43}\x{FE44}\x{FE45}-\x{FE46}\x{FE47}\x{FE48}\x{FE49}-\x{FE4C}\x{FE4D}-\x{FE4F}\x{FE50}\x{FE51}\x{FE52}\x{FE54}\x{FE55}\x{FE56}-\x{FE57}\x{FE58}\x{FE59}\x{FE5A}\x{FE5B}\x{FE5C}\x{FE5D}\x{FE5E}\x{FE5F}\x{FE60}-\x{FE61}\x{FE62}\x{FE63}\x{FE64}-\x{FE66}\x{FE68}\x{FE69}\x{FE6A}\x{FE6B}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FEFF}\x{FF01}-\x{FF02}\x{FF03}\x{FF04}\x{FF05}\x{FF06}-\x{FF07}\x{FF08}\x{FF09}\x{FF0A}\x{FF0B}\x{FF0C}\x{FF0D}\x{FF0E}-\x{FF0F}\x{FF10}-\x{FF19}\x{FF1A}\x{FF1B}\x{FF1C}-\x{FF1E}\x{FF1F}-\x{FF20}\x{FF3B}\x{FF3C}\x{FF3D}\x{FF3E}\x{FF3F}\x{FF40}\x{FF5B}\x{FF5C}\x{FF5D}\x{FF5E}\x{FF5F}\x{FF60}\x{FF61}\x{FF62}\x{FF63}\x{FF64}-\x{FF65}\x{FFE0}-\x{FFE1}\x{FFE2}\x{FFE3}\x{FFE4}\x{FFE5}-\x{FFE6}\x{FFE8}\x{FFE9}-\x{FFEC}\x{FFED}-\x{FFEE}\x{FFF0}-\x{FFF8}\x{FFF9}-\x{FFFB}\x{FFFC}-\x{FFFD}\x{FFFE}-\x{FFFF}\x{10101}\x{10140}-\x{10174}\x{10175}-\x{10178}\x{10179}-\x{10189}\x{1018A}-\x{1018B}\x{1018C}\x{10190}-\x{1019C}\x{101A0}\x{101FD}\x{102E0}\x{102E1}-\x{102FB}\x{10376}-\x{1037A}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{1091F}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A01}-\x{10A03}\x{10A04}\x{10A05}-\x{10A06}\x{10A07}-\x{10A0B}\x{10A0C}-\x{10A0F}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A38}-\x{10A3A}\x{10A3B}-\x{10A3E}\x{10A3F}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE5}-\x{10AE6}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B39}-\x{10B3F}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D24}-\x{10D27}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAB}-\x{10EAC}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F46}-\x{10F50}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{11001}\x{11038}-\x{11046}\x{11052}-\x{11065}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{11660}-\x{1166C}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{11FD5}-\x{11FDC}\x{11FDD}-\x{11FE0}\x{11FE1}-\x{11FF1}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE2}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D200}-\x{1D241}\x{1D242}-\x{1D244}\x{1D245}\x{1D300}-\x{1D356}\x{1D6DB}\x{1D715}\x{1D74F}\x{1D789}\x{1D7C3}\x{1D7CE}-\x{1D7FF}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E2FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D0}-\x{1E8D6}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E944}-\x{1E94A}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF0}-\x{1EEF1}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F000}-\x{1F02B}\x{1F030}-\x{1F093}\x{1F0A0}-\x{1F0AE}\x{1F0B1}-\x{1F0BF}\x{1F0C1}-\x{1F0CF}\x{1F0D1}-\x{1F0F5}\x{1F100}-\x{1F10A}\x{1F10B}-\x{1F10C}\x{1F10D}-\x{1F10F}\x{1F12F}\x{1F16A}-\x{1F16F}\x{1F1AD}\x{1F260}-\x{1F265}\x{1F300}-\x{1F3FA}\x{1F3FB}-\x{1F3FF}\x{1F400}-\x{1F6D7}\x{1F6E0}-\x{1F6EC}\x{1F6F0}-\x{1F6FC}\x{1F700}-\x{1F773}\x{1F780}-\x{1F7D8}\x{1F7E0}-\x{1F7EB}\x{1F800}-\x{1F80B}\x{1F810}-\x{1F847}\x{1F850}-\x{1F859}\x{1F860}-\x{1F887}\x{1F890}-\x{1F8AD}\x{1F8B0}-\x{1F8B1}\x{1F900}-\x{1F978}\x{1F97A}-\x{1F9CB}\x{1F9CD}-\x{1FA53}\x{1FA60}-\x{1FA6D}\x{1FA70}-\x{1FA74}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA86}\x{1FA90}-\x{1FAA8}\x{1FAB0}-\x{1FAB6}\x{1FAC0}-\x{1FAC2}\x{1FAD0}-\x{1FAD6}\x{1FB00}-\x{1FB92}\x{1FB94}-\x{1FBCA}\x{1FBF0}-\x{1FBF9}\x{1FFFE}-\x{1FFFF}\x{2FFFE}-\x{2FFFF}\x{3FFFE}-\x{3FFFF}\x{4FFFE}-\x{4FFFF}\x{5FFFE}-\x{5FFFF}\x{6FFFE}-\x{6FFFF}\x{7FFFE}-\x{7FFFF}\x{8FFFE}-\x{8FFFF}\x{9FFFE}-\x{9FFFF}\x{AFFFE}-\x{AFFFF}\x{BFFFE}-\x{BFFFF}\x{CFFFE}-\x{CFFFF}\x{DFFFE}-\x{E0000}\x{E0001}\x{E0002}-\x{E001F}\x{E0020}-\x{E007F}\x{E0080}-\x{E00FF}\x{E0100}-\x{E01EF}\x{E01F0}-\x{E0FFF}\x{EFFFE}-\x{EFFFF}\x{FFFFE}-\x{FFFFF}\x{10FFFE}-\x{10FFFF}]/u';
-    const BIDI_STEP_1_RTL = '/^[\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{200F}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}]/u';
-    const BIDI_STEP_2 = '/[^\x{0000}-\x{0008}\x{000E}-\x{001B}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{0030}-\x{0039}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B2}-\x{00B3}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00B9}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\x{06DE}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06E9}\x{06EA}-\x{06ED}\x{06EE}-\x{06EF}\x{06F0}-\x{06F9}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0711}\x{0712}-\x{072F}\x{0730}-\x{074A}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07A6}-\x{07B0}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07F6}\x{07F7}-\x{07F9}\x{07FA}\x{07FB}-\x{07FC}\x{07FD}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{0859}-\x{085B}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09F2}-\x{09F3}\x{09FB}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AF1}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0BF3}-\x{0BF8}\x{0BF9}\x{0BFA}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C78}-\x{0C7E}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E3F}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3A}\x{0F3B}\x{0F3C}\x{0F3D}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1390}-\x{1399}\x{1400}\x{169B}\x{169C}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DB}\x{17DD}\x{17F0}-\x{17F9}\x{1800}-\x{1805}\x{1806}\x{1807}-\x{180A}\x{180B}-\x{180D}\x{180E}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1940}\x{1944}-\x{1945}\x{19DE}-\x{19FF}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{200B}-\x{200D}\x{200F}\x{2010}-\x{2015}\x{2016}-\x{2017}\x{2018}\x{2019}\x{201A}\x{201B}-\x{201C}\x{201D}\x{201E}\x{201F}\x{2020}-\x{2027}\x{202F}\x{2030}-\x{2034}\x{2035}-\x{2038}\x{2039}\x{203A}\x{203B}-\x{203E}\x{203F}-\x{2040}\x{2041}-\x{2043}\x{2044}\x{2045}\x{2046}\x{2047}-\x{2051}\x{2052}\x{2053}\x{2054}\x{2055}-\x{205E}\x{2060}-\x{2064}\x{2065}\x{206A}-\x{206F}\x{2070}\x{2074}-\x{2079}\x{207A}-\x{207B}\x{207C}\x{207D}\x{207E}\x{2080}-\x{2089}\x{208A}-\x{208B}\x{208C}\x{208D}\x{208E}\x{20A0}-\x{20BF}\x{20C0}-\x{20CF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2100}-\x{2101}\x{2103}-\x{2106}\x{2108}-\x{2109}\x{2114}\x{2116}-\x{2117}\x{2118}\x{211E}-\x{2123}\x{2125}\x{2127}\x{2129}\x{212E}\x{213A}-\x{213B}\x{2140}-\x{2144}\x{214A}\x{214B}\x{214C}-\x{214D}\x{2150}-\x{215F}\x{2189}\x{218A}-\x{218B}\x{2190}-\x{2194}\x{2195}-\x{2199}\x{219A}-\x{219B}\x{219C}-\x{219F}\x{21A0}\x{21A1}-\x{21A2}\x{21A3}\x{21A4}-\x{21A5}\x{21A6}\x{21A7}-\x{21AD}\x{21AE}\x{21AF}-\x{21CD}\x{21CE}-\x{21CF}\x{21D0}-\x{21D1}\x{21D2}\x{21D3}\x{21D4}\x{21D5}-\x{21F3}\x{21F4}-\x{2211}\x{2212}\x{2213}\x{2214}-\x{22FF}\x{2300}-\x{2307}\x{2308}\x{2309}\x{230A}\x{230B}\x{230C}-\x{231F}\x{2320}-\x{2321}\x{2322}-\x{2328}\x{2329}\x{232A}\x{232B}-\x{2335}\x{237B}\x{237C}\x{237D}-\x{2394}\x{2396}-\x{239A}\x{239B}-\x{23B3}\x{23B4}-\x{23DB}\x{23DC}-\x{23E1}\x{23E2}-\x{2426}\x{2440}-\x{244A}\x{2460}-\x{2487}\x{2488}-\x{249B}\x{24EA}-\x{24FF}\x{2500}-\x{25B6}\x{25B7}\x{25B8}-\x{25C0}\x{25C1}\x{25C2}-\x{25F7}\x{25F8}-\x{25FF}\x{2600}-\x{266E}\x{266F}\x{2670}-\x{26AB}\x{26AD}-\x{2767}\x{2768}\x{2769}\x{276A}\x{276B}\x{276C}\x{276D}\x{276E}\x{276F}\x{2770}\x{2771}\x{2772}\x{2773}\x{2774}\x{2775}\x{2776}-\x{2793}\x{2794}-\x{27BF}\x{27C0}-\x{27C4}\x{27C5}\x{27C6}\x{27C7}-\x{27E5}\x{27E6}\x{27E7}\x{27E8}\x{27E9}\x{27EA}\x{27EB}\x{27EC}\x{27ED}\x{27EE}\x{27EF}\x{27F0}-\x{27FF}\x{2900}-\x{2982}\x{2983}\x{2984}\x{2985}\x{2986}\x{2987}\x{2988}\x{2989}\x{298A}\x{298B}\x{298C}\x{298D}\x{298E}\x{298F}\x{2990}\x{2991}\x{2992}\x{2993}\x{2994}\x{2995}\x{2996}\x{2997}\x{2998}\x{2999}-\x{29D7}\x{29D8}\x{29D9}\x{29DA}\x{29DB}\x{29DC}-\x{29FB}\x{29FC}\x{29FD}\x{29FE}-\x{2AFF}\x{2B00}-\x{2B2F}\x{2B30}-\x{2B44}\x{2B45}-\x{2B46}\x{2B47}-\x{2B4C}\x{2B4D}-\x{2B73}\x{2B76}-\x{2B95}\x{2B97}-\x{2BFF}\x{2CE5}-\x{2CEA}\x{2CEF}-\x{2CF1}\x{2CF9}-\x{2CFC}\x{2CFD}\x{2CFE}-\x{2CFF}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E00}-\x{2E01}\x{2E02}\x{2E03}\x{2E04}\x{2E05}\x{2E06}-\x{2E08}\x{2E09}\x{2E0A}\x{2E0B}\x{2E0C}\x{2E0D}\x{2E0E}-\x{2E16}\x{2E17}\x{2E18}-\x{2E19}\x{2E1A}\x{2E1B}\x{2E1C}\x{2E1D}\x{2E1E}-\x{2E1F}\x{2E20}\x{2E21}\x{2E22}\x{2E23}\x{2E24}\x{2E25}\x{2E26}\x{2E27}\x{2E28}\x{2E29}\x{2E2A}-\x{2E2E}\x{2E2F}\x{2E30}-\x{2E39}\x{2E3A}-\x{2E3B}\x{2E3C}-\x{2E3F}\x{2E40}\x{2E41}\x{2E42}\x{2E43}-\x{2E4F}\x{2E50}-\x{2E51}\x{2E52}\x{2E80}-\x{2E99}\x{2E9B}-\x{2EF3}\x{2F00}-\x{2FD5}\x{2FF0}-\x{2FFB}\x{3001}-\x{3003}\x{3004}\x{3008}\x{3009}\x{300A}\x{300B}\x{300C}\x{300D}\x{300E}\x{300F}\x{3010}\x{3011}\x{3012}-\x{3013}\x{3014}\x{3015}\x{3016}\x{3017}\x{3018}\x{3019}\x{301A}\x{301B}\x{301C}\x{301D}\x{301E}-\x{301F}\x{3020}\x{302A}-\x{302D}\x{3030}\x{3036}-\x{3037}\x{303D}\x{303E}-\x{303F}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{30A0}\x{30FB}\x{31C0}-\x{31E3}\x{321D}-\x{321E}\x{3250}\x{3251}-\x{325F}\x{327C}-\x{327E}\x{32B1}-\x{32BF}\x{32CC}-\x{32CF}\x{3377}-\x{337A}\x{33DE}-\x{33DF}\x{33FF}\x{4DC0}-\x{4DFF}\x{A490}-\x{A4C6}\x{A60D}-\x{A60F}\x{A66F}\x{A670}-\x{A672}\x{A673}\x{A674}-\x{A67D}\x{A67E}\x{A67F}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A788}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A828}-\x{A82B}\x{A82C}\x{A838}\x{A839}\x{A874}-\x{A877}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{AB6A}-\x{AB6B}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1D}\x{FB1E}\x{FB1F}-\x{FB28}\x{FB29}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD3E}\x{FD3F}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDD0}-\x{FDEF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFD}\x{FDFE}-\x{FDFF}\x{FE00}-\x{FE0F}\x{FE10}-\x{FE16}\x{FE17}\x{FE18}\x{FE19}\x{FE20}-\x{FE2F}\x{FE30}\x{FE31}-\x{FE32}\x{FE33}-\x{FE34}\x{FE35}\x{FE36}\x{FE37}\x{FE38}\x{FE39}\x{FE3A}\x{FE3B}\x{FE3C}\x{FE3D}\x{FE3E}\x{FE3F}\x{FE40}\x{FE41}\x{FE42}\x{FE43}\x{FE44}\x{FE45}-\x{FE46}\x{FE47}\x{FE48}\x{FE49}-\x{FE4C}\x{FE4D}-\x{FE4F}\x{FE50}\x{FE51}\x{FE52}\x{FE54}\x{FE55}\x{FE56}-\x{FE57}\x{FE58}\x{FE59}\x{FE5A}\x{FE5B}\x{FE5C}\x{FE5D}\x{FE5E}\x{FE5F}\x{FE60}-\x{FE61}\x{FE62}\x{FE63}\x{FE64}-\x{FE66}\x{FE68}\x{FE69}\x{FE6A}\x{FE6B}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FEFF}\x{FF01}-\x{FF02}\x{FF03}\x{FF04}\x{FF05}\x{FF06}-\x{FF07}\x{FF08}\x{FF09}\x{FF0A}\x{FF0B}\x{FF0C}\x{FF0D}\x{FF0E}-\x{FF0F}\x{FF10}-\x{FF19}\x{FF1A}\x{FF1B}\x{FF1C}-\x{FF1E}\x{FF1F}-\x{FF20}\x{FF3B}\x{FF3C}\x{FF3D}\x{FF3E}\x{FF3F}\x{FF40}\x{FF5B}\x{FF5C}\x{FF5D}\x{FF5E}\x{FF5F}\x{FF60}\x{FF61}\x{FF62}\x{FF63}\x{FF64}-\x{FF65}\x{FFE0}-\x{FFE1}\x{FFE2}\x{FFE3}\x{FFE4}\x{FFE5}-\x{FFE6}\x{FFE8}\x{FFE9}-\x{FFEC}\x{FFED}-\x{FFEE}\x{FFF0}-\x{FFF8}\x{FFF9}-\x{FFFB}\x{FFFC}-\x{FFFD}\x{FFFE}-\x{FFFF}\x{10101}\x{10140}-\x{10174}\x{10175}-\x{10178}\x{10179}-\x{10189}\x{1018A}-\x{1018B}\x{1018C}\x{10190}-\x{1019C}\x{101A0}\x{101FD}\x{102E0}\x{102E1}-\x{102FB}\x{10376}-\x{1037A}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{1091F}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A01}-\x{10A03}\x{10A04}\x{10A05}-\x{10A06}\x{10A07}-\x{10A0B}\x{10A0C}-\x{10A0F}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A38}-\x{10A3A}\x{10A3B}-\x{10A3E}\x{10A3F}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE5}-\x{10AE6}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B39}-\x{10B3F}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D24}-\x{10D27}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAB}-\x{10EAC}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F46}-\x{10F50}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{11001}\x{11038}-\x{11046}\x{11052}-\x{11065}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{11660}-\x{1166C}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{11FD5}-\x{11FDC}\x{11FDD}-\x{11FE0}\x{11FE1}-\x{11FF1}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE2}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D200}-\x{1D241}\x{1D242}-\x{1D244}\x{1D245}\x{1D300}-\x{1D356}\x{1D6DB}\x{1D715}\x{1D74F}\x{1D789}\x{1D7C3}\x{1D7CE}-\x{1D7FF}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E2FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D0}-\x{1E8D6}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E944}-\x{1E94A}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF0}-\x{1EEF1}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F000}-\x{1F02B}\x{1F030}-\x{1F093}\x{1F0A0}-\x{1F0AE}\x{1F0B1}-\x{1F0BF}\x{1F0C1}-\x{1F0CF}\x{1F0D1}-\x{1F0F5}\x{1F100}-\x{1F10A}\x{1F10B}-\x{1F10C}\x{1F10D}-\x{1F10F}\x{1F12F}\x{1F16A}-\x{1F16F}\x{1F1AD}\x{1F260}-\x{1F265}\x{1F300}-\x{1F3FA}\x{1F3FB}-\x{1F3FF}\x{1F400}-\x{1F6D7}\x{1F6E0}-\x{1F6EC}\x{1F6F0}-\x{1F6FC}\x{1F700}-\x{1F773}\x{1F780}-\x{1F7D8}\x{1F7E0}-\x{1F7EB}\x{1F800}-\x{1F80B}\x{1F810}-\x{1F847}\x{1F850}-\x{1F859}\x{1F860}-\x{1F887}\x{1F890}-\x{1F8AD}\x{1F8B0}-\x{1F8B1}\x{1F900}-\x{1F978}\x{1F97A}-\x{1F9CB}\x{1F9CD}-\x{1FA53}\x{1FA60}-\x{1FA6D}\x{1FA70}-\x{1FA74}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA86}\x{1FA90}-\x{1FAA8}\x{1FAB0}-\x{1FAB6}\x{1FAC0}-\x{1FAC2}\x{1FAD0}-\x{1FAD6}\x{1FB00}-\x{1FB92}\x{1FB94}-\x{1FBCA}\x{1FBF0}-\x{1FBF9}\x{1FFFE}-\x{1FFFF}\x{2FFFE}-\x{2FFFF}\x{3FFFE}-\x{3FFFF}\x{4FFFE}-\x{4FFFF}\x{5FFFE}-\x{5FFFF}\x{6FFFE}-\x{6FFFF}\x{7FFFE}-\x{7FFFF}\x{8FFFE}-\x{8FFFF}\x{9FFFE}-\x{9FFFF}\x{AFFFE}-\x{AFFFF}\x{BFFFE}-\x{BFFFF}\x{CFFFE}-\x{CFFFF}\x{DFFFE}-\x{E0000}\x{E0001}\x{E0002}-\x{E001F}\x{E0020}-\x{E007F}\x{E0080}-\x{E00FF}\x{E0100}-\x{E01EF}\x{E01F0}-\x{E0FFF}\x{EFFFE}-\x{EFFFF}\x{FFFFE}-\x{FFFFF}\x{10FFFE}-\x{10FFFF}]/u';
-    const BIDI_STEP_3 = '/[\x{0030}-\x{0039}\x{00B2}-\x{00B3}\x{00B9}\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06F0}-\x{06F9}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{200F}\x{2070}\x{2074}-\x{2079}\x{2080}-\x{2089}\x{2488}-\x{249B}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FF10}-\x{FF19}\x{102E1}-\x{102FB}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1D7CE}-\x{1D7FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F100}-\x{1F10A}\x{1FBF0}-\x{1FBF9}][\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1D167}-\x{1D169}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{E0100}-\x{E01EF}]*$/u';
-    const BIDI_STEP_4_AN = '/[\x{0600}-\x{0605}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{06DD}\x{08E2}\x{10D30}-\x{10D39}\x{10E60}-\x{10E7E}]/u';
-    const BIDI_STEP_4_EN = '/[\x{0030}-\x{0039}\x{00B2}-\x{00B3}\x{00B9}\x{06F0}-\x{06F9}\x{2070}\x{2074}-\x{2079}\x{2080}-\x{2089}\x{2488}-\x{249B}\x{FF10}-\x{FF19}\x{102E1}-\x{102FB}\x{1D7CE}-\x{1D7FF}\x{1F100}-\x{1F10A}\x{1FBF0}-\x{1FBF9}]/u';
-    const BIDI_STEP_5 = '/[\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0085}\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{1680}\x{2000}-\x{200A}\x{200F}\x{2028}\x{2029}\x{202A}\x{202B}\x{202C}\x{202D}\x{202E}\x{205F}\x{2066}\x{2067}\x{2068}\x{2069}\x{3000}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}]/u';
-    const BIDI_STEP_6 = '/[^\x{0000}-\x{0008}\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{000E}-\x{001B}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0085}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\x{06DE}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06E9}\x{06EA}-\x{06ED}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0711}\x{0712}-\x{072F}\x{0730}-\x{074A}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07A6}-\x{07B0}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07F6}\x{07F7}-\x{07F9}\x{07FA}\x{07FB}-\x{07FC}\x{07FD}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{0859}-\x{085B}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09F2}-\x{09F3}\x{09FB}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AF1}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0BF3}-\x{0BF8}\x{0BF9}\x{0BFA}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C78}-\x{0C7E}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E3F}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3A}\x{0F3B}\x{0F3C}\x{0F3D}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1390}-\x{1399}\x{1400}\x{1680}\x{169B}\x{169C}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DB}\x{17DD}\x{17F0}-\x{17F9}\x{1800}-\x{1805}\x{1806}\x{1807}-\x{180A}\x{180B}-\x{180D}\x{180E}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1940}\x{1944}-\x{1945}\x{19DE}-\x{19FF}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{2000}-\x{200A}\x{200B}-\x{200D}\x{200F}\x{2010}-\x{2015}\x{2016}-\x{2017}\x{2018}\x{2019}\x{201A}\x{201B}-\x{201C}\x{201D}\x{201E}\x{201F}\x{2020}-\x{2027}\x{2028}\x{2029}\x{202A}\x{202B}\x{202C}\x{202D}\x{202E}\x{202F}\x{2030}-\x{2034}\x{2035}-\x{2038}\x{2039}\x{203A}\x{203B}-\x{203E}\x{203F}-\x{2040}\x{2041}-\x{2043}\x{2044}\x{2045}\x{2046}\x{2047}-\x{2051}\x{2052}\x{2053}\x{2054}\x{2055}-\x{205E}\x{205F}\x{2060}-\x{2064}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}\x{206A}-\x{206F}\x{207A}-\x{207B}\x{207C}\x{207D}\x{207E}\x{208A}-\x{208B}\x{208C}\x{208D}\x{208E}\x{20A0}-\x{20BF}\x{20C0}-\x{20CF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2100}-\x{2101}\x{2103}-\x{2106}\x{2108}-\x{2109}\x{2114}\x{2116}-\x{2117}\x{2118}\x{211E}-\x{2123}\x{2125}\x{2127}\x{2129}\x{212E}\x{213A}-\x{213B}\x{2140}-\x{2144}\x{214A}\x{214B}\x{214C}-\x{214D}\x{2150}-\x{215F}\x{2189}\x{218A}-\x{218B}\x{2190}-\x{2194}\x{2195}-\x{2199}\x{219A}-\x{219B}\x{219C}-\x{219F}\x{21A0}\x{21A1}-\x{21A2}\x{21A3}\x{21A4}-\x{21A5}\x{21A6}\x{21A7}-\x{21AD}\x{21AE}\x{21AF}-\x{21CD}\x{21CE}-\x{21CF}\x{21D0}-\x{21D1}\x{21D2}\x{21D3}\x{21D4}\x{21D5}-\x{21F3}\x{21F4}-\x{2211}\x{2212}\x{2213}\x{2214}-\x{22FF}\x{2300}-\x{2307}\x{2308}\x{2309}\x{230A}\x{230B}\x{230C}-\x{231F}\x{2320}-\x{2321}\x{2322}-\x{2328}\x{2329}\x{232A}\x{232B}-\x{2335}\x{237B}\x{237C}\x{237D}-\x{2394}\x{2396}-\x{239A}\x{239B}-\x{23B3}\x{23B4}-\x{23DB}\x{23DC}-\x{23E1}\x{23E2}-\x{2426}\x{2440}-\x{244A}\x{2460}-\x{2487}\x{24EA}-\x{24FF}\x{2500}-\x{25B6}\x{25B7}\x{25B8}-\x{25C0}\x{25C1}\x{25C2}-\x{25F7}\x{25F8}-\x{25FF}\x{2600}-\x{266E}\x{266F}\x{2670}-\x{26AB}\x{26AD}-\x{2767}\x{2768}\x{2769}\x{276A}\x{276B}\x{276C}\x{276D}\x{276E}\x{276F}\x{2770}\x{2771}\x{2772}\x{2773}\x{2774}\x{2775}\x{2776}-\x{2793}\x{2794}-\x{27BF}\x{27C0}-\x{27C4}\x{27C5}\x{27C6}\x{27C7}-\x{27E5}\x{27E6}\x{27E7}\x{27E8}\x{27E9}\x{27EA}\x{27EB}\x{27EC}\x{27ED}\x{27EE}\x{27EF}\x{27F0}-\x{27FF}\x{2900}-\x{2982}\x{2983}\x{2984}\x{2985}\x{2986}\x{2987}\x{2988}\x{2989}\x{298A}\x{298B}\x{298C}\x{298D}\x{298E}\x{298F}\x{2990}\x{2991}\x{2992}\x{2993}\x{2994}\x{2995}\x{2996}\x{2997}\x{2998}\x{2999}-\x{29D7}\x{29D8}\x{29D9}\x{29DA}\x{29DB}\x{29DC}-\x{29FB}\x{29FC}\x{29FD}\x{29FE}-\x{2AFF}\x{2B00}-\x{2B2F}\x{2B30}-\x{2B44}\x{2B45}-\x{2B46}\x{2B47}-\x{2B4C}\x{2B4D}-\x{2B73}\x{2B76}-\x{2B95}\x{2B97}-\x{2BFF}\x{2CE5}-\x{2CEA}\x{2CEF}-\x{2CF1}\x{2CF9}-\x{2CFC}\x{2CFD}\x{2CFE}-\x{2CFF}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E00}-\x{2E01}\x{2E02}\x{2E03}\x{2E04}\x{2E05}\x{2E06}-\x{2E08}\x{2E09}\x{2E0A}\x{2E0B}\x{2E0C}\x{2E0D}\x{2E0E}-\x{2E16}\x{2E17}\x{2E18}-\x{2E19}\x{2E1A}\x{2E1B}\x{2E1C}\x{2E1D}\x{2E1E}-\x{2E1F}\x{2E20}\x{2E21}\x{2E22}\x{2E23}\x{2E24}\x{2E25}\x{2E26}\x{2E27}\x{2E28}\x{2E29}\x{2E2A}-\x{2E2E}\x{2E2F}\x{2E30}-\x{2E39}\x{2E3A}-\x{2E3B}\x{2E3C}-\x{2E3F}\x{2E40}\x{2E41}\x{2E42}\x{2E43}-\x{2E4F}\x{2E50}-\x{2E51}\x{2E52}\x{2E80}-\x{2E99}\x{2E9B}-\x{2EF3}\x{2F00}-\x{2FD5}\x{2FF0}-\x{2FFB}\x{3000}\x{3001}-\x{3003}\x{3004}\x{3008}\x{3009}\x{300A}\x{300B}\x{300C}\x{300D}\x{300E}\x{300F}\x{3010}\x{3011}\x{3012}-\x{3013}\x{3014}\x{3015}\x{3016}\x{3017}\x{3018}\x{3019}\x{301A}\x{301B}\x{301C}\x{301D}\x{301E}-\x{301F}\x{3020}\x{302A}-\x{302D}\x{3030}\x{3036}-\x{3037}\x{303D}\x{303E}-\x{303F}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{30A0}\x{30FB}\x{31C0}-\x{31E3}\x{321D}-\x{321E}\x{3250}\x{3251}-\x{325F}\x{327C}-\x{327E}\x{32B1}-\x{32BF}\x{32CC}-\x{32CF}\x{3377}-\x{337A}\x{33DE}-\x{33DF}\x{33FF}\x{4DC0}-\x{4DFF}\x{A490}-\x{A4C6}\x{A60D}-\x{A60F}\x{A66F}\x{A670}-\x{A672}\x{A673}\x{A674}-\x{A67D}\x{A67E}\x{A67F}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A788}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A828}-\x{A82B}\x{A82C}\x{A838}\x{A839}\x{A874}-\x{A877}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{AB6A}-\x{AB6B}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1D}\x{FB1E}\x{FB1F}-\x{FB28}\x{FB29}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD3E}\x{FD3F}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDD0}-\x{FDEF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFD}\x{FDFE}-\x{FDFF}\x{FE00}-\x{FE0F}\x{FE10}-\x{FE16}\x{FE17}\x{FE18}\x{FE19}\x{FE20}-\x{FE2F}\x{FE30}\x{FE31}-\x{FE32}\x{FE33}-\x{FE34}\x{FE35}\x{FE36}\x{FE37}\x{FE38}\x{FE39}\x{FE3A}\x{FE3B}\x{FE3C}\x{FE3D}\x{FE3E}\x{FE3F}\x{FE40}\x{FE41}\x{FE42}\x{FE43}\x{FE44}\x{FE45}-\x{FE46}\x{FE47}\x{FE48}\x{FE49}-\x{FE4C}\x{FE4D}-\x{FE4F}\x{FE50}\x{FE51}\x{FE52}\x{FE54}\x{FE55}\x{FE56}-\x{FE57}\x{FE58}\x{FE59}\x{FE5A}\x{FE5B}\x{FE5C}\x{FE5D}\x{FE5E}\x{FE5F}\x{FE60}-\x{FE61}\x{FE62}\x{FE63}\x{FE64}-\x{FE66}\x{FE68}\x{FE69}\x{FE6A}\x{FE6B}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FEFF}\x{FF01}-\x{FF02}\x{FF03}\x{FF04}\x{FF05}\x{FF06}-\x{FF07}\x{FF08}\x{FF09}\x{FF0A}\x{FF0B}\x{FF0C}\x{FF0D}\x{FF0E}-\x{FF0F}\x{FF1A}\x{FF1B}\x{FF1C}-\x{FF1E}\x{FF1F}-\x{FF20}\x{FF3B}\x{FF3C}\x{FF3D}\x{FF3E}\x{FF3F}\x{FF40}\x{FF5B}\x{FF5C}\x{FF5D}\x{FF5E}\x{FF5F}\x{FF60}\x{FF61}\x{FF62}\x{FF63}\x{FF64}-\x{FF65}\x{FFE0}-\x{FFE1}\x{FFE2}\x{FFE3}\x{FFE4}\x{FFE5}-\x{FFE6}\x{FFE8}\x{FFE9}-\x{FFEC}\x{FFED}-\x{FFEE}\x{FFF0}-\x{FFF8}\x{FFF9}-\x{FFFB}\x{FFFC}-\x{FFFD}\x{FFFE}-\x{FFFF}\x{10101}\x{10140}-\x{10174}\x{10175}-\x{10178}\x{10179}-\x{10189}\x{1018A}-\x{1018B}\x{1018C}\x{10190}-\x{1019C}\x{101A0}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{1091F}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A01}-\x{10A03}\x{10A04}\x{10A05}-\x{10A06}\x{10A07}-\x{10A0B}\x{10A0C}-\x{10A0F}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A38}-\x{10A3A}\x{10A3B}-\x{10A3E}\x{10A3F}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE5}-\x{10AE6}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B39}-\x{10B3F}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D24}-\x{10D27}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAB}-\x{10EAC}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F46}-\x{10F50}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{11001}\x{11038}-\x{11046}\x{11052}-\x{11065}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{11660}-\x{1166C}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{11FD5}-\x{11FDC}\x{11FDD}-\x{11FE0}\x{11FE1}-\x{11FF1}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE2}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D200}-\x{1D241}\x{1D242}-\x{1D244}\x{1D245}\x{1D300}-\x{1D356}\x{1D6DB}\x{1D715}\x{1D74F}\x{1D789}\x{1D7C3}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E2FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D0}-\x{1E8D6}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E944}-\x{1E94A}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF0}-\x{1EEF1}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F000}-\x{1F02B}\x{1F030}-\x{1F093}\x{1F0A0}-\x{1F0AE}\x{1F0B1}-\x{1F0BF}\x{1F0C1}-\x{1F0CF}\x{1F0D1}-\x{1F0F5}\x{1F10B}-\x{1F10C}\x{1F10D}-\x{1F10F}\x{1F12F}\x{1F16A}-\x{1F16F}\x{1F1AD}\x{1F260}-\x{1F265}\x{1F300}-\x{1F3FA}\x{1F3FB}-\x{1F3FF}\x{1F400}-\x{1F6D7}\x{1F6E0}-\x{1F6EC}\x{1F6F0}-\x{1F6FC}\x{1F700}-\x{1F773}\x{1F780}-\x{1F7D8}\x{1F7E0}-\x{1F7EB}\x{1F800}-\x{1F80B}\x{1F810}-\x{1F847}\x{1F850}-\x{1F859}\x{1F860}-\x{1F887}\x{1F890}-\x{1F8AD}\x{1F8B0}-\x{1F8B1}\x{1F900}-\x{1F978}\x{1F97A}-\x{1F9CB}\x{1F9CD}-\x{1FA53}\x{1FA60}-\x{1FA6D}\x{1FA70}-\x{1FA74}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA86}\x{1FA90}-\x{1FAA8}\x{1FAB0}-\x{1FAB6}\x{1FAC0}-\x{1FAC2}\x{1FAD0}-\x{1FAD6}\x{1FB00}-\x{1FB92}\x{1FB94}-\x{1FBCA}\x{1FFFE}-\x{1FFFF}\x{2FFFE}-\x{2FFFF}\x{3FFFE}-\x{3FFFF}\x{4FFFE}-\x{4FFFF}\x{5FFFE}-\x{5FFFF}\x{6FFFE}-\x{6FFFF}\x{7FFFE}-\x{7FFFF}\x{8FFFE}-\x{8FFFF}\x{9FFFE}-\x{9FFFF}\x{AFFFE}-\x{AFFFF}\x{BFFFE}-\x{BFFFF}\x{CFFFE}-\x{CFFFF}\x{DFFFE}-\x{E0000}\x{E0001}\x{E0002}-\x{E001F}\x{E0020}-\x{E007F}\x{E0080}-\x{E00FF}\x{E0100}-\x{E01EF}\x{E01F0}-\x{E0FFF}\x{EFFFE}-\x{EFFFF}\x{FFFFE}-\x{FFFFF}\x{10FFFE}-\x{10FFFF}][\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1D167}-\x{1D169}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{E0100}-\x{E01EF}]*$/u';
-
-    const ZWNJ = '/([\x{A872}\x{10ACD}\x{10AD7}\x{10D00}\x{10FCB}\x{0620}\x{0626}\x{0628}\x{062A}-\x{062E}\x{0633}-\x{063F}\x{0641}-\x{0647}\x{0649}-\x{064A}\x{066E}-\x{066F}\x{0678}-\x{0687}\x{069A}-\x{06BF}\x{06C1}-\x{06C2}\x{06CC}\x{06CE}\x{06D0}-\x{06D1}\x{06FA}-\x{06FC}\x{06FF}\x{0712}-\x{0714}\x{071A}-\x{071D}\x{071F}-\x{0727}\x{0729}\x{072B}\x{072D}-\x{072E}\x{074E}-\x{0758}\x{075C}-\x{076A}\x{076D}-\x{0770}\x{0772}\x{0775}-\x{0777}\x{077A}-\x{077F}\x{07CA}-\x{07EA}\x{0841}-\x{0845}\x{0848}\x{084A}-\x{0853}\x{0855}\x{0860}\x{0862}-\x{0865}\x{0868}\x{08A0}-\x{08A9}\x{08AF}-\x{08B0}\x{08B3}-\x{08B4}\x{08B6}-\x{08B8}\x{08BA}-\x{08C7}\x{1807}\x{1820}-\x{1842}\x{1843}\x{1844}-\x{1878}\x{1887}-\x{18A8}\x{18AA}\x{A840}-\x{A871}\x{10AC0}-\x{10AC4}\x{10AD3}-\x{10AD6}\x{10AD8}-\x{10ADC}\x{10ADE}-\x{10AE0}\x{10AEB}-\x{10AEE}\x{10B80}\x{10B82}\x{10B86}-\x{10B88}\x{10B8A}-\x{10B8B}\x{10B8D}\x{10B90}\x{10BAD}-\x{10BAE}\x{10D01}-\x{10D21}\x{10D23}\x{10F30}-\x{10F32}\x{10F34}-\x{10F44}\x{10F51}-\x{10F53}\x{10FB0}\x{10FB2}-\x{10FB3}\x{10FB8}\x{10FBB}-\x{10FBC}\x{10FBE}-\x{10FBF}\x{10FC1}\x{10FC4}\x{10FCA}\x{1E900}-\x{1E943}][\x{00AD}\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{061C}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{070F}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CBF}\x{0CC6}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{200B}\x{200E}-\x{200F}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{206A}-\x{206F}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{FEFF}\x{FFF9}-\x{FFFB}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{13430}-\x{13438}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{1E94B}\x{E0001}\x{E0020}-\x{E007F}\x{E0100}-\x{E01EF}]*\x{200C}[\x{00AD}\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{061C}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{070F}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CBF}\x{0CC6}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{200B}\x{200E}-\x{200F}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{206A}-\x{206F}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{FEFF}\x{FFF9}-\x{FFFB}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{13430}-\x{13438}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{1E94B}\x{E0001}\x{E0020}-\x{E007F}\x{E0100}-\x{E01EF}]*)[\x{0622}-\x{0625}\x{0627}\x{0629}\x{062F}-\x{0632}\x{0648}\x{0671}-\x{0673}\x{0675}-\x{0677}\x{0688}-\x{0699}\x{06C0}\x{06C3}-\x{06CB}\x{06CD}\x{06CF}\x{06D2}-\x{06D3}\x{06D5}\x{06EE}-\x{06EF}\x{0710}\x{0715}-\x{0719}\x{071E}\x{0728}\x{072A}\x{072C}\x{072F}\x{074D}\x{0759}-\x{075B}\x{076B}-\x{076C}\x{0771}\x{0773}-\x{0774}\x{0778}-\x{0779}\x{0840}\x{0846}-\x{0847}\x{0849}\x{0854}\x{0856}-\x{0858}\x{0867}\x{0869}-\x{086A}\x{08AA}-\x{08AC}\x{08AE}\x{08B1}-\x{08B2}\x{08B9}\x{10AC5}\x{10AC7}\x{10AC9}-\x{10ACA}\x{10ACE}-\x{10AD2}\x{10ADD}\x{10AE1}\x{10AE4}\x{10AEF}\x{10B81}\x{10B83}-\x{10B85}\x{10B89}\x{10B8C}\x{10B8E}-\x{10B8F}\x{10B91}\x{10BA9}-\x{10BAC}\x{10D22}\x{10F33}\x{10F54}\x{10FB4}-\x{10FB6}\x{10FB9}-\x{10FBA}\x{10FBD}\x{10FC2}-\x{10FC3}\x{10FC9}\x{0620}\x{0626}\x{0628}\x{062A}-\x{062E}\x{0633}-\x{063F}\x{0641}-\x{0647}\x{0649}-\x{064A}\x{066E}-\x{066F}\x{0678}-\x{0687}\x{069A}-\x{06BF}\x{06C1}-\x{06C2}\x{06CC}\x{06CE}\x{06D0}-\x{06D1}\x{06FA}-\x{06FC}\x{06FF}\x{0712}-\x{0714}\x{071A}-\x{071D}\x{071F}-\x{0727}\x{0729}\x{072B}\x{072D}-\x{072E}\x{074E}-\x{0758}\x{075C}-\x{076A}\x{076D}-\x{0770}\x{0772}\x{0775}-\x{0777}\x{077A}-\x{077F}\x{07CA}-\x{07EA}\x{0841}-\x{0845}\x{0848}\x{084A}-\x{0853}\x{0855}\x{0860}\x{0862}-\x{0865}\x{0868}\x{08A0}-\x{08A9}\x{08AF}-\x{08B0}\x{08B3}-\x{08B4}\x{08B6}-\x{08B8}\x{08BA}-\x{08C7}\x{1807}\x{1820}-\x{1842}\x{1843}\x{1844}-\x{1878}\x{1887}-\x{18A8}\x{18AA}\x{A840}-\x{A871}\x{10AC0}-\x{10AC4}\x{10AD3}-\x{10AD6}\x{10AD8}-\x{10ADC}\x{10ADE}-\x{10AE0}\x{10AEB}-\x{10AEE}\x{10B80}\x{10B82}\x{10B86}-\x{10B88}\x{10B8A}-\x{10B8B}\x{10B8D}\x{10B90}\x{10BAD}-\x{10BAE}\x{10D01}-\x{10D21}\x{10D23}\x{10F30}-\x{10F32}\x{10F34}-\x{10F44}\x{10F51}-\x{10F53}\x{10FB0}\x{10FB2}-\x{10FB3}\x{10FB8}\x{10FBB}-\x{10FBC}\x{10FBE}-\x{10FBF}\x{10FC1}\x{10FC4}\x{10FCA}\x{1E900}-\x{1E943}]/u';
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php
deleted file mode 100644
index 0bbd3356774af6db0a19b9c81f397a9e51076389..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-return array (
-  223 => 'ss',
-  962 => 'σ',
-  8204 => '',
-  8205 => '',
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php
deleted file mode 100644
index 25a5f564d54ae7020dfd22160247411286c08773..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php
+++ /dev/null
@@ -1,2638 +0,0 @@
-<?php
-
-return array (
-  888 => true,
-  889 => true,
-  896 => true,
-  897 => true,
-  898 => true,
-  899 => true,
-  907 => true,
-  909 => true,
-  930 => true,
-  1216 => true,
-  1328 => true,
-  1367 => true,
-  1368 => true,
-  1419 => true,
-  1420 => true,
-  1424 => true,
-  1480 => true,
-  1481 => true,
-  1482 => true,
-  1483 => true,
-  1484 => true,
-  1485 => true,
-  1486 => true,
-  1487 => true,
-  1515 => true,
-  1516 => true,
-  1517 => true,
-  1518 => true,
-  1525 => true,
-  1526 => true,
-  1527 => true,
-  1528 => true,
-  1529 => true,
-  1530 => true,
-  1531 => true,
-  1532 => true,
-  1533 => true,
-  1534 => true,
-  1535 => true,
-  1536 => true,
-  1537 => true,
-  1538 => true,
-  1539 => true,
-  1540 => true,
-  1541 => true,
-  1564 => true,
-  1565 => true,
-  1757 => true,
-  1806 => true,
-  1807 => true,
-  1867 => true,
-  1868 => true,
-  1970 => true,
-  1971 => true,
-  1972 => true,
-  1973 => true,
-  1974 => true,
-  1975 => true,
-  1976 => true,
-  1977 => true,
-  1978 => true,
-  1979 => true,
-  1980 => true,
-  1981 => true,
-  1982 => true,
-  1983 => true,
-  2043 => true,
-  2044 => true,
-  2094 => true,
-  2095 => true,
-  2111 => true,
-  2140 => true,
-  2141 => true,
-  2143 => true,
-  2229 => true,
-  2248 => true,
-  2249 => true,
-  2250 => true,
-  2251 => true,
-  2252 => true,
-  2253 => true,
-  2254 => true,
-  2255 => true,
-  2256 => true,
-  2257 => true,
-  2258 => true,
-  2274 => true,
-  2436 => true,
-  2445 => true,
-  2446 => true,
-  2449 => true,
-  2450 => true,
-  2473 => true,
-  2481 => true,
-  2483 => true,
-  2484 => true,
-  2485 => true,
-  2490 => true,
-  2491 => true,
-  2501 => true,
-  2502 => true,
-  2505 => true,
-  2506 => true,
-  2511 => true,
-  2512 => true,
-  2513 => true,
-  2514 => true,
-  2515 => true,
-  2516 => true,
-  2517 => true,
-  2518 => true,
-  2520 => true,
-  2521 => true,
-  2522 => true,
-  2523 => true,
-  2526 => true,
-  2532 => true,
-  2533 => true,
-  2559 => true,
-  2560 => true,
-  2564 => true,
-  2571 => true,
-  2572 => true,
-  2573 => true,
-  2574 => true,
-  2577 => true,
-  2578 => true,
-  2601 => true,
-  2609 => true,
-  2612 => true,
-  2615 => true,
-  2618 => true,
-  2619 => true,
-  2621 => true,
-  2627 => true,
-  2628 => true,
-  2629 => true,
-  2630 => true,
-  2633 => true,
-  2634 => true,
-  2638 => true,
-  2639 => true,
-  2640 => true,
-  2642 => true,
-  2643 => true,
-  2644 => true,
-  2645 => true,
-  2646 => true,
-  2647 => true,
-  2648 => true,
-  2653 => true,
-  2655 => true,
-  2656 => true,
-  2657 => true,
-  2658 => true,
-  2659 => true,
-  2660 => true,
-  2661 => true,
-  2679 => true,
-  2680 => true,
-  2681 => true,
-  2682 => true,
-  2683 => true,
-  2684 => true,
-  2685 => true,
-  2686 => true,
-  2687 => true,
-  2688 => true,
-  2692 => true,
-  2702 => true,
-  2706 => true,
-  2729 => true,
-  2737 => true,
-  2740 => true,
-  2746 => true,
-  2747 => true,
-  2758 => true,
-  2762 => true,
-  2766 => true,
-  2767 => true,
-  2769 => true,
-  2770 => true,
-  2771 => true,
-  2772 => true,
-  2773 => true,
-  2774 => true,
-  2775 => true,
-  2776 => true,
-  2777 => true,
-  2778 => true,
-  2779 => true,
-  2780 => true,
-  2781 => true,
-  2782 => true,
-  2783 => true,
-  2788 => true,
-  2789 => true,
-  2802 => true,
-  2803 => true,
-  2804 => true,
-  2805 => true,
-  2806 => true,
-  2807 => true,
-  2808 => true,
-  2816 => true,
-  2820 => true,
-  2829 => true,
-  2830 => true,
-  2833 => true,
-  2834 => true,
-  2857 => true,
-  2865 => true,
-  2868 => true,
-  2874 => true,
-  2875 => true,
-  2885 => true,
-  2886 => true,
-  2889 => true,
-  2890 => true,
-  2894 => true,
-  2895 => true,
-  2896 => true,
-  2897 => true,
-  2898 => true,
-  2899 => true,
-  2900 => true,
-  2904 => true,
-  2905 => true,
-  2906 => true,
-  2907 => true,
-  2910 => true,
-  2916 => true,
-  2917 => true,
-  2936 => true,
-  2937 => true,
-  2938 => true,
-  2939 => true,
-  2940 => true,
-  2941 => true,
-  2942 => true,
-  2943 => true,
-  2944 => true,
-  2945 => true,
-  2948 => true,
-  2955 => true,
-  2956 => true,
-  2957 => true,
-  2961 => true,
-  2966 => true,
-  2967 => true,
-  2968 => true,
-  2971 => true,
-  2973 => true,
-  2976 => true,
-  2977 => true,
-  2978 => true,
-  2981 => true,
-  2982 => true,
-  2983 => true,
-  2987 => true,
-  2988 => true,
-  2989 => true,
-  3002 => true,
-  3003 => true,
-  3004 => true,
-  3005 => true,
-  3011 => true,
-  3012 => true,
-  3013 => true,
-  3017 => true,
-  3022 => true,
-  3023 => true,
-  3025 => true,
-  3026 => true,
-  3027 => true,
-  3028 => true,
-  3029 => true,
-  3030 => true,
-  3032 => true,
-  3033 => true,
-  3034 => true,
-  3035 => true,
-  3036 => true,
-  3037 => true,
-  3038 => true,
-  3039 => true,
-  3040 => true,
-  3041 => true,
-  3042 => true,
-  3043 => true,
-  3044 => true,
-  3045 => true,
-  3067 => true,
-  3068 => true,
-  3069 => true,
-  3070 => true,
-  3071 => true,
-  3085 => true,
-  3089 => true,
-  3113 => true,
-  3130 => true,
-  3131 => true,
-  3132 => true,
-  3141 => true,
-  3145 => true,
-  3150 => true,
-  3151 => true,
-  3152 => true,
-  3153 => true,
-  3154 => true,
-  3155 => true,
-  3156 => true,
-  3159 => true,
-  3163 => true,
-  3164 => true,
-  3165 => true,
-  3166 => true,
-  3167 => true,
-  3172 => true,
-  3173 => true,
-  3184 => true,
-  3185 => true,
-  3186 => true,
-  3187 => true,
-  3188 => true,
-  3189 => true,
-  3190 => true,
-  3213 => true,
-  3217 => true,
-  3241 => true,
-  3252 => true,
-  3258 => true,
-  3259 => true,
-  3269 => true,
-  3273 => true,
-  3278 => true,
-  3279 => true,
-  3280 => true,
-  3281 => true,
-  3282 => true,
-  3283 => true,
-  3284 => true,
-  3287 => true,
-  3288 => true,
-  3289 => true,
-  3290 => true,
-  3291 => true,
-  3292 => true,
-  3293 => true,
-  3295 => true,
-  3300 => true,
-  3301 => true,
-  3312 => true,
-  3315 => true,
-  3316 => true,
-  3317 => true,
-  3318 => true,
-  3319 => true,
-  3320 => true,
-  3321 => true,
-  3322 => true,
-  3323 => true,
-  3324 => true,
-  3325 => true,
-  3326 => true,
-  3327 => true,
-  3341 => true,
-  3345 => true,
-  3397 => true,
-  3401 => true,
-  3408 => true,
-  3409 => true,
-  3410 => true,
-  3411 => true,
-  3428 => true,
-  3429 => true,
-  3456 => true,
-  3460 => true,
-  3479 => true,
-  3480 => true,
-  3481 => true,
-  3506 => true,
-  3516 => true,
-  3518 => true,
-  3519 => true,
-  3527 => true,
-  3528 => true,
-  3529 => true,
-  3531 => true,
-  3532 => true,
-  3533 => true,
-  3534 => true,
-  3541 => true,
-  3543 => true,
-  3552 => true,
-  3553 => true,
-  3554 => true,
-  3555 => true,
-  3556 => true,
-  3557 => true,
-  3568 => true,
-  3569 => true,
-  3573 => true,
-  3574 => true,
-  3575 => true,
-  3576 => true,
-  3577 => true,
-  3578 => true,
-  3579 => true,
-  3580 => true,
-  3581 => true,
-  3582 => true,
-  3583 => true,
-  3584 => true,
-  3643 => true,
-  3644 => true,
-  3645 => true,
-  3646 => true,
-  3715 => true,
-  3717 => true,
-  3723 => true,
-  3748 => true,
-  3750 => true,
-  3774 => true,
-  3775 => true,
-  3781 => true,
-  3783 => true,
-  3790 => true,
-  3791 => true,
-  3802 => true,
-  3803 => true,
-  3912 => true,
-  3949 => true,
-  3950 => true,
-  3951 => true,
-  3952 => true,
-  3992 => true,
-  4029 => true,
-  4045 => true,
-  4294 => true,
-  4296 => true,
-  4297 => true,
-  4298 => true,
-  4299 => true,
-  4300 => true,
-  4302 => true,
-  4303 => true,
-  4447 => true,
-  4448 => true,
-  4681 => true,
-  4686 => true,
-  4687 => true,
-  4695 => true,
-  4697 => true,
-  4702 => true,
-  4703 => true,
-  4745 => true,
-  4750 => true,
-  4751 => true,
-  4785 => true,
-  4790 => true,
-  4791 => true,
-  4799 => true,
-  4801 => true,
-  4806 => true,
-  4807 => true,
-  4823 => true,
-  4881 => true,
-  4886 => true,
-  4887 => true,
-  4955 => true,
-  4956 => true,
-  4989 => true,
-  4990 => true,
-  4991 => true,
-  5018 => true,
-  5019 => true,
-  5020 => true,
-  5021 => true,
-  5022 => true,
-  5023 => true,
-  5110 => true,
-  5111 => true,
-  5118 => true,
-  5119 => true,
-  5760 => true,
-  5789 => true,
-  5790 => true,
-  5791 => true,
-  5881 => true,
-  5882 => true,
-  5883 => true,
-  5884 => true,
-  5885 => true,
-  5886 => true,
-  5887 => true,
-  5901 => true,
-  5909 => true,
-  5910 => true,
-  5911 => true,
-  5912 => true,
-  5913 => true,
-  5914 => true,
-  5915 => true,
-  5916 => true,
-  5917 => true,
-  5918 => true,
-  5919 => true,
-  5943 => true,
-  5944 => true,
-  5945 => true,
-  5946 => true,
-  5947 => true,
-  5948 => true,
-  5949 => true,
-  5950 => true,
-  5951 => true,
-  5972 => true,
-  5973 => true,
-  5974 => true,
-  5975 => true,
-  5976 => true,
-  5977 => true,
-  5978 => true,
-  5979 => true,
-  5980 => true,
-  5981 => true,
-  5982 => true,
-  5983 => true,
-  5997 => true,
-  6001 => true,
-  6004 => true,
-  6005 => true,
-  6006 => true,
-  6007 => true,
-  6008 => true,
-  6009 => true,
-  6010 => true,
-  6011 => true,
-  6012 => true,
-  6013 => true,
-  6014 => true,
-  6015 => true,
-  6068 => true,
-  6069 => true,
-  6110 => true,
-  6111 => true,
-  6122 => true,
-  6123 => true,
-  6124 => true,
-  6125 => true,
-  6126 => true,
-  6127 => true,
-  6138 => true,
-  6139 => true,
-  6140 => true,
-  6141 => true,
-  6142 => true,
-  6143 => true,
-  6150 => true,
-  6158 => true,
-  6159 => true,
-  6170 => true,
-  6171 => true,
-  6172 => true,
-  6173 => true,
-  6174 => true,
-  6175 => true,
-  6265 => true,
-  6266 => true,
-  6267 => true,
-  6268 => true,
-  6269 => true,
-  6270 => true,
-  6271 => true,
-  6315 => true,
-  6316 => true,
-  6317 => true,
-  6318 => true,
-  6319 => true,
-  6390 => true,
-  6391 => true,
-  6392 => true,
-  6393 => true,
-  6394 => true,
-  6395 => true,
-  6396 => true,
-  6397 => true,
-  6398 => true,
-  6399 => true,
-  6431 => true,
-  6444 => true,
-  6445 => true,
-  6446 => true,
-  6447 => true,
-  6460 => true,
-  6461 => true,
-  6462 => true,
-  6463 => true,
-  6465 => true,
-  6466 => true,
-  6467 => true,
-  6510 => true,
-  6511 => true,
-  6517 => true,
-  6518 => true,
-  6519 => true,
-  6520 => true,
-  6521 => true,
-  6522 => true,
-  6523 => true,
-  6524 => true,
-  6525 => true,
-  6526 => true,
-  6527 => true,
-  6572 => true,
-  6573 => true,
-  6574 => true,
-  6575 => true,
-  6602 => true,
-  6603 => true,
-  6604 => true,
-  6605 => true,
-  6606 => true,
-  6607 => true,
-  6619 => true,
-  6620 => true,
-  6621 => true,
-  6684 => true,
-  6685 => true,
-  6751 => true,
-  6781 => true,
-  6782 => true,
-  6794 => true,
-  6795 => true,
-  6796 => true,
-  6797 => true,
-  6798 => true,
-  6799 => true,
-  6810 => true,
-  6811 => true,
-  6812 => true,
-  6813 => true,
-  6814 => true,
-  6815 => true,
-  6830 => true,
-  6831 => true,
-  6988 => true,
-  6989 => true,
-  6990 => true,
-  6991 => true,
-  7037 => true,
-  7038 => true,
-  7039 => true,
-  7156 => true,
-  7157 => true,
-  7158 => true,
-  7159 => true,
-  7160 => true,
-  7161 => true,
-  7162 => true,
-  7163 => true,
-  7224 => true,
-  7225 => true,
-  7226 => true,
-  7242 => true,
-  7243 => true,
-  7244 => true,
-  7305 => true,
-  7306 => true,
-  7307 => true,
-  7308 => true,
-  7309 => true,
-  7310 => true,
-  7311 => true,
-  7355 => true,
-  7356 => true,
-  7368 => true,
-  7369 => true,
-  7370 => true,
-  7371 => true,
-  7372 => true,
-  7373 => true,
-  7374 => true,
-  7375 => true,
-  7419 => true,
-  7420 => true,
-  7421 => true,
-  7422 => true,
-  7423 => true,
-  7674 => true,
-  7958 => true,
-  7959 => true,
-  7966 => true,
-  7967 => true,
-  8006 => true,
-  8007 => true,
-  8014 => true,
-  8015 => true,
-  8024 => true,
-  8026 => true,
-  8028 => true,
-  8030 => true,
-  8062 => true,
-  8063 => true,
-  8117 => true,
-  8133 => true,
-  8148 => true,
-  8149 => true,
-  8156 => true,
-  8176 => true,
-  8177 => true,
-  8181 => true,
-  8191 => true,
-  8206 => true,
-  8207 => true,
-  8228 => true,
-  8229 => true,
-  8230 => true,
-  8232 => true,
-  8233 => true,
-  8234 => true,
-  8235 => true,
-  8236 => true,
-  8237 => true,
-  8238 => true,
-  8289 => true,
-  8290 => true,
-  8291 => true,
-  8293 => true,
-  8294 => true,
-  8295 => true,
-  8296 => true,
-  8297 => true,
-  8298 => true,
-  8299 => true,
-  8300 => true,
-  8301 => true,
-  8302 => true,
-  8303 => true,
-  8306 => true,
-  8307 => true,
-  8335 => true,
-  8349 => true,
-  8350 => true,
-  8351 => true,
-  8384 => true,
-  8385 => true,
-  8386 => true,
-  8387 => true,
-  8388 => true,
-  8389 => true,
-  8390 => true,
-  8391 => true,
-  8392 => true,
-  8393 => true,
-  8394 => true,
-  8395 => true,
-  8396 => true,
-  8397 => true,
-  8398 => true,
-  8399 => true,
-  8433 => true,
-  8434 => true,
-  8435 => true,
-  8436 => true,
-  8437 => true,
-  8438 => true,
-  8439 => true,
-  8440 => true,
-  8441 => true,
-  8442 => true,
-  8443 => true,
-  8444 => true,
-  8445 => true,
-  8446 => true,
-  8447 => true,
-  8498 => true,
-  8579 => true,
-  8588 => true,
-  8589 => true,
-  8590 => true,
-  8591 => true,
-  9255 => true,
-  9256 => true,
-  9257 => true,
-  9258 => true,
-  9259 => true,
-  9260 => true,
-  9261 => true,
-  9262 => true,
-  9263 => true,
-  9264 => true,
-  9265 => true,
-  9266 => true,
-  9267 => true,
-  9268 => true,
-  9269 => true,
-  9270 => true,
-  9271 => true,
-  9272 => true,
-  9273 => true,
-  9274 => true,
-  9275 => true,
-  9276 => true,
-  9277 => true,
-  9278 => true,
-  9279 => true,
-  9291 => true,
-  9292 => true,
-  9293 => true,
-  9294 => true,
-  9295 => true,
-  9296 => true,
-  9297 => true,
-  9298 => true,
-  9299 => true,
-  9300 => true,
-  9301 => true,
-  9302 => true,
-  9303 => true,
-  9304 => true,
-  9305 => true,
-  9306 => true,
-  9307 => true,
-  9308 => true,
-  9309 => true,
-  9310 => true,
-  9311 => true,
-  9352 => true,
-  9353 => true,
-  9354 => true,
-  9355 => true,
-  9356 => true,
-  9357 => true,
-  9358 => true,
-  9359 => true,
-  9360 => true,
-  9361 => true,
-  9362 => true,
-  9363 => true,
-  9364 => true,
-  9365 => true,
-  9366 => true,
-  9367 => true,
-  9368 => true,
-  9369 => true,
-  9370 => true,
-  9371 => true,
-  11124 => true,
-  11125 => true,
-  11158 => true,
-  11311 => true,
-  11359 => true,
-  11508 => true,
-  11509 => true,
-  11510 => true,
-  11511 => true,
-  11512 => true,
-  11558 => true,
-  11560 => true,
-  11561 => true,
-  11562 => true,
-  11563 => true,
-  11564 => true,
-  11566 => true,
-  11567 => true,
-  11624 => true,
-  11625 => true,
-  11626 => true,
-  11627 => true,
-  11628 => true,
-  11629 => true,
-  11630 => true,
-  11633 => true,
-  11634 => true,
-  11635 => true,
-  11636 => true,
-  11637 => true,
-  11638 => true,
-  11639 => true,
-  11640 => true,
-  11641 => true,
-  11642 => true,
-  11643 => true,
-  11644 => true,
-  11645 => true,
-  11646 => true,
-  11671 => true,
-  11672 => true,
-  11673 => true,
-  11674 => true,
-  11675 => true,
-  11676 => true,
-  11677 => true,
-  11678 => true,
-  11679 => true,
-  11687 => true,
-  11695 => true,
-  11703 => true,
-  11711 => true,
-  11719 => true,
-  11727 => true,
-  11735 => true,
-  11743 => true,
-  11930 => true,
-  12020 => true,
-  12021 => true,
-  12022 => true,
-  12023 => true,
-  12024 => true,
-  12025 => true,
-  12026 => true,
-  12027 => true,
-  12028 => true,
-  12029 => true,
-  12030 => true,
-  12031 => true,
-  12246 => true,
-  12247 => true,
-  12248 => true,
-  12249 => true,
-  12250 => true,
-  12251 => true,
-  12252 => true,
-  12253 => true,
-  12254 => true,
-  12255 => true,
-  12256 => true,
-  12257 => true,
-  12258 => true,
-  12259 => true,
-  12260 => true,
-  12261 => true,
-  12262 => true,
-  12263 => true,
-  12264 => true,
-  12265 => true,
-  12266 => true,
-  12267 => true,
-  12268 => true,
-  12269 => true,
-  12270 => true,
-  12271 => true,
-  12272 => true,
-  12273 => true,
-  12274 => true,
-  12275 => true,
-  12276 => true,
-  12277 => true,
-  12278 => true,
-  12279 => true,
-  12280 => true,
-  12281 => true,
-  12282 => true,
-  12283 => true,
-  12284 => true,
-  12285 => true,
-  12286 => true,
-  12287 => true,
-  12352 => true,
-  12439 => true,
-  12440 => true,
-  12544 => true,
-  12545 => true,
-  12546 => true,
-  12547 => true,
-  12548 => true,
-  12592 => true,
-  12644 => true,
-  12687 => true,
-  12772 => true,
-  12773 => true,
-  12774 => true,
-  12775 => true,
-  12776 => true,
-  12777 => true,
-  12778 => true,
-  12779 => true,
-  12780 => true,
-  12781 => true,
-  12782 => true,
-  12783 => true,
-  12831 => true,
-  13250 => true,
-  13255 => true,
-  13272 => true,
-  40957 => true,
-  40958 => true,
-  40959 => true,
-  42125 => true,
-  42126 => true,
-  42127 => true,
-  42183 => true,
-  42184 => true,
-  42185 => true,
-  42186 => true,
-  42187 => true,
-  42188 => true,
-  42189 => true,
-  42190 => true,
-  42191 => true,
-  42540 => true,
-  42541 => true,
-  42542 => true,
-  42543 => true,
-  42544 => true,
-  42545 => true,
-  42546 => true,
-  42547 => true,
-  42548 => true,
-  42549 => true,
-  42550 => true,
-  42551 => true,
-  42552 => true,
-  42553 => true,
-  42554 => true,
-  42555 => true,
-  42556 => true,
-  42557 => true,
-  42558 => true,
-  42559 => true,
-  42744 => true,
-  42745 => true,
-  42746 => true,
-  42747 => true,
-  42748 => true,
-  42749 => true,
-  42750 => true,
-  42751 => true,
-  42944 => true,
-  42945 => true,
-  43053 => true,
-  43054 => true,
-  43055 => true,
-  43066 => true,
-  43067 => true,
-  43068 => true,
-  43069 => true,
-  43070 => true,
-  43071 => true,
-  43128 => true,
-  43129 => true,
-  43130 => true,
-  43131 => true,
-  43132 => true,
-  43133 => true,
-  43134 => true,
-  43135 => true,
-  43206 => true,
-  43207 => true,
-  43208 => true,
-  43209 => true,
-  43210 => true,
-  43211 => true,
-  43212 => true,
-  43213 => true,
-  43226 => true,
-  43227 => true,
-  43228 => true,
-  43229 => true,
-  43230 => true,
-  43231 => true,
-  43348 => true,
-  43349 => true,
-  43350 => true,
-  43351 => true,
-  43352 => true,
-  43353 => true,
-  43354 => true,
-  43355 => true,
-  43356 => true,
-  43357 => true,
-  43358 => true,
-  43389 => true,
-  43390 => true,
-  43391 => true,
-  43470 => true,
-  43482 => true,
-  43483 => true,
-  43484 => true,
-  43485 => true,
-  43519 => true,
-  43575 => true,
-  43576 => true,
-  43577 => true,
-  43578 => true,
-  43579 => true,
-  43580 => true,
-  43581 => true,
-  43582 => true,
-  43583 => true,
-  43598 => true,
-  43599 => true,
-  43610 => true,
-  43611 => true,
-  43715 => true,
-  43716 => true,
-  43717 => true,
-  43718 => true,
-  43719 => true,
-  43720 => true,
-  43721 => true,
-  43722 => true,
-  43723 => true,
-  43724 => true,
-  43725 => true,
-  43726 => true,
-  43727 => true,
-  43728 => true,
-  43729 => true,
-  43730 => true,
-  43731 => true,
-  43732 => true,
-  43733 => true,
-  43734 => true,
-  43735 => true,
-  43736 => true,
-  43737 => true,
-  43738 => true,
-  43767 => true,
-  43768 => true,
-  43769 => true,
-  43770 => true,
-  43771 => true,
-  43772 => true,
-  43773 => true,
-  43774 => true,
-  43775 => true,
-  43776 => true,
-  43783 => true,
-  43784 => true,
-  43791 => true,
-  43792 => true,
-  43799 => true,
-  43800 => true,
-  43801 => true,
-  43802 => true,
-  43803 => true,
-  43804 => true,
-  43805 => true,
-  43806 => true,
-  43807 => true,
-  43815 => true,
-  43823 => true,
-  43884 => true,
-  43885 => true,
-  43886 => true,
-  43887 => true,
-  44014 => true,
-  44015 => true,
-  44026 => true,
-  44027 => true,
-  44028 => true,
-  44029 => true,
-  44030 => true,
-  44031 => true,
-  55204 => true,
-  55205 => true,
-  55206 => true,
-  55207 => true,
-  55208 => true,
-  55209 => true,
-  55210 => true,
-  55211 => true,
-  55212 => true,
-  55213 => true,
-  55214 => true,
-  55215 => true,
-  55239 => true,
-  55240 => true,
-  55241 => true,
-  55242 => true,
-  55292 => true,
-  55293 => true,
-  55294 => true,
-  55295 => true,
-  64110 => true,
-  64111 => true,
-  64263 => true,
-  64264 => true,
-  64265 => true,
-  64266 => true,
-  64267 => true,
-  64268 => true,
-  64269 => true,
-  64270 => true,
-  64271 => true,
-  64272 => true,
-  64273 => true,
-  64274 => true,
-  64280 => true,
-  64281 => true,
-  64282 => true,
-  64283 => true,
-  64284 => true,
-  64311 => true,
-  64317 => true,
-  64319 => true,
-  64322 => true,
-  64325 => true,
-  64450 => true,
-  64451 => true,
-  64452 => true,
-  64453 => true,
-  64454 => true,
-  64455 => true,
-  64456 => true,
-  64457 => true,
-  64458 => true,
-  64459 => true,
-  64460 => true,
-  64461 => true,
-  64462 => true,
-  64463 => true,
-  64464 => true,
-  64465 => true,
-  64466 => true,
-  64832 => true,
-  64833 => true,
-  64834 => true,
-  64835 => true,
-  64836 => true,
-  64837 => true,
-  64838 => true,
-  64839 => true,
-  64840 => true,
-  64841 => true,
-  64842 => true,
-  64843 => true,
-  64844 => true,
-  64845 => true,
-  64846 => true,
-  64847 => true,
-  64912 => true,
-  64913 => true,
-  64968 => true,
-  64969 => true,
-  64970 => true,
-  64971 => true,
-  64972 => true,
-  64973 => true,
-  64974 => true,
-  64975 => true,
-  65022 => true,
-  65023 => true,
-  65042 => true,
-  65049 => true,
-  65050 => true,
-  65051 => true,
-  65052 => true,
-  65053 => true,
-  65054 => true,
-  65055 => true,
-  65072 => true,
-  65106 => true,
-  65107 => true,
-  65127 => true,
-  65132 => true,
-  65133 => true,
-  65134 => true,
-  65135 => true,
-  65141 => true,
-  65277 => true,
-  65278 => true,
-  65280 => true,
-  65440 => true,
-  65471 => true,
-  65472 => true,
-  65473 => true,
-  65480 => true,
-  65481 => true,
-  65488 => true,
-  65489 => true,
-  65496 => true,
-  65497 => true,
-  65501 => true,
-  65502 => true,
-  65503 => true,
-  65511 => true,
-  65519 => true,
-  65520 => true,
-  65521 => true,
-  65522 => true,
-  65523 => true,
-  65524 => true,
-  65525 => true,
-  65526 => true,
-  65527 => true,
-  65528 => true,
-  65529 => true,
-  65530 => true,
-  65531 => true,
-  65532 => true,
-  65533 => true,
-  65534 => true,
-  65535 => true,
-  65548 => true,
-  65575 => true,
-  65595 => true,
-  65598 => true,
-  65614 => true,
-  65615 => true,
-  65787 => true,
-  65788 => true,
-  65789 => true,
-  65790 => true,
-  65791 => true,
-  65795 => true,
-  65796 => true,
-  65797 => true,
-  65798 => true,
-  65844 => true,
-  65845 => true,
-  65846 => true,
-  65935 => true,
-  65949 => true,
-  65950 => true,
-  65951 => true,
-  66205 => true,
-  66206 => true,
-  66207 => true,
-  66257 => true,
-  66258 => true,
-  66259 => true,
-  66260 => true,
-  66261 => true,
-  66262 => true,
-  66263 => true,
-  66264 => true,
-  66265 => true,
-  66266 => true,
-  66267 => true,
-  66268 => true,
-  66269 => true,
-  66270 => true,
-  66271 => true,
-  66300 => true,
-  66301 => true,
-  66302 => true,
-  66303 => true,
-  66340 => true,
-  66341 => true,
-  66342 => true,
-  66343 => true,
-  66344 => true,
-  66345 => true,
-  66346 => true,
-  66347 => true,
-  66348 => true,
-  66379 => true,
-  66380 => true,
-  66381 => true,
-  66382 => true,
-  66383 => true,
-  66427 => true,
-  66428 => true,
-  66429 => true,
-  66430 => true,
-  66431 => true,
-  66462 => true,
-  66500 => true,
-  66501 => true,
-  66502 => true,
-  66503 => true,
-  66718 => true,
-  66719 => true,
-  66730 => true,
-  66731 => true,
-  66732 => true,
-  66733 => true,
-  66734 => true,
-  66735 => true,
-  66772 => true,
-  66773 => true,
-  66774 => true,
-  66775 => true,
-  66812 => true,
-  66813 => true,
-  66814 => true,
-  66815 => true,
-  66856 => true,
-  66857 => true,
-  66858 => true,
-  66859 => true,
-  66860 => true,
-  66861 => true,
-  66862 => true,
-  66863 => true,
-  66916 => true,
-  66917 => true,
-  66918 => true,
-  66919 => true,
-  66920 => true,
-  66921 => true,
-  66922 => true,
-  66923 => true,
-  66924 => true,
-  66925 => true,
-  66926 => true,
-  67383 => true,
-  67384 => true,
-  67385 => true,
-  67386 => true,
-  67387 => true,
-  67388 => true,
-  67389 => true,
-  67390 => true,
-  67391 => true,
-  67414 => true,
-  67415 => true,
-  67416 => true,
-  67417 => true,
-  67418 => true,
-  67419 => true,
-  67420 => true,
-  67421 => true,
-  67422 => true,
-  67423 => true,
-  67590 => true,
-  67591 => true,
-  67593 => true,
-  67638 => true,
-  67641 => true,
-  67642 => true,
-  67643 => true,
-  67645 => true,
-  67646 => true,
-  67670 => true,
-  67743 => true,
-  67744 => true,
-  67745 => true,
-  67746 => true,
-  67747 => true,
-  67748 => true,
-  67749 => true,
-  67750 => true,
-  67827 => true,
-  67830 => true,
-  67831 => true,
-  67832 => true,
-  67833 => true,
-  67834 => true,
-  67868 => true,
-  67869 => true,
-  67870 => true,
-  67898 => true,
-  67899 => true,
-  67900 => true,
-  67901 => true,
-  67902 => true,
-  68024 => true,
-  68025 => true,
-  68026 => true,
-  68027 => true,
-  68048 => true,
-  68049 => true,
-  68100 => true,
-  68103 => true,
-  68104 => true,
-  68105 => true,
-  68106 => true,
-  68107 => true,
-  68116 => true,
-  68120 => true,
-  68150 => true,
-  68151 => true,
-  68155 => true,
-  68156 => true,
-  68157 => true,
-  68158 => true,
-  68169 => true,
-  68170 => true,
-  68171 => true,
-  68172 => true,
-  68173 => true,
-  68174 => true,
-  68175 => true,
-  68185 => true,
-  68186 => true,
-  68187 => true,
-  68188 => true,
-  68189 => true,
-  68190 => true,
-  68191 => true,
-  68327 => true,
-  68328 => true,
-  68329 => true,
-  68330 => true,
-  68343 => true,
-  68344 => true,
-  68345 => true,
-  68346 => true,
-  68347 => true,
-  68348 => true,
-  68349 => true,
-  68350 => true,
-  68351 => true,
-  68406 => true,
-  68407 => true,
-  68408 => true,
-  68438 => true,
-  68439 => true,
-  68467 => true,
-  68468 => true,
-  68469 => true,
-  68470 => true,
-  68471 => true,
-  68498 => true,
-  68499 => true,
-  68500 => true,
-  68501 => true,
-  68502 => true,
-  68503 => true,
-  68504 => true,
-  68509 => true,
-  68510 => true,
-  68511 => true,
-  68512 => true,
-  68513 => true,
-  68514 => true,
-  68515 => true,
-  68516 => true,
-  68517 => true,
-  68518 => true,
-  68519 => true,
-  68520 => true,
-  68787 => true,
-  68788 => true,
-  68789 => true,
-  68790 => true,
-  68791 => true,
-  68792 => true,
-  68793 => true,
-  68794 => true,
-  68795 => true,
-  68796 => true,
-  68797 => true,
-  68798 => true,
-  68799 => true,
-  68851 => true,
-  68852 => true,
-  68853 => true,
-  68854 => true,
-  68855 => true,
-  68856 => true,
-  68857 => true,
-  68904 => true,
-  68905 => true,
-  68906 => true,
-  68907 => true,
-  68908 => true,
-  68909 => true,
-  68910 => true,
-  68911 => true,
-  69247 => true,
-  69290 => true,
-  69294 => true,
-  69295 => true,
-  69416 => true,
-  69417 => true,
-  69418 => true,
-  69419 => true,
-  69420 => true,
-  69421 => true,
-  69422 => true,
-  69423 => true,
-  69580 => true,
-  69581 => true,
-  69582 => true,
-  69583 => true,
-  69584 => true,
-  69585 => true,
-  69586 => true,
-  69587 => true,
-  69588 => true,
-  69589 => true,
-  69590 => true,
-  69591 => true,
-  69592 => true,
-  69593 => true,
-  69594 => true,
-  69595 => true,
-  69596 => true,
-  69597 => true,
-  69598 => true,
-  69599 => true,
-  69623 => true,
-  69624 => true,
-  69625 => true,
-  69626 => true,
-  69627 => true,
-  69628 => true,
-  69629 => true,
-  69630 => true,
-  69631 => true,
-  69710 => true,
-  69711 => true,
-  69712 => true,
-  69713 => true,
-  69744 => true,
-  69745 => true,
-  69746 => true,
-  69747 => true,
-  69748 => true,
-  69749 => true,
-  69750 => true,
-  69751 => true,
-  69752 => true,
-  69753 => true,
-  69754 => true,
-  69755 => true,
-  69756 => true,
-  69757 => true,
-  69758 => true,
-  69821 => true,
-  69826 => true,
-  69827 => true,
-  69828 => true,
-  69829 => true,
-  69830 => true,
-  69831 => true,
-  69832 => true,
-  69833 => true,
-  69834 => true,
-  69835 => true,
-  69836 => true,
-  69837 => true,
-  69838 => true,
-  69839 => true,
-  69865 => true,
-  69866 => true,
-  69867 => true,
-  69868 => true,
-  69869 => true,
-  69870 => true,
-  69871 => true,
-  69882 => true,
-  69883 => true,
-  69884 => true,
-  69885 => true,
-  69886 => true,
-  69887 => true,
-  69941 => true,
-  69960 => true,
-  69961 => true,
-  69962 => true,
-  69963 => true,
-  69964 => true,
-  69965 => true,
-  69966 => true,
-  69967 => true,
-  70007 => true,
-  70008 => true,
-  70009 => true,
-  70010 => true,
-  70011 => true,
-  70012 => true,
-  70013 => true,
-  70014 => true,
-  70015 => true,
-  70112 => true,
-  70133 => true,
-  70134 => true,
-  70135 => true,
-  70136 => true,
-  70137 => true,
-  70138 => true,
-  70139 => true,
-  70140 => true,
-  70141 => true,
-  70142 => true,
-  70143 => true,
-  70162 => true,
-  70279 => true,
-  70281 => true,
-  70286 => true,
-  70302 => true,
-  70314 => true,
-  70315 => true,
-  70316 => true,
-  70317 => true,
-  70318 => true,
-  70319 => true,
-  70379 => true,
-  70380 => true,
-  70381 => true,
-  70382 => true,
-  70383 => true,
-  70394 => true,
-  70395 => true,
-  70396 => true,
-  70397 => true,
-  70398 => true,
-  70399 => true,
-  70404 => true,
-  70413 => true,
-  70414 => true,
-  70417 => true,
-  70418 => true,
-  70441 => true,
-  70449 => true,
-  70452 => true,
-  70458 => true,
-  70469 => true,
-  70470 => true,
-  70473 => true,
-  70474 => true,
-  70478 => true,
-  70479 => true,
-  70481 => true,
-  70482 => true,
-  70483 => true,
-  70484 => true,
-  70485 => true,
-  70486 => true,
-  70488 => true,
-  70489 => true,
-  70490 => true,
-  70491 => true,
-  70492 => true,
-  70500 => true,
-  70501 => true,
-  70509 => true,
-  70510 => true,
-  70511 => true,
-  70748 => true,
-  70754 => true,
-  70755 => true,
-  70756 => true,
-  70757 => true,
-  70758 => true,
-  70759 => true,
-  70760 => true,
-  70761 => true,
-  70762 => true,
-  70763 => true,
-  70764 => true,
-  70765 => true,
-  70766 => true,
-  70767 => true,
-  70768 => true,
-  70769 => true,
-  70770 => true,
-  70771 => true,
-  70772 => true,
-  70773 => true,
-  70774 => true,
-  70775 => true,
-  70776 => true,
-  70777 => true,
-  70778 => true,
-  70779 => true,
-  70780 => true,
-  70781 => true,
-  70782 => true,
-  70783 => true,
-  70856 => true,
-  70857 => true,
-  70858 => true,
-  70859 => true,
-  70860 => true,
-  70861 => true,
-  70862 => true,
-  70863 => true,
-  71094 => true,
-  71095 => true,
-  71237 => true,
-  71238 => true,
-  71239 => true,
-  71240 => true,
-  71241 => true,
-  71242 => true,
-  71243 => true,
-  71244 => true,
-  71245 => true,
-  71246 => true,
-  71247 => true,
-  71258 => true,
-  71259 => true,
-  71260 => true,
-  71261 => true,
-  71262 => true,
-  71263 => true,
-  71277 => true,
-  71278 => true,
-  71279 => true,
-  71280 => true,
-  71281 => true,
-  71282 => true,
-  71283 => true,
-  71284 => true,
-  71285 => true,
-  71286 => true,
-  71287 => true,
-  71288 => true,
-  71289 => true,
-  71290 => true,
-  71291 => true,
-  71292 => true,
-  71293 => true,
-  71294 => true,
-  71295 => true,
-  71353 => true,
-  71354 => true,
-  71355 => true,
-  71356 => true,
-  71357 => true,
-  71358 => true,
-  71359 => true,
-  71451 => true,
-  71452 => true,
-  71468 => true,
-  71469 => true,
-  71470 => true,
-  71471 => true,
-  71923 => true,
-  71924 => true,
-  71925 => true,
-  71926 => true,
-  71927 => true,
-  71928 => true,
-  71929 => true,
-  71930 => true,
-  71931 => true,
-  71932 => true,
-  71933 => true,
-  71934 => true,
-  71943 => true,
-  71944 => true,
-  71946 => true,
-  71947 => true,
-  71956 => true,
-  71959 => true,
-  71990 => true,
-  71993 => true,
-  71994 => true,
-  72007 => true,
-  72008 => true,
-  72009 => true,
-  72010 => true,
-  72011 => true,
-  72012 => true,
-  72013 => true,
-  72014 => true,
-  72015 => true,
-  72104 => true,
-  72105 => true,
-  72152 => true,
-  72153 => true,
-  72165 => true,
-  72166 => true,
-  72167 => true,
-  72168 => true,
-  72169 => true,
-  72170 => true,
-  72171 => true,
-  72172 => true,
-  72173 => true,
-  72174 => true,
-  72175 => true,
-  72176 => true,
-  72177 => true,
-  72178 => true,
-  72179 => true,
-  72180 => true,
-  72181 => true,
-  72182 => true,
-  72183 => true,
-  72184 => true,
-  72185 => true,
-  72186 => true,
-  72187 => true,
-  72188 => true,
-  72189 => true,
-  72190 => true,
-  72191 => true,
-  72264 => true,
-  72265 => true,
-  72266 => true,
-  72267 => true,
-  72268 => true,
-  72269 => true,
-  72270 => true,
-  72271 => true,
-  72355 => true,
-  72356 => true,
-  72357 => true,
-  72358 => true,
-  72359 => true,
-  72360 => true,
-  72361 => true,
-  72362 => true,
-  72363 => true,
-  72364 => true,
-  72365 => true,
-  72366 => true,
-  72367 => true,
-  72368 => true,
-  72369 => true,
-  72370 => true,
-  72371 => true,
-  72372 => true,
-  72373 => true,
-  72374 => true,
-  72375 => true,
-  72376 => true,
-  72377 => true,
-  72378 => true,
-  72379 => true,
-  72380 => true,
-  72381 => true,
-  72382 => true,
-  72383 => true,
-  72713 => true,
-  72759 => true,
-  72774 => true,
-  72775 => true,
-  72776 => true,
-  72777 => true,
-  72778 => true,
-  72779 => true,
-  72780 => true,
-  72781 => true,
-  72782 => true,
-  72783 => true,
-  72813 => true,
-  72814 => true,
-  72815 => true,
-  72848 => true,
-  72849 => true,
-  72872 => true,
-  72967 => true,
-  72970 => true,
-  73015 => true,
-  73016 => true,
-  73017 => true,
-  73019 => true,
-  73022 => true,
-  73032 => true,
-  73033 => true,
-  73034 => true,
-  73035 => true,
-  73036 => true,
-  73037 => true,
-  73038 => true,
-  73039 => true,
-  73050 => true,
-  73051 => true,
-  73052 => true,
-  73053 => true,
-  73054 => true,
-  73055 => true,
-  73062 => true,
-  73065 => true,
-  73103 => true,
-  73106 => true,
-  73113 => true,
-  73114 => true,
-  73115 => true,
-  73116 => true,
-  73117 => true,
-  73118 => true,
-  73119 => true,
-  73649 => true,
-  73650 => true,
-  73651 => true,
-  73652 => true,
-  73653 => true,
-  73654 => true,
-  73655 => true,
-  73656 => true,
-  73657 => true,
-  73658 => true,
-  73659 => true,
-  73660 => true,
-  73661 => true,
-  73662 => true,
-  73663 => true,
-  73714 => true,
-  73715 => true,
-  73716 => true,
-  73717 => true,
-  73718 => true,
-  73719 => true,
-  73720 => true,
-  73721 => true,
-  73722 => true,
-  73723 => true,
-  73724 => true,
-  73725 => true,
-  73726 => true,
-  74863 => true,
-  74869 => true,
-  74870 => true,
-  74871 => true,
-  74872 => true,
-  74873 => true,
-  74874 => true,
-  74875 => true,
-  74876 => true,
-  74877 => true,
-  74878 => true,
-  74879 => true,
-  78895 => true,
-  78896 => true,
-  78897 => true,
-  78898 => true,
-  78899 => true,
-  78900 => true,
-  78901 => true,
-  78902 => true,
-  78903 => true,
-  78904 => true,
-  92729 => true,
-  92730 => true,
-  92731 => true,
-  92732 => true,
-  92733 => true,
-  92734 => true,
-  92735 => true,
-  92767 => true,
-  92778 => true,
-  92779 => true,
-  92780 => true,
-  92781 => true,
-  92910 => true,
-  92911 => true,
-  92918 => true,
-  92919 => true,
-  92920 => true,
-  92921 => true,
-  92922 => true,
-  92923 => true,
-  92924 => true,
-  92925 => true,
-  92926 => true,
-  92927 => true,
-  92998 => true,
-  92999 => true,
-  93000 => true,
-  93001 => true,
-  93002 => true,
-  93003 => true,
-  93004 => true,
-  93005 => true,
-  93006 => true,
-  93007 => true,
-  93018 => true,
-  93026 => true,
-  93048 => true,
-  93049 => true,
-  93050 => true,
-  93051 => true,
-  93052 => true,
-  94027 => true,
-  94028 => true,
-  94029 => true,
-  94030 => true,
-  94088 => true,
-  94089 => true,
-  94090 => true,
-  94091 => true,
-  94092 => true,
-  94093 => true,
-  94094 => true,
-  94181 => true,
-  94182 => true,
-  94183 => true,
-  94184 => true,
-  94185 => true,
-  94186 => true,
-  94187 => true,
-  94188 => true,
-  94189 => true,
-  94190 => true,
-  94191 => true,
-  94194 => true,
-  94195 => true,
-  94196 => true,
-  94197 => true,
-  94198 => true,
-  94199 => true,
-  94200 => true,
-  94201 => true,
-  94202 => true,
-  94203 => true,
-  94204 => true,
-  94205 => true,
-  94206 => true,
-  94207 => true,
-  100344 => true,
-  100345 => true,
-  100346 => true,
-  100347 => true,
-  100348 => true,
-  100349 => true,
-  100350 => true,
-  100351 => true,
-  110931 => true,
-  110932 => true,
-  110933 => true,
-  110934 => true,
-  110935 => true,
-  110936 => true,
-  110937 => true,
-  110938 => true,
-  110939 => true,
-  110940 => true,
-  110941 => true,
-  110942 => true,
-  110943 => true,
-  110944 => true,
-  110945 => true,
-  110946 => true,
-  110947 => true,
-  110952 => true,
-  110953 => true,
-  110954 => true,
-  110955 => true,
-  110956 => true,
-  110957 => true,
-  110958 => true,
-  110959 => true,
-  113771 => true,
-  113772 => true,
-  113773 => true,
-  113774 => true,
-  113775 => true,
-  113789 => true,
-  113790 => true,
-  113791 => true,
-  113801 => true,
-  113802 => true,
-  113803 => true,
-  113804 => true,
-  113805 => true,
-  113806 => true,
-  113807 => true,
-  113818 => true,
-  113819 => true,
-  119030 => true,
-  119031 => true,
-  119032 => true,
-  119033 => true,
-  119034 => true,
-  119035 => true,
-  119036 => true,
-  119037 => true,
-  119038 => true,
-  119039 => true,
-  119079 => true,
-  119080 => true,
-  119155 => true,
-  119156 => true,
-  119157 => true,
-  119158 => true,
-  119159 => true,
-  119160 => true,
-  119161 => true,
-  119162 => true,
-  119273 => true,
-  119274 => true,
-  119275 => true,
-  119276 => true,
-  119277 => true,
-  119278 => true,
-  119279 => true,
-  119280 => true,
-  119281 => true,
-  119282 => true,
-  119283 => true,
-  119284 => true,
-  119285 => true,
-  119286 => true,
-  119287 => true,
-  119288 => true,
-  119289 => true,
-  119290 => true,
-  119291 => true,
-  119292 => true,
-  119293 => true,
-  119294 => true,
-  119295 => true,
-  119540 => true,
-  119541 => true,
-  119542 => true,
-  119543 => true,
-  119544 => true,
-  119545 => true,
-  119546 => true,
-  119547 => true,
-  119548 => true,
-  119549 => true,
-  119550 => true,
-  119551 => true,
-  119639 => true,
-  119640 => true,
-  119641 => true,
-  119642 => true,
-  119643 => true,
-  119644 => true,
-  119645 => true,
-  119646 => true,
-  119647 => true,
-  119893 => true,
-  119965 => true,
-  119968 => true,
-  119969 => true,
-  119971 => true,
-  119972 => true,
-  119975 => true,
-  119976 => true,
-  119981 => true,
-  119994 => true,
-  119996 => true,
-  120004 => true,
-  120070 => true,
-  120075 => true,
-  120076 => true,
-  120085 => true,
-  120093 => true,
-  120122 => true,
-  120127 => true,
-  120133 => true,
-  120135 => true,
-  120136 => true,
-  120137 => true,
-  120145 => true,
-  120486 => true,
-  120487 => true,
-  120780 => true,
-  120781 => true,
-  121484 => true,
-  121485 => true,
-  121486 => true,
-  121487 => true,
-  121488 => true,
-  121489 => true,
-  121490 => true,
-  121491 => true,
-  121492 => true,
-  121493 => true,
-  121494 => true,
-  121495 => true,
-  121496 => true,
-  121497 => true,
-  121498 => true,
-  121504 => true,
-  122887 => true,
-  122905 => true,
-  122906 => true,
-  122914 => true,
-  122917 => true,
-  123181 => true,
-  123182 => true,
-  123183 => true,
-  123198 => true,
-  123199 => true,
-  123210 => true,
-  123211 => true,
-  123212 => true,
-  123213 => true,
-  123642 => true,
-  123643 => true,
-  123644 => true,
-  123645 => true,
-  123646 => true,
-  125125 => true,
-  125126 => true,
-  125260 => true,
-  125261 => true,
-  125262 => true,
-  125263 => true,
-  125274 => true,
-  125275 => true,
-  125276 => true,
-  125277 => true,
-  126468 => true,
-  126496 => true,
-  126499 => true,
-  126501 => true,
-  126502 => true,
-  126504 => true,
-  126515 => true,
-  126520 => true,
-  126522 => true,
-  126524 => true,
-  126525 => true,
-  126526 => true,
-  126527 => true,
-  126528 => true,
-  126529 => true,
-  126531 => true,
-  126532 => true,
-  126533 => true,
-  126534 => true,
-  126536 => true,
-  126538 => true,
-  126540 => true,
-  126544 => true,
-  126547 => true,
-  126549 => true,
-  126550 => true,
-  126552 => true,
-  126554 => true,
-  126556 => true,
-  126558 => true,
-  126560 => true,
-  126563 => true,
-  126565 => true,
-  126566 => true,
-  126571 => true,
-  126579 => true,
-  126584 => true,
-  126589 => true,
-  126591 => true,
-  126602 => true,
-  126620 => true,
-  126621 => true,
-  126622 => true,
-  126623 => true,
-  126624 => true,
-  126628 => true,
-  126634 => true,
-  127020 => true,
-  127021 => true,
-  127022 => true,
-  127023 => true,
-  127124 => true,
-  127125 => true,
-  127126 => true,
-  127127 => true,
-  127128 => true,
-  127129 => true,
-  127130 => true,
-  127131 => true,
-  127132 => true,
-  127133 => true,
-  127134 => true,
-  127135 => true,
-  127151 => true,
-  127152 => true,
-  127168 => true,
-  127184 => true,
-  127222 => true,
-  127223 => true,
-  127224 => true,
-  127225 => true,
-  127226 => true,
-  127227 => true,
-  127228 => true,
-  127229 => true,
-  127230 => true,
-  127231 => true,
-  127232 => true,
-  127491 => true,
-  127492 => true,
-  127493 => true,
-  127494 => true,
-  127495 => true,
-  127496 => true,
-  127497 => true,
-  127498 => true,
-  127499 => true,
-  127500 => true,
-  127501 => true,
-  127502 => true,
-  127503 => true,
-  127548 => true,
-  127549 => true,
-  127550 => true,
-  127551 => true,
-  127561 => true,
-  127562 => true,
-  127563 => true,
-  127564 => true,
-  127565 => true,
-  127566 => true,
-  127567 => true,
-  127570 => true,
-  127571 => true,
-  127572 => true,
-  127573 => true,
-  127574 => true,
-  127575 => true,
-  127576 => true,
-  127577 => true,
-  127578 => true,
-  127579 => true,
-  127580 => true,
-  127581 => true,
-  127582 => true,
-  127583 => true,
-  128728 => true,
-  128729 => true,
-  128730 => true,
-  128731 => true,
-  128732 => true,
-  128733 => true,
-  128734 => true,
-  128735 => true,
-  128749 => true,
-  128750 => true,
-  128751 => true,
-  128765 => true,
-  128766 => true,
-  128767 => true,
-  128884 => true,
-  128885 => true,
-  128886 => true,
-  128887 => true,
-  128888 => true,
-  128889 => true,
-  128890 => true,
-  128891 => true,
-  128892 => true,
-  128893 => true,
-  128894 => true,
-  128895 => true,
-  128985 => true,
-  128986 => true,
-  128987 => true,
-  128988 => true,
-  128989 => true,
-  128990 => true,
-  128991 => true,
-  129004 => true,
-  129005 => true,
-  129006 => true,
-  129007 => true,
-  129008 => true,
-  129009 => true,
-  129010 => true,
-  129011 => true,
-  129012 => true,
-  129013 => true,
-  129014 => true,
-  129015 => true,
-  129016 => true,
-  129017 => true,
-  129018 => true,
-  129019 => true,
-  129020 => true,
-  129021 => true,
-  129022 => true,
-  129023 => true,
-  129036 => true,
-  129037 => true,
-  129038 => true,
-  129039 => true,
-  129096 => true,
-  129097 => true,
-  129098 => true,
-  129099 => true,
-  129100 => true,
-  129101 => true,
-  129102 => true,
-  129103 => true,
-  129114 => true,
-  129115 => true,
-  129116 => true,
-  129117 => true,
-  129118 => true,
-  129119 => true,
-  129160 => true,
-  129161 => true,
-  129162 => true,
-  129163 => true,
-  129164 => true,
-  129165 => true,
-  129166 => true,
-  129167 => true,
-  129198 => true,
-  129199 => true,
-  129401 => true,
-  129484 => true,
-  129620 => true,
-  129621 => true,
-  129622 => true,
-  129623 => true,
-  129624 => true,
-  129625 => true,
-  129626 => true,
-  129627 => true,
-  129628 => true,
-  129629 => true,
-  129630 => true,
-  129631 => true,
-  129646 => true,
-  129647 => true,
-  129653 => true,
-  129654 => true,
-  129655 => true,
-  129659 => true,
-  129660 => true,
-  129661 => true,
-  129662 => true,
-  129663 => true,
-  129671 => true,
-  129672 => true,
-  129673 => true,
-  129674 => true,
-  129675 => true,
-  129676 => true,
-  129677 => true,
-  129678 => true,
-  129679 => true,
-  129705 => true,
-  129706 => true,
-  129707 => true,
-  129708 => true,
-  129709 => true,
-  129710 => true,
-  129711 => true,
-  129719 => true,
-  129720 => true,
-  129721 => true,
-  129722 => true,
-  129723 => true,
-  129724 => true,
-  129725 => true,
-  129726 => true,
-  129727 => true,
-  129731 => true,
-  129732 => true,
-  129733 => true,
-  129734 => true,
-  129735 => true,
-  129736 => true,
-  129737 => true,
-  129738 => true,
-  129739 => true,
-  129740 => true,
-  129741 => true,
-  129742 => true,
-  129743 => true,
-  129939 => true,
-  131070 => true,
-  131071 => true,
-  177973 => true,
-  177974 => true,
-  177975 => true,
-  177976 => true,
-  177977 => true,
-  177978 => true,
-  177979 => true,
-  177980 => true,
-  177981 => true,
-  177982 => true,
-  177983 => true,
-  178206 => true,
-  178207 => true,
-  183970 => true,
-  183971 => true,
-  183972 => true,
-  183973 => true,
-  183974 => true,
-  183975 => true,
-  183976 => true,
-  183977 => true,
-  183978 => true,
-  183979 => true,
-  183980 => true,
-  183981 => true,
-  183982 => true,
-  183983 => true,
-  194664 => true,
-  194676 => true,
-  194847 => true,
-  194911 => true,
-  195007 => true,
-  196606 => true,
-  196607 => true,
-  262142 => true,
-  262143 => true,
-  327678 => true,
-  327679 => true,
-  393214 => true,
-  393215 => true,
-  458750 => true,
-  458751 => true,
-  524286 => true,
-  524287 => true,
-  589822 => true,
-  589823 => true,
-  655358 => true,
-  655359 => true,
-  720894 => true,
-  720895 => true,
-  786430 => true,
-  786431 => true,
-  851966 => true,
-  851967 => true,
-  917502 => true,
-  917503 => true,
-  917504 => true,
-  917505 => true,
-  917506 => true,
-  917507 => true,
-  917508 => true,
-  917509 => true,
-  917510 => true,
-  917511 => true,
-  917512 => true,
-  917513 => true,
-  917514 => true,
-  917515 => true,
-  917516 => true,
-  917517 => true,
-  917518 => true,
-  917519 => true,
-  917520 => true,
-  917521 => true,
-  917522 => true,
-  917523 => true,
-  917524 => true,
-  917525 => true,
-  917526 => true,
-  917527 => true,
-  917528 => true,
-  917529 => true,
-  917530 => true,
-  917531 => true,
-  917532 => true,
-  917533 => true,
-  917534 => true,
-  917535 => true,
-  983038 => true,
-  983039 => true,
-  1048574 => true,
-  1048575 => true,
-  1114110 => true,
-  1114111 => true,
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php
deleted file mode 100644
index 54f21cc0cdd646c46f98c4e6feb7fe5ee8fec79a..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php
+++ /dev/null
@@ -1,308 +0,0 @@
-<?php
-
-return array (
-  160 => ' ',
-  168 => ' ̈',
-  175 => ' Ì„',
-  180 => ' ́',
-  184 => ' ̧',
-  728 => ' ̆',
-  729 => ' ̇',
-  730 => ' ÌŠ',
-  731 => ' ̨',
-  732 => ' ̃',
-  733 => ' Ì‹',
-  890 => ' ι',
-  894 => ';',
-  900 => ' ́',
-  901 => ' ̈́',
-  8125 => ' Ì“',
-  8127 => ' Ì“',
-  8128 => ' Í‚',
-  8129 => ' ̈͂',
-  8141 => ' Ì“Ì€',
-  8142 => ' ̓́',
-  8143 => ' Ì“Í‚',
-  8157 => ' ̔̀',
-  8158 => ' ̔́',
-  8159 => ' ̔͂',
-  8173 => ' ̈̀',
-  8174 => ' ̈́',
-  8175 => '`',
-  8189 => ' ́',
-  8190 => ' Ì”',
-  8192 => ' ',
-  8193 => ' ',
-  8194 => ' ',
-  8195 => ' ',
-  8196 => ' ',
-  8197 => ' ',
-  8198 => ' ',
-  8199 => ' ',
-  8200 => ' ',
-  8201 => ' ',
-  8202 => ' ',
-  8215 => ' ̳',
-  8239 => ' ',
-  8252 => '!!',
-  8254 => ' Ì…',
-  8263 => '??',
-  8264 => '?!',
-  8265 => '!?',
-  8287 => ' ',
-  8314 => '+',
-  8316 => '=',
-  8317 => '(',
-  8318 => ')',
-  8330 => '+',
-  8332 => '=',
-  8333 => '(',
-  8334 => ')',
-  8448 => 'a/c',
-  8449 => 'a/s',
-  8453 => 'c/o',
-  8454 => 'c/u',
-  9332 => '(1)',
-  9333 => '(2)',
-  9334 => '(3)',
-  9335 => '(4)',
-  9336 => '(5)',
-  9337 => '(6)',
-  9338 => '(7)',
-  9339 => '(8)',
-  9340 => '(9)',
-  9341 => '(10)',
-  9342 => '(11)',
-  9343 => '(12)',
-  9344 => '(13)',
-  9345 => '(14)',
-  9346 => '(15)',
-  9347 => '(16)',
-  9348 => '(17)',
-  9349 => '(18)',
-  9350 => '(19)',
-  9351 => '(20)',
-  9372 => '(a)',
-  9373 => '(b)',
-  9374 => '(c)',
-  9375 => '(d)',
-  9376 => '(e)',
-  9377 => '(f)',
-  9378 => '(g)',
-  9379 => '(h)',
-  9380 => '(i)',
-  9381 => '(j)',
-  9382 => '(k)',
-  9383 => '(l)',
-  9384 => '(m)',
-  9385 => '(n)',
-  9386 => '(o)',
-  9387 => '(p)',
-  9388 => '(q)',
-  9389 => '(r)',
-  9390 => '(s)',
-  9391 => '(t)',
-  9392 => '(u)',
-  9393 => '(v)',
-  9394 => '(w)',
-  9395 => '(x)',
-  9396 => '(y)',
-  9397 => '(z)',
-  10868 => '::=',
-  10869 => '==',
-  10870 => '===',
-  12288 => ' ',
-  12443 => ' ã‚™',
-  12444 => ' ã‚š',
-  12800 => '(á„€)',
-  12801 => '(á„‚)',
-  12802 => '(ᄃ)',
-  12803 => '(á„…)',
-  12804 => '(ᄆ)',
-  12805 => '(ᄇ)',
-  12806 => '(ᄉ)',
-  12807 => '(á„‹)',
-  12808 => '(ᄌ)',
-  12809 => '(á„Ž)',
-  12810 => '(ᄏ)',
-  12811 => '(ᄐ)',
-  12812 => '(á„‘)',
-  12813 => '(á„’)',
-  12814 => '(ê°€)',
-  12815 => '(나)',
-  12816 => '(다)',
-  12817 => '(라)',
-  12818 => '(마)',
-  12819 => '(ë°”)',
-  12820 => '(사)',
-  12821 => '(ì•„)',
-  12822 => '(자)',
-  12823 => '(ì°¨)',
-  12824 => '(ì¹´)',
-  12825 => '(타)',
-  12826 => '(파)',
-  12827 => '(하)',
-  12828 => '(주)',
-  12829 => '(오전)',
-  12830 => '(오후)',
-  12832 => '(一)',
-  12833 => '(二)',
-  12834 => '(三)',
-  12835 => '(å››)',
-  12836 => '(五)',
-  12837 => '(å…­)',
-  12838 => '(七)',
-  12839 => '(å…«)',
-  12840 => '(九)',
-  12841 => '(十)',
-  12842 => '(月)',
-  12843 => '(火)',
-  12844 => '(æ°´)',
-  12845 => '(木)',
-  12846 => '(金)',
-  12847 => '(土)',
-  12848 => '(æ—¥)',
-  12849 => '(æ ª)',
-  12850 => '(有)',
-  12851 => '(社)',
-  12852 => '(名)',
-  12853 => '(特)',
-  12854 => '(財)',
-  12855 => '(祝)',
-  12856 => '(労)',
-  12857 => '(代)',
-  12858 => '(呼)',
-  12859 => '(å­¦)',
-  12860 => '(監)',
-  12861 => '(企)',
-  12862 => '(資)',
-  12863 => '(協)',
-  12864 => '(祭)',
-  12865 => '(休)',
-  12866 => '(自)',
-  12867 => '(至)',
-  64297 => '+',
-  64606 => ' ٌّ',
-  64607 => ' ٍّ',
-  64608 => ' ÙŽÙ‘',
-  64609 => ' ُّ',
-  64610 => ' ِّ',
-  64611 => ' ّٰ',
-  65018 => 'صلى الله عليه وسلم',
-  65019 => 'جل جلاله',
-  65040 => ',',
-  65043 => ':',
-  65044 => ';',
-  65045 => '!',
-  65046 => '?',
-  65075 => '_',
-  65076 => '_',
-  65077 => '(',
-  65078 => ')',
-  65079 => '{',
-  65080 => '}',
-  65095 => '[',
-  65096 => ']',
-  65097 => ' Ì…',
-  65098 => ' Ì…',
-  65099 => ' Ì…',
-  65100 => ' Ì…',
-  65101 => '_',
-  65102 => '_',
-  65103 => '_',
-  65104 => ',',
-  65108 => ';',
-  65109 => ':',
-  65110 => '?',
-  65111 => '!',
-  65113 => '(',
-  65114 => ')',
-  65115 => '{',
-  65116 => '}',
-  65119 => '#',
-  65120 => '&',
-  65121 => '*',
-  65122 => '+',
-  65124 => '<',
-  65125 => '>',
-  65126 => '=',
-  65128 => '\\',
-  65129 => '$',
-  65130 => '%',
-  65131 => '@',
-  65136 => ' Ù‹',
-  65138 => ' ٌ',
-  65140 => ' ٍ',
-  65142 => ' ÙŽ',
-  65144 => ' ُ',
-  65146 => ' ِ',
-  65148 => ' Ù‘',
-  65150 => ' Ù’',
-  65281 => '!',
-  65282 => '"',
-  65283 => '#',
-  65284 => '$',
-  65285 => '%',
-  65286 => '&',
-  65287 => '\'',
-  65288 => '(',
-  65289 => ')',
-  65290 => '*',
-  65291 => '+',
-  65292 => ',',
-  65295 => '/',
-  65306 => ':',
-  65307 => ';',
-  65308 => '<',
-  65309 => '=',
-  65310 => '>',
-  65311 => '?',
-  65312 => '@',
-  65339 => '[',
-  65340 => '\\',
-  65341 => ']',
-  65342 => '^',
-  65343 => '_',
-  65344 => '`',
-  65371 => '{',
-  65372 => '|',
-  65373 => '}',
-  65374 => '~',
-  65507 => ' Ì„',
-  127233 => '0,',
-  127234 => '1,',
-  127235 => '2,',
-  127236 => '3,',
-  127237 => '4,',
-  127238 => '5,',
-  127239 => '6,',
-  127240 => '7,',
-  127241 => '8,',
-  127242 => '9,',
-  127248 => '(a)',
-  127249 => '(b)',
-  127250 => '(c)',
-  127251 => '(d)',
-  127252 => '(e)',
-  127253 => '(f)',
-  127254 => '(g)',
-  127255 => '(h)',
-  127256 => '(i)',
-  127257 => '(j)',
-  127258 => '(k)',
-  127259 => '(l)',
-  127260 => '(m)',
-  127261 => '(n)',
-  127262 => '(o)',
-  127263 => '(p)',
-  127264 => '(q)',
-  127265 => '(r)',
-  127266 => '(s)',
-  127267 => '(t)',
-  127268 => '(u)',
-  127269 => '(v)',
-  127270 => '(w)',
-  127271 => '(x)',
-  127272 => '(y)',
-  127273 => '(z)',
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php
deleted file mode 100644
index 223396ec4c32ec588781a35ff89213b908858427..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-return array (
-  0 => true,
-  1 => true,
-  2 => true,
-  3 => true,
-  4 => true,
-  5 => true,
-  6 => true,
-  7 => true,
-  8 => true,
-  9 => true,
-  10 => true,
-  11 => true,
-  12 => true,
-  13 => true,
-  14 => true,
-  15 => true,
-  16 => true,
-  17 => true,
-  18 => true,
-  19 => true,
-  20 => true,
-  21 => true,
-  22 => true,
-  23 => true,
-  24 => true,
-  25 => true,
-  26 => true,
-  27 => true,
-  28 => true,
-  29 => true,
-  30 => true,
-  31 => true,
-  32 => true,
-  33 => true,
-  34 => true,
-  35 => true,
-  36 => true,
-  37 => true,
-  38 => true,
-  39 => true,
-  40 => true,
-  41 => true,
-  42 => true,
-  43 => true,
-  44 => true,
-  47 => true,
-  58 => true,
-  59 => true,
-  60 => true,
-  61 => true,
-  62 => true,
-  63 => true,
-  64 => true,
-  91 => true,
-  92 => true,
-  93 => true,
-  94 => true,
-  95 => true,
-  96 => true,
-  123 => true,
-  124 => true,
-  125 => true,
-  126 => true,
-  127 => true,
-  8800 => true,
-  8814 => true,
-  8815 => true,
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php
deleted file mode 100644
index b377844130e7aec1096c5af63fe29455b2df0ad5..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php
+++ /dev/null
@@ -1,273 +0,0 @@
-<?php
-
-return array (
-  173 => true,
-  847 => true,
-  6155 => true,
-  6156 => true,
-  6157 => true,
-  8203 => true,
-  8288 => true,
-  8292 => true,
-  65024 => true,
-  65025 => true,
-  65026 => true,
-  65027 => true,
-  65028 => true,
-  65029 => true,
-  65030 => true,
-  65031 => true,
-  65032 => true,
-  65033 => true,
-  65034 => true,
-  65035 => true,
-  65036 => true,
-  65037 => true,
-  65038 => true,
-  65039 => true,
-  65279 => true,
-  113824 => true,
-  113825 => true,
-  113826 => true,
-  113827 => true,
-  917760 => true,
-  917761 => true,
-  917762 => true,
-  917763 => true,
-  917764 => true,
-  917765 => true,
-  917766 => true,
-  917767 => true,
-  917768 => true,
-  917769 => true,
-  917770 => true,
-  917771 => true,
-  917772 => true,
-  917773 => true,
-  917774 => true,
-  917775 => true,
-  917776 => true,
-  917777 => true,
-  917778 => true,
-  917779 => true,
-  917780 => true,
-  917781 => true,
-  917782 => true,
-  917783 => true,
-  917784 => true,
-  917785 => true,
-  917786 => true,
-  917787 => true,
-  917788 => true,
-  917789 => true,
-  917790 => true,
-  917791 => true,
-  917792 => true,
-  917793 => true,
-  917794 => true,
-  917795 => true,
-  917796 => true,
-  917797 => true,
-  917798 => true,
-  917799 => true,
-  917800 => true,
-  917801 => true,
-  917802 => true,
-  917803 => true,
-  917804 => true,
-  917805 => true,
-  917806 => true,
-  917807 => true,
-  917808 => true,
-  917809 => true,
-  917810 => true,
-  917811 => true,
-  917812 => true,
-  917813 => true,
-  917814 => true,
-  917815 => true,
-  917816 => true,
-  917817 => true,
-  917818 => true,
-  917819 => true,
-  917820 => true,
-  917821 => true,
-  917822 => true,
-  917823 => true,
-  917824 => true,
-  917825 => true,
-  917826 => true,
-  917827 => true,
-  917828 => true,
-  917829 => true,
-  917830 => true,
-  917831 => true,
-  917832 => true,
-  917833 => true,
-  917834 => true,
-  917835 => true,
-  917836 => true,
-  917837 => true,
-  917838 => true,
-  917839 => true,
-  917840 => true,
-  917841 => true,
-  917842 => true,
-  917843 => true,
-  917844 => true,
-  917845 => true,
-  917846 => true,
-  917847 => true,
-  917848 => true,
-  917849 => true,
-  917850 => true,
-  917851 => true,
-  917852 => true,
-  917853 => true,
-  917854 => true,
-  917855 => true,
-  917856 => true,
-  917857 => true,
-  917858 => true,
-  917859 => true,
-  917860 => true,
-  917861 => true,
-  917862 => true,
-  917863 => true,
-  917864 => true,
-  917865 => true,
-  917866 => true,
-  917867 => true,
-  917868 => true,
-  917869 => true,
-  917870 => true,
-  917871 => true,
-  917872 => true,
-  917873 => true,
-  917874 => true,
-  917875 => true,
-  917876 => true,
-  917877 => true,
-  917878 => true,
-  917879 => true,
-  917880 => true,
-  917881 => true,
-  917882 => true,
-  917883 => true,
-  917884 => true,
-  917885 => true,
-  917886 => true,
-  917887 => true,
-  917888 => true,
-  917889 => true,
-  917890 => true,
-  917891 => true,
-  917892 => true,
-  917893 => true,
-  917894 => true,
-  917895 => true,
-  917896 => true,
-  917897 => true,
-  917898 => true,
-  917899 => true,
-  917900 => true,
-  917901 => true,
-  917902 => true,
-  917903 => true,
-  917904 => true,
-  917905 => true,
-  917906 => true,
-  917907 => true,
-  917908 => true,
-  917909 => true,
-  917910 => true,
-  917911 => true,
-  917912 => true,
-  917913 => true,
-  917914 => true,
-  917915 => true,
-  917916 => true,
-  917917 => true,
-  917918 => true,
-  917919 => true,
-  917920 => true,
-  917921 => true,
-  917922 => true,
-  917923 => true,
-  917924 => true,
-  917925 => true,
-  917926 => true,
-  917927 => true,
-  917928 => true,
-  917929 => true,
-  917930 => true,
-  917931 => true,
-  917932 => true,
-  917933 => true,
-  917934 => true,
-  917935 => true,
-  917936 => true,
-  917937 => true,
-  917938 => true,
-  917939 => true,
-  917940 => true,
-  917941 => true,
-  917942 => true,
-  917943 => true,
-  917944 => true,
-  917945 => true,
-  917946 => true,
-  917947 => true,
-  917948 => true,
-  917949 => true,
-  917950 => true,
-  917951 => true,
-  917952 => true,
-  917953 => true,
-  917954 => true,
-  917955 => true,
-  917956 => true,
-  917957 => true,
-  917958 => true,
-  917959 => true,
-  917960 => true,
-  917961 => true,
-  917962 => true,
-  917963 => true,
-  917964 => true,
-  917965 => true,
-  917966 => true,
-  917967 => true,
-  917968 => true,
-  917969 => true,
-  917970 => true,
-  917971 => true,
-  917972 => true,
-  917973 => true,
-  917974 => true,
-  917975 => true,
-  917976 => true,
-  917977 => true,
-  917978 => true,
-  917979 => true,
-  917980 => true,
-  917981 => true,
-  917982 => true,
-  917983 => true,
-  917984 => true,
-  917985 => true,
-  917986 => true,
-  917987 => true,
-  917988 => true,
-  917989 => true,
-  917990 => true,
-  917991 => true,
-  917992 => true,
-  917993 => true,
-  917994 => true,
-  917995 => true,
-  917996 => true,
-  917997 => true,
-  917998 => true,
-  917999 => true,
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php
deleted file mode 100644
index 9b85fe9d3f8d3d31672d71d0b70a434fa2ec3c31..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php
+++ /dev/null
@@ -1,5778 +0,0 @@
-<?php
-
-return array (
-  65 => 'a',
-  66 => 'b',
-  67 => 'c',
-  68 => 'd',
-  69 => 'e',
-  70 => 'f',
-  71 => 'g',
-  72 => 'h',
-  73 => 'i',
-  74 => 'j',
-  75 => 'k',
-  76 => 'l',
-  77 => 'm',
-  78 => 'n',
-  79 => 'o',
-  80 => 'p',
-  81 => 'q',
-  82 => 'r',
-  83 => 's',
-  84 => 't',
-  85 => 'u',
-  86 => 'v',
-  87 => 'w',
-  88 => 'x',
-  89 => 'y',
-  90 => 'z',
-  170 => 'a',
-  178 => '2',
-  179 => '3',
-  181 => 'μ',
-  185 => '1',
-  186 => 'o',
-  188 => '1⁄4',
-  189 => '1⁄2',
-  190 => '3⁄4',
-  192 => 'à',
-  193 => 'á',
-  194 => 'â',
-  195 => 'ã',
-  196 => 'ä',
-  197 => 'Ã¥',
-  198 => 'æ',
-  199 => 'ç',
-  200 => 'è',
-  201 => 'é',
-  202 => 'ê',
-  203 => 'ë',
-  204 => 'ì',
-  205 => 'í',
-  206 => 'î',
-  207 => 'ï',
-  208 => 'ð',
-  209 => 'ñ',
-  210 => 'ò',
-  211 => 'ó',
-  212 => 'ô',
-  213 => 'õ',
-  214 => 'ö',
-  216 => 'ø',
-  217 => 'ù',
-  218 => 'ú',
-  219 => 'û',
-  220 => 'ü',
-  221 => 'ý',
-  222 => 'þ',
-  256 => 'ā',
-  258 => 'ă',
-  260 => 'Ä…',
-  262 => 'ć',
-  264 => 'ĉ',
-  266 => 'Ä‹',
-  268 => 'č',
-  270 => 'ď',
-  272 => 'Ä‘',
-  274 => 'Ä“',
-  276 => 'Ä•',
-  278 => 'Ä—',
-  280 => 'Ä™',
-  282 => 'Ä›',
-  284 => 'ĝ',
-  286 => 'ÄŸ',
-  288 => 'Ä¡',
-  290 => 'Ä£',
-  292 => 'Ä¥',
-  294 => 'ħ',
-  296 => 'Ä©',
-  298 => 'Ä«',
-  300 => 'Ä­',
-  302 => 'į',
-  304 => 'i̇',
-  306 => 'ij',
-  307 => 'ij',
-  308 => 'ĵ',
-  310 => 'Ä·',
-  313 => 'ĺ',
-  315 => 'ļ',
-  317 => 'ľ',
-  319 => 'l·',
-  320 => 'l·',
-  321 => 'Å‚',
-  323 => 'Å„',
-  325 => 'ņ',
-  327 => 'ň',
-  329 => 'ʼn',
-  330 => 'Å‹',
-  332 => 'ō',
-  334 => 'ŏ',
-  336 => 'Å‘',
-  338 => 'Å“',
-  340 => 'Å•',
-  342 => 'Å—',
-  344 => 'Å™',
-  346 => 'Å›',
-  348 => 'ŝ',
-  350 => 'ÅŸ',
-  352 => 'Å¡',
-  354 => 'Å£',
-  356 => 'Å¥',
-  358 => 'ŧ',
-  360 => 'Å©',
-  362 => 'Å«',
-  364 => 'Å­',
-  366 => 'ů',
-  368 => 'ű',
-  370 => 'ų',
-  372 => 'ŵ',
-  374 => 'Å·',
-  376 => 'ÿ',
-  377 => 'ź',
-  379 => 'ż',
-  381 => 'ž',
-  383 => 's',
-  385 => 'É“',
-  386 => 'ƃ',
-  388 => 'Æ…',
-  390 => 'É”',
-  391 => 'ƈ',
-  393 => 'É–',
-  394 => 'É—',
-  395 => 'ƌ',
-  398 => 'ǝ',
-  399 => 'É™',
-  400 => 'É›',
-  401 => 'Æ’',
-  403 => 'É ',
-  404 => 'É£',
-  406 => 'É©',
-  407 => 'ɨ',
-  408 => 'Æ™',
-  412 => 'ɯ',
-  413 => 'ɲ',
-  415 => 'ɵ',
-  416 => 'Æ¡',
-  418 => 'Æ£',
-  420 => 'Æ¥',
-  422 => 'Ê€',
-  423 => 'ƨ',
-  425 => 'ʃ',
-  428 => 'Æ­',
-  430 => 'ʈ',
-  431 => 'Æ°',
-  433 => 'ÊŠ',
-  434 => 'Ê‹',
-  435 => 'Æ´',
-  437 => 'ƶ',
-  439 => 'Ê’',
-  440 => 'ƹ',
-  444 => 'ƽ',
-  452 => 'dž',
-  453 => 'dž',
-  454 => 'dž',
-  455 => 'lj',
-  456 => 'lj',
-  457 => 'lj',
-  458 => 'nj',
-  459 => 'nj',
-  460 => 'nj',
-  461 => 'ÇŽ',
-  463 => 'ǐ',
-  465 => 'Ç’',
-  467 => 'Ç”',
-  469 => 'Ç–',
-  471 => 'ǘ',
-  473 => 'Çš',
-  475 => 'ǜ',
-  478 => 'ÇŸ',
-  480 => 'Ç¡',
-  482 => 'Ç£',
-  484 => 'Ç¥',
-  486 => 'ǧ',
-  488 => 'Ç©',
-  490 => 'Ç«',
-  492 => 'Ç­',
-  494 => 'ǯ',
-  497 => 'dz',
-  498 => 'dz',
-  499 => 'dz',
-  500 => 'ǵ',
-  502 => 'Æ•',
-  503 => 'Æ¿',
-  504 => 'ǹ',
-  506 => 'Ç»',
-  508 => 'ǽ',
-  510 => 'Ç¿',
-  512 => 'ȁ',
-  514 => 'ȃ',
-  516 => 'È…',
-  518 => 'ȇ',
-  520 => 'ȉ',
-  522 => 'È‹',
-  524 => 'ȍ',
-  526 => 'ȏ',
-  528 => 'È‘',
-  530 => 'È“',
-  532 => 'È•',
-  534 => 'È—',
-  536 => 'È™',
-  538 => 'È›',
-  540 => 'ȝ',
-  542 => 'ÈŸ',
-  544 => 'Æž',
-  546 => 'È£',
-  548 => 'È¥',
-  550 => 'ȧ',
-  552 => 'È©',
-  554 => 'È«',
-  556 => 'È­',
-  558 => 'ȯ',
-  560 => 'ȱ',
-  562 => 'ȳ',
-  570 => 'â±¥',
-  571 => 'ȼ',
-  573 => 'Æš',
-  574 => 'ⱦ',
-  577 => 'É‚',
-  579 => 'Æ€',
-  580 => 'ʉ',
-  581 => 'ʌ',
-  582 => 'ɇ',
-  584 => 'ɉ',
-  586 => 'É‹',
-  588 => 'ɍ',
-  590 => 'ɏ',
-  688 => 'h',
-  689 => 'ɦ',
-  690 => 'j',
-  691 => 'r',
-  692 => 'ɹ',
-  693 => 'É»',
-  694 => 'ʁ',
-  695 => 'w',
-  696 => 'y',
-  736 => 'É£',
-  737 => 'l',
-  738 => 's',
-  739 => 'x',
-  740 => 'Ê•',
-  832 => 'Ì€',
-  833 => '́',
-  835 => 'Ì“',
-  836 => '̈́',
-  837 => 'ι',
-  880 => 'ͱ',
-  882 => 'ͳ',
-  884 => 'ʹ',
-  886 => 'Í·',
-  895 => 'ϳ',
-  902 => 'ά',
-  903 => '·',
-  904 => 'έ',
-  905 => 'ή',
-  906 => 'ί',
-  908 => 'ό',
-  910 => 'ύ',
-  911 => 'ÏŽ',
-  913 => 'α',
-  914 => 'β',
-  915 => 'γ',
-  916 => 'δ',
-  917 => 'ε',
-  918 => 'ζ',
-  919 => 'η',
-  920 => 'θ',
-  921 => 'ι',
-  922 => 'κ',
-  923 => 'λ',
-  924 => 'μ',
-  925 => 'ν',
-  926 => 'ξ',
-  927 => 'ο',
-  928 => 'Ï€',
-  929 => 'ρ',
-  931 => 'σ',
-  932 => 'Ï„',
-  933 => 'Ï…',
-  934 => 'φ',
-  935 => 'χ',
-  936 => 'ψ',
-  937 => 'ω',
-  938 => 'ÏŠ',
-  939 => 'Ï‹',
-  975 => 'Ï—',
-  976 => 'β',
-  977 => 'θ',
-  978 => 'Ï…',
-  979 => 'ύ',
-  980 => 'Ï‹',
-  981 => 'φ',
-  982 => 'Ï€',
-  984 => 'Ï™',
-  986 => 'Ï›',
-  988 => 'ϝ',
-  990 => 'ÏŸ',
-  992 => 'Ï¡',
-  994 => 'Ï£',
-  996 => 'Ï¥',
-  998 => 'ϧ',
-  1000 => 'Ï©',
-  1002 => 'Ï«',
-  1004 => 'Ï­',
-  1006 => 'ϯ',
-  1008 => 'κ',
-  1009 => 'ρ',
-  1010 => 'σ',
-  1012 => 'θ',
-  1013 => 'ε',
-  1015 => 'ϸ',
-  1017 => 'σ',
-  1018 => 'Ï»',
-  1021 => 'Í»',
-  1022 => 'ͼ',
-  1023 => 'ͽ',
-  1024 => 'ѐ',
-  1025 => 'Ñ‘',
-  1026 => 'Ñ’',
-  1027 => 'Ñ“',
-  1028 => 'Ñ”',
-  1029 => 'Ñ•',
-  1030 => 'Ñ–',
-  1031 => 'Ñ—',
-  1032 => 'ј',
-  1033 => 'Ñ™',
-  1034 => 'Ñš',
-  1035 => 'Ñ›',
-  1036 => 'ќ',
-  1037 => 'ѝ',
-  1038 => 'Ñž',
-  1039 => 'ÑŸ',
-  1040 => 'а',
-  1041 => 'б',
-  1042 => 'в',
-  1043 => 'г',
-  1044 => 'д',
-  1045 => 'е',
-  1046 => 'ж',
-  1047 => 'з',
-  1048 => 'и',
-  1049 => 'й',
-  1050 => 'к',
-  1051 => 'л',
-  1052 => 'м',
-  1053 => 'н',
-  1054 => 'о',
-  1055 => 'п',
-  1056 => 'Ñ€',
-  1057 => 'с',
-  1058 => 'Ñ‚',
-  1059 => 'у',
-  1060 => 'Ñ„',
-  1061 => 'Ñ…',
-  1062 => 'ц',
-  1063 => 'ч',
-  1064 => 'ш',
-  1065 => 'щ',
-  1066 => 'ÑŠ',
-  1067 => 'Ñ‹',
-  1068 => 'ь',
-  1069 => 'э',
-  1070 => 'ÑŽ',
-  1071 => 'я',
-  1120 => 'Ñ¡',
-  1122 => 'Ñ£',
-  1124 => 'Ñ¥',
-  1126 => 'ѧ',
-  1128 => 'Ñ©',
-  1130 => 'Ñ«',
-  1132 => 'Ñ­',
-  1134 => 'ѯ',
-  1136 => 'ѱ',
-  1138 => 'ѳ',
-  1140 => 'ѵ',
-  1142 => 'Ñ·',
-  1144 => 'ѹ',
-  1146 => 'Ñ»',
-  1148 => 'ѽ',
-  1150 => 'Ñ¿',
-  1152 => 'ҁ',
-  1162 => 'Ò‹',
-  1164 => 'ҍ',
-  1166 => 'ҏ',
-  1168 => 'Ò‘',
-  1170 => 'Ò“',
-  1172 => 'Ò•',
-  1174 => 'Ò—',
-  1176 => 'Ò™',
-  1178 => 'Ò›',
-  1180 => 'ҝ',
-  1182 => 'ÒŸ',
-  1184 => 'Ò¡',
-  1186 => 'Ò£',
-  1188 => 'Ò¥',
-  1190 => 'Ò§',
-  1192 => 'Ò©',
-  1194 => 'Ò«',
-  1196 => 'Ò­',
-  1198 => 'Ò¯',
-  1200 => 'Ò±',
-  1202 => 'Ò³',
-  1204 => 'Òµ',
-  1206 => 'Ò·',
-  1208 => 'Ò¹',
-  1210 => 'Ò»',
-  1212 => 'Ò½',
-  1214 => 'Ò¿',
-  1217 => 'Ó‚',
-  1219 => 'Ó„',
-  1221 => 'Ó†',
-  1223 => 'Óˆ',
-  1225 => 'ÓŠ',
-  1227 => 'ӌ',
-  1229 => 'ÓŽ',
-  1232 => 'Ó‘',
-  1234 => 'Ó“',
-  1236 => 'Ó•',
-  1238 => 'Ó—',
-  1240 => 'Ó™',
-  1242 => 'Ó›',
-  1244 => 'ӝ',
-  1246 => 'ÓŸ',
-  1248 => 'Ó¡',
-  1250 => 'Ó£',
-  1252 => 'Ó¥',
-  1254 => 'Ó§',
-  1256 => 'Ó©',
-  1258 => 'Ó«',
-  1260 => 'Ó­',
-  1262 => 'Ó¯',
-  1264 => 'Ó±',
-  1266 => 'Ó³',
-  1268 => 'Óµ',
-  1270 => 'Ó·',
-  1272 => 'Ó¹',
-  1274 => 'Ó»',
-  1276 => 'Ó½',
-  1278 => 'Ó¿',
-  1280 => 'ԁ',
-  1282 => 'Ôƒ',
-  1284 => 'Ô…',
-  1286 => 'Ô‡',
-  1288 => 'Ô‰',
-  1290 => 'Ô‹',
-  1292 => 'ԍ',
-  1294 => 'ԏ',
-  1296 => 'Ô‘',
-  1298 => 'Ô“',
-  1300 => 'Ô•',
-  1302 => 'Ô—',
-  1304 => 'Ô™',
-  1306 => 'Ô›',
-  1308 => 'ԝ',
-  1310 => 'ÔŸ',
-  1312 => 'Ô¡',
-  1314 => 'Ô£',
-  1316 => 'Ô¥',
-  1318 => 'Ô§',
-  1320 => 'Ô©',
-  1322 => 'Ô«',
-  1324 => 'Ô­',
-  1326 => 'Ô¯',
-  1329 => 'Õ¡',
-  1330 => 'Õ¢',
-  1331 => 'Õ£',
-  1332 => 'Õ¤',
-  1333 => 'Õ¥',
-  1334 => 'Õ¦',
-  1335 => 'Õ§',
-  1336 => 'Õ¨',
-  1337 => 'Õ©',
-  1338 => 'Õª',
-  1339 => 'Õ«',
-  1340 => 'Õ¬',
-  1341 => 'Õ­',
-  1342 => 'Õ®',
-  1343 => 'Õ¯',
-  1344 => 'Õ°',
-  1345 => 'Õ±',
-  1346 => 'Õ²',
-  1347 => 'Õ³',
-  1348 => 'Õ´',
-  1349 => 'Õµ',
-  1350 => 'Õ¶',
-  1351 => 'Õ·',
-  1352 => 'Õ¸',
-  1353 => 'Õ¹',
-  1354 => 'Õº',
-  1355 => 'Õ»',
-  1356 => 'Õ¼',
-  1357 => 'Õ½',
-  1358 => 'Õ¾',
-  1359 => 'Õ¿',
-  1360 => 'Ö€',
-  1361 => 'ց',
-  1362 => 'Ö‚',
-  1363 => 'Öƒ',
-  1364 => 'Ö„',
-  1365 => 'Ö…',
-  1366 => 'Ö†',
-  1415 => 'Õ¥Ö‚',
-  1653 => 'اٴ',
-  1654 => 'وٴ',
-  1655 => 'Û‡Ù´',
-  1656 => 'يٴ',
-  2392 => 'क़',
-  2393 => 'ख़',
-  2394 => 'ग़',
-  2395 => 'ज़',
-  2396 => 'ड़',
-  2397 => 'ढ़',
-  2398 => 'फ़',
-  2399 => 'य़',
-  2524 => 'ড়',
-  2525 => 'ঢ়',
-  2527 => 'য়',
-  2611 => 'ਲ਼',
-  2614 => 'ਸ਼',
-  2649 => 'ਖ਼',
-  2650 => 'ਗ਼',
-  2651 => 'ਜ਼',
-  2654 => 'ਫ਼',
-  2908 => 'ଡ଼',
-  2909 => 'ଢ଼',
-  3635 => 'ํา',
-  3763 => 'ໍາ',
-  3804 => 'ຫນ',
-  3805 => 'ຫມ',
-  3852 => '་',
-  3907 => 'གྷ',
-  3917 => 'ཌྷ',
-  3922 => 'དྷ',
-  3927 => 'བྷ',
-  3932 => 'ཛྷ',
-  3945 => 'ཀྵ',
-  3955 => 'ཱི',
-  3957 => 'ཱུ',
-  3958 => 'ྲྀ',
-  3959 => 'ྲཱྀ',
-  3960 => 'ླྀ',
-  3961 => 'ླཱྀ',
-  3969 => 'ཱྀ',
-  3987 => 'ྒྷ',
-  3997 => 'ྜྷ',
-  4002 => 'ྡྷ',
-  4007 => 'ྦྷ',
-  4012 => 'ྫྷ',
-  4025 => 'ྐྵ',
-  4295 => 'â´§',
-  4301 => 'â´­',
-  4348 => 'ნ',
-  5112 => 'Ᏸ',
-  5113 => 'Ᏹ',
-  5114 => 'Ᏺ',
-  5115 => 'Ᏻ',
-  5116 => 'Ᏼ',
-  5117 => 'Ᏽ',
-  7296 => 'в',
-  7297 => 'д',
-  7298 => 'о',
-  7299 => 'с',
-  7300 => 'Ñ‚',
-  7301 => 'Ñ‚',
-  7302 => 'ÑŠ',
-  7303 => 'Ñ£',
-  7304 => 'ꙋ',
-  7312 => 'ა',
-  7313 => 'ბ',
-  7314 => 'გ',
-  7315 => 'დ',
-  7316 => 'ე',
-  7317 => 'ვ',
-  7318 => 'ზ',
-  7319 => 'თ',
-  7320 => 'ი',
-  7321 => 'კ',
-  7322 => 'ლ',
-  7323 => 'მ',
-  7324 => 'ნ',
-  7325 => 'ო',
-  7326 => 'პ',
-  7327 => 'ჟ',
-  7328 => 'რ',
-  7329 => 'ს',
-  7330 => 'ტ',
-  7331 => 'უ',
-  7332 => 'ფ',
-  7333 => 'ქ',
-  7334 => 'ღ',
-  7335 => 'ყ',
-  7336 => 'შ',
-  7337 => 'ჩ',
-  7338 => 'ც',
-  7339 => 'ძ',
-  7340 => 'წ',
-  7341 => 'ჭ',
-  7342 => 'ხ',
-  7343 => 'ჯ',
-  7344 => 'ჰ',
-  7345 => 'ჱ',
-  7346 => 'ჲ',
-  7347 => 'ჳ',
-  7348 => 'ჴ',
-  7349 => 'ჵ',
-  7350 => 'ჶ',
-  7351 => 'ჷ',
-  7352 => 'ჸ',
-  7353 => 'ჹ',
-  7354 => 'ჺ',
-  7357 => 'ჽ',
-  7358 => 'ჾ',
-  7359 => 'ჿ',
-  7468 => 'a',
-  7469 => 'æ',
-  7470 => 'b',
-  7472 => 'd',
-  7473 => 'e',
-  7474 => 'ǝ',
-  7475 => 'g',
-  7476 => 'h',
-  7477 => 'i',
-  7478 => 'j',
-  7479 => 'k',
-  7480 => 'l',
-  7481 => 'm',
-  7482 => 'n',
-  7484 => 'o',
-  7485 => 'È£',
-  7486 => 'p',
-  7487 => 'r',
-  7488 => 't',
-  7489 => 'u',
-  7490 => 'w',
-  7491 => 'a',
-  7492 => 'ɐ',
-  7493 => 'É‘',
-  7494 => 'á´‚',
-  7495 => 'b',
-  7496 => 'd',
-  7497 => 'e',
-  7498 => 'É™',
-  7499 => 'É›',
-  7500 => 'ɜ',
-  7501 => 'g',
-  7503 => 'k',
-  7504 => 'm',
-  7505 => 'Å‹',
-  7506 => 'o',
-  7507 => 'É”',
-  7508 => 'á´–',
-  7509 => 'á´—',
-  7510 => 'p',
-  7511 => 't',
-  7512 => 'u',
-  7513 => 'ᴝ',
-  7514 => 'ɯ',
-  7515 => 'v',
-  7516 => 'á´¥',
-  7517 => 'β',
-  7518 => 'γ',
-  7519 => 'δ',
-  7520 => 'φ',
-  7521 => 'χ',
-  7522 => 'i',
-  7523 => 'r',
-  7524 => 'u',
-  7525 => 'v',
-  7526 => 'β',
-  7527 => 'γ',
-  7528 => 'ρ',
-  7529 => 'φ',
-  7530 => 'χ',
-  7544 => 'н',
-  7579 => 'É’',
-  7580 => 'c',
-  7581 => 'É•',
-  7582 => 'ð',
-  7583 => 'ɜ',
-  7584 => 'f',
-  7585 => 'ÉŸ',
-  7586 => 'É¡',
-  7587 => 'É¥',
-  7588 => 'ɨ',
-  7589 => 'É©',
-  7590 => 'ɪ',
-  7591 => 'áµ»',
-  7592 => 'ʝ',
-  7593 => 'É­',
-  7594 => 'ᶅ',
-  7595 => 'ÊŸ',
-  7596 => 'ɱ',
-  7597 => 'É°',
-  7598 => 'ɲ',
-  7599 => 'ɳ',
-  7600 => 'É´',
-  7601 => 'ɵ',
-  7602 => 'ɸ',
-  7603 => 'Ê‚',
-  7604 => 'ʃ',
-  7605 => 'Æ«',
-  7606 => 'ʉ',
-  7607 => 'ÊŠ',
-  7608 => 'ᴜ',
-  7609 => 'Ê‹',
-  7610 => 'ʌ',
-  7611 => 'z',
-  7612 => 'ʐ',
-  7613 => 'Ê‘',
-  7614 => 'Ê’',
-  7615 => 'θ',
-  7680 => 'ḁ',
-  7682 => 'ḃ',
-  7684 => 'ḅ',
-  7686 => 'ḇ',
-  7688 => 'ḉ',
-  7690 => 'ḋ',
-  7692 => 'ḍ',
-  7694 => 'ḏ',
-  7696 => 'ḑ',
-  7698 => 'ḓ',
-  7700 => 'ḕ',
-  7702 => 'ḗ',
-  7704 => 'ḙ',
-  7706 => 'ḛ',
-  7708 => 'ḝ',
-  7710 => 'ḟ',
-  7712 => 'ḡ',
-  7714 => 'ḣ',
-  7716 => 'ḥ',
-  7718 => 'ḧ',
-  7720 => 'ḩ',
-  7722 => 'ḫ',
-  7724 => 'ḭ',
-  7726 => 'ḯ',
-  7728 => 'ḱ',
-  7730 => 'ḳ',
-  7732 => 'ḵ',
-  7734 => 'ḷ',
-  7736 => 'ḹ',
-  7738 => 'ḻ',
-  7740 => 'ḽ',
-  7742 => 'ḿ',
-  7744 => 'ṁ',
-  7746 => 'ṃ',
-  7748 => 'á¹…',
-  7750 => 'ṇ',
-  7752 => 'ṉ',
-  7754 => 'ṋ',
-  7756 => 'ṍ',
-  7758 => 'ṏ',
-  7760 => 'ṑ',
-  7762 => 'ṓ',
-  7764 => 'ṕ',
-  7766 => 'á¹—',
-  7768 => 'á¹™',
-  7770 => 'á¹›',
-  7772 => 'ṝ',
-  7774 => 'ṟ',
-  7776 => 'ṡ',
-  7778 => 'á¹£',
-  7780 => 'á¹¥',
-  7782 => 'ṧ',
-  7784 => 'ṩ',
-  7786 => 'ṫ',
-  7788 => 'á¹­',
-  7790 => 'ṯ',
-  7792 => 'á¹±',
-  7794 => 'á¹³',
-  7796 => 'á¹µ',
-  7798 => 'á¹·',
-  7800 => 'á¹¹',
-  7802 => 'á¹»',
-  7804 => 'á¹½',
-  7806 => 'ṿ',
-  7808 => 'ẁ',
-  7810 => 'ẃ',
-  7812 => 'ẅ',
-  7814 => 'ẇ',
-  7816 => 'ẉ',
-  7818 => 'ẋ',
-  7820 => 'ẍ',
-  7822 => 'ẏ',
-  7824 => 'ẑ',
-  7826 => 'ẓ',
-  7828 => 'ẕ',
-  7834 => 'aʾ',
-  7835 => 'ṡ',
-  7838 => 'ss',
-  7840 => 'ạ',
-  7842 => 'ả',
-  7844 => 'ấ',
-  7846 => 'ầ',
-  7848 => 'ẩ',
-  7850 => 'ẫ',
-  7852 => 'ậ',
-  7854 => 'ắ',
-  7856 => 'ằ',
-  7858 => 'ẳ',
-  7860 => 'ẵ',
-  7862 => 'ặ',
-  7864 => 'ẹ',
-  7866 => 'ẻ',
-  7868 => 'ẽ',
-  7870 => 'ế',
-  7872 => 'ề',
-  7874 => 'ể',
-  7876 => 'á»…',
-  7878 => 'ệ',
-  7880 => 'ỉ',
-  7882 => 'ị',
-  7884 => 'ọ',
-  7886 => 'ỏ',
-  7888 => 'ố',
-  7890 => 'ồ',
-  7892 => 'ổ',
-  7894 => 'á»—',
-  7896 => 'á»™',
-  7898 => 'á»›',
-  7900 => 'ờ',
-  7902 => 'ở',
-  7904 => 'ỡ',
-  7906 => 'ợ',
-  7908 => 'ụ',
-  7910 => 'ủ',
-  7912 => 'ứ',
-  7914 => 'ừ',
-  7916 => 'á»­',
-  7918 => 'ữ',
-  7920 => 'á»±',
-  7922 => 'ỳ',
-  7924 => 'ỵ',
-  7926 => 'á»·',
-  7928 => 'ỹ',
-  7930 => 'á»»',
-  7932 => 'ỽ',
-  7934 => 'ỿ',
-  7944 => 'á¼€',
-  7945 => 'ἁ',
-  7946 => 'ἂ',
-  7947 => 'ἃ',
-  7948 => 'ἄ',
-  7949 => 'á¼…',
-  7950 => 'ἆ',
-  7951 => 'ἇ',
-  7960 => 'ἐ',
-  7961 => 'ἑ',
-  7962 => 'á¼’',
-  7963 => 'ἓ',
-  7964 => 'á¼”',
-  7965 => 'ἕ',
-  7976 => 'á¼ ',
-  7977 => 'ἡ',
-  7978 => 'á¼¢',
-  7979 => 'á¼£',
-  7980 => 'ἤ',
-  7981 => 'á¼¥',
-  7982 => 'ἦ',
-  7983 => 'ἧ',
-  7992 => 'á¼°',
-  7993 => 'á¼±',
-  7994 => 'á¼²',
-  7995 => 'á¼³',
-  7996 => 'á¼´',
-  7997 => 'á¼µ',
-  7998 => 'ἶ',
-  7999 => 'á¼·',
-  8008 => 'á½€',
-  8009 => 'ὁ',
-  8010 => 'ὂ',
-  8011 => 'ὃ',
-  8012 => 'ὄ',
-  8013 => 'á½…',
-  8025 => 'ὑ',
-  8027 => 'ὓ',
-  8029 => 'ὕ',
-  8031 => 'á½—',
-  8040 => 'á½ ',
-  8041 => 'ὡ',
-  8042 => 'á½¢',
-  8043 => 'á½£',
-  8044 => 'ὤ',
-  8045 => 'á½¥',
-  8046 => 'ὦ',
-  8047 => 'ὧ',
-  8049 => 'ά',
-  8051 => 'έ',
-  8053 => 'ή',
-  8055 => 'ί',
-  8057 => 'ό',
-  8059 => 'ύ',
-  8061 => 'ÏŽ',
-  8064 => 'ἀι',
-  8065 => 'ἁι',
-  8066 => 'ἂι',
-  8067 => 'ἃι',
-  8068 => 'ἄι',
-  8069 => 'ἅι',
-  8070 => 'ἆι',
-  8071 => 'ἇι',
-  8072 => 'ἀι',
-  8073 => 'ἁι',
-  8074 => 'ἂι',
-  8075 => 'ἃι',
-  8076 => 'ἄι',
-  8077 => 'ἅι',
-  8078 => 'ἆι',
-  8079 => 'ἇι',
-  8080 => 'ἠι',
-  8081 => 'ἡι',
-  8082 => 'ἢι',
-  8083 => 'ἣι',
-  8084 => 'ἤι',
-  8085 => 'ἥι',
-  8086 => 'ἦι',
-  8087 => 'ἧι',
-  8088 => 'ἠι',
-  8089 => 'ἡι',
-  8090 => 'ἢι',
-  8091 => 'ἣι',
-  8092 => 'ἤι',
-  8093 => 'ἥι',
-  8094 => 'ἦι',
-  8095 => 'ἧι',
-  8096 => 'ὠι',
-  8097 => 'ὡι',
-  8098 => 'ὢι',
-  8099 => 'ὣι',
-  8100 => 'ὤι',
-  8101 => 'ὥι',
-  8102 => 'ὦι',
-  8103 => 'ὧι',
-  8104 => 'ὠι',
-  8105 => 'ὡι',
-  8106 => 'ὢι',
-  8107 => 'ὣι',
-  8108 => 'ὤι',
-  8109 => 'ὥι',
-  8110 => 'ὦι',
-  8111 => 'ὧι',
-  8114 => 'ὰι',
-  8115 => 'αι',
-  8116 => 'άι',
-  8119 => 'ᾶι',
-  8120 => 'á¾°',
-  8121 => 'á¾±',
-  8122 => 'á½°',
-  8123 => 'ά',
-  8124 => 'αι',
-  8126 => 'ι',
-  8130 => 'ὴι',
-  8131 => 'ηι',
-  8132 => 'ήι',
-  8135 => 'ῆι',
-  8136 => 'á½²',
-  8137 => 'έ',
-  8138 => 'á½´',
-  8139 => 'ή',
-  8140 => 'ηι',
-  8147 => 'ΐ',
-  8152 => 'ῐ',
-  8153 => 'á¿‘',
-  8154 => 'ὶ',
-  8155 => 'ί',
-  8163 => 'ΰ',
-  8168 => 'á¿ ',
-  8169 => 'á¿¡',
-  8170 => 'ὺ',
-  8171 => 'ύ',
-  8172 => 'á¿¥',
-  8178 => 'ὼι',
-  8179 => 'ωι',
-  8180 => 'ώι',
-  8183 => 'ῶι',
-  8184 => 'ὸ',
-  8185 => 'ό',
-  8186 => 'á½¼',
-  8187 => 'ÏŽ',
-  8188 => 'ωι',
-  8209 => '‐',
-  8243 => '′′',
-  8244 => '′′′',
-  8246 => '‵‵',
-  8247 => '‵‵‵',
-  8279 => '′′′′',
-  8304 => '0',
-  8305 => 'i',
-  8308 => '4',
-  8309 => '5',
-  8310 => '6',
-  8311 => '7',
-  8312 => '8',
-  8313 => '9',
-  8315 => '−',
-  8319 => 'n',
-  8320 => '0',
-  8321 => '1',
-  8322 => '2',
-  8323 => '3',
-  8324 => '4',
-  8325 => '5',
-  8326 => '6',
-  8327 => '7',
-  8328 => '8',
-  8329 => '9',
-  8331 => '−',
-  8336 => 'a',
-  8337 => 'e',
-  8338 => 'o',
-  8339 => 'x',
-  8340 => 'É™',
-  8341 => 'h',
-  8342 => 'k',
-  8343 => 'l',
-  8344 => 'm',
-  8345 => 'n',
-  8346 => 'p',
-  8347 => 's',
-  8348 => 't',
-  8360 => 'rs',
-  8450 => 'c',
-  8451 => '°c',
-  8455 => 'É›',
-  8457 => '°f',
-  8458 => 'g',
-  8459 => 'h',
-  8460 => 'h',
-  8461 => 'h',
-  8462 => 'h',
-  8463 => 'ħ',
-  8464 => 'i',
-  8465 => 'i',
-  8466 => 'l',
-  8467 => 'l',
-  8469 => 'n',
-  8470 => 'no',
-  8473 => 'p',
-  8474 => 'q',
-  8475 => 'r',
-  8476 => 'r',
-  8477 => 'r',
-  8480 => 'sm',
-  8481 => 'tel',
-  8482 => 'tm',
-  8484 => 'z',
-  8486 => 'ω',
-  8488 => 'z',
-  8490 => 'k',
-  8491 => 'Ã¥',
-  8492 => 'b',
-  8493 => 'c',
-  8495 => 'e',
-  8496 => 'e',
-  8497 => 'f',
-  8499 => 'm',
-  8500 => 'o',
-  8501 => 'א',
-  8502 => 'ב',
-  8503 => '×’',
-  8504 => 'ד',
-  8505 => 'i',
-  8507 => 'fax',
-  8508 => 'Ï€',
-  8509 => 'γ',
-  8510 => 'γ',
-  8511 => 'Ï€',
-  8512 => '∑',
-  8517 => 'd',
-  8518 => 'd',
-  8519 => 'e',
-  8520 => 'i',
-  8521 => 'j',
-  8528 => '1⁄7',
-  8529 => '1⁄9',
-  8530 => '1⁄10',
-  8531 => '1⁄3',
-  8532 => '2⁄3',
-  8533 => '1⁄5',
-  8534 => '2⁄5',
-  8535 => '3⁄5',
-  8536 => '4⁄5',
-  8537 => '1⁄6',
-  8538 => '5⁄6',
-  8539 => '1⁄8',
-  8540 => '3⁄8',
-  8541 => '5⁄8',
-  8542 => '7⁄8',
-  8543 => '1⁄',
-  8544 => 'i',
-  8545 => 'ii',
-  8546 => 'iii',
-  8547 => 'iv',
-  8548 => 'v',
-  8549 => 'vi',
-  8550 => 'vii',
-  8551 => 'viii',
-  8552 => 'ix',
-  8553 => 'x',
-  8554 => 'xi',
-  8555 => 'xii',
-  8556 => 'l',
-  8557 => 'c',
-  8558 => 'd',
-  8559 => 'm',
-  8560 => 'i',
-  8561 => 'ii',
-  8562 => 'iii',
-  8563 => 'iv',
-  8564 => 'v',
-  8565 => 'vi',
-  8566 => 'vii',
-  8567 => 'viii',
-  8568 => 'ix',
-  8569 => 'x',
-  8570 => 'xi',
-  8571 => 'xii',
-  8572 => 'l',
-  8573 => 'c',
-  8574 => 'd',
-  8575 => 'm',
-  8585 => '0⁄3',
-  8748 => '∫∫',
-  8749 => '∫∫∫',
-  8751 => '∮∮',
-  8752 => '∮∮∮',
-  9001 => '〈',
-  9002 => '〉',
-  9312 => '1',
-  9313 => '2',
-  9314 => '3',
-  9315 => '4',
-  9316 => '5',
-  9317 => '6',
-  9318 => '7',
-  9319 => '8',
-  9320 => '9',
-  9321 => '10',
-  9322 => '11',
-  9323 => '12',
-  9324 => '13',
-  9325 => '14',
-  9326 => '15',
-  9327 => '16',
-  9328 => '17',
-  9329 => '18',
-  9330 => '19',
-  9331 => '20',
-  9398 => 'a',
-  9399 => 'b',
-  9400 => 'c',
-  9401 => 'd',
-  9402 => 'e',
-  9403 => 'f',
-  9404 => 'g',
-  9405 => 'h',
-  9406 => 'i',
-  9407 => 'j',
-  9408 => 'k',
-  9409 => 'l',
-  9410 => 'm',
-  9411 => 'n',
-  9412 => 'o',
-  9413 => 'p',
-  9414 => 'q',
-  9415 => 'r',
-  9416 => 's',
-  9417 => 't',
-  9418 => 'u',
-  9419 => 'v',
-  9420 => 'w',
-  9421 => 'x',
-  9422 => 'y',
-  9423 => 'z',
-  9424 => 'a',
-  9425 => 'b',
-  9426 => 'c',
-  9427 => 'd',
-  9428 => 'e',
-  9429 => 'f',
-  9430 => 'g',
-  9431 => 'h',
-  9432 => 'i',
-  9433 => 'j',
-  9434 => 'k',
-  9435 => 'l',
-  9436 => 'm',
-  9437 => 'n',
-  9438 => 'o',
-  9439 => 'p',
-  9440 => 'q',
-  9441 => 'r',
-  9442 => 's',
-  9443 => 't',
-  9444 => 'u',
-  9445 => 'v',
-  9446 => 'w',
-  9447 => 'x',
-  9448 => 'y',
-  9449 => 'z',
-  9450 => '0',
-  10764 => '∫∫∫∫',
-  10972 => '⫝̸',
-  11264 => 'â°°',
-  11265 => 'â°±',
-  11266 => 'â°²',
-  11267 => 'â°³',
-  11268 => 'â°´',
-  11269 => 'â°µ',
-  11270 => 'â°¶',
-  11271 => 'â°·',
-  11272 => 'â°¸',
-  11273 => 'â°¹',
-  11274 => 'â°º',
-  11275 => 'â°»',
-  11276 => 'â°¼',
-  11277 => 'â°½',
-  11278 => 'â°¾',
-  11279 => 'â°¿',
-  11280 => 'â±€',
-  11281 => 'ⱁ',
-  11282 => 'ⱂ',
-  11283 => 'ⱃ',
-  11284 => 'ⱄ',
-  11285 => 'â±…',
-  11286 => 'ⱆ',
-  11287 => 'ⱇ',
-  11288 => 'ⱈ',
-  11289 => 'ⱉ',
-  11290 => 'ⱊ',
-  11291 => 'ⱋ',
-  11292 => 'ⱌ',
-  11293 => 'ⱍ',
-  11294 => 'ⱎ',
-  11295 => 'ⱏ',
-  11296 => 'ⱐ',
-  11297 => 'ⱑ',
-  11298 => 'â±’',
-  11299 => 'ⱓ',
-  11300 => 'â±”',
-  11301 => 'ⱕ',
-  11302 => 'â±–',
-  11303 => 'â±—',
-  11304 => 'ⱘ',
-  11305 => 'â±™',
-  11306 => 'ⱚ',
-  11307 => 'â±›',
-  11308 => 'ⱜ',
-  11309 => 'ⱝ',
-  11310 => 'ⱞ',
-  11360 => 'ⱡ',
-  11362 => 'É«',
-  11363 => 'áµ½',
-  11364 => 'ɽ',
-  11367 => 'ⱨ',
-  11369 => 'ⱪ',
-  11371 => 'ⱬ',
-  11373 => 'É‘',
-  11374 => 'ɱ',
-  11375 => 'ɐ',
-  11376 => 'É’',
-  11378 => 'â±³',
-  11381 => 'ⱶ',
-  11388 => 'j',
-  11389 => 'v',
-  11390 => 'È¿',
-  11391 => 'É€',
-  11392 => 'ⲁ',
-  11394 => 'ⲃ',
-  11396 => 'â²…',
-  11398 => 'ⲇ',
-  11400 => 'ⲉ',
-  11402 => 'ⲋ',
-  11404 => 'ⲍ',
-  11406 => 'ⲏ',
-  11408 => 'ⲑ',
-  11410 => 'ⲓ',
-  11412 => 'ⲕ',
-  11414 => 'â²—',
-  11416 => 'â²™',
-  11418 => 'â²›',
-  11420 => 'ⲝ',
-  11422 => 'ⲟ',
-  11424 => 'ⲡ',
-  11426 => 'â²£',
-  11428 => 'â²¥',
-  11430 => 'ⲧ',
-  11432 => 'ⲩ',
-  11434 => 'ⲫ',
-  11436 => 'â²­',
-  11438 => 'ⲯ',
-  11440 => 'â²±',
-  11442 => 'â²³',
-  11444 => 'â²µ',
-  11446 => 'â²·',
-  11448 => 'â²¹',
-  11450 => 'â²»',
-  11452 => 'â²½',
-  11454 => 'ⲿ',
-  11456 => 'ⳁ',
-  11458 => 'ⳃ',
-  11460 => 'â³…',
-  11462 => 'ⳇ',
-  11464 => 'ⳉ',
-  11466 => 'ⳋ',
-  11468 => 'ⳍ',
-  11470 => 'ⳏ',
-  11472 => 'ⳑ',
-  11474 => 'ⳓ',
-  11476 => 'ⳕ',
-  11478 => 'â³—',
-  11480 => 'â³™',
-  11482 => 'â³›',
-  11484 => 'ⳝ',
-  11486 => 'ⳟ',
-  11488 => 'ⳡ',
-  11490 => 'â³£',
-  11499 => 'ⳬ',
-  11501 => 'â³®',
-  11506 => 'â³³',
-  11631 => 'ⵡ',
-  11935 => '母',
-  12019 => '龟',
-  12032 => '一',
-  12033 => '丨',
-  12034 => '丶',
-  12035 => '丿',
-  12036 => 'ä¹™',
-  12037 => '亅',
-  12038 => '二',
-  12039 => '亠',
-  12040 => '人',
-  12041 => 'å„¿',
-  12042 => 'å…¥',
-  12043 => 'å…«',
-  12044 => '冂',
-  12045 => '冖',
-  12046 => '冫',
-  12047 => '几',
-  12048 => '凵',
-  12049 => '刀',
-  12050 => '力',
-  12051 => '勹',
-  12052 => '匕',
-  12053 => '匚',
-  12054 => '匸',
-  12055 => '十',
-  12056 => '卜',
-  12057 => '卩',
-  12058 => '厂',
-  12059 => '厶',
-  12060 => '又',
-  12061 => '口',
-  12062 => 'å›—',
-  12063 => '土',
-  12064 => '士',
-  12065 => '夂',
-  12066 => '夊',
-  12067 => '夕',
-  12068 => '大',
-  12069 => '女',
-  12070 => '子',
-  12071 => '宀',
-  12072 => '寸',
-  12073 => '小',
-  12074 => 'å°¢',
-  12075 => 'å°¸',
-  12076 => 'å±®',
-  12077 => 'å±±',
-  12078 => 'å·›',
-  12079 => 'å·¥',
-  12080 => 'å·±',
-  12081 => 'å·¾',
-  12082 => 'å¹²',
-  12083 => '幺',
-  12084 => '广',
-  12085 => 'å»´',
-  12086 => '廾',
-  12087 => '弋',
-  12088 => '弓',
-  12089 => '彐',
-  12090 => '彡',
-  12091 => 'å½³',
-  12092 => '心',
-  12093 => '戈',
-  12094 => '戶',
-  12095 => '手',
-  12096 => '支',
-  12097 => 'æ”´',
-  12098 => 'æ–‡',
-  12099 => 'æ–—',
-  12100 => 'æ–¤',
-  12101 => 'æ–¹',
-  12102 => 'æ— ',
-  12103 => 'æ—¥',
-  12104 => 'æ›°',
-  12105 => '月',
-  12106 => '木',
-  12107 => '欠',
-  12108 => 'æ­¢',
-  12109 => 'æ­¹',
-  12110 => '殳',
-  12111 => '毋',
-  12112 => '比',
-  12113 => '毛',
-  12114 => '氏',
-  12115 => 'æ°”',
-  12116 => 'æ°´',
-  12117 => '火',
-  12118 => '爪',
-  12119 => '父',
-  12120 => '爻',
-  12121 => '爿',
-  12122 => '片',
-  12123 => '牙',
-  12124 => '牛',
-  12125 => '犬',
-  12126 => '玄',
-  12127 => '玉',
-  12128 => '瓜',
-  12129 => '瓦',
-  12130 => '甘',
-  12131 => '生',
-  12132 => '用',
-  12133 => 'ç”°',
-  12134 => 'ç–‹',
-  12135 => 'ç–’',
-  12136 => '癶',
-  12137 => '白',
-  12138 => 'çš®',
-  12139 => 'çš¿',
-  12140 => 'ç›®',
-  12141 => '矛',
-  12142 => '矢',
-  12143 => '石',
-  12144 => '示',
-  12145 => '禸',
-  12146 => '禾',
-  12147 => 'ç©´',
-  12148 => 'ç«‹',
-  12149 => '竹',
-  12150 => 'ç±³',
-  12151 => '糸',
-  12152 => '缶',
-  12153 => '网',
-  12154 => '羊',
-  12155 => 'ç¾½',
-  12156 => '老',
-  12157 => '而',
-  12158 => '耒',
-  12159 => '耳',
-  12160 => '聿',
-  12161 => '肉',
-  12162 => '臣',
-  12163 => '自',
-  12164 => '至',
-  12165 => '臼',
-  12166 => '舌',
-  12167 => '舛',
-  12168 => '舟',
-  12169 => '艮',
-  12170 => '色',
-  12171 => '艸',
-  12172 => '虍',
-  12173 => '虫',
-  12174 => 'è¡€',
-  12175 => '行',
-  12176 => 'è¡£',
-  12177 => '襾',
-  12178 => '見',
-  12179 => '角',
-  12180 => '言',
-  12181 => 'è°·',
-  12182 => '豆',
-  12183 => '豕',
-  12184 => '豸',
-  12185 => '貝',
-  12186 => '赤',
-  12187 => 'èµ°',
-  12188 => '足',
-  12189 => '身',
-  12190 => '車',
-  12191 => 'è¾›',
-  12192 => 'è¾°',
-  12193 => 'è¾µ',
-  12194 => 'é‚‘',
-  12195 => 'é…‰',
-  12196 => '釆',
-  12197 => '里',
-  12198 => '金',
-  12199 => 'é•·',
-  12200 => 'é–€',
-  12201 => '阜',
-  12202 => '隶',
-  12203 => 'éš¹',
-  12204 => '雨',
-  12205 => '靑',
-  12206 => '非',
-  12207 => '面',
-  12208 => '革',
-  12209 => '韋',
-  12210 => '韭',
-  12211 => '音',
-  12212 => '頁',
-  12213 => '風',
-  12214 => '飛',
-  12215 => '食',
-  12216 => '首',
-  12217 => '香',
-  12218 => '馬',
-  12219 => '骨',
-  12220 => '高',
-  12221 => 'é«Ÿ',
-  12222 => '鬥',
-  12223 => '鬯',
-  12224 => '鬲',
-  12225 => '鬼',
-  12226 => 'é­š',
-  12227 => 'é³¥',
-  12228 => 'é¹µ',
-  12229 => '鹿',
-  12230 => '麥',
-  12231 => '麻',
-  12232 => '黃',
-  12233 => '黍',
-  12234 => '黑',
-  12235 => '黹',
-  12236 => '黽',
-  12237 => '鼎',
-  12238 => '鼓',
-  12239 => 'é¼ ',
-  12240 => 'é¼»',
-  12241 => '齊',
-  12242 => 'é½’',
-  12243 => '龍',
-  12244 => '龜',
-  12245 => 'é¾ ',
-  12290 => '.',
-  12342 => '〒',
-  12344 => '十',
-  12345 => '卄',
-  12346 => '卅',
-  12447 => 'より',
-  12543 => 'コト',
-  12593 => 'á„€',
-  12594 => 'ᄁ',
-  12595 => 'ᆪ',
-  12596 => 'á„‚',
-  12597 => 'ᆬ',
-  12598 => 'ᆭ',
-  12599 => 'ᄃ',
-  12600 => 'á„„',
-  12601 => 'á„…',
-  12602 => 'ᆰ',
-  12603 => 'ᆱ',
-  12604 => 'ᆲ',
-  12605 => 'ᆳ',
-  12606 => 'ᆴ',
-  12607 => 'ᆵ',
-  12608 => 'á„š',
-  12609 => 'ᄆ',
-  12610 => 'ᄇ',
-  12611 => 'ᄈ',
-  12612 => 'á„¡',
-  12613 => 'ᄉ',
-  12614 => 'á„Š',
-  12615 => 'á„‹',
-  12616 => 'ᄌ',
-  12617 => 'ᄍ',
-  12618 => 'á„Ž',
-  12619 => 'ᄏ',
-  12620 => 'ᄐ',
-  12621 => 'á„‘',
-  12622 => 'á„’',
-  12623 => 'á…¡',
-  12624 => 'á…¢',
-  12625 => 'á…£',
-  12626 => 'á…¤',
-  12627 => 'á…¥',
-  12628 => 'á…¦',
-  12629 => 'á…§',
-  12630 => 'á…¨',
-  12631 => 'á…©',
-  12632 => 'á…ª',
-  12633 => 'á…«',
-  12634 => 'á…¬',
-  12635 => 'á…­',
-  12636 => 'á…®',
-  12637 => 'á…¯',
-  12638 => 'á…°',
-  12639 => 'á…±',
-  12640 => 'á…²',
-  12641 => 'á…³',
-  12642 => 'á…´',
-  12643 => 'á…µ',
-  12645 => 'á„”',
-  12646 => 'á„•',
-  12647 => 'ᇇ',
-  12648 => 'ᇈ',
-  12649 => 'ᇌ',
-  12650 => 'ᇎ',
-  12651 => 'ᇓ',
-  12652 => 'ᇗ',
-  12653 => 'ᇙ',
-  12654 => 'ᄜ',
-  12655 => 'ᇝ',
-  12656 => 'ᇟ',
-  12657 => 'ᄝ',
-  12658 => 'á„ž',
-  12659 => 'á„ ',
-  12660 => 'á„¢',
-  12661 => 'á„£',
-  12662 => 'ᄧ',
-  12663 => 'á„©',
-  12664 => 'á„«',
-  12665 => 'ᄬ',
-  12666 => 'á„­',
-  12667 => 'á„®',
-  12668 => 'ᄯ',
-  12669 => 'ᄲ',
-  12670 => 'ᄶ',
-  12671 => 'á…€',
-  12672 => 'á…‡',
-  12673 => 'ᅌ',
-  12674 => 'ᇱ',
-  12675 => 'ᇲ',
-  12676 => 'á…—',
-  12677 => 'á…˜',
-  12678 => 'á…™',
-  12679 => 'ᆄ',
-  12680 => 'ᆅ',
-  12681 => 'ᆈ',
-  12682 => 'ᆑ',
-  12683 => 'ᆒ',
-  12684 => 'ᆔ',
-  12685 => 'ᆞ',
-  12686 => 'ᆡ',
-  12690 => '一',
-  12691 => '二',
-  12692 => '三',
-  12693 => 'å››',
-  12694 => '上',
-  12695 => '中',
-  12696 => '下',
-  12697 => '甲',
-  12698 => 'ä¹™',
-  12699 => '丙',
-  12700 => '丁',
-  12701 => '天',
-  12702 => '地',
-  12703 => '人',
-  12868 => '問',
-  12869 => 'å¹¼',
-  12870 => 'æ–‡',
-  12871 => '箏',
-  12880 => 'pte',
-  12881 => '21',
-  12882 => '22',
-  12883 => '23',
-  12884 => '24',
-  12885 => '25',
-  12886 => '26',
-  12887 => '27',
-  12888 => '28',
-  12889 => '29',
-  12890 => '30',
-  12891 => '31',
-  12892 => '32',
-  12893 => '33',
-  12894 => '34',
-  12895 => '35',
-  12896 => 'á„€',
-  12897 => 'á„‚',
-  12898 => 'ᄃ',
-  12899 => 'á„…',
-  12900 => 'ᄆ',
-  12901 => 'ᄇ',
-  12902 => 'ᄉ',
-  12903 => 'á„‹',
-  12904 => 'ᄌ',
-  12905 => 'á„Ž',
-  12906 => 'ᄏ',
-  12907 => 'ᄐ',
-  12908 => 'á„‘',
-  12909 => 'á„’',
-  12910 => 'ê°€',
-  12911 => '나',
-  12912 => '다',
-  12913 => '라',
-  12914 => '마',
-  12915 => 'ë°”',
-  12916 => '사',
-  12917 => 'ì•„',
-  12918 => '자',
-  12919 => 'ì°¨',
-  12920 => 'ì¹´',
-  12921 => '타',
-  12922 => '파',
-  12923 => '하',
-  12924 => '참고',
-  12925 => '주의',
-  12926 => 'ìš°',
-  12928 => '一',
-  12929 => '二',
-  12930 => '三',
-  12931 => 'å››',
-  12932 => '五',
-  12933 => 'å…­',
-  12934 => '七',
-  12935 => 'å…«',
-  12936 => '九',
-  12937 => '十',
-  12938 => '月',
-  12939 => '火',
-  12940 => 'æ°´',
-  12941 => '木',
-  12942 => '金',
-  12943 => '土',
-  12944 => 'æ—¥',
-  12945 => 'æ ª',
-  12946 => '有',
-  12947 => '社',
-  12948 => '名',
-  12949 => '特',
-  12950 => '財',
-  12951 => '祝',
-  12952 => '労',
-  12953 => '秘',
-  12954 => 'ç”·',
-  12955 => '女',
-  12956 => '適',
-  12957 => '優',
-  12958 => '印',
-  12959 => '注',
-  12960 => 'é …',
-  12961 => '休',
-  12962 => '写',
-  12963 => 'æ­£',
-  12964 => '上',
-  12965 => '中',
-  12966 => '下',
-  12967 => 'å·¦',
-  12968 => '右',
-  12969 => '医',
-  12970 => 'å®—',
-  12971 => 'å­¦',
-  12972 => '監',
-  12973 => '企',
-  12974 => '資',
-  12975 => '協',
-  12976 => '夜',
-  12977 => '36',
-  12978 => '37',
-  12979 => '38',
-  12980 => '39',
-  12981 => '40',
-  12982 => '41',
-  12983 => '42',
-  12984 => '43',
-  12985 => '44',
-  12986 => '45',
-  12987 => '46',
-  12988 => '47',
-  12989 => '48',
-  12990 => '49',
-  12991 => '50',
-  12992 => '1月',
-  12993 => '2月',
-  12994 => '3月',
-  12995 => '4月',
-  12996 => '5月',
-  12997 => '6月',
-  12998 => '7月',
-  12999 => '8月',
-  13000 => '9月',
-  13001 => '10月',
-  13002 => '11月',
-  13003 => '12月',
-  13004 => 'hg',
-  13005 => 'erg',
-  13006 => 'ev',
-  13007 => 'ltd',
-  13008 => 'ã‚¢',
-  13009 => 'イ',
-  13010 => 'ウ',
-  13011 => 'エ',
-  13012 => 'オ',
-  13013 => 'ã‚«',
-  13014 => 'ã‚­',
-  13015 => 'ク',
-  13016 => 'ケ',
-  13017 => 'コ',
-  13018 => 'サ',
-  13019 => 'ã‚·',
-  13020 => 'ス',
-  13021 => 'ã‚»',
-  13022 => 'ソ',
-  13023 => 'ã‚¿',
-  13024 => 'チ',
-  13025 => 'ツ',
-  13026 => 'テ',
-  13027 => 'ト',
-  13028 => 'ナ',
-  13029 => 'ニ',
-  13030 => 'ヌ',
-  13031 => 'ネ',
-  13032 => 'ノ',
-  13033 => 'ハ',
-  13034 => 'ヒ',
-  13035 => 'フ',
-  13036 => 'ヘ',
-  13037 => 'ホ',
-  13038 => 'マ',
-  13039 => 'ミ',
-  13040 => 'ム',
-  13041 => 'メ',
-  13042 => 'モ',
-  13043 => 'ヤ',
-  13044 => 'ユ',
-  13045 => 'ヨ',
-  13046 => 'ラ',
-  13047 => 'リ',
-  13048 => 'ル',
-  13049 => 'レ',
-  13050 => 'ロ',
-  13051 => 'ワ',
-  13052 => 'ヰ',
-  13053 => 'ヱ',
-  13054 => 'ヲ',
-  13055 => '令和',
-  13056 => 'アパート',
-  13057 => 'アルファ',
-  13058 => 'アンペア',
-  13059 => 'アール',
-  13060 => 'イニング',
-  13061 => 'インチ',
-  13062 => 'ウォン',
-  13063 => 'エスクード',
-  13064 => 'エーカー',
-  13065 => 'オンス',
-  13066 => 'オーム',
-  13067 => 'カイリ',
-  13068 => 'カラット',
-  13069 => 'カロリー',
-  13070 => 'ガロン',
-  13071 => 'ガンマ',
-  13072 => 'ギガ',
-  13073 => 'ギニー',
-  13074 => 'キュリー',
-  13075 => 'ギルダー',
-  13076 => 'キロ',
-  13077 => 'キログラム',
-  13078 => 'キロメートル',
-  13079 => 'キロワット',
-  13080 => 'グラム',
-  13081 => 'グラムトン',
-  13082 => 'クルゼイロ',
-  13083 => 'クローネ',
-  13084 => 'ケース',
-  13085 => 'コルナ',
-  13086 => 'コーポ',
-  13087 => 'サイクル',
-  13088 => 'サンチーム',
-  13089 => 'シリング',
-  13090 => 'センチ',
-  13091 => 'セント',
-  13092 => 'ダース',
-  13093 => 'デシ',
-  13094 => 'ドル',
-  13095 => 'トン',
-  13096 => 'ナノ',
-  13097 => 'ノット',
-  13098 => 'ハイツ',
-  13099 => 'パーセント',
-  13100 => 'パーツ',
-  13101 => 'バーレル',
-  13102 => 'ピアストル',
-  13103 => 'ピクル',
-  13104 => 'ピコ',
-  13105 => 'ビル',
-  13106 => 'ファラッド',
-  13107 => 'フィート',
-  13108 => 'ブッシェル',
-  13109 => 'フラン',
-  13110 => 'ヘクタール',
-  13111 => 'ペソ',
-  13112 => 'ペニヒ',
-  13113 => 'ヘルツ',
-  13114 => 'ペンス',
-  13115 => 'ページ',
-  13116 => 'ベータ',
-  13117 => 'ポイント',
-  13118 => 'ボルト',
-  13119 => 'ホン',
-  13120 => 'ポンド',
-  13121 => 'ホール',
-  13122 => 'ホーン',
-  13123 => 'マイクロ',
-  13124 => 'マイル',
-  13125 => 'マッハ',
-  13126 => 'マルク',
-  13127 => 'マンション',
-  13128 => 'ミクロン',
-  13129 => 'ミリ',
-  13130 => 'ミリバール',
-  13131 => 'メガ',
-  13132 => 'メガトン',
-  13133 => 'メートル',
-  13134 => 'ヤード',
-  13135 => 'ヤール',
-  13136 => 'ユアン',
-  13137 => 'リットル',
-  13138 => 'リラ',
-  13139 => 'ルピー',
-  13140 => 'ルーブル',
-  13141 => 'レム',
-  13142 => 'レントゲン',
-  13143 => 'ワット',
-  13144 => '0点',
-  13145 => '1点',
-  13146 => '2点',
-  13147 => '3点',
-  13148 => '4点',
-  13149 => '5点',
-  13150 => '6点',
-  13151 => '7点',
-  13152 => '8点',
-  13153 => '9点',
-  13154 => '10点',
-  13155 => '11点',
-  13156 => '12点',
-  13157 => '13点',
-  13158 => '14点',
-  13159 => '15点',
-  13160 => '16点',
-  13161 => '17点',
-  13162 => '18点',
-  13163 => '19点',
-  13164 => '20点',
-  13165 => '21点',
-  13166 => '22点',
-  13167 => '23点',
-  13168 => '24点',
-  13169 => 'hpa',
-  13170 => 'da',
-  13171 => 'au',
-  13172 => 'bar',
-  13173 => 'ov',
-  13174 => 'pc',
-  13175 => 'dm',
-  13176 => 'dm2',
-  13177 => 'dm3',
-  13178 => 'iu',
-  13179 => '平成',
-  13180 => '昭和',
-  13181 => '大正',
-  13182 => '明治',
-  13183 => '株式会社',
-  13184 => 'pa',
-  13185 => 'na',
-  13186 => 'μa',
-  13187 => 'ma',
-  13188 => 'ka',
-  13189 => 'kb',
-  13190 => 'mb',
-  13191 => 'gb',
-  13192 => 'cal',
-  13193 => 'kcal',
-  13194 => 'pf',
-  13195 => 'nf',
-  13196 => 'μf',
-  13197 => 'μg',
-  13198 => 'mg',
-  13199 => 'kg',
-  13200 => 'hz',
-  13201 => 'khz',
-  13202 => 'mhz',
-  13203 => 'ghz',
-  13204 => 'thz',
-  13205 => 'μl',
-  13206 => 'ml',
-  13207 => 'dl',
-  13208 => 'kl',
-  13209 => 'fm',
-  13210 => 'nm',
-  13211 => 'μm',
-  13212 => 'mm',
-  13213 => 'cm',
-  13214 => 'km',
-  13215 => 'mm2',
-  13216 => 'cm2',
-  13217 => 'm2',
-  13218 => 'km2',
-  13219 => 'mm3',
-  13220 => 'cm3',
-  13221 => 'm3',
-  13222 => 'km3',
-  13223 => 'm∕s',
-  13224 => 'm∕s2',
-  13225 => 'pa',
-  13226 => 'kpa',
-  13227 => 'mpa',
-  13228 => 'gpa',
-  13229 => 'rad',
-  13230 => 'rad∕s',
-  13231 => 'rad∕s2',
-  13232 => 'ps',
-  13233 => 'ns',
-  13234 => 'μs',
-  13235 => 'ms',
-  13236 => 'pv',
-  13237 => 'nv',
-  13238 => 'μv',
-  13239 => 'mv',
-  13240 => 'kv',
-  13241 => 'mv',
-  13242 => 'pw',
-  13243 => 'nw',
-  13244 => 'μw',
-  13245 => 'mw',
-  13246 => 'kw',
-  13247 => 'mw',
-  13248 => 'kω',
-  13249 => 'mω',
-  13251 => 'bq',
-  13252 => 'cc',
-  13253 => 'cd',
-  13254 => 'c∕kg',
-  13256 => 'db',
-  13257 => 'gy',
-  13258 => 'ha',
-  13259 => 'hp',
-  13260 => 'in',
-  13261 => 'kk',
-  13262 => 'km',
-  13263 => 'kt',
-  13264 => 'lm',
-  13265 => 'ln',
-  13266 => 'log',
-  13267 => 'lx',
-  13268 => 'mb',
-  13269 => 'mil',
-  13270 => 'mol',
-  13271 => 'ph',
-  13273 => 'ppm',
-  13274 => 'pr',
-  13275 => 'sr',
-  13276 => 'sv',
-  13277 => 'wb',
-  13278 => 'v∕m',
-  13279 => 'a∕m',
-  13280 => '1æ—¥',
-  13281 => '2æ—¥',
-  13282 => '3æ—¥',
-  13283 => '4æ—¥',
-  13284 => '5æ—¥',
-  13285 => '6æ—¥',
-  13286 => '7æ—¥',
-  13287 => '8æ—¥',
-  13288 => '9æ—¥',
-  13289 => '10æ—¥',
-  13290 => '11æ—¥',
-  13291 => '12æ—¥',
-  13292 => '13æ—¥',
-  13293 => '14æ—¥',
-  13294 => '15æ—¥',
-  13295 => '16æ—¥',
-  13296 => '17æ—¥',
-  13297 => '18æ—¥',
-  13298 => '19æ—¥',
-  13299 => '20æ—¥',
-  13300 => '21æ—¥',
-  13301 => '22æ—¥',
-  13302 => '23æ—¥',
-  13303 => '24æ—¥',
-  13304 => '25æ—¥',
-  13305 => '26æ—¥',
-  13306 => '27æ—¥',
-  13307 => '28æ—¥',
-  13308 => '29æ—¥',
-  13309 => '30æ—¥',
-  13310 => '31æ—¥',
-  13311 => 'gal',
-  42560 => 'ꙁ',
-  42562 => 'ꙃ',
-  42564 => 'ê™…',
-  42566 => 'ꙇ',
-  42568 => 'ꙉ',
-  42570 => 'ꙋ',
-  42572 => 'ꙍ',
-  42574 => 'ꙏ',
-  42576 => 'ꙑ',
-  42578 => 'ꙓ',
-  42580 => 'ꙕ',
-  42582 => 'ê™—',
-  42584 => 'ê™™',
-  42586 => 'ê™›',
-  42588 => 'ꙝ',
-  42590 => 'ꙟ',
-  42592 => 'ꙡ',
-  42594 => 'ꙣ',
-  42596 => 'ꙥ',
-  42598 => 'ꙧ',
-  42600 => 'ꙩ',
-  42602 => 'ꙫ',
-  42604 => 'ê™­',
-  42624 => 'ꚁ',
-  42626 => 'ꚃ',
-  42628 => 'êš…',
-  42630 => 'ꚇ',
-  42632 => 'ꚉ',
-  42634 => 'êš‹',
-  42636 => 'ꚍ',
-  42638 => 'ꚏ',
-  42640 => 'êš‘',
-  42642 => 'êš“',
-  42644 => 'êš•',
-  42646 => 'êš—',
-  42648 => 'êš™',
-  42650 => 'êš›',
-  42652 => 'ÑŠ',
-  42653 => 'ь',
-  42786 => 'ꜣ',
-  42788 => 'ꜥ',
-  42790 => 'ꜧ',
-  42792 => 'ꜩ',
-  42794 => 'ꜫ',
-  42796 => 'ꜭ',
-  42798 => 'ꜯ',
-  42802 => 'ꜳ',
-  42804 => 'ꜵ',
-  42806 => 'ꜷ',
-  42808 => 'ꜹ',
-  42810 => 'ꜻ',
-  42812 => 'ꜽ',
-  42814 => 'ꜿ',
-  42816 => 'ꝁ',
-  42818 => 'ꝃ',
-  42820 => 'ꝅ',
-  42822 => 'ꝇ',
-  42824 => 'ꝉ',
-  42826 => 'ꝋ',
-  42828 => 'ꝍ',
-  42830 => 'ꝏ',
-  42832 => 'ꝑ',
-  42834 => 'ꝓ',
-  42836 => 'ꝕ',
-  42838 => 'ꝗ',
-  42840 => 'ꝙ',
-  42842 => 'ꝛ',
-  42844 => 'ꝝ',
-  42846 => 'ꝟ',
-  42848 => 'ꝡ',
-  42850 => 'ꝣ',
-  42852 => 'ꝥ',
-  42854 => 'ꝧ',
-  42856 => 'ꝩ',
-  42858 => 'ꝫ',
-  42860 => 'ꝭ',
-  42862 => 'ꝯ',
-  42864 => 'ꝯ',
-  42873 => 'ꝺ',
-  42875 => 'ꝼ',
-  42877 => 'áµ¹',
-  42878 => 'ꝿ',
-  42880 => 'ꞁ',
-  42882 => 'ꞃ',
-  42884 => 'êž…',
-  42886 => 'ꞇ',
-  42891 => 'ꞌ',
-  42893 => 'É¥',
-  42896 => 'êž‘',
-  42898 => 'êž“',
-  42902 => 'êž—',
-  42904 => 'êž™',
-  42906 => 'êž›',
-  42908 => 'ꞝ',
-  42910 => 'ꞟ',
-  42912 => 'êž¡',
-  42914 => 'ꞣ',
-  42916 => 'ꞥ',
-  42918 => 'ꞧ',
-  42920 => 'êž©',
-  42922 => 'ɦ',
-  42923 => 'ɜ',
-  42924 => 'É¡',
-  42925 => 'ɬ',
-  42926 => 'ɪ',
-  42928 => 'Êž',
-  42929 => 'ʇ',
-  42930 => 'ʝ',
-  42931 => 'ê­“',
-  42932 => 'êžµ',
-  42934 => 'êž·',
-  42936 => 'êž¹',
-  42938 => 'êž»',
-  42940 => 'êž½',
-  42942 => 'êž¿',
-  42946 => 'ꟃ',
-  42948 => 'êž”',
-  42949 => 'Ê‚',
-  42950 => 'ᶎ',
-  42951 => 'ꟈ',
-  42953 => 'ꟊ',
-  42997 => 'ꟶ',
-  43000 => 'ħ',
-  43001 => 'Å“',
-  43868 => 'ꜧ',
-  43869 => 'ꬷ',
-  43870 => 'É«',
-  43871 => 'ê­’',
-  43881 => 'ʍ',
-  43888 => 'Ꭰ',
-  43889 => 'Ꭱ',
-  43890 => 'Ꭲ',
-  43891 => 'Ꭳ',
-  43892 => 'Ꭴ',
-  43893 => 'Ꭵ',
-  43894 => 'Ꭶ',
-  43895 => 'Ꭷ',
-  43896 => 'Ꭸ',
-  43897 => 'Ꭹ',
-  43898 => 'Ꭺ',
-  43899 => 'Ꭻ',
-  43900 => 'Ꭼ',
-  43901 => 'Ꭽ',
-  43902 => 'Ꭾ',
-  43903 => 'Ꭿ',
-  43904 => 'Ꮀ',
-  43905 => 'Ꮁ',
-  43906 => 'Ꮂ',
-  43907 => 'Ꮃ',
-  43908 => 'Ꮄ',
-  43909 => 'Ꮅ',
-  43910 => 'Ꮆ',
-  43911 => 'Ꮇ',
-  43912 => 'Ꮈ',
-  43913 => 'Ꮉ',
-  43914 => 'Ꮊ',
-  43915 => 'Ꮋ',
-  43916 => 'Ꮌ',
-  43917 => 'Ꮍ',
-  43918 => 'Ꮎ',
-  43919 => 'Ꮏ',
-  43920 => 'Ꮐ',
-  43921 => 'Ꮑ',
-  43922 => 'Ꮒ',
-  43923 => 'Ꮓ',
-  43924 => 'Ꮔ',
-  43925 => 'Ꮕ',
-  43926 => 'Ꮖ',
-  43927 => 'Ꮗ',
-  43928 => 'Ꮘ',
-  43929 => 'Ꮙ',
-  43930 => 'Ꮚ',
-  43931 => 'Ꮛ',
-  43932 => 'Ꮜ',
-  43933 => 'Ꮝ',
-  43934 => 'Ꮞ',
-  43935 => 'Ꮟ',
-  43936 => 'Ꮠ',
-  43937 => 'Ꮡ',
-  43938 => 'Ꮢ',
-  43939 => 'Ꮣ',
-  43940 => 'Ꮤ',
-  43941 => 'Ꮥ',
-  43942 => 'Ꮦ',
-  43943 => 'Ꮧ',
-  43944 => 'Ꮨ',
-  43945 => 'Ꮩ',
-  43946 => 'Ꮪ',
-  43947 => 'Ꮫ',
-  43948 => 'Ꮬ',
-  43949 => 'Ꮭ',
-  43950 => 'Ꮮ',
-  43951 => 'Ꮯ',
-  43952 => 'Ꮰ',
-  43953 => 'Ꮱ',
-  43954 => 'Ꮲ',
-  43955 => 'Ꮳ',
-  43956 => 'Ꮴ',
-  43957 => 'Ꮵ',
-  43958 => 'Ꮶ',
-  43959 => 'Ꮷ',
-  43960 => 'Ꮸ',
-  43961 => 'Ꮹ',
-  43962 => 'Ꮺ',
-  43963 => 'Ꮻ',
-  43964 => 'Ꮼ',
-  43965 => 'Ꮽ',
-  43966 => 'Ꮾ',
-  43967 => 'Ꮿ',
-  63744 => '豈',
-  63745 => 'æ›´',
-  63746 => '車',
-  63747 => '賈',
-  63748 => '滑',
-  63749 => '串',
-  63750 => '句',
-  63751 => '龜',
-  63752 => '龜',
-  63753 => '契',
-  63754 => '金',
-  63755 => 'å–‡',
-  63756 => '奈',
-  63757 => '懶',
-  63758 => '癩',
-  63759 => 'ç¾…',
-  63760 => '蘿',
-  63761 => '螺',
-  63762 => '裸',
-  63763 => '邏',
-  63764 => '樂',
-  63765 => 'æ´›',
-  63766 => '烙',
-  63767 => '珞',
-  63768 => '落',
-  63769 => 'é…ª',
-  63770 => '駱',
-  63771 => '亂',
-  63772 => '卵',
-  63773 => '欄',
-  63774 => '爛',
-  63775 => '蘭',
-  63776 => '鸞',
-  63777 => '嵐',
-  63778 => 'æ¿«',
-  63779 => '藍',
-  63780 => '襤',
-  63781 => '拉',
-  63782 => '臘',
-  63783 => 'è Ÿ',
-  63784 => '廊',
-  63785 => '朗',
-  63786 => '浪',
-  63787 => '狼',
-  63788 => '郎',
-  63789 => '來',
-  63790 => '冷',
-  63791 => 'å‹ž',
-  63792 => 'æ“„',
-  63793 => 'æ«“',
-  63794 => '爐',
-  63795 => '盧',
-  63796 => '老',
-  63797 => '蘆',
-  63798 => '虜',
-  63799 => 'è·¯',
-  63800 => '露',
-  63801 => 'é­¯',
-  63802 => 'é·º',
-  63803 => '碌',
-  63804 => '祿',
-  63805 => '綠',
-  63806 => '菉',
-  63807 => '錄',
-  63808 => '鹿',
-  63809 => 'è«–',
-  63810 => '壟',
-  63811 => '弄',
-  63812 => 'ç± ',
-  63813 => '聾',
-  63814 => '牢',
-  63815 => '磊',
-  63816 => '賂',
-  63817 => 'é›·',
-  63818 => '壘',
-  63819 => 'å±¢',
-  63820 => '樓',
-  63821 => 'æ·š',
-  63822 => '漏',
-  63823 => 'ç´¯',
-  63824 => '縷',
-  63825 => '陋',
-  63826 => 'å‹’',
-  63827 => 'è‚‹',
-  63828 => '凜',
-  63829 => '凌',
-  63830 => '稜',
-  63831 => '綾',
-  63832 => '菱',
-  63833 => '陵',
-  63834 => '讀',
-  63835 => '拏',
-  63836 => '樂',
-  63837 => '諾',
-  63838 => '丹',
-  63839 => '寧',
-  63840 => '怒',
-  63841 => '率',
-  63842 => 'ç•°',
-  63843 => '北',
-  63844 => '磻',
-  63845 => '便',
-  63846 => '復',
-  63847 => '不',
-  63848 => '泌',
-  63849 => '數',
-  63850 => 'ç´¢',
-  63851 => '參',
-  63852 => 'å¡ž',
-  63853 => '省',
-  63854 => '葉',
-  63855 => '說',
-  63856 => '殺',
-  63857 => 'è¾°',
-  63858 => '沈',
-  63859 => '拾',
-  63860 => 'è‹¥',
-  63861 => '掠',
-  63862 => 'ç•¥',
-  63863 => '亮',
-  63864 => 'å…©',
-  63865 => '凉',
-  63866 => '梁',
-  63867 => '糧',
-  63868 => '良',
-  63869 => 'è«’',
-  63870 => '量',
-  63871 => '勵',
-  63872 => 'å‘‚',
-  63873 => '女',
-  63874 => '廬',
-  63875 => 'æ—…',
-  63876 => '濾',
-  63877 => '礪',
-  63878 => 'é–­',
-  63879 => '驪',
-  63880 => '麗',
-  63881 => '黎',
-  63882 => '力',
-  63883 => '曆',
-  63884 => 'æ­·',
-  63885 => 'è½¢',
-  63886 => 'å¹´',
-  63887 => '憐',
-  63888 => '戀',
-  63889 => 'æ’š',
-  63890 => 'æ¼£',
-  63891 => 'ç…‰',
-  63892 => 'ç’‰',
-  63893 => '秊',
-  63894 => 'ç·´',
-  63895 => '聯',
-  63896 => '輦',
-  63897 => 'è“®',
-  63898 => '連',
-  63899 => '鍊',
-  63900 => '列',
-  63901 => '劣',
-  63902 => 'å’½',
-  63903 => '烈',
-  63904 => '裂',
-  63905 => '說',
-  63906 => '廉',
-  63907 => '念',
-  63908 => '捻',
-  63909 => 'æ®®',
-  63910 => 'ç°¾',
-  63911 => '獵',
-  63912 => '令',
-  63913 => '囹',
-  63914 => '寧',
-  63915 => '嶺',
-  63916 => '怜',
-  63917 => '玲',
-  63918 => 'ç‘©',
-  63919 => '羚',
-  63920 => '聆',
-  63921 => '鈴',
-  63922 => '零',
-  63923 => '靈',
-  63924 => 'é ˜',
-  63925 => '例',
-  63926 => '禮',
-  63927 => '醴',
-  63928 => '隸',
-  63929 => '惡',
-  63930 => '了',
-  63931 => '僚',
-  63932 => '寮',
-  63933 => 'å°¿',
-  63934 => 'æ–™',
-  63935 => '樂',
-  63936 => '燎',
-  63937 => '療',
-  63938 => '蓼',
-  63939 => '遼',
-  63940 => '龍',
-  63941 => '暈',
-  63942 => '阮',
-  63943 => '劉',
-  63944 => '杻',
-  63945 => '柳',
-  63946 => '流',
-  63947 => '溜',
-  63948 => '琉',
-  63949 => 'ç•™',
-  63950 => 'ç¡«',
-  63951 => '紐',
-  63952 => 'é¡ž',
-  63953 => 'å…­',
-  63954 => '戮',
-  63955 => '陸',
-  63956 => '倫',
-  63957 => 'å´™',
-  63958 => 'æ·ª',
-  63959 => '輪',
-  63960 => '律',
-  63961 => 'æ…„',
-  63962 => 'æ —',
-  63963 => '率',
-  63964 => '隆',
-  63965 => '利',
-  63966 => '吏',
-  63967 => 'å±¥',
-  63968 => '易',
-  63969 => '李',
-  63970 => '梨',
-  63971 => 'æ³¥',
-  63972 => '理',
-  63973 => 'ç—¢',
-  63974 => 'ç½¹',
-  63975 => '裏',
-  63976 => '裡',
-  63977 => '里',
-  63978 => '離',
-  63979 => '匿',
-  63980 => '溺',
-  63981 => '吝',
-  63982 => '燐',
-  63983 => 'ç’˜',
-  63984 => 'è—º',
-  63985 => '隣',
-  63986 => 'é±—',
-  63987 => '麟',
-  63988 => 'æž—',
-  63989 => 'æ·‹',
-  63990 => '臨',
-  63991 => 'ç«‹',
-  63992 => '笠',
-  63993 => 'ç²’',
-  63994 => 'ç‹€',
-  63995 => 'ç‚™',
-  63996 => 'è­˜',
-  63997 => '什',
-  63998 => '茶',
-  63999 => '刺',
-  64000 => '切',
-  64001 => '度',
-  64002 => 'æ‹“',
-  64003 => 'ç³–',
-  64004 => 'å®…',
-  64005 => 'æ´ž',
-  64006 => 'æš´',
-  64007 => 'è¼»',
-  64008 => '行',
-  64009 => '降',
-  64010 => '見',
-  64011 => '廓',
-  64012 => 'å…€',
-  64013 => 'å—€',
-  64016 => 'å¡š',
-  64018 => 'æ™´',
-  64021 => '凞',
-  64022 => '猪',
-  64023 => '益',
-  64024 => '礼',
-  64025 => '神',
-  64026 => '祥',
-  64027 => '福',
-  64028 => '靖',
-  64029 => 'ç²¾',
-  64030 => 'ç¾½',
-  64032 => '蘒',
-  64034 => '諸',
-  64037 => '逸',
-  64038 => '都',
-  64042 => '飯',
-  64043 => '飼',
-  64044 => '館',
-  64045 => '鶴',
-  64046 => '郞',
-  64047 => 'éš·',
-  64048 => 'ä¾®',
-  64049 => '僧',
-  64050 => '免',
-  64051 => '勉',
-  64052 => '勤',
-  64053 => '卑',
-  64054 => '喝',
-  64055 => '嘆',
-  64056 => '器',
-  64057 => 'å¡€',
-  64058 => '墨',
-  64059 => '層',
-  64060 => 'å±®',
-  64061 => 'æ‚”',
-  64062 => 'æ…¨',
-  64063 => '憎',
-  64064 => '懲',
-  64065 => '敏',
-  64066 => 'æ—¢',
-  64067 => 'æš‘',
-  64068 => '梅',
-  64069 => 'æµ·',
-  64070 => '渚',
-  64071 => 'æ¼¢',
-  64072 => 'ç…®',
-  64073 => '爫',
-  64074 => '琢',
-  64075 => '碑',
-  64076 => '社',
-  64077 => '祉',
-  64078 => '祈',
-  64079 => '祐',
-  64080 => '祖',
-  64081 => '祝',
-  64082 => '禍',
-  64083 => '禎',
-  64084 => 'ç©€',
-  64085 => '突',
-  64086 => '節',
-  64087 => 'ç·´',
-  64088 => '縉',
-  64089 => '繁',
-  64090 => 'ç½²',
-  64091 => '者',
-  64092 => '臭',
-  64093 => '艹',
-  64094 => '艹',
-  64095 => 'è‘—',
-  64096 => '褐',
-  64097 => '視',
-  64098 => '謁',
-  64099 => '謹',
-  64100 => '賓',
-  64101 => 'è´ˆ',
-  64102 => '辶',
-  64103 => '逸',
-  64104 => '難',
-  64105 => '響',
-  64106 => 'é »',
-  64107 => '恵',
-  64108 => '𤋮',
-  64109 => '舘',
-  64112 => '並',
-  64113 => '况',
-  64114 => 'å…¨',
-  64115 => 'ä¾€',
-  64116 => 'å……',
-  64117 => '冀',
-  64118 => '勇',
-  64119 => '勺',
-  64120 => '喝',
-  64121 => 'å••',
-  64122 => 'å–™',
-  64123 => 'å—¢',
-  64124 => 'å¡š',
-  64125 => '墳',
-  64126 => '奄',
-  64127 => '奔',
-  64128 => 'å©¢',
-  64129 => '嬨',
-  64130 => 'å»’',
-  64131 => 'å»™',
-  64132 => '彩',
-  64133 => 'å¾­',
-  64134 => '惘',
-  64135 => 'æ…Ž',
-  64136 => '愈',
-  64137 => '憎',
-  64138 => 'æ… ',
-  64139 => '懲',
-  64140 => '戴',
-  64141 => '揄',
-  64142 => '搜',
-  64143 => 'æ‘’',
-  64144 => 'æ•–',
-  64145 => 'æ™´',
-  64146 => '朗',
-  64147 => '望',
-  64148 => '杖',
-  64149 => 'æ­¹',
-  64150 => '殺',
-  64151 => '流',
-  64152 => 'æ»›',
-  64153 => '滋',
-  64154 => 'æ¼¢',
-  64155 => '瀞',
-  64156 => 'ç…®',
-  64157 => '瞧',
-  64158 => '爵',
-  64159 => '犯',
-  64160 => '猪',
-  64161 => '瑱',
-  64162 => '甆',
-  64163 => 'ç”»',
-  64164 => '瘝',
-  64165 => '瘟',
-  64166 => '益',
-  64167 => 'ç››',
-  64168 => 'ç›´',
-  64169 => '睊',
-  64170 => '着',
-  64171 => '磌',
-  64172 => '窱',
-  64173 => '節',
-  64174 => 'ç±»',
-  64175 => 'çµ›',
-  64176 => 'ç·´',
-  64177 => 'ç¼¾',
-  64178 => '者',
-  64179 => '荒',
-  64180 => '華',
-  64181 => '蝹',
-  64182 => '襁',
-  64183 => '覆',
-  64184 => '視',
-  64185 => '調',
-  64186 => '諸',
-  64187 => 'è«‹',
-  64188 => '謁',
-  64189 => '諾',
-  64190 => 'è«­',
-  64191 => '謹',
-  64192 => '變',
-  64193 => 'è´ˆ',
-  64194 => '輸',
-  64195 => '遲',
-  64196 => '醙',
-  64197 => '鉶',
-  64198 => '陼',
-  64199 => '難',
-  64200 => '靖',
-  64201 => '韛',
-  64202 => '響',
-  64203 => 'é ‹',
-  64204 => 'é »',
-  64205 => '鬒',
-  64206 => '龜',
-  64207 => '𢡊',
-  64208 => '𢡄',
-  64209 => '𣏕',
-  64210 => '㮝',
-  64211 => '䀘',
-  64212 => '䀹',
-  64213 => '𥉉',
-  64214 => '𥳐',
-  64215 => '𧻓',
-  64216 => '齃',
-  64217 => '龎',
-  64256 => 'ff',
-  64257 => 'fi',
-  64258 => 'fl',
-  64259 => 'ffi',
-  64260 => 'ffl',
-  64261 => 'st',
-  64262 => 'st',
-  64275 => 'Õ´Õ¶',
-  64276 => 'Õ´Õ¥',
-  64277 => 'Õ´Õ«',
-  64278 => 'Õ¾Õ¶',
-  64279 => 'Õ´Õ­',
-  64285 => '×™Ö´',
-  64287 => 'ײַ',
-  64288 => '×¢',
-  64289 => 'א',
-  64290 => 'ד',
-  64291 => '×”',
-  64292 => '×›',
-  64293 => 'ל',
-  64294 => 'ם',
-  64295 => 'ר',
-  64296 => 'ת',
-  64298 => 'שׁ',
-  64299 => 'שׂ',
-  64300 => 'שּׁ',
-  64301 => 'שּׂ',
-  64302 => 'אַ',
-  64303 => 'אָ',
-  64304 => 'אּ',
-  64305 => 'בּ',
-  64306 => '×’Ö¼',
-  64307 => 'דּ',
-  64308 => '×”Ö¼',
-  64309 => 'וּ',
-  64310 => '×–Ö¼',
-  64312 => 'טּ',
-  64313 => '×™Ö¼',
-  64314 => 'ךּ',
-  64315 => '×›Ö¼',
-  64316 => 'לּ',
-  64318 => 'מּ',
-  64320 => '× Ö¼',
-  64321 => 'סּ',
-  64323 => '×£Ö¼',
-  64324 => 'פּ',
-  64326 => 'צּ',
-  64327 => 'קּ',
-  64328 => 'רּ',
-  64329 => 'שּ',
-  64330 => 'תּ',
-  64331 => 'וֹ',
-  64332 => 'בֿ',
-  64333 => '×›Ö¿',
-  64334 => 'פֿ',
-  64335 => 'אל',
-  64336 => 'Ù±',
-  64337 => 'Ù±',
-  64338 => 'Ù»',
-  64339 => 'Ù»',
-  64340 => 'Ù»',
-  64341 => 'Ù»',
-  64342 => 'Ù¾',
-  64343 => 'Ù¾',
-  64344 => 'Ù¾',
-  64345 => 'Ù¾',
-  64346 => 'Ú€',
-  64347 => 'Ú€',
-  64348 => 'Ú€',
-  64349 => 'Ú€',
-  64350 => 'Ùº',
-  64351 => 'Ùº',
-  64352 => 'Ùº',
-  64353 => 'Ùº',
-  64354 => 'Ù¿',
-  64355 => 'Ù¿',
-  64356 => 'Ù¿',
-  64357 => 'Ù¿',
-  64358 => 'Ù¹',
-  64359 => 'Ù¹',
-  64360 => 'Ù¹',
-  64361 => 'Ù¹',
-  64362 => 'Ú¤',
-  64363 => 'Ú¤',
-  64364 => 'Ú¤',
-  64365 => 'Ú¤',
-  64366 => 'Ú¦',
-  64367 => 'Ú¦',
-  64368 => 'Ú¦',
-  64369 => 'Ú¦',
-  64370 => 'Ú„',
-  64371 => 'Ú„',
-  64372 => 'Ú„',
-  64373 => 'Ú„',
-  64374 => 'Úƒ',
-  64375 => 'Úƒ',
-  64376 => 'Úƒ',
-  64377 => 'Úƒ',
-  64378 => 'Ú†',
-  64379 => 'Ú†',
-  64380 => 'Ú†',
-  64381 => 'Ú†',
-  64382 => 'Ú‡',
-  64383 => 'Ú‡',
-  64384 => 'Ú‡',
-  64385 => 'Ú‡',
-  64386 => 'ڍ',
-  64387 => 'ڍ',
-  64388 => 'ڌ',
-  64389 => 'ڌ',
-  64390 => 'ÚŽ',
-  64391 => 'ÚŽ',
-  64392 => 'Úˆ',
-  64393 => 'Úˆ',
-  64394 => 'Ú˜',
-  64395 => 'Ú˜',
-  64396 => 'Ú‘',
-  64397 => 'Ú‘',
-  64398 => 'Ú©',
-  64399 => 'Ú©',
-  64400 => 'Ú©',
-  64401 => 'Ú©',
-  64402 => 'Ú¯',
-  64403 => 'Ú¯',
-  64404 => 'Ú¯',
-  64405 => 'Ú¯',
-  64406 => 'Ú³',
-  64407 => 'Ú³',
-  64408 => 'Ú³',
-  64409 => 'Ú³',
-  64410 => 'Ú±',
-  64411 => 'Ú±',
-  64412 => 'Ú±',
-  64413 => 'Ú±',
-  64414 => 'Úº',
-  64415 => 'Úº',
-  64416 => 'Ú»',
-  64417 => 'Ú»',
-  64418 => 'Ú»',
-  64419 => 'Ú»',
-  64420 => 'Û€',
-  64421 => 'Û€',
-  64422 => 'ہ',
-  64423 => 'ہ',
-  64424 => 'ہ',
-  64425 => 'ہ',
-  64426 => 'Ú¾',
-  64427 => 'Ú¾',
-  64428 => 'Ú¾',
-  64429 => 'Ú¾',
-  64430 => 'Û’',
-  64431 => 'Û’',
-  64432 => 'Û“',
-  64433 => 'Û“',
-  64467 => 'Ú­',
-  64468 => 'Ú­',
-  64469 => 'Ú­',
-  64470 => 'Ú­',
-  64471 => 'Û‡',
-  64472 => 'Û‡',
-  64473 => 'Û†',
-  64474 => 'Û†',
-  64475 => 'Ûˆ',
-  64476 => 'Ûˆ',
-  64477 => 'Û‡Ù´',
-  64478 => 'Û‹',
-  64479 => 'Û‹',
-  64480 => 'Û…',
-  64481 => 'Û…',
-  64482 => 'Û‰',
-  64483 => 'Û‰',
-  64484 => 'ې',
-  64485 => 'ې',
-  64486 => 'ې',
-  64487 => 'ې',
-  64488 => 'Ù‰',
-  64489 => 'Ù‰',
-  64490 => 'ئا',
-  64491 => 'ئا',
-  64492 => 'ئە',
-  64493 => 'ئە',
-  64494 => 'ئو',
-  64495 => 'ئو',
-  64496 => 'ئۇ',
-  64497 => 'ئۇ',
-  64498 => 'ئۆ',
-  64499 => 'ئۆ',
-  64500 => 'ئۈ',
-  64501 => 'ئۈ',
-  64502 => 'ئې',
-  64503 => 'ئې',
-  64504 => 'ئې',
-  64505 => 'ئى',
-  64506 => 'ئى',
-  64507 => 'ئى',
-  64508 => 'ی',
-  64509 => 'ی',
-  64510 => 'ی',
-  64511 => 'ی',
-  64512 => 'ئج',
-  64513 => 'ئح',
-  64514 => 'ئم',
-  64515 => 'ئى',
-  64516 => 'ئي',
-  64517 => 'بج',
-  64518 => 'بح',
-  64519 => 'بخ',
-  64520 => 'بم',
-  64521 => 'بى',
-  64522 => 'بي',
-  64523 => 'تج',
-  64524 => 'تح',
-  64525 => 'تخ',
-  64526 => 'تم',
-  64527 => 'تى',
-  64528 => 'تي',
-  64529 => 'ثج',
-  64530 => 'ثم',
-  64531 => 'ثى',
-  64532 => 'ثي',
-  64533 => 'جح',
-  64534 => 'جم',
-  64535 => 'حج',
-  64536 => 'حم',
-  64537 => 'خج',
-  64538 => 'خح',
-  64539 => 'خم',
-  64540 => 'سج',
-  64541 => 'سح',
-  64542 => 'سخ',
-  64543 => 'سم',
-  64544 => 'صح',
-  64545 => 'صم',
-  64546 => 'ضج',
-  64547 => 'ضح',
-  64548 => 'ضخ',
-  64549 => 'ضم',
-  64550 => 'طح',
-  64551 => 'طم',
-  64552 => 'ظم',
-  64553 => 'عج',
-  64554 => 'عم',
-  64555 => 'غج',
-  64556 => 'غم',
-  64557 => 'فج',
-  64558 => 'فح',
-  64559 => 'فخ',
-  64560 => 'فم',
-  64561 => 'فى',
-  64562 => 'في',
-  64563 => 'قح',
-  64564 => 'قم',
-  64565 => 'قى',
-  64566 => 'قي',
-  64567 => 'كا',
-  64568 => 'كج',
-  64569 => 'كح',
-  64570 => 'كخ',
-  64571 => 'كل',
-  64572 => 'كم',
-  64573 => 'كى',
-  64574 => 'كي',
-  64575 => 'لج',
-  64576 => 'لح',
-  64577 => 'لخ',
-  64578 => 'لم',
-  64579 => 'لى',
-  64580 => 'لي',
-  64581 => 'مج',
-  64582 => 'مح',
-  64583 => 'مخ',
-  64584 => 'مم',
-  64585 => 'مى',
-  64586 => 'مي',
-  64587 => 'نج',
-  64588 => 'نح',
-  64589 => 'نخ',
-  64590 => 'نم',
-  64591 => 'نى',
-  64592 => 'ني',
-  64593 => 'هج',
-  64594 => 'هم',
-  64595 => 'هى',
-  64596 => 'هي',
-  64597 => 'يج',
-  64598 => 'يح',
-  64599 => 'يخ',
-  64600 => 'يم',
-  64601 => 'يى',
-  64602 => 'يي',
-  64603 => 'ذٰ',
-  64604 => 'رٰ',
-  64605 => 'ىٰ',
-  64612 => 'ئر',
-  64613 => 'ئز',
-  64614 => 'ئم',
-  64615 => 'ئن',
-  64616 => 'ئى',
-  64617 => 'ئي',
-  64618 => 'بر',
-  64619 => 'بز',
-  64620 => 'بم',
-  64621 => 'بن',
-  64622 => 'بى',
-  64623 => 'بي',
-  64624 => 'تر',
-  64625 => 'تز',
-  64626 => 'تم',
-  64627 => 'تن',
-  64628 => 'تى',
-  64629 => 'تي',
-  64630 => 'ثر',
-  64631 => 'ثز',
-  64632 => 'ثم',
-  64633 => 'ثن',
-  64634 => 'ثى',
-  64635 => 'ثي',
-  64636 => 'فى',
-  64637 => 'في',
-  64638 => 'قى',
-  64639 => 'قي',
-  64640 => 'كا',
-  64641 => 'كل',
-  64642 => 'كم',
-  64643 => 'كى',
-  64644 => 'كي',
-  64645 => 'لم',
-  64646 => 'لى',
-  64647 => 'لي',
-  64648 => 'ما',
-  64649 => 'مم',
-  64650 => 'نر',
-  64651 => 'نز',
-  64652 => 'نم',
-  64653 => 'نن',
-  64654 => 'نى',
-  64655 => 'ني',
-  64656 => 'ىٰ',
-  64657 => 'ير',
-  64658 => 'يز',
-  64659 => 'يم',
-  64660 => 'ين',
-  64661 => 'يى',
-  64662 => 'يي',
-  64663 => 'ئج',
-  64664 => 'ئح',
-  64665 => 'ئخ',
-  64666 => 'ئم',
-  64667 => 'ئه',
-  64668 => 'بج',
-  64669 => 'بح',
-  64670 => 'بخ',
-  64671 => 'بم',
-  64672 => 'به',
-  64673 => 'تج',
-  64674 => 'تح',
-  64675 => 'تخ',
-  64676 => 'تم',
-  64677 => 'ته',
-  64678 => 'ثم',
-  64679 => 'جح',
-  64680 => 'جم',
-  64681 => 'حج',
-  64682 => 'حم',
-  64683 => 'خج',
-  64684 => 'خم',
-  64685 => 'سج',
-  64686 => 'سح',
-  64687 => 'سخ',
-  64688 => 'سم',
-  64689 => 'صح',
-  64690 => 'صخ',
-  64691 => 'صم',
-  64692 => 'ضج',
-  64693 => 'ضح',
-  64694 => 'ضخ',
-  64695 => 'ضم',
-  64696 => 'طح',
-  64697 => 'ظم',
-  64698 => 'عج',
-  64699 => 'عم',
-  64700 => 'غج',
-  64701 => 'غم',
-  64702 => 'فج',
-  64703 => 'فح',
-  64704 => 'فخ',
-  64705 => 'فم',
-  64706 => 'قح',
-  64707 => 'قم',
-  64708 => 'كج',
-  64709 => 'كح',
-  64710 => 'كخ',
-  64711 => 'كل',
-  64712 => 'كم',
-  64713 => 'لج',
-  64714 => 'لح',
-  64715 => 'لخ',
-  64716 => 'لم',
-  64717 => 'له',
-  64718 => 'مج',
-  64719 => 'مح',
-  64720 => 'مخ',
-  64721 => 'مم',
-  64722 => 'نج',
-  64723 => 'نح',
-  64724 => 'نخ',
-  64725 => 'نم',
-  64726 => 'نه',
-  64727 => 'هج',
-  64728 => 'هم',
-  64729 => 'هٰ',
-  64730 => 'يج',
-  64731 => 'يح',
-  64732 => 'يخ',
-  64733 => 'يم',
-  64734 => 'يه',
-  64735 => 'ئم',
-  64736 => 'ئه',
-  64737 => 'بم',
-  64738 => 'به',
-  64739 => 'تم',
-  64740 => 'ته',
-  64741 => 'ثم',
-  64742 => 'ثه',
-  64743 => 'سم',
-  64744 => 'سه',
-  64745 => 'شم',
-  64746 => 'شه',
-  64747 => 'كل',
-  64748 => 'كم',
-  64749 => 'لم',
-  64750 => 'نم',
-  64751 => 'نه',
-  64752 => 'يم',
-  64753 => 'يه',
-  64754 => 'Ù€ÙŽÙ‘',
-  64755 => 'ـُّ',
-  64756 => 'ـِّ',
-  64757 => 'طى',
-  64758 => 'طي',
-  64759 => 'عى',
-  64760 => 'عي',
-  64761 => 'غى',
-  64762 => 'غي',
-  64763 => 'سى',
-  64764 => 'سي',
-  64765 => 'شى',
-  64766 => 'شي',
-  64767 => 'حى',
-  64768 => 'حي',
-  64769 => 'جى',
-  64770 => 'جي',
-  64771 => 'خى',
-  64772 => 'خي',
-  64773 => 'صى',
-  64774 => 'صي',
-  64775 => 'ضى',
-  64776 => 'ضي',
-  64777 => 'شج',
-  64778 => 'شح',
-  64779 => 'شخ',
-  64780 => 'شم',
-  64781 => 'شر',
-  64782 => 'سر',
-  64783 => 'صر',
-  64784 => 'ضر',
-  64785 => 'طى',
-  64786 => 'طي',
-  64787 => 'عى',
-  64788 => 'عي',
-  64789 => 'غى',
-  64790 => 'غي',
-  64791 => 'سى',
-  64792 => 'سي',
-  64793 => 'شى',
-  64794 => 'شي',
-  64795 => 'حى',
-  64796 => 'حي',
-  64797 => 'جى',
-  64798 => 'جي',
-  64799 => 'خى',
-  64800 => 'خي',
-  64801 => 'صى',
-  64802 => 'صي',
-  64803 => 'ضى',
-  64804 => 'ضي',
-  64805 => 'شج',
-  64806 => 'شح',
-  64807 => 'شخ',
-  64808 => 'شم',
-  64809 => 'شر',
-  64810 => 'سر',
-  64811 => 'صر',
-  64812 => 'ضر',
-  64813 => 'شج',
-  64814 => 'شح',
-  64815 => 'شخ',
-  64816 => 'شم',
-  64817 => 'سه',
-  64818 => 'شه',
-  64819 => 'طم',
-  64820 => 'سج',
-  64821 => 'سح',
-  64822 => 'سخ',
-  64823 => 'شج',
-  64824 => 'شح',
-  64825 => 'شخ',
-  64826 => 'طم',
-  64827 => 'ظم',
-  64828 => 'اً',
-  64829 => 'اً',
-  64848 => 'تجم',
-  64849 => 'تحج',
-  64850 => 'تحج',
-  64851 => 'تحم',
-  64852 => 'تخم',
-  64853 => 'تمج',
-  64854 => 'تمح',
-  64855 => 'تمخ',
-  64856 => 'جمح',
-  64857 => 'جمح',
-  64858 => 'حمي',
-  64859 => 'حمى',
-  64860 => 'سحج',
-  64861 => 'سجح',
-  64862 => 'سجى',
-  64863 => 'سمح',
-  64864 => 'سمح',
-  64865 => 'سمج',
-  64866 => 'سمم',
-  64867 => 'سمم',
-  64868 => 'صحح',
-  64869 => 'صحح',
-  64870 => 'صمم',
-  64871 => 'شحم',
-  64872 => 'شحم',
-  64873 => 'شجي',
-  64874 => 'شمخ',
-  64875 => 'شمخ',
-  64876 => 'شمم',
-  64877 => 'شمم',
-  64878 => 'ضحى',
-  64879 => 'ضخم',
-  64880 => 'ضخم',
-  64881 => 'طمح',
-  64882 => 'طمح',
-  64883 => 'طمم',
-  64884 => 'طمي',
-  64885 => 'عجم',
-  64886 => 'عمم',
-  64887 => 'عمم',
-  64888 => 'عمى',
-  64889 => 'غمم',
-  64890 => 'غمي',
-  64891 => 'غمى',
-  64892 => 'فخم',
-  64893 => 'فخم',
-  64894 => 'قمح',
-  64895 => 'قمم',
-  64896 => 'لحم',
-  64897 => 'لحي',
-  64898 => 'لحى',
-  64899 => 'لجج',
-  64900 => 'لجج',
-  64901 => 'لخم',
-  64902 => 'لخم',
-  64903 => 'لمح',
-  64904 => 'لمح',
-  64905 => 'محج',
-  64906 => 'محم',
-  64907 => 'محي',
-  64908 => 'مجح',
-  64909 => 'مجم',
-  64910 => 'مخج',
-  64911 => 'مخم',
-  64914 => 'مجخ',
-  64915 => 'همج',
-  64916 => 'همم',
-  64917 => 'نحم',
-  64918 => 'نحى',
-  64919 => 'نجم',
-  64920 => 'نجم',
-  64921 => 'نجى',
-  64922 => 'نمي',
-  64923 => 'نمى',
-  64924 => 'يمم',
-  64925 => 'يمم',
-  64926 => 'بخي',
-  64927 => 'تجي',
-  64928 => 'تجى',
-  64929 => 'تخي',
-  64930 => 'تخى',
-  64931 => 'تمي',
-  64932 => 'تمى',
-  64933 => 'جمي',
-  64934 => 'جحى',
-  64935 => 'جمى',
-  64936 => 'سخى',
-  64937 => 'صحي',
-  64938 => 'شحي',
-  64939 => 'ضحي',
-  64940 => 'لجي',
-  64941 => 'لمي',
-  64942 => 'يحي',
-  64943 => 'يجي',
-  64944 => 'يمي',
-  64945 => 'ممي',
-  64946 => 'قمي',
-  64947 => 'نحي',
-  64948 => 'قمح',
-  64949 => 'لحم',
-  64950 => 'عمي',
-  64951 => 'كمي',
-  64952 => 'نجح',
-  64953 => 'مخي',
-  64954 => 'لجم',
-  64955 => 'كمم',
-  64956 => 'لجم',
-  64957 => 'نجح',
-  64958 => 'جحي',
-  64959 => 'حجي',
-  64960 => 'مجي',
-  64961 => 'فمي',
-  64962 => 'بحي',
-  64963 => 'كمم',
-  64964 => 'عجم',
-  64965 => 'صمم',
-  64966 => 'سخي',
-  64967 => 'نجي',
-  65008 => 'صلے',
-  65009 => 'قلے',
-  65010 => 'الله',
-  65011 => 'اكبر',
-  65012 => 'محمد',
-  65013 => 'صلعم',
-  65014 => 'رسول',
-  65015 => 'عليه',
-  65016 => 'وسلم',
-  65017 => 'صلى',
-  65020 => 'ریال',
-  65041 => '、',
-  65047 => '〖',
-  65048 => '〗',
-  65073 => '—',
-  65074 => '–',
-  65081 => '〔',
-  65082 => '〕',
-  65083 => '【',
-  65084 => '】',
-  65085 => '《',
-  65086 => '》',
-  65087 => '〈',
-  65088 => '〉',
-  65089 => '「',
-  65090 => '」',
-  65091 => '『',
-  65092 => '』',
-  65105 => '、',
-  65112 => '—',
-  65117 => '〔',
-  65118 => '〕',
-  65123 => '-',
-  65137 => 'ـً',
-  65143 => 'Ù€ÙŽ',
-  65145 => 'ـُ',
-  65147 => 'ـِ',
-  65149 => 'ـّ',
-  65151 => 'ـْ',
-  65152 => 'Ø¡',
-  65153 => 'Ø¢',
-  65154 => 'Ø¢',
-  65155 => 'Ø£',
-  65156 => 'Ø£',
-  65157 => 'ؤ',
-  65158 => 'ؤ',
-  65159 => 'Ø¥',
-  65160 => 'Ø¥',
-  65161 => 'ئ',
-  65162 => 'ئ',
-  65163 => 'ئ',
-  65164 => 'ئ',
-  65165 => 'ا',
-  65166 => 'ا',
-  65167 => 'ب',
-  65168 => 'ب',
-  65169 => 'ب',
-  65170 => 'ب',
-  65171 => 'Ø©',
-  65172 => 'Ø©',
-  65173 => 'ت',
-  65174 => 'ت',
-  65175 => 'ت',
-  65176 => 'ت',
-  65177 => 'Ø«',
-  65178 => 'Ø«',
-  65179 => 'Ø«',
-  65180 => 'Ø«',
-  65181 => 'ج',
-  65182 => 'ج',
-  65183 => 'ج',
-  65184 => 'ج',
-  65185 => 'Ø­',
-  65186 => 'Ø­',
-  65187 => 'Ø­',
-  65188 => 'Ø­',
-  65189 => 'Ø®',
-  65190 => 'Ø®',
-  65191 => 'Ø®',
-  65192 => 'Ø®',
-  65193 => 'د',
-  65194 => 'د',
-  65195 => 'Ø°',
-  65196 => 'Ø°',
-  65197 => 'ر',
-  65198 => 'ر',
-  65199 => 'ز',
-  65200 => 'ز',
-  65201 => 'س',
-  65202 => 'س',
-  65203 => 'س',
-  65204 => 'س',
-  65205 => 'Ø´',
-  65206 => 'Ø´',
-  65207 => 'Ø´',
-  65208 => 'Ø´',
-  65209 => 'ص',
-  65210 => 'ص',
-  65211 => 'ص',
-  65212 => 'ص',
-  65213 => 'ض',
-  65214 => 'ض',
-  65215 => 'ض',
-  65216 => 'ض',
-  65217 => 'Ø·',
-  65218 => 'Ø·',
-  65219 => 'Ø·',
-  65220 => 'Ø·',
-  65221 => 'ظ',
-  65222 => 'ظ',
-  65223 => 'ظ',
-  65224 => 'ظ',
-  65225 => 'ع',
-  65226 => 'ع',
-  65227 => 'ع',
-  65228 => 'ع',
-  65229 => 'غ',
-  65230 => 'غ',
-  65231 => 'غ',
-  65232 => 'غ',
-  65233 => 'ف',
-  65234 => 'ف',
-  65235 => 'ف',
-  65236 => 'ف',
-  65237 => 'Ù‚',
-  65238 => 'Ù‚',
-  65239 => 'Ù‚',
-  65240 => 'Ù‚',
-  65241 => 'Ùƒ',
-  65242 => 'Ùƒ',
-  65243 => 'Ùƒ',
-  65244 => 'Ùƒ',
-  65245 => 'Ù„',
-  65246 => 'Ù„',
-  65247 => 'Ù„',
-  65248 => 'Ù„',
-  65249 => 'Ù…',
-  65250 => 'Ù…',
-  65251 => 'Ù…',
-  65252 => 'Ù…',
-  65253 => 'Ù†',
-  65254 => 'Ù†',
-  65255 => 'Ù†',
-  65256 => 'Ù†',
-  65257 => 'Ù‡',
-  65258 => 'Ù‡',
-  65259 => 'Ù‡',
-  65260 => 'Ù‡',
-  65261 => 'Ùˆ',
-  65262 => 'Ùˆ',
-  65263 => 'Ù‰',
-  65264 => 'Ù‰',
-  65265 => 'ÙŠ',
-  65266 => 'ÙŠ',
-  65267 => 'ÙŠ',
-  65268 => 'ÙŠ',
-  65269 => 'لآ',
-  65270 => 'لآ',
-  65271 => 'لأ',
-  65272 => 'لأ',
-  65273 => 'لإ',
-  65274 => 'لإ',
-  65275 => 'لا',
-  65276 => 'لا',
-  65293 => '-',
-  65294 => '.',
-  65296 => '0',
-  65297 => '1',
-  65298 => '2',
-  65299 => '3',
-  65300 => '4',
-  65301 => '5',
-  65302 => '6',
-  65303 => '7',
-  65304 => '8',
-  65305 => '9',
-  65313 => 'a',
-  65314 => 'b',
-  65315 => 'c',
-  65316 => 'd',
-  65317 => 'e',
-  65318 => 'f',
-  65319 => 'g',
-  65320 => 'h',
-  65321 => 'i',
-  65322 => 'j',
-  65323 => 'k',
-  65324 => 'l',
-  65325 => 'm',
-  65326 => 'n',
-  65327 => 'o',
-  65328 => 'p',
-  65329 => 'q',
-  65330 => 'r',
-  65331 => 's',
-  65332 => 't',
-  65333 => 'u',
-  65334 => 'v',
-  65335 => 'w',
-  65336 => 'x',
-  65337 => 'y',
-  65338 => 'z',
-  65345 => 'a',
-  65346 => 'b',
-  65347 => 'c',
-  65348 => 'd',
-  65349 => 'e',
-  65350 => 'f',
-  65351 => 'g',
-  65352 => 'h',
-  65353 => 'i',
-  65354 => 'j',
-  65355 => 'k',
-  65356 => 'l',
-  65357 => 'm',
-  65358 => 'n',
-  65359 => 'o',
-  65360 => 'p',
-  65361 => 'q',
-  65362 => 'r',
-  65363 => 's',
-  65364 => 't',
-  65365 => 'u',
-  65366 => 'v',
-  65367 => 'w',
-  65368 => 'x',
-  65369 => 'y',
-  65370 => 'z',
-  65375 => '⦅',
-  65376 => '⦆',
-  65377 => '.',
-  65378 => '「',
-  65379 => '」',
-  65380 => '、',
-  65381 => '・',
-  65382 => 'ヲ',
-  65383 => 'ã‚¡',
-  65384 => 'ã‚£',
-  65385 => 'ã‚¥',
-  65386 => 'ェ',
-  65387 => 'ã‚©',
-  65388 => 'ャ',
-  65389 => 'ュ',
-  65390 => 'ョ',
-  65391 => 'ッ',
-  65392 => 'ー',
-  65393 => 'ã‚¢',
-  65394 => 'イ',
-  65395 => 'ウ',
-  65396 => 'エ',
-  65397 => 'オ',
-  65398 => 'ã‚«',
-  65399 => 'ã‚­',
-  65400 => 'ク',
-  65401 => 'ケ',
-  65402 => 'コ',
-  65403 => 'サ',
-  65404 => 'ã‚·',
-  65405 => 'ス',
-  65406 => 'ã‚»',
-  65407 => 'ソ',
-  65408 => 'ã‚¿',
-  65409 => 'チ',
-  65410 => 'ツ',
-  65411 => 'テ',
-  65412 => 'ト',
-  65413 => 'ナ',
-  65414 => 'ニ',
-  65415 => 'ヌ',
-  65416 => 'ネ',
-  65417 => 'ノ',
-  65418 => 'ハ',
-  65419 => 'ヒ',
-  65420 => 'フ',
-  65421 => 'ヘ',
-  65422 => 'ホ',
-  65423 => 'マ',
-  65424 => 'ミ',
-  65425 => 'ム',
-  65426 => 'メ',
-  65427 => 'モ',
-  65428 => 'ヤ',
-  65429 => 'ユ',
-  65430 => 'ヨ',
-  65431 => 'ラ',
-  65432 => 'リ',
-  65433 => 'ル',
-  65434 => 'レ',
-  65435 => 'ロ',
-  65436 => 'ワ',
-  65437 => 'ン',
-  65438 => 'ã‚™',
-  65439 => 'ã‚š',
-  65441 => 'á„€',
-  65442 => 'ᄁ',
-  65443 => 'ᆪ',
-  65444 => 'á„‚',
-  65445 => 'ᆬ',
-  65446 => 'ᆭ',
-  65447 => 'ᄃ',
-  65448 => 'á„„',
-  65449 => 'á„…',
-  65450 => 'ᆰ',
-  65451 => 'ᆱ',
-  65452 => 'ᆲ',
-  65453 => 'ᆳ',
-  65454 => 'ᆴ',
-  65455 => 'ᆵ',
-  65456 => 'á„š',
-  65457 => 'ᄆ',
-  65458 => 'ᄇ',
-  65459 => 'ᄈ',
-  65460 => 'á„¡',
-  65461 => 'ᄉ',
-  65462 => 'á„Š',
-  65463 => 'á„‹',
-  65464 => 'ᄌ',
-  65465 => 'ᄍ',
-  65466 => 'á„Ž',
-  65467 => 'ᄏ',
-  65468 => 'ᄐ',
-  65469 => 'á„‘',
-  65470 => 'á„’',
-  65474 => 'á…¡',
-  65475 => 'á…¢',
-  65476 => 'á…£',
-  65477 => 'á…¤',
-  65478 => 'á…¥',
-  65479 => 'á…¦',
-  65482 => 'á…§',
-  65483 => 'á…¨',
-  65484 => 'á…©',
-  65485 => 'á…ª',
-  65486 => 'á…«',
-  65487 => 'á…¬',
-  65490 => 'á…­',
-  65491 => 'á…®',
-  65492 => 'á…¯',
-  65493 => 'á…°',
-  65494 => 'á…±',
-  65495 => 'á…²',
-  65498 => 'á…³',
-  65499 => 'á…´',
-  65500 => 'á…µ',
-  65504 => '¢',
-  65505 => '£',
-  65506 => '¬',
-  65508 => '¦',
-  65509 => 'Â¥',
-  65510 => 'â‚©',
-  65512 => '│',
-  65513 => '←',
-  65514 => '↑',
-  65515 => '→',
-  65516 => '↓',
-  65517 => 'â– ',
-  65518 => 'â—‹',
-  66560 => '𐐨',
-  66561 => '𐐩',
-  66562 => '𐐪',
-  66563 => '𐐫',
-  66564 => '𐐬',
-  66565 => '𐐭',
-  66566 => '𐐮',
-  66567 => '𐐯',
-  66568 => '𐐰',
-  66569 => '𐐱',
-  66570 => '𐐲',
-  66571 => '𐐳',
-  66572 => '𐐴',
-  66573 => '𐐵',
-  66574 => '𐐶',
-  66575 => '𐐷',
-  66576 => '𐐸',
-  66577 => '𐐹',
-  66578 => '𐐺',
-  66579 => '𐐻',
-  66580 => '𐐼',
-  66581 => '𐐽',
-  66582 => '𐐾',
-  66583 => '𐐿',
-  66584 => '𐑀',
-  66585 => '𐑁',
-  66586 => '𐑂',
-  66587 => '𐑃',
-  66588 => '𐑄',
-  66589 => '𐑅',
-  66590 => '𐑆',
-  66591 => '𐑇',
-  66592 => '𐑈',
-  66593 => '𐑉',
-  66594 => '𐑊',
-  66595 => '𐑋',
-  66596 => '𐑌',
-  66597 => '𐑍',
-  66598 => '𐑎',
-  66599 => '𐑏',
-  66736 => '𐓘',
-  66737 => '𐓙',
-  66738 => '𐓚',
-  66739 => '𐓛',
-  66740 => '𐓜',
-  66741 => '𐓝',
-  66742 => '𐓞',
-  66743 => '𐓟',
-  66744 => '𐓠',
-  66745 => '𐓡',
-  66746 => '𐓢',
-  66747 => '𐓣',
-  66748 => '𐓤',
-  66749 => '𐓥',
-  66750 => '𐓦',
-  66751 => '𐓧',
-  66752 => '𐓨',
-  66753 => '𐓩',
-  66754 => '𐓪',
-  66755 => '𐓫',
-  66756 => '𐓬',
-  66757 => '𐓭',
-  66758 => '𐓮',
-  66759 => '𐓯',
-  66760 => '𐓰',
-  66761 => '𐓱',
-  66762 => '𐓲',
-  66763 => '𐓳',
-  66764 => '𐓴',
-  66765 => '𐓵',
-  66766 => '𐓶',
-  66767 => '𐓷',
-  66768 => '𐓸',
-  66769 => '𐓹',
-  66770 => '𐓺',
-  66771 => '𐓻',
-  68736 => '𐳀',
-  68737 => '𐳁',
-  68738 => '𐳂',
-  68739 => '𐳃',
-  68740 => '𐳄',
-  68741 => '𐳅',
-  68742 => '𐳆',
-  68743 => '𐳇',
-  68744 => '𐳈',
-  68745 => '𐳉',
-  68746 => '𐳊',
-  68747 => '𐳋',
-  68748 => '𐳌',
-  68749 => '𐳍',
-  68750 => '𐳎',
-  68751 => '𐳏',
-  68752 => '𐳐',
-  68753 => '𐳑',
-  68754 => '𐳒',
-  68755 => '𐳓',
-  68756 => '𐳔',
-  68757 => '𐳕',
-  68758 => '𐳖',
-  68759 => '𐳗',
-  68760 => '𐳘',
-  68761 => '𐳙',
-  68762 => '𐳚',
-  68763 => '𐳛',
-  68764 => '𐳜',
-  68765 => '𐳝',
-  68766 => '𐳞',
-  68767 => '𐳟',
-  68768 => '𐳠',
-  68769 => '𐳡',
-  68770 => '𐳢',
-  68771 => '𐳣',
-  68772 => '𐳤',
-  68773 => '𐳥',
-  68774 => '𐳦',
-  68775 => '𐳧',
-  68776 => '𐳨',
-  68777 => '𐳩',
-  68778 => '𐳪',
-  68779 => '𐳫',
-  68780 => '𐳬',
-  68781 => '𐳭',
-  68782 => '𐳮',
-  68783 => '𐳯',
-  68784 => '𐳰',
-  68785 => '𐳱',
-  68786 => '𐳲',
-  71840 => 'ð‘£€',
-  71841 => '𑣁',
-  71842 => '𑣂',
-  71843 => '𑣃',
-  71844 => '𑣄',
-  71845 => 'ð‘£…',
-  71846 => '𑣆',
-  71847 => '𑣇',
-  71848 => '𑣈',
-  71849 => '𑣉',
-  71850 => '𑣊',
-  71851 => '𑣋',
-  71852 => '𑣌',
-  71853 => '𑣍',
-  71854 => '𑣎',
-  71855 => '𑣏',
-  71856 => '𑣐',
-  71857 => '𑣑',
-  71858 => 'ð‘£’',
-  71859 => '𑣓',
-  71860 => 'ð‘£”',
-  71861 => '𑣕',
-  71862 => 'ð‘£–',
-  71863 => 'ð‘£—',
-  71864 => '𑣘',
-  71865 => 'ð‘£™',
-  71866 => '𑣚',
-  71867 => 'ð‘£›',
-  71868 => '𑣜',
-  71869 => '𑣝',
-  71870 => '𑣞',
-  71871 => '𑣟',
-  93760 => 'ð–¹ ',
-  93761 => '𖹡',
-  93762 => 'ð–¹¢',
-  93763 => 'ð–¹£',
-  93764 => '𖹤',
-  93765 => 'ð–¹¥',
-  93766 => '𖹦',
-  93767 => '𖹧',
-  93768 => '𖹨',
-  93769 => '𖹩',
-  93770 => '𖹪',
-  93771 => '𖹫',
-  93772 => '𖹬',
-  93773 => 'ð–¹­',
-  93774 => 'ð–¹®',
-  93775 => '𖹯',
-  93776 => 'ð–¹°',
-  93777 => 'ð–¹±',
-  93778 => 'ð–¹²',
-  93779 => 'ð–¹³',
-  93780 => 'ð–¹´',
-  93781 => 'ð–¹µ',
-  93782 => '𖹶',
-  93783 => 'ð–¹·',
-  93784 => '𖹸',
-  93785 => 'ð–¹¹',
-  93786 => '𖹺',
-  93787 => 'ð–¹»',
-  93788 => 'ð–¹¼',
-  93789 => 'ð–¹½',
-  93790 => 'ð–¹¾',
-  93791 => '𖹿',
-  119134 => '𝅗𝅥',
-  119135 => '𝅘𝅥',
-  119136 => '𝅘𝅥𝅮',
-  119137 => '𝅘𝅥𝅯',
-  119138 => '𝅘𝅥𝅰',
-  119139 => '𝅘𝅥𝅱',
-  119140 => '𝅘𝅥𝅲',
-  119227 => '𝆹𝅥',
-  119228 => '𝆺𝅥',
-  119229 => '𝆹𝅥𝅮',
-  119230 => '𝆺𝅥𝅮',
-  119231 => '𝆹𝅥𝅯',
-  119232 => '𝆺𝅥𝅯',
-  119808 => 'a',
-  119809 => 'b',
-  119810 => 'c',
-  119811 => 'd',
-  119812 => 'e',
-  119813 => 'f',
-  119814 => 'g',
-  119815 => 'h',
-  119816 => 'i',
-  119817 => 'j',
-  119818 => 'k',
-  119819 => 'l',
-  119820 => 'm',
-  119821 => 'n',
-  119822 => 'o',
-  119823 => 'p',
-  119824 => 'q',
-  119825 => 'r',
-  119826 => 's',
-  119827 => 't',
-  119828 => 'u',
-  119829 => 'v',
-  119830 => 'w',
-  119831 => 'x',
-  119832 => 'y',
-  119833 => 'z',
-  119834 => 'a',
-  119835 => 'b',
-  119836 => 'c',
-  119837 => 'd',
-  119838 => 'e',
-  119839 => 'f',
-  119840 => 'g',
-  119841 => 'h',
-  119842 => 'i',
-  119843 => 'j',
-  119844 => 'k',
-  119845 => 'l',
-  119846 => 'm',
-  119847 => 'n',
-  119848 => 'o',
-  119849 => 'p',
-  119850 => 'q',
-  119851 => 'r',
-  119852 => 's',
-  119853 => 't',
-  119854 => 'u',
-  119855 => 'v',
-  119856 => 'w',
-  119857 => 'x',
-  119858 => 'y',
-  119859 => 'z',
-  119860 => 'a',
-  119861 => 'b',
-  119862 => 'c',
-  119863 => 'd',
-  119864 => 'e',
-  119865 => 'f',
-  119866 => 'g',
-  119867 => 'h',
-  119868 => 'i',
-  119869 => 'j',
-  119870 => 'k',
-  119871 => 'l',
-  119872 => 'm',
-  119873 => 'n',
-  119874 => 'o',
-  119875 => 'p',
-  119876 => 'q',
-  119877 => 'r',
-  119878 => 's',
-  119879 => 't',
-  119880 => 'u',
-  119881 => 'v',
-  119882 => 'w',
-  119883 => 'x',
-  119884 => 'y',
-  119885 => 'z',
-  119886 => 'a',
-  119887 => 'b',
-  119888 => 'c',
-  119889 => 'd',
-  119890 => 'e',
-  119891 => 'f',
-  119892 => 'g',
-  119894 => 'i',
-  119895 => 'j',
-  119896 => 'k',
-  119897 => 'l',
-  119898 => 'm',
-  119899 => 'n',
-  119900 => 'o',
-  119901 => 'p',
-  119902 => 'q',
-  119903 => 'r',
-  119904 => 's',
-  119905 => 't',
-  119906 => 'u',
-  119907 => 'v',
-  119908 => 'w',
-  119909 => 'x',
-  119910 => 'y',
-  119911 => 'z',
-  119912 => 'a',
-  119913 => 'b',
-  119914 => 'c',
-  119915 => 'd',
-  119916 => 'e',
-  119917 => 'f',
-  119918 => 'g',
-  119919 => 'h',
-  119920 => 'i',
-  119921 => 'j',
-  119922 => 'k',
-  119923 => 'l',
-  119924 => 'm',
-  119925 => 'n',
-  119926 => 'o',
-  119927 => 'p',
-  119928 => 'q',
-  119929 => 'r',
-  119930 => 's',
-  119931 => 't',
-  119932 => 'u',
-  119933 => 'v',
-  119934 => 'w',
-  119935 => 'x',
-  119936 => 'y',
-  119937 => 'z',
-  119938 => 'a',
-  119939 => 'b',
-  119940 => 'c',
-  119941 => 'd',
-  119942 => 'e',
-  119943 => 'f',
-  119944 => 'g',
-  119945 => 'h',
-  119946 => 'i',
-  119947 => 'j',
-  119948 => 'k',
-  119949 => 'l',
-  119950 => 'm',
-  119951 => 'n',
-  119952 => 'o',
-  119953 => 'p',
-  119954 => 'q',
-  119955 => 'r',
-  119956 => 's',
-  119957 => 't',
-  119958 => 'u',
-  119959 => 'v',
-  119960 => 'w',
-  119961 => 'x',
-  119962 => 'y',
-  119963 => 'z',
-  119964 => 'a',
-  119966 => 'c',
-  119967 => 'd',
-  119970 => 'g',
-  119973 => 'j',
-  119974 => 'k',
-  119977 => 'n',
-  119978 => 'o',
-  119979 => 'p',
-  119980 => 'q',
-  119982 => 's',
-  119983 => 't',
-  119984 => 'u',
-  119985 => 'v',
-  119986 => 'w',
-  119987 => 'x',
-  119988 => 'y',
-  119989 => 'z',
-  119990 => 'a',
-  119991 => 'b',
-  119992 => 'c',
-  119993 => 'd',
-  119995 => 'f',
-  119997 => 'h',
-  119998 => 'i',
-  119999 => 'j',
-  120000 => 'k',
-  120001 => 'l',
-  120002 => 'm',
-  120003 => 'n',
-  120005 => 'p',
-  120006 => 'q',
-  120007 => 'r',
-  120008 => 's',
-  120009 => 't',
-  120010 => 'u',
-  120011 => 'v',
-  120012 => 'w',
-  120013 => 'x',
-  120014 => 'y',
-  120015 => 'z',
-  120016 => 'a',
-  120017 => 'b',
-  120018 => 'c',
-  120019 => 'd',
-  120020 => 'e',
-  120021 => 'f',
-  120022 => 'g',
-  120023 => 'h',
-  120024 => 'i',
-  120025 => 'j',
-  120026 => 'k',
-  120027 => 'l',
-  120028 => 'm',
-  120029 => 'n',
-  120030 => 'o',
-  120031 => 'p',
-  120032 => 'q',
-  120033 => 'r',
-  120034 => 's',
-  120035 => 't',
-  120036 => 'u',
-  120037 => 'v',
-  120038 => 'w',
-  120039 => 'x',
-  120040 => 'y',
-  120041 => 'z',
-  120042 => 'a',
-  120043 => 'b',
-  120044 => 'c',
-  120045 => 'd',
-  120046 => 'e',
-  120047 => 'f',
-  120048 => 'g',
-  120049 => 'h',
-  120050 => 'i',
-  120051 => 'j',
-  120052 => 'k',
-  120053 => 'l',
-  120054 => 'm',
-  120055 => 'n',
-  120056 => 'o',
-  120057 => 'p',
-  120058 => 'q',
-  120059 => 'r',
-  120060 => 's',
-  120061 => 't',
-  120062 => 'u',
-  120063 => 'v',
-  120064 => 'w',
-  120065 => 'x',
-  120066 => 'y',
-  120067 => 'z',
-  120068 => 'a',
-  120069 => 'b',
-  120071 => 'd',
-  120072 => 'e',
-  120073 => 'f',
-  120074 => 'g',
-  120077 => 'j',
-  120078 => 'k',
-  120079 => 'l',
-  120080 => 'm',
-  120081 => 'n',
-  120082 => 'o',
-  120083 => 'p',
-  120084 => 'q',
-  120086 => 's',
-  120087 => 't',
-  120088 => 'u',
-  120089 => 'v',
-  120090 => 'w',
-  120091 => 'x',
-  120092 => 'y',
-  120094 => 'a',
-  120095 => 'b',
-  120096 => 'c',
-  120097 => 'd',
-  120098 => 'e',
-  120099 => 'f',
-  120100 => 'g',
-  120101 => 'h',
-  120102 => 'i',
-  120103 => 'j',
-  120104 => 'k',
-  120105 => 'l',
-  120106 => 'm',
-  120107 => 'n',
-  120108 => 'o',
-  120109 => 'p',
-  120110 => 'q',
-  120111 => 'r',
-  120112 => 's',
-  120113 => 't',
-  120114 => 'u',
-  120115 => 'v',
-  120116 => 'w',
-  120117 => 'x',
-  120118 => 'y',
-  120119 => 'z',
-  120120 => 'a',
-  120121 => 'b',
-  120123 => 'd',
-  120124 => 'e',
-  120125 => 'f',
-  120126 => 'g',
-  120128 => 'i',
-  120129 => 'j',
-  120130 => 'k',
-  120131 => 'l',
-  120132 => 'm',
-  120134 => 'o',
-  120138 => 's',
-  120139 => 't',
-  120140 => 'u',
-  120141 => 'v',
-  120142 => 'w',
-  120143 => 'x',
-  120144 => 'y',
-  120146 => 'a',
-  120147 => 'b',
-  120148 => 'c',
-  120149 => 'd',
-  120150 => 'e',
-  120151 => 'f',
-  120152 => 'g',
-  120153 => 'h',
-  120154 => 'i',
-  120155 => 'j',
-  120156 => 'k',
-  120157 => 'l',
-  120158 => 'm',
-  120159 => 'n',
-  120160 => 'o',
-  120161 => 'p',
-  120162 => 'q',
-  120163 => 'r',
-  120164 => 's',
-  120165 => 't',
-  120166 => 'u',
-  120167 => 'v',
-  120168 => 'w',
-  120169 => 'x',
-  120170 => 'y',
-  120171 => 'z',
-  120172 => 'a',
-  120173 => 'b',
-  120174 => 'c',
-  120175 => 'd',
-  120176 => 'e',
-  120177 => 'f',
-  120178 => 'g',
-  120179 => 'h',
-  120180 => 'i',
-  120181 => 'j',
-  120182 => 'k',
-  120183 => 'l',
-  120184 => 'm',
-  120185 => 'n',
-  120186 => 'o',
-  120187 => 'p',
-  120188 => 'q',
-  120189 => 'r',
-  120190 => 's',
-  120191 => 't',
-  120192 => 'u',
-  120193 => 'v',
-  120194 => 'w',
-  120195 => 'x',
-  120196 => 'y',
-  120197 => 'z',
-  120198 => 'a',
-  120199 => 'b',
-  120200 => 'c',
-  120201 => 'd',
-  120202 => 'e',
-  120203 => 'f',
-  120204 => 'g',
-  120205 => 'h',
-  120206 => 'i',
-  120207 => 'j',
-  120208 => 'k',
-  120209 => 'l',
-  120210 => 'm',
-  120211 => 'n',
-  120212 => 'o',
-  120213 => 'p',
-  120214 => 'q',
-  120215 => 'r',
-  120216 => 's',
-  120217 => 't',
-  120218 => 'u',
-  120219 => 'v',
-  120220 => 'w',
-  120221 => 'x',
-  120222 => 'y',
-  120223 => 'z',
-  120224 => 'a',
-  120225 => 'b',
-  120226 => 'c',
-  120227 => 'd',
-  120228 => 'e',
-  120229 => 'f',
-  120230 => 'g',
-  120231 => 'h',
-  120232 => 'i',
-  120233 => 'j',
-  120234 => 'k',
-  120235 => 'l',
-  120236 => 'm',
-  120237 => 'n',
-  120238 => 'o',
-  120239 => 'p',
-  120240 => 'q',
-  120241 => 'r',
-  120242 => 's',
-  120243 => 't',
-  120244 => 'u',
-  120245 => 'v',
-  120246 => 'w',
-  120247 => 'x',
-  120248 => 'y',
-  120249 => 'z',
-  120250 => 'a',
-  120251 => 'b',
-  120252 => 'c',
-  120253 => 'd',
-  120254 => 'e',
-  120255 => 'f',
-  120256 => 'g',
-  120257 => 'h',
-  120258 => 'i',
-  120259 => 'j',
-  120260 => 'k',
-  120261 => 'l',
-  120262 => 'm',
-  120263 => 'n',
-  120264 => 'o',
-  120265 => 'p',
-  120266 => 'q',
-  120267 => 'r',
-  120268 => 's',
-  120269 => 't',
-  120270 => 'u',
-  120271 => 'v',
-  120272 => 'w',
-  120273 => 'x',
-  120274 => 'y',
-  120275 => 'z',
-  120276 => 'a',
-  120277 => 'b',
-  120278 => 'c',
-  120279 => 'd',
-  120280 => 'e',
-  120281 => 'f',
-  120282 => 'g',
-  120283 => 'h',
-  120284 => 'i',
-  120285 => 'j',
-  120286 => 'k',
-  120287 => 'l',
-  120288 => 'm',
-  120289 => 'n',
-  120290 => 'o',
-  120291 => 'p',
-  120292 => 'q',
-  120293 => 'r',
-  120294 => 's',
-  120295 => 't',
-  120296 => 'u',
-  120297 => 'v',
-  120298 => 'w',
-  120299 => 'x',
-  120300 => 'y',
-  120301 => 'z',
-  120302 => 'a',
-  120303 => 'b',
-  120304 => 'c',
-  120305 => 'd',
-  120306 => 'e',
-  120307 => 'f',
-  120308 => 'g',
-  120309 => 'h',
-  120310 => 'i',
-  120311 => 'j',
-  120312 => 'k',
-  120313 => 'l',
-  120314 => 'm',
-  120315 => 'n',
-  120316 => 'o',
-  120317 => 'p',
-  120318 => 'q',
-  120319 => 'r',
-  120320 => 's',
-  120321 => 't',
-  120322 => 'u',
-  120323 => 'v',
-  120324 => 'w',
-  120325 => 'x',
-  120326 => 'y',
-  120327 => 'z',
-  120328 => 'a',
-  120329 => 'b',
-  120330 => 'c',
-  120331 => 'd',
-  120332 => 'e',
-  120333 => 'f',
-  120334 => 'g',
-  120335 => 'h',
-  120336 => 'i',
-  120337 => 'j',
-  120338 => 'k',
-  120339 => 'l',
-  120340 => 'm',
-  120341 => 'n',
-  120342 => 'o',
-  120343 => 'p',
-  120344 => 'q',
-  120345 => 'r',
-  120346 => 's',
-  120347 => 't',
-  120348 => 'u',
-  120349 => 'v',
-  120350 => 'w',
-  120351 => 'x',
-  120352 => 'y',
-  120353 => 'z',
-  120354 => 'a',
-  120355 => 'b',
-  120356 => 'c',
-  120357 => 'd',
-  120358 => 'e',
-  120359 => 'f',
-  120360 => 'g',
-  120361 => 'h',
-  120362 => 'i',
-  120363 => 'j',
-  120364 => 'k',
-  120365 => 'l',
-  120366 => 'm',
-  120367 => 'n',
-  120368 => 'o',
-  120369 => 'p',
-  120370 => 'q',
-  120371 => 'r',
-  120372 => 's',
-  120373 => 't',
-  120374 => 'u',
-  120375 => 'v',
-  120376 => 'w',
-  120377 => 'x',
-  120378 => 'y',
-  120379 => 'z',
-  120380 => 'a',
-  120381 => 'b',
-  120382 => 'c',
-  120383 => 'd',
-  120384 => 'e',
-  120385 => 'f',
-  120386 => 'g',
-  120387 => 'h',
-  120388 => 'i',
-  120389 => 'j',
-  120390 => 'k',
-  120391 => 'l',
-  120392 => 'm',
-  120393 => 'n',
-  120394 => 'o',
-  120395 => 'p',
-  120396 => 'q',
-  120397 => 'r',
-  120398 => 's',
-  120399 => 't',
-  120400 => 'u',
-  120401 => 'v',
-  120402 => 'w',
-  120403 => 'x',
-  120404 => 'y',
-  120405 => 'z',
-  120406 => 'a',
-  120407 => 'b',
-  120408 => 'c',
-  120409 => 'd',
-  120410 => 'e',
-  120411 => 'f',
-  120412 => 'g',
-  120413 => 'h',
-  120414 => 'i',
-  120415 => 'j',
-  120416 => 'k',
-  120417 => 'l',
-  120418 => 'm',
-  120419 => 'n',
-  120420 => 'o',
-  120421 => 'p',
-  120422 => 'q',
-  120423 => 'r',
-  120424 => 's',
-  120425 => 't',
-  120426 => 'u',
-  120427 => 'v',
-  120428 => 'w',
-  120429 => 'x',
-  120430 => 'y',
-  120431 => 'z',
-  120432 => 'a',
-  120433 => 'b',
-  120434 => 'c',
-  120435 => 'd',
-  120436 => 'e',
-  120437 => 'f',
-  120438 => 'g',
-  120439 => 'h',
-  120440 => 'i',
-  120441 => 'j',
-  120442 => 'k',
-  120443 => 'l',
-  120444 => 'm',
-  120445 => 'n',
-  120446 => 'o',
-  120447 => 'p',
-  120448 => 'q',
-  120449 => 'r',
-  120450 => 's',
-  120451 => 't',
-  120452 => 'u',
-  120453 => 'v',
-  120454 => 'w',
-  120455 => 'x',
-  120456 => 'y',
-  120457 => 'z',
-  120458 => 'a',
-  120459 => 'b',
-  120460 => 'c',
-  120461 => 'd',
-  120462 => 'e',
-  120463 => 'f',
-  120464 => 'g',
-  120465 => 'h',
-  120466 => 'i',
-  120467 => 'j',
-  120468 => 'k',
-  120469 => 'l',
-  120470 => 'm',
-  120471 => 'n',
-  120472 => 'o',
-  120473 => 'p',
-  120474 => 'q',
-  120475 => 'r',
-  120476 => 's',
-  120477 => 't',
-  120478 => 'u',
-  120479 => 'v',
-  120480 => 'w',
-  120481 => 'x',
-  120482 => 'y',
-  120483 => 'z',
-  120484 => 'ı',
-  120485 => 'È·',
-  120488 => 'α',
-  120489 => 'β',
-  120490 => 'γ',
-  120491 => 'δ',
-  120492 => 'ε',
-  120493 => 'ζ',
-  120494 => 'η',
-  120495 => 'θ',
-  120496 => 'ι',
-  120497 => 'κ',
-  120498 => 'λ',
-  120499 => 'μ',
-  120500 => 'ν',
-  120501 => 'ξ',
-  120502 => 'ο',
-  120503 => 'Ï€',
-  120504 => 'ρ',
-  120505 => 'θ',
-  120506 => 'σ',
-  120507 => 'Ï„',
-  120508 => 'Ï…',
-  120509 => 'φ',
-  120510 => 'χ',
-  120511 => 'ψ',
-  120512 => 'ω',
-  120513 => '∇',
-  120514 => 'α',
-  120515 => 'β',
-  120516 => 'γ',
-  120517 => 'δ',
-  120518 => 'ε',
-  120519 => 'ζ',
-  120520 => 'η',
-  120521 => 'θ',
-  120522 => 'ι',
-  120523 => 'κ',
-  120524 => 'λ',
-  120525 => 'μ',
-  120526 => 'ν',
-  120527 => 'ξ',
-  120528 => 'ο',
-  120529 => 'Ï€',
-  120530 => 'ρ',
-  120531 => 'σ',
-  120532 => 'σ',
-  120533 => 'Ï„',
-  120534 => 'Ï…',
-  120535 => 'φ',
-  120536 => 'χ',
-  120537 => 'ψ',
-  120538 => 'ω',
-  120539 => '∂',
-  120540 => 'ε',
-  120541 => 'θ',
-  120542 => 'κ',
-  120543 => 'φ',
-  120544 => 'ρ',
-  120545 => 'Ï€',
-  120546 => 'α',
-  120547 => 'β',
-  120548 => 'γ',
-  120549 => 'δ',
-  120550 => 'ε',
-  120551 => 'ζ',
-  120552 => 'η',
-  120553 => 'θ',
-  120554 => 'ι',
-  120555 => 'κ',
-  120556 => 'λ',
-  120557 => 'μ',
-  120558 => 'ν',
-  120559 => 'ξ',
-  120560 => 'ο',
-  120561 => 'Ï€',
-  120562 => 'ρ',
-  120563 => 'θ',
-  120564 => 'σ',
-  120565 => 'Ï„',
-  120566 => 'Ï…',
-  120567 => 'φ',
-  120568 => 'χ',
-  120569 => 'ψ',
-  120570 => 'ω',
-  120571 => '∇',
-  120572 => 'α',
-  120573 => 'β',
-  120574 => 'γ',
-  120575 => 'δ',
-  120576 => 'ε',
-  120577 => 'ζ',
-  120578 => 'η',
-  120579 => 'θ',
-  120580 => 'ι',
-  120581 => 'κ',
-  120582 => 'λ',
-  120583 => 'μ',
-  120584 => 'ν',
-  120585 => 'ξ',
-  120586 => 'ο',
-  120587 => 'Ï€',
-  120588 => 'ρ',
-  120589 => 'σ',
-  120590 => 'σ',
-  120591 => 'Ï„',
-  120592 => 'Ï…',
-  120593 => 'φ',
-  120594 => 'χ',
-  120595 => 'ψ',
-  120596 => 'ω',
-  120597 => '∂',
-  120598 => 'ε',
-  120599 => 'θ',
-  120600 => 'κ',
-  120601 => 'φ',
-  120602 => 'ρ',
-  120603 => 'Ï€',
-  120604 => 'α',
-  120605 => 'β',
-  120606 => 'γ',
-  120607 => 'δ',
-  120608 => 'ε',
-  120609 => 'ζ',
-  120610 => 'η',
-  120611 => 'θ',
-  120612 => 'ι',
-  120613 => 'κ',
-  120614 => 'λ',
-  120615 => 'μ',
-  120616 => 'ν',
-  120617 => 'ξ',
-  120618 => 'ο',
-  120619 => 'Ï€',
-  120620 => 'ρ',
-  120621 => 'θ',
-  120622 => 'σ',
-  120623 => 'Ï„',
-  120624 => 'Ï…',
-  120625 => 'φ',
-  120626 => 'χ',
-  120627 => 'ψ',
-  120628 => 'ω',
-  120629 => '∇',
-  120630 => 'α',
-  120631 => 'β',
-  120632 => 'γ',
-  120633 => 'δ',
-  120634 => 'ε',
-  120635 => 'ζ',
-  120636 => 'η',
-  120637 => 'θ',
-  120638 => 'ι',
-  120639 => 'κ',
-  120640 => 'λ',
-  120641 => 'μ',
-  120642 => 'ν',
-  120643 => 'ξ',
-  120644 => 'ο',
-  120645 => 'Ï€',
-  120646 => 'ρ',
-  120647 => 'σ',
-  120648 => 'σ',
-  120649 => 'Ï„',
-  120650 => 'Ï…',
-  120651 => 'φ',
-  120652 => 'χ',
-  120653 => 'ψ',
-  120654 => 'ω',
-  120655 => '∂',
-  120656 => 'ε',
-  120657 => 'θ',
-  120658 => 'κ',
-  120659 => 'φ',
-  120660 => 'ρ',
-  120661 => 'Ï€',
-  120662 => 'α',
-  120663 => 'β',
-  120664 => 'γ',
-  120665 => 'δ',
-  120666 => 'ε',
-  120667 => 'ζ',
-  120668 => 'η',
-  120669 => 'θ',
-  120670 => 'ι',
-  120671 => 'κ',
-  120672 => 'λ',
-  120673 => 'μ',
-  120674 => 'ν',
-  120675 => 'ξ',
-  120676 => 'ο',
-  120677 => 'Ï€',
-  120678 => 'ρ',
-  120679 => 'θ',
-  120680 => 'σ',
-  120681 => 'Ï„',
-  120682 => 'Ï…',
-  120683 => 'φ',
-  120684 => 'χ',
-  120685 => 'ψ',
-  120686 => 'ω',
-  120687 => '∇',
-  120688 => 'α',
-  120689 => 'β',
-  120690 => 'γ',
-  120691 => 'δ',
-  120692 => 'ε',
-  120693 => 'ζ',
-  120694 => 'η',
-  120695 => 'θ',
-  120696 => 'ι',
-  120697 => 'κ',
-  120698 => 'λ',
-  120699 => 'μ',
-  120700 => 'ν',
-  120701 => 'ξ',
-  120702 => 'ο',
-  120703 => 'Ï€',
-  120704 => 'ρ',
-  120705 => 'σ',
-  120706 => 'σ',
-  120707 => 'Ï„',
-  120708 => 'Ï…',
-  120709 => 'φ',
-  120710 => 'χ',
-  120711 => 'ψ',
-  120712 => 'ω',
-  120713 => '∂',
-  120714 => 'ε',
-  120715 => 'θ',
-  120716 => 'κ',
-  120717 => 'φ',
-  120718 => 'ρ',
-  120719 => 'Ï€',
-  120720 => 'α',
-  120721 => 'β',
-  120722 => 'γ',
-  120723 => 'δ',
-  120724 => 'ε',
-  120725 => 'ζ',
-  120726 => 'η',
-  120727 => 'θ',
-  120728 => 'ι',
-  120729 => 'κ',
-  120730 => 'λ',
-  120731 => 'μ',
-  120732 => 'ν',
-  120733 => 'ξ',
-  120734 => 'ο',
-  120735 => 'Ï€',
-  120736 => 'ρ',
-  120737 => 'θ',
-  120738 => 'σ',
-  120739 => 'Ï„',
-  120740 => 'Ï…',
-  120741 => 'φ',
-  120742 => 'χ',
-  120743 => 'ψ',
-  120744 => 'ω',
-  120745 => '∇',
-  120746 => 'α',
-  120747 => 'β',
-  120748 => 'γ',
-  120749 => 'δ',
-  120750 => 'ε',
-  120751 => 'ζ',
-  120752 => 'η',
-  120753 => 'θ',
-  120754 => 'ι',
-  120755 => 'κ',
-  120756 => 'λ',
-  120757 => 'μ',
-  120758 => 'ν',
-  120759 => 'ξ',
-  120760 => 'ο',
-  120761 => 'Ï€',
-  120762 => 'ρ',
-  120763 => 'σ',
-  120764 => 'σ',
-  120765 => 'Ï„',
-  120766 => 'Ï…',
-  120767 => 'φ',
-  120768 => 'χ',
-  120769 => 'ψ',
-  120770 => 'ω',
-  120771 => '∂',
-  120772 => 'ε',
-  120773 => 'θ',
-  120774 => 'κ',
-  120775 => 'φ',
-  120776 => 'ρ',
-  120777 => 'Ï€',
-  120778 => 'ϝ',
-  120779 => 'ϝ',
-  120782 => '0',
-  120783 => '1',
-  120784 => '2',
-  120785 => '3',
-  120786 => '4',
-  120787 => '5',
-  120788 => '6',
-  120789 => '7',
-  120790 => '8',
-  120791 => '9',
-  120792 => '0',
-  120793 => '1',
-  120794 => '2',
-  120795 => '3',
-  120796 => '4',
-  120797 => '5',
-  120798 => '6',
-  120799 => '7',
-  120800 => '8',
-  120801 => '9',
-  120802 => '0',
-  120803 => '1',
-  120804 => '2',
-  120805 => '3',
-  120806 => '4',
-  120807 => '5',
-  120808 => '6',
-  120809 => '7',
-  120810 => '8',
-  120811 => '9',
-  120812 => '0',
-  120813 => '1',
-  120814 => '2',
-  120815 => '3',
-  120816 => '4',
-  120817 => '5',
-  120818 => '6',
-  120819 => '7',
-  120820 => '8',
-  120821 => '9',
-  120822 => '0',
-  120823 => '1',
-  120824 => '2',
-  120825 => '3',
-  120826 => '4',
-  120827 => '5',
-  120828 => '6',
-  120829 => '7',
-  120830 => '8',
-  120831 => '9',
-  125184 => '𞤢',
-  125185 => '𞤣',
-  125186 => '𞤤',
-  125187 => '𞤥',
-  125188 => '𞤦',
-  125189 => '𞤧',
-  125190 => '𞤨',
-  125191 => '𞤩',
-  125192 => '𞤪',
-  125193 => '𞤫',
-  125194 => '𞤬',
-  125195 => '𞤭',
-  125196 => '𞤮',
-  125197 => '𞤯',
-  125198 => '𞤰',
-  125199 => '𞤱',
-  125200 => '𞤲',
-  125201 => '𞤳',
-  125202 => '𞤴',
-  125203 => '𞤵',
-  125204 => '𞤶',
-  125205 => '𞤷',
-  125206 => '𞤸',
-  125207 => '𞤹',
-  125208 => '𞤺',
-  125209 => '𞤻',
-  125210 => '𞤼',
-  125211 => '𞤽',
-  125212 => '𞤾',
-  125213 => '𞤿',
-  125214 => '𞥀',
-  125215 => '𞥁',
-  125216 => '𞥂',
-  125217 => '𞥃',
-  126464 => 'ا',
-  126465 => 'ب',
-  126466 => 'ج',
-  126467 => 'د',
-  126469 => 'Ùˆ',
-  126470 => 'ز',
-  126471 => 'Ø­',
-  126472 => 'Ø·',
-  126473 => 'ÙŠ',
-  126474 => 'Ùƒ',
-  126475 => 'Ù„',
-  126476 => 'Ù…',
-  126477 => 'Ù†',
-  126478 => 'س',
-  126479 => 'ع',
-  126480 => 'ف',
-  126481 => 'ص',
-  126482 => 'Ù‚',
-  126483 => 'ر',
-  126484 => 'Ø´',
-  126485 => 'ت',
-  126486 => 'Ø«',
-  126487 => 'Ø®',
-  126488 => 'Ø°',
-  126489 => 'ض',
-  126490 => 'ظ',
-  126491 => 'غ',
-  126492 => 'Ù®',
-  126493 => 'Úº',
-  126494 => 'Ú¡',
-  126495 => 'Ù¯',
-  126497 => 'ب',
-  126498 => 'ج',
-  126500 => 'Ù‡',
-  126503 => 'Ø­',
-  126505 => 'ÙŠ',
-  126506 => 'Ùƒ',
-  126507 => 'Ù„',
-  126508 => 'Ù…',
-  126509 => 'Ù†',
-  126510 => 'س',
-  126511 => 'ع',
-  126512 => 'ف',
-  126513 => 'ص',
-  126514 => 'Ù‚',
-  126516 => 'Ø´',
-  126517 => 'ت',
-  126518 => 'Ø«',
-  126519 => 'Ø®',
-  126521 => 'ض',
-  126523 => 'غ',
-  126530 => 'ج',
-  126535 => 'Ø­',
-  126537 => 'ÙŠ',
-  126539 => 'Ù„',
-  126541 => 'Ù†',
-  126542 => 'س',
-  126543 => 'ع',
-  126545 => 'ص',
-  126546 => 'Ù‚',
-  126548 => 'Ø´',
-  126551 => 'Ø®',
-  126553 => 'ض',
-  126555 => 'غ',
-  126557 => 'Úº',
-  126559 => 'Ù¯',
-  126561 => 'ب',
-  126562 => 'ج',
-  126564 => 'Ù‡',
-  126567 => 'Ø­',
-  126568 => 'Ø·',
-  126569 => 'ÙŠ',
-  126570 => 'Ùƒ',
-  126572 => 'Ù…',
-  126573 => 'Ù†',
-  126574 => 'س',
-  126575 => 'ع',
-  126576 => 'ف',
-  126577 => 'ص',
-  126578 => 'Ù‚',
-  126580 => 'Ø´',
-  126581 => 'ت',
-  126582 => 'Ø«',
-  126583 => 'Ø®',
-  126585 => 'ض',
-  126586 => 'ظ',
-  126587 => 'غ',
-  126588 => 'Ù®',
-  126590 => 'Ú¡',
-  126592 => 'ا',
-  126593 => 'ب',
-  126594 => 'ج',
-  126595 => 'د',
-  126596 => 'Ù‡',
-  126597 => 'Ùˆ',
-  126598 => 'ز',
-  126599 => 'Ø­',
-  126600 => 'Ø·',
-  126601 => 'ÙŠ',
-  126603 => 'Ù„',
-  126604 => 'Ù…',
-  126605 => 'Ù†',
-  126606 => 'س',
-  126607 => 'ع',
-  126608 => 'ف',
-  126609 => 'ص',
-  126610 => 'Ù‚',
-  126611 => 'ر',
-  126612 => 'Ø´',
-  126613 => 'ت',
-  126614 => 'Ø«',
-  126615 => 'Ø®',
-  126616 => 'Ø°',
-  126617 => 'ض',
-  126618 => 'ظ',
-  126619 => 'غ',
-  126625 => 'ب',
-  126626 => 'ج',
-  126627 => 'د',
-  126629 => 'Ùˆ',
-  126630 => 'ز',
-  126631 => 'Ø­',
-  126632 => 'Ø·',
-  126633 => 'ÙŠ',
-  126635 => 'Ù„',
-  126636 => 'Ù…',
-  126637 => 'Ù†',
-  126638 => 'س',
-  126639 => 'ع',
-  126640 => 'ف',
-  126641 => 'ص',
-  126642 => 'Ù‚',
-  126643 => 'ر',
-  126644 => 'Ø´',
-  126645 => 'ت',
-  126646 => 'Ø«',
-  126647 => 'Ø®',
-  126648 => 'Ø°',
-  126649 => 'ض',
-  126650 => 'ظ',
-  126651 => 'غ',
-  127274 => '〔s〕',
-  127275 => 'c',
-  127276 => 'r',
-  127277 => 'cd',
-  127278 => 'wz',
-  127280 => 'a',
-  127281 => 'b',
-  127282 => 'c',
-  127283 => 'd',
-  127284 => 'e',
-  127285 => 'f',
-  127286 => 'g',
-  127287 => 'h',
-  127288 => 'i',
-  127289 => 'j',
-  127290 => 'k',
-  127291 => 'l',
-  127292 => 'm',
-  127293 => 'n',
-  127294 => 'o',
-  127295 => 'p',
-  127296 => 'q',
-  127297 => 'r',
-  127298 => 's',
-  127299 => 't',
-  127300 => 'u',
-  127301 => 'v',
-  127302 => 'w',
-  127303 => 'x',
-  127304 => 'y',
-  127305 => 'z',
-  127306 => 'hv',
-  127307 => 'mv',
-  127308 => 'sd',
-  127309 => 'ss',
-  127310 => 'ppv',
-  127311 => 'wc',
-  127338 => 'mc',
-  127339 => 'md',
-  127340 => 'mr',
-  127376 => 'dj',
-  127488 => 'ほか',
-  127489 => 'ココ',
-  127490 => 'サ',
-  127504 => '手',
-  127505 => 'å­—',
-  127506 => '双',
-  127507 => 'デ',
-  127508 => '二',
-  127509 => '多',
-  127510 => '解',
-  127511 => '天',
-  127512 => '交',
-  127513 => '映',
-  127514 => 'ç„¡',
-  127515 => 'æ–™',
-  127516 => '前',
-  127517 => '後',
-  127518 => '再',
-  127519 => 'æ–°',
-  127520 => '初',
-  127521 => '終',
-  127522 => '生',
-  127523 => '販',
-  127524 => '声',
-  127525 => '吹',
-  127526 => 'æ¼”',
-  127527 => '投',
-  127528 => '捕',
-  127529 => '一',
-  127530 => '三',
-  127531 => '遊',
-  127532 => 'å·¦',
-  127533 => '中',
-  127534 => '右',
-  127535 => '指',
-  127536 => 'èµ°',
-  127537 => '打',
-  127538 => '禁',
-  127539 => '空',
-  127540 => '合',
-  127541 => '満',
-  127542 => '有',
-  127543 => '月',
-  127544 => '申',
-  127545 => '割',
-  127546 => 'å–¶',
-  127547 => '配',
-  127552 => '〔本〕',
-  127553 => '〔三〕',
-  127554 => '〔二〕',
-  127555 => '〔安〕',
-  127556 => '〔点〕',
-  127557 => '〔打〕',
-  127558 => '〔盗〕',
-  127559 => '〔勝〕',
-  127560 => '〔敗〕',
-  127568 => 'å¾—',
-  127569 => '可',
-  130032 => '0',
-  130033 => '1',
-  130034 => '2',
-  130035 => '3',
-  130036 => '4',
-  130037 => '5',
-  130038 => '6',
-  130039 => '7',
-  130040 => '8',
-  130041 => '9',
-  194560 => '丽',
-  194561 => '丸',
-  194562 => '乁',
-  194563 => 'ð „¢',
-  194564 => 'ä½ ',
-  194565 => 'ä¾®',
-  194566 => 'ä¾»',
-  194567 => '倂',
-  194568 => '偺',
-  194569 => 'å‚™',
-  194570 => '僧',
-  194571 => '像',
-  194572 => 'ã’ž',
-  194573 => '𠘺',
-  194574 => '免',
-  194575 => 'å…”',
-  194576 => 'å…¤',
-  194577 => 'å…·',
-  194578 => '𠔜',
-  194579 => 'ã’¹',
-  194580 => 'å…§',
-  194581 => '再',
-  194582 => 'ð •‹',
-  194583 => '冗',
-  194584 => '冤',
-  194585 => '仌',
-  194586 => '冬',
-  194587 => '况',
-  194588 => '𩇟',
-  194589 => '凵',
-  194590 => '刃',
-  194591 => 'ã“Ÿ',
-  194592 => '刻',
-  194593 => '剆',
-  194594 => '割',
-  194595 => '剷',
-  194596 => '㔕',
-  194597 => '勇',
-  194598 => '勉',
-  194599 => '勤',
-  194600 => '勺',
-  194601 => '包',
-  194602 => '匆',
-  194603 => '北',
-  194604 => '卉',
-  194605 => '卑',
-  194606 => '博',
-  194607 => '即',
-  194608 => '卽',
-  194609 => '卿',
-  194610 => '卿',
-  194611 => '卿',
-  194612 => '𠨬',
-  194613 => '灰',
-  194614 => '及',
-  194615 => '叟',
-  194616 => 'ð ­£',
-  194617 => '叫',
-  194618 => '叱',
-  194619 => '吆',
-  194620 => 'å’ž',
-  194621 => '吸',
-  194622 => '呈',
-  194623 => '周',
-  194624 => 'å’¢',
-  194625 => '哶',
-  194626 => '唐',
-  194627 => 'å•“',
-  194628 => 'å•£',
-  194629 => 'å–„',
-  194630 => 'å–„',
-  194631 => 'å–™',
-  194632 => 'å–«',
-  194633 => 'å–³',
-  194634 => 'å—‚',
-  194635 => '圖',
-  194636 => '嘆',
-  194637 => '圗',
-  194638 => '噑',
-  194639 => 'å™´',
-  194640 => '切',
-  194641 => '壮',
-  194642 => '城',
-  194643 => '埴',
-  194644 => '堍',
-  194645 => 'åž‹',
-  194646 => 'å ²',
-  194647 => 'å ±',
-  194648 => '墬',
-  194649 => '𡓤',
-  194650 => '売',
-  194651 => '壷',
-  194652 => '夆',
-  194653 => '多',
-  194654 => '夢',
-  194655 => '奢',
-  194656 => '𡚨',
-  194657 => '𡛪',
-  194658 => '姬',
-  194659 => '娛',
-  194660 => '娧',
-  194661 => '姘',
-  194662 => '婦',
-  194663 => 'ã›®',
-  194665 => '嬈',
-  194666 => '嬾',
-  194667 => '嬾',
-  194668 => '𡧈',
-  194669 => '寃',
-  194670 => '寘',
-  194671 => '寧',
-  194672 => '寳',
-  194673 => '𡬘',
-  194674 => '寿',
-  194675 => 'å°†',
-  194677 => 'å°¢',
-  194678 => '㞁',
-  194679 => 'å± ',
-  194680 => 'å±®',
-  194681 => 'å³€',
-  194682 => '岍',
-  194683 => 'ð¡·¤',
-  194684 => '嵃',
-  194685 => 'ð¡·¦',
-  194686 => 'åµ®',
-  194687 => '嵫',
-  194688 => 'åµ¼',
-  194689 => 'å·¡',
-  194690 => 'å·¢',
-  194691 => 'ã ¯',
-  194692 => 'å·½',
-  194693 => '帨',
-  194694 => '帽',
-  194695 => '幩',
-  194696 => 'ã¡¢',
-  194697 => '𢆃',
-  194698 => '㡼',
-  194699 => '庰',
-  194700 => '庳',
-  194701 => '庶',
-  194702 => '廊',
-  194703 => '𪎒',
-  194704 => '廾',
-  194705 => '𢌱',
-  194706 => '𢌱',
-  194707 => '舁',
-  194708 => 'å¼¢',
-  194709 => 'å¼¢',
-  194710 => '㣇',
-  194711 => '𣊸',
-  194712 => '𦇚',
-  194713 => 'å½¢',
-  194714 => '彫',
-  194715 => '㣣',
-  194716 => '徚',
-  194717 => '忍',
-  194718 => 'å¿—',
-  194719 => '忹',
-  194720 => '悁',
-  194721 => '㤺',
-  194722 => '㤜',
-  194723 => 'æ‚”',
-  194724 => '𢛔',
-  194725 => '惇',
-  194726 => 'æ…ˆ',
-  194727 => '慌',
-  194728 => 'æ…Ž',
-  194729 => '慌',
-  194730 => 'æ…º',
-  194731 => '憎',
-  194732 => '憲',
-  194733 => '憤',
-  194734 => '憯',
-  194735 => '懞',
-  194736 => '懲',
-  194737 => '懶',
-  194738 => '成',
-  194739 => '戛',
-  194740 => '扝',
-  194741 => '抱',
-  194742 => 'æ‹”',
-  194743 => '捐',
-  194744 => '𢬌',
-  194745 => '挽',
-  194746 => '拼',
-  194747 => '捨',
-  194748 => '掃',
-  194749 => '揤',
-  194750 => '𢯱',
-  194751 => '搢',
-  194752 => '揅',
-  194753 => '掩',
-  194754 => '㨮',
-  194755 => 'æ‘©',
-  194756 => '摾',
-  194757 => '撝',
-  194758 => 'æ‘·',
-  194759 => '㩬',
-  194760 => '敏',
-  194761 => '敬',
-  194762 => '𣀊',
-  194763 => 'æ—£',
-  194764 => '書',
-  194765 => '晉',
-  194766 => '㬙',
-  194767 => 'æš‘',
-  194768 => '㬈',
-  194769 => '㫤',
-  194770 => '冒',
-  194771 => '冕',
-  194772 => '最',
-  194773 => '暜',
-  194774 => 'è‚­',
-  194775 => '䏙',
-  194776 => '朗',
-  194777 => '望',
-  194778 => '朡',
-  194779 => '杞',
-  194780 => '杓',
-  194781 => '𣏃',
-  194782 => 'ã­‰',
-  194783 => '柺',
-  194784 => 'æž…',
-  194785 => 'æ¡’',
-  194786 => '梅',
-  194787 => '𣑭',
-  194788 => '梎',
-  194789 => 'æ Ÿ',
-  194790 => '椔',
-  194791 => '㮝',
-  194792 => '楂',
-  194793 => '榣',
-  194794 => '槪',
-  194795 => '檨',
-  194796 => '𣚣',
-  194797 => 'æ«›',
-  194798 => 'ã°˜',
-  194799 => '次',
-  194800 => '𣢧',
-  194801 => 'æ­”',
-  194802 => '㱎',
-  194803 => 'æ­²',
-  194804 => '殟',
-  194805 => '殺',
-  194806 => 'æ®»',
-  194807 => '𣪍',
-  194808 => 'ð¡´‹',
-  194809 => '𣫺',
-  194810 => '汎',
-  194811 => '𣲼',
-  194812 => '沿',
-  194813 => '泍',
-  194814 => '汧',
-  194815 => 'æ´–',
-  194816 => 'æ´¾',
-  194817 => 'æµ·',
-  194818 => '流',
-  194819 => '浩',
-  194820 => '浸',
-  194821 => '涅',
-  194822 => '𣴞',
-  194823 => 'æ´´',
-  194824 => '港',
-  194825 => 'æ¹®',
-  194826 => 'ã´³',
-  194827 => '滋',
-  194828 => '滇',
-  194829 => '𣻑',
-  194830 => 'æ·¹',
-  194831 => 'æ½®',
-  194832 => '𣽞',
-  194833 => '𣾎',
-  194834 => '濆',
-  194835 => '瀹',
-  194836 => '瀞',
-  194837 => '瀛',
-  194838 => '㶖',
-  194839 => '灊',
-  194840 => '災',
-  194841 => '灷',
-  194842 => 'ç‚­',
-  194843 => '𠔥',
-  194844 => 'ç……',
-  194845 => '𤉣',
-  194846 => '熜',
-  194848 => '爨',
-  194849 => '爵',
-  194850 => '牐',
-  194851 => '𤘈',
-  194852 => '犀',
-  194853 => '犕',
-  194854 => '𤜵',
-  194855 => '𤠔',
-  194856 => '獺',
-  194857 => '王',
-  194858 => '㺬',
-  194859 => '玥',
-  194860 => '㺸',
-  194861 => '㺸',
-  194862 => '瑇',
-  194863 => '瑜',
-  194864 => '瑱',
-  194865 => 'ç’…',
-  194866 => 'ç“Š',
-  194867 => 'ã¼›',
-  194868 => '甤',
-  194869 => '𤰶',
-  194870 => '甾',
-  194871 => '𤲒',
-  194872 => 'ç•°',
-  194873 => '𢆟',
-  194874 => '瘐',
-  194875 => '𤾡',
-  194876 => '𤾸',
-  194877 => '𥁄',
-  194878 => '㿼',
-  194879 => '䀈',
-  194880 => 'ç›´',
-  194881 => '𥃳',
-  194882 => '𥃲',
-  194883 => '𥄙',
-  194884 => '𥄳',
-  194885 => '眞',
-  194886 => '真',
-  194887 => '真',
-  194888 => '睊',
-  194889 => '䀹',
-  194890 => 'çž‹',
-  194891 => '䁆',
-  194892 => 'ä‚–',
-  194893 => '𥐝',
-  194894 => 'ç¡Ž',
-  194895 => '碌',
-  194896 => '磌',
-  194897 => '䃣',
-  194898 => '𥘦',
-  194899 => '祖',
-  194900 => '𥚚',
-  194901 => '𥛅',
-  194902 => '福',
-  194903 => '秫',
-  194904 => '䄯',
-  194905 => 'ç©€',
-  194906 => 'ç©Š',
-  194907 => '穏',
-  194908 => '𥥼',
-  194909 => '𥪧',
-  194910 => '𥪧',
-  194912 => '䈂',
-  194913 => '𥮫',
-  194914 => '篆',
-  194915 => '築',
-  194916 => '䈧',
-  194917 => '𥲀',
-  194918 => 'ç³’',
-  194919 => '䊠',
-  194920 => '糨',
-  194921 => 'ç³£',
-  194922 => 'ç´€',
-  194923 => '𥾆',
-  194924 => 'çµ£',
-  194925 => '䌁',
-  194926 => 'ç·‡',
-  194927 => '縂',
-  194928 => 'ç¹…',
-  194929 => '䌴',
-  194930 => '𦈨',
-  194931 => '𦉇',
-  194932 => '䍙',
-  194933 => '𦋙',
-  194934 => '罺',
-  194935 => '𦌾',
-  194936 => '羕',
-  194937 => '翺',
-  194938 => '者',
-  194939 => '𦓚',
-  194940 => '𦔣',
-  194941 => '聠',
-  194942 => '𦖨',
-  194943 => '聰',
-  194944 => '𣍟',
-  194945 => '䏕',
-  194946 => '育',
-  194947 => '脃',
-  194948 => '䐋',
-  194949 => '脾',
-  194950 => '媵',
-  194951 => '𦞧',
-  194952 => '𦞵',
-  194953 => '𣎓',
-  194954 => '𣎜',
-  194955 => '舁',
-  194956 => '舄',
-  194957 => '辞',
-  194958 => 'ä‘«',
-  194959 => '芑',
-  194960 => '芋',
-  194961 => '芝',
-  194962 => '劳',
-  194963 => '花',
-  194964 => '芳',
-  194965 => '芽',
-  194966 => '苦',
-  194967 => '𦬼',
-  194968 => 'è‹¥',
-  194969 => '茝',
-  194970 => '荣',
-  194971 => '莭',
-  194972 => '茣',
-  194973 => '莽',
-  194974 => '菧',
-  194975 => 'è‘—',
-  194976 => '荓',
-  194977 => '菊',
-  194978 => '菌',
-  194979 => '菜',
-  194980 => '𦰶',
-  194981 => '𦵫',
-  194982 => '𦳕',
-  194983 => '䔫',
-  194984 => '蓱',
-  194985 => '蓳',
-  194986 => 'è”–',
-  194987 => '𧏊',
-  194988 => '蕤',
-  194989 => '𦼬',
-  194990 => '䕝',
-  194991 => 'ä•¡',
-  194992 => '𦾱',
-  194993 => '𧃒',
-  194994 => 'ä•«',
-  194995 => '虐',
-  194996 => '虜',
-  194997 => '虧',
-  194998 => '虩',
-  194999 => 'èš©',
-  195000 => '蚈',
-  195001 => '蜎',
-  195002 => '蛢',
-  195003 => '蝹',
-  195004 => '蜨',
-  195005 => '蝫',
-  195006 => '螆',
-  195008 => '蟡',
-  195009 => '蠁',
-  195010 => 'ä—¹',
-  195011 => 'è¡ ',
-  195012 => 'è¡£',
-  195013 => '𧙧',
-  195014 => '裗',
-  195015 => '裞',
-  195016 => '䘵',
-  195017 => '裺',
-  195018 => 'ã’»',
-  195019 => '𧢮',
-  195020 => '𧥦',
-  195021 => 'äš¾',
-  195022 => '䛇',
-  195023 => '誠',
-  195024 => 'è«­',
-  195025 => '變',
-  195026 => '豕',
-  195027 => '𧲨',
-  195028 => '貫',
-  195029 => '賁',
-  195030 => 'è´›',
-  195031 => 'èµ·',
-  195032 => '𧼯',
-  195033 => 'ð  „',
-  195034 => 'è·‹',
-  195035 => '趼',
-  195036 => 'è·°',
-  195037 => '𠣞',
-  195038 => 'è»”',
-  195039 => '輸',
-  195040 => '𨗒',
-  195041 => '𨗭',
-  195042 => 'é‚”',
-  195043 => '郱',
-  195044 => 'é„‘',
-  195045 => '𨜮',
-  195046 => 'é„›',
-  195047 => '鈸',
-  195048 => 'é‹—',
-  195049 => '鋘',
-  195050 => '鉼',
-  195051 => '鏹',
-  195052 => '鐕',
-  195053 => '𨯺',
-  195054 => 'é–‹',
-  195055 => '䦕',
-  195056 => 'é–·',
-  195057 => '𨵷',
-  195058 => '䧦',
-  195059 => '雃',
-  195060 => '嶲',
-  195061 => '霣',
-  195062 => 'ð©……',
-  195063 => '𩈚',
-  195064 => 'ä©®',
-  195065 => '䩶',
-  195066 => '韠',
-  195067 => '𩐊',
-  195068 => '䪲',
-  195069 => 'ð©’–',
-  195070 => 'é ‹',
-  195071 => 'é ‹',
-  195072 => 'é ©',
-  195073 => 'ð©–¶',
-  195074 => '飢',
-  195075 => '䬳',
-  195076 => '餩',
-  195077 => '馧',
-  195078 => '駂',
-  195079 => '駾',
-  195080 => '䯎',
-  195081 => '𩬰',
-  195082 => '鬒',
-  195083 => 'é±€',
-  195084 => 'é³½',
-  195085 => '䳎',
-  195086 => 'ä³­',
-  195087 => '鵧',
-  195088 => '𪃎',
-  195089 => '䳸',
-  195090 => '𪄅',
-  195091 => '𪈎',
-  195092 => '𪊑',
-  195093 => '麻',
-  195094 => 'äµ–',
-  195095 => '黹',
-  195096 => '黾',
-  195097 => 'é¼…',
-  195098 => '鼏',
-  195099 => 'é¼–',
-  195100 => 'é¼»',
-  195101 => '𪘀',
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php b/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php
deleted file mode 100644
index 1958e37ed25ec03f88fa4a7c815754665e78fe7a..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-return array (
-  2381 => 9,
-  2509 => 9,
-  2637 => 9,
-  2765 => 9,
-  2893 => 9,
-  3021 => 9,
-  3149 => 9,
-  3277 => 9,
-  3387 => 9,
-  3388 => 9,
-  3405 => 9,
-  3530 => 9,
-  3642 => 9,
-  3770 => 9,
-  3972 => 9,
-  4153 => 9,
-  4154 => 9,
-  5908 => 9,
-  5940 => 9,
-  6098 => 9,
-  6752 => 9,
-  6980 => 9,
-  7082 => 9,
-  7083 => 9,
-  7154 => 9,
-  7155 => 9,
-  11647 => 9,
-  43014 => 9,
-  43052 => 9,
-  43204 => 9,
-  43347 => 9,
-  43456 => 9,
-  43766 => 9,
-  44013 => 9,
-  68159 => 9,
-  69702 => 9,
-  69759 => 9,
-  69817 => 9,
-  69939 => 9,
-  69940 => 9,
-  70080 => 9,
-  70197 => 9,
-  70378 => 9,
-  70477 => 9,
-  70722 => 9,
-  70850 => 9,
-  71103 => 9,
-  71231 => 9,
-  71350 => 9,
-  71467 => 9,
-  71737 => 9,
-  71997 => 9,
-  71998 => 9,
-  72160 => 9,
-  72244 => 9,
-  72263 => 9,
-  72345 => 9,
-  72767 => 9,
-  73028 => 9,
-  73029 => 9,
-  73111 => 9,
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/bootstrap.php b/civicrm/vendor/symfony/polyfill-intl-idn/bootstrap.php
deleted file mode 100644
index 57c78356c9981b402b69076fac6d81f50d0e7107..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/bootstrap.php
+++ /dev/null
@@ -1,145 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Intl\Idn as p;
-
-if (extension_loaded('intl')) {
-    return;
-}
-
-if (\PHP_VERSION_ID >= 80000) {
-    return require __DIR__.'/bootstrap80.php';
-}
-
-if (!defined('U_IDNA_PROHIBITED_ERROR')) {
-    define('U_IDNA_PROHIBITED_ERROR', 66560);
-}
-if (!defined('U_IDNA_ERROR_START')) {
-    define('U_IDNA_ERROR_START', 66560);
-}
-if (!defined('U_IDNA_UNASSIGNED_ERROR')) {
-    define('U_IDNA_UNASSIGNED_ERROR', 66561);
-}
-if (!defined('U_IDNA_CHECK_BIDI_ERROR')) {
-    define('U_IDNA_CHECK_BIDI_ERROR', 66562);
-}
-if (!defined('U_IDNA_STD3_ASCII_RULES_ERROR')) {
-    define('U_IDNA_STD3_ASCII_RULES_ERROR', 66563);
-}
-if (!defined('U_IDNA_ACE_PREFIX_ERROR')) {
-    define('U_IDNA_ACE_PREFIX_ERROR', 66564);
-}
-if (!defined('U_IDNA_VERIFICATION_ERROR')) {
-    define('U_IDNA_VERIFICATION_ERROR', 66565);
-}
-if (!defined('U_IDNA_LABEL_TOO_LONG_ERROR')) {
-    define('U_IDNA_LABEL_TOO_LONG_ERROR', 66566);
-}
-if (!defined('U_IDNA_ZERO_LENGTH_LABEL_ERROR')) {
-    define('U_IDNA_ZERO_LENGTH_LABEL_ERROR', 66567);
-}
-if (!defined('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR')) {
-    define('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR', 66568);
-}
-if (!defined('U_IDNA_ERROR_LIMIT')) {
-    define('U_IDNA_ERROR_LIMIT', 66569);
-}
-if (!defined('U_STRINGPREP_PROHIBITED_ERROR')) {
-    define('U_STRINGPREP_PROHIBITED_ERROR', 66560);
-}
-if (!defined('U_STRINGPREP_UNASSIGNED_ERROR')) {
-    define('U_STRINGPREP_UNASSIGNED_ERROR', 66561);
-}
-if (!defined('U_STRINGPREP_CHECK_BIDI_ERROR')) {
-    define('U_STRINGPREP_CHECK_BIDI_ERROR', 66562);
-}
-if (!defined('IDNA_DEFAULT')) {
-    define('IDNA_DEFAULT', 0);
-}
-if (!defined('IDNA_ALLOW_UNASSIGNED')) {
-    define('IDNA_ALLOW_UNASSIGNED', 1);
-}
-if (!defined('IDNA_USE_STD3_RULES')) {
-    define('IDNA_USE_STD3_RULES', 2);
-}
-if (!defined('IDNA_CHECK_BIDI')) {
-    define('IDNA_CHECK_BIDI', 4);
-}
-if (!defined('IDNA_CHECK_CONTEXTJ')) {
-    define('IDNA_CHECK_CONTEXTJ', 8);
-}
-if (!defined('IDNA_NONTRANSITIONAL_TO_ASCII')) {
-    define('IDNA_NONTRANSITIONAL_TO_ASCII', 16);
-}
-if (!defined('IDNA_NONTRANSITIONAL_TO_UNICODE')) {
-    define('IDNA_NONTRANSITIONAL_TO_UNICODE', 32);
-}
-if (!defined('INTL_IDNA_VARIANT_2003')) {
-    define('INTL_IDNA_VARIANT_2003', 0);
-}
-if (!defined('INTL_IDNA_VARIANT_UTS46')) {
-    define('INTL_IDNA_VARIANT_UTS46', 1);
-}
-if (!defined('IDNA_ERROR_EMPTY_LABEL')) {
-    define('IDNA_ERROR_EMPTY_LABEL', 1);
-}
-if (!defined('IDNA_ERROR_LABEL_TOO_LONG')) {
-    define('IDNA_ERROR_LABEL_TOO_LONG', 2);
-}
-if (!defined('IDNA_ERROR_DOMAIN_NAME_TOO_LONG')) {
-    define('IDNA_ERROR_DOMAIN_NAME_TOO_LONG', 4);
-}
-if (!defined('IDNA_ERROR_LEADING_HYPHEN')) {
-    define('IDNA_ERROR_LEADING_HYPHEN', 8);
-}
-if (!defined('IDNA_ERROR_TRAILING_HYPHEN')) {
-    define('IDNA_ERROR_TRAILING_HYPHEN', 16);
-}
-if (!defined('IDNA_ERROR_HYPHEN_3_4')) {
-    define('IDNA_ERROR_HYPHEN_3_4', 32);
-}
-if (!defined('IDNA_ERROR_LEADING_COMBINING_MARK')) {
-    define('IDNA_ERROR_LEADING_COMBINING_MARK', 64);
-}
-if (!defined('IDNA_ERROR_DISALLOWED')) {
-    define('IDNA_ERROR_DISALLOWED', 128);
-}
-if (!defined('IDNA_ERROR_PUNYCODE')) {
-    define('IDNA_ERROR_PUNYCODE', 256);
-}
-if (!defined('IDNA_ERROR_LABEL_HAS_DOT')) {
-    define('IDNA_ERROR_LABEL_HAS_DOT', 512);
-}
-if (!defined('IDNA_ERROR_INVALID_ACE_LABEL')) {
-    define('IDNA_ERROR_INVALID_ACE_LABEL', 1024);
-}
-if (!defined('IDNA_ERROR_BIDI')) {
-    define('IDNA_ERROR_BIDI', 2048);
-}
-if (!defined('IDNA_ERROR_CONTEXTJ')) {
-    define('IDNA_ERROR_CONTEXTJ', 4096);
-}
-
-if (\PHP_VERSION_ID < 70400) {
-    if (!function_exists('idn_to_ascii')) {
-        function idn_to_ascii($domain, $flags = 0, $variant = \INTL_IDNA_VARIANT_2003, &$idna_info = null) { return p\Idn::idn_to_ascii($domain, $flags, $variant, $idna_info); }
-    }
-    if (!function_exists('idn_to_utf8')) {
-        function idn_to_utf8($domain, $flags = 0, $variant = \INTL_IDNA_VARIANT_2003, &$idna_info = null) { return p\Idn::idn_to_utf8($domain, $flags, $variant, $idna_info); }
-    }
-} else {
-    if (!function_exists('idn_to_ascii')) {
-        function idn_to_ascii($domain, $flags = 0, $variant = \INTL_IDNA_VARIANT_UTS46, &$idna_info = null) { return p\Idn::idn_to_ascii($domain, $flags, $variant, $idna_info); }
-    }
-    if (!function_exists('idn_to_utf8')) {
-        function idn_to_utf8($domain, $flags = 0, $variant = \INTL_IDNA_VARIANT_UTS46, &$idna_info = null) { return p\Idn::idn_to_utf8($domain, $flags, $variant, $idna_info); }
-    }
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/bootstrap80.php b/civicrm/vendor/symfony/polyfill-intl-idn/bootstrap80.php
deleted file mode 100644
index a62c2d69bf74808b04e146167ba4e8edc3b898ed..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/bootstrap80.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Intl\Idn as p;
-
-if (!defined('U_IDNA_PROHIBITED_ERROR')) {
-    define('U_IDNA_PROHIBITED_ERROR', 66560);
-}
-if (!defined('U_IDNA_ERROR_START')) {
-    define('U_IDNA_ERROR_START', 66560);
-}
-if (!defined('U_IDNA_UNASSIGNED_ERROR')) {
-    define('U_IDNA_UNASSIGNED_ERROR', 66561);
-}
-if (!defined('U_IDNA_CHECK_BIDI_ERROR')) {
-    define('U_IDNA_CHECK_BIDI_ERROR', 66562);
-}
-if (!defined('U_IDNA_STD3_ASCII_RULES_ERROR')) {
-    define('U_IDNA_STD3_ASCII_RULES_ERROR', 66563);
-}
-if (!defined('U_IDNA_ACE_PREFIX_ERROR')) {
-    define('U_IDNA_ACE_PREFIX_ERROR', 66564);
-}
-if (!defined('U_IDNA_VERIFICATION_ERROR')) {
-    define('U_IDNA_VERIFICATION_ERROR', 66565);
-}
-if (!defined('U_IDNA_LABEL_TOO_LONG_ERROR')) {
-    define('U_IDNA_LABEL_TOO_LONG_ERROR', 66566);
-}
-if (!defined('U_IDNA_ZERO_LENGTH_LABEL_ERROR')) {
-    define('U_IDNA_ZERO_LENGTH_LABEL_ERROR', 66567);
-}
-if (!defined('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR')) {
-    define('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR', 66568);
-}
-if (!defined('U_IDNA_ERROR_LIMIT')) {
-    define('U_IDNA_ERROR_LIMIT', 66569);
-}
-if (!defined('U_STRINGPREP_PROHIBITED_ERROR')) {
-    define('U_STRINGPREP_PROHIBITED_ERROR', 66560);
-}
-if (!defined('U_STRINGPREP_UNASSIGNED_ERROR')) {
-    define('U_STRINGPREP_UNASSIGNED_ERROR', 66561);
-}
-if (!defined('U_STRINGPREP_CHECK_BIDI_ERROR')) {
-    define('U_STRINGPREP_CHECK_BIDI_ERROR', 66562);
-}
-if (!defined('IDNA_DEFAULT')) {
-    define('IDNA_DEFAULT', 0);
-}
-if (!defined('IDNA_ALLOW_UNASSIGNED')) {
-    define('IDNA_ALLOW_UNASSIGNED', 1);
-}
-if (!defined('IDNA_USE_STD3_RULES')) {
-    define('IDNA_USE_STD3_RULES', 2);
-}
-if (!defined('IDNA_CHECK_BIDI')) {
-    define('IDNA_CHECK_BIDI', 4);
-}
-if (!defined('IDNA_CHECK_CONTEXTJ')) {
-    define('IDNA_CHECK_CONTEXTJ', 8);
-}
-if (!defined('IDNA_NONTRANSITIONAL_TO_ASCII')) {
-    define('IDNA_NONTRANSITIONAL_TO_ASCII', 16);
-}
-if (!defined('IDNA_NONTRANSITIONAL_TO_UNICODE')) {
-    define('IDNA_NONTRANSITIONAL_TO_UNICODE', 32);
-}
-if (!defined('INTL_IDNA_VARIANT_UTS46')) {
-    define('INTL_IDNA_VARIANT_UTS46', 1);
-}
-if (!defined('IDNA_ERROR_EMPTY_LABEL')) {
-    define('IDNA_ERROR_EMPTY_LABEL', 1);
-}
-if (!defined('IDNA_ERROR_LABEL_TOO_LONG')) {
-    define('IDNA_ERROR_LABEL_TOO_LONG', 2);
-}
-if (!defined('IDNA_ERROR_DOMAIN_NAME_TOO_LONG')) {
-    define('IDNA_ERROR_DOMAIN_NAME_TOO_LONG', 4);
-}
-if (!defined('IDNA_ERROR_LEADING_HYPHEN')) {
-    define('IDNA_ERROR_LEADING_HYPHEN', 8);
-}
-if (!defined('IDNA_ERROR_TRAILING_HYPHEN')) {
-    define('IDNA_ERROR_TRAILING_HYPHEN', 16);
-}
-if (!defined('IDNA_ERROR_HYPHEN_3_4')) {
-    define('IDNA_ERROR_HYPHEN_3_4', 32);
-}
-if (!defined('IDNA_ERROR_LEADING_COMBINING_MARK')) {
-    define('IDNA_ERROR_LEADING_COMBINING_MARK', 64);
-}
-if (!defined('IDNA_ERROR_DISALLOWED')) {
-    define('IDNA_ERROR_DISALLOWED', 128);
-}
-if (!defined('IDNA_ERROR_PUNYCODE')) {
-    define('IDNA_ERROR_PUNYCODE', 256);
-}
-if (!defined('IDNA_ERROR_LABEL_HAS_DOT')) {
-    define('IDNA_ERROR_LABEL_HAS_DOT', 512);
-}
-if (!defined('IDNA_ERROR_INVALID_ACE_LABEL')) {
-    define('IDNA_ERROR_INVALID_ACE_LABEL', 1024);
-}
-if (!defined('IDNA_ERROR_BIDI')) {
-    define('IDNA_ERROR_BIDI', 2048);
-}
-if (!defined('IDNA_ERROR_CONTEXTJ')) {
-    define('IDNA_ERROR_CONTEXTJ', 4096);
-}
-
-if (!function_exists('idn_to_ascii')) {
-    function idn_to_ascii(?string $domain, ?int $flags = IDNA_DEFAULT, ?int $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = null): string|false { return p\Idn::idn_to_ascii((string) $domain, (int) $flags, (int) $variant, $idna_info); }
-}
-if (!function_exists('idn_to_utf8')) {
-    function idn_to_utf8(?string $domain, ?int $flags = IDNA_DEFAULT, ?int $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = null): string|false { return p\Idn::idn_to_utf8((string) $domain, (int) $flags, (int) $variant, $idna_info); }
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-idn/composer.json b/civicrm/vendor/symfony/polyfill-intl-idn/composer.json
deleted file mode 100644
index 105e3d06cc1df0db844585c5ecc39c9780095850..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-idn/composer.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-    "name": "symfony/polyfill-intl-idn",
-    "type": "library",
-    "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
-    "keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "idn"],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Laurent Bassin",
-            "email": "laurent@bassin.info"
-        },
-        {
-            "name": "Trevor Rowbotham",
-            "email": "trevor.rowbotham@pm.me"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.1",
-        "symfony/polyfill-intl-normalizer": "^1.10",
-        "symfony/polyfill-php72": "^1.10"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Polyfill\\Intl\\Idn\\": "" },
-        "files": [ "bootstrap.php" ]
-    },
-    "suggest": {
-        "ext-intl": "For best performance"
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-main": "1.27-dev"
-        },
-        "thanks": {
-            "name": "symfony/polyfill",
-            "url": "https://github.com/symfony/polyfill"
-        }
-    }
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/Normalizer.php b/civicrm/vendor/symfony/polyfill-intl-normalizer/Normalizer.php
deleted file mode 100644
index 81704ab3762ad121aa2c669145d98416c7b32c48..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/Normalizer.php
+++ /dev/null
@@ -1,310 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Polyfill\Intl\Normalizer;
-
-/**
- * Normalizer is a PHP fallback implementation of the Normalizer class provided by the intl extension.
- *
- * It has been validated with Unicode 6.3 Normalization Conformance Test.
- * See http://www.unicode.org/reports/tr15/ for detailed info about Unicode normalizations.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- *
- * @internal
- */
-class Normalizer
-{
-    public const FORM_D = \Normalizer::FORM_D;
-    public const FORM_KD = \Normalizer::FORM_KD;
-    public const FORM_C = \Normalizer::FORM_C;
-    public const FORM_KC = \Normalizer::FORM_KC;
-    public const NFD = \Normalizer::NFD;
-    public const NFKD = \Normalizer::NFKD;
-    public const NFC = \Normalizer::NFC;
-    public const NFKC = \Normalizer::NFKC;
-
-    private static $C;
-    private static $D;
-    private static $KD;
-    private static $cC;
-    private static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4];
-    private static $ASCII = "\x20\x65\x69\x61\x73\x6E\x74\x72\x6F\x6C\x75\x64\x5D\x5B\x63\x6D\x70\x27\x0A\x67\x7C\x68\x76\x2E\x66\x62\x2C\x3A\x3D\x2D\x71\x31\x30\x43\x32\x2A\x79\x78\x29\x28\x4C\x39\x41\x53\x2F\x50\x22\x45\x6A\x4D\x49\x6B\x33\x3E\x35\x54\x3C\x44\x34\x7D\x42\x7B\x38\x46\x77\x52\x36\x37\x55\x47\x4E\x3B\x4A\x7A\x56\x23\x48\x4F\x57\x5F\x26\x21\x4B\x3F\x58\x51\x25\x59\x5C\x09\x5A\x2B\x7E\x5E\x24\x40\x60\x7F\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F";
-
-    public static function isNormalized(string $s, int $form = self::FORM_C)
-    {
-        if (!\in_array($form, [self::NFD, self::NFKD, self::NFC, self::NFKC])) {
-            return false;
-        }
-        if (!isset($s[strspn($s, self::$ASCII)])) {
-            return true;
-        }
-        if (self::NFC == $form && preg_match('//u', $s) && !preg_match('/[^\x00-\x{2FF}]/u', $s)) {
-            return true;
-        }
-
-        return self::normalize($s, $form) === $s;
-    }
-
-    public static function normalize(string $s, int $form = self::FORM_C)
-    {
-        if (!preg_match('//u', $s)) {
-            return false;
-        }
-
-        switch ($form) {
-            case self::NFC: $C = true; $K = false; break;
-            case self::NFD: $C = false; $K = false; break;
-            case self::NFKC: $C = true; $K = true; break;
-            case self::NFKD: $C = false; $K = true; break;
-            default:
-                if (\defined('Normalizer::NONE') && \Normalizer::NONE == $form) {
-                    return $s;
-                }
-
-                if (80000 > \PHP_VERSION_ID) {
-                    return false;
-                }
-
-                throw new \ValueError('normalizer_normalize(): Argument #2 ($form) must be a a valid normalization form');
-        }
-
-        if ('' === $s) {
-            return '';
-        }
-
-        if ($K && null === self::$KD) {
-            self::$KD = self::getData('compatibilityDecomposition');
-        }
-
-        if (null === self::$D) {
-            self::$D = self::getData('canonicalDecomposition');
-            self::$cC = self::getData('combiningClass');
-        }
-
-        if (null !== $mbEncoding = (2 /* MB_OVERLOAD_STRING */ & (int) \ini_get('mbstring.func_overload')) ? mb_internal_encoding() : null) {
-            mb_internal_encoding('8bit');
-        }
-
-        $r = self::decompose($s, $K);
-
-        if ($C) {
-            if (null === self::$C) {
-                self::$C = self::getData('canonicalComposition');
-            }
-
-            $r = self::recompose($r);
-        }
-        if (null !== $mbEncoding) {
-            mb_internal_encoding($mbEncoding);
-        }
-
-        return $r;
-    }
-
-    private static function recompose($s)
-    {
-        $ASCII = self::$ASCII;
-        $compMap = self::$C;
-        $combClass = self::$cC;
-        $ulenMask = self::$ulenMask;
-
-        $result = $tail = '';
-
-        $i = $s[0] < "\x80" ? 1 : $ulenMask[$s[0] & "\xF0"];
-        $len = \strlen($s);
-
-        $lastUchr = substr($s, 0, $i);
-        $lastUcls = isset($combClass[$lastUchr]) ? 256 : 0;
-
-        while ($i < $len) {
-            if ($s[$i] < "\x80") {
-                // ASCII chars
-
-                if ($tail) {
-                    $lastUchr .= $tail;
-                    $tail = '';
-                }
-
-                if ($j = strspn($s, $ASCII, $i + 1)) {
-                    $lastUchr .= substr($s, $i, $j);
-                    $i += $j;
-                }
-
-                $result .= $lastUchr;
-                $lastUchr = $s[$i];
-                $lastUcls = 0;
-                ++$i;
-                continue;
-            }
-
-            $ulen = $ulenMask[$s[$i] & "\xF0"];
-            $uchr = substr($s, $i, $ulen);
-
-            if ($lastUchr < "\xE1\x84\x80" || "\xE1\x84\x92" < $lastUchr
-                || $uchr < "\xE1\x85\xA1" || "\xE1\x85\xB5" < $uchr
-                || $lastUcls) {
-                // Table lookup and combining chars composition
-
-                $ucls = $combClass[$uchr] ?? 0;
-
-                if (isset($compMap[$lastUchr.$uchr]) && (!$lastUcls || $lastUcls < $ucls)) {
-                    $lastUchr = $compMap[$lastUchr.$uchr];
-                } elseif ($lastUcls = $ucls) {
-                    $tail .= $uchr;
-                } else {
-                    if ($tail) {
-                        $lastUchr .= $tail;
-                        $tail = '';
-                    }
-
-                    $result .= $lastUchr;
-                    $lastUchr = $uchr;
-                }
-            } else {
-                // Hangul chars
-
-                $L = \ord($lastUchr[2]) - 0x80;
-                $V = \ord($uchr[2]) - 0xA1;
-                $T = 0;
-
-                $uchr = substr($s, $i + $ulen, 3);
-
-                if ("\xE1\x86\xA7" <= $uchr && $uchr <= "\xE1\x87\x82") {
-                    $T = \ord($uchr[2]) - 0xA7;
-                    0 > $T && $T += 0x40;
-                    $ulen += 3;
-                }
-
-                $L = 0xAC00 + ($L * 21 + $V) * 28 + $T;
-                $lastUchr = \chr(0xE0 | $L >> 12).\chr(0x80 | $L >> 6 & 0x3F).\chr(0x80 | $L & 0x3F);
-            }
-
-            $i += $ulen;
-        }
-
-        return $result.$lastUchr.$tail;
-    }
-
-    private static function decompose($s, $c)
-    {
-        $result = '';
-
-        $ASCII = self::$ASCII;
-        $decompMap = self::$D;
-        $combClass = self::$cC;
-        $ulenMask = self::$ulenMask;
-        if ($c) {
-            $compatMap = self::$KD;
-        }
-
-        $c = [];
-        $i = 0;
-        $len = \strlen($s);
-
-        while ($i < $len) {
-            if ($s[$i] < "\x80") {
-                // ASCII chars
-
-                if ($c) {
-                    ksort($c);
-                    $result .= implode('', $c);
-                    $c = [];
-                }
-
-                $j = 1 + strspn($s, $ASCII, $i + 1);
-                $result .= substr($s, $i, $j);
-                $i += $j;
-                continue;
-            }
-
-            $ulen = $ulenMask[$s[$i] & "\xF0"];
-            $uchr = substr($s, $i, $ulen);
-            $i += $ulen;
-
-            if ($uchr < "\xEA\xB0\x80" || "\xED\x9E\xA3" < $uchr) {
-                // Table lookup
-
-                if ($uchr !== $j = $compatMap[$uchr] ?? ($decompMap[$uchr] ?? $uchr)) {
-                    $uchr = $j;
-
-                    $j = \strlen($uchr);
-                    $ulen = $uchr[0] < "\x80" ? 1 : $ulenMask[$uchr[0] & "\xF0"];
-
-                    if ($ulen != $j) {
-                        // Put trailing chars in $s
-
-                        $j -= $ulen;
-                        $i -= $j;
-
-                        if (0 > $i) {
-                            $s = str_repeat(' ', -$i).$s;
-                            $len -= $i;
-                            $i = 0;
-                        }
-
-                        while ($j--) {
-                            $s[$i + $j] = $uchr[$ulen + $j];
-                        }
-
-                        $uchr = substr($uchr, 0, $ulen);
-                    }
-                }
-                if (isset($combClass[$uchr])) {
-                    // Combining chars, for sorting
-
-                    if (!isset($c[$combClass[$uchr]])) {
-                        $c[$combClass[$uchr]] = '';
-                    }
-                    $c[$combClass[$uchr]] .= $uchr;
-                    continue;
-                }
-            } else {
-                // Hangul chars
-
-                $uchr = unpack('C*', $uchr);
-                $j = (($uchr[1] - 224) << 12) + (($uchr[2] - 128) << 6) + $uchr[3] - 0xAC80;
-
-                $uchr = "\xE1\x84".\chr(0x80 + (int) ($j / 588))
-                       ."\xE1\x85".\chr(0xA1 + (int) (($j % 588) / 28));
-
-                if ($j %= 28) {
-                    $uchr .= $j < 25
-                        ? ("\xE1\x86".\chr(0xA7 + $j))
-                        : ("\xE1\x87".\chr(0x67 + $j));
-                }
-            }
-            if ($c) {
-                ksort($c);
-                $result .= implode('', $c);
-                $c = [];
-            }
-
-            $result .= $uchr;
-        }
-
-        if ($c) {
-            ksort($c);
-            $result .= implode('', $c);
-        }
-
-        return $result;
-    }
-
-    private static function getData($file)
-    {
-        if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) {
-            return require $file;
-        }
-
-        return false;
-    }
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/README.md b/civicrm/vendor/symfony/polyfill-intl-normalizer/README.md
deleted file mode 100644
index b9b762e850a6ed076dc948092548e92721626a83..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Symfony Polyfill / Intl: Normalizer
-===================================
-
-This component provides a fallback implementation for the
-[`Normalizer`](https://php.net/Normalizer) class provided
-by the [Intl](https://php.net/intl) extension.
-
-More information can be found in the
-[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
-
-License
-=======
-
-This library is released under the [MIT license](LICENSE).
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php b/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php
deleted file mode 100644
index 0fdfc890a2a8c5dee5e9d461ce90f0fdb55f4518..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-class Normalizer extends Symfony\Polyfill\Intl\Normalizer\Normalizer
-{
-    /**
-     * @deprecated since ICU 56 and removed in PHP 8
-     */
-    public const NONE = 2;
-    public const FORM_D = 4;
-    public const FORM_KD = 8;
-    public const FORM_C = 16;
-    public const FORM_KC = 32;
-    public const NFD = 4;
-    public const NFKD = 8;
-    public const NFC = 16;
-    public const NFKC = 32;
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php b/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php
deleted file mode 100644
index db4764419e7e69041699e33c337beaac6cf319f2..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php
+++ /dev/null
@@ -1,945 +0,0 @@
-<?php
-
-return array (
-  'À' => 'À',
-  'Á' => 'Á',
-  'Â' => 'Â',
-  'Ã' => 'Ã',
-  'Ä' => 'Ä',
-  'AÌŠ' => 'Ã…',
-  'Ç' => 'Ç',
-  'È' => 'È',
-  'É' => 'É',
-  'Ê' => 'Ê',
-  'Ë' => 'Ë',
-  'Ì' => 'Ì',
-  'Í' => 'Í',
-  'IÌ‚' => 'ÃŽ',
-  'Ï' => 'Ï',
-  'Ñ' => 'Ñ',
-  'OÌ€' => 'Ã’',
-  'Ó' => 'Ó',
-  'Ô' => 'Ô',
-  'Õ' => 'Õ',
-  'Ö' => 'Ö',
-  'Ù' => 'Ù',
-  'Ú' => 'Ú',
-  'Û' => 'Û',
-  'Ü' => 'Ü',
-  'Ý' => 'Ý',
-  'à' => 'à',
-  'á' => 'á',
-  'â' => 'â',
-  'ã' => 'ã',
-  'ä' => 'ä',
-  'aÌŠ' => 'Ã¥',
-  'ç' => 'ç',
-  'è' => 'è',
-  'é' => 'é',
-  'ê' => 'ê',
-  'ë' => 'ë',
-  'ì' => 'ì',
-  'í' => 'í',
-  'î' => 'î',
-  'ï' => 'ï',
-  'ñ' => 'ñ',
-  'ò' => 'ò',
-  'ó' => 'ó',
-  'ô' => 'ô',
-  'õ' => 'õ',
-  'ö' => 'ö',
-  'ù' => 'ù',
-  'ú' => 'ú',
-  'û' => 'û',
-  'ü' => 'ü',
-  'ý' => 'ý',
-  'ÿ' => 'ÿ',
-  'AÌ„' => 'Ä€',
-  'ā' => 'ā',
-  'Ă' => 'Ă',
-  'ă' => 'ă',
-  'Ą' => 'Ą',
-  'ą' => 'ą',
-  'Ć' => 'Ć',
-  'ć' => 'ć',
-  'Ĉ' => 'Ĉ',
-  'ĉ' => 'ĉ',
-  'Ċ' => 'Ċ',
-  'ċ' => 'ċ',
-  'Č' => 'Č',
-  'č' => 'č',
-  'Ď' => 'Ď',
-  'ď' => 'ď',
-  'EÌ„' => 'Ä’',
-  'ē' => 'ē',
-  'Ĕ' => 'Ĕ',
-  'ĕ' => 'ĕ',
-  'Ė' => 'Ė',
-  'ė' => 'ė',
-  'Ę' => 'Ę',
-  'ę' => 'ę',
-  'Ě' => 'Ě',
-  'ě' => 'ě',
-  'Ĝ' => 'Ĝ',
-  'ĝ' => 'ĝ',
-  'Ğ' => 'Ğ',
-  'ğ' => 'ğ',
-  'Ġ' => 'Ġ',
-  'ġ' => 'ġ',
-  'Ģ' => 'Ģ',
-  'ģ' => 'ģ',
-  'Ĥ' => 'Ĥ',
-  'ĥ' => 'ĥ',
-  'Ĩ' => 'Ĩ',
-  'ĩ' => 'ĩ',
-  'Ī' => 'Ī',
-  'ī' => 'ī',
-  'Ĭ' => 'Ĭ',
-  'ĭ' => 'ĭ',
-  'Į' => 'Į',
-  'į' => 'į',
-  'İ' => 'İ',
-  'JÌ‚' => 'Ä´',
-  'ĵ' => 'ĵ',
-  'Ķ' => 'Ķ',
-  'ķ' => 'ķ',
-  'Ĺ' => 'Ĺ',
-  'ĺ' => 'ĺ',
-  'Ļ' => 'Ļ',
-  'ļ' => 'ļ',
-  'Ľ' => 'Ľ',
-  'ľ' => 'ľ',
-  'Ń' => 'Ń',
-  'ń' => 'ń',
-  'Ņ' => 'Ņ',
-  'ņ' => 'ņ',
-  'Ň' => 'Ň',
-  'ň' => 'ň',
-  'Ō' => 'Ō',
-  'ō' => 'ō',
-  'Ŏ' => 'Ŏ',
-  'ŏ' => 'ŏ',
-  'Ő' => 'Ő',
-  'ő' => 'ő',
-  'Ŕ' => 'Ŕ',
-  'ŕ' => 'ŕ',
-  'Ŗ' => 'Ŗ',
-  'ŗ' => 'ŗ',
-  'Ř' => 'Ř',
-  'ř' => 'ř',
-  'Ś' => 'Ś',
-  'ś' => 'ś',
-  'Ŝ' => 'Ŝ',
-  'ŝ' => 'ŝ',
-  'Ş' => 'Ş',
-  'ş' => 'ş',
-  'Š' => 'Š',
-  'š' => 'š',
-  'Ţ' => 'Ţ',
-  'ţ' => 'ţ',
-  'Ť' => 'Ť',
-  'ť' => 'ť',
-  'Ũ' => 'Ũ',
-  'ũ' => 'ũ',
-  'Ū' => 'Ū',
-  'ū' => 'ū',
-  'Ŭ' => 'Ŭ',
-  'ŭ' => 'ŭ',
-  'UÌŠ' => 'Å®',
-  'ů' => 'ů',
-  'UÌ‹' => 'Å°',
-  'ű' => 'ű',
-  'Ų' => 'Ų',
-  'ų' => 'ų',
-  'WÌ‚' => 'Å´',
-  'ŵ' => 'ŵ',
-  'Ŷ' => 'Ŷ',
-  'ŷ' => 'ŷ',
-  'Ÿ' => 'Ÿ',
-  'Ź' => 'Ź',
-  'ź' => 'ź',
-  'Ż' => 'Ż',
-  'ż' => 'ż',
-  'Ž' => 'Ž',
-  'ž' => 'ž',
-  'OÌ›' => 'Æ ',
-  'oÌ›' => 'Æ¡',
-  'Ư' => 'Ư',
-  'uÌ›' => 'Æ°',
-  'Ǎ' => 'Ǎ',
-  'ǎ' => 'ǎ',
-  'Ǐ' => 'Ǐ',
-  'ǐ' => 'ǐ',
-  'Ǒ' => 'Ǒ',
-  'ǒ' => 'ǒ',
-  'Ǔ' => 'Ǔ',
-  'ǔ' => 'ǔ',
-  'Ǖ' => 'Ǖ',
-  'ǖ' => 'ǖ',
-  'Ǘ' => 'Ǘ',
-  'ǘ' => 'ǘ',
-  'Ǚ' => 'Ǚ',
-  'ǚ' => 'ǚ',
-  'Ǜ' => 'Ǜ',
-  'ǜ' => 'ǜ',
-  'Ǟ' => 'Ǟ',
-  'ǟ' => 'ǟ',
-  'Ǡ' => 'Ǡ',
-  'ǡ' => 'ǡ',
-  'Ǣ' => 'Ǣ',
-  'ǣ' => 'ǣ',
-  'Ǧ' => 'Ǧ',
-  'ǧ' => 'ǧ',
-  'Ǩ' => 'Ǩ',
-  'ǩ' => 'ǩ',
-  'Ǫ' => 'Ǫ',
-  'ǫ' => 'ǫ',
-  'Ǭ' => 'Ǭ',
-  'Ç«Ì„' => 'Ç­',
-  'Ǯ' => 'Ǯ',
-  'ǯ' => 'ǯ',
-  'ǰ' => 'ǰ',
-  'Ǵ' => 'Ǵ',
-  'ǵ' => 'ǵ',
-  'Ǹ' => 'Ǹ',
-  'ǹ' => 'ǹ',
-  'Ǻ' => 'Ǻ',
-  'ǻ' => 'ǻ',
-  'Ǽ' => 'Ǽ',
-  'ǽ' => 'ǽ',
-  'Ǿ' => 'Ǿ',
-  'ǿ' => 'ǿ',
-  'Ȁ' => 'Ȁ',
-  'ȁ' => 'ȁ',
-  'AÌ‘' => 'È‚',
-  'ȃ' => 'ȃ',
-  'Ȅ' => 'Ȅ',
-  'ȅ' => 'ȅ',
-  'Ȇ' => 'Ȇ',
-  'ȇ' => 'ȇ',
-  'Ȉ' => 'Ȉ',
-  'ȉ' => 'ȉ',
-  'IÌ‘' => 'ÈŠ',
-  'ȋ' => 'ȋ',
-  'Ȍ' => 'Ȍ',
-  'ȍ' => 'ȍ',
-  'OÌ‘' => 'ÈŽ',
-  'ȏ' => 'ȏ',
-  'Ȑ' => 'Ȑ',
-  'ȑ' => 'ȑ',
-  'RÌ‘' => 'È’',
-  'ȓ' => 'ȓ',
-  'Ȕ' => 'Ȕ',
-  'ȕ' => 'ȕ',
-  'UÌ‘' => 'È–',
-  'ȗ' => 'ȗ',
-  'Ș' => 'Ș',
-  'ș' => 'ș',
-  'Ț' => 'Ț',
-  'ț' => 'ț',
-  'Ȟ' => 'Ȟ',
-  'ȟ' => 'ȟ',
-  'Ȧ' => 'Ȧ',
-  'ȧ' => 'ȧ',
-  'Ȩ' => 'Ȩ',
-  'ȩ' => 'ȩ',
-  'Ȫ' => 'Ȫ',
-  'ȫ' => 'ȫ',
-  'Ȭ' => 'Ȭ',
-  'ȭ' => 'ȭ',
-  'Ȯ' => 'Ȯ',
-  'ȯ' => 'ȯ',
-  'Ȱ' => 'Ȱ',
-  'ȱ' => 'ȱ',
-  'Ȳ' => 'Ȳ',
-  'ȳ' => 'ȳ',
-  '΅' => '΅',
-  'Ά' => 'Ά',
-  'Έ' => 'Έ',
-  'Ή' => 'Ή',
-  'Ί' => 'Ί',
-  'Ό' => 'Ό',
-  'Ύ' => 'Ύ',
-  'Ώ' => 'Ώ',
-  'ΐ' => 'ΐ',
-  'Ϊ' => 'Ϊ',
-  'Ϋ' => 'Ϋ',
-  'ά' => 'ά',
-  'έ' => 'έ',
-  'ή' => 'ή',
-  'ί' => 'ί',
-  'ΰ' => 'ΰ',
-  'ϊ' => 'ϊ',
-  'ϋ' => 'ϋ',
-  'ό' => 'ό',
-  'ύ' => 'ύ',
-  'ώ' => 'ώ',
-  'ϓ' => 'ϓ',
-  'ϔ' => 'ϔ',
-  'Ѐ' => 'Ѐ',
-  'Ё' => 'Ё',
-  'Ѓ' => 'Ѓ',
-  'Ї' => 'Ї',
-  'Ќ' => 'Ќ',
-  'Ѝ' => 'Ѝ',
-  'Ў' => 'Ў',
-  'Й' => 'Й',
-  'й' => 'й',
-  'ѐ' => 'ѐ',
-  'ё' => 'ё',
-  'ѓ' => 'ѓ',
-  'ї' => 'ї',
-  'ќ' => 'ќ',
-  'ѝ' => 'ѝ',
-  'ў' => 'ў',
-  'Ѷ' => 'Ѷ',
-  'ѷ' => 'ѷ',
-  'Ӂ' => 'Ӂ',
-  'ӂ' => 'ӂ',
-  'Ӑ' => 'Ӑ',
-  'ӑ' => 'ӑ',
-  'Ӓ' => 'Ӓ',
-  'ӓ' => 'ӓ',
-  'Ӗ' => 'Ӗ',
-  'ӗ' => 'ӗ',
-  'Ӛ' => 'Ӛ',
-  'ӛ' => 'ӛ',
-  'Ӝ' => 'Ӝ',
-  'ӝ' => 'ӝ',
-  'Ӟ' => 'Ӟ',
-  'ӟ' => 'ӟ',
-  'Ӣ' => 'Ӣ',
-  'ӣ' => 'ӣ',
-  'Ӥ' => 'Ӥ',
-  'ӥ' => 'ӥ',
-  'Ӧ' => 'Ӧ',
-  'ӧ' => 'ӧ',
-  'Ӫ' => 'Ӫ',
-  'ӫ' => 'ӫ',
-  'Ӭ' => 'Ӭ',
-  'ӭ' => 'ӭ',
-  'Ӯ' => 'Ӯ',
-  'ӯ' => 'ӯ',
-  'Ӱ' => 'Ӱ',
-  'ӱ' => 'ӱ',
-  'Ӳ' => 'Ӳ',
-  'ӳ' => 'ӳ',
-  'Ӵ' => 'Ӵ',
-  'ӵ' => 'ӵ',
-  'Ӹ' => 'Ӹ',
-  'ӹ' => 'ӹ',
-  'آ' => 'آ',
-  'أ' => 'أ',
-  'ؤ' => 'ؤ',
-  'إ' => 'إ',
-  'ئ' => 'ئ',
-  'Û•Ù”' => 'Û€',
-  'ۂ' => 'ۂ',
-  'Û’Ù”' => 'Û“',
-  'ऩ' => 'ऩ',
-  'ऱ' => 'ऱ',
-  'ऴ' => 'ऴ',
-  'ো' => 'ো',
-  'ৌ' => 'ৌ',
-  'ୈ' => 'ୈ',
-  'ୋ' => 'ୋ',
-  'ୌ' => 'ୌ',
-  'ஔ' => 'ஔ',
-  'ொ' => 'ொ',
-  'ோ' => 'ோ',
-  'ௌ' => 'ௌ',
-  'ై' => 'ై',
-  'ೀ' => 'ೀ',
-  'ೇ' => 'ೇ',
-  'ೈ' => 'ೈ',
-  'ೊ' => 'ೊ',
-  'ೋ' => 'ೋ',
-  'ൊ' => 'ൊ',
-  'ോ' => 'ോ',
-  'ൌ' => 'ൌ',
-  'ේ' => 'ේ',
-  'ො' => 'ො',
-  'ෝ' => 'ෝ',
-  'ෞ' => 'ෞ',
-  'ဦ' => 'ဦ',
-  'ᬆ' => 'ᬆ',
-  'ᬈ' => 'ᬈ',
-  'ᬊ' => 'ᬊ',
-  'ᬌ' => 'ᬌ',
-  'ᬎ' => 'ᬎ',
-  'ᬒ' => 'ᬒ',
-  'ᬻ' => 'ᬻ',
-  'ᬽ' => 'ᬽ',
-  'ᭀ' => 'ᭀ',
-  'ᭁ' => 'ᭁ',
-  'ᭃ' => 'ᭃ',
-  'Ḁ' => 'Ḁ',
-  'ḁ' => 'ḁ',
-  'Ḃ' => 'Ḃ',
-  'ḃ' => 'ḃ',
-  'Ḅ' => 'Ḅ',
-  'ḅ' => 'ḅ',
-  'Ḇ' => 'Ḇ',
-  'ḇ' => 'ḇ',
-  'Ḉ' => 'Ḉ',
-  'ḉ' => 'ḉ',
-  'Ḋ' => 'Ḋ',
-  'ḋ' => 'ḋ',
-  'Ḍ' => 'Ḍ',
-  'ḍ' => 'ḍ',
-  'Ḏ' => 'Ḏ',
-  'ḏ' => 'ḏ',
-  'Ḑ' => 'Ḑ',
-  'ḑ' => 'ḑ',
-  'Ḓ' => 'Ḓ',
-  'ḓ' => 'ḓ',
-  'Ḕ' => 'Ḕ',
-  'ḕ' => 'ḕ',
-  'Ḗ' => 'Ḗ',
-  'ḗ' => 'ḗ',
-  'Ḙ' => 'Ḙ',
-  'ḙ' => 'ḙ',
-  'Ḛ' => 'Ḛ',
-  'ḛ' => 'ḛ',
-  'Ḝ' => 'Ḝ',
-  'ḝ' => 'ḝ',
-  'Ḟ' => 'Ḟ',
-  'ḟ' => 'ḟ',
-  'Ḡ' => 'Ḡ',
-  'ḡ' => 'ḡ',
-  'Ḣ' => 'Ḣ',
-  'ḣ' => 'ḣ',
-  'Ḥ' => 'Ḥ',
-  'ḥ' => 'ḥ',
-  'Ḧ' => 'Ḧ',
-  'ḧ' => 'ḧ',
-  'Ḩ' => 'Ḩ',
-  'ḩ' => 'ḩ',
-  'Ḫ' => 'Ḫ',
-  'ḫ' => 'ḫ',
-  'Ḭ' => 'Ḭ',
-  'ḭ' => 'ḭ',
-  'Ḯ' => 'Ḯ',
-  'ḯ' => 'ḯ',
-  'Ḱ' => 'Ḱ',
-  'ḱ' => 'ḱ',
-  'Ḳ' => 'Ḳ',
-  'ḳ' => 'ḳ',
-  'Ḵ' => 'Ḵ',
-  'ḵ' => 'ḵ',
-  'Ḷ' => 'Ḷ',
-  'ḷ' => 'ḷ',
-  'Ḹ' => 'Ḹ',
-  'ḹ' => 'ḹ',
-  'Ḻ' => 'Ḻ',
-  'ḻ' => 'ḻ',
-  'Ḽ' => 'Ḽ',
-  'ḽ' => 'ḽ',
-  'Ḿ' => 'Ḿ',
-  'ḿ' => 'ḿ',
-  'Ṁ' => 'Ṁ',
-  'ṁ' => 'ṁ',
-  'Ṃ' => 'Ṃ',
-  'ṃ' => 'ṃ',
-  'Ṅ' => 'Ṅ',
-  'ṅ' => 'ṅ',
-  'Ṇ' => 'Ṇ',
-  'ṇ' => 'ṇ',
-  'Ṉ' => 'Ṉ',
-  'ṉ' => 'ṉ',
-  'Ṋ' => 'Ṋ',
-  'ṋ' => 'ṋ',
-  'Ṍ' => 'Ṍ',
-  'ṍ' => 'ṍ',
-  'Ṏ' => 'Ṏ',
-  'ṏ' => 'ṏ',
-  'Ṑ' => 'Ṑ',
-  'ṑ' => 'ṑ',
-  'Ṓ' => 'Ṓ',
-  'ṓ' => 'ṓ',
-  'Ṕ' => 'Ṕ',
-  'ṕ' => 'ṕ',
-  'Ṗ' => 'Ṗ',
-  'ṗ' => 'ṗ',
-  'Ṙ' => 'Ṙ',
-  'ṙ' => 'ṙ',
-  'Ṛ' => 'Ṛ',
-  'ṛ' => 'ṛ',
-  'Ṝ' => 'Ṝ',
-  'ṝ' => 'ṝ',
-  'Ṟ' => 'Ṟ',
-  'ṟ' => 'ṟ',
-  'Ṡ' => 'Ṡ',
-  'ṡ' => 'ṡ',
-  'SÌ£' => 'á¹¢',
-  'ṣ' => 'ṣ',
-  'Ṥ' => 'Ṥ',
-  'ṥ' => 'ṥ',
-  'Ṧ' => 'Ṧ',
-  'ṧ' => 'ṧ',
-  'Ṩ' => 'Ṩ',
-  'ṩ' => 'ṩ',
-  'Ṫ' => 'Ṫ',
-  'ṫ' => 'ṫ',
-  'Ṭ' => 'Ṭ',
-  'ṭ' => 'ṭ',
-  'Ṯ' => 'Ṯ',
-  'ṯ' => 'ṯ',
-  'TÌ­' => 'á¹°',
-  'tÌ­' => 'á¹±',
-  'Ṳ' => 'Ṳ',
-  'ṳ' => 'ṳ',
-  'UÌ°' => 'á¹´',
-  'uÌ°' => 'á¹µ',
-  'Ṷ' => 'Ṷ',
-  'uÌ­' => 'á¹·',
-  'Ṹ' => 'Ṹ',
-  'ṹ' => 'ṹ',
-  'Ṻ' => 'Ṻ',
-  'ṻ' => 'ṻ',
-  'Ṽ' => 'Ṽ',
-  'ṽ' => 'ṽ',
-  'VÌ£' => 'á¹¾',
-  'ṿ' => 'ṿ',
-  'Ẁ' => 'Ẁ',
-  'ẁ' => 'ẁ',
-  'Ẃ' => 'Ẃ',
-  'ẃ' => 'ẃ',
-  'Ẅ' => 'Ẅ',
-  'ẅ' => 'ẅ',
-  'Ẇ' => 'Ẇ',
-  'ẇ' => 'ẇ',
-  'Ẉ' => 'Ẉ',
-  'ẉ' => 'ẉ',
-  'Ẋ' => 'Ẋ',
-  'ẋ' => 'ẋ',
-  'Ẍ' => 'Ẍ',
-  'ẍ' => 'ẍ',
-  'Ẏ' => 'Ẏ',
-  'ẏ' => 'ẏ',
-  'Ẑ' => 'Ẑ',
-  'ẑ' => 'ẑ',
-  'Ẓ' => 'Ẓ',
-  'ẓ' => 'ẓ',
-  'Ẕ' => 'Ẕ',
-  'ẕ' => 'ẕ',
-  'ẖ' => 'ẖ',
-  'ẗ' => 'ẗ',
-  'ẘ' => 'ẘ',
-  'ẙ' => 'ẙ',
-  'ẛ' => 'ẛ',
-  'Ạ' => 'Ạ',
-  'ạ' => 'ạ',
-  'Ả' => 'Ả',
-  'ả' => 'ả',
-  'Ấ' => 'Ấ',
-  'ấ' => 'ấ',
-  'Ầ' => 'Ầ',
-  'ầ' => 'ầ',
-  'Ẩ' => 'Ẩ',
-  'ẩ' => 'ẩ',
-  'Ẫ' => 'Ẫ',
-  'ẫ' => 'ẫ',
-  'Ậ' => 'Ậ',
-  'ậ' => 'ậ',
-  'Ắ' => 'Ắ',
-  'ắ' => 'ắ',
-  'Ằ' => 'Ằ',
-  'ằ' => 'ằ',
-  'Ẳ' => 'Ẳ',
-  'ẳ' => 'ẳ',
-  'Ẵ' => 'Ẵ',
-  'ẵ' => 'ẵ',
-  'Ặ' => 'Ặ',
-  'ặ' => 'ặ',
-  'Ẹ' => 'Ẹ',
-  'ẹ' => 'ẹ',
-  'Ẻ' => 'Ẻ',
-  'ẻ' => 'ẻ',
-  'Ẽ' => 'Ẽ',
-  'ẽ' => 'ẽ',
-  'Ế' => 'Ế',
-  'ế' => 'ế',
-  'Ề' => 'Ề',
-  'ề' => 'ề',
-  'Ể' => 'Ể',
-  'ể' => 'ể',
-  'Ễ' => 'Ễ',
-  'ễ' => 'ễ',
-  'Ệ' => 'Ệ',
-  'ệ' => 'ệ',
-  'Ỉ' => 'Ỉ',
-  'ỉ' => 'ỉ',
-  'Ị' => 'Ị',
-  'ị' => 'ị',
-  'Ọ' => 'Ọ',
-  'ọ' => 'ọ',
-  'Ỏ' => 'Ỏ',
-  'ỏ' => 'ỏ',
-  'Ố' => 'Ố',
-  'ố' => 'ố',
-  'Ồ' => 'Ồ',
-  'ồ' => 'ồ',
-  'Ổ' => 'Ổ',
-  'ổ' => 'ổ',
-  'Ỗ' => 'Ỗ',
-  'ỗ' => 'ỗ',
-  'Ộ' => 'Ộ',
-  'ộ' => 'ộ',
-  'Ớ' => 'Ớ',
-  'ớ' => 'ớ',
-  'Ờ' => 'Ờ',
-  'ờ' => 'ờ',
-  'Ở' => 'Ở',
-  'ở' => 'ở',
-  'Ỡ' => 'Ỡ',
-  'ỡ' => 'ỡ',
-  'Ợ' => 'Ợ',
-  'ợ' => 'ợ',
-  'Ụ' => 'Ụ',
-  'ụ' => 'ụ',
-  'Ủ' => 'Ủ',
-  'ủ' => 'ủ',
-  'Ứ' => 'Ứ',
-  'ứ' => 'ứ',
-  'Ừ' => 'Ừ',
-  'ừ' => 'ừ',
-  'Ử' => 'Ử',
-  'ử' => 'ử',
-  'Ữ' => 'Ữ',
-  'ữ' => 'ữ',
-  'Ự' => 'Ự',
-  'Æ°Ì£' => 'á»±',
-  'Ỳ' => 'Ỳ',
-  'ỳ' => 'ỳ',
-  'YÌ£' => 'á»´',
-  'ỵ' => 'ỵ',
-  'Ỷ' => 'Ỷ',
-  'ỷ' => 'ỷ',
-  'Ỹ' => 'Ỹ',
-  'ỹ' => 'ỹ',
-  'ἀ' => 'ἀ',
-  'ἁ' => 'ἁ',
-  'ἂ' => 'ἂ',
-  'ἃ' => 'ἃ',
-  'ἄ' => 'ἄ',
-  'ἅ' => 'ἅ',
-  'ἆ' => 'ἆ',
-  'ἇ' => 'ἇ',
-  'Ἀ' => 'Ἀ',
-  'Ἁ' => 'Ἁ',
-  'Ἂ' => 'Ἂ',
-  'Ἃ' => 'Ἃ',
-  'Ἄ' => 'Ἄ',
-  'Ἅ' => 'Ἅ',
-  'Ἆ' => 'Ἆ',
-  'Ἇ' => 'Ἇ',
-  'ἐ' => 'ἐ',
-  'ἑ' => 'ἑ',
-  'ἒ' => 'ἒ',
-  'ἓ' => 'ἓ',
-  'ἔ' => 'ἔ',
-  'ἕ' => 'ἕ',
-  'Ἐ' => 'Ἐ',
-  'Ἑ' => 'Ἑ',
-  'Ἒ' => 'Ἒ',
-  'Ἓ' => 'Ἓ',
-  'Ἔ' => 'Ἔ',
-  'Ἕ' => 'Ἕ',
-  'ἠ' => 'ἠ',
-  'ἡ' => 'ἡ',
-  'ἢ' => 'ἢ',
-  'ἣ' => 'ἣ',
-  'ἤ' => 'ἤ',
-  'ἥ' => 'ἥ',
-  'ἦ' => 'ἦ',
-  'ἧ' => 'ἧ',
-  'Ἠ' => 'Ἠ',
-  'Ἡ' => 'Ἡ',
-  'Ἢ' => 'Ἢ',
-  'Ἣ' => 'Ἣ',
-  'Ἤ' => 'Ἤ',
-  'Ἥ' => 'Ἥ',
-  'Ἦ' => 'Ἦ',
-  'Ἧ' => 'Ἧ',
-  'ἰ' => 'ἰ',
-  'ἱ' => 'ἱ',
-  'á¼°Ì€' => 'á¼²',
-  'ἳ' => 'ἳ',
-  'ἴ' => 'ἴ',
-  'ἵ' => 'ἵ',
-  'ἶ' => 'ἶ',
-  'ἷ' => 'ἷ',
-  'Ἰ' => 'Ἰ',
-  'Ἱ' => 'Ἱ',
-  'Ἲ' => 'Ἲ',
-  'Ἳ' => 'Ἳ',
-  'Ἴ' => 'Ἴ',
-  'Ἵ' => 'Ἵ',
-  'Ἶ' => 'Ἶ',
-  'Ἷ' => 'Ἷ',
-  'ὀ' => 'ὀ',
-  'ὁ' => 'ὁ',
-  'ὂ' => 'ὂ',
-  'ὃ' => 'ὃ',
-  'ὄ' => 'ὄ',
-  'ὅ' => 'ὅ',
-  'Ὀ' => 'Ὀ',
-  'Ὁ' => 'Ὁ',
-  'Ὂ' => 'Ὂ',
-  'Ὃ' => 'Ὃ',
-  'Ὄ' => 'Ὄ',
-  'Ὅ' => 'Ὅ',
-  'ὐ' => 'ὐ',
-  'ὑ' => 'ὑ',
-  'ὒ' => 'ὒ',
-  'ὓ' => 'ὓ',
-  'ὔ' => 'ὔ',
-  'ὕ' => 'ὕ',
-  'ὖ' => 'ὖ',
-  'ὗ' => 'ὗ',
-  'Ὑ' => 'Ὑ',
-  'Ὓ' => 'Ὓ',
-  'Ὕ' => 'Ὕ',
-  'Ὗ' => 'Ὗ',
-  'ὠ' => 'ὠ',
-  'ὡ' => 'ὡ',
-  'ὢ' => 'ὢ',
-  'ὣ' => 'ὣ',
-  'ὤ' => 'ὤ',
-  'ὥ' => 'ὥ',
-  'ὦ' => 'ὦ',
-  'ὧ' => 'ὧ',
-  'Ὠ' => 'Ὠ',
-  'Ὡ' => 'Ὡ',
-  'Ὢ' => 'Ὢ',
-  'Ὣ' => 'Ὣ',
-  'Ὤ' => 'Ὤ',
-  'Ὥ' => 'Ὥ',
-  'Ὦ' => 'Ὦ',
-  'Ὧ' => 'Ὧ',
-  'ὰ' => 'ὰ',
-  'ὲ' => 'ὲ',
-  'ὴ' => 'ὴ',
-  'ὶ' => 'ὶ',
-  'ὸ' => 'ὸ',
-  'ὺ' => 'ὺ',
-  'ὼ' => 'ὼ',
-  'ᾀ' => 'ᾀ',
-  'ᾁ' => 'ᾁ',
-  'ᾂ' => 'ᾂ',
-  'ᾃ' => 'ᾃ',
-  'ᾄ' => 'ᾄ',
-  'á¼…Í…' => 'á¾…',
-  'ᾆ' => 'ᾆ',
-  'ᾇ' => 'ᾇ',
-  'ᾈ' => 'ᾈ',
-  'ᾉ' => 'ᾉ',
-  'ᾊ' => 'ᾊ',
-  'ᾋ' => 'ᾋ',
-  'ᾌ' => 'ᾌ',
-  'ᾍ' => 'ᾍ',
-  'ᾎ' => 'ᾎ',
-  'ᾏ' => 'ᾏ',
-  'ᾐ' => 'ᾐ',
-  'ᾑ' => 'ᾑ',
-  'ᾒ' => 'ᾒ',
-  'ᾓ' => 'ᾓ',
-  'ᾔ' => 'ᾔ',
-  'ᾕ' => 'ᾕ',
-  'ᾖ' => 'ᾖ',
-  'ᾗ' => 'ᾗ',
-  'ᾘ' => 'ᾘ',
-  'ᾙ' => 'ᾙ',
-  'ᾚ' => 'ᾚ',
-  'ᾛ' => 'ᾛ',
-  'ᾜ' => 'ᾜ',
-  'ᾝ' => 'ᾝ',
-  'ᾞ' => 'ᾞ',
-  'ᾟ' => 'ᾟ',
-  'á½ Í…' => 'á¾ ',
-  'ᾡ' => 'ᾡ',
-  'ᾢ' => 'ᾢ',
-  'ᾣ' => 'ᾣ',
-  'ᾤ' => 'ᾤ',
-  'ᾥ' => 'ᾥ',
-  'ᾦ' => 'ᾦ',
-  'ᾧ' => 'ᾧ',
-  'ᾨ' => 'ᾨ',
-  'ᾩ' => 'ᾩ',
-  'ᾪ' => 'ᾪ',
-  'ᾫ' => 'ᾫ',
-  'ᾬ' => 'ᾬ',
-  'á½­Í…' => 'á¾­',
-  'ᾮ' => 'ᾮ',
-  'ᾯ' => 'ᾯ',
-  'ᾰ' => 'ᾰ',
-  'ᾱ' => 'ᾱ',
-  'á½°Í…' => 'á¾²',
-  'ᾳ' => 'ᾳ',
-  'ᾴ' => 'ᾴ',
-  'ᾶ' => 'ᾶ',
-  'ᾷ' => 'ᾷ',
-  'Ᾰ' => 'Ᾰ',
-  'Ᾱ' => 'Ᾱ',
-  'Ὰ' => 'Ὰ',
-  'ᾼ' => 'ᾼ',
-  '῁' => '῁',
-  'á½´Í…' => 'á¿‚',
-  'ῃ' => 'ῃ',
-  'ῄ' => 'ῄ',
-  'ῆ' => 'ῆ',
-  'ῇ' => 'ῇ',
-  'Ὲ' => 'Ὲ',
-  'Ὴ' => 'Ὴ',
-  'ῌ' => 'ῌ',
-  '῍' => '῍',
-  '῎' => '῎',
-  '῏' => '῏',
-  'ῐ' => 'ῐ',
-  'ῑ' => 'ῑ',
-  'ÏŠÌ€' => 'á¿’',
-  'ῖ' => 'ῖ',
-  'ÏŠÍ‚' => 'á¿—',
-  'Ῐ' => 'Ῐ',
-  'Ῑ' => 'Ῑ',
-  'Ὶ' => 'Ὶ',
-  '῝' => '῝',
-  '῞' => '῞',
-  '῟' => '῟',
-  'ῠ' => 'ῠ',
-  'Ï…Ì„' => 'á¿¡',
-  'Ï‹Ì€' => 'á¿¢',
-  'ῤ' => 'ῤ',
-  'ῥ' => 'ῥ',
-  'ῦ' => 'ῦ',
-  'ῧ' => 'ῧ',
-  'Ῠ' => 'Ῠ',
-  'Ῡ' => 'Ῡ',
-  'Ὺ' => 'Ὺ',
-  'Ῥ' => 'Ῥ',
-  '῭' => '῭',
-  'ῲ' => 'ῲ',
-  'ῳ' => 'ῳ',
-  'ÏŽÍ…' => 'á¿´',
-  'ῶ' => 'ῶ',
-  'ῷ' => 'ῷ',
-  'Ὸ' => 'Ὸ',
-  'Ὼ' => 'Ὼ',
-  'ῼ' => 'ῼ',
-  '↚' => '↚',
-  '↛' => '↛',
-  '↮' => '↮',
-  '⇍' => '⇍',
-  '⇎' => '⇎',
-  '⇏' => '⇏',
-  '∄' => '∄',
-  '∉' => '∉',
-  '∌' => '∌',
-  '∤' => '∤',
-  '∦' => '∦',
-  '≁' => '≁',
-  '≄' => '≄',
-  '≇' => '≇',
-  '≉' => '≉',
-  '≠' => '≠',
-  '≢' => '≢',
-  '≭' => '≭',
-  '≮' => '≮',
-  '≯' => '≯',
-  '≰' => '≰',
-  '≱' => '≱',
-  '≴' => '≴',
-  '≵' => '≵',
-  '≸' => '≸',
-  '≹' => '≹',
-  '⊀' => '⊀',
-  '⊁' => '⊁',
-  '⊄' => '⊄',
-  '⊅' => '⊅',
-  '⊈' => '⊈',
-  '⊉' => '⊉',
-  '⊬' => '⊬',
-  '⊭' => '⊭',
-  '⊮' => '⊮',
-  '⊯' => '⊯',
-  '⋠' => '⋠',
-  '⋡' => '⋡',
-  '⋢' => '⋢',
-  '⋣' => '⋣',
-  '⋪' => '⋪',
-  '⋫' => '⋫',
-  '⋬' => '⋬',
-  '⋭' => '⋭',
-  'が' => 'が',
-  'ぎ' => 'ぎ',
-  'ぐ' => 'ぐ',
-  'げ' => 'げ',
-  'ご' => 'ご',
-  'ざ' => 'ざ',
-  'じ' => 'じ',
-  'ず' => 'ず',
-  'ぜ' => 'ぜ',
-  'ぞ' => 'ぞ',
-  'だ' => 'だ',
-  'ぢ' => 'ぢ',
-  'づ' => 'づ',
-  'で' => 'で',
-  'ど' => 'ど',
-  'ば' => 'ば',
-  'ぱ' => 'ぱ',
-  'び' => 'び',
-  'ぴ' => 'ぴ',
-  'ぶ' => 'ぶ',
-  'ぷ' => 'ぷ',
-  'べ' => 'べ',
-  'ぺ' => 'ぺ',
-  'ぼ' => 'ぼ',
-  'ぽ' => 'ぽ',
-  'ゔ' => 'ゔ',
-  'ゞ' => 'ゞ',
-  'ガ' => 'ガ',
-  'ã‚­ã‚™' => 'ã‚®',
-  'グ' => 'グ',
-  'ゲ' => 'ゲ',
-  'ゴ' => 'ゴ',
-  'ザ' => 'ザ',
-  'ジ' => 'ジ',
-  'ズ' => 'ズ',
-  'ゼ' => 'ゼ',
-  'ゾ' => 'ゾ',
-  'ダ' => 'ダ',
-  'ヂ' => 'ヂ',
-  'ヅ' => 'ヅ',
-  'デ' => 'デ',
-  'ド' => 'ド',
-  'バ' => 'バ',
-  'パ' => 'パ',
-  'ビ' => 'ビ',
-  'ピ' => 'ピ',
-  'ブ' => 'ブ',
-  'プ' => 'プ',
-  'ベ' => 'ベ',
-  'ペ' => 'ペ',
-  'ボ' => 'ボ',
-  'ポ' => 'ポ',
-  'ヴ' => 'ヴ',
-  'ヷ' => 'ヷ',
-  'ヸ' => 'ヸ',
-  'ヹ' => 'ヹ',
-  'ヺ' => 'ヺ',
-  'ヾ' => 'ヾ',
-  '𑂚' => '𑂚',
-  '𑂜' => '𑂜',
-  '𑂫' => '𑂫',
-  '𑄮' => '𑄮',
-  '𑄯' => '𑄯',
-  '𑍋' => '𑍋',
-  '𑍌' => '𑍌',
-  '𑒻' => '𑒻',
-  '𑒼' => '𑒼',
-  '𑒾' => '𑒾',
-  '𑖺' => '𑖺',
-  '𑖻' => '𑖻',
-  '𑤸' => '𑤸',
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php b/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php
deleted file mode 100644
index 5a3e8e0969d62e73b1a96cbd3f963382cc0c1111..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php
+++ /dev/null
@@ -1,2065 +0,0 @@
-<?php
-
-return array (
-  'À' => 'À',
-  'Á' => 'Á',
-  'Â' => 'Â',
-  'Ã' => 'Ã',
-  'Ä' => 'Ä',
-  'Ã…' => 'AÌŠ',
-  'Ç' => 'Ç',
-  'È' => 'È',
-  'É' => 'É',
-  'Ê' => 'Ê',
-  'Ë' => 'Ë',
-  'Ì' => 'Ì',
-  'Í' => 'Í',
-  'ÃŽ' => 'IÌ‚',
-  'Ï' => 'Ï',
-  'Ñ' => 'Ñ',
-  'Ã’' => 'OÌ€',
-  'Ó' => 'Ó',
-  'Ô' => 'Ô',
-  'Õ' => 'Õ',
-  'Ö' => 'Ö',
-  'Ù' => 'Ù',
-  'Ú' => 'Ú',
-  'Û' => 'Û',
-  'Ü' => 'Ü',
-  'Ý' => 'Ý',
-  'à' => 'à',
-  'á' => 'á',
-  'â' => 'â',
-  'ã' => 'ã',
-  'ä' => 'ä',
-  'Ã¥' => 'aÌŠ',
-  'ç' => 'ç',
-  'è' => 'è',
-  'é' => 'é',
-  'ê' => 'ê',
-  'ë' => 'ë',
-  'ì' => 'ì',
-  'í' => 'í',
-  'î' => 'î',
-  'ï' => 'ï',
-  'ñ' => 'ñ',
-  'ò' => 'ò',
-  'ó' => 'ó',
-  'ô' => 'ô',
-  'õ' => 'õ',
-  'ö' => 'ö',
-  'ù' => 'ù',
-  'ú' => 'ú',
-  'û' => 'û',
-  'ü' => 'ü',
-  'ý' => 'ý',
-  'ÿ' => 'ÿ',
-  'Ä€' => 'AÌ„',
-  'ā' => 'ā',
-  'Ă' => 'Ă',
-  'ă' => 'ă',
-  'Ą' => 'Ą',
-  'ą' => 'ą',
-  'Ć' => 'Ć',
-  'ć' => 'ć',
-  'Ĉ' => 'Ĉ',
-  'ĉ' => 'ĉ',
-  'Ċ' => 'Ċ',
-  'ċ' => 'ċ',
-  'Č' => 'Č',
-  'č' => 'č',
-  'Ď' => 'Ď',
-  'ď' => 'ď',
-  'Ä’' => 'EÌ„',
-  'ē' => 'ē',
-  'Ĕ' => 'Ĕ',
-  'ĕ' => 'ĕ',
-  'Ė' => 'Ė',
-  'ė' => 'ė',
-  'Ę' => 'Ę',
-  'ę' => 'ę',
-  'Ě' => 'Ě',
-  'ě' => 'ě',
-  'Ĝ' => 'Ĝ',
-  'ĝ' => 'ĝ',
-  'Ğ' => 'Ğ',
-  'ğ' => 'ğ',
-  'Ġ' => 'Ġ',
-  'ġ' => 'ġ',
-  'Ģ' => 'Ģ',
-  'ģ' => 'ģ',
-  'Ĥ' => 'Ĥ',
-  'ĥ' => 'ĥ',
-  'Ĩ' => 'Ĩ',
-  'ĩ' => 'ĩ',
-  'Ī' => 'Ī',
-  'ī' => 'ī',
-  'Ĭ' => 'Ĭ',
-  'ĭ' => 'ĭ',
-  'Į' => 'Į',
-  'į' => 'į',
-  'İ' => 'İ',
-  'Ä´' => 'JÌ‚',
-  'ĵ' => 'ĵ',
-  'Ķ' => 'Ķ',
-  'ķ' => 'ķ',
-  'Ĺ' => 'Ĺ',
-  'ĺ' => 'ĺ',
-  'Ļ' => 'Ļ',
-  'ļ' => 'ļ',
-  'Ľ' => 'Ľ',
-  'ľ' => 'ľ',
-  'Ń' => 'Ń',
-  'ń' => 'ń',
-  'Ņ' => 'Ņ',
-  'ņ' => 'ņ',
-  'Ň' => 'Ň',
-  'ň' => 'ň',
-  'Ō' => 'Ō',
-  'ō' => 'ō',
-  'Ŏ' => 'Ŏ',
-  'ŏ' => 'ŏ',
-  'Ő' => 'Ő',
-  'ő' => 'ő',
-  'Ŕ' => 'Ŕ',
-  'ŕ' => 'ŕ',
-  'Ŗ' => 'Ŗ',
-  'ŗ' => 'ŗ',
-  'Ř' => 'Ř',
-  'ř' => 'ř',
-  'Ś' => 'Ś',
-  'ś' => 'ś',
-  'Ŝ' => 'Ŝ',
-  'ŝ' => 'ŝ',
-  'Ş' => 'Ş',
-  'ş' => 'ş',
-  'Š' => 'Š',
-  'š' => 'š',
-  'Ţ' => 'Ţ',
-  'ţ' => 'ţ',
-  'Ť' => 'Ť',
-  'ť' => 'ť',
-  'Ũ' => 'Ũ',
-  'ũ' => 'ũ',
-  'Ū' => 'Ū',
-  'ū' => 'ū',
-  'Ŭ' => 'Ŭ',
-  'ŭ' => 'ŭ',
-  'Å®' => 'UÌŠ',
-  'ů' => 'ů',
-  'Å°' => 'UÌ‹',
-  'ű' => 'ű',
-  'Ų' => 'Ų',
-  'ų' => 'ų',
-  'Å´' => 'WÌ‚',
-  'ŵ' => 'ŵ',
-  'Ŷ' => 'Ŷ',
-  'ŷ' => 'ŷ',
-  'Ÿ' => 'Ÿ',
-  'Ź' => 'Ź',
-  'ź' => 'ź',
-  'Ż' => 'Ż',
-  'ż' => 'ż',
-  'Ž' => 'Ž',
-  'ž' => 'ž',
-  'Æ ' => 'OÌ›',
-  'Æ¡' => 'oÌ›',
-  'Ư' => 'Ư',
-  'Æ°' => 'uÌ›',
-  'Ǎ' => 'Ǎ',
-  'ǎ' => 'ǎ',
-  'Ǐ' => 'Ǐ',
-  'ǐ' => 'ǐ',
-  'Ǒ' => 'Ǒ',
-  'ǒ' => 'ǒ',
-  'Ǔ' => 'Ǔ',
-  'ǔ' => 'ǔ',
-  'Ǖ' => 'Ǖ',
-  'ǖ' => 'ǖ',
-  'Ǘ' => 'Ǘ',
-  'ǘ' => 'ǘ',
-  'Ǚ' => 'Ǚ',
-  'ǚ' => 'ǚ',
-  'Ǜ' => 'Ǜ',
-  'ǜ' => 'ǜ',
-  'Ǟ' => 'Ǟ',
-  'ǟ' => 'ǟ',
-  'Ǡ' => 'Ǡ',
-  'ǡ' => 'ǡ',
-  'Ǣ' => 'Ǣ',
-  'ǣ' => 'ǣ',
-  'Ǧ' => 'Ǧ',
-  'ǧ' => 'ǧ',
-  'Ǩ' => 'Ǩ',
-  'ǩ' => 'ǩ',
-  'Ǫ' => 'Ǫ',
-  'ǫ' => 'ǫ',
-  'Ǭ' => 'Ǭ',
-  'ǭ' => 'ǭ',
-  'Ǯ' => 'Ǯ',
-  'ǯ' => 'ǯ',
-  'ǰ' => 'ǰ',
-  'Ǵ' => 'Ǵ',
-  'ǵ' => 'ǵ',
-  'Ǹ' => 'Ǹ',
-  'ǹ' => 'ǹ',
-  'Ǻ' => 'Ǻ',
-  'ǻ' => 'ǻ',
-  'Ǽ' => 'Ǽ',
-  'ǽ' => 'ǽ',
-  'Ǿ' => 'Ǿ',
-  'ǿ' => 'ǿ',
-  'Ȁ' => 'Ȁ',
-  'ȁ' => 'ȁ',
-  'È‚' => 'AÌ‘',
-  'ȃ' => 'ȃ',
-  'Ȅ' => 'Ȅ',
-  'ȅ' => 'ȅ',
-  'Ȇ' => 'Ȇ',
-  'ȇ' => 'ȇ',
-  'Ȉ' => 'Ȉ',
-  'ȉ' => 'ȉ',
-  'ÈŠ' => 'IÌ‘',
-  'ȋ' => 'ȋ',
-  'Ȍ' => 'Ȍ',
-  'ȍ' => 'ȍ',
-  'ÈŽ' => 'OÌ‘',
-  'ȏ' => 'ȏ',
-  'Ȑ' => 'Ȑ',
-  'ȑ' => 'ȑ',
-  'È’' => 'RÌ‘',
-  'ȓ' => 'ȓ',
-  'Ȕ' => 'Ȕ',
-  'ȕ' => 'ȕ',
-  'È–' => 'UÌ‘',
-  'ȗ' => 'ȗ',
-  'Ș' => 'Ș',
-  'ș' => 'ș',
-  'Ț' => 'Ț',
-  'ț' => 'ț',
-  'Ȟ' => 'Ȟ',
-  'ȟ' => 'ȟ',
-  'Ȧ' => 'Ȧ',
-  'ȧ' => 'ȧ',
-  'Ȩ' => 'Ȩ',
-  'ȩ' => 'ȩ',
-  'Ȫ' => 'Ȫ',
-  'ȫ' => 'ȫ',
-  'Ȭ' => 'Ȭ',
-  'ȭ' => 'ȭ',
-  'Ȯ' => 'Ȯ',
-  'ȯ' => 'ȯ',
-  'Ȱ' => 'Ȱ',
-  'ȱ' => 'ȱ',
-  'Ȳ' => 'Ȳ',
-  'ȳ' => 'ȳ',
-  'Í€' => 'Ì€',
-  '́' => '́',
-  '̓' => '̓',
-  '̈́' => '̈́',
-  'ʹ' => 'ʹ',
-  ';' => ';',
-  '΅' => '΅',
-  'Ά' => 'Ά',
-  '·' => '·',
-  'Έ' => 'Έ',
-  'Ή' => 'Ή',
-  'Ί' => 'Ί',
-  'Ό' => 'Ό',
-  'Ύ' => 'Ύ',
-  'Ώ' => 'Ώ',
-  'ΐ' => 'ΐ',
-  'Ϊ' => 'Ϊ',
-  'Ϋ' => 'Ϋ',
-  'ά' => 'ά',
-  'έ' => 'έ',
-  'ή' => 'ή',
-  'ί' => 'ί',
-  'ΰ' => 'ΰ',
-  'ϊ' => 'ϊ',
-  'ϋ' => 'ϋ',
-  'ό' => 'ό',
-  'ύ' => 'ύ',
-  'ώ' => 'ώ',
-  'ϓ' => 'ϓ',
-  'ϔ' => 'ϔ',
-  'Ѐ' => 'Ѐ',
-  'Ё' => 'Ё',
-  'Ѓ' => 'Ѓ',
-  'Ї' => 'Ї',
-  'Ќ' => 'Ќ',
-  'Ѝ' => 'Ѝ',
-  'Ў' => 'Ў',
-  'Й' => 'Й',
-  'й' => 'й',
-  'ѐ' => 'ѐ',
-  'ё' => 'ё',
-  'ѓ' => 'ѓ',
-  'ї' => 'ї',
-  'ќ' => 'ќ',
-  'ѝ' => 'ѝ',
-  'ў' => 'ў',
-  'Ѷ' => 'Ѷ',
-  'ѷ' => 'ѷ',
-  'Ӂ' => 'Ӂ',
-  'ӂ' => 'ӂ',
-  'Ӑ' => 'Ӑ',
-  'ӑ' => 'ӑ',
-  'Ӓ' => 'Ӓ',
-  'ӓ' => 'ӓ',
-  'Ӗ' => 'Ӗ',
-  'ӗ' => 'ӗ',
-  'Ӛ' => 'Ӛ',
-  'ӛ' => 'ӛ',
-  'Ӝ' => 'Ӝ',
-  'ӝ' => 'ӝ',
-  'Ӟ' => 'Ӟ',
-  'ӟ' => 'ӟ',
-  'Ӣ' => 'Ӣ',
-  'ӣ' => 'ӣ',
-  'Ӥ' => 'Ӥ',
-  'ӥ' => 'ӥ',
-  'Ӧ' => 'Ӧ',
-  'ӧ' => 'ӧ',
-  'Ӫ' => 'Ӫ',
-  'ӫ' => 'ӫ',
-  'Ӭ' => 'Ӭ',
-  'ӭ' => 'ӭ',
-  'Ӯ' => 'Ӯ',
-  'ӯ' => 'ӯ',
-  'Ӱ' => 'Ӱ',
-  'ӱ' => 'ӱ',
-  'Ӳ' => 'Ӳ',
-  'ӳ' => 'ӳ',
-  'Ӵ' => 'Ӵ',
-  'ӵ' => 'ӵ',
-  'Ӹ' => 'Ӹ',
-  'ӹ' => 'ӹ',
-  'آ' => 'آ',
-  'أ' => 'أ',
-  'ؤ' => 'ؤ',
-  'إ' => 'إ',
-  'ئ' => 'ئ',
-  'Û€' => 'Û•Ù”',
-  'ۂ' => 'ۂ',
-  'Û“' => 'Û’Ù”',
-  'ऩ' => 'ऩ',
-  'ऱ' => 'ऱ',
-  'ऴ' => 'ऴ',
-  'क़' => 'क़',
-  'ख़' => 'ख़',
-  'ग़' => 'ग़',
-  'ज़' => 'ज़',
-  'ड़' => 'ड़',
-  'ढ़' => 'ढ़',
-  'फ़' => 'फ़',
-  'य़' => 'य़',
-  'ো' => 'ো',
-  'ৌ' => 'ৌ',
-  'ড়' => 'ড়',
-  'ঢ়' => 'ঢ়',
-  'য়' => 'য়',
-  'ਲ਼' => 'ਲ਼',
-  'ਸ਼' => 'ਸ਼',
-  'ਖ਼' => 'ਖ਼',
-  'ਗ਼' => 'ਗ਼',
-  'ਜ਼' => 'ਜ਼',
-  'ਫ਼' => 'ਫ਼',
-  'ୈ' => 'ୈ',
-  'ୋ' => 'ୋ',
-  'ୌ' => 'ୌ',
-  'ଡ଼' => 'ଡ଼',
-  'ଢ଼' => 'ଢ଼',
-  'ஔ' => 'ஔ',
-  'ொ' => 'ொ',
-  'ோ' => 'ோ',
-  'ௌ' => 'ௌ',
-  'ై' => 'ై',
-  'ೀ' => 'ೀ',
-  'ೇ' => 'ೇ',
-  'ೈ' => 'ೈ',
-  'ೊ' => 'ೊ',
-  'ೋ' => 'ೋ',
-  'ൊ' => 'ൊ',
-  'ോ' => 'ോ',
-  'ൌ' => 'ൌ',
-  'ේ' => 'ේ',
-  'ො' => 'ො',
-  'ෝ' => 'ෝ',
-  'ෞ' => 'ෞ',
-  'གྷ' => 'གྷ',
-  'ཌྷ' => 'ཌྷ',
-  'དྷ' => 'དྷ',
-  'བྷ' => 'བྷ',
-  'ཛྷ' => 'ཛྷ',
-  'ཀྵ' => 'ཀྵ',
-  'ཱི' => 'ཱི',
-  'ཱུ' => 'ཱུ',
-  'ྲྀ' => 'ྲྀ',
-  'ླྀ' => 'ླྀ',
-  'ཱྀ' => 'ཱྀ',
-  'ྒྷ' => 'ྒྷ',
-  'ྜྷ' => 'ྜྷ',
-  'ྡྷ' => 'ྡྷ',
-  'ྦྷ' => 'ྦྷ',
-  'ྫྷ' => 'ྫྷ',
-  'ྐྵ' => 'ྐྵ',
-  'ဦ' => 'ဦ',
-  'ᬆ' => 'ᬆ',
-  'ᬈ' => 'ᬈ',
-  'ᬊ' => 'ᬊ',
-  'ᬌ' => 'ᬌ',
-  'ᬎ' => 'ᬎ',
-  'ᬒ' => 'ᬒ',
-  'ᬻ' => 'ᬻ',
-  'ᬽ' => 'ᬽ',
-  'ᭀ' => 'ᭀ',
-  'ᭁ' => 'ᭁ',
-  'ᭃ' => 'ᭃ',
-  'Ḁ' => 'Ḁ',
-  'ḁ' => 'ḁ',
-  'Ḃ' => 'Ḃ',
-  'ḃ' => 'ḃ',
-  'Ḅ' => 'Ḅ',
-  'ḅ' => 'ḅ',
-  'Ḇ' => 'Ḇ',
-  'ḇ' => 'ḇ',
-  'Ḉ' => 'Ḉ',
-  'ḉ' => 'ḉ',
-  'Ḋ' => 'Ḋ',
-  'ḋ' => 'ḋ',
-  'Ḍ' => 'Ḍ',
-  'ḍ' => 'ḍ',
-  'Ḏ' => 'Ḏ',
-  'ḏ' => 'ḏ',
-  'Ḑ' => 'Ḑ',
-  'ḑ' => 'ḑ',
-  'Ḓ' => 'Ḓ',
-  'ḓ' => 'ḓ',
-  'Ḕ' => 'Ḕ',
-  'ḕ' => 'ḕ',
-  'Ḗ' => 'Ḗ',
-  'ḗ' => 'ḗ',
-  'Ḙ' => 'Ḙ',
-  'ḙ' => 'ḙ',
-  'Ḛ' => 'Ḛ',
-  'ḛ' => 'ḛ',
-  'Ḝ' => 'Ḝ',
-  'ḝ' => 'ḝ',
-  'Ḟ' => 'Ḟ',
-  'ḟ' => 'ḟ',
-  'Ḡ' => 'Ḡ',
-  'ḡ' => 'ḡ',
-  'Ḣ' => 'Ḣ',
-  'ḣ' => 'ḣ',
-  'Ḥ' => 'Ḥ',
-  'ḥ' => 'ḥ',
-  'Ḧ' => 'Ḧ',
-  'ḧ' => 'ḧ',
-  'Ḩ' => 'Ḩ',
-  'ḩ' => 'ḩ',
-  'Ḫ' => 'Ḫ',
-  'ḫ' => 'ḫ',
-  'Ḭ' => 'Ḭ',
-  'ḭ' => 'ḭ',
-  'Ḯ' => 'Ḯ',
-  'ḯ' => 'ḯ',
-  'Ḱ' => 'Ḱ',
-  'ḱ' => 'ḱ',
-  'Ḳ' => 'Ḳ',
-  'ḳ' => 'ḳ',
-  'Ḵ' => 'Ḵ',
-  'ḵ' => 'ḵ',
-  'Ḷ' => 'Ḷ',
-  'ḷ' => 'ḷ',
-  'Ḹ' => 'Ḹ',
-  'ḹ' => 'ḹ',
-  'Ḻ' => 'Ḻ',
-  'ḻ' => 'ḻ',
-  'Ḽ' => 'Ḽ',
-  'ḽ' => 'ḽ',
-  'Ḿ' => 'Ḿ',
-  'ḿ' => 'ḿ',
-  'Ṁ' => 'Ṁ',
-  'ṁ' => 'ṁ',
-  'Ṃ' => 'Ṃ',
-  'ṃ' => 'ṃ',
-  'Ṅ' => 'Ṅ',
-  'ṅ' => 'ṅ',
-  'Ṇ' => 'Ṇ',
-  'ṇ' => 'ṇ',
-  'Ṉ' => 'Ṉ',
-  'ṉ' => 'ṉ',
-  'Ṋ' => 'Ṋ',
-  'ṋ' => 'ṋ',
-  'Ṍ' => 'Ṍ',
-  'ṍ' => 'ṍ',
-  'Ṏ' => 'Ṏ',
-  'ṏ' => 'ṏ',
-  'Ṑ' => 'Ṑ',
-  'ṑ' => 'ṑ',
-  'Ṓ' => 'Ṓ',
-  'ṓ' => 'ṓ',
-  'Ṕ' => 'Ṕ',
-  'ṕ' => 'ṕ',
-  'Ṗ' => 'Ṗ',
-  'ṗ' => 'ṗ',
-  'Ṙ' => 'Ṙ',
-  'ṙ' => 'ṙ',
-  'Ṛ' => 'Ṛ',
-  'ṛ' => 'ṛ',
-  'Ṝ' => 'Ṝ',
-  'ṝ' => 'ṝ',
-  'Ṟ' => 'Ṟ',
-  'ṟ' => 'ṟ',
-  'Ṡ' => 'Ṡ',
-  'ṡ' => 'ṡ',
-  'á¹¢' => 'SÌ£',
-  'ṣ' => 'ṣ',
-  'Ṥ' => 'Ṥ',
-  'ṥ' => 'ṥ',
-  'Ṧ' => 'Ṧ',
-  'ṧ' => 'ṧ',
-  'Ṩ' => 'Ṩ',
-  'ṩ' => 'ṩ',
-  'Ṫ' => 'Ṫ',
-  'ṫ' => 'ṫ',
-  'Ṭ' => 'Ṭ',
-  'ṭ' => 'ṭ',
-  'Ṯ' => 'Ṯ',
-  'ṯ' => 'ṯ',
-  'á¹°' => 'TÌ­',
-  'á¹±' => 'tÌ­',
-  'Ṳ' => 'Ṳ',
-  'ṳ' => 'ṳ',
-  'á¹´' => 'UÌ°',
-  'á¹µ' => 'uÌ°',
-  'Ṷ' => 'Ṷ',
-  'á¹·' => 'uÌ­',
-  'Ṹ' => 'Ṹ',
-  'ṹ' => 'ṹ',
-  'Ṻ' => 'Ṻ',
-  'ṻ' => 'ṻ',
-  'Ṽ' => 'Ṽ',
-  'ṽ' => 'ṽ',
-  'á¹¾' => 'VÌ£',
-  'ṿ' => 'ṿ',
-  'Ẁ' => 'Ẁ',
-  'ẁ' => 'ẁ',
-  'Ẃ' => 'Ẃ',
-  'ẃ' => 'ẃ',
-  'Ẅ' => 'Ẅ',
-  'ẅ' => 'ẅ',
-  'Ẇ' => 'Ẇ',
-  'ẇ' => 'ẇ',
-  'Ẉ' => 'Ẉ',
-  'ẉ' => 'ẉ',
-  'Ẋ' => 'Ẋ',
-  'ẋ' => 'ẋ',
-  'Ẍ' => 'Ẍ',
-  'ẍ' => 'ẍ',
-  'Ẏ' => 'Ẏ',
-  'ẏ' => 'ẏ',
-  'Ẑ' => 'Ẑ',
-  'ẑ' => 'ẑ',
-  'Ẓ' => 'Ẓ',
-  'ẓ' => 'ẓ',
-  'Ẕ' => 'Ẕ',
-  'ẕ' => 'ẕ',
-  'ẖ' => 'ẖ',
-  'ẗ' => 'ẗ',
-  'ẘ' => 'ẘ',
-  'ẙ' => 'ẙ',
-  'ẛ' => 'ẛ',
-  'Ạ' => 'Ạ',
-  'ạ' => 'ạ',
-  'Ả' => 'Ả',
-  'ả' => 'ả',
-  'Ấ' => 'Ấ',
-  'ấ' => 'ấ',
-  'Ầ' => 'Ầ',
-  'ầ' => 'ầ',
-  'Ẩ' => 'Ẩ',
-  'ẩ' => 'ẩ',
-  'Ẫ' => 'Ẫ',
-  'ẫ' => 'ẫ',
-  'Ậ' => 'Ậ',
-  'ậ' => 'ậ',
-  'Ắ' => 'Ắ',
-  'ắ' => 'ắ',
-  'Ằ' => 'Ằ',
-  'ằ' => 'ằ',
-  'Ẳ' => 'Ẳ',
-  'ẳ' => 'ẳ',
-  'Ẵ' => 'Ẵ',
-  'ẵ' => 'ẵ',
-  'Ặ' => 'Ặ',
-  'ặ' => 'ặ',
-  'Ẹ' => 'Ẹ',
-  'ẹ' => 'ẹ',
-  'Ẻ' => 'Ẻ',
-  'ẻ' => 'ẻ',
-  'Ẽ' => 'Ẽ',
-  'ẽ' => 'ẽ',
-  'Ế' => 'Ế',
-  'ế' => 'ế',
-  'Ề' => 'Ề',
-  'ề' => 'ề',
-  'Ể' => 'Ể',
-  'ể' => 'ể',
-  'Ễ' => 'Ễ',
-  'ễ' => 'ễ',
-  'Ệ' => 'Ệ',
-  'ệ' => 'ệ',
-  'Ỉ' => 'Ỉ',
-  'ỉ' => 'ỉ',
-  'Ị' => 'Ị',
-  'ị' => 'ị',
-  'Ọ' => 'Ọ',
-  'ọ' => 'ọ',
-  'Ỏ' => 'Ỏ',
-  'ỏ' => 'ỏ',
-  'Ố' => 'Ố',
-  'ố' => 'ố',
-  'á»’' => 'OÌ‚Ì€',
-  'ồ' => 'ồ',
-  'Ổ' => 'Ổ',
-  'ổ' => 'ổ',
-  'Ỗ' => 'Ỗ',
-  'ỗ' => 'ỗ',
-  'Ộ' => 'Ộ',
-  'ộ' => 'ộ',
-  'Ớ' => 'Ớ',
-  'ớ' => 'ớ',
-  'Ờ' => 'Ờ',
-  'ờ' => 'ờ',
-  'Ở' => 'Ở',
-  'ở' => 'ở',
-  'Ỡ' => 'Ỡ',
-  'ỡ' => 'ỡ',
-  'Ợ' => 'Ợ',
-  'ợ' => 'ợ',
-  'Ụ' => 'Ụ',
-  'ụ' => 'ụ',
-  'Ủ' => 'Ủ',
-  'ủ' => 'ủ',
-  'Ứ' => 'Ứ',
-  'ứ' => 'ứ',
-  'Ừ' => 'Ừ',
-  'ừ' => 'ừ',
-  'Ử' => 'Ử',
-  'ử' => 'ử',
-  'Ữ' => 'Ữ',
-  'ữ' => 'ữ',
-  'Ự' => 'Ự',
-  'ự' => 'ự',
-  'Ỳ' => 'Ỳ',
-  'ỳ' => 'ỳ',
-  'á»´' => 'YÌ£',
-  'ỵ' => 'ỵ',
-  'Ỷ' => 'Ỷ',
-  'ỷ' => 'ỷ',
-  'Ỹ' => 'Ỹ',
-  'ỹ' => 'ỹ',
-  'ἀ' => 'ἀ',
-  'ἁ' => 'ἁ',
-  'ἂ' => 'ἂ',
-  'ἃ' => 'ἃ',
-  'ἄ' => 'ἄ',
-  'ἅ' => 'ἅ',
-  'ἆ' => 'ἆ',
-  'ἇ' => 'ἇ',
-  'Ἀ' => 'Ἀ',
-  'Ἁ' => 'Ἁ',
-  'Ἂ' => 'Ἂ',
-  'Ἃ' => 'Ἃ',
-  'Ἄ' => 'Ἄ',
-  'Ἅ' => 'Ἅ',
-  'Ἆ' => 'Ἆ',
-  'Ἇ' => 'Ἇ',
-  'ἐ' => 'ἐ',
-  'ἑ' => 'ἑ',
-  'ἒ' => 'ἒ',
-  'ἓ' => 'ἓ',
-  'ἔ' => 'ἔ',
-  'ἕ' => 'ἕ',
-  'Ἐ' => 'Ἐ',
-  'Ἑ' => 'Ἑ',
-  'Ἒ' => 'Ἒ',
-  'Ἓ' => 'Ἓ',
-  'Ἔ' => 'Ἔ',
-  'Ἕ' => 'Ἕ',
-  'ἠ' => 'ἠ',
-  'ἡ' => 'ἡ',
-  'ἢ' => 'ἢ',
-  'ἣ' => 'ἣ',
-  'ἤ' => 'ἤ',
-  'ἥ' => 'ἥ',
-  'ἦ' => 'ἦ',
-  'ἧ' => 'ἧ',
-  'Ἠ' => 'Ἠ',
-  'Ἡ' => 'Ἡ',
-  'Ἢ' => 'Ἢ',
-  'Ἣ' => 'Ἣ',
-  'Ἤ' => 'Ἤ',
-  'Ἥ' => 'Ἥ',
-  'Ἦ' => 'Ἦ',
-  'Ἧ' => 'Ἧ',
-  'ἰ' => 'ἰ',
-  'ἱ' => 'ἱ',
-  'ἲ' => 'ἲ',
-  'ἳ' => 'ἳ',
-  'ἴ' => 'ἴ',
-  'ἵ' => 'ἵ',
-  'ἶ' => 'ἶ',
-  'ἷ' => 'ἷ',
-  'Ἰ' => 'Ἰ',
-  'Ἱ' => 'Ἱ',
-  'Ἲ' => 'Ἲ',
-  'Ἳ' => 'Ἳ',
-  'Ἴ' => 'Ἴ',
-  'Ἵ' => 'Ἵ',
-  'Ἶ' => 'Ἶ',
-  'Ἷ' => 'Ἷ',
-  'ὀ' => 'ὀ',
-  'ὁ' => 'ὁ',
-  'ὂ' => 'ὂ',
-  'ὃ' => 'ὃ',
-  'ὄ' => 'ὄ',
-  'ὅ' => 'ὅ',
-  'Ὀ' => 'Ὀ',
-  'Ὁ' => 'Ὁ',
-  'Ὂ' => 'Ὂ',
-  'Ὃ' => 'Ὃ',
-  'Ὄ' => 'Ὄ',
-  'Ὅ' => 'Ὅ',
-  'ὐ' => 'ὐ',
-  'ὑ' => 'ὑ',
-  'á½’' => 'Ï…Ì“Ì€',
-  'ὓ' => 'ὓ',
-  'ὔ' => 'ὔ',
-  'ὕ' => 'ὕ',
-  'á½–' => 'Ï…Ì“Í‚',
-  'ὗ' => 'ὗ',
-  'Ὑ' => 'Ὑ',
-  'Ὓ' => 'Ὓ',
-  'Ὕ' => 'Ὕ',
-  'Ὗ' => 'Ὗ',
-  'ὠ' => 'ὠ',
-  'ὡ' => 'ὡ',
-  'ὢ' => 'ὢ',
-  'ὣ' => 'ὣ',
-  'ὤ' => 'ὤ',
-  'ὥ' => 'ὥ',
-  'ὦ' => 'ὦ',
-  'ὧ' => 'ὧ',
-  'Ὠ' => 'Ὠ',
-  'Ὡ' => 'Ὡ',
-  'Ὢ' => 'Ὢ',
-  'Ὣ' => 'Ὣ',
-  'Ὤ' => 'Ὤ',
-  'Ὥ' => 'Ὥ',
-  'Ὦ' => 'Ὦ',
-  'Ὧ' => 'Ὧ',
-  'ὰ' => 'ὰ',
-  'ά' => 'ά',
-  'ὲ' => 'ὲ',
-  'έ' => 'έ',
-  'ὴ' => 'ὴ',
-  'ή' => 'ή',
-  'ὶ' => 'ὶ',
-  'ί' => 'ί',
-  'ὸ' => 'ὸ',
-  'ό' => 'ό',
-  'ὺ' => 'ὺ',
-  'ύ' => 'ύ',
-  'ὼ' => 'ὼ',
-  'ώ' => 'ώ',
-  'ᾀ' => 'ᾀ',
-  'ᾁ' => 'ᾁ',
-  'ᾂ' => 'ᾂ',
-  'ᾃ' => 'ᾃ',
-  'ᾄ' => 'ᾄ',
-  'ᾅ' => 'ᾅ',
-  'ᾆ' => 'ᾆ',
-  'ᾇ' => 'ᾇ',
-  'ᾈ' => 'ᾈ',
-  'ᾉ' => 'ᾉ',
-  'ᾊ' => 'ᾊ',
-  'ᾋ' => 'ᾋ',
-  'ᾌ' => 'ᾌ',
-  'ᾍ' => 'ᾍ',
-  'ᾎ' => 'ᾎ',
-  'ᾏ' => 'ᾏ',
-  'ᾐ' => 'ᾐ',
-  'ᾑ' => 'ᾑ',
-  'ᾒ' => 'ᾒ',
-  'ᾓ' => 'ᾓ',
-  'ᾔ' => 'ᾔ',
-  'ᾕ' => 'ᾕ',
-  'ᾖ' => 'ᾖ',
-  'ᾗ' => 'ᾗ',
-  'ᾘ' => 'ᾘ',
-  'ᾙ' => 'ᾙ',
-  'ᾚ' => 'ᾚ',
-  'ᾛ' => 'ᾛ',
-  'ᾜ' => 'ᾜ',
-  'ᾝ' => 'ᾝ',
-  'ᾞ' => 'ᾞ',
-  'ᾟ' => 'ᾟ',
-  'ᾠ' => 'ᾠ',
-  'ᾡ' => 'ᾡ',
-  'ᾢ' => 'ᾢ',
-  'ᾣ' => 'ᾣ',
-  'ᾤ' => 'ᾤ',
-  'ᾥ' => 'ᾥ',
-  'ᾦ' => 'ᾦ',
-  'ᾧ' => 'ᾧ',
-  'ᾨ' => 'ᾨ',
-  'ᾩ' => 'ᾩ',
-  'ᾪ' => 'ᾪ',
-  'ᾫ' => 'ᾫ',
-  'ᾬ' => 'ᾬ',
-  'ᾭ' => 'ᾭ',
-  'ᾮ' => 'ᾮ',
-  'ᾯ' => 'ᾯ',
-  'ᾰ' => 'ᾰ',
-  'ᾱ' => 'ᾱ',
-  'ᾲ' => 'ᾲ',
-  'ᾳ' => 'ᾳ',
-  'ᾴ' => 'ᾴ',
-  'ᾶ' => 'ᾶ',
-  'ᾷ' => 'ᾷ',
-  'Ᾰ' => 'Ᾰ',
-  'Ᾱ' => 'Ᾱ',
-  'Ὰ' => 'Ὰ',
-  'Ά' => 'Ά',
-  'ᾼ' => 'ᾼ',
-  'ι' => 'ι',
-  '῁' => '῁',
-  'ῂ' => 'ῂ',
-  'ῃ' => 'ῃ',
-  'ῄ' => 'ῄ',
-  'ῆ' => 'ῆ',
-  'ῇ' => 'ῇ',
-  'Ὲ' => 'Ὲ',
-  'Έ' => 'Έ',
-  'Ὴ' => 'Ὴ',
-  'Ή' => 'Ή',
-  'ῌ' => 'ῌ',
-  '῍' => '῍',
-  '῎' => '῎',
-  '῏' => '῏',
-  'ῐ' => 'ῐ',
-  'ῑ' => 'ῑ',
-  'ῒ' => 'ῒ',
-  'ΐ' => 'ΐ',
-  'ῖ' => 'ῖ',
-  'ῗ' => 'ῗ',
-  'Ῐ' => 'Ῐ',
-  'Ῑ' => 'Ῑ',
-  'Ὶ' => 'Ὶ',
-  'Ί' => 'Ί',
-  '῝' => '῝',
-  '῞' => '῞',
-  '῟' => '῟',
-  'ῠ' => 'ῠ',
-  'á¿¡' => 'Ï…Ì„',
-  'ῢ' => 'ῢ',
-  'ΰ' => 'ΰ',
-  'ῤ' => 'ῤ',
-  'ῥ' => 'ῥ',
-  'ῦ' => 'ῦ',
-  'ῧ' => 'ῧ',
-  'Ῠ' => 'Ῠ',
-  'Ῡ' => 'Ῡ',
-  'Ὺ' => 'Ὺ',
-  'Ύ' => 'Ύ',
-  'Ῥ' => 'Ῥ',
-  '῭' => '῭',
-  '΅' => '΅',
-  '`' => '`',
-  'ῲ' => 'ῲ',
-  'ῳ' => 'ῳ',
-  'ῴ' => 'ῴ',
-  'ῶ' => 'ῶ',
-  'ῷ' => 'ῷ',
-  'Ὸ' => 'Ὸ',
-  'Ό' => 'Ό',
-  'Ὼ' => 'Ὼ',
-  'Ώ' => 'Ώ',
-  'ῼ' => 'ῼ',
-  '´' => '´',
-  ' ' => ' ',
-  ' ' => ' ',
-  'Ω' => 'Ω',
-  'K' => 'K',
-  'â„«' => 'AÌŠ',
-  '↚' => '↚',
-  '↛' => '↛',
-  '↮' => '↮',
-  '⇍' => '⇍',
-  '⇎' => '⇎',
-  '⇏' => '⇏',
-  '∄' => '∄',
-  '∉' => '∉',
-  '∌' => '∌',
-  '∤' => '∤',
-  '∦' => '∦',
-  '≁' => '≁',
-  '≄' => '≄',
-  '≇' => '≇',
-  '≉' => '≉',
-  '≠' => '≠',
-  '≢' => '≢',
-  '≭' => '≭',
-  '≮' => '≮',
-  '≯' => '≯',
-  '≰' => '≰',
-  '≱' => '≱',
-  '≴' => '≴',
-  '≵' => '≵',
-  '≸' => '≸',
-  '≹' => '≹',
-  '⊀' => '⊀',
-  '⊁' => '⊁',
-  '⊄' => '⊄',
-  '⊅' => '⊅',
-  '⊈' => '⊈',
-  '⊉' => '⊉',
-  '⊬' => '⊬',
-  '⊭' => '⊭',
-  '⊮' => '⊮',
-  '⊯' => '⊯',
-  '⋠' => '⋠',
-  '⋡' => '⋡',
-  '⋢' => '⋢',
-  '⋣' => '⋣',
-  '⋪' => '⋪',
-  '⋫' => '⋫',
-  '⋬' => '⋬',
-  '⋭' => '⋭',
-  '〈' => '〈',
-  '〉' => '〉',
-  '⫝̸' => '⫝̸',
-  'が' => 'が',
-  'ぎ' => 'ぎ',
-  'ぐ' => 'ぐ',
-  'げ' => 'げ',
-  'ご' => 'ご',
-  'ざ' => 'ざ',
-  'じ' => 'じ',
-  'ず' => 'ず',
-  'ぜ' => 'ぜ',
-  'ぞ' => 'ぞ',
-  'だ' => 'だ',
-  'ぢ' => 'ぢ',
-  'づ' => 'づ',
-  'で' => 'で',
-  'ど' => 'ど',
-  'ば' => 'ば',
-  'ぱ' => 'ぱ',
-  'び' => 'び',
-  'ぴ' => 'ぴ',
-  'ぶ' => 'ぶ',
-  'ぷ' => 'ぷ',
-  'べ' => 'べ',
-  'ぺ' => 'ぺ',
-  'ぼ' => 'ぼ',
-  'ぽ' => 'ぽ',
-  'ゔ' => 'ゔ',
-  'ゞ' => 'ゞ',
-  'ガ' => 'ガ',
-  'ã‚®' => 'ã‚­ã‚™',
-  'グ' => 'グ',
-  'ゲ' => 'ゲ',
-  'ゴ' => 'ゴ',
-  'ザ' => 'ザ',
-  'ジ' => 'ジ',
-  'ズ' => 'ズ',
-  'ゼ' => 'ゼ',
-  'ゾ' => 'ゾ',
-  'ダ' => 'ダ',
-  'ヂ' => 'ヂ',
-  'ヅ' => 'ヅ',
-  'デ' => 'デ',
-  'ド' => 'ド',
-  'バ' => 'バ',
-  'パ' => 'パ',
-  'ビ' => 'ビ',
-  'ピ' => 'ピ',
-  'ブ' => 'ブ',
-  'プ' => 'プ',
-  'ベ' => 'ベ',
-  'ペ' => 'ペ',
-  'ボ' => 'ボ',
-  'ポ' => 'ポ',
-  'ヴ' => 'ヴ',
-  'ヷ' => 'ヷ',
-  'ヸ' => 'ヸ',
-  'ヹ' => 'ヹ',
-  'ヺ' => 'ヺ',
-  'ヾ' => 'ヾ',
-  '豈' => '豈',
-  '更' => '更',
-  '車' => '車',
-  '賈' => '賈',
-  '滑' => '滑',
-  '串' => '串',
-  '句' => '句',
-  '龜' => '龜',
-  '龜' => '龜',
-  '契' => '契',
-  '金' => '金',
-  '喇' => '喇',
-  '奈' => '奈',
-  '懶' => '懶',
-  '癩' => '癩',
-  '羅' => '羅',
-  '蘿' => '蘿',
-  '螺' => '螺',
-  '裸' => '裸',
-  '邏' => '邏',
-  '樂' => '樂',
-  '洛' => '洛',
-  '烙' => '烙',
-  '珞' => '珞',
-  '落' => '落',
-  '酪' => '酪',
-  '駱' => '駱',
-  '亂' => '亂',
-  '卵' => '卵',
-  '欄' => '欄',
-  '爛' => '爛',
-  '蘭' => '蘭',
-  '鸞' => '鸞',
-  '嵐' => '嵐',
-  '濫' => '濫',
-  '藍' => '藍',
-  '襤' => '襤',
-  '拉' => '拉',
-  '臘' => '臘',
-  '蠟' => '蠟',
-  '廊' => '廊',
-  '朗' => '朗',
-  '浪' => '浪',
-  '狼' => '狼',
-  '郎' => '郎',
-  '來' => '來',
-  '冷' => '冷',
-  '勞' => '勞',
-  '擄' => '擄',
-  '櫓' => '櫓',
-  '爐' => '爐',
-  '盧' => '盧',
-  '老' => '老',
-  '蘆' => '蘆',
-  '虜' => '虜',
-  '路' => '路',
-  '露' => '露',
-  '魯' => '魯',
-  '鷺' => '鷺',
-  '碌' => '碌',
-  '祿' => '祿',
-  '綠' => '綠',
-  '菉' => '菉',
-  '錄' => '錄',
-  '鹿' => '鹿',
-  '論' => '論',
-  '壟' => '壟',
-  '弄' => '弄',
-  '籠' => '籠',
-  '聾' => '聾',
-  '牢' => '牢',
-  '磊' => '磊',
-  '賂' => '賂',
-  '雷' => '雷',
-  '壘' => '壘',
-  '屢' => '屢',
-  '樓' => '樓',
-  '淚' => '淚',
-  '漏' => '漏',
-  '累' => '累',
-  '縷' => '縷',
-  '陋' => '陋',
-  '勒' => '勒',
-  '肋' => '肋',
-  '凜' => '凜',
-  '凌' => '凌',
-  '稜' => '稜',
-  '綾' => '綾',
-  '菱' => '菱',
-  '陵' => '陵',
-  '讀' => '讀',
-  '拏' => '拏',
-  '樂' => '樂',
-  '諾' => '諾',
-  '丹' => '丹',
-  '寧' => '寧',
-  '怒' => '怒',
-  '率' => '率',
-  '異' => '異',
-  '北' => '北',
-  '磻' => '磻',
-  '便' => '便',
-  '復' => '復',
-  '不' => '不',
-  '泌' => '泌',
-  '數' => '數',
-  '索' => '索',
-  '參' => '參',
-  '塞' => '塞',
-  '省' => '省',
-  '葉' => '葉',
-  '說' => '說',
-  '殺' => '殺',
-  '辰' => '辰',
-  '沈' => '沈',
-  '拾' => '拾',
-  '若' => '若',
-  '掠' => '掠',
-  '略' => '略',
-  '亮' => '亮',
-  '兩' => '兩',
-  '凉' => '凉',
-  '梁' => '梁',
-  '糧' => '糧',
-  '良' => '良',
-  '諒' => '諒',
-  '量' => '量',
-  '勵' => '勵',
-  '呂' => '呂',
-  '女' => '女',
-  '廬' => '廬',
-  '旅' => '旅',
-  '濾' => '濾',
-  '礪' => '礪',
-  '閭' => '閭',
-  '驪' => '驪',
-  '麗' => '麗',
-  '黎' => '黎',
-  '力' => '力',
-  '曆' => '曆',
-  '歷' => '歷',
-  '轢' => '轢',
-  '年' => '年',
-  '憐' => '憐',
-  '戀' => '戀',
-  '撚' => '撚',
-  '漣' => '漣',
-  '煉' => '煉',
-  '璉' => '璉',
-  '秊' => '秊',
-  '練' => '練',
-  '聯' => '聯',
-  '輦' => '輦',
-  '蓮' => '蓮',
-  '連' => '連',
-  '鍊' => '鍊',
-  '列' => '列',
-  '劣' => '劣',
-  '咽' => '咽',
-  '烈' => '烈',
-  '裂' => '裂',
-  '說' => '說',
-  '廉' => '廉',
-  '念' => '念',
-  '捻' => '捻',
-  '殮' => '殮',
-  '簾' => '簾',
-  '獵' => '獵',
-  '令' => '令',
-  '囹' => '囹',
-  '寧' => '寧',
-  '嶺' => '嶺',
-  '怜' => '怜',
-  '玲' => '玲',
-  '瑩' => '瑩',
-  '羚' => '羚',
-  '聆' => '聆',
-  '鈴' => '鈴',
-  '零' => '零',
-  '靈' => '靈',
-  '領' => '領',
-  '例' => '例',
-  '禮' => '禮',
-  '醴' => '醴',
-  '隸' => '隸',
-  '惡' => '惡',
-  '了' => '了',
-  '僚' => '僚',
-  '寮' => '寮',
-  '尿' => '尿',
-  '料' => '料',
-  '樂' => '樂',
-  '燎' => '燎',
-  '療' => '療',
-  '蓼' => '蓼',
-  '遼' => '遼',
-  '龍' => '龍',
-  '暈' => '暈',
-  '阮' => '阮',
-  '劉' => '劉',
-  '杻' => '杻',
-  '柳' => '柳',
-  '流' => '流',
-  '溜' => '溜',
-  '琉' => '琉',
-  '留' => '留',
-  '硫' => '硫',
-  '紐' => '紐',
-  '類' => '類',
-  '六' => '六',
-  '戮' => '戮',
-  '陸' => '陸',
-  '倫' => '倫',
-  '崙' => '崙',
-  '淪' => '淪',
-  '輪' => '輪',
-  '律' => '律',
-  '慄' => '慄',
-  '栗' => '栗',
-  '率' => '率',
-  '隆' => '隆',
-  '利' => '利',
-  '吏' => '吏',
-  '履' => '履',
-  '易' => '易',
-  '李' => '李',
-  '梨' => '梨',
-  '泥' => '泥',
-  '理' => '理',
-  '痢' => '痢',
-  '罹' => '罹',
-  '裏' => '裏',
-  '裡' => '裡',
-  '里' => '里',
-  '離' => '離',
-  '匿' => '匿',
-  '溺' => '溺',
-  '吝' => '吝',
-  '燐' => '燐',
-  '璘' => '璘',
-  '藺' => '藺',
-  '隣' => '隣',
-  '鱗' => '鱗',
-  '麟' => '麟',
-  '林' => '林',
-  '淋' => '淋',
-  '臨' => '臨',
-  '立' => '立',
-  '笠' => '笠',
-  '粒' => '粒',
-  '狀' => '狀',
-  '炙' => '炙',
-  '識' => '識',
-  '什' => '什',
-  '茶' => '茶',
-  '刺' => '刺',
-  '切' => '切',
-  '度' => '度',
-  '拓' => '拓',
-  '糖' => '糖',
-  '宅' => '宅',
-  '洞' => '洞',
-  '暴' => '暴',
-  '輻' => '輻',
-  '行' => '行',
-  '降' => '降',
-  '見' => '見',
-  '廓' => '廓',
-  '兀' => '兀',
-  '嗀' => '嗀',
-  '塚' => '塚',
-  '晴' => '晴',
-  '凞' => '凞',
-  '猪' => '猪',
-  '益' => '益',
-  '礼' => '礼',
-  '神' => '神',
-  '祥' => '祥',
-  '福' => '福',
-  '靖' => '靖',
-  '精' => '精',
-  '羽' => '羽',
-  '蘒' => '蘒',
-  '諸' => '諸',
-  '逸' => '逸',
-  '都' => '都',
-  '飯' => '飯',
-  '飼' => '飼',
-  '館' => '館',
-  '鶴' => '鶴',
-  '郞' => '郞',
-  '隷' => '隷',
-  '侮' => '侮',
-  '僧' => '僧',
-  '免' => '免',
-  '勉' => '勉',
-  '勤' => '勤',
-  '卑' => '卑',
-  '喝' => '喝',
-  '嘆' => '嘆',
-  '器' => '器',
-  '塀' => '塀',
-  '墨' => '墨',
-  '層' => '層',
-  '屮' => '屮',
-  '悔' => '悔',
-  '慨' => '慨',
-  '憎' => '憎',
-  '懲' => '懲',
-  '敏' => '敏',
-  'ï©‚' => 'æ—¢',
-  '暑' => '暑',
-  '梅' => '梅',
-  'ï©…' => 'æµ·',
-  '渚' => '渚',
-  '漢' => '漢',
-  '煮' => '煮',
-  '爫' => '爫',
-  '琢' => '琢',
-  '碑' => '碑',
-  '社' => '社',
-  '祉' => '祉',
-  '祈' => '祈',
-  '祐' => '祐',
-  '祖' => '祖',
-  '祝' => '祝',
-  '禍' => '禍',
-  '禎' => '禎',
-  'ï©”' => 'ç©€',
-  '突' => '突',
-  '節' => '節',
-  'ï©—' => 'ç·´',
-  '縉' => '縉',
-  '繁' => '繁',
-  'ï©š' => 'ç½²',
-  '者' => '者',
-  '臭' => '臭',
-  '艹' => '艹',
-  '艹' => '艹',
-  'ï©Ÿ' => 'è‘—',
-  '褐' => '褐',
-  '視' => '視',
-  '謁' => '謁',
-  '謹' => '謹',
-  '賓' => '賓',
-  'ï©¥' => 'è´ˆ',
-  '辶' => '辶',
-  '逸' => '逸',
-  '難' => '難',
-  '響' => '響',
-  '頻' => '頻',
-  '恵' => '恵',
-  '𤋮' => '𤋮',
-  '舘' => '舘',
-  '並' => '並',
-  '况' => '况',
-  '全' => '全',
-  '侀' => '侀',
-  'ï©´' => 'å……',
-  '冀' => '冀',
-  '勇' => '勇',
-  '勺' => '勺',
-  '喝' => '喝',
-  '啕' => '啕',
-  '喙' => '喙',
-  'ï©»' => 'å—¢',
-  '塚' => '塚',
-  '墳' => '墳',
-  '奄' => '奄',
-  '奔' => '奔',
-  '婢' => '婢',
-  '嬨' => '嬨',
-  '廒' => '廒',
-  '廙' => '廙',
-  '彩' => '彩',
-  '徭' => '徭',
-  '惘' => '惘',
-  '慎' => '慎',
-  '愈' => '愈',
-  '憎' => '憎',
-  '慠' => '慠',
-  '懲' => '懲',
-  '戴' => '戴',
-  '揄' => '揄',
-  '搜' => '搜',
-  '摒' => '摒',
-  '敖' => '敖',
-  '晴' => '晴',
-  '朗' => '朗',
-  '望' => '望',
-  '杖' => '杖',
-  '歹' => '歹',
-  '殺' => '殺',
-  '流' => '流',
-  '滛' => '滛',
-  '滋' => '滋',
-  '漢' => '漢',
-  '瀞' => '瀞',
-  '煮' => '煮',
-  '瞧' => '瞧',
-  '爵' => '爵',
-  '犯' => '犯',
-  '猪' => '猪',
-  '瑱' => '瑱',
-  '甆' => '甆',
-  '画' => '画',
-  '瘝' => '瘝',
-  '瘟' => '瘟',
-  '益' => '益',
-  '盛' => '盛',
-  '直' => '直',
-  '睊' => '睊',
-  '着' => '着',
-  '磌' => '磌',
-  '窱' => '窱',
-  '節' => '節',
-  '类' => '类',
-  '絛' => '絛',
-  '練' => '練',
-  '缾' => '缾',
-  '者' => '者',
-  '荒' => '荒',
-  '華' => '華',
-  '蝹' => '蝹',
-  '襁' => '襁',
-  '覆' => '覆',
-  '視' => '視',
-  '調' => '調',
-  '諸' => '諸',
-  '請' => '請',
-  '謁' => '謁',
-  '諾' => '諾',
-  '諭' => '諭',
-  '謹' => '謹',
-  '變' => '變',
-  '贈' => '贈',
-  '輸' => '輸',
-  '遲' => '遲',
-  '醙' => '醙',
-  '鉶' => '鉶',
-  '陼' => '陼',
-  '難' => '難',
-  '靖' => '靖',
-  '韛' => '韛',
-  '響' => '響',
-  'ï«‹' => 'é ‹',
-  '頻' => '頻',
-  '鬒' => '鬒',
-  '龜' => '龜',
-  '𢡊' => '𢡊',
-  '𢡄' => '𢡄',
-  '𣏕' => '𣏕',
-  '㮝' => '㮝',
-  '䀘' => '䀘',
-  '䀹' => '䀹',
-  '𥉉' => '𥉉',
-  '𥳐' => '𥳐',
-  '𧻓' => '𧻓',
-  '齃' => '齃',
-  '龎' => '龎',
-  'יִ' => 'יִ',
-  'ײַ' => 'ײַ',
-  'שׁ' => 'שׁ',
-  'שׂ' => 'שׂ',
-  'שּׁ' => 'שּׁ',
-  'שּׂ' => 'שּׂ',
-  'אַ' => 'אַ',
-  'אָ' => 'אָ',
-  'אּ' => 'אּ',
-  'בּ' => 'בּ',
-  'גּ' => 'גּ',
-  'דּ' => 'דּ',
-  'הּ' => 'הּ',
-  'וּ' => 'וּ',
-  'זּ' => 'זּ',
-  'טּ' => 'טּ',
-  'יּ' => 'יּ',
-  'ךּ' => 'ךּ',
-  'כּ' => 'כּ',
-  'לּ' => 'לּ',
-  'מּ' => 'מּ',
-  'ï­€' => '× Ö¼',
-  'סּ' => 'סּ',
-  'ï­ƒ' => '×£Ö¼',
-  'פּ' => 'פּ',
-  'צּ' => 'צּ',
-  'קּ' => 'קּ',
-  'רּ' => 'רּ',
-  'שּ' => 'שּ',
-  'תּ' => 'תּ',
-  'וֹ' => 'וֹ',
-  'בֿ' => 'בֿ',
-  'כֿ' => 'כֿ',
-  'פֿ' => 'פֿ',
-  '𑂚' => '𑂚',
-  '𑂜' => '𑂜',
-  '𑂫' => '𑂫',
-  '𑄮' => '𑄮',
-  '𑄯' => '𑄯',
-  '𑍋' => '𑍋',
-  '𑍌' => '𑍌',
-  '𑒻' => '𑒻',
-  '𑒼' => '𑒼',
-  '𑒾' => '𑒾',
-  '𑖺' => '𑖺',
-  '𑖻' => '𑖻',
-  '𑤸' => '𑤸',
-  '𝅗𝅥' => '𝅗𝅥',
-  '𝅘𝅥' => '𝅘𝅥',
-  '𝅘𝅥𝅮' => '𝅘𝅥𝅮',
-  '𝅘𝅥𝅯' => '𝅘𝅥𝅯',
-  '𝅘𝅥𝅰' => '𝅘𝅥𝅰',
-  '𝅘𝅥𝅱' => '𝅘𝅥𝅱',
-  '𝅘𝅥𝅲' => '𝅘𝅥𝅲',
-  '𝆹𝅥' => '𝆹𝅥',
-  '𝆺𝅥' => '𝆺𝅥',
-  '𝆹𝅥𝅮' => '𝆹𝅥𝅮',
-  '𝆺𝅥𝅮' => '𝆺𝅥𝅮',
-  '𝆹𝅥𝅯' => '𝆹𝅥𝅯',
-  '𝆺𝅥𝅯' => '𝆺𝅥𝅯',
-  '丽' => '丽',
-  '丸' => '丸',
-  '乁' => '乁',
-  '𠄢' => '𠄢',
-  '你' => '你',
-  '侮' => '侮',
-  '侻' => '侻',
-  '倂' => '倂',
-  '偺' => '偺',
-  '備' => '備',
-  '僧' => '僧',
-  '像' => '像',
-  '㒞' => '㒞',
-  '𠘺' => '𠘺',
-  '免' => '免',
-  '兔' => '兔',
-  '兤' => '兤',
-  '具' => '具',
-  '𠔜' => '𠔜',
-  '㒹' => '㒹',
-  '內' => '內',
-  '再' => '再',
-  '𠕋' => '𠕋',
-  '冗' => '冗',
-  '冤' => '冤',
-  '仌' => '仌',
-  '冬' => '冬',
-  '况' => '况',
-  '𩇟' => '𩇟',
-  '凵' => '凵',
-  '刃' => '刃',
-  '㓟' => '㓟',
-  '刻' => '刻',
-  '剆' => '剆',
-  '割' => '割',
-  '剷' => '剷',
-  '㔕' => '㔕',
-  '勇' => '勇',
-  '勉' => '勉',
-  '勤' => '勤',
-  '勺' => '勺',
-  '包' => '包',
-  '匆' => '匆',
-  '北' => '北',
-  '卉' => '卉',
-  '卑' => '卑',
-  '博' => '博',
-  '即' => '即',
-  '卽' => '卽',
-  '卿' => '卿',
-  '卿' => '卿',
-  '卿' => '卿',
-  '𠨬' => '𠨬',
-  '灰' => '灰',
-  '及' => '及',
-  '叟' => '叟',
-  '𠭣' => '𠭣',
-  '叫' => '叫',
-  '叱' => '叱',
-  '吆' => '吆',
-  '咞' => '咞',
-  '吸' => '吸',
-  '呈' => '呈',
-  '周' => '周',
-  '咢' => '咢',
-  '哶' => '哶',
-  '唐' => '唐',
-  '啓' => '啓',
-  '啣' => '啣',
-  '善' => '善',
-  '善' => '善',
-  '喙' => '喙',
-  '喫' => '喫',
-  '喳' => '喳',
-  '嗂' => '嗂',
-  '圖' => '圖',
-  '嘆' => '嘆',
-  '圗' => '圗',
-  '噑' => '噑',
-  '噴' => '噴',
-  '切' => '切',
-  '壮' => '壮',
-  '城' => '城',
-  '埴' => '埴',
-  '堍' => '堍',
-  '型' => '型',
-  '堲' => '堲',
-  '報' => '報',
-  '墬' => '墬',
-  '𡓤' => '𡓤',
-  '売' => '売',
-  '壷' => '壷',
-  '夆' => '夆',
-  '多' => '多',
-  '夢' => '夢',
-  '奢' => '奢',
-  '𡚨' => '𡚨',
-  '𡛪' => '𡛪',
-  '姬' => '姬',
-  '娛' => '娛',
-  '娧' => '娧',
-  '姘' => '姘',
-  '婦' => '婦',
-  '㛮' => '㛮',
-  '㛼' => '㛼',
-  '嬈' => '嬈',
-  '嬾' => '嬾',
-  '嬾' => '嬾',
-  '𡧈' => '𡧈',
-  '寃' => '寃',
-  '寘' => '寘',
-  '寧' => '寧',
-  '寳' => '寳',
-  '𡬘' => '𡬘',
-  '寿' => '寿',
-  '将' => '将',
-  '当' => '当',
-  '尢' => '尢',
-  '㞁' => '㞁',
-  '屠' => '屠',
-  '屮' => '屮',
-  '峀' => '峀',
-  '岍' => '岍',
-  '𡷤' => '𡷤',
-  '嵃' => '嵃',
-  '𡷦' => '𡷦',
-  '嵮' => '嵮',
-  '嵫' => '嵫',
-  '嵼' => '嵼',
-  '巡' => '巡',
-  '巢' => '巢',
-  '㠯' => '㠯',
-  '巽' => '巽',
-  '帨' => '帨',
-  '帽' => '帽',
-  '幩' => '幩',
-  '㡢' => '㡢',
-  '𢆃' => '𢆃',
-  '㡼' => '㡼',
-  '庰' => '庰',
-  '庳' => '庳',
-  '庶' => '庶',
-  '廊' => '廊',
-  '𪎒' => '𪎒',
-  '廾' => '廾',
-  '𢌱' => '𢌱',
-  '𢌱' => '𢌱',
-  '舁' => '舁',
-  '弢' => '弢',
-  '弢' => '弢',
-  '㣇' => '㣇',
-  '𣊸' => '𣊸',
-  '𦇚' => '𦇚',
-  '形' => '形',
-  '彫' => '彫',
-  '㣣' => '㣣',
-  '徚' => '徚',
-  '忍' => '忍',
-  '志' => '志',
-  '忹' => '忹',
-  '悁' => '悁',
-  '㤺' => '㤺',
-  '㤜' => '㤜',
-  '悔' => '悔',
-  '𢛔' => '𢛔',
-  '惇' => '惇',
-  '慈' => '慈',
-  '慌' => '慌',
-  '慎' => '慎',
-  '慌' => '慌',
-  '慺' => '慺',
-  '憎' => '憎',
-  '憲' => '憲',
-  '憤' => '憤',
-  '憯' => '憯',
-  '懞' => '懞',
-  '懲' => '懲',
-  '懶' => '懶',
-  '成' => '成',
-  '戛' => '戛',
-  '扝' => '扝',
-  '抱' => '抱',
-  '拔' => '拔',
-  '捐' => '捐',
-  '𢬌' => '𢬌',
-  '挽' => '挽',
-  '拼' => '拼',
-  '捨' => '捨',
-  '掃' => '掃',
-  '揤' => '揤',
-  '𢯱' => '𢯱',
-  '搢' => '搢',
-  '揅' => '揅',
-  '掩' => '掩',
-  '㨮' => '㨮',
-  '摩' => '摩',
-  '摾' => '摾',
-  '撝' => '撝',
-  '摷' => '摷',
-  '㩬' => '㩬',
-  '敏' => '敏',
-  '敬' => '敬',
-  '𣀊' => '𣀊',
-  '旣' => '旣',
-  '書' => '書',
-  '晉' => '晉',
-  '㬙' => '㬙',
-  '暑' => '暑',
-  '㬈' => '㬈',
-  '㫤' => '㫤',
-  '冒' => '冒',
-  '冕' => '冕',
-  '最' => '最',
-  '暜' => '暜',
-  '肭' => '肭',
-  '䏙' => '䏙',
-  '朗' => '朗',
-  '望' => '望',
-  '朡' => '朡',
-  '杞' => '杞',
-  '杓' => '杓',
-  '𣏃' => '𣏃',
-  '㭉' => '㭉',
-  '柺' => '柺',
-  '枅' => '枅',
-  '桒' => '桒',
-  '梅' => '梅',
-  '𣑭' => '𣑭',
-  '梎' => '梎',
-  '栟' => '栟',
-  '椔' => '椔',
-  '㮝' => '㮝',
-  '楂' => '楂',
-  '榣' => '榣',
-  '槪' => '槪',
-  '檨' => '檨',
-  '𣚣' => '𣚣',
-  '櫛' => '櫛',
-  '㰘' => '㰘',
-  '次' => '次',
-  '𣢧' => '𣢧',
-  '歔' => '歔',
-  '㱎' => '㱎',
-  '歲' => '歲',
-  '殟' => '殟',
-  '殺' => '殺',
-  '殻' => '殻',
-  '𣪍' => '𣪍',
-  '𡴋' => '𡴋',
-  '𣫺' => '𣫺',
-  '汎' => '汎',
-  '𣲼' => '𣲼',
-  '沿' => '沿',
-  '泍' => '泍',
-  '汧' => '汧',
-  '洖' => '洖',
-  '派' => '派',
-  '海' => '海',
-  '流' => '流',
-  '浩' => '浩',
-  '浸' => '浸',
-  '涅' => '涅',
-  '𣴞' => '𣴞',
-  '洴' => '洴',
-  '港' => '港',
-  '湮' => '湮',
-  '㴳' => '㴳',
-  '滋' => '滋',
-  '滇' => '滇',
-  '𣻑' => '𣻑',
-  '淹' => '淹',
-  '潮' => '潮',
-  '𣽞' => '𣽞',
-  '𣾎' => '𣾎',
-  '濆' => '濆',
-  '瀹' => '瀹',
-  '瀞' => '瀞',
-  '瀛' => '瀛',
-  '㶖' => '㶖',
-  '灊' => '灊',
-  '災' => '災',
-  '灷' => '灷',
-  '炭' => '炭',
-  '𠔥' => '𠔥',
-  '煅' => '煅',
-  '𤉣' => '𤉣',
-  '熜' => '熜',
-  '𤎫' => '𤎫',
-  '爨' => '爨',
-  '爵' => '爵',
-  '牐' => '牐',
-  '𤘈' => '𤘈',
-  '犀' => '犀',
-  '犕' => '犕',
-  '𤜵' => '𤜵',
-  '𤠔' => '𤠔',
-  '獺' => '獺',
-  '王' => '王',
-  '㺬' => '㺬',
-  '玥' => '玥',
-  '㺸' => '㺸',
-  '㺸' => '㺸',
-  '瑇' => '瑇',
-  '瑜' => '瑜',
-  '瑱' => '瑱',
-  '璅' => '璅',
-  '瓊' => '瓊',
-  '㼛' => '㼛',
-  '甤' => '甤',
-  '𤰶' => '𤰶',
-  '甾' => '甾',
-  '𤲒' => '𤲒',
-  '異' => '異',
-  '𢆟' => '𢆟',
-  '瘐' => '瘐',
-  '𤾡' => '𤾡',
-  '𤾸' => '𤾸',
-  '𥁄' => '𥁄',
-  '㿼' => '㿼',
-  '䀈' => '䀈',
-  '直' => '直',
-  '𥃳' => '𥃳',
-  '𥃲' => '𥃲',
-  '𥄙' => '𥄙',
-  '𥄳' => '𥄳',
-  '眞' => '眞',
-  '真' => '真',
-  '真' => '真',
-  '睊' => '睊',
-  '䀹' => '䀹',
-  '瞋' => '瞋',
-  '䁆' => '䁆',
-  '䂖' => '䂖',
-  '𥐝' => '𥐝',
-  '硎' => '硎',
-  '碌' => '碌',
-  '磌' => '磌',
-  '䃣' => '䃣',
-  '𥘦' => '𥘦',
-  '祖' => '祖',
-  '𥚚' => '𥚚',
-  '𥛅' => '𥛅',
-  '福' => '福',
-  '秫' => '秫',
-  '䄯' => '䄯',
-  '穀' => '穀',
-  '穊' => '穊',
-  '穏' => '穏',
-  '𥥼' => '𥥼',
-  '𥪧' => '𥪧',
-  '𥪧' => '𥪧',
-  '竮' => '竮',
-  '䈂' => '䈂',
-  '𥮫' => '𥮫',
-  '篆' => '篆',
-  '築' => '築',
-  '䈧' => '䈧',
-  '𥲀' => '𥲀',
-  '糒' => '糒',
-  '䊠' => '䊠',
-  '糨' => '糨',
-  '糣' => '糣',
-  '紀' => '紀',
-  '𥾆' => '𥾆',
-  '絣' => '絣',
-  '䌁' => '䌁',
-  '緇' => '緇',
-  '縂' => '縂',
-  '繅' => '繅',
-  '䌴' => '䌴',
-  '𦈨' => '𦈨',
-  '𦉇' => '𦉇',
-  '䍙' => '䍙',
-  '𦋙' => '𦋙',
-  '罺' => '罺',
-  '𦌾' => '𦌾',
-  '羕' => '羕',
-  '翺' => '翺',
-  '者' => '者',
-  '𦓚' => '𦓚',
-  '𦔣' => '𦔣',
-  '聠' => '聠',
-  '𦖨' => '𦖨',
-  '聰' => '聰',
-  '𣍟' => '𣍟',
-  '䏕' => '䏕',
-  '育' => '育',
-  '脃' => '脃',
-  '䐋' => '䐋',
-  '脾' => '脾',
-  '媵' => '媵',
-  '𦞧' => '𦞧',
-  '𦞵' => '𦞵',
-  '𣎓' => '𣎓',
-  '𣎜' => '𣎜',
-  '舁' => '舁',
-  '舄' => '舄',
-  '辞' => '辞',
-  '䑫' => '䑫',
-  '芑' => '芑',
-  '芋' => '芋',
-  '芝' => '芝',
-  '劳' => '劳',
-  '花' => '花',
-  '芳' => '芳',
-  '芽' => '芽',
-  '苦' => '苦',
-  '𦬼' => '𦬼',
-  '若' => '若',
-  '茝' => '茝',
-  '荣' => '荣',
-  '莭' => '莭',
-  '茣' => '茣',
-  '莽' => '莽',
-  '菧' => '菧',
-  '著' => '著',
-  '荓' => '荓',
-  '菊' => '菊',
-  '菌' => '菌',
-  '菜' => '菜',
-  '𦰶' => '𦰶',
-  '𦵫' => '𦵫',
-  '𦳕' => '𦳕',
-  '䔫' => '䔫',
-  '蓱' => '蓱',
-  '蓳' => '蓳',
-  '蔖' => '蔖',
-  '𧏊' => '𧏊',
-  '蕤' => '蕤',
-  '𦼬' => '𦼬',
-  '䕝' => '䕝',
-  '䕡' => '䕡',
-  '𦾱' => '𦾱',
-  '𧃒' => '𧃒',
-  '䕫' => '䕫',
-  '虐' => '虐',
-  '虜' => '虜',
-  '虧' => '虧',
-  '虩' => '虩',
-  '蚩' => '蚩',
-  '蚈' => '蚈',
-  '蜎' => '蜎',
-  '蛢' => '蛢',
-  '蝹' => '蝹',
-  '蜨' => '蜨',
-  '蝫' => '蝫',
-  '螆' => '螆',
-  '䗗' => '䗗',
-  '蟡' => '蟡',
-  '蠁' => '蠁',
-  '䗹' => '䗹',
-  '衠' => '衠',
-  '衣' => '衣',
-  '𧙧' => '𧙧',
-  '裗' => '裗',
-  '裞' => '裞',
-  '䘵' => '䘵',
-  '裺' => '裺',
-  '㒻' => '㒻',
-  '𧢮' => '𧢮',
-  '𧥦' => '𧥦',
-  '䚾' => '䚾',
-  '䛇' => '䛇',
-  '誠' => '誠',
-  '諭' => '諭',
-  '變' => '變',
-  '豕' => '豕',
-  '𧲨' => '𧲨',
-  '貫' => '貫',
-  '賁' => '賁',
-  '贛' => '贛',
-  '起' => '起',
-  '𧼯' => '𧼯',
-  '𠠄' => '𠠄',
-  '跋' => '跋',
-  '趼' => '趼',
-  '跰' => '跰',
-  '𠣞' => '𠣞',
-  '軔' => '軔',
-  '輸' => '輸',
-  '𨗒' => '𨗒',
-  '𨗭' => '𨗭',
-  '邔' => '邔',
-  '郱' => '郱',
-  '鄑' => '鄑',
-  '𨜮' => '𨜮',
-  '鄛' => '鄛',
-  '鈸' => '鈸',
-  '鋗' => '鋗',
-  '鋘' => '鋘',
-  '鉼' => '鉼',
-  '鏹' => '鏹',
-  '鐕' => '鐕',
-  '𨯺' => '𨯺',
-  '開' => '開',
-  '䦕' => '䦕',
-  '閷' => '閷',
-  '𨵷' => '𨵷',
-  '䧦' => '䧦',
-  '雃' => '雃',
-  '嶲' => '嶲',
-  '霣' => '霣',
-  '𩅅' => '𩅅',
-  '𩈚' => '𩈚',
-  '䩮' => '䩮',
-  '䩶' => '䩶',
-  '韠' => '韠',
-  '𩐊' => '𩐊',
-  '䪲' => '䪲',
-  '𩒖' => '𩒖',
-  '頋' => '頋',
-  '頋' => '頋',
-  '頩' => '頩',
-  '𩖶' => '𩖶',
-  '飢' => '飢',
-  '䬳' => '䬳',
-  '餩' => '餩',
-  '馧' => '馧',
-  '駂' => '駂',
-  '駾' => '駾',
-  '䯎' => '䯎',
-  '𩬰' => '𩬰',
-  '鬒' => '鬒',
-  '鱀' => '鱀',
-  '鳽' => '鳽',
-  '䳎' => '䳎',
-  '䳭' => '䳭',
-  '鵧' => '鵧',
-  '𪃎' => '𪃎',
-  '䳸' => '䳸',
-  '𪄅' => '𪄅',
-  '𪈎' => '𪈎',
-  '𪊑' => '𪊑',
-  '麻' => '麻',
-  '䵖' => '䵖',
-  '黹' => '黹',
-  '黾' => '黾',
-  '鼅' => '鼅',
-  '鼏' => '鼏',
-  '鼖' => '鼖',
-  '鼻' => '鼻',
-  '𪘀' => '𪘀',
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php b/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php
deleted file mode 100644
index ec90f36eb65c636149d1de8f122e47649cefcbe2..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php
+++ /dev/null
@@ -1,876 +0,0 @@
-<?php
-
-return array (
-  'Ì€' => 230,
-  '́' => 230,
-  'Ì‚' => 230,
-  '̃' => 230,
-  'Ì„' => 230,
-  'Ì…' => 230,
-  '̆' => 230,
-  '̇' => 230,
-  '̈' => 230,
-  '̉' => 230,
-  'ÌŠ' => 230,
-  'Ì‹' => 230,
-  '̌' => 230,
-  '̍' => 230,
-  'ÌŽ' => 230,
-  '̏' => 230,
-  '̐' => 230,
-  'Ì‘' => 230,
-  'Ì’' => 230,
-  'Ì“' => 230,
-  'Ì”' => 230,
-  'Ì•' => 232,
-  'Ì–' => 220,
-  'Ì—' => 220,
-  '̘' => 220,
-  'Ì™' => 220,
-  'Ìš' => 232,
-  'Ì›' => 216,
-  '̜' => 220,
-  '̝' => 220,
-  'Ìž' => 220,
-  'ÌŸ' => 220,
-  'Ì ' => 220,
-  'Ì¡' => 202,
-  'Ì¢' => 202,
-  'Ì£' => 220,
-  '̤' => 220,
-  'Ì¥' => 220,
-  '̦' => 220,
-  '̧' => 202,
-  '̨' => 202,
-  'Ì©' => 220,
-  '̪' => 220,
-  'Ì«' => 220,
-  '̬' => 220,
-  'Ì­' => 220,
-  'Ì®' => 220,
-  '̯' => 220,
-  'Ì°' => 220,
-  '̱' => 220,
-  '̲' => 220,
-  '̳' => 220,
-  'Ì´' => 1,
-  '̵' => 1,
-  '̶' => 1,
-  'Ì·' => 1,
-  '̸' => 1,
-  '̹' => 220,
-  '̺' => 220,
-  'Ì»' => 220,
-  '̼' => 220,
-  '̽' => 230,
-  '̾' => 230,
-  'Ì¿' => 230,
-  'Í€' => 230,
-  '́' => 230,
-  'Í‚' => 230,
-  '̓' => 230,
-  'Í„' => 230,
-  'Í…' => 240,
-  '͆' => 230,
-  '͇' => 220,
-  '͈' => 220,
-  '͉' => 220,
-  'ÍŠ' => 230,
-  'Í‹' => 230,
-  '͌' => 230,
-  '͍' => 220,
-  'ÍŽ' => 220,
-  '͐' => 230,
-  'Í‘' => 230,
-  'Í’' => 230,
-  'Í“' => 220,
-  'Í”' => 220,
-  'Í•' => 220,
-  'Í–' => 220,
-  'Í—' => 230,
-  '͘' => 232,
-  'Í™' => 220,
-  'Íš' => 220,
-  'Í›' => 230,
-  '͜' => 233,
-  '͝' => 234,
-  'Íž' => 234,
-  'ÍŸ' => 233,
-  'Í ' => 234,
-  'Í¡' => 234,
-  'Í¢' => 233,
-  'Í£' => 230,
-  'ͤ' => 230,
-  'Í¥' => 230,
-  'ͦ' => 230,
-  'ͧ' => 230,
-  'ͨ' => 230,
-  'Í©' => 230,
-  'ͪ' => 230,
-  'Í«' => 230,
-  'ͬ' => 230,
-  'Í­' => 230,
-  'Í®' => 230,
-  'ͯ' => 230,
-  'Òƒ' => 230,
-  'Ò„' => 230,
-  'Ò…' => 230,
-  'Ò†' => 230,
-  'Ò‡' => 230,
-  'Ö‘' => 220,
-  'Ö’' => 230,
-  'Ö“' => 230,
-  'Ö”' => 230,
-  'Ö•' => 230,
-  'Ö–' => 220,
-  'Ö—' => 230,
-  'Ö˜' => 230,
-  'Ö™' => 230,
-  'Öš' => 222,
-  'Ö›' => 220,
-  '֜' => 230,
-  '֝' => 230,
-  'Öž' => 230,
-  'ÖŸ' => 230,
-  'Ö ' => 230,
-  'Ö¡' => 230,
-  'Ö¢' => 220,
-  'Ö£' => 220,
-  'Ö¤' => 220,
-  'Ö¥' => 220,
-  'Ö¦' => 220,
-  'Ö§' => 220,
-  'Ö¨' => 230,
-  'Ö©' => 230,
-  'Öª' => 220,
-  'Ö«' => 230,
-  'Ö¬' => 230,
-  'Ö­' => 222,
-  'Ö®' => 228,
-  'Ö¯' => 230,
-  'Ö°' => 10,
-  'Ö±' => 11,
-  'Ö²' => 12,
-  'Ö³' => 13,
-  'Ö´' => 14,
-  'Öµ' => 15,
-  'Ö¶' => 16,
-  'Ö·' => 17,
-  'Ö¸' => 18,
-  'Ö¹' => 19,
-  'Öº' => 19,
-  'Ö»' => 20,
-  'Ö¼' => 21,
-  'Ö½' => 22,
-  'Ö¿' => 23,
-  'ׁ' => 24,
-  'ׂ' => 25,
-  'ׄ' => 230,
-  '×…' => 220,
-  'ׇ' => 18,
-  'ؐ' => 230,
-  'Ø‘' => 230,
-  'Ø’' => 230,
-  'Ø“' => 230,
-  'Ø”' => 230,
-  'Ø•' => 230,
-  'Ø–' => 230,
-  'Ø—' => 230,
-  'ؘ' => 30,
-  'Ø™' => 31,
-  'Øš' => 32,
-  'Ù‹' => 27,
-  'ٌ' => 28,
-  'ٍ' => 29,
-  'ÙŽ' => 30,
-  'ُ' => 31,
-  'ِ' => 32,
-  'Ù‘' => 33,
-  'Ù’' => 34,
-  'Ù“' => 230,
-  'Ù”' => 230,
-  'Ù•' => 220,
-  'Ù–' => 220,
-  'Ù—' => 230,
-  'Ù˜' => 230,
-  'Ù™' => 230,
-  'Ùš' => 230,
-  'Ù›' => 230,
-  'ٜ' => 220,
-  'ٝ' => 230,
-  'Ùž' => 230,
-  'ÙŸ' => 220,
-  'Ù°' => 35,
-  'Û–' => 230,
-  'Û—' => 230,
-  'Û˜' => 230,
-  'Û™' => 230,
-  'Ûš' => 230,
-  'Û›' => 230,
-  'ۜ' => 230,
-  'ÛŸ' => 230,
-  'Û ' => 230,
-  'Û¡' => 230,
-  'Û¢' => 230,
-  'Û£' => 220,
-  'Û¤' => 230,
-  'Û§' => 230,
-  'Û¨' => 230,
-  'Ûª' => 220,
-  'Û«' => 230,
-  'Û¬' => 230,
-  'Û­' => 220,
-  'Ü‘' => 36,
-  'Ü°' => 230,
-  'ܱ' => 220,
-  'ܲ' => 230,
-  'ܳ' => 230,
-  'Ü´' => 220,
-  'ܵ' => 230,
-  'ܶ' => 230,
-  'Ü·' => 220,
-  'ܸ' => 220,
-  'ܹ' => 220,
-  'ܺ' => 230,
-  'Ü»' => 220,
-  'ܼ' => 220,
-  'ܽ' => 230,
-  'ܾ' => 220,
-  'Ü¿' => 230,
-  'Ý€' => 230,
-  '݁' => 230,
-  'Ý‚' => 220,
-  '݃' => 230,
-  'Ý„' => 220,
-  'Ý…' => 230,
-  '݆' => 220,
-  '݇' => 230,
-  '݈' => 220,
-  '݉' => 230,
-  'ÝŠ' => 230,
-  'ß«' => 230,
-  '߬' => 230,
-  'ß­' => 230,
-  'ß®' => 230,
-  '߯' => 230,
-  'ß°' => 230,
-  'ß±' => 230,
-  'ß²' => 220,
-  'ß³' => 230,
-  'ß½' => 220,
-  'à –' => 230,
-  'à —' => 230,
-  'à ˜' => 230,
-  'à ™' => 230,
-  'à ›' => 230,
-  'ࠜ' => 230,
-  'ࠝ' => 230,
-  'à ž' => 230,
-  'à Ÿ' => 230,
-  'à  ' => 230,
-  'à ¡' => 230,
-  'à ¢' => 230,
-  'à £' => 230,
-  'à ¥' => 230,
-  'à ¦' => 230,
-  'à §' => 230,
-  'à ©' => 230,
-  'à ª' => 230,
-  'à «' => 230,
-  'à ¬' => 230,
-  'à ­' => 230,
-  'à¡™' => 220,
-  'à¡š' => 220,
-  'à¡›' => 220,
-  '࣓' => 220,
-  'ࣔ' => 230,
-  'ࣕ' => 230,
-  'ࣖ' => 230,
-  'ࣗ' => 230,
-  'ࣘ' => 230,
-  'ࣙ' => 230,
-  'ࣚ' => 230,
-  'ࣛ' => 230,
-  'ࣜ' => 230,
-  'ࣝ' => 230,
-  'ࣞ' => 230,
-  'ࣟ' => 230,
-  '࣠' => 230,
-  '࣡' => 230,
-  'ࣣ' => 220,
-  'ࣤ' => 230,
-  'ࣥ' => 230,
-  'ࣦ' => 220,
-  'ࣧ' => 230,
-  'ࣨ' => 230,
-  'ࣩ' => 220,
-  '࣪' => 230,
-  '࣫' => 230,
-  '࣬' => 230,
-  '࣭' => 220,
-  '࣮' => 220,
-  '࣯' => 220,
-  'ࣰ' => 27,
-  'ࣱ' => 28,
-  'ࣲ' => 29,
-  'ࣳ' => 230,
-  'ࣴ' => 230,
-  'ࣵ' => 230,
-  'ࣶ' => 220,
-  'ࣷ' => 230,
-  'ࣸ' => 230,
-  'ࣹ' => 220,
-  'ࣺ' => 220,
-  'ࣻ' => 230,
-  'ࣼ' => 230,
-  'ࣽ' => 230,
-  'ࣾ' => 230,
-  'ࣿ' => 230,
-  '़' => 7,
-  '्' => 9,
-  '॑' => 230,
-  '॒' => 220,
-  '॓' => 230,
-  '॔' => 230,
-  '়' => 7,
-  '্' => 9,
-  '৾' => 230,
-  '਼' => 7,
-  '੍' => 9,
-  '઼' => 7,
-  '્' => 9,
-  '଼' => 7,
-  '୍' => 9,
-  '்' => 9,
-  '్' => 9,
-  'ౕ' => 84,
-  'à±–' => 91,
-  '಼' => 7,
-  '್' => 9,
-  'à´»' => 9,
-  'à´¼' => 9,
-  '്' => 9,
-  'à·Š' => 9,
-  'ุ' => 103,
-  'ู' => 103,
-  'ฺ' => 9,
-  '่' => 107,
-  '้' => 107,
-  '๊' => 107,
-  '๋' => 107,
-  'ຸ' => 118,
-  'ູ' => 118,
-  '຺' => 9,
-  '່' => 122,
-  '້' => 122,
-  '໊' => 122,
-  '໋' => 122,
-  '༘' => 220,
-  '༙' => 220,
-  '༵' => 220,
-  '༷' => 220,
-  '༹' => 216,
-  'ཱ' => 129,
-  'ི' => 130,
-  'ུ' => 132,
-  'ེ' => 130,
-  'ཻ' => 130,
-  'ོ' => 130,
-  'ཽ' => 130,
-  'ྀ' => 130,
-  'ྂ' => 230,
-  'ྃ' => 230,
-  '྄' => 9,
-  '྆' => 230,
-  '྇' => 230,
-  '࿆' => 220,
-  '့' => 7,
-  '္' => 9,
-  '်' => 9,
-  'ႍ' => 220,
-  '፝' => 230,
-  '፞' => 230,
-  '፟' => 230,
-  '᜔' => 9,
-  '᜴' => 9,
-  '្' => 9,
-  '៝' => 230,
-  'ᢩ' => 228,
-  '᤹' => 222,
-  '᤺' => 230,
-  '᤻' => 220,
-  'ᨗ' => 230,
-  'ᨘ' => 220,
-  'á© ' => 9,
-  '᩵' => 230,
-  '᩶' => 230,
-  'á©·' => 230,
-  '᩸' => 230,
-  '᩹' => 230,
-  '᩺' => 230,
-  'á©»' => 230,
-  '᩼' => 230,
-  'á©¿' => 220,
-  '᪰' => 230,
-  '᪱' => 230,
-  '᪲' => 230,
-  '᪳' => 230,
-  '᪴' => 230,
-  '᪵' => 220,
-  '᪶' => 220,
-  '᪷' => 220,
-  '᪸' => 220,
-  '᪹' => 220,
-  '᪺' => 220,
-  '᪻' => 230,
-  '᪼' => 230,
-  '᪽' => 220,
-  'ᪿ' => 220,
-  'á«€' => 220,
-  '᬴' => 7,
-  'á­„' => 9,
-  'á­«' => 230,
-  'á­¬' => 220,
-  'á­­' => 230,
-  'á­®' => 230,
-  'á­¯' => 230,
-  'á­°' => 230,
-  'á­±' => 230,
-  'á­²' => 230,
-  'á­³' => 230,
-  '᮪' => 9,
-  '᮫' => 9,
-  '᯦' => 7,
-  '᯲' => 9,
-  '᯳' => 9,
-  'á°·' => 7,
-  '᳐' => 230,
-  '᳑' => 230,
-  'á³’' => 230,
-  'á³”' => 1,
-  '᳕' => 220,
-  'á³–' => 220,
-  'á³—' => 220,
-  '᳘' => 220,
-  'á³™' => 220,
-  '᳚' => 230,
-  'á³›' => 230,
-  '᳜' => 220,
-  '᳝' => 220,
-  '᳞' => 220,
-  '᳟' => 220,
-  'á³ ' => 230,
-  'á³¢' => 1,
-  'á³£' => 1,
-  '᳤' => 1,
-  'á³¥' => 1,
-  '᳦' => 1,
-  '᳧' => 1,
-  '᳨' => 1,
-  'á³­' => 220,
-  'á³´' => 230,
-  '᳸' => 230,
-  'á³¹' => 230,
-  'á·€' => 230,
-  '᷁' => 230,
-  'á·‚' => 220,
-  'á·ƒ' => 230,
-  'á·„' => 230,
-  'á·…' => 230,
-  'á·†' => 230,
-  'á·‡' => 230,
-  'á·ˆ' => 230,
-  'á·‰' => 230,
-  'á·Š' => 220,
-  'á·‹' => 230,
-  '᷌' => 230,
-  '᷍' => 234,
-  'á·Ž' => 214,
-  '᷏' => 220,
-  '᷐' => 202,
-  'á·‘' => 230,
-  'á·’' => 230,
-  'á·“' => 230,
-  'á·”' => 230,
-  'á·•' => 230,
-  'á·–' => 230,
-  'á·—' => 230,
-  'á·˜' => 230,
-  'á·™' => 230,
-  'á·š' => 230,
-  'á·›' => 230,
-  'ᷜ' => 230,
-  'ᷝ' => 230,
-  'á·ž' => 230,
-  'á·Ÿ' => 230,
-  'á· ' => 230,
-  'á·¡' => 230,
-  'á·¢' => 230,
-  'á·£' => 230,
-  'á·¤' => 230,
-  'á·¥' => 230,
-  'á·¦' => 230,
-  'á·§' => 230,
-  'á·¨' => 230,
-  'á·©' => 230,
-  'á·ª' => 230,
-  'á·«' => 230,
-  'á·¬' => 230,
-  'á·­' => 230,
-  'á·®' => 230,
-  'á·¯' => 230,
-  'á·°' => 230,
-  'á·±' => 230,
-  'á·²' => 230,
-  'á·³' => 230,
-  'á·´' => 230,
-  'á·µ' => 230,
-  'á·¶' => 232,
-  'á··' => 228,
-  'á·¸' => 228,
-  'á·¹' => 220,
-  'á·»' => 230,
-  'á·¼' => 233,
-  'á·½' => 220,
-  'á·¾' => 230,
-  'á·¿' => 220,
-  '⃐' => 230,
-  '⃑' => 230,
-  '⃒' => 1,
-  '⃓' => 1,
-  '⃔' => 230,
-  '⃕' => 230,
-  '⃖' => 230,
-  '⃗' => 230,
-  '⃘' => 1,
-  '⃙' => 1,
-  '⃚' => 1,
-  '⃛' => 230,
-  '⃜' => 230,
-  '⃡' => 230,
-  '⃥' => 1,
-  '⃦' => 1,
-  '⃧' => 230,
-  '⃨' => 220,
-  '⃩' => 230,
-  '⃪' => 1,
-  '⃫' => 1,
-  '⃬' => 220,
-  '⃭' => 220,
-  '⃮' => 220,
-  '⃯' => 220,
-  '⃰' => 230,
-  '⳯' => 230,
-  'â³°' => 230,
-  'â³±' => 230,
-  '⵿' => 9,
-  'â· ' => 230,
-  'â·¡' => 230,
-  'â·¢' => 230,
-  'â·£' => 230,
-  'â·¤' => 230,
-  'â·¥' => 230,
-  'â·¦' => 230,
-  'â·§' => 230,
-  'â·¨' => 230,
-  'â·©' => 230,
-  'â·ª' => 230,
-  'â·«' => 230,
-  'â·¬' => 230,
-  'â·­' => 230,
-  'â·®' => 230,
-  'â·¯' => 230,
-  'â·°' => 230,
-  'â·±' => 230,
-  'â·²' => 230,
-  'â·³' => 230,
-  'â·´' => 230,
-  'â·µ' => 230,
-  'â·¶' => 230,
-  'â··' => 230,
-  'â·¸' => 230,
-  'â·¹' => 230,
-  'â·º' => 230,
-  'â·»' => 230,
-  'â·¼' => 230,
-  'â·½' => 230,
-  'â·¾' => 230,
-  'â·¿' => 230,
-  '〪' => 218,
-  '〫' => 228,
-  '〬' => 232,
-  '〭' => 222,
-  '〮' => 224,
-  '〯' => 224,
-  'ã‚™' => 8,
-  'ã‚š' => 8,
-  '꙯' => 230,
-  'ê™´' => 230,
-  'ꙵ' => 230,
-  'ꙶ' => 230,
-  'ê™·' => 230,
-  'ꙸ' => 230,
-  'ꙹ' => 230,
-  'ꙺ' => 230,
-  'ê™»' => 230,
-  '꙼' => 230,
-  '꙽' => 230,
-  'êšž' => 230,
-  'ꚟ' => 230,
-  'ê›°' => 230,
-  'ê›±' => 230,
-  'ê †' => 9,
-  'ê ¬' => 9,
-  '꣄' => 9,
-  '꣠' => 230,
-  '꣡' => 230,
-  '꣢' => 230,
-  '꣣' => 230,
-  '꣤' => 230,
-  '꣥' => 230,
-  '꣦' => 230,
-  '꣧' => 230,
-  '꣨' => 230,
-  '꣩' => 230,
-  '꣪' => 230,
-  '꣫' => 230,
-  '꣬' => 230,
-  '꣭' => 230,
-  '꣮' => 230,
-  '꣯' => 230,
-  '꣰' => 230,
-  '꣱' => 230,
-  '꤫' => 220,
-  '꤬' => 220,
-  '꤭' => 220,
-  '꥓' => 9,
-  '꦳' => 7,
-  '꧀' => 9,
-  'ꪰ' => 230,
-  'ꪲ' => 230,
-  'ꪳ' => 230,
-  'ꪴ' => 220,
-  'ꪷ' => 230,
-  'ꪸ' => 230,
-  'ꪾ' => 230,
-  '꪿' => 230,
-  '꫁' => 230,
-  '꫶' => 9,
-  '꯭' => 9,
-  'ﬞ' => 26,
-  '︠' => 230,
-  '︡' => 230,
-  '︢' => 230,
-  '︣' => 230,
-  '︤' => 230,
-  '︥' => 230,
-  '︦' => 230,
-  '︧' => 220,
-  '︨' => 220,
-  '︩' => 220,
-  '︪' => 220,
-  '︫' => 220,
-  '︬' => 220,
-  '︭' => 220,
-  '︮' => 230,
-  '︯' => 230,
-  '𐇽' => 220,
-  '𐋠' => 220,
-  '𐍶' => 230,
-  '𐍷' => 230,
-  '𐍸' => 230,
-  '𐍹' => 230,
-  '𐍺' => 230,
-  '𐨍' => 220,
-  '𐨏' => 230,
-  '𐨸' => 230,
-  '𐨹' => 1,
-  '𐨺' => 220,
-  '𐨿' => 9,
-  '𐫥' => 230,
-  '𐫦' => 220,
-  '𐴤' => 230,
-  '𐴥' => 230,
-  '𐴦' => 230,
-  '𐴧' => 230,
-  '𐺫' => 230,
-  '𐺬' => 230,
-  '𐽆' => 220,
-  '𐽇' => 220,
-  '𐽈' => 230,
-  '𐽉' => 230,
-  '𐽊' => 230,
-  '𐽋' => 220,
-  '𐽌' => 230,
-  '𐽍' => 220,
-  '𐽎' => 220,
-  '𐽏' => 220,
-  '𐽐' => 220,
-  '𑁆' => 9,
-  '𑁿' => 9,
-  'ð‘‚¹' => 9,
-  '𑂺' => 7,
-  'ð‘„€' => 230,
-  '𑄁' => 230,
-  'ð‘„‚' => 230,
-  'ð‘„³' => 9,
-  'ð‘„´' => 9,
-  'ð‘…³' => 7,
-  '𑇀' => 9,
-  '𑇊' => 7,
-  '𑈵' => 9,
-  '𑈶' => 7,
-  'ð‘‹©' => 7,
-  '𑋪' => 9,
-  '𑌻' => 7,
-  '𑌼' => 7,
-  '𑍍' => 9,
-  '𑍦' => 230,
-  '𑍧' => 230,
-  '𑍨' => 230,
-  '𑍩' => 230,
-  '𑍪' => 230,
-  '𑍫' => 230,
-  '𑍬' => 230,
-  '𑍰' => 230,
-  '𑍱' => 230,
-  '𑍲' => 230,
-  '𑍳' => 230,
-  '𑍴' => 230,
-  'ð‘‘‚' => 9,
-  '𑑆' => 7,
-  'ð‘‘ž' => 230,
-  'ð‘“‚' => 9,
-  '𑓃' => 7,
-  'ð‘–¿' => 9,
-  'ð‘—€' => 7,
-  '𑘿' => 9,
-  '𑚶' => 9,
-  'ð‘š·' => 7,
-  '𑜫' => 9,
-  'ð‘ ¹' => 9,
-  'ð‘ º' => 7,
-  '𑤽' => 9,
-  '𑤾' => 9,
-  '𑥃' => 7,
-  '𑧠' => 9,
-  '𑨴' => 9,
-  '𑩇' => 9,
-  '𑪙' => 9,
-  'ð‘°¿' => 9,
-  '𑵂' => 7,
-  '𑵄' => 9,
-  '𑵅' => 9,
-  '𑶗' => 9,
-  'ð–«°' => 1,
-  'ð–«±' => 1,
-  'ð–«²' => 1,
-  'ð–«³' => 1,
-  'ð–«´' => 1,
-  'ð–¬°' => 230,
-  '𖬱' => 230,
-  '𖬲' => 230,
-  '𖬳' => 230,
-  'ð–¬´' => 230,
-  '𖬵' => 230,
-  '𖬶' => 230,
-  'ð–¿°' => 6,
-  'ð–¿±' => 6,
-  '𛲞' => 1,
-  '𝅥' => 216,
-  '𝅦' => 216,
-  '𝅧' => 1,
-  '𝅨' => 1,
-  '𝅩' => 1,
-  '𝅭' => 226,
-  '𝅮' => 216,
-  '𝅯' => 216,
-  '𝅰' => 216,
-  '𝅱' => 216,
-  '𝅲' => 216,
-  '𝅻' => 220,
-  '𝅼' => 220,
-  '𝅽' => 220,
-  '𝅾' => 220,
-  '𝅿' => 220,
-  '𝆀' => 220,
-  '𝆁' => 220,
-  '𝆂' => 220,
-  '𝆅' => 230,
-  '𝆆' => 230,
-  '𝆇' => 230,
-  '𝆈' => 230,
-  '𝆉' => 230,
-  '𝆊' => 220,
-  '𝆋' => 220,
-  '𝆪' => 230,
-  '𝆫' => 230,
-  '𝆬' => 230,
-  '𝆭' => 230,
-  '𝉂' => 230,
-  '𝉃' => 230,
-  '𝉄' => 230,
-  '𞀀' => 230,
-  '𞀁' => 230,
-  '𞀂' => 230,
-  '𞀃' => 230,
-  '𞀄' => 230,
-  '𞀅' => 230,
-  '𞀆' => 230,
-  '𞀈' => 230,
-  '𞀉' => 230,
-  '𞀊' => 230,
-  '𞀋' => 230,
-  '𞀌' => 230,
-  '𞀍' => 230,
-  '𞀎' => 230,
-  '𞀏' => 230,
-  '𞀐' => 230,
-  '𞀑' => 230,
-  '𞀒' => 230,
-  '𞀓' => 230,
-  '𞀔' => 230,
-  '𞀕' => 230,
-  '𞀖' => 230,
-  '𞀗' => 230,
-  '𞀘' => 230,
-  '𞀛' => 230,
-  '𞀜' => 230,
-  '𞀝' => 230,
-  '𞀞' => 230,
-  '𞀟' => 230,
-  '𞀠' => 230,
-  '𞀡' => 230,
-  '𞀣' => 230,
-  '𞀤' => 230,
-  '𞀦' => 230,
-  '𞀧' => 230,
-  '𞀨' => 230,
-  '𞀩' => 230,
-  '𞀪' => 230,
-  'ðž„°' => 230,
-  '𞄱' => 230,
-  '𞄲' => 230,
-  '𞄳' => 230,
-  'ðž„´' => 230,
-  '𞄵' => 230,
-  '𞄶' => 230,
-  '𞋬' => 230,
-  'ðž‹­' => 230,
-  'ðž‹®' => 230,
-  '𞋯' => 230,
-  '𞣐' => 220,
-  '𞣑' => 220,
-  '𞣒' => 220,
-  '𞣓' => 220,
-  '𞣔' => 220,
-  '𞣕' => 220,
-  '𞣖' => 220,
-  '𞥄' => 230,
-  '𞥅' => 230,
-  '𞥆' => 230,
-  '𞥇' => 230,
-  '𞥈' => 230,
-  '𞥉' => 230,
-  '𞥊' => 7,
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php b/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php
deleted file mode 100644
index 1574902893cc426f0993da8ac3918a90430eb3a7..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php
+++ /dev/null
@@ -1,3695 +0,0 @@
-<?php
-
-return array (
-  ' ' => ' ',
-  '¨' => ' ̈',
-  'ª' => 'a',
-  '¯' => ' ̄',
-  '²' => '2',
-  '³' => '3',
-  '´' => ' ́',
-  'µ' => 'μ',
-  '¸' => ' ̧',
-  '¹' => '1',
-  'º' => 'o',
-  '¼' => '1⁄4',
-  '½' => '1⁄2',
-  '¾' => '3⁄4',
-  'IJ' => 'IJ',
-  'ij' => 'ij',
-  'Ŀ' => 'L·',
-  'ŀ' => 'l·',
-  'ʼn' => 'ʼn',
-  'Å¿' => 's',
-  'DŽ' => 'DŽ',
-  'Dž' => 'Dž',
-  'dž' => 'dž',
-  'LJ' => 'LJ',
-  'Lj' => 'Lj',
-  'lj' => 'lj',
-  'ÇŠ' => 'NJ',
-  'Ç‹' => 'Nj',
-  'nj' => 'nj',
-  'DZ' => 'DZ',
-  'Dz' => 'Dz',
-  'dz' => 'dz',
-  'Ê°' => 'h',
-  'ʱ' => 'ɦ',
-  'ʲ' => 'j',
-  'ʳ' => 'r',
-  'ʴ' => 'ɹ',
-  'ʵ' => 'ɻ',
-  'ʶ' => 'ʁ',
-  'Ê·' => 'w',
-  'ʸ' => 'y',
-  '˘' => ' ̆',
-  '˙' => ' ̇',
-  'Ëš' => ' ÌŠ',
-  '˛' => ' ̨',
-  '˜' => ' ̃',
-  '˝' => ' ̋',
-  'Ë ' => 'É£',
-  'Ë¡' => 'l',
-  'Ë¢' => 's',
-  'Ë£' => 'x',
-  'ˤ' => 'ʕ',
-  'ͺ' => ' ͅ',
-  '΄' => ' ́',
-  '΅' => ' ̈́',
-  'ϐ' => 'β',
-  'ϑ' => 'θ',
-  'Ï’' => 'Î¥',
-  'ϓ' => 'Ύ',
-  'ϔ' => 'Ϋ',
-  'ϕ' => 'φ',
-  'Ï–' => 'Ï€',
-  'ϰ' => 'κ',
-  'ϱ' => 'ρ',
-  'ϲ' => 'ς',
-  'ϴ' => 'Θ',
-  'ϵ' => 'ε',
-  'Ϲ' => 'Σ',
-  'Ö‡' => 'Õ¥Ö‚',
-  'ٵ' => 'اٴ',
-  'ٶ' => 'وٴ',
-  'Ù·' => 'Û‡Ù´',
-  'ٸ' => 'يٴ',
-  'ำ' => 'ํา',
-  'ຳ' => 'ໍາ',
-  'ໜ' => 'ຫນ',
-  'ໝ' => 'ຫມ',
-  '༌' => '་',
-  'ཷ' => 'ྲཱྀ',
-  'ཹ' => 'ླཱྀ',
-  'ჼ' => 'ნ',
-  'á´¬' => 'A',
-  'ᴭ' => 'Æ',
-  'á´®' => 'B',
-  'á´°' => 'D',
-  'á´±' => 'E',
-  'á´²' => 'ÆŽ',
-  'á´³' => 'G',
-  'á´´' => 'H',
-  'á´µ' => 'I',
-  'á´¶' => 'J',
-  'á´·' => 'K',
-  'á´¸' => 'L',
-  'á´¹' => 'M',
-  'á´º' => 'N',
-  'á´¼' => 'O',
-  'á´½' => 'È¢',
-  'á´¾' => 'P',
-  'á´¿' => 'R',
-  'áµ€' => 'T',
-  'ᵁ' => 'U',
-  'ᵂ' => 'W',
-  'ᵃ' => 'a',
-  'ᵄ' => 'ɐ',
-  'áµ…' => 'É‘',
-  'ᵆ' => 'ᴂ',
-  'ᵇ' => 'b',
-  'ᵈ' => 'd',
-  'ᵉ' => 'e',
-  'ᵊ' => 'ə',
-  'ᵋ' => 'ɛ',
-  'ᵌ' => 'ɜ',
-  'ᵍ' => 'g',
-  'ᵏ' => 'k',
-  'ᵐ' => 'm',
-  'ᵑ' => 'ŋ',
-  'áµ’' => 'o',
-  'ᵓ' => 'ɔ',
-  'áµ”' => 'á´–',
-  'ᵕ' => 'ᴗ',
-  'áµ–' => 'p',
-  'áµ—' => 't',
-  'ᵘ' => 'u',
-  'ᵙ' => 'ᴝ',
-  'ᵚ' => 'ɯ',
-  'áµ›' => 'v',
-  'ᵜ' => 'ᴥ',
-  'ᵝ' => 'β',
-  'ᵞ' => 'γ',
-  'ᵟ' => 'δ',
-  'ᵠ' => 'φ',
-  'ᵡ' => 'χ',
-  'áµ¢' => 'i',
-  'áµ£' => 'r',
-  'ᵤ' => 'u',
-  'áµ¥' => 'v',
-  'ᵦ' => 'β',
-  'ᵧ' => 'γ',
-  'ᵨ' => 'ρ',
-  'ᵩ' => 'φ',
-  'ᵪ' => 'χ',
-  'ᵸ' => 'н',
-  'ᶛ' => 'ɒ',
-  'ᶜ' => 'c',
-  'ᶝ' => 'ɕ',
-  'ᶞ' => 'ð',
-  'ᶟ' => 'ɜ',
-  'ᶠ' => 'f',
-  'ᶡ' => 'ɟ',
-  'ᶢ' => 'ɡ',
-  'ᶣ' => 'ɥ',
-  'ᶤ' => 'ɨ',
-  'ᶥ' => 'ɩ',
-  'ᶦ' => 'ɪ',
-  'ᶧ' => 'ᵻ',
-  'ᶨ' => 'ʝ',
-  'ᶩ' => 'ɭ',
-  'ᶪ' => 'ᶅ',
-  'ᶫ' => 'ʟ',
-  'ᶬ' => 'ɱ',
-  'ᶭ' => 'ɰ',
-  'ᶮ' => 'ɲ',
-  'ᶯ' => 'ɳ',
-  'ᶰ' => 'ɴ',
-  'ᶱ' => 'ɵ',
-  'ᶲ' => 'ɸ',
-  'ᶳ' => 'ʂ',
-  'ᶴ' => 'ʃ',
-  'ᶵ' => 'ƫ',
-  'ᶶ' => 'ʉ',
-  'ᶷ' => 'ʊ',
-  'ᶸ' => 'ᴜ',
-  'ᶹ' => 'ʋ',
-  'ᶺ' => 'ʌ',
-  'ᶻ' => 'z',
-  'ᶼ' => 'ʐ',
-  'ᶽ' => 'ʑ',
-  'ᶾ' => 'ʒ',
-  'ᶿ' => 'θ',
-  'ẚ' => 'aʾ',
-  'ẛ' => 'ṡ',
-  'á¾½' => ' Ì“',
-  '᾿' => ' ̓',
-  'á¿€' => ' Í‚',
-  '῁' => ' ̈͂',
-  '῍' => ' ̓̀',
-  '῎' => ' ̓́',
-  '῏' => ' ̓͂',
-  '῝' => ' ̔̀',
-  '῞' => ' ̔́',
-  '῟' => ' ̔͂',
-  '῭' => ' ̈̀',
-  '΅' => ' ̈́',
-  '´' => ' ́',
-  '῾' => ' ̔',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  ' ' => ' ',
-  '‑' => '‐',
-  '‗' => ' ̳',
-  '․' => '.',
-  '‥' => '..',
-  '…' => '...',
-  ' ' => ' ',
-  '″' => '′′',
-  '‴' => '′′′',
-  '‶' => '‵‵',
-  '‷' => '‵‵‵',
-  '‼' => '!!',
-  '‾' => ' ̅',
-  '⁇' => '??',
-  '⁈' => '?!',
-  '⁉' => '!?',
-  '⁗' => '′′′′',
-  ' ' => ' ',
-  '⁰' => '0',
-  'ⁱ' => 'i',
-  '⁴' => '4',
-  '⁵' => '5',
-  '⁶' => '6',
-  '⁷' => '7',
-  '⁸' => '8',
-  '⁹' => '9',
-  '⁺' => '+',
-  '⁻' => '−',
-  '⁼' => '=',
-  '⁽' => '(',
-  '⁾' => ')',
-  'ⁿ' => 'n',
-  'â‚€' => '0',
-  '₁' => '1',
-  'â‚‚' => '2',
-  '₃' => '3',
-  'â‚„' => '4',
-  'â‚…' => '5',
-  '₆' => '6',
-  '₇' => '7',
-  '₈' => '8',
-  '₉' => '9',
-  'â‚Š' => '+',
-  '₋' => '−',
-  '₌' => '=',
-  '₍' => '(',
-  'â‚Ž' => ')',
-  'ₐ' => 'a',
-  'â‚‘' => 'e',
-  'â‚’' => 'o',
-  'â‚“' => 'x',
-  'â‚”' => 'É™',
-  'â‚•' => 'h',
-  'â‚–' => 'k',
-  'â‚—' => 'l',
-  'ₘ' => 'm',
-  'â‚™' => 'n',
-  'â‚š' => 'p',
-  'â‚›' => 's',
-  'ₜ' => 't',
-  '₨' => 'Rs',
-  'â„€' => 'a/c',
-  '℁' => 'a/s',
-  'â„‚' => 'C',
-  '℃' => '°C',
-  'â„…' => 'c/o',
-  '℆' => 'c/u',
-  'ℇ' => 'Ɛ',
-  '℉' => '°F',
-  'â„Š' => 'g',
-  'â„‹' => 'H',
-  'ℌ' => 'H',
-  'ℍ' => 'H',
-  'â„Ž' => 'h',
-  'ℏ' => 'ħ',
-  'ℐ' => 'I',
-  'â„‘' => 'I',
-  'â„’' => 'L',
-  'â„“' => 'l',
-  'â„•' => 'N',
-  'â„–' => 'No',
-  'â„™' => 'P',
-  'â„š' => 'Q',
-  'â„›' => 'R',
-  'ℜ' => 'R',
-  'ℝ' => 'R',
-  'â„ ' => 'SM',
-  'â„¡' => 'TEL',
-  'â„¢' => 'TM',
-  'ℤ' => 'Z',
-  'ℨ' => 'Z',
-  'ℬ' => 'B',
-  'â„­' => 'C',
-  'ℯ' => 'e',
-  'â„°' => 'E',
-  'ℱ' => 'F',
-  'ℳ' => 'M',
-  'â„´' => 'o',
-  'ℵ' => 'א',
-  'ℶ' => 'ב',
-  'â„·' => '×’',
-  'ℸ' => 'ד',
-  'ℹ' => 'i',
-  'â„»' => 'FAX',
-  'ℼ' => 'π',
-  'ℽ' => 'γ',
-  'ℾ' => 'Γ',
-  'ℿ' => 'Π',
-  '⅀' => '∑',
-  'â……' => 'D',
-  'â…†' => 'd',
-  'â…‡' => 'e',
-  'â…ˆ' => 'i',
-  'â…‰' => 'j',
-  '⅐' => '1⁄7',
-  '⅑' => '1⁄9',
-  '⅒' => '1⁄10',
-  '⅓' => '1⁄3',
-  '⅔' => '2⁄3',
-  '⅕' => '1⁄5',
-  '⅖' => '2⁄5',
-  '⅗' => '3⁄5',
-  '⅘' => '4⁄5',
-  '⅙' => '1⁄6',
-  '⅚' => '5⁄6',
-  '⅛' => '1⁄8',
-  '⅜' => '3⁄8',
-  '⅝' => '5⁄8',
-  '⅞' => '7⁄8',
-  '⅟' => '1⁄',
-  'â… ' => 'I',
-  'â…¡' => 'II',
-  'â…¢' => 'III',
-  'â…£' => 'IV',
-  'â…¤' => 'V',
-  'â…¥' => 'VI',
-  'â…¦' => 'VII',
-  'â…§' => 'VIII',
-  'â…¨' => 'IX',
-  'â…©' => 'X',
-  'â…ª' => 'XI',
-  'â…«' => 'XII',
-  'â…¬' => 'L',
-  'â…­' => 'C',
-  'â…®' => 'D',
-  'â…¯' => 'M',
-  'â…°' => 'i',
-  'â…±' => 'ii',
-  'â…²' => 'iii',
-  'â…³' => 'iv',
-  'â…´' => 'v',
-  'â…µ' => 'vi',
-  'â…¶' => 'vii',
-  'â…·' => 'viii',
-  'â…¸' => 'ix',
-  'â…¹' => 'x',
-  'â…º' => 'xi',
-  'â…»' => 'xii',
-  'â…¼' => 'l',
-  'â…½' => 'c',
-  'â…¾' => 'd',
-  'â…¿' => 'm',
-  '↉' => '0⁄3',
-  '∬' => '∫∫',
-  '∭' => '∫∫∫',
-  '∯' => '∮∮',
-  '∰' => '∮∮∮',
-  'â‘ ' => '1',
-  'â‘¡' => '2',
-  'â‘¢' => '3',
-  'â‘£' => '4',
-  '⑤' => '5',
-  'â‘¥' => '6',
-  '⑦' => '7',
-  '⑧' => '8',
-  '⑨' => '9',
-  'â‘©' => '10',
-  '⑪' => '11',
-  'â‘«' => '12',
-  '⑬' => '13',
-  'â‘­' => '14',
-  'â‘®' => '15',
-  '⑯' => '16',
-  'â‘°' => '17',
-  '⑱' => '18',
-  '⑲' => '19',
-  '⑳' => '20',
-  'â‘´' => '(1)',
-  '⑵' => '(2)',
-  '⑶' => '(3)',
-  'â‘·' => '(4)',
-  '⑸' => '(5)',
-  '⑹' => '(6)',
-  '⑺' => '(7)',
-  'â‘»' => '(8)',
-  '⑼' => '(9)',
-  '⑽' => '(10)',
-  '⑾' => '(11)',
-  'â‘¿' => '(12)',
-  'â’€' => '(13)',
-  '⒁' => '(14)',
-  'â’‚' => '(15)',
-  'â’ƒ' => '(16)',
-  'â’„' => '(17)',
-  'â’…' => '(18)',
-  'â’†' => '(19)',
-  'â’‡' => '(20)',
-  'â’ˆ' => '1.',
-  'â’‰' => '2.',
-  'â’Š' => '3.',
-  'â’‹' => '4.',
-  '⒌' => '5.',
-  '⒍' => '6.',
-  'â’Ž' => '7.',
-  '⒏' => '8.',
-  '⒐' => '9.',
-  'â’‘' => '10.',
-  'â’’' => '11.',
-  'â’“' => '12.',
-  'â’”' => '13.',
-  'â’•' => '14.',
-  'â’–' => '15.',
-  'â’—' => '16.',
-  'â’˜' => '17.',
-  'â’™' => '18.',
-  'â’š' => '19.',
-  'â’›' => '20.',
-  '⒜' => '(a)',
-  '⒝' => '(b)',
-  'â’ž' => '(c)',
-  'â’Ÿ' => '(d)',
-  'â’ ' => '(e)',
-  'â’¡' => '(f)',
-  'â’¢' => '(g)',
-  'â’£' => '(h)',
-  'â’¤' => '(i)',
-  'â’¥' => '(j)',
-  'â’¦' => '(k)',
-  'â’§' => '(l)',
-  'â’¨' => '(m)',
-  'â’©' => '(n)',
-  'â’ª' => '(o)',
-  'â’«' => '(p)',
-  'â’¬' => '(q)',
-  'â’­' => '(r)',
-  'â’®' => '(s)',
-  'â’¯' => '(t)',
-  'â’°' => '(u)',
-  'â’±' => '(v)',
-  'â’²' => '(w)',
-  'â’³' => '(x)',
-  'â’´' => '(y)',
-  'â’µ' => '(z)',
-  'â’¶' => 'A',
-  'â’·' => 'B',
-  'â’¸' => 'C',
-  'â’¹' => 'D',
-  'â’º' => 'E',
-  'â’»' => 'F',
-  'â’¼' => 'G',
-  'â’½' => 'H',
-  'â’¾' => 'I',
-  'â’¿' => 'J',
-  'â“€' => 'K',
-  'Ⓛ' => 'L',
-  'â“‚' => 'M',
-  'Ⓝ' => 'N',
-  'â“„' => 'O',
-  'â“…' => 'P',
-  'Ⓠ' => 'Q',
-  'Ⓡ' => 'R',
-  'Ⓢ' => 'S',
-  'Ⓣ' => 'T',
-  'â“Š' => 'U',
-  'â“‹' => 'V',
-  'Ⓦ' => 'W',
-  'Ⓧ' => 'X',
-  'â“Ž' => 'Y',
-  'Ⓩ' => 'Z',
-  'ⓐ' => 'a',
-  'â“‘' => 'b',
-  'â“’' => 'c',
-  'â““' => 'd',
-  'â“”' => 'e',
-  'â“•' => 'f',
-  'â“–' => 'g',
-  'â“—' => 'h',
-  'ⓘ' => 'i',
-  'â“™' => 'j',
-  'â“š' => 'k',
-  'â“›' => 'l',
-  'ⓜ' => 'm',
-  'ⓝ' => 'n',
-  'â“ž' => 'o',
-  'â“Ÿ' => 'p',
-  'â“ ' => 'q',
-  'â“¡' => 'r',
-  'â“¢' => 's',
-  'â“£' => 't',
-  'ⓤ' => 'u',
-  'â“¥' => 'v',
-  'ⓦ' => 'w',
-  'ⓧ' => 'x',
-  'ⓨ' => 'y',
-  'â“©' => 'z',
-  '⓪' => '0',
-  '⨌' => '∫∫∫∫',
-  'â©´' => '::=',
-  '⩵' => '==',
-  '⩶' => '===',
-  'â±¼' => 'j',
-  'â±½' => 'V',
-  'ⵯ' => 'ⵡ',
-  '⺟' => '母',
-  '⻳' => '龟',
-  '⼀' => '一',
-  '⼁' => '丨',
-  '⼂' => '丶',
-  '⼃' => '丿',
-  '⼄' => '乙',
-  '⼅' => '亅',
-  '⼆' => '二',
-  '⼇' => '亠',
-  '⼈' => '人',
-  '⼉' => '儿',
-  '⼊' => '入',
-  '⼋' => '八',
-  '⼌' => '冂',
-  '⼍' => '冖',
-  '⼎' => '冫',
-  '⼏' => '几',
-  '⼐' => '凵',
-  '⼑' => '刀',
-  '⼒' => '力',
-  '⼓' => '勹',
-  '⼔' => '匕',
-  '⼕' => '匚',
-  '⼖' => '匸',
-  '⼗' => '十',
-  '⼘' => '卜',
-  '⼙' => '卩',
-  '⼚' => '厂',
-  '⼛' => '厶',
-  '⼜' => '又',
-  '⼝' => '口',
-  '⼞' => '囗',
-  '⼟' => '土',
-  '⼠' => '士',
-  '⼡' => '夂',
-  '⼢' => '夊',
-  '⼣' => '夕',
-  '⼤' => '大',
-  '⼥' => '女',
-  '⼦' => '子',
-  '⼧' => '宀',
-  '⼨' => '寸',
-  '⼩' => '小',
-  '⼪' => '尢',
-  '⼫' => '尸',
-  '⼬' => '屮',
-  'â¼­' => 'å±±',
-  'â¼®' => 'å·›',
-  '⼯' => '工',
-  'â¼°' => 'å·±',
-  'â¼±' => 'å·¾',
-  'â¼²' => 'å¹²',
-  '⼳' => '幺',
-  '⼴' => '广',
-  'â¼µ' => 'å»´',
-  '⼶' => '廾',
-  '⼷' => '弋',
-  '⼸' => '弓',
-  '⼹' => '彐',
-  '⼺' => '彡',
-  'â¼»' => 'å½³',
-  '⼼' => '心',
-  '⼽' => '戈',
-  '⼾' => '戶',
-  '⼿' => '手',
-  '⽀' => '支',
-  '⽁' => '攴',
-  '⽂' => '文',
-  '⽃' => '斗',
-  '⽄' => '斤',
-  'â½…' => 'æ–¹',
-  '⽆' => '无',
-  '⽇' => '日',
-  '⽈' => '曰',
-  '⽉' => '月',
-  '⽊' => '木',
-  '⽋' => '欠',
-  '⽌' => '止',
-  '⽍' => '歹',
-  '⽎' => '殳',
-  '⽏' => '毋',
-  '⽐' => '比',
-  '⽑' => '毛',
-  '⽒' => '氏',
-  '⽓' => '气',
-  'â½”' => 'æ°´',
-  '⽕' => '火',
-  '⽖' => '爪',
-  '⽗' => '父',
-  '⽘' => '爻',
-  '⽙' => '爿',
-  '⽚' => '片',
-  '⽛' => '牙',
-  '⽜' => '牛',
-  '⽝' => '犬',
-  '⽞' => '玄',
-  '⽟' => '玉',
-  '⽠' => '瓜',
-  '⽡' => '瓦',
-  '⽢' => '甘',
-  '⽣' => '生',
-  '⽤' => '用',
-  'â½¥' => 'ç”°',
-  '⽦' => '疋',
-  '⽧' => '疒',
-  '⽨' => '癶',
-  '⽩' => '白',
-  '⽪' => '皮',
-  '⽫' => '皿',
-  '⽬' => '目',
-  '⽭' => '矛',
-  '⽮' => '矢',
-  '⽯' => '石',
-  '⽰' => '示',
-  '⽱' => '禸',
-  '⽲' => '禾',
-  'â½³' => 'ç©´',
-  'â½´' => 'ç«‹',
-  '⽵' => '竹',
-  '⽶' => '米',
-  '⽷' => '糸',
-  '⽸' => '缶',
-  '⽹' => '网',
-  '⽺' => '羊',
-  'â½»' => 'ç¾½',
-  '⽼' => '老',
-  '⽽' => '而',
-  '⽾' => '耒',
-  '⽿' => '耳',
-  '⾀' => '聿',
-  '⾁' => '肉',
-  '⾂' => '臣',
-  '⾃' => '自',
-  '⾄' => '至',
-  '⾅' => '臼',
-  '⾆' => '舌',
-  '⾇' => '舛',
-  '⾈' => '舟',
-  '⾉' => '艮',
-  '⾊' => '色',
-  '⾋' => '艸',
-  '⾌' => '虍',
-  '⾍' => '虫',
-  '⾎' => '血',
-  '⾏' => '行',
-  '⾐' => '衣',
-  '⾑' => '襾',
-  '⾒' => '見',
-  '⾓' => '角',
-  '⾔' => '言',
-  '⾕' => '谷',
-  '⾖' => '豆',
-  '⾗' => '豕',
-  '⾘' => '豸',
-  '⾙' => '貝',
-  '⾚' => '赤',
-  'â¾›' => 'èµ°',
-  '⾜' => '足',
-  '⾝' => '身',
-  '⾞' => '車',
-  '⾟' => '辛',
-  'â¾ ' => 'è¾°',
-  '⾡' => '辵',
-  'â¾¢' => 'é‚‘',
-  'â¾£' => 'é…‰',
-  '⾤' => '釆',
-  '⾥' => '里',
-  '⾦' => '金',
-  '⾧' => '長',
-  '⾨' => '門',
-  '⾩' => '阜',
-  '⾪' => '隶',
-  '⾫' => '隹',
-  '⾬' => '雨',
-  '⾭' => '靑',
-  '⾮' => '非',
-  '⾯' => '面',
-  '⾰' => '革',
-  '⾱' => '韋',
-  '⾲' => '韭',
-  '⾳' => '音',
-  '⾴' => '頁',
-  '⾵' => '風',
-  '⾶' => '飛',
-  '⾷' => '食',
-  '⾸' => '首',
-  '⾹' => '香',
-  '⾺' => '馬',
-  '⾻' => '骨',
-  '⾼' => '高',
-  'â¾½' => 'é«Ÿ',
-  '⾾' => '鬥',
-  '⾿' => '鬯',
-  '⿀' => '鬲',
-  '⿁' => '鬼',
-  'â¿‚' => 'é­š',
-  '⿃' => '鳥',
-  'â¿„' => 'é¹µ',
-  '⿅' => '鹿',
-  '⿆' => '麥',
-  '⿇' => '麻',
-  '⿈' => '黃',
-  '⿉' => '黍',
-  '⿊' => '黑',
-  '⿋' => '黹',
-  '⿌' => '黽',
-  '⿍' => '鼎',
-  '⿎' => '鼓',
-  '⿏' => '鼠',
-  '⿐' => '鼻',
-  '⿑' => '齊',
-  'â¿’' => 'é½’',
-  '⿓' => '龍',
-  '⿔' => '龜',
-  'â¿•' => 'é¾ ',
-  ' ' => ' ',
-  '〶' => '〒',
-  '〸' => '十',
-  '〹' => '卄',
-  '〺' => '卅',
-  'ã‚›' => ' ã‚™',
-  '゜' => ' ゚',
-  'ゟ' => 'より',
-  'ヿ' => 'コト',
-  'ㄱ' => 'ᄀ',
-  'ㄲ' => 'ᄁ',
-  'ㄳ' => 'ᆪ',
-  'ã„´' => 'á„‚',
-  'ㄵ' => 'ᆬ',
-  'ㄶ' => 'ᆭ',
-  'ㄷ' => 'ᄃ',
-  'ㄸ' => 'ᄄ',
-  'ㄹ' => 'ᄅ',
-  'ㄺ' => 'ᆰ',
-  'ㄻ' => 'ᆱ',
-  'ㄼ' => 'ᆲ',
-  'ㄽ' => 'ᆳ',
-  'ㄾ' => 'ᆴ',
-  'ㄿ' => 'ᆵ',
-  'ã…€' => 'á„š',
-  'ㅁ' => 'ᄆ',
-  'ㅂ' => 'ᄇ',
-  'ㅃ' => 'ᄈ',
-  'ã…„' => 'á„¡',
-  'ㅅ' => 'ᄉ',
-  'ã…†' => 'á„Š',
-  'ã…‡' => 'á„‹',
-  'ㅈ' => 'ᄌ',
-  'ㅉ' => 'ᄍ',
-  'ã…Š' => 'á„Ž',
-  'ㅋ' => 'ᄏ',
-  'ㅌ' => 'ᄐ',
-  'ㅍ' => 'ᄑ',
-  'ã…Ž' => 'á„’',
-  'ㅏ' => 'ᅡ',
-  'ㅐ' => 'ᅢ',
-  'ã…‘' => 'á…£',
-  'ã…’' => 'á…¤',
-  'ã…“' => 'á…¥',
-  'ã…”' => 'á…¦',
-  'ã…•' => 'á…§',
-  'ã…–' => 'á…¨',
-  'ã…—' => 'á…©',
-  'ã…˜' => 'á…ª',
-  'ã…™' => 'á…«',
-  'ã…š' => 'á…¬',
-  'ã…›' => 'á…­',
-  'ㅜ' => 'ᅮ',
-  'ㅝ' => 'ᅯ',
-  'ã…ž' => 'á…°',
-  'ã…Ÿ' => 'á…±',
-  'ã… ' => 'á…²',
-  'ã…¡' => 'á…³',
-  'ã…¢' => 'á…´',
-  'ã…£' => 'á…µ',
-  'ã…¤' => 'á… ',
-  'ã…¥' => 'á„”',
-  'ã…¦' => 'á„•',
-  'ㅧ' => 'ᇇ',
-  'ㅨ' => 'ᇈ',
-  'ㅩ' => 'ᇌ',
-  'ㅪ' => 'ᇎ',
-  'ㅫ' => 'ᇓ',
-  'ㅬ' => 'ᇗ',
-  'ㅭ' => 'ᇙ',
-  'ㅮ' => 'ᄜ',
-  'ㅯ' => 'ᇝ',
-  'ㅰ' => 'ᇟ',
-  'ㅱ' => 'ᄝ',
-  'ã…²' => 'á„ž',
-  'ã…³' => 'á„ ',
-  'ã…´' => 'á„¢',
-  'ã…µ' => 'á„£',
-  'ㅶ' => 'ᄧ',
-  'ã…·' => 'á„©',
-  'ã…¸' => 'á„«',
-  'ㅹ' => 'ᄬ',
-  'ã…º' => 'á„­',
-  'ã…»' => 'á„®',
-  'ㅼ' => 'ᄯ',
-  'ㅽ' => 'ᄲ',
-  'ㅾ' => 'ᄶ',
-  'ã…¿' => 'á…€',
-  'ㆀ' => 'ᅇ',
-  'ㆁ' => 'ᅌ',
-  'ㆂ' => 'ᇱ',
-  'ㆃ' => 'ᇲ',
-  'ㆄ' => 'ᅗ',
-  'ㆅ' => 'ᅘ',
-  'ㆆ' => 'ᅙ',
-  'ㆇ' => 'ᆄ',
-  'ㆈ' => 'ᆅ',
-  'ㆉ' => 'ᆈ',
-  'ㆊ' => 'ᆑ',
-  'ㆋ' => 'ᆒ',
-  'ㆌ' => 'ᆔ',
-  'ㆍ' => 'ᆞ',
-  'ㆎ' => 'ᆡ',
-  '㆒' => '一',
-  '㆓' => '二',
-  '㆔' => '三',
-  '㆕' => '四',
-  '㆖' => '上',
-  '㆗' => '中',
-  '㆘' => '下',
-  '㆙' => '甲',
-  '㆚' => '乙',
-  '㆛' => '丙',
-  '㆜' => '丁',
-  '㆝' => '天',
-  '㆞' => '地',
-  '㆟' => '人',
-  '㈀' => '(ᄀ)',
-  '㈁' => '(ᄂ)',
-  '㈂' => '(ᄃ)',
-  '㈃' => '(ᄅ)',
-  '㈄' => '(ᄆ)',
-  '㈅' => '(ᄇ)',
-  '㈆' => '(ᄉ)',
-  '㈇' => '(ᄋ)',
-  '㈈' => '(ᄌ)',
-  '㈉' => '(ᄎ)',
-  '㈊' => '(ᄏ)',
-  '㈋' => '(ᄐ)',
-  '㈌' => '(ᄑ)',
-  '㈍' => '(ᄒ)',
-  '㈎' => '(가)',
-  '㈏' => '(나)',
-  '㈐' => '(다)',
-  '㈑' => '(라)',
-  '㈒' => '(마)',
-  '㈓' => '(바)',
-  '㈔' => '(사)',
-  '㈕' => '(아)',
-  '㈖' => '(자)',
-  '㈗' => '(차)',
-  '㈘' => '(카)',
-  '㈙' => '(타)',
-  '㈚' => '(파)',
-  '㈛' => '(하)',
-  '㈜' => '(주)',
-  '㈝' => '(오전)',
-  '㈞' => '(오후)',
-  '㈠' => '(一)',
-  '㈡' => '(二)',
-  '㈢' => '(三)',
-  '㈣' => '(四)',
-  '㈤' => '(五)',
-  '㈥' => '(六)',
-  '㈦' => '(七)',
-  '㈧' => '(八)',
-  '㈨' => '(九)',
-  '㈩' => '(十)',
-  '㈪' => '(月)',
-  '㈫' => '(火)',
-  '㈬' => '(水)',
-  '㈭' => '(木)',
-  '㈮' => '(金)',
-  '㈯' => '(土)',
-  '㈰' => '(日)',
-  '㈱' => '(株)',
-  '㈲' => '(有)',
-  '㈳' => '(社)',
-  '㈴' => '(名)',
-  '㈵' => '(特)',
-  '㈶' => '(財)',
-  '㈷' => '(祝)',
-  '㈸' => '(労)',
-  '㈹' => '(代)',
-  '㈺' => '(呼)',
-  '㈻' => '(学)',
-  '㈼' => '(監)',
-  '㈽' => '(企)',
-  '㈾' => '(資)',
-  '㈿' => '(協)',
-  '㉀' => '(祭)',
-  '㉁' => '(休)',
-  '㉂' => '(自)',
-  '㉃' => '(至)',
-  '㉄' => '問',
-  '㉅' => '幼',
-  '㉆' => '文',
-  '㉇' => '箏',
-  '㉐' => 'PTE',
-  '㉑' => '21',
-  '㉒' => '22',
-  '㉓' => '23',
-  '㉔' => '24',
-  '㉕' => '25',
-  '㉖' => '26',
-  '㉗' => '27',
-  '㉘' => '28',
-  '㉙' => '29',
-  '㉚' => '30',
-  '㉛' => '31',
-  '㉜' => '32',
-  '㉝' => '33',
-  '㉞' => '34',
-  '㉟' => '35',
-  '㉠' => 'ᄀ',
-  '㉡' => 'ᄂ',
-  '㉢' => 'ᄃ',
-  '㉣' => 'ᄅ',
-  '㉤' => 'ᄆ',
-  '㉥' => 'ᄇ',
-  '㉦' => 'ᄉ',
-  '㉧' => 'ᄋ',
-  '㉨' => 'ᄌ',
-  '㉩' => 'ᄎ',
-  '㉪' => 'ᄏ',
-  '㉫' => 'ᄐ',
-  '㉬' => 'ᄑ',
-  '㉭' => 'ᄒ',
-  '㉮' => '가',
-  '㉯' => '나',
-  '㉰' => '다',
-  '㉱' => '라',
-  '㉲' => '마',
-  '㉳' => '바',
-  '㉴' => '사',
-  '㉵' => '아',
-  '㉶' => '자',
-  '㉷' => '차',
-  '㉸' => '카',
-  '㉹' => '타',
-  '㉺' => '파',
-  '㉻' => '하',
-  '㉼' => '참고',
-  '㉽' => '주의',
-  '㉾' => '우',
-  '㊀' => '一',
-  '㊁' => '二',
-  '㊂' => '三',
-  '㊃' => '四',
-  '㊄' => '五',
-  '㊅' => '六',
-  '㊆' => '七',
-  '㊇' => '八',
-  '㊈' => '九',
-  '㊉' => '十',
-  '㊊' => '月',
-  '㊋' => '火',
-  '㊌' => '水',
-  '㊍' => '木',
-  '㊎' => '金',
-  '㊏' => '土',
-  '㊐' => '日',
-  '㊑' => '株',
-  '㊒' => '有',
-  '㊓' => '社',
-  '㊔' => '名',
-  '㊕' => '特',
-  '㊖' => '財',
-  '㊗' => '祝',
-  '㊘' => '労',
-  '㊙' => '秘',
-  '㊚' => '男',
-  '㊛' => '女',
-  '㊜' => '適',
-  '㊝' => '優',
-  '㊞' => '印',
-  '㊟' => '注',
-  '㊠' => '項',
-  '㊡' => '休',
-  '㊢' => '写',
-  '㊣' => '正',
-  '㊤' => '上',
-  '㊥' => '中',
-  '㊦' => '下',
-  '㊧' => '左',
-  '㊨' => '右',
-  '㊩' => '医',
-  '㊪' => '宗',
-  '㊫' => '学',
-  '㊬' => '監',
-  '㊭' => '企',
-  '㊮' => '資',
-  '㊯' => '協',
-  '㊰' => '夜',
-  '㊱' => '36',
-  '㊲' => '37',
-  '㊳' => '38',
-  '㊴' => '39',
-  '㊵' => '40',
-  '㊶' => '41',
-  '㊷' => '42',
-  '㊸' => '43',
-  '㊹' => '44',
-  '㊺' => '45',
-  '㊻' => '46',
-  '㊼' => '47',
-  '㊽' => '48',
-  '㊾' => '49',
-  '㊿' => '50',
-  '㋀' => '1月',
-  '㋁' => '2月',
-  '㋂' => '3月',
-  '㋃' => '4月',
-  '㋄' => '5月',
-  '㋅' => '6月',
-  '㋆' => '7月',
-  '㋇' => '8月',
-  '㋈' => '9月',
-  '㋉' => '10月',
-  '㋊' => '11月',
-  '㋋' => '12月',
-  '㋌' => 'Hg',
-  '㋍' => 'erg',
-  'ã‹Ž' => 'eV',
-  '㋏' => 'LTD',
-  '㋐' => 'ア',
-  '㋑' => 'イ',
-  '㋒' => 'ウ',
-  '㋓' => 'エ',
-  '㋔' => 'オ',
-  'ã‹•' => 'ã‚«',
-  'ã‹–' => 'ã‚­',
-  '㋗' => 'ク',
-  '㋘' => 'ケ',
-  '㋙' => 'コ',
-  '㋚' => 'サ',
-  'ã‹›' => 'ã‚·',
-  '㋜' => 'ス',
-  '㋝' => 'セ',
-  '㋞' => 'ソ',
-  'ã‹Ÿ' => 'ã‚¿',
-  '㋠' => 'チ',
-  '㋡' => 'ツ',
-  '㋢' => 'テ',
-  '㋣' => 'ト',
-  '㋤' => 'ナ',
-  '㋥' => 'ニ',
-  '㋦' => 'ヌ',
-  '㋧' => 'ネ',
-  '㋨' => 'ノ',
-  '㋩' => 'ハ',
-  '㋪' => 'ヒ',
-  '㋫' => 'フ',
-  '㋬' => 'ヘ',
-  '㋭' => 'ホ',
-  '㋮' => 'マ',
-  '㋯' => 'ミ',
-  '㋰' => 'ム',
-  '㋱' => 'メ',
-  '㋲' => 'モ',
-  '㋳' => 'ヤ',
-  '㋴' => 'ユ',
-  '㋵' => 'ヨ',
-  '㋶' => 'ラ',
-  '㋷' => 'リ',
-  '㋸' => 'ル',
-  '㋹' => 'レ',
-  '㋺' => 'ロ',
-  '㋻' => 'ワ',
-  '㋼' => 'ヰ',
-  '㋽' => 'ヱ',
-  '㋾' => 'ヲ',
-  '㋿' => '令和',
-  '㌀' => 'アパート',
-  '㌁' => 'アルファ',
-  '㌂' => 'アンペア',
-  '㌃' => 'アール',
-  '㌄' => 'イニング',
-  '㌅' => 'インチ',
-  '㌆' => 'ウォン',
-  '㌇' => 'エスクード',
-  '㌈' => 'エーカー',
-  '㌉' => 'オンス',
-  '㌊' => 'オーム',
-  '㌋' => 'カイリ',
-  '㌌' => 'カラット',
-  '㌍' => 'カロリー',
-  '㌎' => 'ガロン',
-  '㌏' => 'ガンマ',
-  '㌐' => 'ギガ',
-  '㌑' => 'ギニー',
-  '㌒' => 'キュリー',
-  '㌓' => 'ギルダー',
-  '㌔' => 'キロ',
-  '㌕' => 'キログラム',
-  '㌖' => 'キロメートル',
-  '㌗' => 'キロワット',
-  '㌘' => 'グラム',
-  '㌙' => 'グラムトン',
-  '㌚' => 'クルゼイロ',
-  '㌛' => 'クローネ',
-  '㌜' => 'ケース',
-  '㌝' => 'コルナ',
-  '㌞' => 'コーポ',
-  '㌟' => 'サイクル',
-  '㌠' => 'サンチーム',
-  '㌡' => 'シリング',
-  '㌢' => 'センチ',
-  '㌣' => 'セント',
-  '㌤' => 'ダース',
-  '㌥' => 'デシ',
-  '㌦' => 'ドル',
-  '㌧' => 'トン',
-  '㌨' => 'ナノ',
-  '㌩' => 'ノット',
-  '㌪' => 'ハイツ',
-  '㌫' => 'パーセント',
-  '㌬' => 'パーツ',
-  '㌭' => 'バーレル',
-  '㌮' => 'ピアストル',
-  '㌯' => 'ピクル',
-  '㌰' => 'ピコ',
-  '㌱' => 'ビル',
-  '㌲' => 'ファラッド',
-  '㌳' => 'フィート',
-  '㌴' => 'ブッシェル',
-  '㌵' => 'フラン',
-  '㌶' => 'ヘクタール',
-  '㌷' => 'ペソ',
-  '㌸' => 'ペニヒ',
-  '㌹' => 'ヘルツ',
-  '㌺' => 'ペンス',
-  '㌻' => 'ページ',
-  '㌼' => 'ベータ',
-  '㌽' => 'ポイント',
-  '㌾' => 'ボルト',
-  '㌿' => 'ホン',
-  '㍀' => 'ポンド',
-  '㍁' => 'ホール',
-  '㍂' => 'ホーン',
-  '㍃' => 'マイクロ',
-  '㍄' => 'マイル',
-  '㍅' => 'マッハ',
-  '㍆' => 'マルク',
-  '㍇' => 'マンション',
-  '㍈' => 'ミクロン',
-  '㍉' => 'ミリ',
-  '㍊' => 'ミリバール',
-  '㍋' => 'メガ',
-  '㍌' => 'メガトン',
-  '㍍' => 'メートル',
-  '㍎' => 'ヤード',
-  '㍏' => 'ヤール',
-  '㍐' => 'ユアン',
-  '㍑' => 'リットル',
-  '㍒' => 'リラ',
-  '㍓' => 'ルピー',
-  '㍔' => 'ルーブル',
-  '㍕' => 'レム',
-  '㍖' => 'レントゲン',
-  '㍗' => 'ワット',
-  '㍘' => '0点',
-  '㍙' => '1点',
-  '㍚' => '2点',
-  '㍛' => '3点',
-  '㍜' => '4点',
-  '㍝' => '5点',
-  '㍞' => '6点',
-  '㍟' => '7点',
-  '㍠' => '8点',
-  '㍡' => '9点',
-  '㍢' => '10点',
-  '㍣' => '11点',
-  '㍤' => '12点',
-  '㍥' => '13点',
-  '㍦' => '14点',
-  '㍧' => '15点',
-  '㍨' => '16点',
-  '㍩' => '17点',
-  '㍪' => '18点',
-  '㍫' => '19点',
-  '㍬' => '20点',
-  '㍭' => '21点',
-  '㍮' => '22点',
-  '㍯' => '23点',
-  '㍰' => '24点',
-  '㍱' => 'hPa',
-  '㍲' => 'da',
-  '㍳' => 'AU',
-  '㍴' => 'bar',
-  '㍵' => 'oV',
-  '㍶' => 'pc',
-  '㍷' => 'dm',
-  '㍸' => 'dm2',
-  '㍹' => 'dm3',
-  '㍺' => 'IU',
-  '㍻' => '平成',
-  '㍼' => '昭和',
-  '㍽' => '大正',
-  '㍾' => '明治',
-  '㍿' => '株式会社',
-  '㎀' => 'pA',
-  '㎁' => 'nA',
-  '㎂' => 'μA',
-  '㎃' => 'mA',
-  '㎄' => 'kA',
-  '㎅' => 'KB',
-  '㎆' => 'MB',
-  '㎇' => 'GB',
-  '㎈' => 'cal',
-  '㎉' => 'kcal',
-  '㎊' => 'pF',
-  '㎋' => 'nF',
-  '㎌' => 'μF',
-  '㎍' => 'μg',
-  '㎎' => 'mg',
-  '㎏' => 'kg',
-  '㎐' => 'Hz',
-  '㎑' => 'kHz',
-  '㎒' => 'MHz',
-  '㎓' => 'GHz',
-  '㎔' => 'THz',
-  '㎕' => 'μl',
-  '㎖' => 'ml',
-  '㎗' => 'dl',
-  '㎘' => 'kl',
-  '㎙' => 'fm',
-  '㎚' => 'nm',
-  '㎛' => 'μm',
-  '㎜' => 'mm',
-  '㎝' => 'cm',
-  '㎞' => 'km',
-  '㎟' => 'mm2',
-  '㎠' => 'cm2',
-  '㎡' => 'm2',
-  '㎢' => 'km2',
-  '㎣' => 'mm3',
-  '㎤' => 'cm3',
-  '㎥' => 'm3',
-  '㎦' => 'km3',
-  '㎧' => 'm∕s',
-  '㎨' => 'm∕s2',
-  '㎩' => 'Pa',
-  '㎪' => 'kPa',
-  '㎫' => 'MPa',
-  '㎬' => 'GPa',
-  '㎭' => 'rad',
-  '㎮' => 'rad∕s',
-  '㎯' => 'rad∕s2',
-  '㎰' => 'ps',
-  '㎱' => 'ns',
-  '㎲' => 'μs',
-  '㎳' => 'ms',
-  '㎴' => 'pV',
-  '㎵' => 'nV',
-  '㎶' => 'μV',
-  '㎷' => 'mV',
-  '㎸' => 'kV',
-  '㎹' => 'MV',
-  '㎺' => 'pW',
-  '㎻' => 'nW',
-  '㎼' => 'μW',
-  '㎽' => 'mW',
-  '㎾' => 'kW',
-  '㎿' => 'MW',
-  '㏀' => 'kΩ',
-  '㏁' => 'MΩ',
-  '㏂' => 'a.m.',
-  '㏃' => 'Bq',
-  '㏄' => 'cc',
-  '㏅' => 'cd',
-  '㏆' => 'C∕kg',
-  '㏇' => 'Co.',
-  '㏈' => 'dB',
-  '㏉' => 'Gy',
-  '㏊' => 'ha',
-  '㏋' => 'HP',
-  '㏌' => 'in',
-  '㏍' => 'KK',
-  '㏎' => 'KM',
-  '㏏' => 'kt',
-  '㏐' => 'lm',
-  '㏑' => 'ln',
-  '㏒' => 'log',
-  '㏓' => 'lx',
-  '㏔' => 'mb',
-  '㏕' => 'mil',
-  '㏖' => 'mol',
-  '㏗' => 'PH',
-  '㏘' => 'p.m.',
-  '㏙' => 'PPM',
-  '㏚' => 'PR',
-  '㏛' => 'sr',
-  '㏜' => 'Sv',
-  '㏝' => 'Wb',
-  '㏞' => 'V∕m',
-  '㏟' => 'A∕m',
-  '㏠' => '1日',
-  '㏡' => '2日',
-  '㏢' => '3日',
-  '㏣' => '4日',
-  '㏤' => '5日',
-  '㏥' => '6日',
-  '㏦' => '7日',
-  '㏧' => '8日',
-  '㏨' => '9日',
-  '㏩' => '10日',
-  '㏪' => '11日',
-  '㏫' => '12日',
-  '㏬' => '13日',
-  '㏭' => '14日',
-  '㏮' => '15日',
-  '㏯' => '16日',
-  '㏰' => '17日',
-  '㏱' => '18日',
-  '㏲' => '19日',
-  '㏳' => '20日',
-  '㏴' => '21日',
-  '㏵' => '22日',
-  '㏶' => '23日',
-  '㏷' => '24日',
-  '㏸' => '25日',
-  '㏹' => '26日',
-  '㏺' => '27日',
-  '㏻' => '28日',
-  '㏼' => '29日',
-  '㏽' => '30日',
-  '㏾' => '31日',
-  '㏿' => 'gal',
-  'ꚜ' => 'ъ',
-  'ꚝ' => 'ь',
-  'ꝰ' => 'ꝯ',
-  'ꟸ' => 'Ħ',
-  'ꟹ' => 'œ',
-  'ꭜ' => 'ꜧ',
-  'ꭝ' => 'ꬷ',
-  'ê­ž' => 'É«',
-  'ê­Ÿ' => 'ê­’',
-  'ꭩ' => 'ʍ',
-  'ff' => 'ff',
-  'fi' => 'fi',
-  'fl' => 'fl',
-  'ffi' => 'ffi',
-  'ffl' => 'ffl',
-  'ſt' => 'st',
-  'st' => 'st',
-  'ﬓ' => 'մն',
-  'ﬔ' => 'մե',
-  'ﬕ' => 'մի',
-  'ﬖ' => 'վն',
-  'ﬗ' => 'մխ',
-  'ﬠ' => 'ע',
-  'ﬡ' => 'א',
-  'ﬢ' => 'ד',
-  'ﬣ' => 'ה',
-  'ﬤ' => 'כ',
-  'ﬥ' => 'ל',
-  'ﬦ' => 'ם',
-  'ﬧ' => 'ר',
-  'ﬨ' => 'ת',
-  '﬩' => '+',
-  'ﭏ' => 'אל',
-  'ﭐ' => 'ٱ',
-  'ï­‘' => 'Ù±',
-  'ï­’' => 'Ù»',
-  'ï­“' => 'Ù»',
-  'ï­”' => 'Ù»',
-  'ï­•' => 'Ù»',
-  'ï­–' => 'Ù¾',
-  'ï­—' => 'Ù¾',
-  'ï­˜' => 'Ù¾',
-  'ï­™' => 'Ù¾',
-  'ï­š' => 'Ú€',
-  'ï­›' => 'Ú€',
-  'ﭜ' => 'ڀ',
-  'ﭝ' => 'ڀ',
-  'ï­ž' => 'Ùº',
-  'ï­Ÿ' => 'Ùº',
-  'ï­ ' => 'Ùº',
-  'ï­¡' => 'Ùº',
-  'ï­¢' => 'Ù¿',
-  'ï­£' => 'Ù¿',
-  'ï­¤' => 'Ù¿',
-  'ï­¥' => 'Ù¿',
-  'ï­¦' => 'Ù¹',
-  'ï­§' => 'Ù¹',
-  'ï­¨' => 'Ù¹',
-  'ï­©' => 'Ù¹',
-  'ï­ª' => 'Ú¤',
-  'ï­«' => 'Ú¤',
-  'ï­¬' => 'Ú¤',
-  'ï­­' => 'Ú¤',
-  'ï­®' => 'Ú¦',
-  'ï­¯' => 'Ú¦',
-  'ï­°' => 'Ú¦',
-  'ï­±' => 'Ú¦',
-  'ï­²' => 'Ú„',
-  'ï­³' => 'Ú„',
-  'ï­´' => 'Ú„',
-  'ï­µ' => 'Ú„',
-  'ï­¶' => 'Úƒ',
-  'ï­·' => 'Úƒ',
-  'ï­¸' => 'Úƒ',
-  'ï­¹' => 'Úƒ',
-  'ï­º' => 'Ú†',
-  'ï­»' => 'Ú†',
-  'ï­¼' => 'Ú†',
-  'ï­½' => 'Ú†',
-  'ï­¾' => 'Ú‡',
-  'ï­¿' => 'Ú‡',
-  'ﮀ' => 'ڇ',
-  'ﮁ' => 'ڇ',
-  'ﮂ' => 'ڍ',
-  'ﮃ' => 'ڍ',
-  'ﮄ' => 'ڌ',
-  'ﮅ' => 'ڌ',
-  'ﮆ' => 'ڎ',
-  'ﮇ' => 'ڎ',
-  'ﮈ' => 'ڈ',
-  'ﮉ' => 'ڈ',
-  'ﮊ' => 'ژ',
-  'ﮋ' => 'ژ',
-  'ﮌ' => 'ڑ',
-  'ﮍ' => 'ڑ',
-  'ﮎ' => 'ک',
-  'ﮏ' => 'ک',
-  'ﮐ' => 'ک',
-  'ﮑ' => 'ک',
-  'ï®’' => 'Ú¯',
-  'ﮓ' => 'گ',
-  'ï®”' => 'Ú¯',
-  'ﮕ' => 'گ',
-  'ï®–' => 'Ú³',
-  'ï®—' => 'Ú³',
-  'ﮘ' => 'ڳ',
-  'ï®™' => 'Ú³',
-  'ﮚ' => 'ڱ',
-  'ï®›' => 'Ú±',
-  'ﮜ' => 'ڱ',
-  'ﮝ' => 'ڱ',
-  'ﮞ' => 'ں',
-  'ﮟ' => 'ں',
-  'ï® ' => 'Ú»',
-  'ﮡ' => 'ڻ',
-  'ﮢ' => 'ڻ',
-  'ﮣ' => 'ڻ',
-  'ﮤ' => 'ۀ',
-  'ﮥ' => 'ۀ',
-  'ﮦ' => 'ہ',
-  'ﮧ' => 'ہ',
-  'ﮨ' => 'ہ',
-  'ﮩ' => 'ہ',
-  'ﮪ' => 'ھ',
-  'ﮫ' => 'ھ',
-  'ﮬ' => 'ھ',
-  'ï®­' => 'Ú¾',
-  'ï®®' => 'Û’',
-  'ﮯ' => 'ے',
-  'ï®°' => 'Û’Ù”',
-  'ï®±' => 'Û’Ù”',
-  'ﯓ' => 'ڭ',
-  'ﯔ' => 'ڭ',
-  'ﯕ' => 'ڭ',
-  'ﯖ' => 'ڭ',
-  'ﯗ' => 'ۇ',
-  'ﯘ' => 'ۇ',
-  'ﯙ' => 'ۆ',
-  'ﯚ' => 'ۆ',
-  'ﯛ' => 'ۈ',
-  'ﯜ' => 'ۈ',
-  'ﯝ' => 'ۇٴ',
-  'ﯞ' => 'ۋ',
-  'ﯟ' => 'ۋ',
-  'ﯠ' => 'ۅ',
-  'ﯡ' => 'ۅ',
-  'ﯢ' => 'ۉ',
-  'ﯣ' => 'ۉ',
-  'ﯤ' => 'ې',
-  'ﯥ' => 'ې',
-  'ﯦ' => 'ې',
-  'ﯧ' => 'ې',
-  'ﯨ' => 'ى',
-  'ﯩ' => 'ى',
-  'ﯪ' => 'ئا',
-  'ﯫ' => 'ئا',
-  'ﯬ' => 'ئە',
-  'ﯭ' => 'ئە',
-  'ﯮ' => 'ئو',
-  'ﯯ' => 'ئو',
-  'ﯰ' => 'ئۇ',
-  'ﯱ' => 'ئۇ',
-  'ﯲ' => 'ئۆ',
-  'ﯳ' => 'ئۆ',
-  'ﯴ' => 'ئۈ',
-  'ﯵ' => 'ئۈ',
-  'ﯶ' => 'ئې',
-  'ﯷ' => 'ئې',
-  'ﯸ' => 'ئې',
-  'ﯹ' => 'ئى',
-  'ﯺ' => 'ئى',
-  'ﯻ' => 'ئى',
-  'ﯼ' => 'ی',
-  'ﯽ' => 'ی',
-  'ﯾ' => 'ی',
-  'ﯿ' => 'ی',
-  'ﰀ' => 'ئج',
-  'ﰁ' => 'ئح',
-  'ï°‚' => 'ÙŠÙ”Ù…',
-  'ï°ƒ' => 'ÙŠÙ”Ù‰',
-  'ï°„' => 'ÙŠÙ”ÙŠ',
-  'ﰅ' => 'بج',
-  'ﰆ' => 'بح',
-  'ﰇ' => 'بخ',
-  'ﰈ' => 'بم',
-  'ﰉ' => 'بى',
-  'ﰊ' => 'بي',
-  'ﰋ' => 'تج',
-  'ﰌ' => 'تح',
-  'ﰍ' => 'تخ',
-  'ﰎ' => 'تم',
-  'ﰏ' => 'تى',
-  'ﰐ' => 'تي',
-  'ﰑ' => 'ثج',
-  'ﰒ' => 'ثم',
-  'ﰓ' => 'ثى',
-  'ﰔ' => 'ثي',
-  'ﰕ' => 'جح',
-  'ﰖ' => 'جم',
-  'ﰗ' => 'حج',
-  'ﰘ' => 'حم',
-  'ﰙ' => 'خج',
-  'ﰚ' => 'خح',
-  'ﰛ' => 'خم',
-  'ﰜ' => 'سج',
-  'ﰝ' => 'سح',
-  'ﰞ' => 'سخ',
-  'ﰟ' => 'سم',
-  'ﰠ' => 'صح',
-  'ﰡ' => 'صم',
-  'ﰢ' => 'ضج',
-  'ﰣ' => 'ضح',
-  'ﰤ' => 'ضخ',
-  'ﰥ' => 'ضم',
-  'ﰦ' => 'طح',
-  'ﰧ' => 'طم',
-  'ﰨ' => 'ظم',
-  'ﰩ' => 'عج',
-  'ﰪ' => 'عم',
-  'ﰫ' => 'غج',
-  'ﰬ' => 'غم',
-  'ﰭ' => 'فج',
-  'ﰮ' => 'فح',
-  'ﰯ' => 'فخ',
-  'ﰰ' => 'فم',
-  'ﰱ' => 'فى',
-  'ﰲ' => 'في',
-  'ﰳ' => 'قح',
-  'ﰴ' => 'قم',
-  'ﰵ' => 'قى',
-  'ﰶ' => 'قي',
-  'ﰷ' => 'كا',
-  'ﰸ' => 'كج',
-  'ﰹ' => 'كح',
-  'ﰺ' => 'كخ',
-  'ﰻ' => 'كل',
-  'ﰼ' => 'كم',
-  'ﰽ' => 'كى',
-  'ﰾ' => 'كي',
-  'ﰿ' => 'لج',
-  'ﱀ' => 'لح',
-  'ﱁ' => 'لخ',
-  'ﱂ' => 'لم',
-  'ﱃ' => 'لى',
-  'ﱄ' => 'لي',
-  'ﱅ' => 'مج',
-  'ﱆ' => 'مح',
-  'ﱇ' => 'مخ',
-  'ﱈ' => 'مم',
-  'ﱉ' => 'مى',
-  'ﱊ' => 'مي',
-  'ﱋ' => 'نج',
-  'ﱌ' => 'نح',
-  'ﱍ' => 'نخ',
-  'ﱎ' => 'نم',
-  'ﱏ' => 'نى',
-  'ﱐ' => 'ني',
-  'ﱑ' => 'هج',
-  'ﱒ' => 'هم',
-  'ﱓ' => 'هى',
-  'ﱔ' => 'هي',
-  'ﱕ' => 'يج',
-  'ﱖ' => 'يح',
-  'ﱗ' => 'يخ',
-  'ﱘ' => 'يم',
-  'ﱙ' => 'يى',
-  'ﱚ' => 'يي',
-  'ﱛ' => 'ذٰ',
-  'ﱜ' => 'رٰ',
-  'ﱝ' => 'ىٰ',
-  'ﱞ' => ' ٌّ',
-  'ﱟ' => ' ٍّ',
-  'ï± ' => ' ÙŽÙ‘',
-  'ﱡ' => ' ُّ',
-  'ﱢ' => ' ِّ',
-  'ﱣ' => ' ّٰ',
-  'ﱤ' => 'ئر',
-  'ﱥ' => 'ئز',
-  'ﱦ' => 'ئم',
-  'ﱧ' => 'ئن',
-  'ﱨ' => 'ئى',
-  'ﱩ' => 'ئي',
-  'ﱪ' => 'بر',
-  'ﱫ' => 'بز',
-  'ﱬ' => 'بم',
-  'ﱭ' => 'بن',
-  'ﱮ' => 'بى',
-  'ﱯ' => 'بي',
-  'ﱰ' => 'تر',
-  'ﱱ' => 'تز',
-  'ﱲ' => 'تم',
-  'ﱳ' => 'تن',
-  'ﱴ' => 'تى',
-  'ﱵ' => 'تي',
-  'ﱶ' => 'ثر',
-  'ﱷ' => 'ثز',
-  'ﱸ' => 'ثم',
-  'ﱹ' => 'ثن',
-  'ﱺ' => 'ثى',
-  'ﱻ' => 'ثي',
-  'ﱼ' => 'فى',
-  'ﱽ' => 'في',
-  'ﱾ' => 'قى',
-  'ﱿ' => 'قي',
-  'ﲀ' => 'كا',
-  'ﲁ' => 'كل',
-  'ﲂ' => 'كم',
-  'ﲃ' => 'كى',
-  'ﲄ' => 'كي',
-  'ﲅ' => 'لم',
-  'ﲆ' => 'لى',
-  'ﲇ' => 'لي',
-  'ﲈ' => 'ما',
-  'ﲉ' => 'مم',
-  'ﲊ' => 'نر',
-  'ﲋ' => 'نز',
-  'ﲌ' => 'نم',
-  'ﲍ' => 'نن',
-  'ﲎ' => 'نى',
-  'ﲏ' => 'ني',
-  'ﲐ' => 'ىٰ',
-  'ﲑ' => 'ير',
-  'ﲒ' => 'يز',
-  'ﲓ' => 'يم',
-  'ﲔ' => 'ين',
-  'ﲕ' => 'يى',
-  'ﲖ' => 'يي',
-  'ﲗ' => 'ئج',
-  'ﲘ' => 'ئح',
-  'ﲙ' => 'ئخ',
-  'ﲚ' => 'ئم',
-  'ï²›' => 'ÙŠÙ”Ù‡',
-  'ﲜ' => 'بج',
-  'ﲝ' => 'بح',
-  'ﲞ' => 'بخ',
-  'ﲟ' => 'بم',
-  'ﲠ' => 'به',
-  'ﲡ' => 'تج',
-  'ﲢ' => 'تح',
-  'ﲣ' => 'تخ',
-  'ﲤ' => 'تم',
-  'ﲥ' => 'ته',
-  'ﲦ' => 'ثم',
-  'ﲧ' => 'جح',
-  'ﲨ' => 'جم',
-  'ﲩ' => 'حج',
-  'ﲪ' => 'حم',
-  'ﲫ' => 'خج',
-  'ﲬ' => 'خم',
-  'ﲭ' => 'سج',
-  'ﲮ' => 'سح',
-  'ﲯ' => 'سخ',
-  'ﲰ' => 'سم',
-  'ﲱ' => 'صح',
-  'ﲲ' => 'صخ',
-  'ﲳ' => 'صم',
-  'ﲴ' => 'ضج',
-  'ﲵ' => 'ضح',
-  'ﲶ' => 'ضخ',
-  'ﲷ' => 'ضم',
-  'ﲸ' => 'طح',
-  'ﲹ' => 'ظم',
-  'ﲺ' => 'عج',
-  'ﲻ' => 'عم',
-  'ﲼ' => 'غج',
-  'ﲽ' => 'غم',
-  'ﲾ' => 'فج',
-  'ﲿ' => 'فح',
-  'ﳀ' => 'فخ',
-  'ﳁ' => 'فم',
-  'ﳂ' => 'قح',
-  'ﳃ' => 'قم',
-  'ﳄ' => 'كج',
-  'ﳅ' => 'كح',
-  'ﳆ' => 'كخ',
-  'ﳇ' => 'كل',
-  'ﳈ' => 'كم',
-  'ﳉ' => 'لج',
-  'ﳊ' => 'لح',
-  'ﳋ' => 'لخ',
-  'ﳌ' => 'لم',
-  'ﳍ' => 'له',
-  'ﳎ' => 'مج',
-  'ﳏ' => 'مح',
-  'ﳐ' => 'مخ',
-  'ﳑ' => 'مم',
-  'ﳒ' => 'نج',
-  'ﳓ' => 'نح',
-  'ﳔ' => 'نخ',
-  'ﳕ' => 'نم',
-  'ﳖ' => 'نه',
-  'ﳗ' => 'هج',
-  'ﳘ' => 'هم',
-  'ﳙ' => 'هٰ',
-  'ﳚ' => 'يج',
-  'ﳛ' => 'يح',
-  'ﳜ' => 'يخ',
-  'ﳝ' => 'يم',
-  'ﳞ' => 'يه',
-  'ﳟ' => 'ئم',
-  'ï³ ' => 'ÙŠÙ”Ù‡',
-  'ﳡ' => 'بم',
-  'ﳢ' => 'به',
-  'ﳣ' => 'تم',
-  'ﳤ' => 'ته',
-  'ﳥ' => 'ثم',
-  'ﳦ' => 'ثه',
-  'ﳧ' => 'سم',
-  'ﳨ' => 'سه',
-  'ﳩ' => 'شم',
-  'ﳪ' => 'شه',
-  'ﳫ' => 'كل',
-  'ﳬ' => 'كم',
-  'ﳭ' => 'لم',
-  'ﳮ' => 'نم',
-  'ﳯ' => 'نه',
-  'ﳰ' => 'يم',
-  'ﳱ' => 'يه',
-  'ï³²' => 'Ù€ÙŽÙ‘',
-  'ﳳ' => 'ـُّ',
-  'ﳴ' => 'ـِّ',
-  'ﳵ' => 'طى',
-  'ﳶ' => 'طي',
-  'ﳷ' => 'عى',
-  'ﳸ' => 'عي',
-  'ﳹ' => 'غى',
-  'ﳺ' => 'غي',
-  'ﳻ' => 'سى',
-  'ﳼ' => 'سي',
-  'ﳽ' => 'شى',
-  'ﳾ' => 'شي',
-  'ﳿ' => 'حى',
-  'ﴀ' => 'حي',
-  'ﴁ' => 'جى',
-  'ﴂ' => 'جي',
-  'ﴃ' => 'خى',
-  'ﴄ' => 'خي',
-  'ﴅ' => 'صى',
-  'ﴆ' => 'صي',
-  'ﴇ' => 'ضى',
-  'ﴈ' => 'ضي',
-  'ﴉ' => 'شج',
-  'ﴊ' => 'شح',
-  'ﴋ' => 'شخ',
-  'ﴌ' => 'شم',
-  'ﴍ' => 'شر',
-  'ﴎ' => 'سر',
-  'ﴏ' => 'صر',
-  'ﴐ' => 'ضر',
-  'ﴑ' => 'طى',
-  'ﴒ' => 'طي',
-  'ﴓ' => 'عى',
-  'ﴔ' => 'عي',
-  'ﴕ' => 'غى',
-  'ﴖ' => 'غي',
-  'ﴗ' => 'سى',
-  'ﴘ' => 'سي',
-  'ﴙ' => 'شى',
-  'ﴚ' => 'شي',
-  'ﴛ' => 'حى',
-  'ﴜ' => 'حي',
-  'ﴝ' => 'جى',
-  'ﴞ' => 'جي',
-  'ﴟ' => 'خى',
-  'ﴠ' => 'خي',
-  'ﴡ' => 'صى',
-  'ﴢ' => 'صي',
-  'ﴣ' => 'ضى',
-  'ﴤ' => 'ضي',
-  'ﴥ' => 'شج',
-  'ﴦ' => 'شح',
-  'ﴧ' => 'شخ',
-  'ﴨ' => 'شم',
-  'ﴩ' => 'شر',
-  'ﴪ' => 'سر',
-  'ﴫ' => 'صر',
-  'ﴬ' => 'ضر',
-  'ﴭ' => 'شج',
-  'ﴮ' => 'شح',
-  'ﴯ' => 'شخ',
-  'ﴰ' => 'شم',
-  'ﴱ' => 'سه',
-  'ﴲ' => 'شه',
-  'ﴳ' => 'طم',
-  'ﴴ' => 'سج',
-  'ﴵ' => 'سح',
-  'ﴶ' => 'سخ',
-  'ﴷ' => 'شج',
-  'ﴸ' => 'شح',
-  'ﴹ' => 'شخ',
-  'ﴺ' => 'طم',
-  'ﴻ' => 'ظم',
-  'ﴼ' => 'اً',
-  'ﴽ' => 'اً',
-  'ﵐ' => 'تجم',
-  'ﵑ' => 'تحج',
-  'ﵒ' => 'تحج',
-  'ﵓ' => 'تحم',
-  'ﵔ' => 'تخم',
-  'ﵕ' => 'تمج',
-  'ﵖ' => 'تمح',
-  'ﵗ' => 'تمخ',
-  'ﵘ' => 'جمح',
-  'ﵙ' => 'جمح',
-  'ﵚ' => 'حمي',
-  'ﵛ' => 'حمى',
-  'ﵜ' => 'سحج',
-  'ﵝ' => 'سجح',
-  'ﵞ' => 'سجى',
-  'ﵟ' => 'سمح',
-  'ﵠ' => 'سمح',
-  'ﵡ' => 'سمج',
-  'ﵢ' => 'سمم',
-  'ﵣ' => 'سمم',
-  'ﵤ' => 'صحح',
-  'ﵥ' => 'صحح',
-  'ﵦ' => 'صمم',
-  'ﵧ' => 'شحم',
-  'ﵨ' => 'شحم',
-  'ﵩ' => 'شجي',
-  'ﵪ' => 'شمخ',
-  'ﵫ' => 'شمخ',
-  'ﵬ' => 'شمم',
-  'ﵭ' => 'شمم',
-  'ﵮ' => 'ضحى',
-  'ﵯ' => 'ضخم',
-  'ﵰ' => 'ضخم',
-  'ﵱ' => 'طمح',
-  'ﵲ' => 'طمح',
-  'ﵳ' => 'طمم',
-  'ﵴ' => 'طمي',
-  'ﵵ' => 'عجم',
-  'ﵶ' => 'عمم',
-  'ﵷ' => 'عمم',
-  'ﵸ' => 'عمى',
-  'ﵹ' => 'غمم',
-  'ﵺ' => 'غمي',
-  'ﵻ' => 'غمى',
-  'ﵼ' => 'فخم',
-  'ﵽ' => 'فخم',
-  'ﵾ' => 'قمح',
-  'ﵿ' => 'قمم',
-  'ﶀ' => 'لحم',
-  'ﶁ' => 'لحي',
-  'ﶂ' => 'لحى',
-  'ﶃ' => 'لجج',
-  'ﶄ' => 'لجج',
-  'ﶅ' => 'لخم',
-  'ﶆ' => 'لخم',
-  'ﶇ' => 'لمح',
-  'ﶈ' => 'لمح',
-  'ﶉ' => 'محج',
-  'ﶊ' => 'محم',
-  'ﶋ' => 'محي',
-  'ﶌ' => 'مجح',
-  'ﶍ' => 'مجم',
-  'ﶎ' => 'مخج',
-  'ﶏ' => 'مخم',
-  'ﶒ' => 'مجخ',
-  'ﶓ' => 'همج',
-  'ﶔ' => 'همم',
-  'ﶕ' => 'نحم',
-  'ﶖ' => 'نحى',
-  'ﶗ' => 'نجم',
-  'ﶘ' => 'نجم',
-  'ﶙ' => 'نجى',
-  'ﶚ' => 'نمي',
-  'ﶛ' => 'نمى',
-  'ﶜ' => 'يمم',
-  'ﶝ' => 'يمم',
-  'ﶞ' => 'بخي',
-  'ﶟ' => 'تجي',
-  'ﶠ' => 'تجى',
-  'ﶡ' => 'تخي',
-  'ﶢ' => 'تخى',
-  'ﶣ' => 'تمي',
-  'ﶤ' => 'تمى',
-  'ﶥ' => 'جمي',
-  'ﶦ' => 'جحى',
-  'ﶧ' => 'جمى',
-  'ﶨ' => 'سخى',
-  'ﶩ' => 'صحي',
-  'ﶪ' => 'شحي',
-  'ﶫ' => 'ضحي',
-  'ﶬ' => 'لجي',
-  'ﶭ' => 'لمي',
-  'ﶮ' => 'يحي',
-  'ﶯ' => 'يجي',
-  'ﶰ' => 'يمي',
-  'ﶱ' => 'ممي',
-  'ﶲ' => 'قمي',
-  'ﶳ' => 'نحي',
-  'ﶴ' => 'قمح',
-  'ﶵ' => 'لحم',
-  'ﶶ' => 'عمي',
-  'ﶷ' => 'كمي',
-  'ﶸ' => 'نجح',
-  'ﶹ' => 'مخي',
-  'ﶺ' => 'لجم',
-  'ﶻ' => 'كمم',
-  'ﶼ' => 'لجم',
-  'ﶽ' => 'نجح',
-  'ﶾ' => 'جحي',
-  'ﶿ' => 'حجي',
-  'ﷀ' => 'مجي',
-  'ﷁ' => 'فمي',
-  'ﷂ' => 'بحي',
-  'ﷃ' => 'كمم',
-  'ﷄ' => 'عجم',
-  'ﷅ' => 'صمم',
-  'ﷆ' => 'سخي',
-  'ﷇ' => 'نجي',
-  'ﷰ' => 'صلے',
-  'ﷱ' => 'قلے',
-  'ﷲ' => 'الله',
-  'ﷳ' => 'اكبر',
-  'ﷴ' => 'محمد',
-  'ﷵ' => 'صلعم',
-  'ﷶ' => 'رسول',
-  'ﷷ' => 'عليه',
-  'ﷸ' => 'وسلم',
-  'ﷹ' => 'صلى',
-  'ﷺ' => 'صلى الله عليه وسلم',
-  'ﷻ' => 'جل جلاله',
-  '﷼' => 'ریال',
-  '︐' => ',',
-  '︑' => '、',
-  '︒' => '。',
-  '︓' => ':',
-  '︔' => ';',
-  '︕' => '!',
-  '︖' => '?',
-  '︗' => '〖',
-  '︘' => '〗',
-  '︙' => '...',
-  '︰' => '..',
-  '︱' => '—',
-  '︲' => '–',
-  '︳' => '_',
-  '︴' => '_',
-  '︵' => '(',
-  '︶' => ')',
-  '︷' => '{',
-  '︸' => '}',
-  '︹' => '〔',
-  '︺' => '〕',
-  '︻' => '【',
-  '︼' => '】',
-  '︽' => '《',
-  '︾' => '》',
-  '︿' => '〈',
-  '﹀' => '〉',
-  '﹁' => '「',
-  '﹂' => '」',
-  '﹃' => '『',
-  '﹄' => '』',
-  '﹇' => '[',
-  '﹈' => ']',
-  '﹉' => ' ̅',
-  '﹊' => ' ̅',
-  '﹋' => ' ̅',
-  '﹌' => ' ̅',
-  '﹍' => '_',
-  '﹎' => '_',
-  '﹏' => '_',
-  '﹐' => ',',
-  '﹑' => '、',
-  'ï¹’' => '.',
-  'ï¹”' => ';',
-  '﹕' => ':',
-  'ï¹–' => '?',
-  'ï¹—' => '!',
-  '﹘' => '—',
-  'ï¹™' => '(',
-  '﹚' => ')',
-  'ï¹›' => '{',
-  '﹜' => '}',
-  '﹝' => '〔',
-  '﹞' => '〕',
-  '﹟' => '#',
-  'ï¹ ' => '&',
-  '﹡' => '*',
-  'ï¹¢' => '+',
-  'ï¹£' => '-',
-  '﹤' => '<',
-  'ï¹¥' => '>',
-  '﹦' => '=',
-  '﹨' => '\\',
-  '﹩' => '$',
-  '﹪' => '%',
-  '﹫' => '@',
-  'ï¹°' => ' Ù‹',
-  'ﹱ' => 'ـً',
-  'ﹲ' => ' ٌ',
-  'ﹴ' => ' ٍ',
-  'ﹶ' => ' َ',
-  'ï¹·' => 'Ù€ÙŽ',
-  'ﹸ' => ' ُ',
-  'ﹹ' => 'ـُ',
-  'ﹺ' => ' ِ',
-  'ﹻ' => 'ـِ',
-  'ï¹¼' => ' Ù‘',
-  'ﹽ' => 'ـّ',
-  'ï¹¾' => ' Ù’',
-  'ﹿ' => 'ـْ',
-  'ﺀ' => 'ء',
-  'ﺁ' => 'آ',
-  'ﺂ' => 'آ',
-  'ﺃ' => 'أ',
-  'ﺄ' => 'أ',
-  'ﺅ' => 'ؤ',
-  'ﺆ' => 'ؤ',
-  'ﺇ' => 'إ',
-  'ﺈ' => 'إ',
-  'ﺉ' => 'ئ',
-  'ﺊ' => 'ئ',
-  'ﺋ' => 'ئ',
-  'ﺌ' => 'ئ',
-  'ﺍ' => 'ا',
-  'ﺎ' => 'ا',
-  'ﺏ' => 'ب',
-  'ﺐ' => 'ب',
-  'ﺑ' => 'ب',
-  'ﺒ' => 'ب',
-  'ﺓ' => 'ة',
-  'ﺔ' => 'ة',
-  'ﺕ' => 'ت',
-  'ﺖ' => 'ت',
-  'ﺗ' => 'ت',
-  'ﺘ' => 'ت',
-  'ﺙ' => 'ث',
-  'ﺚ' => 'ث',
-  'ﺛ' => 'ث',
-  'ﺜ' => 'ث',
-  'ﺝ' => 'ج',
-  'ﺞ' => 'ج',
-  'ﺟ' => 'ج',
-  'ﺠ' => 'ج',
-  'ﺡ' => 'ح',
-  'ﺢ' => 'ح',
-  'ﺣ' => 'ح',
-  'ﺤ' => 'ح',
-  'ﺥ' => 'خ',
-  'ﺦ' => 'خ',
-  'ﺧ' => 'خ',
-  'ﺨ' => 'خ',
-  'ﺩ' => 'د',
-  'ﺪ' => 'د',
-  'ﺫ' => 'ذ',
-  'ﺬ' => 'ذ',
-  'ﺭ' => 'ر',
-  'ﺮ' => 'ر',
-  'ﺯ' => 'ز',
-  'ﺰ' => 'ز',
-  'ﺱ' => 'س',
-  'ﺲ' => 'س',
-  'ﺳ' => 'س',
-  'ﺴ' => 'س',
-  'ﺵ' => 'ش',
-  'ﺶ' => 'ش',
-  'ﺷ' => 'ش',
-  'ﺸ' => 'ش',
-  'ﺹ' => 'ص',
-  'ﺺ' => 'ص',
-  'ﺻ' => 'ص',
-  'ﺼ' => 'ص',
-  'ﺽ' => 'ض',
-  'ﺾ' => 'ض',
-  'ﺿ' => 'ض',
-  'ﻀ' => 'ض',
-  'ﻁ' => 'ط',
-  'ﻂ' => 'ط',
-  'ﻃ' => 'ط',
-  'ﻄ' => 'ط',
-  'ﻅ' => 'ظ',
-  'ﻆ' => 'ظ',
-  'ﻇ' => 'ظ',
-  'ﻈ' => 'ظ',
-  'ﻉ' => 'ع',
-  'ﻊ' => 'ع',
-  'ﻋ' => 'ع',
-  'ﻌ' => 'ع',
-  'ﻍ' => 'غ',
-  'ﻎ' => 'غ',
-  'ﻏ' => 'غ',
-  'ﻐ' => 'غ',
-  'ﻑ' => 'ف',
-  'ﻒ' => 'ف',
-  'ﻓ' => 'ف',
-  'ﻔ' => 'ف',
-  'ﻕ' => 'ق',
-  'ï»–' => 'Ù‚',
-  'ï»—' => 'Ù‚',
-  'ﻘ' => 'ق',
-  'ï»™' => 'Ùƒ',
-  'ﻚ' => 'ك',
-  'ï»›' => 'Ùƒ',
-  'ﻜ' => 'ك',
-  'ﻝ' => 'ل',
-  'ﻞ' => 'ل',
-  'ﻟ' => 'ل',
-  'ï» ' => 'Ù„',
-  'ﻡ' => 'م',
-  'ﻢ' => 'م',
-  'ﻣ' => 'م',
-  'ﻤ' => 'م',
-  'ﻥ' => 'ن',
-  'ﻦ' => 'ن',
-  'ﻧ' => 'ن',
-  'ﻨ' => 'ن',
-  'ﻩ' => 'ه',
-  'ﻪ' => 'ه',
-  'ﻫ' => 'ه',
-  'ﻬ' => 'ه',
-  'ï»­' => 'Ùˆ',
-  'ï»®' => 'Ùˆ',
-  'ﻯ' => 'ى',
-  'ï»°' => 'Ù‰',
-  'ï»±' => 'ÙŠ',
-  'ﻲ' => 'ي',
-  'ﻳ' => 'ي',
-  'ï»´' => 'ÙŠ',
-  'ﻵ' => 'لآ',
-  'ﻶ' => 'لآ',
-  'ﻷ' => 'لأ',
-  'ﻸ' => 'لأ',
-  'ﻹ' => 'لإ',
-  'ﻺ' => 'لإ',
-  'ﻻ' => 'لا',
-  'ﻼ' => 'لا',
-  '!' => '!',
-  '"' => '"',
-  '#' => '#',
-  '$' => '$',
-  'ï¼…' => '%',
-  '&' => '&',
-  ''' => '\'',
-  '(' => '(',
-  ')' => ')',
-  '*' => '*',
-  '+' => '+',
-  ',' => ',',
-  '-' => '-',
-  '.' => '.',
-  '/' => '/',
-  '0' => '0',
-  '1' => '1',
-  'ï¼’' => '2',
-  '3' => '3',
-  'ï¼”' => '4',
-  '5' => '5',
-  'ï¼–' => '6',
-  'ï¼—' => '7',
-  '8' => '8',
-  'ï¼™' => '9',
-  ':' => ':',
-  'ï¼›' => ';',
-  '<' => '<',
-  '=' => '=',
-  '>' => '>',
-  '?' => '?',
-  'ï¼ ' => '@',
-  'A' => 'A',
-  'ï¼¢' => 'B',
-  'ï¼£' => 'C',
-  'D' => 'D',
-  'ï¼¥' => 'E',
-  'F' => 'F',
-  'G' => 'G',
-  'H' => 'H',
-  'I' => 'I',
-  'J' => 'J',
-  'K' => 'K',
-  'L' => 'L',
-  'ï¼­' => 'M',
-  'ï¼®' => 'N',
-  'O' => 'O',
-  'ï¼°' => 'P',
-  'ï¼±' => 'Q',
-  'ï¼²' => 'R',
-  'ï¼³' => 'S',
-  'ï¼´' => 'T',
-  'ï¼µ' => 'U',
-  'V' => 'V',
-  'ï¼·' => 'W',
-  'X' => 'X',
-  'ï¼¹' => 'Y',
-  'Z' => 'Z',
-  'ï¼»' => '[',
-  'ï¼¼' => '\\',
-  'ï¼½' => ']',
-  'ï¼¾' => '^',
-  '_' => '_',
-  'ï½€' => '`',
-  'a' => 'a',
-  'b' => 'b',
-  'c' => 'c',
-  'd' => 'd',
-  'ï½…' => 'e',
-  'f' => 'f',
-  'g' => 'g',
-  'h' => 'h',
-  'i' => 'i',
-  'j' => 'j',
-  'k' => 'k',
-  'l' => 'l',
-  'm' => 'm',
-  'n' => 'n',
-  'o' => 'o',
-  'p' => 'p',
-  'q' => 'q',
-  'ï½’' => 'r',
-  's' => 's',
-  'ï½”' => 't',
-  'u' => 'u',
-  'ï½–' => 'v',
-  'ï½—' => 'w',
-  'x' => 'x',
-  'ï½™' => 'y',
-  'z' => 'z',
-  'ï½›' => '{',
-  '|' => '|',
-  '}' => '}',
-  '~' => '~',
-  '⦅' => '⦅',
-  '⦆' => '⦆',
-  '。' => '。',
-  '「' => '「',
-  '」' => '」',
-  '、' => '、',
-  '・' => '・',
-  'ヲ' => 'ヲ',
-  'ァ' => 'ァ',
-  'ィ' => 'ィ',
-  'ゥ' => 'ゥ',
-  'ェ' => 'ェ',
-  'ォ' => 'ォ',
-  'ャ' => 'ャ',
-  'ュ' => 'ュ',
-  'ョ' => 'ョ',
-  'ッ' => 'ッ',
-  'ー' => 'ー',
-  'ï½±' => 'ã‚¢',
-  'イ' => 'イ',
-  'ウ' => 'ウ',
-  'エ' => 'エ',
-  'オ' => 'オ',
-  'カ' => 'カ',
-  'ï½·' => 'ã‚­',
-  'ク' => 'ク',
-  'ケ' => 'ケ',
-  'コ' => 'コ',
-  'サ' => 'サ',
-  'ï½¼' => 'ã‚·',
-  'ス' => 'ス',
-  'ï½¾' => 'ã‚»',
-  'ソ' => 'ソ',
-  'ï¾€' => 'ã‚¿',
-  'チ' => 'チ',
-  'ツ' => 'ツ',
-  'テ' => 'テ',
-  'ト' => 'ト',
-  'ナ' => 'ナ',
-  'ニ' => 'ニ',
-  'ヌ' => 'ヌ',
-  'ネ' => 'ネ',
-  'ノ' => 'ノ',
-  'ハ' => 'ハ',
-  'ヒ' => 'ヒ',
-  'フ' => 'フ',
-  'ヘ' => 'ヘ',
-  'ホ' => 'ホ',
-  'マ' => 'マ',
-  'ミ' => 'ミ',
-  'ム' => 'ム',
-  'メ' => 'メ',
-  'モ' => 'モ',
-  'ヤ' => 'ヤ',
-  'ユ' => 'ユ',
-  'ヨ' => 'ヨ',
-  'ラ' => 'ラ',
-  'リ' => 'リ',
-  'ル' => 'ル',
-  'レ' => 'レ',
-  'ロ' => 'ロ',
-  'ワ' => 'ワ',
-  'ン' => 'ン',
-  '゙' => '゙',
-  '゚' => '゚',
-  'ï¾ ' => 'á… ',
-  'ᄀ' => 'ᄀ',
-  'ᄁ' => 'ᄁ',
-  'ᆪ' => 'ᆪ',
-  'ᄂ' => 'ᄂ',
-  'ᆬ' => 'ᆬ',
-  'ᆭ' => 'ᆭ',
-  'ᄃ' => 'ᄃ',
-  'ᄄ' => 'ᄄ',
-  'ᄅ' => 'ᄅ',
-  'ᆰ' => 'ᆰ',
-  'ᆱ' => 'ᆱ',
-  'ᆲ' => 'ᆲ',
-  'ᆳ' => 'ᆳ',
-  'ᆴ' => 'ᆴ',
-  'ᆵ' => 'ᆵ',
-  'ï¾°' => 'á„š',
-  'ᄆ' => 'ᄆ',
-  'ᄇ' => 'ᄇ',
-  'ᄈ' => 'ᄈ',
-  'ï¾´' => 'á„¡',
-  'ᄉ' => 'ᄉ',
-  'ᄊ' => 'ᄊ',
-  'ï¾·' => 'á„‹',
-  'ᄌ' => 'ᄌ',
-  'ᄍ' => 'ᄍ',
-  'ᄎ' => 'ᄎ',
-  'ᄏ' => 'ᄏ',
-  'ᄐ' => 'ᄐ',
-  'ï¾½' => 'á„‘',
-  'ï¾¾' => 'á„’',
-  'ï¿‚' => 'á…¡',
-  'ᅢ' => 'ᅢ',
-  'ï¿„' => 'á…£',
-  'ï¿…' => 'á…¤',
-  'ᅥ' => 'ᅥ',
-  'ᅦ' => 'ᅦ',
-  'ï¿Š' => 'á…§',
-  'ï¿‹' => 'á…¨',
-  'ᅩ' => 'ᅩ',
-  'ᅪ' => 'ᅪ',
-  'ï¿Ž' => 'á…«',
-  'ᅬ' => 'ᅬ',
-  'ï¿’' => 'á…­',
-  'ï¿“' => 'á…®',
-  'ï¿”' => 'á…¯',
-  'ï¿•' => 'á…°',
-  'ï¿–' => 'á…±',
-  'ï¿—' => 'á…²',
-  'ï¿š' => 'á…³',
-  'ï¿›' => 'á…´',
-  'ᅵ' => 'ᅵ',
-  '¢' => '¢',
-  '£' => '£',
-  '¬' => '¬',
-  'ï¿£' => ' Ì„',
-  '¦' => '¦',
-  'ï¿¥' => 'Â¥',
-  '₩' => '₩',
-  '│' => '│',
-  '←' => '←',
-  '↑' => '↑',
-  '→' => '→',
-  '↓' => '↓',
-  'ï¿­' => 'â– ',
-  'ï¿®' => 'â—‹',
-  '𝐀' => 'A',
-  '𝐁' => 'B',
-  '𝐂' => 'C',
-  '𝐃' => 'D',
-  '𝐄' => 'E',
-  '𝐅' => 'F',
-  '𝐆' => 'G',
-  '𝐇' => 'H',
-  '𝐈' => 'I',
-  '𝐉' => 'J',
-  '𝐊' => 'K',
-  '𝐋' => 'L',
-  '𝐌' => 'M',
-  '𝐍' => 'N',
-  '𝐎' => 'O',
-  '𝐏' => 'P',
-  '𝐐' => 'Q',
-  '𝐑' => 'R',
-  '𝐒' => 'S',
-  '𝐓' => 'T',
-  '𝐔' => 'U',
-  '𝐕' => 'V',
-  '𝐖' => 'W',
-  '𝐗' => 'X',
-  '𝐘' => 'Y',
-  '𝐙' => 'Z',
-  '𝐚' => 'a',
-  '𝐛' => 'b',
-  '𝐜' => 'c',
-  '𝐝' => 'd',
-  '𝐞' => 'e',
-  '𝐟' => 'f',
-  '𝐠' => 'g',
-  '𝐡' => 'h',
-  '𝐢' => 'i',
-  '𝐣' => 'j',
-  '𝐤' => 'k',
-  '𝐥' => 'l',
-  '𝐦' => 'm',
-  '𝐧' => 'n',
-  '𝐨' => 'o',
-  '𝐩' => 'p',
-  '𝐪' => 'q',
-  '𝐫' => 'r',
-  '𝐬' => 's',
-  '𝐭' => 't',
-  '𝐮' => 'u',
-  '𝐯' => 'v',
-  '𝐰' => 'w',
-  '𝐱' => 'x',
-  '𝐲' => 'y',
-  '𝐳' => 'z',
-  '𝐴' => 'A',
-  '𝐵' => 'B',
-  '𝐶' => 'C',
-  '𝐷' => 'D',
-  '𝐸' => 'E',
-  '𝐹' => 'F',
-  '𝐺' => 'G',
-  '𝐻' => 'H',
-  '𝐼' => 'I',
-  '𝐽' => 'J',
-  '𝐾' => 'K',
-  '𝐿' => 'L',
-  '𝑀' => 'M',
-  '𝑁' => 'N',
-  '𝑂' => 'O',
-  '𝑃' => 'P',
-  '𝑄' => 'Q',
-  '𝑅' => 'R',
-  '𝑆' => 'S',
-  '𝑇' => 'T',
-  '𝑈' => 'U',
-  '𝑉' => 'V',
-  '𝑊' => 'W',
-  '𝑋' => 'X',
-  '𝑌' => 'Y',
-  '𝑍' => 'Z',
-  '𝑎' => 'a',
-  '𝑏' => 'b',
-  '𝑐' => 'c',
-  '𝑑' => 'd',
-  '𝑒' => 'e',
-  '𝑓' => 'f',
-  '𝑔' => 'g',
-  '𝑖' => 'i',
-  '𝑗' => 'j',
-  '𝑘' => 'k',
-  '𝑙' => 'l',
-  '𝑚' => 'm',
-  '𝑛' => 'n',
-  '𝑜' => 'o',
-  '𝑝' => 'p',
-  '𝑞' => 'q',
-  '𝑟' => 'r',
-  '𝑠' => 's',
-  '𝑡' => 't',
-  '𝑢' => 'u',
-  '𝑣' => 'v',
-  '𝑤' => 'w',
-  '𝑥' => 'x',
-  '𝑦' => 'y',
-  '𝑧' => 'z',
-  '𝑨' => 'A',
-  '𝑩' => 'B',
-  '𝑪' => 'C',
-  '𝑫' => 'D',
-  '𝑬' => 'E',
-  '𝑭' => 'F',
-  '𝑮' => 'G',
-  '𝑯' => 'H',
-  '𝑰' => 'I',
-  '𝑱' => 'J',
-  '𝑲' => 'K',
-  '𝑳' => 'L',
-  '𝑴' => 'M',
-  '𝑵' => 'N',
-  '𝑶' => 'O',
-  '𝑷' => 'P',
-  '𝑸' => 'Q',
-  '𝑹' => 'R',
-  '𝑺' => 'S',
-  '𝑻' => 'T',
-  '𝑼' => 'U',
-  '𝑽' => 'V',
-  '𝑾' => 'W',
-  '𝑿' => 'X',
-  '𝒀' => 'Y',
-  '𝒁' => 'Z',
-  '𝒂' => 'a',
-  '𝒃' => 'b',
-  '𝒄' => 'c',
-  '𝒅' => 'd',
-  '𝒆' => 'e',
-  '𝒇' => 'f',
-  '𝒈' => 'g',
-  '𝒉' => 'h',
-  '𝒊' => 'i',
-  '𝒋' => 'j',
-  '𝒌' => 'k',
-  '𝒍' => 'l',
-  '𝒎' => 'm',
-  '𝒏' => 'n',
-  '𝒐' => 'o',
-  '𝒑' => 'p',
-  '𝒒' => 'q',
-  '𝒓' => 'r',
-  '𝒔' => 's',
-  '𝒕' => 't',
-  '𝒖' => 'u',
-  '𝒗' => 'v',
-  '𝒘' => 'w',
-  '𝒙' => 'x',
-  '𝒚' => 'y',
-  '𝒛' => 'z',
-  '𝒜' => 'A',
-  '𝒞' => 'C',
-  '𝒟' => 'D',
-  '𝒢' => 'G',
-  '𝒥' => 'J',
-  '𝒦' => 'K',
-  '𝒩' => 'N',
-  '𝒪' => 'O',
-  '𝒫' => 'P',
-  '𝒬' => 'Q',
-  '𝒮' => 'S',
-  '𝒯' => 'T',
-  '𝒰' => 'U',
-  '𝒱' => 'V',
-  '𝒲' => 'W',
-  '𝒳' => 'X',
-  '𝒴' => 'Y',
-  '𝒵' => 'Z',
-  '𝒶' => 'a',
-  '𝒷' => 'b',
-  '𝒸' => 'c',
-  '𝒹' => 'd',
-  '𝒻' => 'f',
-  '𝒽' => 'h',
-  '𝒾' => 'i',
-  '𝒿' => 'j',
-  '𝓀' => 'k',
-  '𝓁' => 'l',
-  '𝓂' => 'm',
-  '𝓃' => 'n',
-  '𝓅' => 'p',
-  '𝓆' => 'q',
-  '𝓇' => 'r',
-  '𝓈' => 's',
-  '𝓉' => 't',
-  '𝓊' => 'u',
-  '𝓋' => 'v',
-  '𝓌' => 'w',
-  '𝓍' => 'x',
-  '𝓎' => 'y',
-  '𝓏' => 'z',
-  '𝓐' => 'A',
-  '𝓑' => 'B',
-  '𝓒' => 'C',
-  '𝓓' => 'D',
-  '𝓔' => 'E',
-  '𝓕' => 'F',
-  '𝓖' => 'G',
-  '𝓗' => 'H',
-  '𝓘' => 'I',
-  '𝓙' => 'J',
-  '𝓚' => 'K',
-  '𝓛' => 'L',
-  '𝓜' => 'M',
-  '𝓝' => 'N',
-  '𝓞' => 'O',
-  '𝓟' => 'P',
-  '𝓠' => 'Q',
-  '𝓡' => 'R',
-  '𝓢' => 'S',
-  '𝓣' => 'T',
-  '𝓤' => 'U',
-  '𝓥' => 'V',
-  '𝓦' => 'W',
-  '𝓧' => 'X',
-  '𝓨' => 'Y',
-  '𝓩' => 'Z',
-  '𝓪' => 'a',
-  '𝓫' => 'b',
-  '𝓬' => 'c',
-  '𝓭' => 'd',
-  '𝓮' => 'e',
-  '𝓯' => 'f',
-  '𝓰' => 'g',
-  '𝓱' => 'h',
-  '𝓲' => 'i',
-  '𝓳' => 'j',
-  '𝓴' => 'k',
-  '𝓵' => 'l',
-  '𝓶' => 'm',
-  '𝓷' => 'n',
-  '𝓸' => 'o',
-  '𝓹' => 'p',
-  '𝓺' => 'q',
-  '𝓻' => 'r',
-  '𝓼' => 's',
-  '𝓽' => 't',
-  '𝓾' => 'u',
-  '𝓿' => 'v',
-  '𝔀' => 'w',
-  '𝔁' => 'x',
-  '𝔂' => 'y',
-  '𝔃' => 'z',
-  '𝔄' => 'A',
-  '𝔅' => 'B',
-  '𝔇' => 'D',
-  '𝔈' => 'E',
-  '𝔉' => 'F',
-  '𝔊' => 'G',
-  '𝔍' => 'J',
-  '𝔎' => 'K',
-  '𝔏' => 'L',
-  '𝔐' => 'M',
-  '𝔑' => 'N',
-  '𝔒' => 'O',
-  '𝔓' => 'P',
-  '𝔔' => 'Q',
-  '𝔖' => 'S',
-  '𝔗' => 'T',
-  '𝔘' => 'U',
-  '𝔙' => 'V',
-  '𝔚' => 'W',
-  '𝔛' => 'X',
-  '𝔜' => 'Y',
-  '𝔞' => 'a',
-  '𝔟' => 'b',
-  '𝔠' => 'c',
-  '𝔡' => 'd',
-  '𝔢' => 'e',
-  '𝔣' => 'f',
-  '𝔤' => 'g',
-  '𝔥' => 'h',
-  '𝔦' => 'i',
-  '𝔧' => 'j',
-  '𝔨' => 'k',
-  '𝔩' => 'l',
-  '𝔪' => 'm',
-  '𝔫' => 'n',
-  '𝔬' => 'o',
-  '𝔭' => 'p',
-  '𝔮' => 'q',
-  '𝔯' => 'r',
-  '𝔰' => 's',
-  '𝔱' => 't',
-  '𝔲' => 'u',
-  '𝔳' => 'v',
-  '𝔴' => 'w',
-  '𝔵' => 'x',
-  '𝔶' => 'y',
-  '𝔷' => 'z',
-  '𝔸' => 'A',
-  '𝔹' => 'B',
-  '𝔻' => 'D',
-  '𝔼' => 'E',
-  '𝔽' => 'F',
-  '𝔾' => 'G',
-  '𝕀' => 'I',
-  '𝕁' => 'J',
-  '𝕂' => 'K',
-  '𝕃' => 'L',
-  '𝕄' => 'M',
-  '𝕆' => 'O',
-  '𝕊' => 'S',
-  '𝕋' => 'T',
-  '𝕌' => 'U',
-  '𝕍' => 'V',
-  '𝕎' => 'W',
-  '𝕏' => 'X',
-  '𝕐' => 'Y',
-  '𝕒' => 'a',
-  '𝕓' => 'b',
-  '𝕔' => 'c',
-  '𝕕' => 'd',
-  '𝕖' => 'e',
-  '𝕗' => 'f',
-  '𝕘' => 'g',
-  '𝕙' => 'h',
-  '𝕚' => 'i',
-  '𝕛' => 'j',
-  '𝕜' => 'k',
-  '𝕝' => 'l',
-  '𝕞' => 'm',
-  '𝕟' => 'n',
-  '𝕠' => 'o',
-  '𝕡' => 'p',
-  '𝕢' => 'q',
-  '𝕣' => 'r',
-  '𝕤' => 's',
-  '𝕥' => 't',
-  '𝕦' => 'u',
-  '𝕧' => 'v',
-  '𝕨' => 'w',
-  '𝕩' => 'x',
-  '𝕪' => 'y',
-  '𝕫' => 'z',
-  '𝕬' => 'A',
-  '𝕭' => 'B',
-  '𝕮' => 'C',
-  '𝕯' => 'D',
-  '𝕰' => 'E',
-  '𝕱' => 'F',
-  '𝕲' => 'G',
-  '𝕳' => 'H',
-  '𝕴' => 'I',
-  '𝕵' => 'J',
-  '𝕶' => 'K',
-  '𝕷' => 'L',
-  '𝕸' => 'M',
-  '𝕹' => 'N',
-  '𝕺' => 'O',
-  '𝕻' => 'P',
-  '𝕼' => 'Q',
-  '𝕽' => 'R',
-  '𝕾' => 'S',
-  '𝕿' => 'T',
-  '𝖀' => 'U',
-  '𝖁' => 'V',
-  '𝖂' => 'W',
-  '𝖃' => 'X',
-  '𝖄' => 'Y',
-  '𝖅' => 'Z',
-  '𝖆' => 'a',
-  '𝖇' => 'b',
-  '𝖈' => 'c',
-  '𝖉' => 'd',
-  '𝖊' => 'e',
-  '𝖋' => 'f',
-  '𝖌' => 'g',
-  '𝖍' => 'h',
-  '𝖎' => 'i',
-  '𝖏' => 'j',
-  '𝖐' => 'k',
-  '𝖑' => 'l',
-  '𝖒' => 'm',
-  '𝖓' => 'n',
-  '𝖔' => 'o',
-  '𝖕' => 'p',
-  '𝖖' => 'q',
-  '𝖗' => 'r',
-  '𝖘' => 's',
-  '𝖙' => 't',
-  '𝖚' => 'u',
-  '𝖛' => 'v',
-  '𝖜' => 'w',
-  '𝖝' => 'x',
-  '𝖞' => 'y',
-  '𝖟' => 'z',
-  '𝖠' => 'A',
-  '𝖡' => 'B',
-  '𝖢' => 'C',
-  '𝖣' => 'D',
-  '𝖤' => 'E',
-  '𝖥' => 'F',
-  '𝖦' => 'G',
-  '𝖧' => 'H',
-  '𝖨' => 'I',
-  '𝖩' => 'J',
-  '𝖪' => 'K',
-  '𝖫' => 'L',
-  '𝖬' => 'M',
-  '𝖭' => 'N',
-  '𝖮' => 'O',
-  '𝖯' => 'P',
-  '𝖰' => 'Q',
-  '𝖱' => 'R',
-  '𝖲' => 'S',
-  '𝖳' => 'T',
-  '𝖴' => 'U',
-  '𝖵' => 'V',
-  '𝖶' => 'W',
-  '𝖷' => 'X',
-  '𝖸' => 'Y',
-  '𝖹' => 'Z',
-  '𝖺' => 'a',
-  '𝖻' => 'b',
-  '𝖼' => 'c',
-  '𝖽' => 'd',
-  '𝖾' => 'e',
-  '𝖿' => 'f',
-  '𝗀' => 'g',
-  '𝗁' => 'h',
-  '𝗂' => 'i',
-  '𝗃' => 'j',
-  '𝗄' => 'k',
-  '𝗅' => 'l',
-  '𝗆' => 'm',
-  '𝗇' => 'n',
-  '𝗈' => 'o',
-  '𝗉' => 'p',
-  '𝗊' => 'q',
-  '𝗋' => 'r',
-  '𝗌' => 's',
-  '𝗍' => 't',
-  '𝗎' => 'u',
-  '𝗏' => 'v',
-  '𝗐' => 'w',
-  '𝗑' => 'x',
-  '𝗒' => 'y',
-  '𝗓' => 'z',
-  '𝗔' => 'A',
-  '𝗕' => 'B',
-  '𝗖' => 'C',
-  '𝗗' => 'D',
-  '𝗘' => 'E',
-  '𝗙' => 'F',
-  '𝗚' => 'G',
-  '𝗛' => 'H',
-  '𝗜' => 'I',
-  '𝗝' => 'J',
-  '𝗞' => 'K',
-  '𝗟' => 'L',
-  '𝗠' => 'M',
-  '𝗡' => 'N',
-  '𝗢' => 'O',
-  '𝗣' => 'P',
-  '𝗤' => 'Q',
-  '𝗥' => 'R',
-  '𝗦' => 'S',
-  '𝗧' => 'T',
-  '𝗨' => 'U',
-  '𝗩' => 'V',
-  '𝗪' => 'W',
-  '𝗫' => 'X',
-  '𝗬' => 'Y',
-  '𝗭' => 'Z',
-  '𝗮' => 'a',
-  '𝗯' => 'b',
-  '𝗰' => 'c',
-  '𝗱' => 'd',
-  '𝗲' => 'e',
-  '𝗳' => 'f',
-  '𝗴' => 'g',
-  '𝗵' => 'h',
-  '𝗶' => 'i',
-  '𝗷' => 'j',
-  '𝗸' => 'k',
-  '𝗹' => 'l',
-  '𝗺' => 'm',
-  '𝗻' => 'n',
-  '𝗼' => 'o',
-  '𝗽' => 'p',
-  '𝗾' => 'q',
-  '𝗿' => 'r',
-  '𝘀' => 's',
-  '𝘁' => 't',
-  '𝘂' => 'u',
-  '𝘃' => 'v',
-  '𝘄' => 'w',
-  '𝘅' => 'x',
-  '𝘆' => 'y',
-  '𝘇' => 'z',
-  '𝘈' => 'A',
-  '𝘉' => 'B',
-  '𝘊' => 'C',
-  '𝘋' => 'D',
-  '𝘌' => 'E',
-  '𝘍' => 'F',
-  '𝘎' => 'G',
-  '𝘏' => 'H',
-  '𝘐' => 'I',
-  '𝘑' => 'J',
-  '𝘒' => 'K',
-  '𝘓' => 'L',
-  '𝘔' => 'M',
-  '𝘕' => 'N',
-  '𝘖' => 'O',
-  '𝘗' => 'P',
-  '𝘘' => 'Q',
-  '𝘙' => 'R',
-  '𝘚' => 'S',
-  '𝘛' => 'T',
-  '𝘜' => 'U',
-  '𝘝' => 'V',
-  '𝘞' => 'W',
-  '𝘟' => 'X',
-  '𝘠' => 'Y',
-  '𝘡' => 'Z',
-  '𝘢' => 'a',
-  '𝘣' => 'b',
-  '𝘤' => 'c',
-  '𝘥' => 'd',
-  '𝘦' => 'e',
-  '𝘧' => 'f',
-  '𝘨' => 'g',
-  '𝘩' => 'h',
-  '𝘪' => 'i',
-  '𝘫' => 'j',
-  '𝘬' => 'k',
-  '𝘭' => 'l',
-  '𝘮' => 'm',
-  '𝘯' => 'n',
-  '𝘰' => 'o',
-  '𝘱' => 'p',
-  '𝘲' => 'q',
-  '𝘳' => 'r',
-  '𝘴' => 's',
-  '𝘵' => 't',
-  '𝘶' => 'u',
-  '𝘷' => 'v',
-  '𝘸' => 'w',
-  '𝘹' => 'x',
-  '𝘺' => 'y',
-  '𝘻' => 'z',
-  '𝘼' => 'A',
-  '𝘽' => 'B',
-  '𝘾' => 'C',
-  '𝘿' => 'D',
-  '𝙀' => 'E',
-  '𝙁' => 'F',
-  '𝙂' => 'G',
-  '𝙃' => 'H',
-  '𝙄' => 'I',
-  '𝙅' => 'J',
-  '𝙆' => 'K',
-  '𝙇' => 'L',
-  '𝙈' => 'M',
-  '𝙉' => 'N',
-  '𝙊' => 'O',
-  '𝙋' => 'P',
-  '𝙌' => 'Q',
-  '𝙍' => 'R',
-  '𝙎' => 'S',
-  '𝙏' => 'T',
-  '𝙐' => 'U',
-  '𝙑' => 'V',
-  '𝙒' => 'W',
-  '𝙓' => 'X',
-  '𝙔' => 'Y',
-  '𝙕' => 'Z',
-  '𝙖' => 'a',
-  '𝙗' => 'b',
-  '𝙘' => 'c',
-  '𝙙' => 'd',
-  '𝙚' => 'e',
-  '𝙛' => 'f',
-  '𝙜' => 'g',
-  '𝙝' => 'h',
-  '𝙞' => 'i',
-  '𝙟' => 'j',
-  '𝙠' => 'k',
-  '𝙡' => 'l',
-  '𝙢' => 'm',
-  '𝙣' => 'n',
-  '𝙤' => 'o',
-  '𝙥' => 'p',
-  '𝙦' => 'q',
-  '𝙧' => 'r',
-  '𝙨' => 's',
-  '𝙩' => 't',
-  '𝙪' => 'u',
-  '𝙫' => 'v',
-  '𝙬' => 'w',
-  '𝙭' => 'x',
-  '𝙮' => 'y',
-  '𝙯' => 'z',
-  '𝙰' => 'A',
-  '𝙱' => 'B',
-  '𝙲' => 'C',
-  '𝙳' => 'D',
-  '𝙴' => 'E',
-  '𝙵' => 'F',
-  '𝙶' => 'G',
-  '𝙷' => 'H',
-  '𝙸' => 'I',
-  '𝙹' => 'J',
-  '𝙺' => 'K',
-  '𝙻' => 'L',
-  '𝙼' => 'M',
-  '𝙽' => 'N',
-  '𝙾' => 'O',
-  '𝙿' => 'P',
-  '𝚀' => 'Q',
-  '𝚁' => 'R',
-  '𝚂' => 'S',
-  '𝚃' => 'T',
-  '𝚄' => 'U',
-  '𝚅' => 'V',
-  '𝚆' => 'W',
-  '𝚇' => 'X',
-  '𝚈' => 'Y',
-  '𝚉' => 'Z',
-  '𝚊' => 'a',
-  '𝚋' => 'b',
-  '𝚌' => 'c',
-  '𝚍' => 'd',
-  '𝚎' => 'e',
-  '𝚏' => 'f',
-  '𝚐' => 'g',
-  '𝚑' => 'h',
-  '𝚒' => 'i',
-  '𝚓' => 'j',
-  '𝚔' => 'k',
-  '𝚕' => 'l',
-  '𝚖' => 'm',
-  '𝚗' => 'n',
-  '𝚘' => 'o',
-  '𝚙' => 'p',
-  '𝚚' => 'q',
-  '𝚛' => 'r',
-  '𝚜' => 's',
-  '𝚝' => 't',
-  '𝚞' => 'u',
-  '𝚟' => 'v',
-  '𝚠' => 'w',
-  '𝚡' => 'x',
-  '𝚢' => 'y',
-  '𝚣' => 'z',
-  '𝚤' => 'ı',
-  '𝚥' => 'ȷ',
-  '𝚨' => 'Α',
-  '𝚩' => 'Β',
-  '𝚪' => 'Γ',
-  '𝚫' => 'Δ',
-  '𝚬' => 'Ε',
-  '𝚭' => 'Ζ',
-  '𝚮' => 'Η',
-  '𝚯' => 'Θ',
-  '𝚰' => 'Ι',
-  '𝚱' => 'Κ',
-  '𝚲' => 'Λ',
-  '𝚳' => 'Μ',
-  '𝚴' => 'Ν',
-  '𝚵' => 'Ξ',
-  '𝚶' => 'Ο',
-  '𝚷' => 'Π',
-  '𝚸' => 'Ρ',
-  '𝚹' => 'Θ',
-  '𝚺' => 'Σ',
-  '𝚻' => 'Τ',
-  '𝚼' => 'Υ',
-  '𝚽' => 'Φ',
-  '𝚾' => 'Χ',
-  '𝚿' => 'Ψ',
-  '𝛀' => 'Ω',
-  '𝛁' => '∇',
-  '𝛂' => 'α',
-  '𝛃' => 'β',
-  '𝛄' => 'γ',
-  '𝛅' => 'δ',
-  '𝛆' => 'ε',
-  '𝛇' => 'ζ',
-  '𝛈' => 'η',
-  '𝛉' => 'θ',
-  '𝛊' => 'ι',
-  '𝛋' => 'κ',
-  '𝛌' => 'λ',
-  '𝛍' => 'μ',
-  '𝛎' => 'ν',
-  '𝛏' => 'ξ',
-  '𝛐' => 'ο',
-  '𝛑' => 'π',
-  '𝛒' => 'ρ',
-  '𝛓' => 'ς',
-  '𝛔' => 'σ',
-  '𝛕' => 'τ',
-  '𝛖' => 'υ',
-  '𝛗' => 'φ',
-  '𝛘' => 'χ',
-  '𝛙' => 'ψ',
-  '𝛚' => 'ω',
-  '𝛛' => '∂',
-  '𝛜' => 'ε',
-  '𝛝' => 'θ',
-  '𝛞' => 'κ',
-  '𝛟' => 'φ',
-  '𝛠' => 'ρ',
-  '𝛡' => 'π',
-  '𝛢' => 'Α',
-  '𝛣' => 'Β',
-  '𝛤' => 'Γ',
-  '𝛥' => 'Δ',
-  '𝛦' => 'Ε',
-  '𝛧' => 'Ζ',
-  '𝛨' => 'Η',
-  '𝛩' => 'Θ',
-  '𝛪' => 'Ι',
-  '𝛫' => 'Κ',
-  '𝛬' => 'Λ',
-  '𝛭' => 'Μ',
-  '𝛮' => 'Ν',
-  '𝛯' => 'Ξ',
-  '𝛰' => 'Ο',
-  '𝛱' => 'Π',
-  '𝛲' => 'Ρ',
-  '𝛳' => 'Θ',
-  '𝛴' => 'Σ',
-  '𝛵' => 'Τ',
-  '𝛶' => 'Υ',
-  '𝛷' => 'Φ',
-  '𝛸' => 'Χ',
-  '𝛹' => 'Ψ',
-  '𝛺' => 'Ω',
-  '𝛻' => '∇',
-  '𝛼' => 'α',
-  '𝛽' => 'β',
-  '𝛾' => 'γ',
-  '𝛿' => 'δ',
-  '𝜀' => 'ε',
-  '𝜁' => 'ζ',
-  '𝜂' => 'η',
-  '𝜃' => 'θ',
-  '𝜄' => 'ι',
-  '𝜅' => 'κ',
-  '𝜆' => 'λ',
-  '𝜇' => 'μ',
-  '𝜈' => 'ν',
-  '𝜉' => 'ξ',
-  '𝜊' => 'ο',
-  '𝜋' => 'π',
-  '𝜌' => 'ρ',
-  '𝜍' => 'ς',
-  '𝜎' => 'σ',
-  '𝜏' => 'τ',
-  '𝜐' => 'υ',
-  '𝜑' => 'φ',
-  '𝜒' => 'χ',
-  '𝜓' => 'ψ',
-  '𝜔' => 'ω',
-  '𝜕' => '∂',
-  '𝜖' => 'ε',
-  '𝜗' => 'θ',
-  '𝜘' => 'κ',
-  '𝜙' => 'φ',
-  '𝜚' => 'ρ',
-  '𝜛' => 'π',
-  '𝜜' => 'Α',
-  '𝜝' => 'Β',
-  '𝜞' => 'Γ',
-  '𝜟' => 'Δ',
-  '𝜠' => 'Ε',
-  '𝜡' => 'Ζ',
-  '𝜢' => 'Η',
-  '𝜣' => 'Θ',
-  '𝜤' => 'Ι',
-  '𝜥' => 'Κ',
-  '𝜦' => 'Λ',
-  '𝜧' => 'Μ',
-  '𝜨' => 'Ν',
-  '𝜩' => 'Ξ',
-  '𝜪' => 'Ο',
-  '𝜫' => 'Π',
-  '𝜬' => 'Ρ',
-  '𝜭' => 'Θ',
-  '𝜮' => 'Σ',
-  '𝜯' => 'Τ',
-  '𝜰' => 'Υ',
-  '𝜱' => 'Φ',
-  '𝜲' => 'Χ',
-  '𝜳' => 'Ψ',
-  '𝜴' => 'Ω',
-  '𝜵' => '∇',
-  '𝜶' => 'α',
-  '𝜷' => 'β',
-  '𝜸' => 'γ',
-  '𝜹' => 'δ',
-  '𝜺' => 'ε',
-  '𝜻' => 'ζ',
-  '𝜼' => 'η',
-  '𝜽' => 'θ',
-  '𝜾' => 'ι',
-  '𝜿' => 'κ',
-  '𝝀' => 'λ',
-  '𝝁' => 'μ',
-  '𝝂' => 'ν',
-  '𝝃' => 'ξ',
-  '𝝄' => 'ο',
-  '𝝅' => 'π',
-  '𝝆' => 'ρ',
-  '𝝇' => 'ς',
-  '𝝈' => 'σ',
-  '𝝉' => 'τ',
-  '𝝊' => 'υ',
-  '𝝋' => 'φ',
-  '𝝌' => 'χ',
-  '𝝍' => 'ψ',
-  '𝝎' => 'ω',
-  '𝝏' => '∂',
-  '𝝐' => 'ε',
-  '𝝑' => 'θ',
-  '𝝒' => 'κ',
-  '𝝓' => 'φ',
-  '𝝔' => 'ρ',
-  '𝝕' => 'π',
-  '𝝖' => 'Α',
-  '𝝗' => 'Β',
-  '𝝘' => 'Γ',
-  '𝝙' => 'Δ',
-  '𝝚' => 'Ε',
-  '𝝛' => 'Ζ',
-  '𝝜' => 'Η',
-  '𝝝' => 'Θ',
-  '𝝞' => 'Ι',
-  '𝝟' => 'Κ',
-  '𝝠' => 'Λ',
-  '𝝡' => 'Μ',
-  '𝝢' => 'Ν',
-  '𝝣' => 'Ξ',
-  '𝝤' => 'Ο',
-  '𝝥' => 'Π',
-  '𝝦' => 'Ρ',
-  '𝝧' => 'Θ',
-  '𝝨' => 'Σ',
-  '𝝩' => 'Τ',
-  '𝝪' => 'Υ',
-  '𝝫' => 'Φ',
-  '𝝬' => 'Χ',
-  '𝝭' => 'Ψ',
-  '𝝮' => 'Ω',
-  '𝝯' => '∇',
-  '𝝰' => 'α',
-  '𝝱' => 'β',
-  '𝝲' => 'γ',
-  '𝝳' => 'δ',
-  '𝝴' => 'ε',
-  '𝝵' => 'ζ',
-  '𝝶' => 'η',
-  '𝝷' => 'θ',
-  '𝝸' => 'ι',
-  '𝝹' => 'κ',
-  '𝝺' => 'λ',
-  '𝝻' => 'μ',
-  '𝝼' => 'ν',
-  '𝝽' => 'ξ',
-  '𝝾' => 'ο',
-  '𝝿' => 'π',
-  '𝞀' => 'ρ',
-  '𝞁' => 'ς',
-  '𝞂' => 'σ',
-  '𝞃' => 'τ',
-  '𝞄' => 'υ',
-  '𝞅' => 'φ',
-  '𝞆' => 'χ',
-  '𝞇' => 'ψ',
-  '𝞈' => 'ω',
-  '𝞉' => '∂',
-  '𝞊' => 'ε',
-  '𝞋' => 'θ',
-  '𝞌' => 'κ',
-  '𝞍' => 'φ',
-  '𝞎' => 'ρ',
-  '𝞏' => 'π',
-  '𝞐' => 'Α',
-  '𝞑' => 'Β',
-  '𝞒' => 'Γ',
-  '𝞓' => 'Δ',
-  '𝞔' => 'Ε',
-  '𝞕' => 'Ζ',
-  '𝞖' => 'Η',
-  '𝞗' => 'Θ',
-  '𝞘' => 'Ι',
-  '𝞙' => 'Κ',
-  '𝞚' => 'Λ',
-  '𝞛' => 'Μ',
-  '𝞜' => 'Ν',
-  '𝞝' => 'Ξ',
-  '𝞞' => 'Ο',
-  '𝞟' => 'Π',
-  '𝞠' => 'Ρ',
-  '𝞡' => 'Θ',
-  '𝞢' => 'Σ',
-  '𝞣' => 'Τ',
-  '𝞤' => 'Υ',
-  '𝞥' => 'Φ',
-  '𝞦' => 'Χ',
-  '𝞧' => 'Ψ',
-  '𝞨' => 'Ω',
-  '𝞩' => '∇',
-  '𝞪' => 'α',
-  '𝞫' => 'β',
-  '𝞬' => 'γ',
-  '𝞭' => 'δ',
-  '𝞮' => 'ε',
-  '𝞯' => 'ζ',
-  '𝞰' => 'η',
-  '𝞱' => 'θ',
-  '𝞲' => 'ι',
-  '𝞳' => 'κ',
-  '𝞴' => 'λ',
-  '𝞵' => 'μ',
-  '𝞶' => 'ν',
-  '𝞷' => 'ξ',
-  '𝞸' => 'ο',
-  '𝞹' => 'π',
-  '𝞺' => 'ρ',
-  '𝞻' => 'ς',
-  '𝞼' => 'σ',
-  '𝞽' => 'τ',
-  '𝞾' => 'υ',
-  '𝞿' => 'φ',
-  '𝟀' => 'χ',
-  '𝟁' => 'ψ',
-  '𝟂' => 'ω',
-  '𝟃' => '∂',
-  '𝟄' => 'ε',
-  '𝟅' => 'θ',
-  '𝟆' => 'κ',
-  '𝟇' => 'φ',
-  '𝟈' => 'ρ',
-  '𝟉' => 'π',
-  '𝟊' => 'Ϝ',
-  '𝟋' => 'ϝ',
-  '𝟎' => '0',
-  '𝟏' => '1',
-  '𝟐' => '2',
-  '𝟑' => '3',
-  '𝟒' => '4',
-  '𝟓' => '5',
-  '𝟔' => '6',
-  '𝟕' => '7',
-  '𝟖' => '8',
-  '𝟗' => '9',
-  '𝟘' => '0',
-  '𝟙' => '1',
-  '𝟚' => '2',
-  '𝟛' => '3',
-  '𝟜' => '4',
-  '𝟝' => '5',
-  '𝟞' => '6',
-  '𝟟' => '7',
-  '𝟠' => '8',
-  '𝟡' => '9',
-  '𝟢' => '0',
-  '𝟣' => '1',
-  '𝟤' => '2',
-  '𝟥' => '3',
-  '𝟦' => '4',
-  '𝟧' => '5',
-  '𝟨' => '6',
-  '𝟩' => '7',
-  '𝟪' => '8',
-  '𝟫' => '9',
-  '𝟬' => '0',
-  '𝟭' => '1',
-  '𝟮' => '2',
-  '𝟯' => '3',
-  '𝟰' => '4',
-  '𝟱' => '5',
-  '𝟲' => '6',
-  '𝟳' => '7',
-  '𝟴' => '8',
-  '𝟵' => '9',
-  '𝟶' => '0',
-  '𝟷' => '1',
-  '𝟸' => '2',
-  '𝟹' => '3',
-  '𝟺' => '4',
-  '𝟻' => '5',
-  '𝟼' => '6',
-  '𝟽' => '7',
-  '𝟾' => '8',
-  '𝟿' => '9',
-  '𞸀' => 'ا',
-  '𞸁' => 'ب',
-  '𞸂' => 'ج',
-  '𞸃' => 'د',
-  '𞸅' => 'و',
-  '𞸆' => 'ز',
-  '𞸇' => 'ح',
-  '𞸈' => 'ط',
-  '𞸉' => 'ي',
-  '𞸊' => 'ك',
-  '𞸋' => 'ل',
-  '𞸌' => 'م',
-  '𞸍' => 'ن',
-  '𞸎' => 'س',
-  '𞸏' => 'ع',
-  '𞸐' => 'ف',
-  '𞸑' => 'ص',
-  '𞸒' => 'ق',
-  '𞸓' => 'ر',
-  '𞸔' => 'ش',
-  '𞸕' => 'ت',
-  '𞸖' => 'ث',
-  '𞸗' => 'خ',
-  '𞸘' => 'ذ',
-  '𞸙' => 'ض',
-  '𞸚' => 'ظ',
-  '𞸛' => 'غ',
-  '𞸜' => 'ٮ',
-  '𞸝' => 'ں',
-  '𞸞' => 'ڡ',
-  '𞸟' => 'ٯ',
-  '𞸡' => 'ب',
-  '𞸢' => 'ج',
-  '𞸤' => 'ه',
-  '𞸧' => 'ح',
-  '𞸩' => 'ي',
-  '𞸪' => 'ك',
-  '𞸫' => 'ل',
-  '𞸬' => 'م',
-  '𞸭' => 'ن',
-  '𞸮' => 'س',
-  '𞸯' => 'ع',
-  '𞸰' => 'ف',
-  '𞸱' => 'ص',
-  '𞸲' => 'ق',
-  '𞸴' => 'ش',
-  '𞸵' => 'ت',
-  '𞸶' => 'ث',
-  '𞸷' => 'خ',
-  '𞸹' => 'ض',
-  '𞸻' => 'غ',
-  '𞹂' => 'ج',
-  '𞹇' => 'ح',
-  '𞹉' => 'ي',
-  '𞹋' => 'ل',
-  '𞹍' => 'ن',
-  '𞹎' => 'س',
-  '𞹏' => 'ع',
-  '𞹑' => 'ص',
-  'ðž¹’' => 'Ù‚',
-  'ðž¹”' => 'Ø´',
-  'ðž¹—' => 'Ø®',
-  '𞹙' => 'ض',
-  '𞹛' => 'غ',
-  '𞹝' => 'ں',
-  '𞹟' => 'ٯ',
-  '𞹡' => 'ب',
-  '𞹢' => 'ج',
-  '𞹤' => 'ه',
-  '𞹧' => 'ح',
-  '𞹨' => 'ط',
-  '𞹩' => 'ي',
-  '𞹪' => 'ك',
-  '𞹬' => 'م',
-  'ðž¹­' => 'Ù†',
-  '𞹮' => 'س',
-  '𞹯' => 'ع',
-  '𞹰' => 'ف',
-  '𞹱' => 'ص',
-  'ðž¹²' => 'Ù‚',
-  'ðž¹´' => 'Ø´',
-  '𞹵' => 'ت',
-  '𞹶' => 'ث',
-  'ðž¹·' => 'Ø®',
-  '𞹹' => 'ض',
-  '𞹺' => 'ظ',
-  '𞹻' => 'غ',
-  'ðž¹¼' => 'Ù®',
-  'ðž¹¾' => 'Ú¡',
-  '𞺀' => 'ا',
-  '𞺁' => 'ب',
-  '𞺂' => 'ج',
-  '𞺃' => 'د',
-  '𞺄' => 'ه',
-  '𞺅' => 'و',
-  '𞺆' => 'ز',
-  '𞺇' => 'ح',
-  '𞺈' => 'ط',
-  '𞺉' => 'ي',
-  '𞺋' => 'ل',
-  '𞺌' => 'م',
-  '𞺍' => 'ن',
-  '𞺎' => 'س',
-  '𞺏' => 'ع',
-  '𞺐' => 'ف',
-  '𞺑' => 'ص',
-  '𞺒' => 'ق',
-  '𞺓' => 'ر',
-  '𞺔' => 'ش',
-  '𞺕' => 'ت',
-  '𞺖' => 'ث',
-  '𞺗' => 'خ',
-  '𞺘' => 'ذ',
-  '𞺙' => 'ض',
-  '𞺚' => 'ظ',
-  '𞺛' => 'غ',
-  '𞺡' => 'ب',
-  '𞺢' => 'ج',
-  '𞺣' => 'د',
-  '𞺥' => 'و',
-  '𞺦' => 'ز',
-  '𞺧' => 'ح',
-  '𞺨' => 'ط',
-  '𞺩' => 'ي',
-  '𞺫' => 'ل',
-  '𞺬' => 'م',
-  '𞺭' => 'ن',
-  '𞺮' => 'س',
-  '𞺯' => 'ع',
-  '𞺰' => 'ف',
-  '𞺱' => 'ص',
-  '𞺲' => 'ق',
-  '𞺳' => 'ر',
-  '𞺴' => 'ش',
-  '𞺵' => 'ت',
-  '𞺶' => 'ث',
-  '𞺷' => 'خ',
-  '𞺸' => 'ذ',
-  '𞺹' => 'ض',
-  '𞺺' => 'ظ',
-  '𞺻' => 'غ',
-  '🄀' => '0.',
-  '🄁' => '0,',
-  '🄂' => '1,',
-  '🄃' => '2,',
-  '🄄' => '3,',
-  '🄅' => '4,',
-  '🄆' => '5,',
-  '🄇' => '6,',
-  '🄈' => '7,',
-  '🄉' => '8,',
-  '🄊' => '9,',
-  '🄐' => '(A)',
-  '🄑' => '(B)',
-  '🄒' => '(C)',
-  '🄓' => '(D)',
-  '🄔' => '(E)',
-  '🄕' => '(F)',
-  '🄖' => '(G)',
-  '🄗' => '(H)',
-  '🄘' => '(I)',
-  '🄙' => '(J)',
-  '🄚' => '(K)',
-  '🄛' => '(L)',
-  '🄜' => '(M)',
-  '🄝' => '(N)',
-  '🄞' => '(O)',
-  '🄟' => '(P)',
-  '🄠' => '(Q)',
-  '🄡' => '(R)',
-  '🄢' => '(S)',
-  '🄣' => '(T)',
-  '🄤' => '(U)',
-  '🄥' => '(V)',
-  '🄦' => '(W)',
-  '🄧' => '(X)',
-  '🄨' => '(Y)',
-  '🄩' => '(Z)',
-  '🄪' => '〔S〕',
-  '🄫' => 'C',
-  '🄬' => 'R',
-  '🄭' => 'CD',
-  '🄮' => 'WZ',
-  '🄰' => 'A',
-  '🄱' => 'B',
-  '🄲' => 'C',
-  '🄳' => 'D',
-  '🄴' => 'E',
-  '🄵' => 'F',
-  '🄶' => 'G',
-  '🄷' => 'H',
-  '🄸' => 'I',
-  '🄹' => 'J',
-  '🄺' => 'K',
-  '🄻' => 'L',
-  '🄼' => 'M',
-  '🄽' => 'N',
-  '🄾' => 'O',
-  '🄿' => 'P',
-  '🅀' => 'Q',
-  '🅁' => 'R',
-  '🅂' => 'S',
-  '🅃' => 'T',
-  '🅄' => 'U',
-  '🅅' => 'V',
-  '🅆' => 'W',
-  '🅇' => 'X',
-  '🅈' => 'Y',
-  '🅉' => 'Z',
-  '🅊' => 'HV',
-  '🅋' => 'MV',
-  '🅌' => 'SD',
-  '🅍' => 'SS',
-  '🅎' => 'PPV',
-  '🅏' => 'WC',
-  '🅪' => 'MC',
-  '🅫' => 'MD',
-  '🅬' => 'MR',
-  '🆐' => 'DJ',
-  '🈀' => 'ほか',
-  '🈁' => 'ココ',
-  '🈂' => 'サ',
-  '🈐' => '手',
-  '🈑' => '字',
-  '🈒' => '双',
-  '🈓' => 'デ',
-  '🈔' => '二',
-  '🈕' => '多',
-  '🈖' => '解',
-  '🈗' => '天',
-  '🈘' => '交',
-  '🈙' => '映',
-  '🈚' => '無',
-  '🈛' => '料',
-  '🈜' => '前',
-  '🈝' => '後',
-  '🈞' => '再',
-  '🈟' => '新',
-  '🈠' => '初',
-  '🈡' => '終',
-  '🈢' => '生',
-  '🈣' => '販',
-  '🈤' => '声',
-  '🈥' => '吹',
-  '🈦' => '演',
-  '🈧' => '投',
-  '🈨' => '捕',
-  '🈩' => '一',
-  '🈪' => '三',
-  '🈫' => '遊',
-  '🈬' => '左',
-  '🈭' => '中',
-  '🈮' => '右',
-  '🈯' => '指',
-  '🈰' => '走',
-  '🈱' => '打',
-  '🈲' => '禁',
-  '🈳' => '空',
-  '🈴' => '合',
-  '🈵' => '満',
-  '🈶' => '有',
-  '🈷' => '月',
-  '🈸' => '申',
-  '🈹' => '割',
-  '🈺' => '営',
-  '🈻' => '配',
-  '🉀' => '〔本〕',
-  '🉁' => '〔三〕',
-  '🉂' => '〔二〕',
-  '🉃' => '〔安〕',
-  '🉄' => '〔点〕',
-  '🉅' => '〔打〕',
-  '🉆' => '〔盗〕',
-  '🉇' => '〔勝〕',
-  '🉈' => '〔敗〕',
-  '🉐' => '得',
-  '🉑' => '可',
-  '🯰' => '0',
-  '🯱' => '1',
-  '🯲' => '2',
-  '🯳' => '3',
-  '🯴' => '4',
-  '🯵' => '5',
-  '🯶' => '6',
-  '🯷' => '7',
-  '🯸' => '8',
-  '🯹' => '9',
-);
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/bootstrap.php b/civicrm/vendor/symfony/polyfill-intl-normalizer/bootstrap.php
deleted file mode 100644
index 3608e5c05d6d2100fca66e7fa521c4d61b42eada..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/bootstrap.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Intl\Normalizer as p;
-
-if (\PHP_VERSION_ID >= 80000) {
-    return require __DIR__.'/bootstrap80.php';
-}
-
-if (!function_exists('normalizer_is_normalized')) {
-    function normalizer_is_normalized($string, $form = p\Normalizer::FORM_C) { return p\Normalizer::isNormalized($string, $form); }
-}
-if (!function_exists('normalizer_normalize')) {
-    function normalizer_normalize($string, $form = p\Normalizer::FORM_C) { return p\Normalizer::normalize($string, $form); }
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php b/civicrm/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php
deleted file mode 100644
index e36d1a9477003b3c952e9f45219977bcdf1ef48f..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Symfony\Polyfill\Intl\Normalizer as p;
-
-if (!function_exists('normalizer_is_normalized')) {
-    function normalizer_is_normalized(?string $string, ?int $form = p\Normalizer::FORM_C): bool { return p\Normalizer::isNormalized((string) $string, (int) $form); }
-}
-if (!function_exists('normalizer_normalize')) {
-    function normalizer_normalize(?string $string, ?int $form = p\Normalizer::FORM_C): string|false { return p\Normalizer::normalize((string) $string, (int) $form); }
-}
diff --git a/civicrm/vendor/symfony/polyfill-intl-normalizer/composer.json b/civicrm/vendor/symfony/polyfill-intl-normalizer/composer.json
deleted file mode 100644
index 65f72d645d8449156bb932a42bd05495072de81d..0000000000000000000000000000000000000000
--- a/civicrm/vendor/symfony/polyfill-intl-normalizer/composer.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-    "name": "symfony/polyfill-intl-normalizer",
-    "type": "library",
-    "description": "Symfony polyfill for intl's Normalizer class and related functions",
-    "keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "normalizer"],
-    "homepage": "https://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Nicolas Grekas",
-            "email": "p@tchwork.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "https://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=7.1"
-    },
-    "autoload": {
-        "psr-4": { "Symfony\\Polyfill\\Intl\\Normalizer\\": "" },
-        "files": [ "bootstrap.php" ],
-        "classmap": [ "Resources/stubs" ]
-    },
-    "suggest": {
-        "ext-intl": "For best performance"
-    },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-main": "1.27-dev"
-        },
-        "thanks": {
-            "name": "symfony/polyfill",
-            "url": "https://github.com/symfony/polyfill"
-        }
-    }
-}
diff --git a/civicrm/xml/schema/Contribute/Premium.xml b/civicrm/xml/schema/Contribute/Premium.xml
index 9a783c324e93db03cb1e8f0f26245c35f2f4cb72..c9f4dc0837cbe10de0a994b25a19837b01485596 100644
--- a/civicrm/xml/schema/Contribute/Premium.xml
+++ b/civicrm/xml/schema/Contribute/Premium.xml
@@ -29,6 +29,9 @@
     <length>64</length>
     <required>true</required>
     <comment>Joins these premium settings to another object. Always civicrm_contribution_page for now.</comment>
+    <pseudoconstant>
+      <callback>CRM_Contribute_BAO_Premium::entityTables</callback>
+    </pseudoconstant>
     <add>1.4</add>
   </field>
   <field>
diff --git a/civicrm/xml/schema/Contribute/Product.xml b/civicrm/xml/schema/Contribute/Product.xml
index 16ff28127dcedf68401dfc17b2b1fc63f64d715f..237453035ba16139cf08c39b5ca0a21217a8bfa3 100644
--- a/civicrm/xml/schema/Contribute/Product.xml
+++ b/civicrm/xml/schema/Contribute/Product.xml
@@ -9,6 +9,12 @@
   <log>true</log>
   <component>CiviContribute</component>
   <labelField>name</labelField>
+  <paths>
+    <add>civicrm/admin/contribute/managePremiums/edit?action=add&amp;reset=1</add>
+    <update>civicrm/admin/contribute/managePremiums/edit?action=update&amp;id=[id]&amp;reset=1</update>
+    <delete>civicrm/admin/contribute/managePremiums/edit?action=delete&amp;id=[id]&amp;reset=1</delete>
+    <browse>civicrm/admin/contribute/managePremiums/</browse>
+  </paths>
   <field>
     <name>id</name>
     <title>Product ID</title>
diff --git a/civicrm/xml/schema/Core/MessageTemplate.xml b/civicrm/xml/schema/Core/MessageTemplate.xml
index ea6a8842eac0b984adf0165f563ecb3fc058eb77..384f46a8a92419aac4da9e1e96dd4c03d641f021 100644
--- a/civicrm/xml/schema/Core/MessageTemplate.xml
+++ b/civicrm/xml/schema/Core/MessageTemplate.xml
@@ -6,6 +6,9 @@
   <name>civicrm_msg_template</name>
   <comment>Users will need a way to save and retrieve templates with tokens for use in recurring email communication tasks</comment>
   <add>1.6</add>
+  <title>Message Template</title>
+  <titlePlural>Message Templates</titlePlural>
+  <icon>fa-newspaper-o</icon>
   <labelField>msg_title</labelField>
   <paths>
     <add>civicrm/admin/messageTemplates/add?action=add&amp;reset=1</add>
diff --git a/civicrm/xml/schema/Core/PreferencesDate.xml b/civicrm/xml/schema/Core/PreferencesDate.xml
index 6b6439e563e20fde978836b02f852b17fcc7c391..6c1f452098831be6237427df0c012e77a453bad6 100644
--- a/civicrm/xml/schema/Core/PreferencesDate.xml
+++ b/civicrm/xml/schema/Core/PreferencesDate.xml
@@ -9,7 +9,9 @@
   <log>true</log>
   <title>Date Preference</title>
   <paths>
-    <update>civicrm/admin/setting/preferences/date?reset=1&amp;action=update&amp;id=[id]</update>
+    <add>civicrm/admin/setting/preferences/date/edit?reset=1&amp;action=add</add>
+    <browse>civicrm/admin/setting/preferences/date?reset=1</browse>
+    <update>civicrm/admin/setting/preferences/date/edit?reset=1&amp;action=update&amp;id=[id]</update>
   </paths>
   <field>
     <name>id</name>
diff --git a/civicrm/xml/schema/Core/UFMatch.xml b/civicrm/xml/schema/Core/UFMatch.xml
index 6133aab373d87af80a06d389e66ab32daff24784..ef10a14b7561a3bdf795b01d9b792312b6eea069 100644
--- a/civicrm/xml/schema/Core/UFMatch.xml
+++ b/civicrm/xml/schema/Core/UFMatch.xml
@@ -58,6 +58,12 @@
     <fieldName>uf_id</fieldName>
     <add>3.3</add>
   </index>
+  <index>
+    <name>UI_uf_match_uf_id_domain_id</name>
+    <fieldName>uf_id</fieldName>
+    <fieldName>domain_id</fieldName>
+    <add>5.69</add>
+  </index>
   <field>
     <name>uf_name</name>
     <title>CMS Unique Identifier</title>
diff --git a/civicrm/xml/schema/Event/Event.xml b/civicrm/xml/schema/Event/Event.xml
index 194c97ecc8176d6932041e7af5f95a65755c4fc3..f2dfe5141c5ba5c416c27cf51272ca7d36f0f301 100644
--- a/civicrm/xml/schema/Event/Event.xml
+++ b/civicrm/xml/schema/Event/Event.xml
@@ -929,4 +929,16 @@
       <type>CheckBox</type>
     </html>
   </field>
+  <field>
+    <name>is_show_calendar_links</name>
+    <title>Are calendar links shown?</title>
+    <type>boolean</type>
+    <required>true</required>
+    <default>1</default>
+    <comment>If true then calendar links are shown for this event.</comment>
+    <add>5.68</add>
+    <html>
+      <type>CheckBox</type>
+    </html>
+  </field>
 </table>
diff --git a/civicrm/xml/schema/Mailing/Mailing.xml b/civicrm/xml/schema/Mailing/Mailing.xml
index 740e64ae15577f2b45fc456117eec8141307b5f7..acd747466a252b49ddbf25080feedebd12c1d92b 100644
--- a/civicrm/xml/schema/Mailing/Mailing.xml
+++ b/civicrm/xml/schema/Mailing/Mailing.xml
@@ -16,6 +16,7 @@
     <copy>civicrm/mailing/send?mid=[id]</copy>
     <view>civicrm/mailing/report?mid=[id]&amp;reset=1</view>
     <preview>civicrm/mailing/view?id=[id]&amp;reset=1</preview>
+    <delete>civicrm/mailing/browse?action=delete&amp;mid=[id]&amp;reset=1</delete>
   </paths>
   <field>
     <name>id</name>
@@ -152,6 +153,7 @@
     <length>128</length>
     <comment>Mailing Name.</comment>
     <html>
+      <label>Name</label>
       <type>Text</type>
     </html>
   </field>
@@ -176,6 +178,7 @@
     <length>128</length>
     <comment>From Header of mailing</comment>
     <html>
+      <label>From Name</label>
       <type>Text</type>
     </html>
   </field>
@@ -186,6 +189,7 @@
     <length>128</length>
     <comment>From Email of mailing</comment>
     <html>
+      <label>From Email</label>
       <type>Text</type>
     </html>
   </field>
@@ -349,6 +353,7 @@
     <comment>Date and time this mailing was created.</comment>
     <add>3.0</add>
     <html>
+      <label>Created Date</label>
       <type>Select Date</type>
       <formatType>activityDateTime</formatType>
     </html>
@@ -363,6 +368,7 @@
    <default>CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP</default>
     <html>
       <label>Modified Date</label>
+      <type>Select Date</type>
     </html>
     <readonly>true</readonly>
    <add>4.7</add>
@@ -391,6 +397,7 @@
     <comment>Date and time this mailing was scheduled.</comment>
     <add>3.3</add>
     <html>
+      <label>Scheduled Date</label>
       <type>Select Date</type>
       <formatType>activityDateTime</formatType>
     </html>
@@ -470,6 +477,7 @@
     </pseudoconstant>
     <add>3.3</add>
     <html>
+      <label>Visibility</label>
       <type>Select</type>
     </html>
   </field>
diff --git a/civicrm/xml/schema/Mailing/MailingComponent.xml b/civicrm/xml/schema/Mailing/MailingComponent.xml
index 7ef2d0e0c8ec763db1668ec6a5e58e826432b43c..a35b61d07ca6fb17acf4cbfc457a132299474a30 100644
--- a/civicrm/xml/schema/Mailing/MailingComponent.xml
+++ b/civicrm/xml/schema/Mailing/MailingComponent.xml
@@ -7,8 +7,9 @@
   <comment>Stores information about the mailing components (header/footer).</comment>
   <component>CiviMail</component>
   <paths>
-    <add>civicrm/admin/component?action=add&amp;reset=1</add>
-    <update>civicrm/admin/component?action=update&amp;id=[id]&amp;reset=1</update>
+    <add>civicrm/admin/component/edit?action=add&amp;reset=1</add>
+    <update>civicrm/admin/component/edit?action=update&amp;id=[id]&amp;reset=1</update>
+    <browse>civicrm/admin/component?action=browse&amp;id=[id]&amp;reset=1</browse>
   </paths>
   <field>
     <name>id</name>
diff --git a/civicrm/xml/schema/Mailing/MailingJob.xml b/civicrm/xml/schema/Mailing/MailingJob.xml
index 857958969841b28413406c78dd29ce11d2963c16..b28ae05cd59c1c91aaffc4efc9758cee120d04e3 100644
--- a/civicrm/xml/schema/Mailing/MailingJob.xml
+++ b/civicrm/xml/schema/Mailing/MailingJob.xml
@@ -31,6 +31,7 @@
     <comment>The ID of the mailing this Job will send.</comment>
     <html>
       <label>Mailing</label>
+      <type>EntityRef</type>
     </html>
   </field>
   <foreignKey>
@@ -88,6 +89,7 @@
       <callback>CRM_Core_SelectValues::getMailingJobStatus</callback>
     </pseudoconstant>
     <html>
+      <label>Status</label>
       <type>Select</type>
     </html>
   </field>
@@ -98,6 +100,10 @@
     <default>0</default>
     <required>true</required>
     <comment>Is this job for a test mail?</comment>
+    <html>
+      <label>Test Mailing</label>
+      <type>CheckBox</type>
+    </html>
     <add>1.9</add>
   </field>
   <field>
@@ -116,6 +122,7 @@
     <default>NULL</default>
     <html>
       <label>Parent</label>
+      <type>EntityRef</type>
     </html>
     <add>3.3</add>
   </field>
@@ -138,6 +145,10 @@
     <title>Mailing Job Limit</title>
     <type>int</type>
     <comment>Queue size limit for each child job</comment>
+    <html>
+      <label>Batch Limit</label>
+      <type>Number</type>
+    </html>
     <default>0</default>
     <add>3.3</add>
   </field>
diff --git a/civicrm/xml/templates/civicrm_sample.tpl b/civicrm/xml/templates/civicrm_sample.tpl
index 412e770b51dffa83aa4de8279010771061ea5dc4..f228abca774270f3d6767b96ea04b654552facb5 100644
--- a/civicrm/xml/templates/civicrm_sample.tpl
+++ b/civicrm/xml/templates/civicrm_sample.tpl
@@ -21,7 +21,7 @@ SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE name = 'help_suppor
 
 INSERT INTO `civicrm_price_field` (`price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `visibility_id`)
 VALUES ( @priceSetId, 'contribution_amount', 'Contribution Amount', 'Radio', 0, 2, 1, 1, 1, 0, 1),
-( @priceSetId, 'other_amount', 'Other Amount', 'Text', 0, 3, 0, 1, 1, 0, 1);
+( @priceSetId, 'other_amount', 'Additional Amount', 'Text', 0, 3, 0, 1, 1, 0, 1);
 
 INSERT INTO `civicrm_price_set_entity` (`entity_table`,`entity_id`,`price_set_id`)
          VALUES ('civicrm_contribution_page', 1, @priceSetId);
@@ -75,8 +75,7 @@ VALUES
 
 INSERT INTO civicrm_pledge_block ( entity_table, entity_id, pledge_frequency_unit, is_pledge_interval, max_reminders, initial_reminder_day, additional_reminder_day)
 VALUES
-    ('civicrm_contribution_page', 3, 'weekmonthyear', 1, 1, 5, 5),
-    ('civicrm_contribution_page', 1, 'weekmonthyear', 0, 2, 5, 5);
+    ('civicrm_contribution_page', 3, 'weekmonthyear', 1, 1, 5, 5);
 
 INSERT INTO civicrm_premiums
     VALUES (1, 'civicrm_contribution_page', 1, 1, 'Thank-you Gifts', 'We appreciate your support and invite you to choose from the exciting collection of thank-you gifts below. Minimum contribution amounts for each selection are included in the descriptions. (NOTE: These gifts are shown as examples only. No gifts will be sent to donors.)', 'premiums@example.org', NULL, 1, 'No thank-you', 1);
diff --git a/civicrm/xml/templates/civicrm_state_province.tpl b/civicrm/xml/templates/civicrm_state_province.tpl
index 0246455a8cae3785b89165f524161001ccf5b437..dd78965fb34f7a4c3d90cbe78089bcb2137a1e0c 100644
--- a/civicrm/xml/templates/civicrm_state_province.tpl
+++ b/civicrm/xml/templates/civicrm_state_province.tpl
@@ -11,4171 +11,4082 @@
 --
 /*!40101 SET NAMES utf8mb4 */;
 
-INSERT INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES
-(1000, 1228, "AL", "Alabama"),
-(1001, 1228, "AK", "Alaska"),
-(1002, 1228, "AZ", "Arizona"),
-(1003, 1228, "AR", "Arkansas"),
-(1004, 1228, "CA", "California"),
-(1005, 1228, "CO", "Colorado"),
-(1006, 1228, "CT", "Connecticut"),
-(1007, 1228, "DE", "Delaware"),
-(1008, 1228, "FL", "Florida"),
-(1009, 1228, "GA", "Georgia"),
-(1010, 1228, "HI", "Hawaii"),
-(1011, 1228, "ID", "Idaho"),
-(1012, 1228, "IL", "Illinois"),
-(1013, 1228, "IN", "Indiana"),
-(1014, 1228, "IA", "Iowa"),
-(1015, 1228, "KS", "Kansas"),
-(1016, 1228, "KY", "Kentucky"),
-(1017, 1228, "LA", "Louisiana"),
-(1018, 1228, "ME", "Maine"),
-(1019, 1228, "MD", "Maryland"),
-(1020, 1228, "MA", "Massachusetts"),
-(1021, 1228, "MI", "Michigan"),
-(1022, 1228, "MN", "Minnesota"),
-(1023, 1228, "MS", "Mississippi"),
-(1024, 1228, "MO", "Missouri"),
-(1025, 1228, "MT", "Montana"),
-(1026, 1228, "NE", "Nebraska"),
-(1027, 1228, "NV", "Nevada"),
-(1028, 1228, "NH", "New Hampshire"),
-(1029, 1228, "NJ", "New Jersey"),
-(1030, 1228, "NM", "New Mexico"),
-(1031, 1228, "NY", "New York"),
-(1032, 1228, "NC", "North Carolina"),
-(1033, 1228, "ND", "North Dakota"),
-(1034, 1228, "OH", "Ohio"),
-(1035, 1228, "OK", "Oklahoma"),
-(1036, 1228, "OR", "Oregon"),
-(1037, 1228, "PA", "Pennsylvania"),
-(1038, 1228, "RI", "Rhode Island"),
-(1039, 1228, "SC", "South Carolina"),
-(1040, 1228, "SD", "South Dakota"),
-(1041, 1228, "TN", "Tennessee"),
-(1042, 1228, "TX", "Texas"),
-(1043, 1228, "UT", "Utah"),
-(1044, 1228, "VT", "Vermont"),
-(1045, 1228, "VA", "Virginia"),
-(1046, 1228, "WA", "Washington"),
-(1047, 1228, "WV", "West Virginia"),
-(1048, 1228, "WI", "Wisconsin"),
-(1049, 1228, "WY", "Wyoming"),
-(1050, 1228, "DC", "District of Columbia"),
-(1052, 1228, "AS", "American Samoa"),
-(1053, 1228, "GU", "Guam"),
-(1055, 1228, "MP", "Northern Mariana Islands"),
-(1056, 1228, "PR", "Puerto Rico"),
-(1057, 1228, "VI", "Virgin Islands"),
-(1058, 1228, "UM", "United States Minor Outlying Islands"),
-(1059, 1228, "AE", "Armed Forces Europe"),
-(1060, 1228, "AA", "Armed Forces Americas"),
-(1061, 1228, "AP", "Armed Forces Pacific"),
-(1100, 1039, "AB", "Alberta"),
-(1101, 1039, "BC", "British Columbia"),
-(1102, 1039, "MB", "Manitoba"),
-(1103, 1039, "NB", "New Brunswick"),
-(1104, 1039, "NL", "Newfoundland and Labrador"),
-(1105, 1039, "NT", "Northwest Territories"),
-(1106, 1039, "NS", "Nova Scotia"),
-(1107, 1039, "NU", "Nunavut"),
-(1108, 1039, "ON", "Ontario"),
-(1109, 1039, "PE", "Prince Edward Island"),
-(1110, 1039, "QC", "Quebec"),
-(1111, 1039, "SK", "Saskatchewan"),
-(1112, 1039, "YT", "Yukon Territory"),
-(1200, 1101, "MH", "Maharashtra"),
-(1201, 1101, "KA", "Karnataka"),
-(1202, 1101, "AP", "Andhra Pradesh"),
-(1203, 1101, "AR", "Arunachal Pradesh"),
-(1204, 1101, "AS", "Assam"),
-(1205, 1101, "BR", "Bihar"),
-(1206, 1101, "CG", "Chhattisgarh"),
-(1207, 1101, "GA", "Goa"),
-(1208, 1101, "GJ", "Gujarat"),
-(1209, 1101, "HR", "Haryana"),
-(1210, 1101, "HP", "Himachal Pradesh"),
-(1211, 1101, "JK", "Jammu and Kashmir"),
-(1212, 1101, "JH", "Jharkhand"),
-(1213, 1101, "KL", "Kerala"),
-(1214, 1101, "MP", "Madhya Pradesh"),
-(1215, 1101, "MN", "Manipur"),
-(1216, 1101, "ML", "Meghalaya"),
-(1217, 1101, "MZ", "Mizoram"),
-(1218, 1101, "NL", "Nagaland"),
-(1219, 1101, "OR", "Orissa"),
-(1220, 1101, "PB", "Punjab"),
-(1221, 1101, "RJ", "Rajasthan"),
-(1222, 1101, "SK", "Sikkim"),
-(1223, 1101, "TN", "Tamil Nadu"),
-(1224, 1101, "TR", "Tripura"),
-(1225, 1101, "UT", "Uttarakhand"),
-(1226, 1101, "UP", "Uttar Pradesh"),
-(1227, 1101, "WB", "West Bengal"),
-(1228, 1101, "AN", "Andaman and Nicobar Islands"),
-(1231, 1101, "DL", "Delhi"),
-(1232, 1101, "LD", "Lakshadweep"),
-(1233, 1101, "PY", "Pondicherry"),
+-- For historical reasons we start the sequence at 1000 as an attempt to help
+-- with tests and with legacy third-party code that may have hardcoded IDs.
+-- This may change in the future.
+ALTER TABLE civicrm_state_province AUTO_INCREMENT=1000;
+
+-- Note to developers: records are somewhat sorted by country ID
+-- Insert changes directly in the list (keeping the sort), not at the end
+-- All changes must also have a corresponding upgrade statement in
+-- CRM/Upgrade/Incremental/sql/5.xx.alpha1.mysql.tpl
+
+INSERT INTO civicrm_state_province (country_id, abbreviation, name) VALUES
+(1228, "AL", "Alabama"),
+(1228, "AK", "Alaska"),
+(1228, "AZ", "Arizona"),
+(1228, "AR", "Arkansas"),
+(1228, "CA", "California"),
+(1228, "CO", "Colorado"),
+(1228, "CT", "Connecticut"),
+(1228, "DE", "Delaware"),
+(1228, "FL", "Florida"),
+(1228, "GA", "Georgia"),
+(1228, "HI", "Hawaii"),
+(1228, "ID", "Idaho"),
+(1228, "IL", "Illinois"),
+(1228, "IN", "Indiana"),
+(1228, "IA", "Iowa"),
+(1228, "KS", "Kansas"),
+(1228, "KY", "Kentucky"),
+(1228, "LA", "Louisiana"),
+(1228, "ME", "Maine"),
+(1228, "MD", "Maryland"),
+(1228, "MA", "Massachusetts"),
+(1228, "MI", "Michigan"),
+(1228, "MN", "Minnesota"),
+(1228, "MS", "Mississippi"),
+(1228, "MO", "Missouri"),
+(1228, "MT", "Montana"),
+(1228, "NE", "Nebraska"),
+(1228, "NV", "Nevada"),
+(1228, "NH", "New Hampshire"),
+(1228, "NJ", "New Jersey"),
+(1228, "NM", "New Mexico"),
+(1228, "NY", "New York"),
+(1228, "NC", "North Carolina"),
+(1228, "ND", "North Dakota"),
+(1228, "OH", "Ohio"),
+(1228, "OK", "Oklahoma"),
+(1228, "OR", "Oregon"),
+(1228, "PA", "Pennsylvania"),
+(1228, "RI", "Rhode Island"),
+(1228, "SC", "South Carolina"),
+(1228, "SD", "South Dakota"),
+(1228, "TN", "Tennessee"),
+(1228, "TX", "Texas"),
+(1228, "UT", "Utah"),
+(1228, "VT", "Vermont"),
+(1228, "VA", "Virginia"),
+(1228, "WA", "Washington"),
+(1228, "WV", "West Virginia"),
+(1228, "WI", "Wisconsin"),
+(1228, "WY", "Wyoming"),
+(1228, "DC", "District of Columbia"),
+(1228, "AS", "American Samoa"),
+(1228, "GU", "Guam"),
+(1228, "MP", "Northern Mariana Islands"),
+(1228, "PR", "Puerto Rico"),
+(1228, "VI", "Virgin Islands"),
+(1228, "UM", "United States Minor Outlying Islands"),
+(1228, "AE", "Armed Forces Europe"),
+(1228, "AA", "Armed Forces Americas"),
+(1228, "AP", "Armed Forces Pacific"),
+(1039, "AB", "Alberta"),
+(1039, "BC", "British Columbia"),
+(1039, "MB", "Manitoba"),
+(1039, "NB", "New Brunswick"),
+(1039, "NL", "Newfoundland and Labrador"),
+(1039, "NT", "Northwest Territories"),
+(1039, "NS", "Nova Scotia"),
+(1039, "NU", "Nunavut"),
+(1039, "ON", "Ontario"),
+(1039, "PE", "Prince Edward Island"),
+(1039, "QC", "Quebec"),
+(1039, "SK", "Saskatchewan"),
+(1039, "YT", "Yukon Territory"),
+(1101, "MH", "Maharashtra"),
+(1101, "KA", "Karnataka"),
+(1101, "AP", "Andhra Pradesh"),
+(1101, "AR", "Arunachal Pradesh"),
+(1101, "AS", "Assam"),
+(1101, "BR", "Bihar"),
+(1101, "CG", "Chhattisgarh"),
+(1101, "GA", "Goa"),
+(1101, "GJ", "Gujarat"),
+(1101, "HR", "Haryana"),
+(1101, "HP", "Himachal Pradesh"),
+(1101, "JK", "Jammu and Kashmir"),
+(1101, "JH", "Jharkhand"),
+(1101, "KL", "Kerala"),
+(1101, "MP", "Madhya Pradesh"),
+(1101, "MN", "Manipur"),
+(1101, "ML", "Meghalaya"),
+(1101, "MZ", "Mizoram"),
+(1101, "NL", "Nagaland"),
+(1101, "OR", "Orissa"),
+(1101, "PB", "Punjab"),
+(1101, "RJ", "Rajasthan"),
+(1101, "SK", "Sikkim"),
+(1101, "TN", "Tamil Nadu"),
+(1101, "TR", "Tripura"),
+(1101, "UT", "Uttarakhand"),
+(1101, "UP", "Uttar Pradesh"),
+(1101, "WB", "West Bengal"),
+(1101, "AN", "Andaman and Nicobar Islands"),
+(1101, "DL", "Delhi"),
+(1101, "LD", "Lakshadweep"),
+(1101, "PY", "Pondicherry"),
+(1101, "TG", "Telangana"),
+(1101, "DH", "Dādra and Nagar Haveli and Damān and Diu"),
+(1101, "LA", "Ladākh"),
+(1101, "CH", "Chandigarh"),
 -- Note we believe all lower-case is correct for Poland. See https://github.com/civicrm/civicrm-core/pull/17107
-(1300, 1172, "MZ", "mazowieckie"),
-(1301, 1172, "PM", "pomorskie"),
-(1302, 1172, "DS", "dolnośląskie"),
-(1303, 1172, "KP", "kujawsko-pomorskie"),
-(1304, 1172, "LU", "lubelskie"),
-(1305, 1172, "LB", "lubuskie"),
-(1306, 1172, "LD", "łódzkie"),
-(1307, 1172, "MA", "małopolskie"),
-(1308, 1172, "OP", "opolskie"),
-(1309, 1172, "PK", "podkarpackie"),
-(1310, 1172, "PD", "podlaskie"),
-(1311, 1172, "SL", "śląskie"),
-(1312, 1172, "SK", "świętokrzyskie"),
-(1313, 1172, "WN", "warmińsko-mazurskie"),
-(1314, 1172, "WP", "wielkopolskie"),
-(1315, 1172, "ZP", "zachodniopomorskie"),
-(1500, 1225, "AZ", "Abu Zaby"),
-(1501, 1225, "AJ", "\'Ajman"),
-(1502, 1225, "FU", "Al Fujayrah"),
-(1503, 1225, "SH", "Ash Shariqah"),
-(1504, 1225, "DU", "Dubayy"),
-(1505, 1225, "RK", "Ra\'s al Khaymah"),
-(1506, 1233, "33", "Dac Lac"),
-(1507, 1225, "UQ", "Umm al Qaywayn"),
-(1508, 1001, "BDS", "Badakhshan"),
-(1509, 1001, "BDG", "Badghis"),
-(1510, 1001, "BGL", "Baghlan"),
-(1511, 1001, "BAL", "Balkh"),
-(1512, 1001, "BAM", "Bamian"),
-(1513, 1001, "FRA", "Farah"),
-(1514, 1001, "FYB", "Faryab"),
-(1515, 1001, "GHA", "Ghazni"),
-(1516, 1001, "GHO", "Ghowr"),
-(1517, 1001, "HEL", "Helmand"),
-(1518, 1001, "HER", "Herat"),
-(1519, 1001, "JOW", "Jowzjan"),
-(1520, 1001, "KAB", "Kabul"),
-(1521, 1001, "KAN", "Kandahar"),
-(1522, 1001, "KAP", "Kapisa"),
-(1523, 1001, "KHO", "Khowst"),
-(1524, 1001, "KNR", "Konar"),
-(1525, 1001, "KDZ", "Kondoz"),
-(1526, 1001, "LAG", "Laghman"),
-(1527, 1001, "LOW", "Lowgar"),
-(1528, 1001, "NAN", "Nangrahar"),
-(1529, 1001, "NIM", "Nimruz"),
-(1530, 1001, "NUR", "Nurestan"),
-(1531, 1001, "ORU", "Oruzgan"),
-(1532, 1001, "PIA", "Paktia"),
-(1533, 1001, "PKA", "Paktika"),
-(1534, 1001, "PAR", "Parwan"),
-(1535, 1001, "SAM", "Samangan"),
-(1536, 1001, "SAR", "Sar-e Pol"),
-(1537, 1001, "TAK", "Takhar"),
-(1538, 1001, "WAR", "Wardak"),
-(1539, 1001, "ZAB", "Zabol"),
-(1540, 1002, "BR", "Berat"),
-(1541, 1002, "BU", "Bulqizë"),
-(1542, 1002, "DL", "Delvinë"),
-(1543, 1002, "DV", "Devoll"),
-(1544, 1002, "DI", "Dibër"),
-(1545, 1002, "DR", "Durrës"),
-(1546, 1002, "EL", "Elbasan"),
-(1547, 1002, "FR", "Fier"),
-(1548, 1002, "GR", "Gramsh"),
-(1549, 1002, "GJ", "Gjirokastër"),
-(1550, 1002, "HA", "Has"),
-(1551, 1002, "KA", "Kavajë"),
-(1552, 1002, "ER", "Kolonjë"),
-(1553, 1002, "KO", "Korçë"),
-(1554, 1002, "KR", "Krujë"),
-(1555, 1002, "KC", "Kuçovë"),
-(1556, 1002, "KU", "Kukës"),
-(1557, 1002, "KB", "Kurbin"),
-(1558, 1002, "LE", "Lezhë"),
-(1559, 1002, "LB", "Librazhd"),
-(1560, 1002, "LU", "Lushnjë"),
-(1561, 1002, "MM", "Malësi e Madhe"),
-(1562, 1002, "MK", "Mallakastër"),
-(1563, 1002, "MT", "Mat"),
-(1564, 1002, "MR", "Mirditë"),
-(1565, 1002, "PQ", "Peqin"),
-(1566, 1002, "PR", "Përmet"),
-(1567, 1002, "PG", "Pogradec"),
-(1568, 1002, "PU", "Pukë"),
-(1569, 1002, "SR", "Sarandë"),
-(1570, 1002, "SK", "Skrapar"),
-(1571, 1002, "SH", "Shkodër"),
-(1572, 1002, "TE", "Tepelenë"),
-(1573, 1002, "TR", "Tiranë"),
-(1574, 1002, "TP", "Tropojë"),
-(1575, 1002, "VL", "Vlorë"),
-(1576, 1011, "ER", "Erevan"),
-(1577, 1011, "AG", "Aragacotn"),
-(1578, 1011, "AR", "Ararat"),
-(1579, 1011, "AV", "Armavir"),
-(1580, 1011, "GR", "Gegarkunik\'"),
-(1581, 1011, "KT", "Kotayk\'"),
-(1582, 1011, "LO", "Lory"),
-(1583, 1011, "SH", "Sirak"),
-(1584, 1011, "SU", "Syunik\'"),
-(1585, 1011, "TV", "Tavus"),
-(1586, 1011, "VD", "Vayoc Jor"),
-(1587, 1006, "BGO", "Bengo"),
-(1588, 1006, "BGU", "Benguela"),
-(1589, 1006, "BIE", "Bie"),
-(1590, 1006, "CAB", "Cabinda"),
-(1591, 1006, "CCU", "Cuando-Cubango"),
-(1592, 1006, "CNO", "Cuanza Norte"),
-(1593, 1006, "CUS", "Cuanza Sul"),
-(1594, 1006, "CNN", "Cunene"),
-(1595, 1006, "HUA", "Huambo"),
-(1596, 1006, "HUI", "Huila"),
-(1597, 1006, "LUA", "Luanda"),
-(1598, 1006, "LNO", "Lunda Norte"),
-(1599, 1006, "LSU", "Lunda Sul"),
-(1600, 1006, "MAL", "Malange"),
-(1601, 1006, "MOX", "Moxico"),
-(1602, 1006, "NAM", "Namibe"),
-(1603, 1006, "UIG", "Uige"),
-(1604, 1006, "ZAI", "Zaire"),
-(1605, 1010, "C", "Capital federal"),
-(1606, 1010, "B", "Buenos Aires"),
-(1607, 1010, "K", "Catamarca"),
-(1608, 1010, "X", "Cordoba"),
-(1609, 1010, "W", "Corrientes"),
-(1610, 1010, "H", "Chaco"),
-(1611, 1010, "U", "Chubut"),
-(1612, 1010, "E", "Entre Rios"),
-(1613, 1010, "P", "Formosa"),
-(1614, 1010, "Y", "Jujuy"),
-(1615, 1010, "L", "La Pampa"),
-(1616, 1010, "M", "Mendoza"),
-(1617, 1010, "N", "Misiones"),
-(1618, 1010, "Q", "Neuquen"),
-(1619, 1010, "R", "Rio Negro"),
-(1620, 1010, "A", "Salta"),
-(1621, 1010, "J", "San Juan"),
-(1622, 1010, "D", "San Luis"),
-(1623, 1010, "Z", "Santa Cruz"),
-(1624, 1010, "S", "Santa Fe"),
-(1625, 1010, "G", "Santiago del Estero"),
-(1626, 1010, "V", "Tierra del Fuego"),
-(1627, 1010, "T", "Tucuman"),
-(1628, 1014, "1", "Burgenland"),
-(1629, 1014, "2", "Kärnten"),
-(1630, 1014, "3", "Niederösterreich"),
-(1631, 1014, "4", "Oberösterreich"),
-(1632, 1014, "5", "Salzburg"),
-(1633, 1014, "6", "Steiermark"),
-(1634, 1014, "7", "Tirol"),
-(1635, 1014, "8", "Vorarlberg"),
-(1636, 1014, "9", "Wien"),
-(1637, 1008, "AAT", "Australian Antarctic Territory"),
-(1638, 1013, "ACT", "Australian Capital Territory"),
-(1639, 1013, "NT", "Northern Territory"),
-(1640, 1013, "NSW", "New South Wales"),
-(1641, 1013, "QLD", "Queensland"),
-(1642, 1013, "SA", "South Australia"),
-(1643, 1013, "TAS", "Tasmania"),
-(1644, 1013, "VIC", "Victoria"),
-(1645, 1013, "WA", "Western Australia"),
-(1646, 1015, "NX", "Naxcivan"),
-(1647, 1015, "AB", "Ali Bayramli"),
-(1648, 1015, "BA", "Baki"),
-(1649, 1015, "GA", "Ganca"),
-(1650, 1015, "LA", "Lankaran"),
-(1651, 1015, "MI", "Mingacevir"),
-(1652, 1015, "NA", "Naftalan"),
-(1653, 1015, "SA", "Saki"),
-(1654, 1015, "SM", "Sumqayit"),
-(1655, 1015, "SS", "Susa"),
-(1656, 1015, "XA", "Xankandi"),
-(1657, 1015, "YE", "Yevlax"),
-(1658, 1015, "ABS", "Abseron"),
-(1659, 1015, "AGC", "Agcabadi"),
-(1660, 1015, "AGM", "Agdam"),
-(1661, 1015, "AGS", "Agdas"),
-(1662, 1015, "AGA", "Agstafa"),
-(1663, 1015, "AGU", "Agsu"),
-(1664, 1015, "AST", "Astara"),
-(1665, 1015, "BAB", "Babak"),
-(1666, 1015, "BAL", "Balakan"),
-(1667, 1015, "BAR", "Barda"),
-(1668, 1015, "BEY", "Beylagan"),
-(1669, 1015, "BIL", "Bilasuvar"),
-(1670, 1015, "CAB", "Cabrayll"),
-(1671, 1015, "CAL", "Calilabad"),
-(1672, 1015, "CUL", "Culfa"),
-(1673, 1015, "DAS", "Daskasan"),
-(1674, 1015, "DAV", "Davaci"),
-(1675, 1015, "FUZ", "Fuzuli"),
-(1676, 1015, "GAD", "Gadabay"),
-(1677, 1015, "GOR", "Goranboy"),
-(1678, 1015, "GOY", "Goycay"),
-(1679, 1015, "HAC", "Haciqabul"),
-(1680, 1015, "IMI", "Imisli"),
-(1681, 1015, "ISM", "Ismayilli"),
-(1682, 1015, "KAL", "Kalbacar"),
-(1683, 1015, "KUR", "Kurdamir"),
-(1684, 1015, "LAC", "Lacin"),
-(1685, 1015, "LER", "Lerik"),
-(1686, 1015, "MAS", "Masalli"),
-(1687, 1015, "NEF", "Neftcala"),
-(1688, 1015, "OGU", "Oguz"),
-(1689, 1015, "ORD", "Ordubad"),
-(1690, 1015, "QAB", "Qabala"),
-(1691, 1015, "QAX", "Qax"),
-(1692, 1015, "QAZ", "Qazax"),
-(1693, 1015, "QOB", "Qobustan"),
-(1694, 1015, "QBA", "Quba"),
-(1695, 1015, "QBI", "Qubadli"),
-(1696, 1015, "QUS", "Qusar"),
-(1697, 1015, "SAT", "Saatli"),
-(1698, 1015, "SAB", "Sabirabad"),
-(1699, 1015, "SAD", "Sadarak"),
-(1700, 1015, "SAH", "Sahbuz"),
-(1701, 1015, "SAL", "Salyan"),
-(1702, 1015, "SMI", "Samaxi"),
-(1703, 1015, "SKR", "Samkir"),
-(1704, 1015, "SMX", "Samux"),
-(1705, 1015, "SAR", "Sarur"),
-(1706, 1015, "SIY", "Siyazan"),
-(1707, 1015, "TAR", "Tartar"),
-(1708, 1015, "TOV", "Tovuz"),
-(1709, 1015, "UCA", "Ucar"),
-(1710, 1015, "XAC", "Xacmaz"),
-(1711, 1015, "XAN", "Xanlar"),
-(1712, 1015, "XIZ", "Xizi"),
-(1713, 1015, "XCI", "Xocali"),
-(1714, 1015, "XVD", "Xocavand"),
-(1715, 1015, "YAR", "Yardimli"),
-(1716, 1015, "ZAN", "Zangilan"),
-(1717, 1015, "ZAQ", "Zaqatala"),
-(1718, 1015, "ZAR", "Zardab"),
-(1719, 1026, "BIH", "Federacija Bosna i Hercegovina"),
-(1720, 1026, "SRP", "Republika Srpska"),
-(1721, 1017, "05", "Bagerhat zila"),
-(1722, 1017, "01", "Bandarban zila"),
-(1723, 1017, "02", "Barguna zila"),
-(1724, 1017, "06", "Barisal zila"),
-(1725, 1017, "07", "Bhola zila"),
-(1726, 1017, "03", "Bogra zila"),
-(1727, 1017, "04", "Brahmanbaria zila"),
-(1728, 1017, "09", "Chandpur zila"),
-(1729, 1017, "10", "Chittagong zila"),
-(1730, 1017, "12", "Chuadanga zila"),
-(1731, 1017, "08", "Comilla zila"),
-(1732, 1017, "11", "Cox\'s Bazar zila"),
-(1733, 1017, "13", "Dhaka zila"),
-(1734, 1017, "14", "Dinajpur zila"),
-(1735, 1017, "15", "Faridpur zila"),
-(1736, 1017, "16", "Feni zila"),
-(1737, 1017, "19", "Gaibandha zila"),
-(1738, 1017, "18", "Gazipur zila"),
-(1739, 1017, "17", "Gopalganj zila"),
-(1740, 1017, "20", "Habiganj zila"),
-(1741, 1017, "24", "Jaipurhat zila"),
-(1742, 1017, "21", "Jamalpur zila"),
-(1743, 1017, "22", "Jessore zila"),
-(1744, 1017, "25", "Jhalakati zila"),
-(1745, 1017, "23", "Jhenaidah zila"),
-(1746, 1017, "29", "Khagrachari zila"),
-(1747, 1017, "27", "Khulna zila"),
-(1748, 1017, "26", "Kishorganj zila"),
-(1749, 1017, "28", "Kurigram zila"),
-(1750, 1017, "30", "Kushtia zila"),
-(1751, 1017, "31", "Lakshmipur zila"),
-(1752, 1017, "32", "Lalmonirhat zila"),
-(1753, 1017, "36", "Madaripur zila"),
-(1754, 1017, "37", "Magura zila"),
-(1755, 1017, "33", "Manikganj zila"),
-(1756, 1017, "39", "Meherpur zila"),
-(1757, 1017, "38", "Moulvibazar zila"),
-(1758, 1017, "35", "Munshiganj zila"),
-(1759, 1017, "34", "Mymensingh zila"),
-(1760, 1017, "48", "Naogaon zila"),
-(1761, 1017, "43", "Narail zila"),
-(1762, 1017, "40", "Narayanganj zila"),
-(1763, 1017, "42", "Narsingdi zila"),
-(1764, 1017, "44", "Natore zila"),
-(1765, 1017, "45", "Nawabganj zila"),
-(1766, 1017, "41", "Netrakona zila"),
-(1767, 1017, "46", "Nilphamari zila"),
-(1768, 1017, "47", "Noakhali zila"),
-(1769, 1017, "49", "Pabna zila"),
-(1770, 1017, "52", "Panchagarh zila"),
-(1771, 1017, "51", "Patuakhali zila"),
-(1772, 1017, "50", "Pirojpur zila"),
-(1773, 1017, "53", "Rajbari zila"),
-(1774, 1017, "54", "Rajshahi zila"),
-(1775, 1017, "56", "Rangamati zila"),
-(1776, 1017, "55", "Rangpur zila"),
-(1777, 1017, "58", "Satkhira zila"),
-(1778, 1017, "62", "Shariatpur zila"),
-(1779, 1017, "57", "Sherpur zila"),
-(1780, 1017, "59", "Sirajganj zila"),
-(1781, 1017, "61", "Sunamganj zila"),
-(1782, 1017, "60", "Sylhet zila"),
-(1783, 1017, "63", "Tangail zila"),
-(1784, 1017, "64", "Thakurgaon zila"),
-(1785, 1020, "VAN", "Antwerpen"),
-(1786, 1020, "WBR", "Brabant Wallon"),
-(1787, 1020, "WHT", "Hainaut"),
-(1788, 1020, "WLG", "Liege"),
-(1789, 1020, "VLI", "Limburg"),
-(1790, 1020, "WLX", "Luxembourg"),
-(1791, 1020, "WNA", "Namur"),
-(1792, 1020, "VOV", "Oost-Vlaanderen"),
-(1793, 1020, "VBR", "Vlaams-Brabant"),
-(1794, 1020, "VWV", "West-Vlaanderen"),
-(1795, 1034, "BAL", "Bale"),
-(1796, 1034, "BAM", "Bam"),
-(1797, 1034, "BAN", "Banwa"),
-(1798, 1034, "BAZ", "Bazega"),
-(1799, 1034, "BGR", "Bougouriba"),
-(1800, 1034, "BLG", "Boulgou"),
-(1801, 1034, "BLK", "Boulkiemde"),
-(1802, 1034, "COM", "Comoe"),
-(1803, 1034, "GAN", "Ganzourgou"),
-(1804, 1034, "GNA", "Gnagna"),
-(1805, 1034, "GOU", "Gourma"),
-(1806, 1034, "HOU", "Houet"),
-(1807, 1034, "IOB", "Ioba"),
-(1808, 1034, "KAD", "Kadiogo"),
-(1809, 1034, "KEN", "Kenedougou"),
-(1810, 1034, "KMD", "Komondjari"),
-(1811, 1034, "KMP", "Kompienga"),
-(1812, 1034, "KOS", "Kossi"),
-(1813, 1034, "KOP", "Koulpulogo"),
-(1814, 1034, "KOT", "Kouritenga"),
-(1815, 1034, "KOW", "Kourweogo"),
-(1816, 1034, "LER", "Leraba"),
-(1817, 1034, "LOR", "Loroum"),
-(1818, 1034, "MOU", "Mouhoun"),
-(1819, 1034, "NAO", "Nahouri"),
-(1820, 1034, "NAM", "Namentenga"),
-(1821, 1034, "NAY", "Nayala"),
-(1822, 1034, "NOU", "Noumbiel"),
-(1823, 1034, "OUB", "Oubritenga"),
-(1824, 1034, "OUD", "Oudalan"),
-(1825, 1034, "PAS", "Passore"),
-(1826, 1034, "PON", "Poni"),
-(1827, 1034, "SNG", "Sanguie"),
-(1828, 1034, "SMT", "Sanmatenga"),
-(1829, 1034, "SEN", "Seno"),
-(1830, 1034, "SIS", "Siasili"),
-(1831, 1034, "SOM", "Soum"),
-(1832, 1034, "SOR", "Sourou"),
-(1833, 1034, "TAP", "Tapoa"),
-(1834, 1034, "TUI", "Tui"),
-(1835, 1034, "YAG", "Yagha"),
-(1836, 1034, "YAT", "Yatenga"),
-(1837, 1034, "ZIR", "Ziro"),
-(1838, 1034, "ZON", "Zondoma"),
-(1839, 1034, "ZOU", "Zoundweogo"),
-(1840, 1033, "01", "Blagoevgrad"),
-(1841, 1033, "02", "Burgas"),
-(1842, 1033, "08", "Dobrich"),
-(1843, 1033, "07", "Gabrovo"),
-(1844, 1033, "26", "Haskovo"),
-(1845, 1033, "28", "Yambol"),
-(1846, 1033, "09", "Kardzhali"),
-(1847, 1033, "10", "Kyustendil"),
-(1848, 1033, "11", "Lovech"),
-(1849, 1033, "12", "Montana"),
-(1850, 1033, "13", "Pazardzhik"),
-(1851, 1033, "14", "Pernik"),
-(1852, 1033, "15", "Pleven"),
-(1853, 1033, "16", "Plovdiv"),
-(1854, 1033, "17", "Razgrad"),
-(1855, 1033, "18", "Ruse"),
-(1856, 1033, "19", "Silistra"),
-(1857, 1033, "20", "Sliven"),
-(1858, 1033, "21", "Smolyan"),
-(1859, 1033, "23", "Sofia"),
-(1860, 1033, "24", "Stara Zagora"),
-(1861, 1033, "27", "Shumen"),
-(1862, 1033, "25", "Targovishte"),
-(1863, 1033, "03", "Varna"),
-(1864, 1033, "04", "Veliko Tarnovo"),
-(1865, 1033, "05", "Vidin"),
-(1866, 1033, "06", "Vratsa"),
-(1867, 1016, "01", "Al Hadd"),
-(1868, 1016, "03", "Al Manamah"),
-(1869, 1016, "10", "Al Mintaqah al Gharbiyah"),
-(1870, 1016, "07", "Al Mintagah al Wusta"),
-(1871, 1016, "05", "Al Mintaqah ash Shamaliyah"),
-(1872, 1016, "02", "Al Muharraq"),
-(1873, 1016, "09", "Ar Rifa"),
-(1874, 1016, "04", "Jidd Hafs"),
-(1875, 1016, "12", "Madluat Jamad"),
-(1876, 1016, "08", "Madluat Isa"),
-(1877, 1016, "11", "Mintaqat Juzur tawar"),
-(1878, 1016, "06", "Sitrah"),
-(1879, 1036, "BB", "Bubanza"),
-(1880, 1036, "BJ", "Bujumbura"),
-(1881, 1036, "BR", "Bururi"),
-(1882, 1036, "CA", "Cankuzo"),
-(1883, 1036, "CI", "Cibitoke"),
-(1884, 1036, "GI", "Gitega"),
-(1885, 1036, "KR", "Karuzi"),
-(1886, 1036, "KY", "Kayanza"),
-(1887, 1036, "MA", "Makamba"),
-(1888, 1036, "MU", "Muramvya"),
-(1889, 1036, "MW", "Mwaro"),
-(1890, 1036, "NG", "Ngozi"),
-(1891, 1036, "RT", "Rutana"),
-(1892, 1036, "RY", "Ruyigi"),
-(1893, 1022, "AL", "Alibori"),
-(1894, 1022, "AK", "Atakora"),
-(1895, 1022, "AQ", "Atlantique"),
-(1896, 1022, "BO", "Borgou"),
-(1897, 1022, "CO", "Collines"),
-(1898, 1022, "DO", "Donga"),
-(1899, 1022, "KO", "Kouffo"),
-(1900, 1022, "LI", "Littoral"),
-(1901, 1022, "MO", "Mono"),
-(1902, 1022, "OU", "Oueme"),
-(1903, 1022, "PL", "Plateau"),
-(1904, 1022, "ZO", "Zou"),
-(1905, 1032, "BE", "Belait"),
-(1906, 1032, "BM", "Brunei-Muara"),
-(1907, 1032, "TE", "Temburong"),
-(1908, 1032, "TU", "Tutong"),
-(1909, 1025, "C", "Cochabamba"),
-(1910, 1025, "H", "Chuquisaca"),
-(1911, 1025, "B", "El Beni"),
-(1912, 1025, "L", "La Paz"),
-(1913, 1025, "O", "Oruro"),
-(1914, 1025, "N", "Pando"),
-(1915, 1025, "P", "Potosi"),
-(1916, 1025, "T", "Tarija"),
-(1917, 1029, "AC", "Acre"),
-(1918, 1029, "AL", "Alagoas"),
-(1919, 1029, "AM", "Amazonas"),
-(1920, 1029, "AP", "Amapa"),
-(1921, 1029, "BA", "Bahia"),
-(1922, 1029, "CE", "Ceara"),
-(1923, 1029, "DF", "Distrito Federal"),
-(1924, 1029, "ES", "Espirito Santo"),
-(1926, 1029, "GO", "Goias"),
-(1927, 1029, "MA", "Maranhao"),
-(1928, 1029, "MG", "Minas Gerais"),
-(1929, 1029, "MS", "Mato Grosso do Sul"),
-(1930, 1029, "MT", "Mato Grosso"),
-(1931, 1029, "PA", "Para"),
-(1932, 1029, "PB", "Paraiba"),
-(1933, 1029, "PE", "Pernambuco"),
-(1934, 1029, "PI", "Piaui"),
-(1935, 1029, "PR", "Parana"),
-(1936, 1029, "RJ", "Rio de Janeiro"),
-(1937, 1029, "RN", "Rio Grande do Norte"),
-(1938, 1029, "RO", "Rondonia"),
-(1939, 1029, "RR", "Roraima"),
-(1940, 1029, "RS", "Rio Grande do Sul"),
-(1941, 1029, "SC", "Santa Catarina"),
-(1942, 1029, "SE", "Sergipe"),
-(1943, 1029, "SP", "Sao Paulo"),
-(1944, 1029, "TO", "Tocantins"),
-(1945, 1212, "AC", "Acklins and Crooked Islands"),
-(1946, 1212, "BI", "Bimini"),
-(1947, 1212, "CI", "Cat Island"),
-(1948, 1212, "EX", "Exuma"),
-(1955, 1212, "IN", "Inagua"),
-(1957, 1212, "LI", "Long Island"),
-(1959, 1212, "MG", "Mayaguana"),
-(1960, 1212, "NP", "New Providence"),
-(1962, 1212, "RI", "Ragged Island"),
-(1966, 1024, "33", "Bumthang"),
-(1967, 1024, "12", "Chhukha"),
-(1968, 1024, "22", "Dagana"),
-(1969, 1024, "GA", "Gasa"),
-(1970, 1024, "13", "Ha"),
-(1971, 1024, "44", "Lhuentse"),
-(1972, 1024, "42", "Monggar"),
-(1973, 1024, "11", "Paro"),
-(1974, 1024, "43", "Pemagatshel"),
-(1975, 1024, "23", "Punakha"),
-(1976, 1024, "45", "Samdrup Jongkha"),
-(1977, 1024, "14", "Samtee"),
-(1978, 1024, "31", "Sarpang"),
-(1979, 1024, "15", "Thimphu"),
-(1980, 1024, "41", "Trashigang"),
-(1981, 1024, "TY", "Trashi Yangtse"),
-(1982, 1024, "32", "Trongsa"),
-(1983, 1024, "21", "Tsirang"),
-(1984, 1024, "24", "Wangdue Phodrang"),
-(1985, 1024, "34", "Zhemgang"),
-(1986, 1027, "CE", "Central"),
-(1987, 1027, "GH", "Ghanzi"),
-(1988, 1027, "KG", "Kgalagadi"),
-(1989, 1027, "KL", "Kgatleng"),
-(1990, 1027, "KW", "Kweneng"),
-(1991, 1027, "NG", "Ngamiland"),
-(1992, 1027, "NE", "North-East"),
-(1993, 1027, "NW", "North-West"),
-(1994, 1027, "SE", "South-East"),
-(1995, 1027, "SO", "Southern"),
-(1996, 1019, "BR", "Brèsckaja voblasc\'"),
-(1997, 1019, "HO", "Homel\'skaja voblasc\'"),
-(1998, 1019, "HR", "Hrodzenskaja voblasc\'"),
-(1999, 1019, "MA", "Mahilëuskaja voblasc\'"),
-(2000, 1019, "MI", "Minskaja voblasc\'"),
-(2001, 1019, "VI", "Vicebskaja voblasc\'"),
-(2002, 1021, "BZ", "Belize"),
-(2003, 1021, "CY", "Cayo"),
-(2004, 1021, "CZL", "Corozal"),
-(2005, 1021, "OW", "Orange Walk"),
-(2006, 1021, "SC", "Stann Creek"),
-(2007, 1021, "TOL", "Toledo"),
-(2008, 1050, "KN", "Kinshasa"),
-(2011, 1050, "EQ", "Equateur"),
-(2014, 1050, "KE", "Kasai-Oriental"),
-(2016, 1050, "MA", "Maniema"),
-(2017, 1050, "NK", "Nord-Kivu"),
-(2019, 1050, "SK", "Sud-Kivu"),
-(2020, 1042, "BGF", "Bangui"),
-(2021, 1042, "BB", "Bamingui-Bangoran"),
-(2022, 1042, "BK", "Basse-Kotto"),
-(2023, 1042, "HK", "Haute-Kotto"),
-(2024, 1042, "HM", "Haut-Mbomou"),
-(2025, 1042, "KG", "Kemo"),
-(2026, 1042, "LB", "Lobaye"),
-(2027, 1042, "HS", "Mambere-Kadei"),
-(2028, 1042, "MB", "Mbomou"),
-(2029, 1042, "KB", "Nana-Grebizi"),
-(2030, 1042, "NM", "Nana-Mambere"),
-(2031, 1042, "MP", "Ombella-Mpoko"),
-(2032, 1042, "UK", "Ouaka"),
-(2033, 1042, "AC", "Ouham"),
-(2034, 1042, "OP", "Ouham-Pende"),
-(2035, 1042, "SE", "Sangha-Mbaere"),
-(2036, 1042, "VR", "Vakaga"),
-(2037, 1051, "BZV", "Brazzaville"),
-(2038, 1051, "11", "Bouenza"),
-(2039, 1051, "8", "Cuvette"),
-(2040, 1051, "15", "Cuvette-Ouest"),
-(2041, 1051, "5", "Kouilou"),
-(2042, 1051, "2", "Lekoumou"),
-(2043, 1051, "7", "Likouala"),
-(2044, 1051, "9", "Niari"),
-(2045, 1051, "14", "Plateaux"),
-(2046, 1051, "12", "Pool"),
-(2047, 1051, "13", "Sangha"),
-(2048, 1205, "AG", "Aargau"),
-(2049, 1205, "AI", "Appenzell Innerrhoden"),
-(2050, 1205, "AR", "Appenzell Ausserrhoden"),
-(2051, 1205, "BE", "Bern"),
-(2052, 1205, "BL", "Basel-Landschaft"),
-(2053, 1205, "BS", "Basel-Stadt"),
-(2054, 1205, "FR", "Fribourg"),
-(2055, 1205, "GE", "Geneva"),
-(2056, 1205, "GL", "Glarus"),
-(2057, 1205, "GR", "Graubunden"),
-(2058, 1205, "JU", "Jura"),
-(2059, 1205, "LU", "Luzern"),
-(2060, 1205, "NE", "Neuchatel"),
-(2061, 1205, "NW", "Nidwalden"),
-(2062, 1205, "OW", "Obwalden"),
-(2063, 1205, "SG", "Sankt Gallen"),
-(2064, 1205, "SH", "Schaffhausen"),
-(2065, 1205, "SO", "Solothurn"),
-(2066, 1205, "SZ", "Schwyz"),
-(2067, 1205, "TG", "Thurgau"),
-(2068, 1205, "TI", "Ticino"),
-(2069, 1205, "UR", "Uri"),
-(2070, 1205, "VD", "Vaud"),
-(2071, 1205, "VS", "Valais"),
-(2072, 1205, "ZG", "Zug"),
-(2073, 1205, "ZH", "Zurich"),
-(2074, 1054, "06", "18 Montagnes"),
-(2075, 1054, "16", "Agnebi"),
-(2076, 1054, "09", "Bas-Sassandra"),
-(2077, 1054, "10", "Denguele"),
-(2078, 1054, "02", "Haut-Sassandra"),
-(2079, 1054, "07", "Lacs"),
-(2080, 1054, "01", "Lagunes"),
-(2081, 1054, "12", "Marahoue"),
-(2082, 1054, "05", "Moyen-Comoe"),
-(2083, 1054, "11", "Nzi-Comoe"),
-(2084, 1054, "03", "Savanes"),
-(2085, 1054, "15", "Sud-Bandama"),
-(2086, 1054, "13", "Sud-Comoe"),
-(2087, 1054, "04", "Vallee du Bandama"),
-(2088, 1054, "14", "Worodouqou"),
-(2089, 1054, "08", "Zanzan"),
-(2090, 1044, "AI", "Aisen del General Carlos Ibanez del Campo"),
-(2091, 1044, "AN", "Antofagasta"),
-(2092, 1044, "AR", "Araucania"),
-(2093, 1044, "AT", "Atacama"),
-(2094, 1044, "BI", "Bio-Bio"),
-(2095, 1044, "CO", "Coquimbo"),
-(2096, 1044, "LI", "Libertador General Bernardo O\'Higgins"),
-(2097, 1044, "LL", "Los Lagos"),
-(2098, 1044, "MA", "Magallanes"),
-(2099, 1044, "ML", "Maule"),
-(2100, 1044, "SM", "Santiago Metropolitan"),
-(2101, 1044, "TA", "Tarapaca"),
-(2102, 1044, "VS", "Valparaiso"),
-(2103, 1038, "AD", "Adamaoua"),
-(2104, 1038, "CE", "Centre"),
-(2105, 1038, "ES", "East"),
-(2106, 1038, "EN", "Far North"),
-(2107, 1038, "NO", "North"),
-(2108, 1038, "SW", "South"),
-(2109, 1038, "SW", "South-West"),
-(2110, 1038, "OU", "West"),
-(2111, 1045, "11", "Beijing"),
-(2112, 1045, "50", "Chongqing"),
-(2113, 1045, "31", "Shanghai"),
-(2114, 1045, "12", "Tianjin"),
-(2115, 1045, "34", "Anhui"),
-(2116, 1045, "35", "Fujian"),
-(2117, 1045, "62", "Gansu"),
-(2118, 1045, "44", "Guangdong"),
-(2119, 1045, "52", "Guizhou"),
-(2120, 1045, "46", "Hainan"),
-(2121, 1045, "13", "Hebei"),
-(2122, 1045, "23", "Heilongjiang"),
-(2123, 1045, "41", "Henan"),
-(2124, 1045, "42", "Hubei"),
-(2125, 1045, "43", "Hunan"),
-(2126, 1045, "32", "Jiangsu"),
-(2127, 1045, "36", "Jiangxi"),
-(2128, 1045, "22", "Jilin"),
-(2129, 1045, "21", "Liaoning"),
-(2130, 1045, "63", "Qinghai"),
-(2131, 1045, "61", "Shaanxi"),
-(2132, 1045, "37", "Shandong"),
-(2133, 1045, "14", "Shanxi"),
-(2134, 1045, "51", "Sichuan"),
-(2135, 1045, "71", "Taiwan"),
-(2136, 1045, "53", "Yunnan"),
-(2137, 1045, "33", "Zhejiang"),
-(2138, 1045, "45", "Guangxi"),
-(2139, 1045, "15", "Neia Mongol (mn)"),
-(2140, 1045, "65", "Xinjiang"),
-(2141, 1045, "54", "Xizang"),
-(2142, 1045, "91", "Hong Kong"),
-(2143, 1045, "92", "Macau"),
-(2144, 1048, "DC", "Distrito Capital de Bogotá"),
-(2145, 1048, "AMA", "Amazonea"),
-(2146, 1048, "ANT", "Antioquia"),
-(2147, 1048, "ARA", "Arauca"),
-(2148, 1048, "ATL", "Atlántico"),
-(2149, 1048, "BOL", "Bolívar"),
-(2150, 1048, "BOY", "Boyacá"),
-(2151, 1048, "CAL", "Caldea"),
-(2152, 1048, "CAQ", "Caquetá"),
-(2153, 1048, "CAS", "Casanare"),
-(2154, 1048, "CAU", "Cauca"),
-(2155, 1048, "CES", "Cesar"),
-(2156, 1048, "COR", "Córdoba"),
-(2157, 1048, "CUN", "Cundinamarca"),
-(2158, 1048, "CHO", "Chocó"),
-(2159, 1048, "GUA", "Guainía"),
-(2160, 1048, "GUV", "Guaviare"),
-(2161, 1048, "LAG", "La Guajira"),
-(2162, 1048, "MAG", "Magdalena"),
-(2163, 1048, "MET", "Meta"),
-(2164, 1048, "NAR", "Nariño"),
-(2165, 1048, "NSA", "Norte de Santander"),
-(2166, 1048, "PUT", "Putumayo"),
-(2167, 1048, "QUI", "Quindio"),
-(2168, 1048, "RIS", "Risaralda"),
-(2169, 1048, "SAP", "San Andrés, Providencia y Santa Catalina"),
-(2170, 1048, "SAN", "Santander"),
-(2171, 1048, "SUC", "Sucre"),
-(2172, 1048, "TOL", "Tolima"),
-(2173, 1048, "VAC", "Valle del Cauca"),
-(2174, 1048, "VAU", "Vaupés"),
-(2175, 1048, "VID", "Vichada"),
-(2176, 1053, "A", "Alajuela"),
-(2177, 1053, "C", "Cartago"),
-(2178, 1053, "G", "Guanacaste"),
-(2179, 1053, "H", "Heredia"),
-(2180, 1053, "L", "Limon"),
-(2181, 1053, "P", "Puntarenas"),
-(2182, 1053, "SJ", "San Jose"),
-(2183, 1056, "09", "Camagey"),
-(2184, 1056, "08", "Ciego de `vila"),
-(2185, 1056, "06", "Cienfuegos"),
-(2186, 1056, "03", "Ciudad de La Habana"),
-(2187, 1056, "12", "Granma"),
-(2188, 1056, "14", "Guantanamo"),
-(2189, 1056, "11", "Holquin"),
-(2190, 1056, "02", "La Habana"),
-(2191, 1056, "10", "Las Tunas"),
-(2192, 1056, "04", "Matanzas"),
-(2193, 1056, "01", "Pinar del Rio"),
-(2194, 1056, "07", "Sancti Spiritus"),
-(2195, 1056, "13", "Santiago de Cuba"),
-(2196, 1056, "05", "Villa Clara"),
-(2197, 1056, "99", "Isla de la Juventud"),
-(2198, 1056, "PR", "Pinar del Roo"),
-(2199, 1056, "CA", "Ciego de Avila"),
-(2200, 1056, "CG", "Camagoey"),
-(2201, 1056, "HO", "Holgun"),
-(2202, 1056, "SS", "Sancti Spritus"),
-(2203, 1056, "IJ", "Municipio Especial Isla de la Juventud"),
-(2204, 1040, "BV", "Boa Vista"),
-(2205, 1040, "BR", "Brava"),
-(2206, 1040, "CS", "Calheta de Sao Miguel"),
-(2207, 1040, "FO", "Fogo"),
-(2208, 1040, "MA", "Maio"),
-(2209, 1040, "MO", "Mosteiros"),
-(2210, 1040, "PA", "Paul"),
-(2211, 1040, "PN", "Porto Novo"),
-(2212, 1040, "PR", "Praia"),
-(2213, 1040, "RG", "Ribeira Grande"),
-(2214, 1040, "SL", "Sal"),
-(2215, 1040, "SD", "Sao Domingos"),
-(2216, 1040, "SF", "Sao Filipe"),
-(2217, 1040, "SN", "Sao Nicolau"),
-(2218, 1040, "SV", "Sao Vicente"),
-(2219, 1040, "TA", "Tarrafal"),
-(2220, 1057, "04", "Ammochostos Magusa"),
-(2221, 1057, "06", "Keryneia"),
-(2222, 1057, "03", "Larnaka"),
-(2223, 1057, "01", "Lefkosia"),
-(2224, 1057, "02", "Lemesos"),
-(2225, 1057, "05", "Pafos"),
-(2226, 1058, "JC", "Jihočeský kraj"),
-(2227, 1058, "JM", "Jihomoravský kraj"),
-(2228, 1058, "KA", "Karlovarský kraj"),
-(2229, 1058, "KR", "Královéhradecký kraj"),
-(2230, 1058, "LI", "Liberecký kraj"),
-(2231, 1058, "MO", "Moravskoslezský kraj"),
-(2232, 1058, "OL", "Olomoucký kraj"),
-(2233, 1058, "PA", "Pardubický kraj"),
-(2234, 1058, "PL", "Plzeňský kraj"),
-(2235, 1058, "PR", "Praha, hlavní město"),
-(2236, 1058, "ST", "Středočeský kraj"),
-(2237, 1058, "US", "Ústecký kraj"),
-(2238, 1058, "VY", "Vysočina"),
-(2239, 1058, "ZL", "Zlínský kraj"),
-(2240, 1082, "BW", "Baden-Württemberg"),
-(2241, 1082, "BY", "Bayern"),
-(2242, 1082, "HB", "Bremen"),
-(2243, 1082, "HH", "Hamburg"),
-(2244, 1082, "HE", "Hessen"),
-(2245, 1082, "NI", "Niedersachsen"),
-(2246, 1082, "NW", "Nordrhein-Westfalen"),
-(2247, 1082, "RP", "Rheinland-Pfalz"),
-(2248, 1082, "SL", "Saarland"),
-(2249, 1082, "SH", "Schleswig-Holstein"),
-(2250, 1082, "BE", "Berlin"),
-(2251, 1082, "BB", "Brandenburg"),
-(2252, 1082, "MV", "Mecklenburg-Vorpommern"),
-(2253, 1082, "SN", "Sachsen"),
-(2254, 1082, "ST", "Sachsen-Anhalt"),
-(2255, 1082, "TH", "Thüringen"),
-(2256, 1060, "AS", "Ali Sabiah"),
-(2257, 1060, "DI", "Dikhil"),
-(2258, 1060, "DJ", "Djibouti"),
-(2259, 1060, "OB", "Obock"),
-(2260, 1060, "TA", "Tadjoura"),
-(2261, 1059, "147", "Frederiksberg"),
-(2262, 1059, "101", "Copenhagen City"),
-(2263, 1059, "015", "Copenhagen"),
-(2264, 1059, "020", "Frederiksborg"),
-(2265, 1059, "025", "Roskilde"),
-(2266, 1059, "030", "Vestsjælland"),
-(2267, 1059, "035", "Storstrøm"),
-(2268, 1059, "040", "Bornholm"),
-(2269, 1059, "042", "Fyn"),
-(2270, 1059, "050", "South Jutland"),
-(2271, 1059, "055", "Ribe"),
-(2272, 1059, "060", "Vejle"),
-(2273, 1059, "065", "Ringkjøbing"),
-(2274, 1059, "070", "Ã…rhus"),
-(2275, 1059, "076", "Viborg"),
-(2276, 1059, "080", "North Jutland"),
-(2277, 1062, "01", "Distrito Nacional (Santo Domingo)"),
-(2278, 1062, "02", "Azua"),
-(2279, 1062, "03", "Bahoruco"),
-(2280, 1062, "04", "Barahona"),
-(2281, 1062, "05", "Dajabón"),
-(2282, 1062, "06", "Duarte"),
-(2283, 1062, "08", "El Seybo [El Seibo]"),
-(2284, 1062, "09", "Espaillat"),
-(2285, 1062, "30", "Hato Mayor"),
-(2286, 1062, "10", "Independencia"),
-(2287, 1062, "11", "La Altagracia"),
-(2288, 1062, "07", "La Estrelleta [Elias Pina]"),
-(2289, 1062, "12", "La Romana"),
-(2290, 1062, "13", "La Vega"),
-(2291, 1062, "14", "Maroia Trinidad Sánchez"),
-(2292, 1062, "28", "Monseñor Nouel"),
-(2293, 1062, "15", "Monte Cristi"),
-(2294, 1062, "29", "Monte Plata"),
-(2295, 1062, "16", "Pedernales"),
-(2296, 1062, "17", "Peravia"),
-(2297, 1062, "18", "Puerto Plata"),
-(2298, 1062, "19", "Salcedo"),
-(2299, 1062, "20", "Samaná"),
-(2300, 1062, "21", "San Cristóbal"),
-(2301, 1062, "23", "San Pedro de Macorís"),
-(2302, 1062, "24", "Sánchez Ramírez"),
-(2303, 1062, "25", "Santiago"),
-(2304, 1062, "26", "Santiago Rodríguez"),
-(2305, 1062, "27", "Valverde"),
-(2306, 1003, "01", "Adrar"),
-(2307, 1003, "44", "Ain Defla"),
-(2308, 1003, "46", "Ain Tmouchent"),
-(2309, 1003, "16", "Alger"),
-(2310, 1003, "23", "Annaba"),
-(2311, 1003, "05", "Batna"),
-(2312, 1003, "08", "Bechar"),
-(2313, 1003, "06", "Bejaia"),
-(2314, 1003, "07", "Biskra"),
-(2315, 1003, "09", "Blida"),
-(2316, 1003, "34", "Bordj Bou Arreridj"),
-(2317, 1003, "10", "Bouira"),
-(2318, 1003, "35", "Boumerdes"),
-(2319, 1003, "02", "Chlef"),
-(2320, 1003, "25", "Constantine"),
-(2321, 1003, "17", "Djelfa"),
-(2322, 1003, "32", "El Bayadh"),
-(2323, 1003, "39", "El Oued"),
-(2324, 1003, "36", "El Tarf"),
-(2325, 1003, "47", "Ghardaia"),
-(2326, 1003, "24", "Guelma"),
-(2327, 1003, "33", "Illizi"),
-(2328, 1003, "18", "Jijel"),
-(2329, 1003, "40", "Khenchela"),
-(2330, 1003, "03", "Laghouat"),
-(2331, 1003, "29", "Mascara"),
-(2332, 1003, "26", "Medea"),
-(2333, 1003, "43", "Mila"),
-(2334, 1003, "27", "Mostaganem"),
-(2335, 1003, "28", "Msila"),
-(2336, 1003, "45", "Naama"),
-(2337, 1003, "31", "Oran"),
-(2338, 1003, "30", "Ouargla"),
-(2339, 1003, "04", "Oum el Bouaghi"),
-(2340, 1003, "48", "Relizane"),
-(2341, 1003, "20", "Saida"),
-(2342, 1003, "19", "Setif"),
-(2343, 1003, "22", "Sidi Bel Abbes"),
-(2344, 1003, "21", "Skikda"),
-(2345, 1003, "41", "Souk Ahras"),
-(2346, 1003, "11", "Tamanghasset"),
-(2347, 1003, "12", "Tebessa"),
-(2348, 1003, "14", "Tiaret"),
-(2349, 1003, "37", "Tindouf"),
-(2350, 1003, "42", "Tipaza"),
-(2351, 1003, "38", "Tissemsilt"),
-(2352, 1003, "15", "Tizi Ouzou"),
-(2353, 1003, "13", "Tlemcen"),
-(2354, 1064, "A", "Azuay"),
-(2355, 1064, "B", "Bolivar"),
-(2356, 1064, "F", "Canar"),
-(2357, 1064, "C", "Carchi"),
-(2358, 1064, "X", "Cotopaxi"),
-(2359, 1064, "H", "Chimborazo"),
-(2360, 1064, "O", "El Oro"),
-(2361, 1064, "E", "Esmeraldas"),
-(2362, 1064, "W", "Galapagos"),
-(2363, 1064, "G", "Guayas"),
-(2364, 1064, "I", "Imbabura"),
-(2365, 1064, "L", "Loja"),
-(2366, 1064, "R", "Los Rios"),
-(2367, 1064, "M", "Manabi"),
-(2368, 1064, "S", "Morona-Santiago"),
-(2369, 1064, "N", "Napo"),
-(2370, 1064, "D", "Orellana"),
-(2371, 1064, "Y", "Pastaza"),
-(2372, 1064, "P", "Pichincha"),
-(2373, 1064, "U", "Sucumbios"),
-(2374, 1064, "T", "Tungurahua"),
-(2375, 1064, "Z", "Zamora-Chinchipe"),
-(2376, 1069, "37", "Harjumaa"),
-(2377, 1069, "39", "Hiiumaa"),
-(2378, 1069, "44", "Ida-Virumaa"),
-(2379, 1069, "49", "Jõgevamaa"),
-(2380, 1069, "51", "Järvamaa"),
-(2381, 1069, "57", "Läänemaa"),
-(2382, 1069, "59", "Lääne-Virumaa"),
-(2383, 1069, "65", "Põlvamaa"),
-(2384, 1069, "67", "Pärnumaa"),
-(2385, 1069, "70", "Raplamaa"),
-(2386, 1069, "74", "Saaremaa"),
-(2387, 1069, "7B", "Tartumaa"),
-(2388, 1069, "82", "Valgamaa"),
-(2389, 1069, "84", "Viljandimaa"),
-(2390, 1069, "86", "Võrumaa"),
-(2391, 1065, "DK", "Ad Daqahllyah"),
-(2392, 1065, "BA", "Al Bahr al Ahmar"),
-(2393, 1065, "BH", "Al Buhayrah"),
-(2394, 1065, "FYM", "Al Fayym"),
-(2395, 1065, "GH", "Al Gharbiyah"),
-(2396, 1065, "ALX", "Al Iskandarlyah"),
-(2397, 1065, "IS", "Al Isma illyah"),
-(2398, 1065, "GZ", "Al Jizah"),
-(2399, 1065, "MNF", "Al Minuflyah"),
-(2400, 1065, "MN", "Al Minya"),
-(2401, 1065, "C", "Al Qahirah"),
-(2402, 1065, "KB", "Al Qalyublyah"),
-(2403, 1065, "WAD", "Al Wadi al Jadid"),
-(2404, 1065, "SHR", "Ash Sharqiyah"),
-(2405, 1065, "SUZ", "As Suways"),
-(2406, 1065, "ASN", "Aswan"),
-(2407, 1065, "AST", "Asyut"),
-(2408, 1065, "BNS", "Bani Suwayf"),
-(2409, 1065, "PTS", "Bur Sa\'id"),
-(2410, 1065, "DT", "Dumyat"),
-(2411, 1065, "JS", "Janub Sina\'"),
-(2412, 1065, "KFS", "Kafr ash Shaykh"),
-(2413, 1065, "MT", "Matruh"),
-(2414, 1065, "KN", "Qina"),
-(2415, 1065, "SIN", "Shamal Sina\'"),
-(2416, 1065, "SHG", "Suhaj"),
-(2417, 1068, "AN", "Anseba"),
-(2418, 1068, "DU", "Debub"),
-(2419, 1068, "DK", "Debubawi Keyih Bahri [Debub-Keih-Bahri]"),
-(2420, 1068, "GB", "Gash-Barka"),
-(2421, 1068, "MA", "Maakel [Maekel]"),
-(2422, 1068, "SK", "Semenawi Keyih Bahri [Semien-Keih-Bahri]"),
-(2423, 1198, "VI", "Álava"),
-(2424, 1198, "AB", "Albacete"),
-(2425, 1198, "A", "Alicante"),
-(2426, 1198, "AL", "Almería"),
-(2427, 1198, "O", "Asturias"),
-(2428, 1198, "AV", "Ávila"),
-(2429, 1198, "BA", "Badajoz"),
-(2430, 1198, "PM", "Baleares"),
-(2431, 1198, "B", "Barcelona"),
-(2432, 1198, "BU", "Burgos"),
-(2433, 1198, "CC", "Cáceres"),
-(2434, 1198, "CA", "Cádiz"),
-(2435, 1198, "S", "Cantabria"),
-(2436, 1198, "CS", "Castellón"),
-(2437, 1198, "CR", "Ciudad Real"),
-(2438, 1198, "CU", "Cuenca"),
-(2439, 1198, "GE", "Girona [Gerona]"),
-(2440, 1198, "GR", "Granada"),
-(2441, 1198, "GU", "Guadalajara"),
-(2442, 1198, "SS", "Guipúzcoa"),
-(2443, 1198, "H", "Huelva"),
-(2444, 1198, "HU", "Huesca"),
-(2445, 1198, "J", "Jaén"),
-(2446, 1198, "C", "La Coruña"),
-(2447, 1198, "LO", "La Rioja"),
-(2448, 1198, "GC", "Las Palmas"),
-(2449, 1198, "LE", "León"),
-(2450, 1198, "L", "Lleida [Lérida]"),
-(2451, 1198, "LU", "Lugo"),
-(2452, 1198, "M", "Madrid"),
-(2453, 1198, "MA", "Málaga"),
-(2454, 1198, "MU", "Murcia"),
-(2455, 1198, "NA", "Navarra"),
-(2456, 1198, "OR", "Ourense"),
-(2457, 1198, "P", "Palencia"),
-(2458, 1198, "PO", "Pontevedra"),
-(2459, 1198, "SA", "Salamanca"),
-(2460, 1198, "TF", "Santa Cruz de Tenerife"),
-(2461, 1198, "SG", "Segovia"),
-(2462, 1198, "SE", "Sevilla"),
-(2463, 1198, "SO", "Soria"),
-(2464, 1198, "T", "Tarragona"),
-(2465, 1198, "TE", "Teruel"),
-(2466, 1198, "V", "Valencia"),
-(2467, 1198, "VA", "Valladolid"),
-(2468, 1198, "BI", "Vizcaya"),
-(2469, 1198, "ZA", "Zamora"),
-(2470, 1198, "Z", "Zaragoza"),
-(2471, 1198, "CE", "Ceuta"),
-(2472, 1198, "ML", "Melilla"),
-(2473, 1070, "AA", "Addis Ababa"),
-(2474, 1070, "DD", "Dire Dawa"),
-(2475, 1070, "AF", "Afar"),
-(2476, 1070, "AM", "Amara"),
-(2477, 1070, "BE", "Benshangul-Gumaz"),
-(2478, 1070, "GA", "Gambela Peoples"),
-(2479, 1070, "HA", "Harari People"),
-(2480, 1070, "OR", "Oromia"),
-(2481, 1070, "SO", "Somali"),
-(2482, 1070, "SN", "Southern Nations, Nationalities and Peoples"),
-(2483, 1070, "TI", "Tigrai"),
+(1172, "MZ", "mazowieckie"),
+(1172, "PM", "pomorskie"),
+(1172, "DS", "dolnośląskie"),
+(1172, "KP", "kujawsko-pomorskie"),
+(1172, "LU", "lubelskie"),
+(1172, "LB", "lubuskie"),
+(1172, "LD", "łódzkie"),
+(1172, "MA", "małopolskie"),
+(1172, "OP", "opolskie"),
+(1172, "PK", "podkarpackie"),
+(1172, "PD", "podlaskie"),
+(1172, "SL", "śląskie"),
+(1172, "SK", "świętokrzyskie"),
+(1172, "WN", "warmińsko-mazurskie"),
+(1172, "WP", "wielkopolskie"),
+(1172, "ZP", "zachodniopomorskie"),
+(1225, "AZ", "Abu Zaby"),
+(1225, "AJ", "\'Ajman"),
+(1225, "FU", "Al Fujayrah"),
+(1225, "SH", "Ash Shariqah"),
+(1225, "DU", "Dubayy"),
+(1225, "RK", "Ra\'s al Khaymah"),
+(1233, "33", "Dac Lac"),
+(1225, "UQ", "Umm al Qaywayn"),
+(1001, "BDS", "Badakhshan"),
+(1001, "BDG", "Badghis"),
+(1001, "BGL", "Baghlan"),
+(1001, "BAL", "Balkh"),
+(1001, "BAM", "Bamian"),
+(1001, "FRA", "Farah"),
+(1001, "FYB", "Faryab"),
+(1001, "GHA", "Ghazni"),
+(1001, "GHO", "Ghowr"),
+(1001, "HEL", "Helmand"),
+(1001, "HER", "Herat"),
+(1001, "JOW", "Jowzjan"),
+(1001, "KAB", "Kabul"),
+(1001, "KAN", "Kandahar"),
+(1001, "KAP", "Kapisa"),
+(1001, "KHO", "Khowst"),
+(1001, "KNR", "Konar"),
+(1001, "KDZ", "Kondoz"),
+(1001, "LAG", "Laghman"),
+(1001, "LOW", "Lowgar"),
+(1001, "NAN", "Nangrahar"),
+(1001, "NIM", "Nimruz"),
+(1001, "NUR", "Nurestan"),
+(1001, "ORU", "Oruzgan"),
+(1001, "PIA", "Paktia"),
+(1001, "PKA", "Paktika"),
+(1001, "PAR", "Parwan"),
+(1001, "SAM", "Samangan"),
+(1001, "SAR", "Sar-e Pol"),
+(1001, "TAK", "Takhar"),
+(1001, "WAR", "Wardak"),
+(1001, "ZAB", "Zabol"),
+(1002, "BR", "Berat"),
+(1002, "BU", "Bulqizë"),
+(1002, "DL", "Delvinë"),
+(1002, "DV", "Devoll"),
+(1002, "DI", "Dibër"),
+(1002, "DR", "Durrës"),
+(1002, "EL", "Elbasan"),
+(1002, "FR", "Fier"),
+(1002, "GR", "Gramsh"),
+(1002, "GJ", "Gjirokastër"),
+(1002, "HA", "Has"),
+(1002, "KA", "Kavajë"),
+(1002, "ER", "Kolonjë"),
+(1002, "KO", "Korçë"),
+(1002, "KR", "Krujë"),
+(1002, "KC", "Kuçovë"),
+(1002, "KU", "Kukës"),
+(1002, "KB", "Kurbin"),
+(1002, "LE", "Lezhë"),
+(1002, "LB", "Librazhd"),
+(1002, "LU", "Lushnjë"),
+(1002, "MM", "Malësi e Madhe"),
+(1002, "MK", "Mallakastër"),
+(1002, "MT", "Mat"),
+(1002, "MR", "Mirditë"),
+(1002, "PQ", "Peqin"),
+(1002, "PR", "Përmet"),
+(1002, "PG", "Pogradec"),
+(1002, "PU", "Pukë"),
+(1002, "SR", "Sarandë"),
+(1002, "SK", "Skrapar"),
+(1002, "SH", "Shkodër"),
+(1002, "TE", "Tepelenë"),
+(1002, "TR", "Tiranë"),
+(1002, "TP", "Tropojë"),
+(1002, "VL", "Vlorë"),
+(1011, "ER", "Erevan"),
+(1011, "AG", "Aragacotn"),
+(1011, "AR", "Ararat"),
+(1011, "AV", "Armavir"),
+(1011, "GR", "Gegarkunik\'"),
+(1011, "KT", "Kotayk\'"),
+(1011, "LO", "Lory"),
+(1011, "SH", "Sirak"),
+(1011, "SU", "Syunik\'"),
+(1011, "TV", "Tavus"),
+(1011, "VD", "Vayoc Jor"),
+(1005, "07", "Andorra la Vella"),
+(1005, "02", "Canillo"),
+(1005, "03", "Encamp"),
+(1005, "08", "Escaldes-Engordany"),
+(1005, "04", "La Massana"),
+(1005, "05", "Ordino"),
+(1005, "06", "Sant Julia de Loria"),
+(1006, "BGO", "Bengo"),
+(1006, "BGU", "Benguela"),
+(1006, "BIE", "Bie"),
+(1006, "CAB", "Cabinda"),
+(1006, "CCU", "Cuando-Cubango"),
+(1006, "CNO", "Cuanza Norte"),
+(1006, "CUS", "Cuanza Sul"),
+(1006, "CNN", "Cunene"),
+(1006, "HUA", "Huambo"),
+(1006, "HUI", "Huila"),
+(1006, "LUA", "Luanda"),
+(1006, "LNO", "Lunda Norte"),
+(1006, "LSU", "Lunda Sul"),
+(1006, "MAL", "Malange"),
+(1006, "MOX", "Moxico"),
+(1006, "NAM", "Namibe"),
+(1006, "UIG", "Uige"),
+(1006, "ZAI", "Zaire"),
+(1009, "03", "Saint George"),
+(1009, "04", "Saint John"),
+(1009, "05", "Saint Mary"),
+(1009, "06", "Saint Paul"),
+(1009, "07", "Saint Peter"),
+(1009, "08", "Saint Philip"),
+(1009, "10", "Barbuda"),
+(1009, "11", "Redonda"),
+(1010, "C", "Capital federal"),
+(1010, "B", "Buenos Aires"),
+(1010, "K", "Catamarca"),
+(1010, "X", "Cordoba"),
+(1010, "W", "Corrientes"),
+(1010, "H", "Chaco"),
+(1010, "U", "Chubut"),
+(1010, "E", "Entre Rios"),
+(1010, "P", "Formosa"),
+(1010, "Y", "Jujuy"),
+(1010, "L", "La Pampa"),
+(1010, "M", "Mendoza"),
+(1010, "N", "Misiones"),
+(1010, "Q", "Neuquen"),
+(1010, "R", "Rio Negro"),
+(1010, "A", "Salta"),
+(1010, "J", "San Juan"),
+(1010, "D", "San Luis"),
+(1010, "Z", "Santa Cruz"),
+(1010, "S", "Santa Fe"),
+(1010, "G", "Santiago del Estero"),
+(1010, "V", "Tierra del Fuego"),
+(1010, "T", "Tucuman"),
+(1010, "F", "La Rioja"),
+(1014, "1", "Burgenland"),
+(1014, "2", "Kärnten"),
+(1014, "3", "Niederösterreich"),
+(1014, "4", "Oberösterreich"),
+(1014, "5", "Salzburg"),
+(1014, "6", "Steiermark"),
+(1014, "7", "Tirol"),
+(1014, "8", "Vorarlberg"),
+(1014, "9", "Wien"),
+(1008, "AAT", "Australian Antarctic Territory"),
+(1013, "ACT", "Australian Capital Territory"),
+(1013, "NT", "Northern Territory"),
+(1013, "NSW", "New South Wales"),
+(1013, "QLD", "Queensland"),
+(1013, "SA", "South Australia"),
+(1013, "TAS", "Tasmania"),
+(1013, "VIC", "Victoria"),
+(1013, "WA", "Western Australia"),
+(1015, "NX", "Naxcivan"),
+(1015, "AB", "Ali Bayramli"),
+(1015, "BA", "Baki"),
+(1015, "GA", "Ganca"),
+(1015, "LA", "Lankaran"),
+(1015, "MI", "Mingacevir"),
+(1015, "NA", "Naftalan"),
+(1015, "SA", "Saki"),
+(1015, "SM", "Sumqayit"),
+(1015, "SS", "Susa"),
+(1015, "XA", "Xankandi"),
+(1015, "YE", "Yevlax"),
+(1015, "ABS", "Abseron"),
+(1015, "AGC", "Agcabadi"),
+(1015, "AGM", "Agdam"),
+(1015, "AGS", "Agdas"),
+(1015, "AGA", "Agstafa"),
+(1015, "AGU", "Agsu"),
+(1015, "AST", "Astara"),
+(1015, "BAB", "Babak"),
+(1015, "BAL", "Balakan"),
+(1015, "BAR", "Barda"),
+(1015, "BEY", "Beylagan"),
+(1015, "BIL", "Bilasuvar"),
+(1015, "CAB", "Cabrayll"),
+(1015, "CAL", "Calilabad"),
+(1015, "CUL", "Culfa"),
+(1015, "DAS", "Daskasan"),
+(1015, "DAV", "Davaci"),
+(1015, "FUZ", "Fuzuli"),
+(1015, "GAD", "Gadabay"),
+(1015, "GOR", "Goranboy"),
+(1015, "GOY", "Goycay"),
+(1015, "HAC", "Haciqabul"),
+(1015, "IMI", "Imisli"),
+(1015, "ISM", "Ismayilli"),
+(1015, "KAL", "Kalbacar"),
+(1015, "KUR", "Kurdamir"),
+(1015, "LAC", "Lacin"),
+(1015, "LER", "Lerik"),
+(1015, "MAS", "Masalli"),
+(1015, "NEF", "Neftcala"),
+(1015, "OGU", "Oguz"),
+(1015, "ORD", "Ordubad"),
+(1015, "QAB", "Qabala"),
+(1015, "QAX", "Qax"),
+(1015, "QAZ", "Qazax"),
+(1015, "QOB", "Qobustan"),
+(1015, "QBA", "Quba"),
+(1015, "QBI", "Qubadli"),
+(1015, "QUS", "Qusar"),
+(1015, "SAT", "Saatli"),
+(1015, "SAB", "Sabirabad"),
+(1015, "SAD", "Sadarak"),
+(1015, "SAH", "Sahbuz"),
+(1015, "SAL", "Salyan"),
+(1015, "SMI", "Samaxi"),
+(1015, "SKR", "Samkir"),
+(1015, "SMX", "Samux"),
+(1015, "SAR", "Sarur"),
+(1015, "SIY", "Siyazan"),
+(1015, "TAR", "Tartar"),
+(1015, "TOV", "Tovuz"),
+(1015, "UCA", "Ucar"),
+(1015, "XAC", "Xacmaz"),
+(1015, "XAN", "Xanlar"),
+(1015, "XIZ", "Xizi"),
+(1015, "XCI", "Xocali"),
+(1015, "XVD", "Xocavand"),
+(1015, "YAR", "Yardimli"),
+(1015, "ZAN", "Zangilan"),
+(1015, "ZAQ", "Zaqatala"),
+(1015, "ZAR", "Zardab"),
+(1026, "BIH", "Federacija Bosna i Hercegovina"),
+(1026, "SRP", "Republika Srpska"),
+(1017, "05", "Bagerhat zila"),
+(1017, "01", "Bandarban zila"),
+(1017, "02", "Barguna zila"),
+(1017, "06", "Barisal zila"),
+(1017, "07", "Bhola zila"),
+(1017, "03", "Bogra zila"),
+(1017, "04", "Brahmanbaria zila"),
+(1017, "09", "Chandpur zila"),
+(1017, "10", "Chittagong zila"),
+(1017, "12", "Chuadanga zila"),
+(1017, "08", "Comilla zila"),
+(1017, "11", "Cox\'s Bazar zila"),
+(1017, "13", "Dhaka zila"),
+(1017, "14", "Dinajpur zila"),
+(1017, "15", "Faridpur zila"),
+(1017, "16", "Feni zila"),
+(1017, "19", "Gaibandha zila"),
+(1017, "18", "Gazipur zila"),
+(1017, "17", "Gopalganj zila"),
+(1017, "20", "Habiganj zila"),
+(1017, "24", "Jaipurhat zila"),
+(1017, "21", "Jamalpur zila"),
+(1017, "22", "Jessore zila"),
+(1017, "25", "Jhalakati zila"),
+(1017, "23", "Jhenaidah zila"),
+(1017, "29", "Khagrachari zila"),
+(1017, "27", "Khulna zila"),
+(1017, "26", "Kishorganj zila"),
+(1017, "28", "Kurigram zila"),
+(1017, "30", "Kushtia zila"),
+(1017, "31", "Lakshmipur zila"),
+(1017, "32", "Lalmonirhat zila"),
+(1017, "36", "Madaripur zila"),
+(1017, "37", "Magura zila"),
+(1017, "33", "Manikganj zila"),
+(1017, "39", "Meherpur zila"),
+(1017, "38", "Moulvibazar zila"),
+(1017, "35", "Munshiganj zila"),
+(1017, "34", "Mymensingh zila"),
+(1017, "48", "Naogaon zila"),
+(1017, "43", "Narail zila"),
+(1017, "40", "Narayanganj zila"),
+(1017, "42", "Narsingdi zila"),
+(1017, "44", "Natore zila"),
+(1017, "45", "Nawabganj zila"),
+(1017, "41", "Netrakona zila"),
+(1017, "46", "Nilphamari zila"),
+(1017, "47", "Noakhali zila"),
+(1017, "49", "Pabna zila"),
+(1017, "52", "Panchagarh zila"),
+(1017, "51", "Patuakhali zila"),
+(1017, "50", "Pirojpur zila"),
+(1017, "53", "Rajbari zila"),
+(1017, "54", "Rajshahi zila"),
+(1017, "56", "Rangamati zila"),
+(1017, "55", "Rangpur zila"),
+(1017, "58", "Satkhira zila"),
+(1017, "62", "Shariatpur zila"),
+(1017, "57", "Sherpur zila"),
+(1017, "59", "Sirajganj zila"),
+(1017, "61", "Sunamganj zila"),
+(1017, "60", "Sylhet zila"),
+(1017, "63", "Tangail zila"),
+(1017, "64", "Thakurgaon zila"),
+(1018, "01", "Christ Church"),
+(1018, "02", "Saint Andrew"),
+(1018, "03", "Saint George"),
+(1018, "04", "Saint James"),
+(1018, "05", "Saint John"),
+(1018, "06", "Saint Joseph"),
+(1018, "07", "Saint Lucy"),
+(1018, "08", "Saint Michael"),
+(1018, "09", "Saint Peter"),
+(1018, "10", "Saint Philip"),
+(1018, "11", "Saint Thomas"),
+(1020, "BRU", "Brussels"),
+(1020, "VAN", "Antwerpen"),
+(1020, "WBR", "Brabant Wallon"),
+(1020, "WHT", "Hainaut"),
+(1020, "WLG", "Liege"),
+(1020, "VLI", "Limburg"),
+(1020, "WLX", "Luxembourg"),
+(1020, "WNA", "Namur"),
+(1020, "VOV", "Oost-Vlaanderen"),
+(1020, "VBR", "Vlaams-Brabant"),
+(1020, "VWV", "West-Vlaanderen"),
+(1023, 'DEV', 'Devonshire'),
+(1023, 'HAM', 'Hamilton Parish'),
+(1023, 'HA', 'City of Hamilton'),
+(1023, 'PAG', 'Paget'),
+(1023, 'PEM', 'Pembroke'),
+(1023, 'SG', 'Town of St. George'),
+(1023, 'SGE', 'Saint George\'s'),
+(1023, 'SAN', 'Sandys'),
+(1023, 'SMI', 'Smiths'),
+(1023, 'SOU', 'Southampton'),
+(1023, 'WAR', 'Warwick'),
+(1034, "BAL", "Bale"),
+(1034, "BAM", "Bam"),
+(1034, "BAN", "Banwa"),
+(1034, "BAZ", "Bazega"),
+(1034, "BGR", "Bougouriba"),
+(1034, "BLG", "Boulgou"),
+(1034, "BLK", "Boulkiemde"),
+(1034, "COM", "Comoe"),
+(1034, "GAN", "Ganzourgou"),
+(1034, "GNA", "Gnagna"),
+(1034, "GOU", "Gourma"),
+(1034, "HOU", "Houet"),
+(1034, "IOB", "Ioba"),
+(1034, "KAD", "Kadiogo"),
+(1034, "KEN", "Kenedougou"),
+(1034, "KMD", "Komondjari"),
+(1034, "KMP", "Kompienga"),
+(1034, "KOS", "Kossi"),
+(1034, "KOP", "Koulpulogo"),
+(1034, "KOT", "Kouritenga"),
+(1034, "KOW", "Kourweogo"),
+(1034, "LER", "Leraba"),
+(1034, "LOR", "Loroum"),
+(1034, "MOU", "Mouhoun"),
+(1034, "NAO", "Nahouri"),
+(1034, "NAM", "Namentenga"),
+(1034, "NAY", "Nayala"),
+(1034, "NOU", "Noumbiel"),
+(1034, "OUB", "Oubritenga"),
+(1034, "OUD", "Oudalan"),
+(1034, "PAS", "Passore"),
+(1034, "PON", "Poni"),
+(1034, "SNG", "Sanguie"),
+(1034, "SMT", "Sanmatenga"),
+(1034, "SEN", "Seno"),
+(1034, "SIS", "Siasili"),
+(1034, "SOM", "Soum"),
+(1034, "SOR", "Sourou"),
+(1034, "TAP", "Tapoa"),
+(1034, "TUI", "Tui"),
+(1034, "YAG", "Yagha"),
+(1034, "YAT", "Yatenga"),
+(1034, "ZIR", "Ziro"),
+(1034, "ZON", "Zondoma"),
+(1034, "ZOU", "Zoundweogo"),
+(1033, "01", "Blagoevgrad"),
+(1033, "02", "Burgas"),
+(1033, "08", "Dobrich"),
+(1033, "07", "Gabrovo"),
+(1033, "26", "Haskovo"),
+(1033, "28", "Yambol"),
+(1033, "09", "Kardzhali"),
+(1033, "10", "Kyustendil"),
+(1033, "11", "Lovech"),
+(1033, "12", "Montana"),
+(1033, "13", "Pazardzhik"),
+(1033, "14", "Pernik"),
+(1033, "15", "Pleven"),
+(1033, "16", "Plovdiv"),
+(1033, "17", "Razgrad"),
+(1033, "18", "Ruse"),
+(1033, "19", "Silistra"),
+(1033, "20", "Sliven"),
+(1033, "21", "Smolyan"),
+(1033, "23", "Sofia"),
+(1033, "24", "Stara Zagora"),
+(1033, "27", "Shumen"),
+(1033, "25", "Targovishte"),
+(1033, "03", "Varna"),
+(1033, "04", "Veliko Tarnovo"),
+(1033, "05", "Vidin"),
+(1033, "06", "Vratsa"),
+(1016, "01", "Al Hadd"),
+(1016, "03", "Al Manamah"),
+(1016, "10", "Al Mintaqah al Gharbiyah"),
+(1016, "07", "Al Mintagah al Wusta"),
+(1016, "05", "Al Mintaqah ash Shamaliyah"),
+(1016, "02", "Al Muharraq"),
+(1016, "09", "Ar Rifa"),
+(1016, "04", "Jidd Hafs"),
+(1016, "12", "Madluat Jamad"),
+(1016, "08", "Madluat Isa"),
+(1016, "11", "Mintaqat Juzur tawar"),
+(1016, "06", "Sitrah"),
+(1036, "BB", "Bubanza"),
+(1036, "BJ", "Bujumbura"),
+(1036, "BR", "Bururi"),
+(1036, "CA", "Cankuzo"),
+(1036, "CI", "Cibitoke"),
+(1036, "GI", "Gitega"),
+(1036, "KR", "Karuzi"),
+(1036, "KY", "Kayanza"),
+(1036, "MA", "Makamba"),
+(1036, "MU", "Muramvya"),
+(1036, "MW", "Mwaro"),
+(1036, "NG", "Ngozi"),
+(1036, "RT", "Rutana"),
+(1036, "RY", "Ruyigi"),
+(1022, "AL", "Alibori"),
+(1022, "AK", "Atakora"),
+(1022, "AQ", "Atlantique"),
+(1022, "BO", "Borgou"),
+(1022, "CO", "Collines"),
+(1022, "DO", "Donga"),
+(1022, "KO", "Kouffo"),
+(1022, "LI", "Littoral"),
+(1022, "MO", "Mono"),
+(1022, "OU", "Oueme"),
+(1022, "PL", "Plateau"),
+(1022, "ZO", "Zou"),
+(1032, "BE", "Belait"),
+(1032, "BM", "Brunei-Muara"),
+(1032, "TE", "Temburong"),
+(1032, "TU", "Tutong"),
+(1025, "C", "Cochabamba"),
+(1025, "H", "Chuquisaca"),
+(1025, "B", "El Beni"),
+(1025, "L", "La Paz"),
+(1025, "O", "Oruro"),
+(1025, "N", "Pando"),
+(1025, "P", "Potosi"),
+(1025, "T", "Tarija"),
+(1029, "AC", "Acre"),
+(1029, "AL", "Alagoas"),
+(1029, "AM", "Amazonas"),
+(1029, "AP", "Amapa"),
+(1029, "BA", "Bahia"),
+(1029, "CE", "Ceara"),
+(1029, "DF", "Distrito Federal"),
+(1029, "ES", "Espirito Santo"),
+(1029, "GO", "Goias"),
+(1029, "MA", "Maranhao"),
+(1029, "MG", "Minas Gerais"),
+(1029, "MS", "Mato Grosso do Sul"),
+(1029, "MT", "Mato Grosso"),
+(1029, "PA", "Para"),
+(1029, "PB", "Paraiba"),
+(1029, "PE", "Pernambuco"),
+(1029, "PI", "Piaui"),
+(1029, "PR", "Parana"),
+(1029, "RJ", "Rio de Janeiro"),
+(1029, "RN", "Rio Grande do Norte"),
+(1029, "RO", "Rondonia"),
+(1029, "RR", "Roraima"),
+(1029, "RS", "Rio Grande do Sul"),
+(1029, "SC", "Santa Catarina"),
+(1029, "SE", "Sergipe"),
+(1029, "SP", "Sao Paulo"),
+(1029, "TO", "Tocantins"),
+(1212, "AC", "Acklins and Crooked Islands"),
+(1212, "BI", "Bimini"),
+(1212, "CI", "Cat Island"),
+(1212, "EX", "Exuma"),
+(1212, "IN", "Inagua"),
+(1212, "LI", "Long Island"),
+(1212, "MG", "Mayaguana"),
+(1212, "NP", "New Providence"),
+(1212, "RI", "Ragged Island"),
+(1212, "AB", "Abaco Islands"),
+(1212, "AN", "Andros Island"),
+(1212, "BR", "Berry Islands"),
+(1212, "EL", "Eleuthera"),
+(1212, "GB", "Grand Bahama"),
+(1212, "RC", "Rum Cay"),
+(1212, "SS", "San Salvador Island"),
+(1024, "33", "Bumthang"),
+(1024, "12", "Chhukha"),
+(1024, "22", "Dagana"),
+(1024, "GA", "Gasa"),
+(1024, "13", "Ha"),
+(1024, "44", "Lhuentse"),
+(1024, "42", "Monggar"),
+(1024, "11", "Paro"),
+(1024, "43", "Pemagatshel"),
+(1024, "23", "Punakha"),
+(1024, "45", "Samdrup Jongkha"),
+(1024, "14", "Samtee"),
+(1024, "31", "Sarpang"),
+(1024, "15", "Thimphu"),
+(1024, "41", "Trashigang"),
+(1024, "TY", "Trashi Yangtse"),
+(1024, "32", "Trongsa"),
+(1024, "21", "Tsirang"),
+(1024, "24", "Wangdue Phodrang"),
+(1024, "34", "Zhemgang"),
+(1027, "CE", "Central"),
+(1027, "GH", "Ghanzi"),
+(1027, "KG", "Kgalagadi"),
+(1027, "KL", "Kgatleng"),
+(1027, "KW", "Kweneng"),
+(1027, "NG", "Ngamiland"),
+(1027, "NE", "North-East"),
+(1027, "NW", "North-West"),
+(1027, "SE", "South-East"),
+(1027, "SO", "Southern"),
+(1019, "BR", "Brèsckaja voblasc\'"),
+(1019, "HO", "Homel\'skaja voblasc\'"),
+(1019, "HR", "Hrodzenskaja voblasc\'"),
+(1019, "MA", "Mahilëuskaja voblasc\'"),
+(1019, "MI", "Minskaja voblasc\'"),
+(1019, "VI", "Vicebskaja voblasc\'"),
+(1021, "BZ", "Belize"),
+(1021, "CY", "Cayo"),
+(1021, "CZL", "Corozal"),
+(1021, "OW", "Orange Walk"),
+(1021, "SC", "Stann Creek"),
+(1021, "TOL", "Toledo"),
+(1050, "KN", "Kinshasa"),
+(1050, "EQ", "Equateur"),
+(1050, "KE", "Kasai-Oriental"),
+(1050, "MA", "Maniema"),
+(1050, "NK", "Nord-Kivu"),
+(1050, "SK", "Sud-Kivu"),
+(1042, "BGF", "Bangui"),
+(1042, "BB", "Bamingui-Bangoran"),
+(1042, "BK", "Basse-Kotto"),
+(1042, "HK", "Haute-Kotto"),
+(1042, "HM", "Haut-Mbomou"),
+(1042, "KG", "Kemo"),
+(1042, "LB", "Lobaye"),
+(1042, "HS", "Mambere-Kadei"),
+(1042, "MB", "Mbomou"),
+(1042, "KB", "Nana-Grebizi"),
+(1042, "NM", "Nana-Mambere"),
+(1042, "MP", "Ombella-Mpoko"),
+(1042, "UK", "Ouaka"),
+(1042, "AC", "Ouham"),
+(1042, "OP", "Ouham-Pende"),
+(1042, "SE", "Sangha-Mbaere"),
+(1042, "VR", "Vakaga"),
+(1050, "01", "Kongo central"),
+(1050, "02", "Kwango"),
+(1050, "03", "Kwilu"),
+(1050, "04", "Mai-Ndombe"),
+(1050, "05", "Kasai"),
+(1050, "06", "Lulua"),
+(1050, "07", "Lomami"),
+(1050, "08", "Sankuru"),
+(1050, "09", "Ituri"),
+(1050, "10", "Haut-Uele"),
+(1050, "11", "Tshopo"),
+(1050, "12", "Bas-Uele"),
+(1050, "13", "Nord-Ubangi"),
+(1050, "14", "Mongala"),
+(1050, "15", "Sud-Ubangi"),
+(1050, "16", "Tshuapa"),
+(1050, "17", "Haut-Lomami"),
+(1050, "18", "Lualaba"),
+(1050, "19", "Haut-Katanga"),
+(1050, "20", "Tanganyika"),
+(1051, "BZV", "Brazzaville"),
+(1051, "11", "Bouenza"),
+(1051, "8", "Cuvette"),
+(1051, "15", "Cuvette-Ouest"),
+(1051, "5", "Kouilou"),
+(1051, "2", "Lekoumou"),
+(1051, "7", "Likouala"),
+(1051, "9", "Niari"),
+(1051, "14", "Plateaux"),
+(1051, "12", "Pool"),
+(1051, "13", "Sangha"),
+(1080, "01", "Estuaire"),
+(1080, "02", "Haut-Ogooué"),
+(1080, "03", "Moyen-Ogooué"),
+(1080, "04", "Ngounié"),
+(1080, "05", "Nyanga"),
+(1080, "06", "Ogooué-Ivindo"),
+(1080, "07", "Ogooué-Lolo"),
+(1080, "08", "Ogooué-Maritime"),
+(1080, "09", "Woleu-Ntem"),
+(1205, "AG", "Aargau"),
+(1205, "AI", "Appenzell Innerrhoden"),
+(1205, "AR", "Appenzell Ausserrhoden"),
+(1205, "BE", "Bern"),
+(1205, "BL", "Basel-Landschaft"),
+(1205, "BS", "Basel-Stadt"),
+(1205, "FR", "Fribourg"),
+(1205, "GE", "Geneva"),
+(1205, "GL", "Glarus"),
+(1205, "GR", "Graubunden"),
+(1205, "JU", "Jura"),
+(1205, "LU", "Luzern"),
+(1205, "NE", "Neuchatel"),
+(1205, "NW", "Nidwalden"),
+(1205, "OW", "Obwalden"),
+(1205, "SG", "Sankt Gallen"),
+(1205, "SH", "Schaffhausen"),
+(1205, "SO", "Solothurn"),
+(1205, "SZ", "Schwyz"),
+(1205, "TG", "Thurgau"),
+(1205, "TI", "Ticino"),
+(1205, "UR", "Uri"),
+(1205, "VD", "Vaud"),
+(1205, "VS", "Valais"),
+(1205, "ZG", "Zug"),
+(1205, "ZH", "Zurich"),
+(1054, "06", "18 Montagnes"),
+(1054, "16", "Agnebi"),
+(1054, "09", "Bas-Sassandra"),
+(1054, "10", "Denguele"),
+(1054, "02", "Haut-Sassandra"),
+(1054, "07", "Lacs"),
+(1054, "01", "Lagunes"),
+(1054, "12", "Marahoue"),
+(1054, "05", "Moyen-Comoe"),
+(1054, "11", "Nzi-Comoe"),
+(1054, "03", "Savanes"),
+(1054, "15", "Sud-Bandama"),
+(1054, "13", "Sud-Comoe"),
+(1054, "04", "Vallee du Bandama"),
+(1054, "14", "Worodouqou"),
+(1054, "08", "Zanzan"),
+(1044, "AI", "Aisen del General Carlos Ibanez del Campo"),
+(1044, "AN", "Antofagasta"),
+(1044, "AR", "Araucania"),
+(1044, "AT", "Atacama"),
+(1044, "BI", "Bio-Bio"),
+(1044, "CO", "Coquimbo"),
+(1044, "LI", "Libertador General Bernardo O\'Higgins"),
+(1044, "LL", "Los Lagos"),
+(1044, "MA", "Magallanes"),
+(1044, "ML", "Maule"),
+(1044, "SM", "Santiago Metropolitan"),
+(1044, "TA", "Tarapaca"),
+(1044, "VS", "Valparaiso"),
+(1044, "LR", "Los Rios"),
+(1044, "AP", "Arica y Parinacota"),
+(1038, "AD", "Adamaoua"),
+(1038, "CE", "Centre"),
+(1038, "ES", "East"),
+(1038, "EN", "Far North"),
+(1038, "NO", "North"),
+(1038, "SW", "South"),
+(1038, "SW", "South-West"),
+(1038, "OU", "West"),
+(1038, "LT", "Littoral"),
+(1038, "NW", "Nord-Ouest"),
+(1045, "11", "Beijing"),
+(1045, "50", "Chongqing"),
+(1045, "31", "Shanghai"),
+(1045, "12", "Tianjin"),
+(1045, "34", "Anhui"),
+(1045, "35", "Fujian"),
+(1045, "62", "Gansu"),
+(1045, "44", "Guangdong"),
+(1045, "52", "Guizhou"),
+(1045, "46", "Hainan"),
+(1045, "13", "Hebei"),
+(1045, "23", "Heilongjiang"),
+(1045, "41", "Henan"),
+(1045, "42", "Hubei"),
+(1045, "43", "Hunan"),
+(1045, "32", "Jiangsu"),
+(1045, "36", "Jiangxi"),
+(1045, "22", "Jilin"),
+(1045, "21", "Liaoning"),
+(1045, "63", "Qinghai"),
+(1045, "61", "Shaanxi"),
+(1045, "37", "Shandong"),
+(1045, "14", "Shanxi"),
+(1045, "51", "Sichuan"),
+(1045, "71", "Taiwan"),
+(1045, "53", "Yunnan"),
+(1045, "33", "Zhejiang"),
+(1045, "45", "Guangxi"),
+(1045, "15", "Neia Mongol (mn)"),
+(1045, "65", "Xinjiang"),
+(1045, "54", "Xizang"),
+(1045, "91", "Hong Kong"),
+(1045, "92", "Macau"),
+(1045, "YN", "Yinchuan"),
+(1045, "SZ", "Shizuishan"),
+(1045, "WZ", "Wuzhong"),
+(1045, "GY", "Guyuan"),
+(1045, "ZW", "Zhongwei"),
+(1048, "DC", "Distrito Capital de Bogotá"),
+(1048, "AMA", "Amazonea"),
+(1048, "ANT", "Antioquia"),
+(1048, "ARA", "Arauca"),
+(1048, "ATL", "Atlántico"),
+(1048, "BOL", "Bolívar"),
+(1048, "BOY", "Boyacá"),
+(1048, "CAL", "Caldea"),
+(1048, "CAQ", "Caquetá"),
+(1048, "CAS", "Casanare"),
+(1048, "CAU", "Cauca"),
+(1048, "CES", "Cesar"),
+(1048, "COR", "Córdoba"),
+(1048, "CUN", "Cundinamarca"),
+(1048, "CHO", "Chocó"),
+(1048, "GUA", "Guainía"),
+(1048, "GUV", "Guaviare"),
+(1048, "LAG", "La Guajira"),
+(1048, "MAG", "Magdalena"),
+(1048, "MET", "Meta"),
+(1048, "NAR", "Nariño"),
+(1048, "NSA", "Norte de Santander"),
+(1048, "PUT", "Putumayo"),
+(1048, "QUI", "Quindio"),
+(1048, "RIS", "Risaralda"),
+(1048, "SAP", "San Andrés, Providencia y Santa Catalina"),
+(1048, "SAN", "Santander"),
+(1048, "SUC", "Sucre"),
+(1048, "TOL", "Tolima"),
+(1048, "VAC", "Valle del Cauca"),
+(1048, "VAU", "Vaupés"),
+(1048, "VID", "Vichada"),
+(1048, "HUI", "Huila"),
+(1053, "A", "Alajuela"),
+(1053, "C", "Cartago"),
+(1053, "G", "Guanacaste"),
+(1053, "H", "Heredia"),
+(1053, "L", "Limon"),
+(1053, "P", "Puntarenas"),
+(1053, "SJ", "San Jose"),
+(1056, "09", "Camagey"),
+(1056, "08", "Ciego de `vila"),
+(1056, "06", "Cienfuegos"),
+(1056, "03", "Ciudad de La Habana"),
+(1056, "12", "Granma"),
+(1056, "14", "Guantanamo"),
+(1056, "11", "Holquin"),
+(1056, "02", "La Habana"),
+(1056, "10", "Las Tunas"),
+(1056, "04", "Matanzas"),
+(1056, "01", "Pinar del Rio"),
+(1056, "07", "Sancti Spiritus"),
+(1056, "13", "Santiago de Cuba"),
+(1056, "05", "Villa Clara"),
+(1056, "99", "Isla de la Juventud"),
+(1056, "PR", "Pinar del Roo"),
+(1056, "CA", "Ciego de Avila"),
+(1056, "CG", "Camagoey"),
+(1056, "HO", "Holgun"),
+(1056, "SS", "Sancti Spritus"),
+(1056, "IJ", "Municipio Especial Isla de la Juventud"),
+(1040, "BV", "Boa Vista"),
+(1040, "BR", "Brava"),
+(1040, "CS", "Calheta de Sao Miguel"),
+(1040, "FO", "Fogo"),
+(1040, "MA", "Maio"),
+(1040, "MO", "Mosteiros"),
+(1040, "PA", "Paul"),
+(1040, "PN", "Porto Novo"),
+(1040, "PR", "Praia"),
+(1040, "RG", "Ribeira Grande"),
+(1040, "SL", "Sal"),
+(1040, "SD", "Sao Domingos"),
+(1040, "SF", "Sao Filipe"),
+(1040, "SN", "Sao Nicolau"),
+(1040, "SV", "Sao Vicente"),
+(1040, "TA", "Tarrafal"),
+(1057, "04", "Ammochostos Magusa"),
+(1057, "06", "Keryneia"),
+(1057, "03", "Larnaka"),
+(1057, "01", "Lefkosia"),
+(1057, "02", "Lemesos"),
+(1057, "05", "Pafos"),
+(1058, "JC", "Jihočeský kraj"),
+(1058, "JM", "Jihomoravský kraj"),
+(1058, "KA", "Karlovarský kraj"),
+(1058, "KR", "Královéhradecký kraj"),
+(1058, "LI", "Liberecký kraj"),
+(1058, "MO", "Moravskoslezský kraj"),
+(1058, "OL", "Olomoucký kraj"),
+(1058, "PA", "Pardubický kraj"),
+(1058, "PL", "Plzeňský kraj"),
+(1058, "PR", "Praha, hlavní město"),
+(1058, "ST", "Středočeský kraj"),
+(1058, "US", "Ústecký kraj"),
+(1058, "VY", "Vysočina"),
+(1058, "ZL", "Zlínský kraj"),
+(1081, "AB", "Abkhazia"),
+(1081, "AJ", "Adjara"),
+(1081, "TB", "Tbilisi"),
+(1081, "GU", "Guria"),
+(1081, "IM", "Imereti"),
+(1081, "KA", "Kakheti"),
+(1081, "KK", "Kvemo Kartli"),
+(1081, "MM", "Mtskheta-Mtianeti"),
+(1081, "RL", "Racha-Lechkhumi and Kvemo Svaneti"),
+(1081, "SZ", "Samegrelo-Zemo Svaneti"),
+(1081, "SJ", "Samtskhe-Javakheti"),
+(1081, "SK", "Shida Kartli"),
+(1082, "BW", "Baden-Württemberg"),
+(1082, "BY", "Bayern"),
+(1082, "HB", "Bremen"),
+(1082, "HH", "Hamburg"),
+(1082, "HE", "Hessen"),
+(1082, "NI", "Niedersachsen"),
+(1082, "NW", "Nordrhein-Westfalen"),
+(1082, "RP", "Rheinland-Pfalz"),
+(1082, "SL", "Saarland"),
+(1082, "SH", "Schleswig-Holstein"),
+(1082, "BE", "Berlin"),
+(1082, "BB", "Brandenburg"),
+(1082, "MV", "Mecklenburg-Vorpommern"),
+(1082, "SN", "Sachsen"),
+(1082, "ST", "Sachsen-Anhalt"),
+(1082, "TH", "Thüringen"),
+(1060, "AS", "Ali Sabiah"),
+(1060, "DI", "Dikhil"),
+(1060, "DJ", "Djibouti"),
+(1060, "OB", "Obock"),
+(1060, "TA", "Tadjoura"),
+(1059, "147", "Frederiksberg"),
+(1059, "101", "Copenhagen City"),
+(1059, "015", "Copenhagen"),
+(1059, "020", "Frederiksborg"),
+(1059, "025", "Roskilde"),
+(1059, "030", "Vestsjælland"),
+(1059, "035", "Storstrøm"),
+(1059, "040", "Bornholm"),
+(1059, "042", "Fyn"),
+(1059, "050", "South Jutland"),
+(1059, "055", "Ribe"),
+(1059, "060", "Vejle"),
+(1059, "065", "Ringkjøbing"),
+(1059, "070", "Ã…rhus"),
+(1059, "076", "Viborg"),
+(1059, "080", "North Jutland"),
+(1062, "01", "Distrito Nacional (Santo Domingo)"),
+(1062, "02", "Azua"),
+(1062, "03", "Bahoruco"),
+(1062, "04", "Barahona"),
+(1062, "05", "Dajabón"),
+(1062, "06", "Duarte"),
+(1062, "08", "El Seybo [El Seibo]"),
+(1062, "09", "Espaillat"),
+(1062, "30", "Hato Mayor"),
+(1062, "10", "Independencia"),
+(1062, "11", "La Altagracia"),
+(1062, "07", "La Estrelleta [Elias Pina]"),
+(1062, "12", "La Romana"),
+(1062, "13", "La Vega"),
+(1062, "14", "Maroia Trinidad Sánchez"),
+(1062, "28", "Monseñor Nouel"),
+(1062, "15", "Monte Cristi"),
+(1062, "29", "Monte Plata"),
+(1062, "16", "Pedernales"),
+(1062, "17", "Peravia"),
+(1062, "18", "Puerto Plata"),
+(1062, "19", "Salcedo"),
+(1062, "20", "Samaná"),
+(1062, "21", "San Cristóbal"),
+(1062, "23", "San Pedro de Macorís"),
+(1062, "24", "Sánchez Ramírez"),
+(1062, "25", "Santiago"),
+(1062, "26", "Santiago Rodríguez"),
+(1062, "27", "Valverde"),
+(1003, "01", "Adrar"),
+(1003, "44", "Ain Defla"),
+(1003, "46", "Ain Tmouchent"),
+(1003, "16", "Alger"),
+(1003, "23", "Annaba"),
+(1003, "05", "Batna"),
+(1003, "08", "Bechar"),
+(1003, "06", "Bejaia"),
+(1003, "07", "Biskra"),
+(1003, "09", "Blida"),
+(1003, "34", "Bordj Bou Arreridj"),
+(1003, "10", "Bouira"),
+(1003, "35", "Boumerdes"),
+(1003, "02", "Chlef"),
+(1003, "25", "Constantine"),
+(1003, "17", "Djelfa"),
+(1003, "32", "El Bayadh"),
+(1003, "39", "El Oued"),
+(1003, "36", "El Tarf"),
+(1003, "47", "Ghardaia"),
+(1003, "24", "Guelma"),
+(1003, "33", "Illizi"),
+(1003, "18", "Jijel"),
+(1003, "40", "Khenchela"),
+(1003, "03", "Laghouat"),
+(1003, "29", "Mascara"),
+(1003, "26", "Medea"),
+(1003, "43", "Mila"),
+(1003, "27", "Mostaganem"),
+(1003, "28", "Msila"),
+(1003, "45", "Naama"),
+(1003, "31", "Oran"),
+(1003, "30", "Ouargla"),
+(1003, "04", "Oum el Bouaghi"),
+(1003, "48", "Relizane"),
+(1003, "20", "Saida"),
+(1003, "19", "Setif"),
+(1003, "22", "Sidi Bel Abbes"),
+(1003, "21", "Skikda"),
+(1003, "41", "Souk Ahras"),
+(1003, "11", "Tamanghasset"),
+(1003, "12", "Tebessa"),
+(1003, "14", "Tiaret"),
+(1003, "37", "Tindouf"),
+(1003, "42", "Tipaza"),
+(1003, "38", "Tissemsilt"),
+(1003, "15", "Tizi Ouzou"),
+(1003, "13", "Tlemcen"),
+(1064, "A", "Azuay"),
+(1064, "B", "Bolivar"),
+(1064, "F", "Canar"),
+(1064, "C", "Carchi"),
+(1064, "X", "Cotopaxi"),
+(1064, "H", "Chimborazo"),
+(1064, "O", "El Oro"),
+(1064, "E", "Esmeraldas"),
+(1064, "W", "Galapagos"),
+(1064, "G", "Guayas"),
+(1064, "I", "Imbabura"),
+(1064, "L", "Loja"),
+(1064, "R", "Los Rios"),
+(1064, "M", "Manabi"),
+(1064, "S", "Morona-Santiago"),
+(1064, "N", "Napo"),
+(1064, "D", "Orellana"),
+(1064, "Y", "Pastaza"),
+(1064, "P", "Pichincha"),
+(1064, "U", "Sucumbios"),
+(1064, "T", "Tungurahua"),
+(1064, "Z", "Zamora-Chinchipe"),
+(1069, "37", "Harjumaa"),
+(1069, "39", "Hiiumaa"),
+(1069, "44", "Ida-Virumaa"),
+(1069, "49", "Jõgevamaa"),
+(1069, "51", "Järvamaa"),
+(1069, "57", "Läänemaa"),
+(1069, "59", "Lääne-Virumaa"),
+(1069, "65", "Põlvamaa"),
+(1069, "67", "Pärnumaa"),
+(1069, "70", "Raplamaa"),
+(1069, "74", "Saaremaa"),
+(1069, "7B", "Tartumaa"),
+(1069, "82", "Valgamaa"),
+(1069, "84", "Viljandimaa"),
+(1069, "86", "Võrumaa"),
+(1065, "DK", "Ad Daqahllyah"),
+(1065, "BA", "Al Bahr al Ahmar"),
+(1065, "BH", "Al Buhayrah"),
+(1065, "FYM", "Al Fayym"),
+(1065, "GH", "Al Gharbiyah"),
+(1065, "ALX", "Al Iskandarlyah"),
+(1065, "IS", "Al Isma illyah"),
+(1065, "GZ", "Al Jizah"),
+(1065, "MNF", "Al Minuflyah"),
+(1065, "MN", "Al Minya"),
+(1065, "C", "Al Qahirah"),
+(1065, "KB", "Al Qalyublyah"),
+(1065, "WAD", "Al Wadi al Jadid"),
+(1065, "SHR", "Ash Sharqiyah"),
+(1065, "SUZ", "As Suways"),
+(1065, "ASN", "Aswan"),
+(1065, "AST", "Asyut"),
+(1065, "BNS", "Bani Suwayf"),
+(1065, "PTS", "Bur Sa\'id"),
+(1065, "DT", "Dumyat"),
+(1065, "JS", "Janub Sina\'"),
+(1065, "KFS", "Kafr ash Shaykh"),
+(1065, "MT", "Matruh"),
+(1065, "KN", "Qina"),
+(1065, "SIN", "Shamal Sina\'"),
+(1065, "SHG", "Suhaj"),
+(1068, "AN", "Anseba"),
+(1068, "DU", "Debub"),
+(1068, "DK", "Debubawi Keyih Bahri [Debub-Keih-Bahri]"),
+(1068, "GB", "Gash-Barka"),
+(1068, "MA", "Maakel [Maekel]"),
+(1068, "SK", "Semenawi Keyih Bahri [Semien-Keih-Bahri]"),
+(1198, "VI", "Álava"),
+(1198, "AB", "Albacete"),
+(1198, "A", "Alicante"),
+(1198, "AL", "Almería"),
+(1198, "O", "Asturias"),
+(1198, "AV", "Ávila"),
+(1198, "BA", "Badajoz"),
+(1198, "PM", "Baleares"),
+(1198, "B", "Barcelona"),
+(1198, "BU", "Burgos"),
+(1198, "CC", "Cáceres"),
+(1198, "CA", "Cádiz"),
+(1198, "S", "Cantabria"),
+(1198, "CS", "Castellón"),
+(1198, "CR", "Ciudad Real"),
+(1198, "CU", "Cuenca"),
+(1198, "GE", "Girona [Gerona]"),
+(1198, "GR", "Granada"),
+(1198, "GU", "Guadalajara"),
+(1198, "SS", "Guipúzcoa"),
+(1198, "H", "Huelva"),
+(1198, "HU", "Huesca"),
+(1198, "J", "Jaén"),
+(1198, "C", "La Coruña"),
+(1198, "LO", "La Rioja"),
+(1198, "GC", "Las Palmas"),
+(1198, "LE", "León"),
+(1198, "L", "Lleida [Lérida]"),
+(1198, "LU", "Lugo"),
+(1198, "M", "Madrid"),
+(1198, "MA", "Málaga"),
+(1198, "MU", "Murcia"),
+(1198, "NA", "Navarra"),
+(1198, "OR", "Ourense"),
+(1198, "P", "Palencia"),
+(1198, "PO", "Pontevedra"),
+(1198, "SA", "Salamanca"),
+(1198, "TF", "Santa Cruz de Tenerife"),
+(1198, "SG", "Segovia"),
+(1198, "SE", "Sevilla"),
+(1198, "SO", "Soria"),
+(1198, "T", "Tarragona"),
+(1198, "TE", "Teruel"),
+(1198, "V", "Valencia"),
+(1198, "VA", "Valladolid"),
+(1198, "BI", "Vizcaya"),
+(1198, "ZA", "Zamora"),
+(1198, "Z", "Zaragoza"),
+(1198, "CE", "Ceuta"),
+(1198, "ML", "Melilla"),
+(1198, "TO", "Toledo"),
+(1198, "CO", "Córdoba"),
+(1070, "AA", "Addis Ababa"),
+(1070, "DD", "Dire Dawa"),
+(1070, "AF", "Afar"),
+(1070, "AM", "Amara"),
+(1070, "BE", "Benshangul-Gumaz"),
+(1070, "GA", "Gambela Peoples"),
+(1070, "HA", "Harari People"),
+(1070, "OR", "Oromia"),
+(1070, "SO", "Somali"),
+(1070, "SN", "Southern Nations, Nationalities and Peoples"),
+(1070, "TI", "Tigrai"),
 -- (2484, 1075, "AL", "Ahvenanmasn laani"),
 -- (2485, 1075, "ES", "Etela-Suomen laani"),
 -- (2486, 1075, "IS", "Ita-Suomen lasni"),
 -- (2487, 1075, "LL", "Lapin Laani"),
 -- (2488, 1075, "LS", "Lansi-Suomen Laani"),
 -- (2489, 1075, "OL", "Oulun Lasni"),
-(2490, 1074, "E", "Eastern"),
-(2491, 1074, "N", "Northern"),
-(2492, 1074, "W", "Western"),
-(2493, 1074, "R", "Rotuma"),
-(2494, 1141, "TRK", "Chuuk"),
-(2495, 1141, "KSA", "Kosrae"),
-(2496, 1141, "PNI", "Pohnpei"),
-(2497, 1141, "YAP", "Yap"),
-(2498, 1076, "01", "Ain"),
-(2499, 1076, "02", "Aisne"),
-(2500, 1076, "03", "Allier"),
-(2501, 1076, "04", "Alpes-de-Haute-Provence"),
-(2502, 1076, "06", "Alpes-Maritimes"),
-(2503, 1076, "07", "Ardèche"),
-(2504, 1076, "08", "Ardennes"),
-(2505, 1076, "09", "Ariège"),
-(2506, 1076, "10", "Aube"),
-(2507, 1076, "11", "Aude"),
-(2508, 1076, "12", "Aveyron"),
-(2509, 1076, "67", "Bas-Rhin"),
-(2510, 1076, "13", "Bouches-du-Rhône"),
-(2511, 1076, "14", "Calvados"),
-(2512, 1076, "15", "Cantal"),
-(2513, 1076, "16", "Charente"),
-(2514, 1076, "17", "Charente-Maritime"),
-(2515, 1076, "18", "Cher"),
-(2516, 1076, "19", "Corrèze"),
-(2517, 1076, "20A", "Corse-du-Sud"),
-(2518, 1076, "21", "Côte-d\'Or"),
-(2519, 1076, "22", "Côtes-d\'Armor"),
-(2520, 1076, "23", "Creuse"),
-(2521, 1076, "79", "Deux-Sèvres"),
-(2522, 1076, "24", "Dordogne"),
-(2523, 1076, "25", "Doubs"),
-(2524, 1076, "26", "Drôme"),
-(2525, 1076, "91", "Essonne"),
-(2526, 1076, "27", "Eure"),
-(2527, 1076, "28", "Eure-et-Loir"),
-(2528, 1076, "29", "Finistère"),
-(2529, 1076, "30", "Gard"),
-(2530, 1076, "32", "Gers"),
-(2531, 1076, "33", "Gironde"),
-(2532, 1076, "68", "Haut-Rhin"),
-(2533, 1076, "20B", "Haute-Corse"),
-(2534, 1076, "31", "Haute-Garonne"),
-(2535, 1076, "43", "Haute-Loire"),
-(2536, 1076, "70", "Haute-Saône"),
-(2537, 1076, "74", "Haute-Savoie"),
-(2538, 1076, "87", "Haute-Vienne"),
-(2539, 1076, "05", "Hautes-Alpes"),
-(2540, 1076, "65", "Hautes-Pyrénées"),
-(2541, 1076, "92", "Hauts-de-Seine"),
-(2542, 1076, "34", "Hérault"),
-(2543, 1076, "36", "Indre"),
-(2544, 1076, "35", "Ille-et-Vilaine"),
-(2545, 1076, "37", "Indre-et-Loire"),
-(2546, 1076, "38", "Isère"),
-(2547, 1076, "40", "Landes"),
-(2548, 1076, "41", "Loir-et-Cher"),
-(2549, 1076, "42", "Loire"),
-(2550, 1076, "44", "Loire-Atlantique"),
-(2551, 1076, "45", "Loiret"),
-(2552, 1076, "46", "Lot"),
-(2553, 1076, "47", "Lot-et-Garonne"),
-(2554, 1076, "48", "Lozère"),
-(2555, 1076, "49", "Maine-et-Loire"),
-(2556, 1076, "50", "Manche"),
-(2557, 1076, "51", "Marne"),
-(2558, 1076, "53", "Mayenne"),
-(2559, 1076, "54", "Meurthe-et-Moselle"),
-(2560, 1076, "55", "Meuse"),
-(2561, 1076, "56", "Morbihan"),
-(2562, 1076, "57", "Moselle"),
-(2563, 1076, "58", "Nièvre"),
-(2564, 1076, "59", "Nord"),
-(2565, 1076, "60", "Oise"),
-(2566, 1076, "61", "Orne"),
-(2567, 1076, "75", "Paris"),
-(2568, 1076, "62", "Pas-de-Calais"),
-(2569, 1076, "63", "Puy-de-Dôme"),
-(2570, 1076, "64", "Pyrénées-Atlantiques"),
-(2571, 1076, "66", "Pyrénées-Orientales"),
-(2572, 1076, "69", "Rhône"),
-(2573, 1076, "71", "Saône-et-Loire"),
-(2574, 1076, "72", "Sarthe"),
-(2575, 1076, "73", "Savoie"),
-(2576, 1076, "77", "Seine-et-Marne"),
-(2577, 1076, "76", "Seine-Maritime"),
-(2578, 1076, "93", "Seine-Saint-Denis"),
-(2579, 1076, "80", "Somme"),
-(2580, 1076, "81", "Tarn"),
-(2581, 1076, "82", "Tarn-et-Garonne"),
-(2582, 1076, "95", "Val d\'Oise"),
-(2583, 1076, "90", "Territoire de Belfort"),
-(2584, 1076, "94", "Val-de-Marne"),
-(2585, 1076, "83", "Var"),
-(2586, 1076, "84", "Vaucluse"),
-(2587, 1076, "85", "Vendée"),
-(2588, 1076, "86", "Vienne"),
-(2589, 1076, "88", "Vosges"),
-(2590, 1076, "89", "Yonne"),
-(2591, 1076, "78", "Yvelines"),
-(2592, 1226, "ABE", "Aberdeen City"),
-(2593, 1226, "ABD", "Aberdeenshire"),
-(2594, 1226, "ANS", "Angus"),
-(2595, 1226, "ANT", "Co Antrim"),
-(2597, 1226, "AGB", "Argyll and Bute"),
-(2598, 1226, "ARM", "Co Armagh"),
-(2606, 1226, "BDF", "Bedfordshire"),
-(2612, 1226, "BGW", "Blaenau Gwent"),
-(2620, 1226, "BST", "Bristol, City of"),
-(2622, 1226, "BKM", "Buckinghamshire"),
-(2626, 1226, "CAM", "Cambridgeshire"),
-(2634, 1226, "CHS", "Cheshire"),
-(2635, 1226, "CLK", "Clackmannanshire"),
-(2639, 1226, "CON", "Cornwall"),
-(2643, 1226, "CMA", "Cumbria"),
-(2647, 1226, "DBY", "Derbyshire"),
-(2648, 1226, "DRY", "Co Londonderry"),
-(2649, 1226, "DEV", "Devon"),
-(2651, 1226, "DOR", "Dorset"),
-(2652, 1226, "DOW", "Co Down"),
-(2654, 1226, "DGY", "Dumfries and Galloway"),
-(2655, 1226, "DND", "Dundee City"),
-(2657, 1226, "DUR", "County Durham"),
-(2659, 1226, "EAY", "East Ayrshire"),
-(2660, 1226, "EDU", "East Dunbartonshire"),
-(2661, 1226, "ELN", "East Lothian"),
-(2662, 1226, "ERW", "East Renfrewshire"),
-(2663, 1226, "ERY", "East Riding of Yorkshire"),
-(2664, 1226, "ESX", "East Sussex"),
-(2665, 1226, "EDH", "Edinburgh, City of"),
-(2666, 1226, "ELS", "Na h-Eileanan Siar"),
-(2668, 1226, "ESS", "Essex"),
-(2669, 1226, "FAL", "Falkirk"),
-(2670, 1226, "FER", "Co Fermanagh"),
-(2671, 1226, "FIF", "Fife"),
-(2674, 1226, "GLG", "Glasgow City"),
-(2675, 1226, "GLS", "Gloucestershire"),
-(2678, 1226, "GWN", "Gwynedd"),
-(2682, 1226, "HAM", "Hampshire"),
-(2687, 1226, "HEF", "Herefordshire"),
-(2688, 1226, "HRT", "Hertfordshire"),
-(2689, 1226, "HED", "Highland"),
-(2692, 1226, "IVC", "Inverclyde"),
-(2694, 1226, "IOW", "Isle of Wight"),
-(2699, 1226, "KEN", "Kent"),
-(2705, 1226, "LAN", "Lancashire"),
-(2709, 1226, "LEC", "Leicestershire"),
-(2712, 1226, "LIN", "Lincolnshire"),
-(2723, 1226, "MLN", "Midlothian"),
-(2726, 1226, "MRY", "Moray"),
-(2734, 1226, "NFK", "Norfolk"),
-(2735, 1226, "NAY", "North Ayrshire"),
-(2738, 1226, "NLK", "North Lanarkshire"),
-(2742, 1226, "NYK", "North Yorkshire"),
-(2743, 1226, "NTH", "Northamptonshire"),
-(2744, 1226, "NBL", "Northumberland"),
-(2746, 1226, "NTT", "Nottinghamshire"),
-(2747, 1226, "OLD", "Oldham"),
-(2748, 1226, "OMH", "Omagh"),
-(2749, 1226, "ORR", "Orkney Islands"),
-(2750, 1226, "OXF", "Oxfordshire"),
-(2752, 1226, "PKN", "Perth and Kinross"),
-(2757, 1226, "POW", "Powys"),
-(2761, 1226, "RFW", "Renfrewshire"),
-(2766, 1226, "RUT", "Rutland"),
-(2770, 1226, "SCB", "Scottish Borders"),
-(2773, 1226, "ZET", "Shetland Islands"),
-(2774, 1226, "SHR", "Shropshire"),
-(2777, 1226, "SOM", "Somerset"),
-(2778, 1226, "SAY", "South Ayrshire"),
-(2779, 1226, "SGC", "South Gloucestershire"),
-(2780, 1226, "SLK", "South Lanarkshire"),
-(2785, 1226, "STS", "Staffordshire"),
-(2786, 1226, "STG", "Stirling"),
-(2791, 1226, "SFK", "Suffolk"),
-(2793, 1226, "SRY", "Surrey"),
-(2804, 1226, "VGL", "Vale of Glamorgan, The"),
-(2811, 1226, "WAR", "Warwickshire"),
-(2813, 1226, "WDU", "West Dunbartonshire"),
-(2814, 1226, "WLN", "West Lothian"),
-(2815, 1226, "WSX", "West Sussex"),
-(2818, 1226, "WIL", "Wiltshire"),
-(2823, 1226, "WOR", "Worcestershire"),
-(2826, 1083, "AH", "Ashanti"),
-(2827, 1083, "BA", "Brong-Ahafo"),
-(2828, 1083, "AA", "Greater Accra"),
-(2829, 1083, "UE", "Upper East"),
-(2830, 1083, "UW", "Upper West"),
-(2831, 1083, "TV", "Volta"),
-(2832, 1213, "B", "Banjul"),
-(2833, 1213, "L", "Lower River"),
-(2834, 1213, "M", "MacCarthy Island"),
-(2835, 1213, "N", "North Bank"),
-(2836, 1213, "U", "Upper River"),
-(2837, 1091, "BE", "Beyla"),
-(2838, 1091, "BF", "Boffa"),
-(2839, 1091, "BK", "Boke"),
-(2840, 1091, "CO", "Coyah"),
-(2841, 1091, "DB", "Dabola"),
-(2842, 1091, "DL", "Dalaba"),
-(2843, 1091, "DI", "Dinguiraye"),
-(2844, 1091, "DU", "Dubreka"),
-(2845, 1091, "FA", "Faranah"),
-(2846, 1091, "FO", "Forecariah"),
-(2847, 1091, "FR", "Fria"),
-(2848, 1091, "GA", "Gaoual"),
-(2849, 1091, "GU", "Guekedou"),
-(2850, 1091, "KA", "Kankan"),
-(2851, 1091, "KE", "Kerouane"),
-(2852, 1091, "KD", "Kindia"),
-(2853, 1091, "KS", "Kissidougou"),
-(2854, 1091, "KB", "Koubia"),
-(2855, 1091, "KN", "Koundara"),
-(2856, 1091, "KO", "Kouroussa"),
-(2857, 1091, "LA", "Labe"),
-(2858, 1091, "LE", "Lelouma"),
-(2859, 1091, "LO", "Lola"),
-(2860, 1091, "MC", "Macenta"),
-(2861, 1091, "ML", "Mali"),
-(2862, 1091, "MM", "Mamou"),
-(2863, 1091, "MD", "Mandiana"),
-(2864, 1091, "NZ", "Nzerekore"),
-(2865, 1091, "PI", "Pita"),
-(2866, 1091, "SI", "Siguiri"),
-(2867, 1091, "TE", "Telimele"),
-(2868, 1091, "TO", "Tougue"),
-(2869, 1091, "YO", "Yomou"),
-(2870, 1067, "C", "Region Continental"),
-(2871, 1067, "I", "Region Insular"),
-(2872, 1067, "AN", "Annobon"),
-(2873, 1067, "BN", "Bioko Norte"),
-(2874, 1067, "BS", "Bioko Sur"),
-(2875, 1067, "CS", "Centro Sur"),
-(2876, 1067, "KN", "Kie-Ntem"),
-(2877, 1067, "LI", "Litoral"),
-(2878, 1067, "WN", "Wele-Nzas"),
-(2879, 1085, "13", "Achaïa"),
-(2880, 1085, "01", "Aitolia-Akarnania"),
-(2881, 1085, "11", "Argolis"),
-(2882, 1085, "12", "Arkadia"),
-(2883, 1085, "31", "Arta"),
-(2884, 1085, "A1", "Attiki"),
-(2885, 1085, "64", "Chalkidiki"),
-(2886, 1085, "94", "Chania"),
-(2887, 1085, "85", "Chios"),
-(2888, 1085, "81", "Dodekanisos"),
-(2889, 1085, "52", "Drama"),
-(2890, 1085, "71", "Evros"),
-(2891, 1085, "05", "Evrytania"),
-(2892, 1085, "04", "Evvoia"),
-(2893, 1085, "63", "Florina"),
-(2894, 1085, "07", "Fokis"),
-(2895, 1085, "06", "Fthiotis"),
-(2896, 1085, "51", "Grevena"),
-(2897, 1085, "14", "Ileia"),
-(2898, 1085, "53", "Imathia"),
-(2899, 1085, "33", "Ioannina"),
-(2900, 1085, "91", "Irakleion"),
-(2901, 1085, "41", "Karditsa"),
-(2902, 1085, "56", "Kastoria"),
-(2903, 1085, "55", "Kavalla"),
-(2904, 1085, "23", "Kefallinia"),
-(2905, 1085, "22", "Kerkyra"),
-(2906, 1085, "57", "Kilkis"),
-(2907, 1085, "15", "Korinthia"),
-(2908, 1085, "58", "Kozani"),
-(2909, 1085, "82", "Kyklades"),
-(2910, 1085, "16", "Lakonia"),
-(2911, 1085, "42", "Larisa"),
-(2912, 1085, "92", "Lasithion"),
-(2913, 1085, "24", "Lefkas"),
-(2914, 1085, "83", "Lesvos"),
-(2915, 1085, "43", "Magnisia"),
-(2916, 1085, "17", "Messinia"),
-(2917, 1085, "59", "Pella"),
-(2918, 1085, "34", "Preveza"),
-(2919, 1085, "93", "Rethymnon"),
-(2920, 1085, "73", "Rodopi"),
-(2921, 1085, "84", "Samos"),
-(2922, 1085, "62", "Serrai"),
-(2923, 1085, "32", "Thesprotia"),
-(2924, 1085, "54", "Thessaloniki"),
-(2925, 1085, "44", "Trikala"),
-(2926, 1085, "03", "Voiotia"),
-(2927, 1085, "72", "Xanthi"),
-(2928, 1085, "21", "Zakynthos"),
-(2929, 1085, "69", "Agio Oros"),
-(2930, 1090, "AV", "Alta Verapaz"),
-(2931, 1090, "BV", "Baja Verapaz"),
-(2932, 1090, "CM", "Chimaltenango"),
-(2933, 1090, "CQ", "Chiquimula"),
-(2934, 1090, "PR", "El Progreso"),
-(2935, 1090, "ES", "Escuintla"),
-(2936, 1090, "GU", "Guatemala"),
-(2937, 1090, "HU", "Huehuetenango"),
-(2938, 1090, "IZ", "Izabal"),
-(2939, 1090, "JA", "Jalapa"),
-(2940, 1090, "JU", "Jutiapa"),
-(2941, 1090, "PE", "Peten"),
-(2942, 1090, "QZ", "Quetzaltenango"),
-(2943, 1090, "QC", "Quiche"),
-(2944, 1090, "RE", "Retalhuleu"),
-(2945, 1090, "SA", "Sacatepequez"),
-(2946, 1090, "SM", "San Marcos"),
-(2947, 1090, "SR", "Santa Rosa"),
-(2948, 1090, "SO", "Sololá"),
-(2949, 1090, "SU", "Suchitepequez"),
-(2950, 1090, "TO", "Totonicapan"),
-(2951, 1090, "ZA", "Zacapa"),
-(2952, 1092, "BS", "Bissau"),
-(2953, 1092, "BA", "Bafata"),
-(2954, 1092, "BM", "Biombo"),
-(2955, 1092, "BL", "Bolama"),
-(2956, 1092, "CA", "Cacheu"),
-(2957, 1092, "GA", "Gabu"),
-(2958, 1092, "OI", "Oio"),
-(2959, 1092, "QU", "Quloara"),
-(2960, 1092, "TO", "Tombali S"),
-(2961, 1093, "BA", "Barima-Waini"),
-(2962, 1093, "CU", "Cuyuni-Mazaruni"),
-(2963, 1093, "DE", "Demerara-Mahaica"),
-(2964, 1093, "EB", "East Berbice-Corentyne"),
-(2965, 1093, "ES", "Essequibo Islands-West Demerara"),
-(2966, 1093, "MA", "Mahaica-Berbice"),
-(2967, 1093, "PM", "Pomeroon-Supenaam"),
-(2968, 1093, "PT", "Potaro-Siparuni"),
-(2969, 1093, "UD", "Upper Demerara-Berbice"),
-(2970, 1093, "UT", "Upper Takutu-Upper Essequibo"),
-(2971, 1097, "AT", "Atlantida"),
-(2972, 1097, "CL", "Colon"),
-(2973, 1097, "CM", "Comayagua"),
-(2974, 1097, "CP", "Copan"),
-(2975, 1097, "CR", "Cortes"),
-(2976, 1097, "CH", "Choluteca"),
-(2977, 1097, "EP", "El Paraiso"),
-(2978, 1097, "FM", "Francisco Morazan"),
-(2979, 1097, "GD", "Gracias a Dios"),
-(2980, 1097, "IN", "Intibuca"),
-(2981, 1097, "IB", "Islas de la Bahia"),
-(2982, 1097, "LE", "Lempira"),
-(2983, 1097, "OC", "Ocotepeque"),
-(2984, 1097, "OL", "Olancho"),
-(2985, 1097, "SB", "Santa Barbara"),
-(2986, 1097, "VA", "Valle"),
-(2987, 1097, "YO", "Yoro"),
-(2988, 1055, "07", "Bjelovarsko-bilogorska zupanija"),
-(2989, 1055, "12", "Brodsko-posavska zupanija"),
-(2990, 1055, "19", "Dubrovacko-neretvanska zupanija"),
-(2991, 1055, "18", "Istarska zupanija"),
-(2992, 1055, "04", "Karlovacka zupanija"),
-(2993, 1055, "06", "Koprivnickco-krizevacka zupanija"),
-(2994, 1055, "02", "Krapinako-zagorska zupanija"),
-(2995, 1055, "09", "Licko-senjska zupanija"),
-(2996, 1055, "20", "Medimurska zupanija"),
-(2997, 1055, "14", "Osjecko-baranjska zupanija"),
-(2998, 1055, "11", "Pozesko-slavonska zupanija"),
-(2999, 1055, "08", "Primorsko-goranska zupanija"),
-(3000, 1055, "03", "Sisacko-moelavacka Iupanija"),
-(3001, 1055, "17", "Splitako-dalmatinska zupanija"),
-(3002, 1055, "15", "Sibenako-kninska zupanija"),
-(3003, 1055, "05", "Varaidinska zupanija"),
-(3004, 1055, "10", "VirovitiEko-podravska zupanija"),
-(3005, 1055, "16", "VuRovarako-srijemska zupanija"),
-(3006, 1055, "13", "Zadaraka"),
-(3007, 1055, "01", "Zagrebacka zupanija"),
-(3008, 1094, "GA", "Grande-Anse"),
-(3009, 1094, "NE", "Nord-Est"),
-(3010, 1094, "NO", "Nord-Ouest"),
-(3011, 1094, "OU", "Ouest"),
-(3012, 1094, "SD", "Sud"),
-(3013, 1094, "SE", "Sud-Est"),
-(3014, 1099, "BU", "Budapest"),
-(3015, 1099, "BK", "Bács-Kiskun"),
-(3016, 1099, "BA", "Baranya"),
-(3017, 1099, "BE", "Békés"),
-(3018, 1099, "BZ", "Borsod-Abaúj-Zemplén"),
-(3019, 1099, "CS", "Csongrád"),
-(3020, 1099, "FE", "Fejér"),
-(3021, 1099, "GS", "Győr-Moson-Sopron"),
-(3022, 1099, "HB", "Hajdu-Bihar"),
-(3023, 1099, "HE", "Heves"),
-(3024, 1099, "JN", "Jász-Nagykun-Szolnok"),
-(3025, 1099, "KE", "Komárom-Esztergom"),
-(3026, 1099, "NO", "Nográd"),
-(3027, 1099, "PE", "Pest"),
-(3028, 1099, "SO", "Somogy"),
-(3029, 1099, "SZ", "Szabolcs-Szatmár-Bereg"),
-(3030, 1099, "TO", "Tolna"),
-(3031, 1099, "VA", "Vas"),
-(3032, 1099, "VE", "Veszprém"),
-(3033, 1099, "ZA", "Zala"),
-(3034, 1099, "BC", "Békéscsaba"),
-(3035, 1099, "DE", "Debrecen"),
-(3036, 1099, "DU", "Dunaújváros"),
-(3037, 1099, "EG", "Eger"),
-(3038, 1099, "GY", "Győr"),
-(3039, 1099, "HV", "Hódmezővásárhely"),
-(3040, 1099, "KV", "Kaposvár"),
-(3041, 1099, "KM", "Kecskemét"),
-(3042, 1099, "MI", "Miskolc"),
-(3043, 1099, "NK", "Nagykanizsa"),
-(3044, 1099, "NY", "Nyiregyháza"),
-(3045, 1099, "PS", "Pécs"),
-(3046, 1099, "ST", "Salgótarján"),
-(3047, 1099, "SN", "Sopron"),
-(3048, 1099, "SD", "Szeged"),
-(3049, 1099, "SF", "Székesfehérvár"),
-(3050, 1099, "SS", "Szekszárd"),
-(3051, 1099, "SK", "Szolnok"),
-(3052, 1099, "SH", "Szombathely"),
-(3053, 1099, "TB", "Tatabánya"),
-(3054, 1099, "ZE", "Zalaegerszeg"),
-(3055, 1102, "BA", "Bali"),
-(3056, 1102, "BB", "Kepulauan Bangka Belitung"),
-(3057, 1102, "BT", "Banten"),
-(3058, 1102, "BE", "Bengkulu"),
-(3059, 1102, "GO", "Gorontalo"),
-(3060, 1102, "PB", "Papua Barat"),
-(3061, 1102, "JA", "Jambi"),
-(3062, 1102, "JB", "Jawa Barat"),
-(3063, 1102, "JT", "Jawa Tengah"),
-(3064, 1102, "JI", "Jawa Timur"),
-(3065, 1102, "KB", "Kalimantan Barat"),
-(3066, 1102, "KI", "Kalimantan Timur"),
-(3067, 1102, "KS", "Kalimantan Selatan"),
-(3068, 1102, "KR", "Kepulauan Riau"),
-(3069, 1102, "LA", "Lampung"),
-(3070, 1102, "MA", "Maluku"),
-(3071, 1102, "MU", "Maluku Utara"),
-(3072, 1102, "NB", "Nusa Tenggara Barat"),
-(3073, 1102, "NT", "Nusa Tenggara Timur"),
-(3074, 1102, "PA", "Papua"),
-(3075, 1102, "RI", "Riau"),
-(3076, 1102, "SN", "Sulawesi Selatan"),
-(3077, 1102, "ST", "Sulawesi Tengah"),
-(3078, 1102, "SG", "Sulawesi Tenggara"),
-(3079, 1102, "SA", "Sulawesi Utara"),
-(3080, 1102, "SB", "Sumatra Barat"),
-(3081, 1102, "SS", "Sumatra Selatan"),
-(3082, 1102, "SU", "Sumatera Utara"),
-(3083, 1102, "JK", "DKI Jakarta"),
-(3084, 1102, "AC", "Aceh"),
-(3085, 1102, "YO", "DI Yogyakarta"),
-(3086, 1105, "C", "Cork"),
-(3087, 1105, "CE", "Clare"),
-(3088, 1105, "CN", "Cavan"),
-(3089, 1105, "CW", "Carlow"),
-(3090, 1105, "D", "Dublin"),
-(3091, 1105, "DL", "Donegal"),
-(3092, 1105, "G", "Galway"),
-(3093, 1105, "KE", "Kildare"),
-(3094, 1105, "KK", "Kilkenny"),
-(3095, 1105, "KY", "Kerry"),
-(3096, 1105, "LD", "Longford"),
-(3097, 1105, "LH", "Louth"),
-(3098, 1105, "LK", "Limerick"),
-(3099, 1105, "LM", "Leitrim"),
-(3100, 1105, "LS", "Laois"),
-(3101, 1105, "MH", "Meath"),
-(3102, 1105, "MN", "Monaghan"),
-(3103, 1105, "MO", "Mayo"),
-(3104, 1105, "OY", "Offaly"),
-(3105, 1105, "RN", "Roscommon"),
-(3106, 1105, "SO", "Sligo"),
-(3107, 1105, "TA", "Tipperary"),
-(3108, 1105, "WD", "Waterford"),
-(3109, 1105, "WH", "Westmeath"),
-(3110, 1105, "WW", "Wicklow"),
-(3111, 1105, "WX", "Wexford"),
-(3112, 1106, "D", "HaDarom"),
-(3113, 1106, "M", "HaMerkaz"),
-(3114, 1106, "Z", "HaZafon"),
-(3115, 1106, "HA", "Haifa"),
-(3116, 1106, "TA", "Tel-Aviv"),
-(3117, 1106, "JM", "Jerusalem"),
-(3118, 1104, "AN", "Al Anbar"),
-(3119, 1104, "BA", "Al Ba,rah"),
-(3120, 1104, "MU", "Al Muthanna"),
-(3121, 1104, "QA", "Al Qadisiyah"),
-(3122, 1104, "NA", "An Najef"),
-(3123, 1104, "AR", "Arbil"),
-(3124, 1104, "SW", "As Sulaymaniyah"),
-(3125, 1104, "TS", "At Ta\'mim"),
-(3126, 1104, "BB", "Babil"),
-(3127, 1104, "BG", "Baghdad"),
-(3128, 1104, "DA", "Dahuk"),
-(3129, 1104, "DQ", "Dhi Qar"),
-(3130, 1104, "DI", "Diyala"),
-(3131, 1104, "KA", "Karbala\'"),
-(3132, 1104, "MA", "Maysan"),
-(3133, 1104, "NI", "Ninawa"),
-(3134, 1104, "SD", "Salah ad Din"),
-(3135, 1104, "WA", "Wasit"),
-(3136, 1103, "03", "Ardabil"),
-(3137, 1103, "02", "Azarbayjan-e Gharbi"),
-(3138, 1103, "01", "Azarbayjan-e Sharqi"),
-(3139, 1103, "06", "Bushehr"),
-(3140, 1103, "08", "Chahar Mahall va Bakhtiari"),
-(3141, 1103, "04", "Esfahan"),
-(3142, 1103, "14", "Fars"),
-(3143, 1103, "19", "Gilan"),
-(3144, 1103, "27", "Golestan"),
-(3145, 1103, "24", "Hamadan"),
-(3146, 1103, "23", "Hormozgan"),
-(3147, 1103, "05", "Iiam"),
-(3148, 1103, "15", "Kerman"),
-(3149, 1103, "17", "Kermanshah"),
-(3150, 1103, "09", "Khorasan"),
-(3151, 1103, "10", "Khuzestan"),
-(3152, 1103, "18", "Kohjiluyeh va Buyer Ahmad"),
-(3153, 1103, "16", "Kordestan"),
-(3154, 1103, "20", "Lorestan"),
-(3155, 1103, "22", "Markazi"),
-(3156, 1103, "21", "Mazandaran"),
-(3157, 1103, "28", "Qazvin"),
-(3158, 1103, "26", "Qom"),
-(3159, 1103, "12", "Semnan"),
-(3160, 1103, "13", "Sistan va Baluchestan"),
-(3161, 1103, "07", "Tehran"),
-(3162, 1103, "25", "Yazd"),
-(3163, 1103, "11", "Zanjan"),
-(3164, 1100, "7", "Austurland"),
-(3165, 1100, "1", "Hofuoborgarsvaeoi utan Reykjavikur"),
-(3166, 1100, "6", "Norourland eystra"),
-(3167, 1100, "5", "Norourland vestra"),
-(3168, 1100, "0", "Reykjavik"),
-(3169, 1100, "8", "Suourland"),
-(3170, 1100, "2", "Suournes"),
-(3171, 1100, "4", "Vestfirolr"),
-(3172, 1100, "3", "Vesturland"),
-(3173, 1107, "AG", "Agrigento"),
-(3174, 1107, "AL", "Alessandria"),
-(3175, 1107, "AN", "Ancona"),
-(3176, 1107, "AO", "Aosta"),
-(3177, 1107, "AR", "Arezzo"),
-(3178, 1107, "AP", "Ascoli Piceno"),
-(3179, 1107, "AT", "Asti"),
-(3180, 1107, "AV", "Avellino"),
-(3181, 1107, "BA", "Bari"),
-(3182, 1107, "BL", "Belluno"),
-(3183, 1107, "BN", "Benevento"),
-(3184, 1107, "BG", "Bergamo"),
-(3185, 1107, "BI", "Biella"),
-(3186, 1107, "BO", "Bologna"),
-(3187, 1107, "BZ", "Bolzano"),
-(3188, 1107, "BS", "Brescia"),
-(3189, 1107, "BR", "Brindisi"),
-(3190, 1107, "CA", "Cagliari"),
-(3191, 1107, "CL", "Caltanissetta"),
-(3192, 1107, "CB", "Campobasso"),
-(3193, 1107, "CE", "Caserta"),
-(3194, 1107, "CT", "Catania"),
-(3195, 1107, "CZ", "Catanzaro"),
-(3196, 1107, "CH", "Chieti"),
-(3197, 1107, "CO", "Como"),
-(3198, 1107, "CS", "Cosenza"),
-(3199, 1107, "CR", "Cremona"),
-(3200, 1107, "KR", "Crotone"),
-(3201, 1107, "CN", "Cuneo"),
-(3202, 1107, "EN", "Enna"),
-(3203, 1107, "FE", "Ferrara"),
-(3204, 1107, "FI", "Firenze"),
-(3205, 1107, "FG", "Foggia"),
-(3206, 1107, "FC", "Forlì-Cesena"),
-(3207, 1107, "FR", "Frosinone"),
-(3208, 1107, "GE", "Genova"),
-(3209, 1107, "GO", "Gorizia"),
-(3210, 1107, "GR", "Grosseto"),
-(3211, 1107, "IM", "Imperia"),
-(3212, 1107, "IS", "Isernia"),
-(3213, 1107, "AQ", "L\'Aquila"),
-(3214, 1107, "SP", "La Spezia"),
-(3215, 1107, "LT", "Latina"),
-(3216, 1107, "LE", "Lecce"),
-(3217, 1107, "LC", "Lecco"),
-(3218, 1107, "LI", "Livorno"),
-(3219, 1107, "LO", "Lodi"),
-(3220, 1107, "LU", "Lucca"),
-(3221, 1107, "MC", "Macerata"),
-(3222, 1107, "MN", "Mantova"),
-(3223, 1107, "MS", "Massa-Carrara"),
-(3224, 1107, "MT", "Matera"),
-(3225, 1107, "ME", "Messina"),
-(3226, 1107, "MI", "Milano"),
-(3227, 1107, "MO", "Modena"),
-(3228, 1107, "NA", "Napoli"),
-(3229, 1107, "NO", "Novara"),
-(3230, 1107, "NU", "Nuoro"),
-(3231, 1107, "OR", "Oristano"),
-(3232, 1107, "PD", "Padova"),
-(3233, 1107, "PA", "Palermo"),
-(3234, 1107, "PR", "Parma"),
-(3235, 1107, "PV", "Pavia"),
-(3236, 1107, "PG", "Perugia"),
-(3237, 1107, "PU", "Pesaro e Urbino"),
-(3238, 1107, "PE", "Pescara"),
-(3239, 1107, "PC", "Piacenza"),
-(3240, 1107, "PI", "Pisa"),
-(3241, 1107, "PT", "Pistoia"),
-(3242, 1107, "PN", "Pordenone"),
-(3243, 1107, "PZ", "Potenza"),
-(3244, 1107, "PO", "Prato"),
-(3245, 1107, "RG", "Ragusa"),
-(3246, 1107, "RA", "Ravenna"),
-(3247, 1107, "RC", "Reggio Calabria"),
-(3248, 1107, "RE", "Reggio Emilia"),
-(3249, 1107, "RI", "Rieti"),
-(3250, 1107, "RN", "Rimini"),
-(3251, 1107, "RM", "Roma"),
-(3252, 1107, "RO", "Rovigo"),
-(3253, 1107, "SA", "Salerno"),
-(3254, 1107, "SS", "Sassari"),
-(3255, 1107, "SV", "Savona"),
-(3256, 1107, "SI", "Siena"),
-(3257, 1107, "SR", "Siracusa"),
-(3258, 1107, "SO", "Sondrio"),
-(3259, 1107, "TA", "Taranto"),
-(3260, 1107, "TE", "Teramo"),
-(3261, 1107, "TR", "Terni"),
-(3262, 1107, "TO", "Torino"),
-(3263, 1107, "TP", "Trapani"),
-(3264, 1107, "TN", "Trento"),
-(3265, 1107, "TV", "Treviso"),
-(3266, 1107, "TS", "Trieste"),
-(3267, 1107, "UD", "Udine"),
-(3268, 1107, "VA", "Varese"),
-(3269, 1107, "VE", "Venezia"),
-(3270, 1107, "VB", "Verbano-Cusio-Ossola"),
-(3271, 1107, "VC", "Vercelli"),
-(3272, 1107, "VR", "Verona"),
-(3273, 1107, "VV", "Vibo Valentia"),
-(3274, 1107, "VI", "Vicenza"),
-(3275, 1107, "VT", "Viterbo"),
-(3276, 1109, "23", "Aichi"),
-(3277, 1109, "05", "Akita"),
-(3278, 1109, "02", "Aomori"),
-(3279, 1109, "12", "Chiba"),
-(3280, 1109, "38", "Ehime"),
-(3281, 1109, "18", "Fukui"),
-(3282, 1109, "40", "Fukuoka"),
-(3283, 1109, "07", "Fukusima"),
-(3284, 1109, "21", "Gifu"),
-(3285, 1109, "10", "Gunma"),
-(3286, 1109, "34", "Hiroshima"),
-(3287, 1109, "01", "Hokkaido"),
-(3288, 1109, "28", "Hyogo"),
-(3289, 1109, "08", "Ibaraki"),
-(3290, 1109, "17", "Ishikawa"),
-(3291, 1109, "03", "Iwate"),
-(3292, 1109, "37", "Kagawa"),
-(3293, 1109, "46", "Kagoshima"),
-(3294, 1109, "14", "Kanagawa"),
-(3295, 1109, "39", "Kochi"),
-(3296, 1109, "43", "Kumamoto"),
-(3297, 1109, "26", "Kyoto"),
-(3298, 1109, "24", "Mie"),
-(3299, 1109, "04", "Miyagi"),
-(3300, 1109, "45", "Miyazaki"),
-(3301, 1109, "20", "Nagano"),
-(3302, 1109, "42", "Nagasaki"),
-(3303, 1109, "29", "Nara"),
-(3304, 1109, "15", "Niigata"),
-(3305, 1109, "44", "Oita"),
-(3306, 1109, "33", "Okayama"),
-(3307, 1109, "47", "Okinawa"),
-(3308, 1109, "27", "Osaka"),
-(3309, 1109, "41", "Saga"),
-(3310, 1109, "11", "Saitama"),
-(3311, 1109, "25", "Shiga"),
-(3312, 1109, "32", "Shimane"),
-(3313, 1109, "22", "Shizuoka"),
-(3314, 1109, "09", "Tochigi"),
-(3315, 1109, "36", "Tokushima"),
-(3316, 1109, "13", "Tokyo"),
-(3317, 1109, "31", "Tottori"),
-(3318, 1109, "16", "Toyama"),
-(3319, 1109, "30", "Wakayama"),
-(3320, 1109, "06", "Yamagata"),
-(3321, 1109, "35", "Yamaguchi"),
-(3322, 1109, "19", "Yamanashi"),
-(3323, 1108, "CN", "Clarendon"),
-(3324, 1108, "HR", "Hanover"),
-(3325, 1108, "KN", "Kingston"),
-(3326, 1108, "PD", "Portland"),
-(3327, 1108, "AW", "Saint Andrew"),
-(3328, 1108, "AN", "Saint Ann"),
-(3329, 1108, "CE", "Saint Catherine"),
-(3330, 1108, "EH", "Saint Elizabeth"),
-(3331, 1108, "JS", "Saint James"),
-(3332, 1108, "MY", "Saint Mary"),
-(3333, 1108, "TS", "Saint Thomas"),
-(3334, 1108, "TY", "Trelawny"),
-(3335, 1108, "WD", "Westmoreland"),
-(3336, 1110, "AJ", "Ajln"),
-(3337, 1110, "AQ", "Al \'Aqaba"),
-(3338, 1110, "BA", "Al Balqa\'"),
-(3339, 1110, "KA", "Al Karak"),
-(3340, 1110, "MA", "Al Mafraq"),
-(3341, 1110, "AM", "Amman"),
-(3342, 1110, "AT", "At Tafilah"),
-(3343, 1110, "AZ", "Az Zarga"),
-(3344, 1110, "JR", "Irbid"),
-(3345, 1110, "JA", "Jarash"),
-(3346, 1110, "MN", "Ma\'an"),
-(3347, 1110, "MD", "Madaba"),
-
--- CRM-20062 Outdated provinces for Kenya removed .
-
-(3353, 1117, "GB", "Bishkek"),
-(3354, 1117, "B", "Batken"),
-(3355, 1117, "C", "Chu"),
-(3356, 1117, "J", "Jalal-Abad"),
-(3357, 1117, "N", "Naryn"),
-(3358, 1117, "O", "Osh"),
-(3359, 1117, "T", "Talas"),
-(3360, 1117, "Y", "Ysyk-Kol"),
-(3361, 1037, "23", "Krong Kaeb"),
-(3362, 1037, "24", "Krong Pailin"),
-(3363, 1037, "18", "Xrong Preah Sihanouk"),
-(3364, 1037, "12", "Phnom Penh"),
-(3365, 1037, "2", "Baat Dambang"),
-(3366, 1037, "1", "Banteay Mean Chey"),
-(3367, 1037, "3", "Rampong Chaam"),
-(3368, 1037, "4", "Kampong Chhnang"),
-(3369, 1037, "5", "Kampong Spueu"),
-(3370, 1037, "6", "Kampong Thum"),
-(3371, 1037, "7", "Kampot"),
-(3372, 1037, "8", "Kandaal"),
-(3373, 1037, "9", "Kach Kong"),
-(3374, 1037, "10", "Krachoh"),
-(3375, 1037, "11", "Mondol Kiri"),
-(3376, 1037, "22", "Otdar Mean Chey"),
-(3377, 1037, "15", "Pousaat"),
-(3378, 1037, "13", "Preah Vihear"),
-(3379, 1037, "14", "Prey Veaeng"),
-(3380, 1037, "16", "Rotanak Kiri"),
-(3381, 1037, "17", "Siem Reab"),
-(3382, 1037, "19", "Stueng Traeng"),
-(3383, 1037, "20", "Svaay Rieng"),
-(3384, 1037, "21", "Taakaev"),
-(3385, 1113, "G", "Gilbert Islands"),
-(3386, 1113, "L", "Line Islands"),
-(3387, 1113, "P", "Phoenix Islands"),
-(3388, 1049, "A", "Anjouan Ndzouani"),
-(3389, 1049, "G", "Grande Comore Ngazidja"),
-(3390, 1049, "M", "Moheli Moili"),
-(3391, 1114, "KAE", "Kaesong-si"),
-(3392, 1114, "NAM", "Nampo-si"),
-(3393, 1114, "PYO", "Pyongyang-ai"),
-(3394, 1114, "CHA", "Chagang-do"),
-(3395, 1114, "HAB", "Hamgyongbuk-do"),
-(3396, 1114, "HAN", "Hamgyongnam-do"),
-(3397, 1114, "HWB", "Hwanghaebuk-do"),
-(3398, 1114, "HWN", "Hwanghaenam-do"),
-(3399, 1114, "KAN", "Kangwon-do"),
-(3400, 1114, "PYB", "Pyonganbuk-do"),
-(3401, 1114, "PYN", "Pyongannam-do"),
-(3402, 1114, "YAN", "Yanggang-do"),
-(3403, 1114, "NAJ", "Najin Sonbong-si"),
-(3404, 1115, "11", "Seoul Teugbyeolsi"),
-(3405, 1115, "26", "Busan Gwang\'yeogsi"),
-(3406, 1115, "27", "Daegu Gwang\'yeogsi"),
-(3407, 1115, "30", "Daejeon Gwang\'yeogsi"),
-(3408, 1115, "29", "Gwangju Gwang\'yeogsi"),
-(3409, 1115, "28", "Incheon Gwang\'yeogsi"),
-(3410, 1115, "31", "Ulsan Gwang\'yeogsi"),
-(3411, 1115, "43", "Chungcheongbugdo"),
-(3412, 1115, "44", "Chungcheongnamdo"),
-(3413, 1115, "42", "Gang\'weondo"),
-(3414, 1115, "41", "Gyeonggido"),
-(3415, 1115, "47", "Gyeongsangbugdo"),
-(3416, 1115, "48", "Gyeongsangnamdo"),
-(3417, 1115, "49", "Jejudo"),
-(3418, 1115, "45", "Jeonrabugdo"),
-(3419, 1115, "46", "Jeonranamdo"),
-(3420, 1116, "AH", "Al Ahmadi"),
-(3421, 1116, "FA", "Al Farwanlyah"),
-(3422, 1116, "JA", "Al Jahrah"),
-(3423, 1116, "KU", "Al Kuwayt"),
-(3424, 1116, "HA", "Hawalli"),
-(3425, 1111, "ALA", "Almaty"),
-(3426, 1111, "AST", "Astana"),
-(3427, 1111, "ALM", "Almaty oblysy"),
-(3428, 1111, "AKM", "Aqmola oblysy"),
-(3429, 1111, "AKT", "Aqtobe oblysy"),
-(3430, 1111, "ATY", "Atyrau oblyfiy"),
-(3431, 1111, "ZAP", "Batys Quzaqstan oblysy"),
-(3432, 1111, "MAN", "Mangghystau oblysy"),
-(3433, 1111, "YUZ", "Ongtustik Quzaqstan oblysy"),
-(3434, 1111, "PAV", "Pavlodar oblysy"),
-(3435, 1111, "KAR", "Qaraghandy oblysy"),
-(3436, 1111, "KUS", "Qostanay oblysy"),
-(3437, 1111, "KZY", "Qyzylorda oblysy"),
-(3438, 1111, "VOS", "Shyghys Quzaqstan oblysy"),
-(3439, 1111, "SEV", "Soltustik Quzaqstan oblysy"),
-(3440, 1111, "ZHA", "Zhambyl oblysy Zhambylskaya oblast\'"),
-(3441, 1118, "VT", "Vientiane"),
-(3442, 1118, "AT", "Attapu"),
-(3443, 1118, "BK", "Bokeo"),
-(3444, 1118, "BL", "Bolikhamxai"),
-(3445, 1118, "CH", "Champasak"),
-(3446, 1118, "HO", "Houaphan"),
-(3447, 1118, "KH", "Khammouan"),
-(3448, 1118, "LM", "Louang Namtha"),
-(3449, 1118, "LP", "Louangphabang"),
-(3450, 1118, "OU", "Oudomxai"),
-(3451, 1118, "PH", "Phongsali"),
-(3452, 1118, "SL", "Salavan"),
-(3453, 1118, "SV", "Savannakhet"),
-(3454, 1118, "XA", "Xaignabouli"),
-(3455, 1118, "XN", "Xiasomboun"),
-(3456, 1118, "XE", "Xekong"),
-(3457, 1118, "XI", "Xiangkhoang"),
-(3458, 1120, "BA", "Beirut"),
-(3459, 1120, "BI", "Beqaa"),
-(3460, 1120, "JL", "Mount Lebanon"),
-(3461, 1120, "AS", "North Lebanon"),
-(3462, 1120, "JA", "South Lebanon"),
-(3463, 1120, "NA", "Nabatieh"),
-(3464, 1199, "52", "Ampara"),
-(3465, 1199, "71", "Anuradhapura"),
-(3466, 1199, "81", "Badulla"),
-(3467, 1199, "51", "Batticaloa"),
-(3468, 1199, "11", "Colombo"),
-(3469, 1199, "31", "Galle"),
-(3470, 1199, "12", "Gampaha"),
-(3471, 1199, "33", "Hambantota"),
-(3472, 1199, "41", "Jaffna"),
-(3473, 1199, "13", "Kalutara"),
-(3474, 1199, "21", "Kandy"),
-(3475, 1199, "92", "Kegalla"),
-(3476, 1199, "42", "Kilinochchi"),
-(3477, 1199, "61", "Kurunegala"),
-(3478, 1199, "43", "Mannar"),
-(3479, 1199, "22", "Matale"),
-(3480, 1199, "32", "Matara"),
-(3481, 1199, "82", "Monaragala"),
-(3482, 1199, "45", "Mullaittivu"),
-(3483, 1199, "23", "Nuwara Eliya"),
-(3484, 1199, "72", "Polonnaruwa"),
-(3485, 1199, "62", "Puttalum"),
-(3486, 1199, "91", "Ratnapura"),
-(3487, 1199, "53", "Trincomalee"),
-(3488, 1199, "44", "VavunLya"),
-(3489, 1122, "BM", "Bomi"),
-(3490, 1122, "BG", "Bong"),
-(3491, 1122, "GB", "Grand Basaa"),
-(3492, 1122, "CM", "Grand Cape Mount"),
-(3493, 1122, "GG", "Grand Gedeh"),
-(3494, 1122, "GK", "Grand Kru"),
-(3495, 1122, "LO", "Lofa"),
-(3496, 1122, "MG", "Margibi"),
-(3497, 1122, "MY", "Maryland"),
-(3498, 1122, "MO", "Montserrado"),
-(3499, 1122, "NI", "Nimba"),
-(3500, 1122, "RI", "Rivercess"),
-(3501, 1122, "SI", "Sinoe"),
-(3502, 1121, "D", "Berea"),
-(3503, 1121, "B", "Butha-Buthe"),
-(3504, 1121, "C", "Leribe"),
-(3505, 1121, "E", "Mafeteng"),
-(3506, 1121, "A", "Maseru"),
-(3507, 1121, "F", "Mohale\'s Hoek"),
-(3508, 1121, "J", "Mokhotlong"),
-(3509, 1121, "H", "Qacha\'s Nek"),
-(3510, 1121, "G", "Quthing"),
-(3511, 1121, "K", "Thaba-Tseka"),
-(3512, 1125, "AL", "Alytaus Apskritis"),
-(3513, 1125, "KU", "Kauno Apskritis"),
-(3514, 1125, "KL", "KlaipÄ—dos Apskritis"),
-(3515, 1125, "MR", "MarijampolÄ—s Apskritis"),
-(3516, 1125, "PN", "Panevėžio Apskritis"),
-(3517, 1125, "SA", "Šiaulių Apskritis"),
-(3518, 1125, "TA", "TauragÄ—s Apskritis"),
-(3519, 1125, "TE", "Telšių Apskritis"),
-(3520, 1125, "UT", "Utenos Apskritis"),
-(3521, 1125, "VL", "Vilniaus Apskritis"),
-(3522, 1126, "DI", "Diekirch"),
-(3523, 1126, "GR", "Grevenmacher"),
-(3550, 1119, "DGV", "Daugavpils"),
-(3551, 1119, "JEL", "Jelgava"),
-(3552, 1119, "JUR", "JÅ«rmala"),
-(3553, 1119, "LPX", "Liepāja"),
-(3554, 1119, "REZ", "RÄ“zekne"),
-(3555, 1119, "RIX", "RÄ«ga"),
-(3556, 1119, "VEN", "Ventspils"),
-(3557, 1123, "AJ", "Ajdābiyā"),
-(3558, 1123, "BU", "Al Buţnān"),
-(3559, 1123, "HZ", "Al Hizām al Akhdar"),
-(3560, 1123, "JA", "Al Jabal al Akhdar"),
-(3561, 1123, "JI", "Al Jifārah"),
-(3562, 1123, "JU", "Al Jufrah"),
-(3563, 1123, "KF", "Al Kufrah"),
-(3564, 1123, "MJ", "Al Marj"),
-(3565, 1123, "MB", "Al Marqab"),
-(3566, 1123, "QT", "Al Qaţrūn"),
-(3567, 1123, "QB", "Al Qubbah"),
-(3568, 1123, "WA", "Al Wāhah"),
-(3569, 1123, "NQ", "An Nuqaţ al Khams"),
-(3570, 1123, "SH", "Ash Shāţi\'"),
-(3571, 1123, "ZA", "Az Zāwiyah"),
-(3572, 1123, "BA", "Banghāzī"),
-(3573, 1123, "BW", "Banī Walīd"),
-(3574, 1123, "DR", "Darnah"),
-(3575, 1123, "GD", "Ghadāmis"),
-(3576, 1123, "GR", "Gharyān"),
-(3577, 1123, "GT", "Ghāt"),
-(3578, 1123, "JB", "Jaghbūb"),
-(3579, 1123, "MI", "Mişrātah"),
-(3580, 1123, "MZ", "Mizdah"),
-(3581, 1123, "MQ", "Murzuq"),
-(3582, 1123, "NL", "Nālūt"),
-(3583, 1123, "SB", "Sabhā"),
-(3584, 1123, "SS", "Şabrātah Şurmān"),
-(3585, 1123, "SR", "Surt"),
-(3586, 1123, "TN", "Tājūrā\' wa an Nawāhī al Arbāh"),
-(3587, 1123, "TB", "Ţarābulus"),
-(3588, 1123, "TM", "Tarhūnah-Masallātah"),
-(3589, 1123, "WD", "Wādī al hayāt"),
-(3590, 1123, "YJ", "Yafran-Jādū"),
-(3591, 1146, "AGD", "Agadir"),
-(3592, 1146, "BAH", "Aït Baha"),
-(3593, 1146, "MEL", "Aït Melloul"),
-(3594, 1146, "HAO", "Al Haouz"),
-(3595, 1146, "HOC", "Al Hoceïma"),
-(3596, 1146, "ASZ", "Assa-Zag"),
-(3597, 1146, "AZI", "Azilal"),
-(3598, 1146, "BEM", "Beni Mellal"),
-(3599, 1146, "BES", "Ben Sllmane"),
-(3600, 1146, "BER", "Berkane"),
-(3601, 1146, "BOD", "Boujdour"),
-(3602, 1146, "BOM", "Boulemane"),
-(3603, 1146, "CAS", "Casablanca  [Dar el Beïda]"),
-(3604, 1146, "CHE", "Chefchaouene"),
-(3605, 1146, "CHI", "Chichaoua"),
-(3606, 1146, "HAJ", "El Hajeb"),
-(3607, 1146, "JDI", "El Jadida"),
-(3608, 1146, "ERR", "Errachidia"),
-(3609, 1146, "ESI", "Essaouira"),
-(3610, 1146, "ESM", "Es Smara"),
-(3611, 1146, "FES", "Fès"),
-(3612, 1146, "FIG", "Figuig"),
-(3613, 1146, "GUE", "Guelmim"),
-(3614, 1146, "IFR", "Ifrane"),
-(3615, 1146, "JRA", "Jerada"),
-(3616, 1146, "KES", "Kelaat Sraghna"),
-(3617, 1146, "KEN", "Kénitra"),
-(3618, 1146, "KHE", "Khemisaet"),
-(3619, 1146, "KHN", "Khenifra"),
-(3620, 1146, "KHO", "Khouribga"),
-(3621, 1146, "LAA", "Laâyoune (EH)"),
-(3622, 1146, "LAP", "Larache"),
-(3623, 1146, "MAR", "Marrakech"),
-(3624, 1146, "MEK", "Meknsès"),
-(3625, 1146, "NAD", "Nador"),
-(3626, 1146, "OUA", "Ouarzazate"),
-(3627, 1146, "OUD", "Oued ed Dahab (EH)"),
-(3628, 1146, "OUJ", "Oujda"),
-(3629, 1146, "RBA", "Rabat-Salé"),
-(3630, 1146, "SAF", "Safi"),
-(3631, 1146, "SEF", "Sefrou"),
-(3632, 1146, "SET", "Settat"),
-(3633, 1146, "SIK", "Sidl Kacem"),
-(3634, 1146, "TNG", "Tanger"),
-(3635, 1146, "TNT", "Tan-Tan"),
-(3636, 1146, "TAO", "Taounate"),
-(3637, 1146, "TAR", "Taroudannt"),
-(3638, 1146, "TAT", "Tata"),
-(3639, 1146, "TAZ", "Taza"),
-(3640, 1146, "TET", "Tétouan"),
-(3641, 1146, "TIZ", "Tiznit"),
-(3642, 1142, "GA", "Gagauzia, Unitate Teritoriala Autonoma"),
-(3643, 1142, "CU", "Chisinau"),
-(3644, 1142, "SN", "Stinga Nistrului, unitatea teritoriala din"),
-(3645, 1142, "BA", "Balti"),
-(3646, 1142, "CA", "Cahul"),
-(3647, 1142, "ED", "Edinet"),
-(3648, 1142, "LA", "Lapusna"),
-(3649, 1142, "OR", "Orhei"),
-(3650, 1142, "SO", "Soroca"),
-(3651, 1142, "TA", "Taraclia"),
-(3652, 1142, "TI", "Tighina [Bender]"),
-(3653, 1142, "UN", "Ungheni"),
-(3654, 1129, "T", "Antananarivo"),
-(3655, 1129, "D", "Antsiranana"),
-(3656, 1129, "F", "Fianarantsoa"),
-(3657, 1129, "M", "Mahajanga"),
-(3658, 1129, "A", "Toamasina"),
-(3659, 1129, "U", "Toliara"),
-(3660, 1135, "ALL", "Ailinglapalap"),
-(3661, 1135, "ALK", "Ailuk"),
-(3662, 1135, "ARN", "Arno"),
-(3663, 1135, "AUR", "Aur"),
-(3664, 1135, "EBO", "Ebon"),
-(3665, 1135, "ENI", "Eniwetok"),
-(3666, 1135, "JAL", "Jaluit"),
-(3667, 1135, "KIL", "Kili"),
-(3668, 1135, "KWA", "Kwajalein"),
-(3669, 1135, "LAE", "Lae"),
-(3670, 1135, "LIB", "Lib"),
-(3671, 1135, "LIK", "Likiep"),
-(3672, 1135, "MAJ", "Majuro"),
-(3673, 1135, "MAL", "Maloelap"),
-(3674, 1135, "MEJ", "Mejit"),
-(3675, 1135, "MIL", "Mili"),
-(3676, 1135, "NMK", "Namorik"),
-(3677, 1135, "NMU", "Namu"),
-(3678, 1135, "RON", "Rongelap"),
-(3679, 1135, "UJA", "Ujae"),
-(3680, 1135, "UJL", "Ujelang"),
-(3681, 1135, "UTI", "Utirik"),
-(3682, 1135, "WTN", "Wotho"),
-(3683, 1135, "WTJ", "Wotje"),
-(3684, 1133, "BK0", "Bamako"),
-(3685, 1133, "7", "Gao"),
-(3686, 1133, "1", "Kayes"),
-(3687, 1133, "8", "Kidal"),
-(3688, 1133, "2", "Xoulikoro"),
-(3689, 1133, "5", "Mopti"),
-(3690, 1133, "4", "S69ou"),
-(3691, 1133, "3", "Sikasso"),
-(3692, 1133, "6", "Tombouctou"),
-(3693, 1035, "07", "Ayeyarwady"),
-(3694, 1035, "02", "Bago"),
-(3695, 1035, "03", "Magway"),
-(3696, 1035, "04", "Mandalay"),
-(3697, 1035, "01", "Sagaing"),
-(3698, 1035, "05", "Tanintharyi"),
-(3699, 1035, "06", "Yangon"),
-(3700, 1035, "14", "Chin"),
-(3701, 1035, "11", "Kachin"),
-(3702, 1035, "12", "Kayah"),
-(3703, 1035, "13", "Kayin"),
-(3704, 1035, "15", "Mon"),
-(3705, 1035, "16", "Rakhine"),
-(3706, 1035, "17", "Shan"),
-(3707, 1144, "1", "Ulaanbaatar"),
-(3708, 1144, "073", "Arhangay"),
-(3709, 1144, "069", "Bayanhongor"),
-(3710, 1144, "071", "Bayan-Olgiy"),
-(3711, 1144, "067", "Bulgan"),
-(3712, 1144, "037", "Darhan uul"),
-(3713, 1144, "061", "Dornod"),
-(3714, 1144, "063", "Dornogov,"),
-(3715, 1144, "059", "DundgovL"),
-(3716, 1144, "057", "Dzavhan"),
-(3717, 1144, "065", "Govi-Altay"),
-(3718, 1144, "064", "Govi-Smber"),
-(3719, 1144, "039", "Hentiy"),
-(3720, 1144, "043", "Hovd"),
-(3721, 1144, "041", "Hovsgol"),
-(3722, 1144, "053", "Omnogovi"),
-(3723, 1144, "035", "Orhon"),
-(3724, 1144, "055", "Ovorhangay"),
-(3725, 1144, "049", "Selenge"),
-(3726, 1144, "051", "Shbaatar"),
-(3727, 1144, "047", "Tov"),
-(3728, 1144, "046", "Uvs"),
-(3729, 1137, "NKC", "Nouakchott"),
-(3730, 1137, "03", "Assaba"),
-(3731, 1137, "05", "Brakna"),
-(3732, 1137, "08", "Dakhlet Nouadhibou"),
-(3733, 1137, "04", "Gorgol"),
-(3734, 1137, "10", "Guidimaka"),
-(3735, 1137, "01", "Hodh ech Chargui"),
-(3736, 1137, "02", "Hodh el Charbi"),
-(3737, 1137, "12", "Inchiri"),
-(3738, 1137, "09", "Tagant"),
-(3739, 1137, "11", "Tiris Zemmour"),
-(3740, 1137, "06", "Trarza"),
-(3741, 1138, "BR", "Beau Bassin-Rose Hill"),
-(3742, 1138, "CU", "Curepipe"),
-(3743, 1138, "PU", "Port Louis"),
-(3744, 1138, "QB", "Quatre Bornes"),
-(3745, 1138, "VP", "Vacosa-Phoenix"),
-(3746, 1138, "BL", "Black River"),
-(3747, 1138, "FL", "Flacq"),
-(3748, 1138, "GP", "Grand Port"),
-(3749, 1138, "MO", "Moka"),
-(3750, 1138, "PA", "Pamplemousses"),
-(3751, 1138, "PW", "Plaines Wilhems"),
-(3752, 1138, "RP", "Riviere du Rempart"),
-(3753, 1138, "SA", "Savanne"),
-(3754, 1138, "AG", "Agalega Islands"),
-(3755, 1138, "CC", "Cargados Carajos Shoals"),
-(3756, 1138, "RO", "Rodrigues Island"),
-(3757, 1132, "MLE", "Male"),
-(3758, 1132, "02", "Alif"),
-(3759, 1132, "20", "Baa"),
-(3760, 1132, "17", "Dhaalu"),
-(3761, 1132, "14", "Faafu"),
-(3762, 1132, "27", "Gaaf Alif"),
-(3763, 1132, "28", "Gaefu Dhaalu"),
-(3764, 1132, "29", "Gnaviyani"),
-(3765, 1132, "07", "Haa Alif"),
-(3766, 1132, "23", "Haa Dhaalu"),
-(3767, 1132, "26", "Kaafu"),
-(3768, 1132, "05", "Laamu"),
-(3769, 1132, "03", "Lhaviyani"),
-(3770, 1132, "12", "Meemu"),
-(3771, 1132, "25", "Noonu"),
-(3772, 1132, "13", "Raa"),
-(3773, 1132, "01", "Seenu"),
-(3774, 1132, "24", "Shaviyani"),
-(3775, 1132, "08", "Thaa"),
-(3776, 1132, "04", "Vaavu"),
-(3777, 1130, "BA", "Balaka"),
-(3778, 1130, "BL", "Blantyre"),
-(3779, 1130, "CK", "Chikwawa"),
-(3780, 1130, "CR", "Chiradzulu"),
-(3781, 1130, "CT", "Chitipa"),
-(3782, 1130, "DE", "Dedza"),
-(3783, 1130, "DO", "Dowa"),
-(3784, 1130, "KR", "Karonga"),
-(3785, 1130, "KS", "Kasungu"),
-(3786, 1130, "LK", "Likoma Island"),
-(3787, 1130, "LI", "Lilongwe"),
-(3788, 1130, "MH", "Machinga"),
-(3789, 1130, "MG", "Mangochi"),
-(3790, 1130, "MC", "Mchinji"),
-(3791, 1130, "MU", "Mulanje"),
-(3792, 1130, "MW", "Mwanza"),
-(3793, 1130, "MZ", "Mzimba"),
-(3794, 1130, "NB", "Nkhata Bay"),
-(3795, 1130, "NK", "Nkhotakota"),
-(3796, 1130, "NS", "Nsanje"),
-(3797, 1130, "NU", "Ntcheu"),
-(3798, 1130, "NI", "Ntchisi"),
-(3799, 1130, "PH", "Phalomba"),
-(3800, 1130, "RU", "Rumphi"),
-(3801, 1130, "SA", "Salima"),
-(3802, 1130, "TH", "Thyolo"),
-(3803, 1130, "ZO", "Zomba"),
-(3804, 1140, "AGU", "Aguascalientes"),
-(3805, 1140, "BCN", "Baja California"),
-(3806, 1140, "BCS", "Baja California Sur"),
-(3807, 1140, "CAM", "Campeche"),
-(3808, 1140, "COA", "Coahuila"),
-(3809, 1140, "COL", "Colima"),
-(3810, 1140, "CHP", "Chiapas"),
-(3811, 1140, "CHH", "Chihuahua"),
-(3812, 1140, "DUR", "Durango"),
-(3813, 1140, "GUA", "Guanajuato"),
-(3814, 1140, "GRO", "Guerrero"),
-(3815, 1140, "HID", "Hidalgo"),
-(3816, 1140, "JAL", "Jalisco"),
-(3817, 1140, "MEX", "Mexico"),
-(3818, 1140, "MIC", "Michoacin"),
-(3819, 1140, "MOR", "Morelos"),
-(3820, 1140, "NAY", "Nayarit"),
-(3821, 1140, "NLE", "Nuevo Leon"),
-(3822, 1140, "OAX", "Oaxaca"),
-(3823, 1140, "PUE", "Puebla"),
-(3824, 1140, "QUE", "Queretaro"),
-(3825, 1140, "ROO", "Quintana Roo"),
-(3826, 1140, "SLP", "San Luis Potosi"),
-(3827, 1140, "SIN", "Sinaloa"),
-(3828, 1140, "SON", "Sonora"),
-(3829, 1140, "TAB", "Tabasco"),
-(3830, 1140, "TAM", "Tamaulipas"),
-(3831, 1140, "TLA", "Tlaxcala"),
-(3832, 1140, "VER", "Veracruz"),
-(3833, 1140, "YUC", "Yucatan"),
-(3834, 1140, "ZAC", "Zacatecas"),
-(3835, 1131, "14", "Wilayah Persekutuan Kuala Lumpur"),
-(3836, 1131, "15", "Wilayah Persekutuan Labuan"),
-(3837, 1131, "16", "Wilayah Persekutuan Putrajaya"),
-(3838, 1131, "01", "Johor"),
-(3839, 1131, "02", "Kedah"),
-(3840, 1131, "03", "Kelantan"),
-(3841, 1131, "04", "Melaka"),
-(3842, 1131, "05", "Negeri Sembilan"),
-(3843, 1131, "06", "Pahang"),
-(3844, 1131, "08", "Perak"),
-(3845, 1131, "09", "Perlis"),
-(3846, 1131, "07", "Pulau Pinang"),
-(3847, 1131, "12", "Sabah"),
-(3848, 1131, "13", "Sarawak"),
-(3849, 1131, "10", "Selangor"),
-(3850, 1131, "11", "Terengganu"),
-(3851, 1147, "MPM", "Maputo"),
-(3852, 1147, "P", "Cabo Delgado"),
-(3853, 1147, "G", "Gaza"),
-(3854, 1147, "I", "Inhambane"),
-(3855, 1147, "B", "Manica"),
-(3856, 1147, "N", "Numpula"),
-(3857, 1147, "A", "Niaaea"),
-(3858, 1147, "S", "Sofala"),
-(3859, 1147, "T", "Tete"),
-(3860, 1147, "Q", "Zambezia"),
-(3861, 1148, "CA", "Caprivi"),
-(3862, 1148, "ER", "Erongo"),
-(3863, 1148, "HA", "Hardap"),
-(3864, 1148, "KA", "Karas"),
-(3865, 1148, "KH", "Khomas"),
-(3866, 1148, "KU", "Kunene"),
-(3867, 1148, "OW", "Ohangwena"),
-(3868, 1148, "OK", "Okavango"),
-(3869, 1148, "OH", "Omaheke"),
-(3870, 1148, "OS", "Omusati"),
-(3871, 1148, "ON", "Oshana"),
-(3872, 1148, "OT", "Oshikoto"),
-(3873, 1148, "OD", "Otjozondjupa"),
-(3874, 1156, "8", "Niamey"),
-(3875, 1156, "1", "Agadez"),
-(3876, 1156, "2", "Diffa"),
-(3877, 1156, "3", "Dosso"),
-(3878, 1156, "4", "Maradi"),
-(3879, 1156, "S", "Tahoua"),
-(3880, 1156, "6", "Tillaberi"),
-(3881, 1156, "7", "Zinder"),
-(3882, 1157, "FC", "Abuja Federal Capital Territory"),
-(3883, 1157, "AB", "Abia"),
-(3884, 1157, "AD", "Adamawa"),
-(3885, 1157, "AK", "Akwa Ibom"),
-(3886, 1157, "AN", "Anambra"),
-(3887, 1157, "BA", "Bauchi"),
-(3888, 1157, "BY", "Bayelsa"),
-(3889, 1157, "BE", "Benue"),
-(3890, 1157, "BO", "Borno"),
-(3891, 1157, "CR", "Cross River"),
-(3892, 1157, "DE", "Delta"),
-(3893, 1157, "EB", "Ebonyi"),
-(3894, 1157, "ED", "Edo"),
-(3895, 1157, "EK", "Ekiti"),
-(3896, 1157, "EN", "Enugu"),
-(3897, 1157, "GO", "Gombe"),
-(3898, 1157, "IM", "Imo"),
-(3899, 1157, "JI", "Jigawa"),
-(3900, 1157, "KD", "Kaduna"),
-(3901, 1157, "KN", "Kano"),
-(3902, 1157, "KT", "Katsina"),
-(3903, 1157, "KE", "Kebbi"),
-(3904, 1157, "KO", "Kogi"),
-(3905, 1157, "KW", "Kwara"),
-(3906, 1157, "LA", "Lagos"),
-(3907, 1157, "NA", "Nassarawa"),
-(3908, 1157, "NI", "Niger"),
-(3909, 1157, "OG", "Ogun"),
-(3910, 1157, "ON", "Ondo"),
-(3911, 1157, "OS", "Osun"),
-(3912, 1157, "OY", "Oyo"),
-(3913, 1157, "RI", "Rivers"),
-(3914, 1157, "SO", "Sokoto"),
-(3915, 1157, "TA", "Taraba"),
-(3916, 1157, "YO", "Yobe"),
-(3917, 1157, "ZA", "Zamfara"),
-(3918, 1155, "BO", "Boaco"),
-(3919, 1155, "CA", "Carazo"),
-(3920, 1155, "CI", "Chinandega"),
-(3921, 1155, "CO", "Chontales"),
-(3922, 1155, "ES", "Esteli"),
-(3923, 1155, "JI", "Jinotega"),
-(3924, 1155, "LE", "Leon"),
-(3925, 1155, "MD", "Madriz"),
-(3926, 1155, "MN", "Managua"),
-(3927, 1155, "MS", "Masaya"),
-(3928, 1155, "MT", "Matagalpa"),
-(3929, 1155, "NS", "Nueva Segovia"),
-(3930, 1155, "SJ", "Rio San Juan"),
-(3931, 1155, "RI", "Rivas"),
-(3932, 1155, "AN", "Atlantico Norte"),
-(3933, 1155, "AS", "Atlantico Sur"),
-(3934, 1152, "DR", "Drente"),
-(3935, 1152, "FL", "Flevoland"),
-(3936, 1152, "FR", "Friesland"),
-(3937, 1152, "GL", "Gelderland"),
-(3938, 1152, "GR", "Groningen"),
-(3939, 1152, "NB", "Noord-Brabant"),
-(3940, 1152, "NH", "Noord-Holland"),
-(3941, 1152, "OV", "Overijssel"),
-(3942, 1152, "UT", "Utrecht"),
-(3943, 1152, "ZH", "Zuid-Holland"),
-(3944, 1152, "ZL", "Zeeland"),
-(3945, 1161, "02", "Akershus"),
-(3946, 1161, "09", "Aust-Agder"),
-(3947, 1161, "06", "Buskerud"),
-(3948, 1161, "20", "Finnmark"),
-(3949, 1161, "04", "Hedmark"),
-(3951, 1161, "15", "Møre og Romsdal"),
-(3952, 1161, "18", "Nordland"),
-(3953, 1161, "17", "Nord-Trøndelag"),
-(3954, 1161, "05", "Oppland"),
-(3955, 1161, "03", "Oslo"),
-(3956, 1161, "11", "Rogaland"),
-(3957, 1161, "16", "Sør-Trøndelag"),
-(3958, 1161, "06", "Telemark"),
-(3959, 1161, "19", "Troms"),
-(3960, 1161, "10", "Vest-Agder"),
-(3961, 1161, "07", "Vestfold"),
-(3962, 1161, "46", "Vestland"),
-(3963, 1161, "01", "Østfold"),
-(3964, 1161, "22", "Jan Mayen"),
-(3965, 1161, "21", "Svalbard"),
-(3966, 1154, "AUK", "Auckland"),
-(3967, 1154, "BOP", "Bay of Plenty"),
-(3968, 1154, "CAN", "Canterbury"),
-(3969, 1154, "GIS", "Gisborne"),
-(3970, 1154, "HKB", "Hawkes Bay"),
-(3971, 1154, "MWT", "Manawatu-Wanganui"),
-(3972, 1154, "MBH", "Marlborough"),
-(3973, 1154, "NSN", "Nelson"),
-(3974, 1154, "NTL", "Northland"),
-(3975, 1154, "OTA", "Otago"),
-(3976, 1154, "STL", "Southland"),
-(3977, 1154, "TKI", "Taranaki"),
-(3978, 1154, "TAS", "Tasman"),
-(3979, 1154, "WKO", "Waikato"),
-(3980, 1154, "WGN", "Wellington"),
-(3981, 1154, "WTC", "West Coast"),
-(3982, 1162, "DA", "Ad Dakhillyah"),
-(3983, 1162, "BA", "Al Batinah"),
-(3984, 1162, "JA", "Al Janblyah"),
-(3985, 1162, "WU", "Al Wusta"),
-(3986, 1162, "SH", "Ash Sharqlyah"),
-(3987, 1162, "ZA", "Az Zahirah"),
-(3988, 1162, "MA", "Masqat"),
-(3989, 1162, "MU", "Musandam"),
-(3990, 1166, "1", "Bocas del Toro"),
-(3991, 1166, "2", "Cocle"),
-(3992, 1166, "4", "Chiriqui"),
-(3993, 1166, "5", "Darien"),
-(3994, 1166, "6", "Herrera"),
-(3995, 1166, "7", "Loa Santoa"),
-(3996, 1166, "8", "Panama"),
-(3997, 1166, "9", "Veraguas"),
-(3998, 1166, "Q", "Comarca de San Blas"),
-(3999, 1169, "CAL", "El Callao"),
-(4000, 1169, "ANC", "Ancash"),
-(4001, 1169, "APU", "Apurimac"),
-(4002, 1169, "ARE", "Arequipa"),
-(4003, 1169, "AYA", "Ayacucho"),
-(4004, 1169, "CAJ", "Cajamarca"),
-(4005, 1169, "CUS", "Cuzco"),
-(4006, 1169, "HUV", "Huancavelica"),
-(4007, 1169, "HUC", "Huanuco"),
-(4008, 1169, "ICA", "Ica"),
-(4009, 1169, "JUN", "Junin"),
-(4010, 1169, "LAL", "La Libertad"),
-(4011, 1169, "LAM", "Lambayeque"),
-(4012, 1169, "LIM", "Lima"),
-(4013, 1169, "LOR", "Loreto"),
-(4014, 1169, "MDD", "Madre de Dios"),
-(4015, 1169, "MOQ", "Moquegua"),
-(4016, 1169, "PAS", "Pasco"),
-(4017, 1169, "PIU", "Piura"),
-(4018, 1169, "PUN", "Puno"),
-(4019, 1169, "SAM", "San Martin"),
-(4020, 1169, "TAC", "Tacna"),
-(4021, 1169, "TUM", "Tumbes"),
-(4022, 1169, "UCA", "Ucayali"),
-(4023, 1167, "NCD", "National Capital District (Port Moresby)"),
-(4024, 1167, "CPK", "Chimbu"),
-(4025, 1167, "EHG", "Eastern Highlands"),
-(4026, 1167, "EBR", "East New Britain"),
-(4027, 1167, "ESW", "East Sepik"),
-(4028, 1167, "EPW", "Enga"),
-(4029, 1167, "GPK", "Gulf"),
-(4030, 1167, "MPM", "Madang"),
-(4031, 1167, "MRL", "Manus"),
-(4032, 1167, "MBA", "Milne Bay"),
-(4033, 1167, "MPL", "Morobe"),
-(4034, 1167, "NIK", "New Ireland"),
-(4035, 1167, "NSA", "North Solomons"),
-(4036, 1167, "SAN", "Santaun"),
-(4037, 1167, "SHM", "Southern Highlands"),
-(4038, 1167, "WHM", "Western Highlands"),
-(4039, 1167, "WBK", "West New Britain"),
-(4040, 1170, "ABR", "Abra"),
-(4041, 1170, "AGN", "Agusan del Norte"),
-(4042, 1170, "AGS", "Agusan del Sur"),
-(4043, 1170, "AKL", "Aklan"),
-(4044, 1170, "ALB", "Albay"),
-(4045, 1170, "ANT", "Antique"),
-(4046, 1170, "APA", "Apayao"),
-(4047, 1170, "AUR", "Aurora"),
-(4048, 1170, "BAS", "Basilan"),
-(4049, 1170, "BAN", "Bataan"),
-(4050, 1170, "BTN", "Batanes"),
-(4051, 1170, "BTG", "Batangas"),
-(4052, 1170, "BEN", "Benguet"),
-(4053, 1170, "BIL", "Biliran"),
-(4054, 1170, "BOH", "Bohol"),
-(4055, 1170, "BUK", "Bukidnon"),
-(4056, 1170, "BUL", "Bulacan"),
-(4057, 1170, "CAG", "Cagayan"),
-(4058, 1170, "CAN", "Camarines Norte"),
-(4059, 1170, "CAS", "Camarines Sur"),
-(4060, 1170, "CAM", "Camiguin"),
-(4061, 1170, "CAP", "Capiz"),
-(4062, 1170, "CAT", "Catanduanes"),
-(4063, 1170, "CAV", "Cavite"),
-(4064, 1170, "CEB", "Cebu"),
-(4065, 1170, "COM", "Davao de Oro"),
-(4066, 1170, "DAV", "Davao del Norte"),
-(4067, 1170, "DAS", "Davao del Sur"),
-(4068, 1170, "DAO", "Davao Oriental"),
-(4069, 1170, "EAS", "Eastern Samar"),
-(4070, 1170, "GUI", "Guimaras"),
-(4071, 1170, "IFU", "Ifugao"),
-(4072, 1170, "ILN", "Ilocos Norte"),
-(4073, 1170, "ILS", "Ilocos Sur"),
-(4074, 1170, "ILI", "Iloilo"),
-(4075, 1170, "ISA", "Isabela"),
-(4076, 1170, "KAL", "Kalinga"),
-(4077, 1170, "LAG", "Laguna"),
-(4078, 1170, "LAN", "Lanao del Norte"),
-(4079, 1170, "LAS", "Lanao del Sur"),
-(4080, 1170, "LUN", "La Union"),
-(4081, 1170, "LEY", "Leyte"),
-(4082, 1170, "MAG", "Maguindanao"),
-(4083, 1170, "MAD", "Marinduque"),
-(4084, 1170, "MAS", "Masbate"),
-(4085, 1170, "MDC", "Mindoro Occidental"),
-(4086, 1170, "MDR", "Mindoro Oriental"),
-(4087, 1170, "MSC", "Misamis Occidental"),
-(4088, 1170, "MSR", "Misamis Oriental"),
-(4089, 1170, "MOU", "Mountain Province"),
-(4090, 1170, "NEC", "Negroe Occidental"),
-(4091, 1170, "NER", "Negros Oriental"),
-(4092, 1170, "NCO", "Cotabato"),
-(4093, 1170, "NSA", "Northern Samar"),
-(4094, 1170, "NUE", "Nueva Ecija"),
-(4095, 1170, "NUV", "Nueva Vizcaya"),
-(4096, 1170, "PLW", "Palawan"),
-(4097, 1170, "PAM", "Pampanga"),
-(4098, 1170, "PAN", "Pangasinan"),
-(4099, 1170, "QUE", "Quezon"),
-(4100, 1170, "QUI", "Quirino"),
-(4101, 1170, "RIZ", "Rizal"),
-(4102, 1170, "ROM", "Romblon"),
-(4103, 1170, "SAR", "Sarangani"),
-(4104, 1170, "SIG", "Siquijor"),
-(4105, 1170, "SOR", "Sorsogon"),
-(4106, 1170, "SCO", "South Cotabato"),
-(4107, 1170, "SLE", "Southern Leyte"),
-(4108, 1170, "SUK", "Sultan Kudarat"),
-(4109, 1170, "SLU", "Sulu"),
-(4110, 1170, "SUN", "Surigao del Norte"),
-(4111, 1170, "SUR", "Surigao del Sur"),
-(4112, 1170, "TAR", "Tarlac"),
-(4113, 1170, "TAW", "Tawi-Tawi"),
-(4114, 1170, "WSA", "Western Samar"),
-(4115, 1170, "ZMB", "Zambales"),
-(4116, 1170, "ZAN", "Zamboanga del Norte"),
-(4117, 1170, "ZAS", "Zamboanga del Sur"),
-(4118, 1170, "ZSI", "Zamboanga Sibiguey"),
-(4119, 1163, "IS", "Islamabad Federal Capital Area"),
-(4120, 1163, "BA", "Baluchistan"),
-(4121, 1163, "NW", "Khyber Pakhtun Khawa"),
-(4122, 1163, "SD", "Sindh"),
-(4123, 1163, "TA", "Federally Administered Tribal Areas"),
-(4124, 1163, "JK", "Azad Kashmir"),
-(4125, 1163, "NA", "Gilgit-Baltistan"),
-(4126, 1173, "01", "Aveiro"),
-(4127, 1173, "02", "Beja"),
-(4128, 1173, "03", "Braga"),
-(4129, 1173, "04", "Bragança"),
-(4130, 1173, "05", "Castelo Branco"),
-(4131, 1173, "06", "Coimbra"),
-(4132, 1173, "07", "Évora"),
-(4133, 1173, "08", "Faro"),
-(4134, 1173, "09", "Guarda"),
-(4135, 1173, "10", "Leiria"),
-(4136, 1173, "11", "Lisboa"),
-(4137, 1173, "12", "Portalegre"),
-(4138, 1173, "13", "Porto"),
-(4139, 1173, "14", "Santarém"),
-(4140, 1173, "15", "Setúbal"),
-(4141, 1173, "16", "Viana do Castelo"),
-(4142, 1173, "17", "Vila Real"),
-(4143, 1173, "18", "Viseu"),
-(4144, 1173, "20", "Região Autónoma dos Açores"),
-(4145, 1173, "30", "Região Autónoma da Madeira"),
-(4146, 1168, "ASU", "Asuncion"),
-(4147, 1168, "16", "Alto Paraguay"),
-(4148, 1168, "10", "Alto Parana"),
-(4149, 1168, "13", "Amambay"),
-(4150, 1168, "19", "Boqueron"),
-(4151, 1168, "5", "Caeguazu"),
-(4152, 1168, "6", "Caazapl"),
-(4153, 1168, "14", "Canindeyu"),
-(4154, 1168, "1", "Concepcion"),
-(4155, 1168, "3", "Cordillera"),
-(4156, 1168, "4", "Guaira"),
-(4157, 1168, "7", "Itapua"),
-(4158, 1168, "8", "Miaiones"),
-(4159, 1168, "12", "Neembucu"),
-(4160, 1168, "9", "Paraguari"),
-(4161, 1168, "15", "Presidente Hayes"),
-(4162, 1168, "2", "San Pedro"),
-(4163, 1175, "DA", "Ad Dawhah"),
-(4164, 1175, "GH", "Al Ghuwayriyah"),
-(4165, 1175, "JU", "Al Jumayliyah"),
-(4166, 1175, "KH", "Al Khawr"),
-(4167, 1175, "WA", "Al Wakrah"),
-(4168, 1175, "RA", "Ar Rayyan"),
-(4169, 1175, "JB", "Jariyan al Batnah"),
-(4170, 1175, "MS", "Madinat ash Shamal"),
-(4171, 1175, "US", "Umm Salal"),
-(4172, 1176, "B", "Bucuresti"),
-(4173, 1176, "AB", "Alba"),
-(4174, 1176, "AR", "Arad"),
-(4175, 1176, "AG", "ArgeÈ™"),
-(4176, 1176, "BC", "Bacău"),
-(4177, 1176, "BH", "Bihor"),
-(4178, 1176, "BN", "Bistrița-Năsăud"),
-(4179, 1176, "BT", "Botoșani"),
-(4180, 1176, "BV", "Brașov"),
-(4181, 1176, "BR", "Brăila"),
-(4182, 1176, "BZ", "Buzău"),
-(4183, 1176, "CS", "CaraÈ™-Severin"),
-(4184, 1176, "CL", "Călărași"),
-(4185, 1176, "CJ", "Cluj"),
-(4186, 1176, "CT", "Constanța"),
-(4187, 1176, "CV", "Covasna"),
-(4188, 1176, "DB", "Dâmbovița"),
-(4189, 1176, "DJ", "Dolj"),
-(4190, 1176, "GL", "Galați"),
-(4191, 1176, "GR", "Giurgiu"),
-(4192, 1176, "GJ", "Gorj"),
-(4193, 1176, "HR", "Harghita"),
-(4194, 1176, "HD", "Hunedoara"),
-(4195, 1176, "IL", "Ialomița"),
-(4196, 1176, "IS", "Iași"),
-(4197, 1176, "IF", "Ilfov"),
-(4198, 1176, "MM", "MaramureÈ™"),
-(4199, 1176, "MH", "Mehedinți"),
-(4200, 1176, "MS", "MureÈ™"),
-(4201, 1176, "NT", "NeamÈ›"),
-(4202, 1176, "OT", "Olt"),
-(4203, 1176, "PH", "Prahova"),
-(4204, 1176, "SM", "Satu Mare"),
-(4205, 1176, "SJ", "Sălaj"),
-(4206, 1176, "SB", "Sibiu"),
-(4207, 1176, "SV", "Suceava"),
-(4208, 1176, "TR", "Teleorman"),
-(4209, 1176, "TM", "TimiÈ™"),
-(4210, 1176, "TL", "Tulcea"),
-(4211, 1176, "VS", "Vaslui"),
-(4212, 1176, "VL", "Vâlcea"),
-(4213, 1176, "VN", "Vrancea"),
-(4214, 1177, "AD", "Adygeya, Respublika"),
-(4215, 1177, "AL", "Altay, Respublika"),
-(4216, 1177, "BA", "Bashkortostan, Respublika"),
-(4217, 1177, "BU", "Buryatiya, Respublika"),
-(4218, 1177, "CE", "Chechenskaya Respublika"),
-(4219, 1177, "CU", "Chuvashskaya Respublika"),
-(4220, 1177, "DA", "Dagestan, Respublika"),
-(4221, 1177, "IN", "Ingushskaya Respublika"),
-(4222, 1177, "KB", "Kabardino-Balkarskaya"),
-(4223, 1177, "KL", "Kalmykiya, Respublika"),
-(4224, 1177, "KC", "Karachayevo-Cherkesskaya Respublika"),
-(4225, 1177, "KR", "Kareliya, Respublika"),
-(4226, 1177, "KK", "Khakasiya, Respublika"),
-(4227, 1177, "KO", "Komi, Respublika"),
-(4228, 1177, "ME", "Mariy El, Respublika"),
-(4229, 1177, "MO", "Mordoviya, Respublika"),
-(4230, 1177, "SA", "Sakha, Respublika [Yakutiya]"),
-(4231, 1177, "SE", "Severnaya Osetiya, Respublika"),
-(4232, 1177, "TA", "Tatarstan, Respublika"),
-(4233, 1177, "TY", "Tyva, Respublika [Tuva]"),
-(4234, 1177, "UD", "Udmurtskaya Respublika"),
-(4235, 1177, "ALT", "Altayskiy kray"),
-(4236, 1177, "KHA", "Khabarovskiy kray"),
-(4237, 1177, "KDA", "Krasnodarskiy kray"),
-(4238, 1177, "KYA", "Krasnoyarskiy kray"),
-(4239, 1177, "PRI", "Primorskiy kray"),
-(4240, 1177, "STA", "Stavropol\'skiy kray"),
-(4241, 1177, "AMU", "Amurskaya oblast\'"),
-(4242, 1177, "ARK", "Arkhangel\'skaya oblast\'"),
-(4243, 1177, "AST", "Astrakhanskaya oblast\'"),
-(4244, 1177, "BEL", "Belgorodskaya oblast\'"),
-(4245, 1177, "BRY", "Bryanskaya oblast\'"),
-(4246, 1177, "CHE", "Chelyabinskaya oblast\'"),
-(4247, 1177, "ZSK", "Zabaykalsky Krai\'"),
-(4248, 1177, "IRK", "Irkutskaya oblast\'"),
-(4249, 1177, "IVA", "Ivanovskaya oblast\'"),
-(4250, 1177, "KGD", "Kaliningradskaya oblast\'"),
-(4251, 1177, "KLU", "Kaluzhskaya oblast\'"),
-(4252, 1177, "KAM", "Kamchatka Krai\'"),
-(4253, 1177, "KEM", "Kemerovskaya oblast\'"),
-(4254, 1177, "KIR", "Kirovskaya oblast\'"),
-(4255, 1177, "KOS", "Kostromskaya oblast\'"),
-(4256, 1177, "KGN", "Kurganskaya oblast\'"),
-(4257, 1177, "KRS", "Kurskaya oblast\'"),
-(4258, 1177, "LEN", "Leningradskaya oblast\'"),
-(4259, 1177, "LIP", "Lipetskaya oblast\'"),
-(4260, 1177, "MAG", "Magadanskaya oblast\'"),
-(4261, 1177, "MOS", "Moskovskaya oblast\'"),
-(4262, 1177, "MUR", "Murmanskaya oblast\'"),
-(4263, 1177, "NIZ", "Nizhegorodskaya oblast\'"),
-(4264, 1177, "NGR", "Novgorodskaya oblast\'"),
-(4265, 1177, "NVS", "Novosibirskaya oblast\'"),
-(4266, 1177, "OMS", "Omskaya oblast\'"),
-(4267, 1177, "ORE", "Orenburgskaya oblast\'"),
-(4268, 1177, "ORL", "Orlovskaya oblast\'"),
-(4269, 1177, "PNZ", "Penzenskaya oblast\'"),
-(4270, 1177, "PEK", "Perm krai\'"),
-(4271, 1177, "PSK", "Pskovskaya oblast\'"),
-(4272, 1177, "ROS", "Rostovskaya oblast\'"),
-(4273, 1177, "RYA", "Ryazanskaya oblast\'"),
-(4274, 1177, "SAK", "Sakhalinskaya oblast\'"),
-(4275, 1177, "SAM", "Samarskaya oblast\'"),
-(4276, 1177, "SAR", "Saratovskaya oblast\'"),
-(4277, 1177, "SMO", "Smolenskaya oblast\'"),
-(4278, 1177, "SVE", "Sverdlovskaya oblast\'"),
-(4279, 1177, "TAM", "Tambovskaya oblast\'"),
-(4280, 1177, "TOM", "Tomskaya oblast\'"),
-(4281, 1177, "TUL", "Tul\'skaya oblast\'"),
-(4282, 1177, "TVE", "Tverskaya oblast\'"),
-(4283, 1177, "TYU", "Tyumenskaya oblast\'"),
-(4284, 1177, "ULY", "Ul\'yanovskaya oblast\'"),
-(4285, 1177, "VLA", "Vladimirskaya oblast\'"),
-(4286, 1177, "VGG", "Volgogradskaya oblast\'"),
-(4287, 1177, "VLG", "Vologodskaya oblast\'"),
-(4288, 1177, "VOR", "Voronezhskaya oblast\'"),
-(4289, 1177, "YAR", "Yaroslavskaya oblast\'"),
-(4290, 1177, "MOW", "Moskva"),
-(4291, 1177, "SPE", "Sankt-Peterburg"),
-(4292, 1177, "YEV", "Yevreyskaya avtonomnaya oblast\'"),
-(4294, 1177, "CHU", "Chukotskiy avtonomnyy okrug"),
-(4296, 1177, "KHM", "Khanty-Mansiyskiy avtonomnyy okrug"),
-(4299, 1177, "NEN", "Nenetskiy avtonomnyy okrug"),
-(4302, 1177, "YAN", "Yamalo-Nenetskiy avtonomnyy okrug"),
-(4303, 1178, "C", "Butare"),
-(4304, 1178, "I", "Byumba"),
-(4305, 1178, "E", "Cyangugu"),
-(4306, 1178, "D", "Gikongoro"),
-(4307, 1178, "G", "Gisenyi"),
-(4308, 1178, "B", "Gitarama"),
-(4309, 1178, "J", "Kibungo"),
-(4310, 1178, "F", "Kibuye"),
-(4311, 1178, "K", "Kigali-Rural Kigali y\' Icyaro"),
-(4312, 1178, "L", "Kigali-Ville Kigali Ngari"),
-(4313, 1178, "M", "Mutara"),
-(4314, 1178, "H", "Ruhengeri"),
-(4315, 1187, "11", "Al Bahah"),
-(4316, 1187, "08", "Al Hudud Ash Shamaliyah"),
-(4317, 1187, "12", "Al Jawf"),
-(4318, 1187, "03", "Al Madinah"),
-(4319, 1187, "05", "Al Qasim"),
-(4320, 1187, "01", "Ar Riyad"),
-(4321, 1187, "14", "Asir"),
-(4322, 1187, "06", "Ha\'il"),
-(4323, 1187, "09", "Jlzan"),
-(4324, 1187, "02", "Makkah"),
-(4325, 1187, "10", "Najran"),
-(4326, 1187, "07", "Tabuk"),
-(4327, 1194, "CT", "Capital Territory (Honiara)"),
-(4328, 1194, "GU", "Guadalcanal"),
-(4329, 1194, "IS", "Isabel"),
-(4330, 1194, "MK", "Makira"),
-(4331, 1194, "ML", "Malaita"),
-(4332, 1194, "TE", "Temotu"),
-(4333, 1200, "23", "A\'ali an Nil"),
-(4334, 1200, "26", "Al Bah al Ahmar"),
-(4335, 1200, "18", "Al Buhayrat"),
-(4336, 1200, "07", "Al Jazirah"),
-(4337, 1200, "03", "Al Khartum"),
-(4338, 1200, "06", "Al Qadarif"),
-(4339, 1200, "22", "Al Wahdah"),
-(4340, 1200, "04", "An Nil"),
-(4341, 1200, "08", "An Nil al Abyaq"),
-(4342, 1200, "24", "An Nil al Azraq"),
-(4343, 1200, "01", "Ash Shamallyah"),
-(4344, 1200, "17", "Bahr al Jabal"),
-(4345, 1200, "16", "Gharb al Istiwa\'iyah"),
-(4346, 1200, "14", "Gharb Ba~r al Ghazal"),
-(4347, 1200, "12", "Gharb Darfur"),
-(4348, 1200, "10", "Gharb Kurdufan"),
-(4349, 1200, "11", "Janub Darfur"),
-(4350, 1200, "13", "Janub Rurdufan"),
-(4351, 1200, "20", "Jnqall"),
-(4352, 1200, "05", "Kassala"),
-(4353, 1200, "15", "Shamal Batr al Ghazal"),
-(4354, 1200, "02", "Shamal Darfur"),
-(4355, 1200, "09", "Shamal Kurdufan"),
-(4356, 1200, "19", "Sharq al Istiwa\'iyah"),
-(4357, 1200, "25", "Sinnar"),
-(4358, 1200, "21", "Warab"),
-(4359, 1204, "K", "Blekinge län"),
-(4360, 1204, "W", "Dalarnas län"),
-(4361, 1204, "I", "Gotlands län"),
-(4362, 1204, "X", "Gävleborgs län"),
-(4363, 1204, "N", "Hallands län"),
-(4364, 1204, "Z", "Jämtlands län"),
-(4365, 1204, "F", "Jönkopings län"),
-(4366, 1204, "H", "Kalmar län"),
-(4367, 1204, "G", "Kronobergs län"),
-(4368, 1204, "BD", "Norrbottens län"),
-(4369, 1204, "M", "Skåne län"),
-(4370, 1204, "AB", "Stockholms län"),
-(4371, 1204, "D", "Södermanlands län"),
-(4372, 1204, "C", "Uppsala län"),
-(4373, 1204, "S", "Värmlands län"),
-(4374, 1204, "AC", "Västerbottens län"),
-(4375, 1204, "Y", "Västernorrlands län"),
-(4376, 1204, "U", "Västmanlands län"),
-(4377, 1204, "Q", "Västra Götalands län"),
-(4378, 1204, "T", "Örebro län"),
-(4379, 1204, "E", "Östergötlands län"),
-(4380, 1180, "SH", "Saint Helena"),
-(4381, 1180, "AC", "Ascension"),
-(4382, 1180, "TA", "Tristan da Cunha"),
-(4383, 1193, "001", "Ajdovščina"),
-(4384, 1193, "002", "Beltinci"),
-(4385, 1193, "148", "Benedikt"),
-(4386, 1193, "149", "Bistrica ob Sotli"),
-(4387, 1193, "003", "Bled"),
-(4388, 1193, "150", "Bloke"),
-(4389, 1193, "004", "Bohinj"),
-(4390, 1193, "005", "Borovnica"),
-(4391, 1193, "006", "Bovec"),
-(4392, 1193, "151", "Braslovče"),
-(4393, 1193, "007", "Brda"),
-(4394, 1193, "008", "Brezovica"),
-(4395, 1193, "009", "Brežice"),
-(4396, 1193, "152", "Cankova"),
-(4397, 1193, "011", "Celje"),
-(4398, 1193, "012", "Cerklje na Gorenjskem"),
-(4399, 1193, "013", "Cerknica"),
-(4400, 1193, "014", "Cerkno"),
-(4401, 1193, "153", "Cerkvenjak"),
-(4402, 1193, "015", "Črenšovci"),
-(4403, 1193, "016", "Črna na Koroškem"),
-(4404, 1193, "017", "ÄŒrnomelj"),
-(4405, 1193, "018", "Destrnik"),
-(4406, 1193, "019", "Divača"),
-(4407, 1193, "154", "Dobje"),
-(4408, 1193, "020", "Dobrepolje"),
-(4409, 1193, "155", "Dobrna"),
-(4410, 1193, "021", "Dobrova-Polhov Gradec"),
-(4411, 1193, "156", "Dobrovnik"),
-(4412, 1193, "022", "Dol pri Ljubljani"),
-(4413, 1193, "157", "Dolenjske Toplice"),
-(4414, 1193, "023", "Domžale"),
-(4415, 1193, "024", "Dornava"),
-(4416, 1193, "025", "Dravograd"),
-(4417, 1193, "026", "Duplek"),
-(4418, 1193, "027", "Gorenja vas-Poljane"),
-(4419, 1193, "028", "Gorišnica"),
-(4420, 1193, "029", "Gornja Radgona"),
-(4421, 1193, "030", "Gornji Grad"),
-(4422, 1193, "031", "Gornji Petrovci"),
-(4423, 1193, "158", "Grad"),
-(4424, 1193, "032", "Grosuplje"),
-(4425, 1193, "159", "Hajdina"),
-(4426, 1193, "160", "Hoče-Slivnica"),
-(4427, 1193, "161", "Hodoš"),
-(4428, 1193, "162", "Horjul"),
-(4429, 1193, "034", "Hrastnik"),
-(4430, 1193, "035", "Hrpelje-Kozina"),
-(4431, 1193, "036", "Idrija"),
-(4432, 1193, "037", "Ig"),
-(4433, 1193, "038", "Ilirska Bistrica"),
-(4434, 1193, "039", "Ivančna Gorica"),
-(4435, 1193, "040", "Izola"),
-(4436, 1193, "041", "Jesenice"),
-(4437, 1193, "163", "Jezersko"),
-(4438, 1193, "042", "Juršinci"),
-(4439, 1193, "043", "Kamnik"),
-(4440, 1193, "044", "Kanal"),
-(4441, 1193, "045", "Kidričevo"),
-(4442, 1193, "046", "Kobarid"),
-(4443, 1193, "047", "Kobilje"),
-(4444, 1193, "048", "Kočevje"),
-(4445, 1193, "049", "Komen"),
-(4446, 1193, "164", "Komenda"),
-(4447, 1193, "050", "Koper"),
-(4448, 1193, "165", "Kostel"),
-(4449, 1193, "051", "Kozje"),
-(4450, 1193, "052", "Kranj"),
-(4451, 1193, "053", "Kranjska Gora"),
-(4452, 1193, "166", "Križevci"),
-(4453, 1193, "054", "Krško"),
-(4454, 1193, "055", "Kungota"),
-(4455, 1193, "056", "Kuzma"),
-(4456, 1193, "057", "Laško"),
-(4457, 1193, "058", "Lenart"),
-(4458, 1193, "059", "Lendava"),
-(4459, 1193, "060", "Litija"),
-(4460, 1193, "061", "Ljubljana"),
-(4461, 1193, "062", "Ljubno"),
-(4462, 1193, "063", "Ljutomer"),
-(4463, 1193, "064", "Logatec"),
-(4464, 1193, "065", "Loška dolina"),
-(4465, 1193, "066", "Loški Potok"),
-(4466, 1193, "167", "Lovrenc na Pohorju"),
-(4467, 1193, "067", "Luče"),
-(4468, 1193, "068", "Lukovica"),
-(4469, 1193, "069", "Majšperk"),
-(4470, 1193, "070", "Maribor"),
-(4471, 1193, "168", "Markovci"),
-(4472, 1193, "071", "Medvode"),
-(4473, 1193, "072", "Mengeš"),
-(4474, 1193, "073", "Metlika"),
-(4475, 1193, "074", "Mežica"),
-(4476, 1193, "169", "Miklavž na Dravskem polju"),
-(4477, 1193, "075", "Miren-Kostanjevica"),
-(4478, 1193, "170", "Mirna Peč"),
-(4479, 1193, "076", "Mislinja"),
-(4480, 1193, "077", "Moravče"),
-(4481, 1193, "078", "Moravske Toplice"),
-(4482, 1193, "079", "Mozirje"),
-(4483, 1193, "080", "Murska Sobota"),
-(4484, 1193, "081", "Muta"),
-(4485, 1193, "082", "Naklo"),
-(4486, 1193, "083", "Nazarje"),
-(4487, 1193, "084", "Nova Gorica"),
-(4488, 1193, "085", "Novo mesto"),
-(4489, 1193, "181", "Sveta Ana"),
-(4490, 1193, "182", "Sveti Andraž v Slovenskih goricah"),
-(4491, 1193, "116", "Sveti Jurij"),
-(4492, 1193, "033", "Å alovci"),
-(4493, 1193, "183", "Å empeter-Vrtojba"),
-(4494, 1193, "117", "Šenčur"),
-(4495, 1193, "118", "Å entilj"),
-(4496, 1193, "119", "Å entjernej"),
-(4497, 1193, "120", "Å entjur"),
-(4498, 1193, "121", "Å kocjan"),
-(4499, 1193, "122", "Å kofja Loka"),
-(4500, 1193, "123", "Å kofljica"),
-(4501, 1193, "124", "Šmarje pri Jelšah"),
-(4502, 1193, "125", "Å martno ob Paki"),
-(4503, 1193, "194", "Å martno pri Litiji"),
-(4504, 1193, "126", "Šoštanj"),
-(4505, 1193, "127", "Å tore"),
-(4506, 1193, "184", "Tabor"),
-(4507, 1193, "010", "Tišina"),
-(4508, 1193, "128", "Tolmin"),
-(4509, 1193, "129", "Trbovlje"),
-(4510, 1193, "130", "Trebnje"),
-(4511, 1193, "185", "Trnovska vas"),
-(4512, 1193, "131", "Tržič"),
-(4513, 1193, "186", "Trzin"),
-(4514, 1193, "132", "Turnišče"),
-(4515, 1193, "133", "Velenje"),
-(4516, 1193, "187", "Velika Polana"),
-(4517, 1193, "134", "Velike Lašče"),
-(4518, 1193, "188", "Veržej"),
-(4519, 1193, "135", "Videm"),
-(4520, 1193, "136", "Vipava"),
-(4521, 1193, "137", "Vitanje"),
-(4522, 1193, "138", "Vojnik"),
-(4523, 1193, "189", "Vransko"),
-(4524, 1193, "140", "Vrhnika"),
-(4525, 1193, "141", "Vuzenica"),
-(4526, 1193, "142", "Zagorje ob Savi"),
-(4527, 1193, "143", "Zavrč"),
-(4528, 1193, "144", "Zreče"),
-(4529, 1193, "190", "Žalec"),
-(4530, 1193, "146", "Železniki"),
-(4531, 1193, "191", "Žetale"),
-(4532, 1193, "147", "Žiri"),
-(4533, 1193, "192", "Žirovnica"),
-(4534, 1193, "193", "Žužemberk"),
-(4535, 1192, "BC", "Banskobystrický kraj"),
-(4536, 1192, "BL", "Bratislavský kraj"),
-(4537, 1192, "KI", "Košický kraj"),
-(4538, 1192, "NJ", "Nitriansky kraj"),
-(4539, 1192, "PV", "Prešovský kraj"),
-(4540, 1192, "TC", "Trenčiansky kraj"),
-(4541, 1192, "TA", "Trnavský kraj"),
-(4542, 1192, "ZI", "Žilinský kraj"),
-(4543, 1190, "W", "Western Area (Freetown)"),
-(4544, 1188, "DK", "Dakar"),
-(4545, 1188, "DB", "Diourbel"),
-(4546, 1188, "FK", "Fatick"),
-(4547, 1188, "KL", "Kaolack"),
-(4548, 1188, "KD", "Kolda"),
-(4549, 1188, "LG", "Louga"),
-(4550, 1188, "MT", "Matam"),
-(4551, 1188, "SL", "Saint-Louis"),
-(4552, 1188, "TC", "Tambacounda"),
-(4553, 1188, "TH", "Thies"),
-(4554, 1188, "ZG", "Ziguinchor"),
-(4555, 1195, "AW", "Awdal"),
-(4556, 1195, "BK", "Bakool"),
-(4557, 1195, "BN", "Banaadir"),
-(4558, 1195, "BY", "Bay"),
-(4559, 1195, "GA", "Galguduud"),
-(4560, 1195, "GE", "Gedo"),
-(4561, 1195, "HI", "Hiirsan"),
-(4562, 1195, "JD", "Jubbada Dhexe"),
-(4563, 1195, "JH", "Jubbada Hoose"),
-(4564, 1195, "MU", "Mudug"),
-(4565, 1195, "NU", "Nugaal"),
-(4566, 1195, "SA", "Saneag"),
-(4567, 1195, "SD", "Shabeellaha Dhexe"),
-(4568, 1195, "SH", "Shabeellaha Hoose"),
-(4569, 1195, "SO", "Sool"),
-(4570, 1195, "TO", "Togdheer"),
-(4571, 1195, "WO", "Woqooyi Galbeed"),
-(4572, 1201, "BR", "Brokopondo"),
-(4573, 1201, "CM", "Commewijne"),
-(4574, 1201, "CR", "Coronie"),
-(4575, 1201, "MA", "Marowijne"),
-(4576, 1201, "NI", "Nickerie"),
-(4577, 1201, "PM", "Paramaribo"),
-(4578, 1201, "SA", "Saramacca"),
-(4579, 1201, "SI", "Sipaliwini"),
-(4580, 1201, "WA", "Wanica"),
-(4581, 1207, "P", "Principe"),
-(4582, 1207, "S", "Sao Tome"),
-(4583, 1066, "AH", "Ahuachapan"),
-(4584, 1066, "CA", "Cabanas"),
-(4585, 1066, "CU", "Cuscatlan"),
-(4586, 1066, "CH", "Chalatenango"),
-(4587, 1066, "MO", "Morazan"),
-(4588, 1066, "SM", "San Miguel"),
-(4589, 1066, "SS", "San Salvador"),
-(4590, 1066, "SA", "Santa Ana"),
-(4591, 1066, "SV", "San Vicente"),
-(4592, 1066, "SO", "Sonsonate"),
-(4593, 1066, "US", "Usulutan"),
-(4594, 1206, "HA", "Al Hasakah"),
-(4595, 1206, "LA", "Al Ladhiqiyah"),
-(4596, 1206, "QU", "Al Qunaytirah"),
-(4597, 1206, "RA", "Ar Raqqah"),
-(4598, 1206, "SU", "As Suwayda\'"),
-(4599, 1206, "DR", "Dar\'a"),
-(4600, 1206, "DY", "Dayr az Zawr"),
-(4601, 1206, "DI", "Dimashq"),
-(4602, 1206, "HL", "Halab"),
-(4603, 1206, "HM", "Hamah"),
-(4604, 1206, "HI", "Jim\'"),
-(4605, 1206, "ID", "Idlib"),
-(4606, 1206, "RD", "Rif Dimashq"),
-(4607, 1206, "TA", "Tarts"),
-(4608, 1203, "HH", "Hhohho"),
-(4609, 1203, "LU", "Lubombo"),
-(4610, 1203, "MA", "Manzini"),
-(4611, 1203, "SH", "Shiselweni"),
-(4612, 1043, "BA", "Batha"),
-(4613, 1043, "BI", "Biltine"),
-(4614, 1043, "BET", "Borkou-Ennedi-Tibesti"),
-(4615, 1043, "CB", "Chari-Baguirmi"),
-(4616, 1043, "GR", "Guera"),
-(4617, 1043, "KA", "Kanem"),
-(4618, 1043, "LC", "Lac"),
-(4619, 1043, "LO", "Logone-Occidental"),
-(4620, 1043, "LR", "Logone-Oriental"),
-(4621, 1043, "MK", "Mayo-Kebbi"),
-(4622, 1043, "MC", "Moyen-Chari"),
-(4623, 1043, "OD", "Ouaddai"),
-(4624, 1043, "SA", "Salamat"),
-(4625, 1043, "TA", "Tandjile"),
-(4626, 1214, "K", "Kara"),
-(4627, 1214, "M", "Maritime (Region)"),
-(4628, 1214, "S", "Savannes"),
-(4629, 1211, "10", "Krung Thep Maha Nakhon Bangkok"),
-(4630, 1211, "S", "Phatthaya"),
-(4631, 1211, "37", "Amnat Charoen"),
-(4632, 1211, "15", "Ang Thong"),
-(4633, 1211, "31", "Buri Ram"),
-(4634, 1211, "24", "Chachoengsao"),
-(4635, 1211, "18", "Chai Nat"),
-(4636, 1211, "36", "Chaiyaphum"),
-(4637, 1211, "22", "Chanthaburi"),
-(4638, 1211, "50", "Chiang Mai"),
-(4639, 1211, "57", "Chiang Rai"),
-(4640, 1211, "20", "Chon Buri"),
-(4641, 1211, "86", "Chumphon"),
-(4642, 1211, "46", "Kalasin"),
-(4643, 1211, "62", "Kamphasng Phet"),
-(4644, 1211, "71", "Kanchanaburi"),
-(4645, 1211, "40", "Khon Kaen"),
-(4646, 1211, "81", "Krabi"),
-(4647, 1211, "52", "Lampang"),
-(4648, 1211, "51", "Lamphun"),
-(4649, 1211, "42", "Loei"),
-(4650, 1211, "16", "Lop Buri"),
-(4651, 1211, "58", "Mae Hong Son"),
-(4652, 1211, "44", "Maha Sarakham"),
-(4653, 1211, "49", "Mukdahan"),
-(4654, 1211, "26", "Nakhon Nayok"),
-(4655, 1211, "73", "Nakhon Pathom"),
-(4656, 1211, "48", "Nakhon Phanom"),
-(4657, 1211, "30", "Nakhon Ratchasima"),
-(4658, 1211, "60", "Nakhon Sawan"),
-(4659, 1211, "80", "Nakhon Si Thammarat"),
-(4660, 1211, "55", "Nan"),
-(4661, 1211, "96", "Narathiwat"),
-(4662, 1211, "39", "Nong Bua Lam Phu"),
-(4663, 1211, "43", "Nong Khai"),
-(4664, 1211, "12", "Nonthaburi"),
-(4665, 1211, "13", "Pathum Thani"),
-(4666, 1211, "94", "Pattani"),
-(4667, 1211, "82", "Phangnga"),
-(4668, 1211, "93", "Phatthalung"),
-(4669, 1211, "56", "Phayao"),
-(4670, 1211, "67", "Phetchabun"),
-(4671, 1211, "76", "Phetchaburi"),
-(4672, 1211, "66", "Phichit"),
-(4673, 1211, "65", "Phitsanulok"),
-(4674, 1211, "54", "Phrae"),
-(4675, 1211, "14", "Phra Nakhon Si Ayutthaya"),
-(4676, 1211, "83", "Phuket"),
-(4677, 1211, "25", "Prachin Buri"),
-(4678, 1211, "77", "Prachuap Khiri Khan"),
-(4679, 1211, "85", "Ranong"),
-(4680, 1211, "70", "Ratchaburi"),
-(4681, 1211, "21", "Rayong"),
-(4682, 1211, "45", "Roi Et"),
-(4683, 1211, "27", "Sa Kaeo"),
-(4684, 1211, "47", "Sakon Nakhon"),
-(4685, 1211, "11", "Samut Prakan"),
-(4686, 1211, "74", "Samut Sakhon"),
-(4687, 1211, "75", "Samut Songkhram"),
-(4688, 1211, "19", "Saraburi"),
-(4689, 1211, "91", "Satun"),
-(4690, 1211, "17", "Sing Buri"),
-(4691, 1211, "33", "Si Sa Ket"),
-(4692, 1211, "90", "Songkhla"),
-(4693, 1211, "64", "Sukhothai"),
-(4694, 1211, "72", "Suphan Buri"),
-(4695, 1211, "84", "Surat Thani"),
-(4696, 1211, "32", "Surin"),
-(4697, 1211, "63", "Tak"),
-(4698, 1211, "92", "Trang"),
-(4699, 1211, "23", "Trat"),
-(4700, 1211, "34", "Ubon Ratchathani"),
-(4701, 1211, "41", "Udon Thani"),
-(4702, 1211, "61", "Uthai Thani"),
-(4703, 1211, "53", "Uttaradit"),
-(4704, 1211, "95", "Yala"),
-(4705, 1211, "35", "Yasothon"),
-(4706, 1209, "SU", "Sughd"),
-(4707, 1209, "KT", "Khatlon"),
-(4708, 1209, "GB", "Gorno-Badakhshan"),
-(4709, 1220, "A", "Ahal"),
-(4710, 1220, "B", "Balkan"),
-(4711, 1220, "D", "Dasoguz"),
-(4712, 1220, "L", "Lebap"),
-(4713, 1220, "M", "Mary"),
-(4714, 1218, "31", "Béja"),
-(4715, 1218, "13", "Ben Arous"),
-(4716, 1218, "23", "Bizerte"),
-(4717, 1218, "81", "Gabès"),
-(4718, 1218, "71", "Gafsa"),
-(4719, 1218, "32", "Jendouba"),
-(4720, 1218, "41", "Kairouan"),
-(4721, 1218, "42", "Rasserine"),
-(4722, 1218, "73", "Kebili"),
-(4723, 1218, "12", "L\'Ariana"),
-(4724, 1218, "33", "Le Ref"),
-(4725, 1218, "53", "Mahdia"),
-(4726, 1218, "14", "La Manouba"),
-(4727, 1218, "82", "Medenine"),
-(4728, 1218, "52", "Moneatir"),
-(4729, 1218, "21", "Naboul"),
-(4730, 1218, "61", "Sfax"),
-(4731, 1218, "43", "Sidi Bouxid"),
-(4732, 1218, "34", "Siliana"),
-(4733, 1218, "51", "Sousse"),
-(4734, 1218, "83", "Tataouine"),
-(4735, 1218, "72", "Tozeur"),
-(4736, 1218, "11", "Tunis"),
-(4737, 1218, "22", "Zaghouan"),
-(4738, 1219, "01", "Adana"),
-(4739, 1219, "02", "Ad yaman"),
-(4740, 1219, "03", "Afyon"),
-(4741, 1219, "04", "Ag r"),
-(4742, 1219, "68", "Aksaray"),
-(4743, 1219, "05", "Amasya"),
-(4744, 1219, "06", "Ankara"),
-(4745, 1219, "07", "Antalya"),
-(4746, 1219, "75", "Ardahan"),
-(4747, 1219, "08", "Artvin"),
-(4748, 1219, "09", "Aydin"),
-(4749, 1219, "10", "Bal kesir"),
-(4750, 1219, "74", "Bartin"),
-(4751, 1219, "72", "Batman"),
-(4752, 1219, "69", "Bayburt"),
-(4753, 1219, "11", "Bilecik"),
-(4754, 1219, "12", "Bingol"),
-(4755, 1219, "13", "Bitlis"),
-(4756, 1219, "14", "Bolu"),
-(4757, 1219, "15", "Burdur"),
-(4758, 1219, "16", "Bursa"),
-(4759, 1219, "17", "Canakkale"),
-(4760, 1219, "18", "Cankir"),
-(4761, 1219, "19", "Corum"),
-(4762, 1219, "20", "Denizli"),
-(4763, 1219, "21", "Diyarbakir"),
-(4764, 1219, "81", "Duzce"),
-(4765, 1219, "22", "Edirne"),
-(4766, 1219, "23", "Elazig"),
-(4767, 1219, "24", "Erzincan"),
-(4768, 1219, "25", "Erzurum"),
-(4769, 1219, "26", "Eskis\'ehir"),
-(4770, 1219, "27", "Gaziantep"),
-(4771, 1219, "28", "Giresun"),
-(4772, 1219, "29", "Gms\'hane"),
-(4773, 1219, "30", "Hakkari"),
-(4774, 1219, "31", "Hatay"),
-(4775, 1219, "76", "Igidir"),
-(4776, 1219, "32", "Isparta"),
-(4777, 1219, "33", "Icel"),
-(4778, 1219, "34", "Istanbul"),
-(4779, 1219, "35", "Izmir"),
-(4780, 1219, "46", "Kahramanmaras"),
-(4781, 1219, "78", "Karabk"),
-(4782, 1219, "70", "Karaman"),
-(4783, 1219, "36", "Kars"),
-(4784, 1219, "37", "Kastamonu"),
-(4785, 1219, "38", "Kayseri"),
-(4786, 1219, "71", "Kirikkale"),
-(4787, 1219, "39", "Kirklareli"),
-(4788, 1219, "40", "Kirs\'ehir"),
-(4789, 1219, "79", "Kilis"),
-(4790, 1219, "41", "Kocaeli"),
-(4791, 1219, "42", "Konya"),
-(4792, 1219, "43", "Ktahya"),
-(4793, 1219, "44", "Malatya"),
-(4794, 1219, "45", "Manisa"),
-(4795, 1219, "47", "Mardin"),
-(4796, 1219, "48", "Mugila"),
-(4797, 1219, "49", "Mus"),
-(4798, 1219, "50", "Nevs\'ehir"),
-(4799, 1219, "51", "Nigide"),
-(4800, 1219, "52", "Ordu"),
-(4801, 1219, "80", "Osmaniye"),
-(4802, 1219, "53", "Rize"),
-(4803, 1219, "54", "Sakarya"),
-(4804, 1219, "55", "Samsun"),
-(4805, 1219, "56", "Siirt"),
-(4806, 1219, "57", "Sinop"),
-(4807, 1219, "58", "Sivas"),
-(4808, 1219, "63", "S\'anliurfa"),
-(4809, 1219, "73", "S\'rnak"),
-(4810, 1219, "59", "Tekirdag"),
-(4811, 1219, "60", "Tokat"),
-(4812, 1219, "61", "Trabzon"),
-(4813, 1219, "62", "Tunceli"),
-(4814, 1219, "64", "Us\'ak"),
-(4815, 1219, "65", "Van"),
-(4816, 1219, "77", "Yalova"),
-(4817, 1219, "66", "Yozgat"),
-(4818, 1219, "67", "Zonguldak"),
-(4819, 1217, "CTT", "Couva-Tabaquite-Talparo"),
-(4820, 1217, "DMN", "Diego Martin"),
-(4821, 1217, "ETO", "Eastern Tobago"),
-(4822, 1217, "PED", "Penal-Debe"),
-(4823, 1217, "PRT", "Princes Town"),
-(4824, 1217, "RCM", "Rio Claro-Mayaro"),
-(4825, 1217, "SGE", "Sangre Grande"),
-(4826, 1217, "SJL", "San Juan-Laventille"),
-(4827, 1217, "SIP", "Siparia"),
-(4828, 1217, "TUP", "Tunapuna-Piarco"),
-(4829, 1217, "WTO", "Western Tobago"),
-(4830, 1217, "ARI", "Arima"),
-(4831, 1217, "CHA", "Chaguanas"),
-(4832, 1217, "PTF", "Point Fortin"),
-(4833, 1217, "POS", "Port of Spain"),
-(4834, 1217, "SFO", "San Fernando"),
-(4835, 1063, "AL", "Aileu"),
-(4836, 1063, "AN", "Ainaro"),
-(4837, 1063, "BA", "Bacucau"),
-(4838, 1063, "BO", "Bobonaro"),
-(4839, 1063, "CO", "Cova Lima"),
-(4840, 1063, "DI", "Dili"),
-(4841, 1063, "ER", "Ermera"),
-(4842, 1063, "LA", "Laulem"),
-(4843, 1063, "LI", "Liquica"),
-(4844, 1063, "MT", "Manatuto"),
-(4845, 1063, "MF", "Manafahi"),
-(4846, 1063, "OE", "Oecussi"),
-(4847, 1063, "VI", "Viqueque"),
-(4848, 1208, "CHA", "Changhua County"),
-(4849, 1208, "CYQ", "Chiayi County"),
-(4850, 1208, "HSQ", "Hsinchu County"),
-(4851, 1208, "HUA", "Hualien County"),
-(4852, 1208, "ILA", "Ilan County"),
-(4853, 1208, "KHQ", "Kaohsiung County"),
-(4854, 1208, "MIA", "Miaoli County"),
-(4855, 1208, "NAN", "Nantou County"),
-(4856, 1208, "PEN", "Penghu County"),
-(4857, 1208, "PIF", "Pingtung County"),
-(4858, 1208, "TXQ", "Taichung County"),
-(4859, 1208, "TNQ", "Tainan County"),
-(4860, 1208, "TPQ", "Taipei County"),
-(4861, 1208, "TTT", "Taitung County"),
-(4862, 1208, "TAO", "Taoyuan County"),
-(4863, 1208, "YUN", "Yunlin County"),
-(4864, 1208, "KEE", "Keelung City"),
-(4865, 1210, "01", "Arusha"),
-(4866, 1210, "02", "Dar-es-Salaam"),
-(4867, 1210, "03", "Dodoma"),
-(4868, 1210, "04", "Iringa"),
-(4869, 1210, "05", "Kagera"),
-(4870, 1210, "06", "Kaskazini Pemba"),
-(4871, 1210, "07", "Kaskazini Unguja"),
-(4872, 1210, "08", "Xigoma"),
-(4873, 1210, "09", "Kilimanjaro"),
-(4874, 1210, "10", "Rusini Pemba"),
-(4875, 1210, "11", "Kusini Unguja"),
-(4876, 1210, "12", "Lindi"),
-(4877, 1210, "26", "Manyara"),
-(4878, 1210, "13", "Mara"),
-(4879, 1210, "14", "Mbeya"),
-(4880, 1210, "15", "Mjini Magharibi"),
-(4881, 1210, "16", "Morogoro"),
-(4882, 1210, "17", "Mtwara"),
-(4883, 1210, "19", "Pwani"),
-(4884, 1210, "20", "Rukwa"),
-(4885, 1210, "21", "Ruvuma"),
-(4886, 1210, "22", "Shinyanga"),
-(4887, 1210, "23", "Singida"),
-(4888, 1210, "24", "Tabora"),
-(4889, 1210, "25", "Tanga"),
-(4890, 1224, "71", "Cherkas\'ka Oblast\'"),
-(4891, 1224, "74", "Chernihivs\'ka Oblast\'"),
-(4892, 1224, "77", "Chernivets\'ka Oblast\'"),
-(4893, 1224, "12", "Dnipropetrovs\'ka Oblast\'"),
-(4894, 1224, "14", "Donets\'ka Oblast\'"),
-(4895, 1224, "26", "Ivano-Frankivs\'ka Oblast\'"),
-(4896, 1224, "63", "Kharkivs\'ka Oblast\'"),
-(4897, 1224, "65", "Khersons\'ka Oblast\'"),
-(4898, 1224, "68", "Khmel\'nyts\'ka Oblast\'"),
-(4899, 1224, "35", "Kirovohrads\'ka Oblast\'"),
-(4900, 1224, "32", "Kyivs\'ka Oblast\'"),
-(4901, 1224, "09", "Luhans\'ka Oblast\'"),
-(4902, 1224, "46", "L\'vivs\'ka Oblast\'"),
-(4903, 1224, "48", "Mykolaivs\'ka Oblast\'"),
-(4904, 1224, "51", "Odes \'ka Oblast\'"),
-(4905, 1224, "53", "Poltavs\'ka Oblast\'"),
-(4906, 1224, "56", "Rivnens\'ka Oblast\'"),
-(4907, 1224, "59", "Sums \'ka Oblast\'"),
-(4908, 1224, "61", "Ternopil\'s\'ka Oblast\'"),
-(4909, 1224, "05", "Vinnyts\'ka Oblast\'"),
-(4910, 1224, "07", "Volyos\'ka Oblast\'"),
-(4911, 1224, "21", "Zakarpats\'ka Oblast\'"),
-(4912, 1224, "23", "Zaporiz\'ka Oblast\'"),
-(4913, 1224, "18", "Zhytomyrs\'ka Oblast\'"),
-(4914, 1224, "43", "Respublika Krym"),
-(4915, 1224, "30", "Kyiv"),
-(4916, 1224, "40", "Sevastopol"),
-(4917, 1223, "301", "Adjumani"),
-(4918, 1223, "302", "Apac"),
-(4919, 1223, "303", "Arua"),
-(4920, 1223, "201", "Bugiri"),
-(4921, 1223, "401", "Bundibugyo"),
-(4922, 1223, "402", "Bushenyi"),
-(4923, 1223, "202", "Busia"),
-(4924, 1223, "304", "Gulu"),
-(4925, 1223, "403", "Hoima"),
-(4926, 1223, "203", "Iganga"),
-(4927, 1223, "204", "Jinja"),
-(4928, 1223, "404", "Kabale"),
-(4929, 1223, "405", "Kabarole"),
-(4930, 1223, "213", "Kaberamaido"),
-(4931, 1223, "101", "Kalangala"),
-(4932, 1223, "102", "Kampala"),
-(4933, 1223, "205", "Kamuli"),
-(4934, 1223, "413", "Kamwenge"),
-(4935, 1223, "414", "Kanungu"),
-(4936, 1223, "206", "Kapchorwa"),
-(4937, 1223, "406", "Kasese"),
-(4938, 1223, "207", "Katakwi"),
-(4939, 1223, "112", "Kayunga"),
-(4940, 1223, "407", "Kibaale"),
-(4941, 1223, "103", "Kiboga"),
-(4942, 1223, "408", "Kisoro"),
-(4943, 1223, "305", "Kitgum"),
-(4944, 1223, "306", "Kotido"),
-(4945, 1223, "208", "Kumi"),
-(4946, 1223, "415", "Kyenjojo"),
-(4947, 1223, "307", "Lira"),
-(4948, 1223, "104", "Luwero"),
-(4949, 1223, "105", "Masaka"),
-(4950, 1223, "409", "Masindi"),
-(4951, 1223, "214", "Mayuge"),
-(4952, 1223, "209", "Mbale"),
-(4953, 1223, "410", "Mbarara"),
-(4954, 1223, "308", "Moroto"),
-(4955, 1223, "309", "Moyo"),
-(4956, 1223, "106", "Mpigi"),
-(4957, 1223, "107", "Mubende"),
-(4958, 1223, "108", "Mukono"),
-(4959, 1223, "311", "Nakapiripirit"),
-(4960, 1223, "109", "Nakasongola"),
-(4961, 1223, "310", "Nebbi"),
-(4962, 1223, "411", "Ntungamo"),
-(4963, 1223, "312", "Pader"),
-(4964, 1223, "210", "Pallisa"),
-(4965, 1223, "110", "Rakai"),
-(4966, 1223, "412", "Rukungiri"),
-(4967, 1223, "111", "Sembabule"),
-(4968, 1223, "215", "Sironko"),
-(4969, 1223, "211", "Soroti"),
-(4970, 1223, "212", "Tororo"),
-(4971, 1223, "113", "Wakiso"),
-(4972, 1223, "313", "Yumbe"),
-(4973, 1227, "81", "Baker Island"),
-(4974, 1227, "84", "Howland Island"),
-(4975, 1227, "86", "Jarvis Island"),
-(4976, 1227, "67", "Johnston Atoll"),
-(4977, 1227, "89", "Kingman Reef"),
-(4978, 1227, "71", "Midway Islands"),
-(4979, 1227, "76", "Navassa Island"),
-(4980, 1227, "95", "Palmyra Atoll"),
-(4981, 1227, "79", "Wake Island"),
-(4982, 1229, "AR", "Artigsa"),
-(4983, 1229, "CA", "Canelones"),
-(4984, 1229, "CL", "Cerro Largo"),
-(4985, 1229, "CO", "Colonia"),
-(4986, 1229, "DU", "Durazno"),
-(4987, 1229, "FS", "Flores"),
-(4988, 1229, "LA", "Lavalleja"),
-(4989, 1229, "MA", "Maldonado"),
-(4990, 1229, "MO", "Montevideo"),
-(4991, 1229, "PA", "Paysandu"),
-(4992, 1229, "RV", "Rivera"),
-(4993, 1229, "RO", "Rocha"),
-(4994, 1229, "SA", "Salto"),
-(4995, 1229, "SO", "Soriano"),
-(4996, 1229, "TA", "Tacuarembo"),
-(4997, 1229, "TT", "Treinta y Tres"),
-(4998, 1230, "TK", "Toshkent (city)"),
-(4999, 1230, "QR", "Qoraqalpogiston Respublikasi"),
-(5000, 1230, "AN", "Andijon"),
-(5001, 1230, "BU", "Buxoro"),
-(5002, 1230, "FA", "Farg\'ona"),
-(5003, 1230, "JI", "Jizzax"),
-(5004, 1230, "KH", "Khorazm"),
-(5005, 1230, "NG", "Namangan"),
-(5006, 1230, "NW", "Navoiy"),
-(5007, 1230, "QA", "Qashqadaryo"),
-(5008, 1230, "SA", "Samarqand"),
-(5009, 1230, "SI", "Sirdaryo"),
-(5010, 1230, "SU", "Surxondaryo"),
-(5011, 1230, "TO", "Toshkent"),
-(5012, 1230, "XO", "Xorazm"),
-(5013, 1232, "A", "Distrito Federal"),
-(5014, 1232, "B", "Anzoategui"),
-(5015, 1232, "C", "Apure"),
-(5016, 1232, "D", "Aragua"),
-(5017, 1232, "E", "Barinas"),
-(5018, 1232, "G", "Carabobo"),
-(5019, 1232, "H", "Cojedes"),
-(5020, 1232, "I", "Falcon"),
-(5021, 1232, "J", "Guarico"),
-(5022, 1232, "K", "Lara"),
-(5023, 1232, "L", "Merida"),
-(5024, 1232, "M", "Miranda"),
-(5025, 1232, "N", "Monagas"),
-(5026, 1232, "O", "Nueva Esparta"),
-(5027, 1232, "P", "Portuguesa"),
-(5028, 1232, "S", "Tachira"),
-(5029, 1232, "T", "Trujillo"),
-(5030, 1232, "X", "Vargas"),
-(5031, 1232, "U", "Yaracuy"),
-(5032, 1232, "V", "Zulia"),
-(5033, 1232, "Y", "Delta Amacuro"),
-(5034, 1232, "W", "Dependencias Federales"),
-(5035, 1233, "44", "An Giang"),
-(5036, 1233, "43", "Ba Ria - Vung Tau"),
-(5037, 1233, "53", "Bac Can"),
-(5038, 1233, "54", "Bac Giang"),
-(5039, 1233, "55", "Bac Lieu"),
-(5040, 1233, "56", "Bac Ninh"),
-(5041, 1233, "50", "Ben Tre"),
-(5042, 1233, "31", "Binh Dinh"),
-(5043, 1233, "57", "Binh Duong"),
-(5044, 1233, "58", "Binh Phuoc"),
-(5045, 1233, "40", "Binh Thuan"),
-(5046, 1233, "59", "Ca Mau"),
-(5047, 1233, "48", "Can Tho"),
-(5048, 1233, "04", "Cao Bang"),
-(5049, 1233, "60", "Da Nang, thanh pho"),
-(5050, 1233, "39", "Dong Nai"),
-(5051, 1233, "45", "Dong Thap"),
-(5052, 1233, "30", "Gia Lai"),
-(5053, 1233, "03", "Ha Giang"),
-(5054, 1233, "63", "Ha Nam"),
-(5055, 1233, "64", "Ha Noi, thu do"),
-(5056, 1233, "15", "Ha Tay"),
-(5057, 1233, "23", "Ha Tinh"),
-(5058, 1233, "61", "Hai Duong"),
-(5059, 1233, "62", "Hai Phong, thanh pho"),
-(5060, 1233, "14", "Hoa Binh"),
-(5061, 1233, "65", "Ho Chi Minh, thanh pho [Sai Gon]"),
-(5062, 1233, "66", "Hung Yen"),
-(5063, 1233, "34", "Khanh Hoa"),
-(5064, 1233, "47", "Kien Giang"),
-(5065, 1233, "28", "Kon Tum"),
-(5066, 1233, "01", "Lai Chau"),
-(5067, 1233, "35", "Lam Dong"),
-(5068, 1233, "09", "Lang Son"),
-(5069, 1233, "02", "Lao Cai"),
-(5070, 1233, "41", "Long An"),
-(5071, 1233, "67", "Nam Dinh"),
-(5072, 1233, "22", "Nghe An"),
-(5073, 1233, "18", "Ninh Binh"),
-(5074, 1233, "36", "Ninh Thuan"),
-(5075, 1233, "68", "Phu Tho"),
-(5076, 1233, "32", "Phu Yen"),
-(5077, 1233, "24", "Quang Binh"),
-(5078, 1233, "27", "Quang Nam"),
-(5079, 1233, "29", "Quang Ngai"),
-(5080, 1233, "13", "Quang Ninh"),
-(5081, 1233, "25", "Quang Tri"),
-(5082, 1233, "52", "Soc Trang"),
-(5083, 1233, "05", "Son La"),
-(5084, 1233, "37", "Tay Ninh"),
-(5085, 1233, "20", "Thai Binh"),
-(5086, 1233, "69", "Thai Nguyen"),
-(5087, 1233, "21", "Thanh Hoa"),
-(5088, 1233, "26", "Thua Thien-Hue"),
-(5089, 1233, "46", "Tien Giang"),
-(5090, 1233, "51", "Tra Vinh"),
-(5091, 1233, "07", "Tuyen Quang"),
-(5092, 1233, "49", "Vinh Long"),
-(5093, 1233, "70", "Vinh Phuc"),
-(5094, 1233, "06", "Yen Bai"),
-(5095, 1231, "MAP", "Malampa"),
-(5096, 1231, "PAM", "Penama"),
-(5097, 1231, "SAM", "Sanma"),
-(5098, 1231, "SEE", "Shefa"),
-(5099, 1231, "TAE", "Tafea"),
-(5100, 1231, "TOB", "Torba"),
-(5101, 1185, "AA", "A\'ana"),
-(5102, 1185, "AL", "Aiga-i-le-Tai"),
-(5103, 1185, "AT", "Atua"),
-(5104, 1185, "FA", "Fa\'aaaleleaga"),
-(5105, 1185, "GE", "Gaga\'emauga"),
-(5106, 1185, "GI", "Gagaifomauga"),
-(5107, 1185, "PA", "Palauli"),
-(5108, 1185, "SA", "Satupa\'itea"),
-(5109, 1185, "TU", "Tuamasaga"),
-(5110, 1185, "VF", "Va\'a-o-Fonoti"),
-(5111, 1185, "VS", "Vaisigano"),
-(5112, 1243, "CG", "Crna Gora"),
-(5113, 1242, "SR", "Srbija"),
-(5114, 1242, "KM", "Kosovo-Metohija"),
-(5115, 1242, "VO", "Vojvodina"),
-(5116, 1237, "AB", "Abyan"),
-(5117, 1237, "AD", "Adan"),
-(5118, 1237, "DA", "Ad Dali"),
-(5119, 1237, "BA", "Al Bayda\'"),
-(5120, 1237, "MU", "Al Hudaydah"),
-(5121, 1237, "MR", "Al Mahrah"),
-(5122, 1237, "MW", "Al Mahwit"),
-(5123, 1237, "AM", "Amran"),
-(5124, 1237, "DH", "Dhamar"),
-(5125, 1237, "HD", "Hadramawt"),
-(5126, 1237, "HJ", "Hajjah"),
-(5127, 1237, "IB", "Ibb"),
-(5128, 1237, "LA", "Lahij"),
-(5129, 1237, "MA", "Ma\'rib"),
-(5130, 1237, "SD", "Sa\'dah"),
-(5131, 1237, "SN", "San\'a\'"),
-(5132, 1237, "SH", "Shabwah"),
-(5133, 1237, "TA", "Ta\'izz"),
-(5134, 1196, "EC", "Eastern Cape"),
-(5135, 1196, "FS", "Free State"),
-(5136, 1196, "GT", "Gauteng"),
-(5137, 1196, "NL", "Kwazulu-Natal"),
-(5138, 1196, "MP", "Mpumalanga"),
-(5139, 1196, "NC", "Northern Cape"),
-(5140, 1196, "NP", "Limpopo"),
-(5141, 1196, "WC", "Western Cape"),
-(5142, 1239, "08", "Copperbelt"),
-(5143, 1239, "04", "Luapula"),
-(5144, 1239, "09", "Lusaka"),
-(5145, 1239, "06", "North-Western"),
-(5146, 1240, "BU", "Bulawayo"),
-(5147, 1240, "HA", "Harare"),
-(5148, 1240, "MA", "Manicaland"),
-(5149, 1240, "MC", "Mashonaland Central"),
-(5150, 1240, "ME", "Mashonaland East"),
-(5151, 1240, "MW", "Mashonaland West"),
-(5152, 1240, "MV", "Masvingo"),
-(5153, 1240, "MN", "Matabeleland North"),
-(5154, 1240, "MS", "Matabeleland South"),
-(5155, 1240, "MI", "Midlands"),
-(5156, 1075, "SK", "South Karelia"),
-(5157, 1075, "SO", "South Ostrobothnia"),
-(5158, 1075, "ES", "Etelä-Savo"),
-(5159, 1075, "HH", "Häme"),
-(5160, 1075, "IU", "Itä-Uusimaa"),
-(5161, 1075, "KA", "Kainuu"),
-(5162, 1075, "CO", "Central Ostrobothnia"),
-(5163, 1075, "CF", "Central Finland"),
-(5164, 1075, "KY", "Kymenlaakso"),
-(5165, 1075, "LA", "Lapland"),
-(5166, 1075, "TR", "Tampere Region"),
-(5167, 1075, "OB", "Ostrobothnia"),
-(5168, 1075, "NK", "North Karelia"),
-(5169, 1075, "NO", "Northern Ostrobothnia"),
-(5170, 1075, "NS", "Northern Savo"),
-(5171, 1075, "PH", "Päijät-Häme"),
-(5172, 1075, "SK", "Satakunta"),
-(5173, 1075, "UM", "Uusimaa"),
-(5174, 1075, "SW", "South-West Finland"),
-(5175, 1075, "AL", "Ã…land"),
-(5176, 1152, "LI", "Limburg"),
-(5177, 1098, "CW", "Central and Western"),
-(5178, 1098, "EA", "Eastern"),
-(5179, 1098, "SO", "Southern"),
-(5180, 1098, "WC", "Wan Chai"),
-(5181, 1098, "KC", "Kowloon City"),
-(5182, 1098, "KU", "Kwun Tong"),
-(5183, 1098, "SS", "Sham Shui Po"),
-(5184, 1098, "WT", "Wong Tai Sin"),
-(5185, 1098, "YT", "Yau Tsim Mong"),
-(5186, 1098, "IS", "Islands"),
-(5187, 1098, "KI", "Kwai Tsing"),
-(5188, 1098, "NO", "North"),
-(5189, 1098, "SK", "Sai Kung"),
-(5190, 1098, "ST", "Sha Tin"),
-(5191, 1098, "TP", "Tai Po"),
-(5192, 1098, "TW", "Tsuen Wan"),
-(5193, 1098, "TM", "Tuen Mun"),
-(5194, 1098, "YL", "Yuen Long"),
-(5195, 1108, "MR", "Manchester"),
-(5196, 1016, "13", "Al Manāmah (Al ‘Āşimah)"),
-(5197, 1016, "14", "Al Janūbīyah"),
--- (5198, 1016, "15", "Al Muḩarraq"), -- conflicts with id 1872, Al Muharraq
-(5199, 1016, "16", "Al Wusţá"),
-(5200, 1016, "17", "Ash Shamālīyah"),
-
+(1074, "E", "Eastern"),
+(1074, "N", "Northern"),
+(1074, "W", "Western"),
+(1074, "R", "Rotuma"),
+(1074, "C", "Central"),
+(1141, "TRK", "Chuuk"),
+(1141, "KSA", "Kosrae"),
+(1141, "PNI", "Pohnpei"),
+(1141, "YAP", "Yap"),
+(1076, "01", "Ain"),
+(1076, "02", "Aisne"),
+(1076, "03", "Allier"),
+(1076, "04", "Alpes-de-Haute-Provence"),
+(1076, "06", "Alpes-Maritimes"),
+(1076, "07", "Ardèche"),
+(1076, "08", "Ardennes"),
+(1076, "09", "Ariège"),
+(1076, "10", "Aube"),
+(1076, "11", "Aude"),
+(1076, "12", "Aveyron"),
+(1076, "67", "Bas-Rhin"),
+(1076, "13", "Bouches-du-Rhône"),
+(1076, "14", "Calvados"),
+(1076, "15", "Cantal"),
+(1076, "16", "Charente"),
+(1076, "17", "Charente-Maritime"),
+(1076, "18", "Cher"),
+(1076, "19", "Corrèze"),
+(1076, "20A", "Corse-du-Sud"),
+(1076, "21", "Côte-d\'Or"),
+(1076, "22", "Côtes-d\'Armor"),
+(1076, "23", "Creuse"),
+(1076, "79", "Deux-Sèvres"),
+(1076, "24", "Dordogne"),
+(1076, "25", "Doubs"),
+(1076, "26", "Drôme"),
+(1076, "91", "Essonne"),
+(1076, "27", "Eure"),
+(1076, "28", "Eure-et-Loir"),
+(1076, "29", "Finistère"),
+(1076, "30", "Gard"),
+(1076, "32", "Gers"),
+(1076, "33", "Gironde"),
+(1076, "68", "Haut-Rhin"),
+(1076, "20B", "Haute-Corse"),
+(1076, "31", "Haute-Garonne"),
+(1076, "43", "Haute-Loire"),
+(1076, "70", "Haute-Saône"),
+(1076, "74", "Haute-Savoie"),
+(1076, "87", "Haute-Vienne"),
+(1076, "05", "Hautes-Alpes"),
+(1076, "65", "Hautes-Pyrénées"),
+(1076, "92", "Hauts-de-Seine"),
+(1076, "34", "Hérault"),
+(1076, "36", "Indre"),
+(1076, "35", "Ille-et-Vilaine"),
+(1076, "37", "Indre-et-Loire"),
+(1076, "38", "Isère"),
+(1076, "40", "Landes"),
+(1076, "41", "Loir-et-Cher"),
+(1076, "42", "Loire"),
+(1076, "44", "Loire-Atlantique"),
+(1076, "45", "Loiret"),
+(1076, "46", "Lot"),
+(1076, "47", "Lot-et-Garonne"),
+(1076, "48", "Lozère"),
+(1076, "49", "Maine-et-Loire"),
+(1076, "50", "Manche"),
+(1076, "51", "Marne"),
+(1076, "53", "Mayenne"),
+(1076, "54", "Meurthe-et-Moselle"),
+(1076, "55", "Meuse"),
+(1076, "56", "Morbihan"),
+(1076, "57", "Moselle"),
+(1076, "58", "Nièvre"),
+(1076, "59", "Nord"),
+(1076, "60", "Oise"),
+(1076, "61", "Orne"),
+(1076, "75", "Paris"),
+(1076, "62", "Pas-de-Calais"),
+(1076, "63", "Puy-de-Dôme"),
+(1076, "64", "Pyrénées-Atlantiques"),
+(1076, "66", "Pyrénées-Orientales"),
+(1076, "69", "Rhône"),
+(1076, "71", "Saône-et-Loire"),
+(1076, "72", "Sarthe"),
+(1076, "73", "Savoie"),
+(1076, "77", "Seine-et-Marne"),
+(1076, "76", "Seine-Maritime"),
+(1076, "93", "Seine-Saint-Denis"),
+(1076, "80", "Somme"),
+(1076, "81", "Tarn"),
+(1076, "82", "Tarn-et-Garonne"),
+(1076, "95", "Val d\'Oise"),
+(1076, "90", "Territoire de Belfort"),
+(1076, "94", "Val-de-Marne"),
+(1076, "83", "Var"),
+(1076, "84", "Vaucluse"),
+(1076, "85", "Vendée"),
+(1076, "86", "Vienne"),
+(1076, "88", "Vosges"),
+(1076, "89", "Yonne"),
+(1076, "78", "Yvelines"),
+(1076, "GP", "Guadeloupe"),
+(1076, "MQ", "Martinique"),
+(1076, "GF", "Guyane"),
+(1076, "RE", "La Réunion"),
+(1076, "YT", "Mayotte"),
+(1076, "WF", "Wallis-et-Futuna"),
+(1076, "NC", "Nouvelle-Calédonie"),
+(1076, "52", "Haute-Marne"),
+(1076, "39", "Jura"),
+(1226, "ABE", "Aberdeen City"),
+(1226, "ABD", "Aberdeenshire"),
+(1226, "ANS", "Angus"),
+(1226, "ANT", "Co Antrim"),
+(1226, "AGB", "Argyll and Bute"),
+(1226, "ARM", "Co Armagh"),
+(1226, "BDF", "Bedfordshire"),
+(1226, "BGW", "Blaenau Gwent"),
+(1226, "BST", "Bristol, City of"),
+(1226, "BKM", "Buckinghamshire"),
+(1226, "CAM", "Cambridgeshire"),
+(1226, "CHS", "Cheshire"),
+(1226, "CLK", "Clackmannanshire"),
+(1226, "CON", "Cornwall"),
+(1226, "CMA", "Cumbria"),
+(1226, "DBY", "Derbyshire"),
+(1226, "DRY", "Co Londonderry"),
+(1226, "DEV", "Devon"),
+(1226, "DOR", "Dorset"),
+(1226, "DOW", "Co Down"),
+(1226, "DGY", "Dumfries and Galloway"),
+(1226, "DND", "Dundee City"),
+(1226, "DUR", "County Durham"),
+(1226, "EAY", "East Ayrshire"),
+(1226, "EDU", "East Dunbartonshire"),
+(1226, "ELN", "East Lothian"),
+(1226, "ERW", "East Renfrewshire"),
+(1226, "ERY", "East Riding of Yorkshire"),
+(1226, "ESX", "East Sussex"),
+(1226, "EDH", "Edinburgh, City of"),
+(1226, "ELS", "Na h-Eileanan Siar"),
+(1226, "ESS", "Essex"),
+(1226, "FAL", "Falkirk"),
+(1226, "FER", "Co Fermanagh"),
+(1226, "FIF", "Fife"),
+(1226, "GLG", "Glasgow City"),
+(1226, "GLS", "Gloucestershire"),
+(1226, "GWN", "Gwynedd"),
+(1226, "HAM", "Hampshire"),
+(1226, "HEF", "Herefordshire"),
+(1226, "HRT", "Hertfordshire"),
+(1226, "HED", "Highland"),
+(1226, "IVC", "Inverclyde"),
+(1226, "IOW", "Isle of Wight"),
+(1226, "KEN", "Kent"),
+(1226, "LAN", "Lancashire"),
+(1226, "LEC", "Leicestershire"),
+(1226, "LIN", "Lincolnshire"),
+(1226, "MLN", "Midlothian"),
+(1226, "MRY", "Moray"),
+(1226, "NFK", "Norfolk"),
+(1226, "NAY", "North Ayrshire"),
+(1226, "NLK", "North Lanarkshire"),
+(1226, "NYK", "North Yorkshire"),
+(1226, "NTH", "Northamptonshire"),
+(1226, "NBL", "Northumberland"),
+(1226, "NTT", "Nottinghamshire"),
+(1226, "OLD", "Oldham"),
+(1226, "OMH", "Omagh"),
+(1226, "ORR", "Orkney Islands"),
+(1226, "OXF", "Oxfordshire"),
+(1226, "PKN", "Perth and Kinross"),
+(1226, "POW", "Powys"),
+(1226, "RFW", "Renfrewshire"),
+(1226, "RUT", "Rutland"),
+(1226, "SCB", "Scottish Borders"),
+(1226, "ZET", "Shetland Islands"),
+(1226, "SHR", "Shropshire"),
+(1226, "SOM", "Somerset"),
+(1226, "SAY", "South Ayrshire"),
+(1226, "SGC", "South Gloucestershire"),
+(1226, "SLK", "South Lanarkshire"),
+(1226, "STS", "Staffordshire"),
+(1226, "STG", "Stirling"),
+(1226, "SFK", "Suffolk"),
+(1226, "SRY", "Surrey"),
+(1226, "VGL", "Vale of Glamorgan, The"),
+(1226, "WAR", "Warwickshire"),
+(1226, "WDU", "West Dunbartonshire"),
+(1226, "WLN", "West Lothian"),
+(1226, "WSX", "West Sussex"),
+(1226, "WIL", "Wiltshire"),
+(1226, "WOR", "Worcestershire"),
+(1226, "ANN", "Antrim and Newtownabbey"),
+(1226, "AND", "Ards and North Down"),
+(1226, "ABC", "Armagh City, Banbridge and Craigavon"),
+(1226, "BFS", "Belfast"),
+(1226, "CCG", "Causeway Coast and Glens"),
+(1226, "DRS", "Derry City and Strabane"),
+(1226, "FMO", "Fermanagh and Omagh"),
+(1226, "LBC", "Lisburn and Castlereagh"),
+(1226, "MEA", "Mid and East Antrim"),
+(1226, "MUL", "Mid Ulster"),
+(1226, "NMD", "Newry, Mourne and Down"),
+(1226, "BGE", "Bridgend"),
+(1226, "CAY", "Caerphilly"),
+(1226, "CRF", "Cardiff"),
+(1226, "CMN", "Carmarthenshire"),
+(1226, "CGN", "Ceredigion"),
+(1226, "CWY", "Conwy"),
+(1226, "DEN", "Denbighshire"),
+(1226, "FLN", "Flintshire"),
+(1226, "AGY", "Isle of Anglesey"),
+(1226, "MTY", "Merthyr Tydfil"),
+(1226, "NTL", "Neath Port Talbot"),
+(1226, "NWP", "Newport"),
+(1226, "PEM", "Pembrokeshire"),
+(1226, "RCT", "Rhondda, Cynon, Taff"),
+(1226, "SWA", "Swansea"),
+(1226, "TOF", "Torfaen"),
+(1226, "WRX", "Wrexham"),
+(1226, "MON", "Monmouthshire"),
+(1226, "TWR", "Tyne and Wear"),
+(1226, "GTM", "Greater Manchester"),
+(1226, "TYR", "Co Tyrone"),
+(1226, "WYK", "West Yorkshire"),
+(1226, "SYK", "South Yorkshire"),
+(1226, "MSY", "Merseyside"),
+(1226, "BRK", "Berkshire"),
+(1226, "WMD", "West Midlands"),
+(1226, "WGM", "West Glamorgan"),
+(1226, "LON", "London"),
+(1226, "CWD", "Clwyd"),
+(1226, "SGM", "South Glamorgan"),
+(1083, "AH", "Ashanti"),
+(1083, "BA", "Brong-Ahafo"),
+(1083, "AA", "Greater Accra"),
+(1083, "UE", "Upper East"),
+(1083, "UW", "Upper West"),
+(1083, "TV", "Volta"),
+(1083, "CP", "Central"),
+(1083, "EP", "Eastern"),
+(1083, "NP", "Northern"),
+(1083, "WP", "Western"),
+(1213, "B", "Banjul"),
+(1213, "L", "Lower River"),
+(1213, "M", "MacCarthy Island"),
+(1213, "N", "North Bank"),
+(1213, "U", "Upper River"),
+(1091, "BE", "Beyla"),
+(1091, "BF", "Boffa"),
+(1091, "BK", "Boke"),
+(1091, "CO", "Coyah"),
+(1091, "DB", "Dabola"),
+(1091, "DL", "Dalaba"),
+(1091, "DI", "Dinguiraye"),
+(1091, "DU", "Dubreka"),
+(1091, "FA", "Faranah"),
+(1091, "FO", "Forecariah"),
+(1091, "FR", "Fria"),
+(1091, "GA", "Gaoual"),
+(1091, "GU", "Guekedou"),
+(1091, "KA", "Kankan"),
+(1091, "KE", "Kerouane"),
+(1091, "KD", "Kindia"),
+(1091, "KS", "Kissidougou"),
+(1091, "KB", "Koubia"),
+(1091, "KN", "Koundara"),
+(1091, "KO", "Kouroussa"),
+(1091, "LA", "Labe"),
+(1091, "LE", "Lelouma"),
+(1091, "LO", "Lola"),
+(1091, "MC", "Macenta"),
+(1091, "ML", "Mali"),
+(1091, "MM", "Mamou"),
+(1091, "MD", "Mandiana"),
+(1091, "NZ", "Nzerekore"),
+(1091, "PI", "Pita"),
+(1091, "SI", "Siguiri"),
+(1091, "TE", "Telimele"),
+(1091, "TO", "Tougue"),
+(1091, "YO", "Yomou"),
+(1067, "C", "Region Continental"),
+(1067, "I", "Region Insular"),
+(1067, "AN", "Annobon"),
+(1067, "BN", "Bioko Norte"),
+(1067, "BS", "Bioko Sur"),
+(1067, "CS", "Centro Sur"),
+(1067, "KN", "Kie-Ntem"),
+(1067, "LI", "Litoral"),
+(1067, "WN", "Wele-Nzas"),
+(1085, "13", "Achaïa"),
+(1085, "01", "Aitolia-Akarnania"),
+(1085, "11", "Argolis"),
+(1085, "12", "Arkadia"),
+(1085, "31", "Arta"),
+(1085, "A1", "Attiki"),
+(1085, "64", "Chalkidiki"),
+(1085, "94", "Chania"),
+(1085, "85", "Chios"),
+(1085, "81", "Dodekanisos"),
+(1085, "52", "Drama"),
+(1085, "71", "Evros"),
+(1085, "05", "Evrytania"),
+(1085, "04", "Evvoia"),
+(1085, "63", "Florina"),
+(1085, "07", "Fokis"),
+(1085, "06", "Fthiotis"),
+(1085, "51", "Grevena"),
+(1085, "14", "Ileia"),
+(1085, "53", "Imathia"),
+(1085, "33", "Ioannina"),
+(1085, "91", "Irakleion"),
+(1085, "41", "Karditsa"),
+(1085, "56", "Kastoria"),
+(1085, "55", "Kavalla"),
+(1085, "23", "Kefallinia"),
+(1085, "22", "Kerkyra"),
+(1085, "57", "Kilkis"),
+(1085, "15", "Korinthia"),
+(1085, "58", "Kozani"),
+(1085, "82", "Kyklades"),
+(1085, "16", "Lakonia"),
+(1085, "42", "Larisa"),
+(1085, "92", "Lasithion"),
+(1085, "24", "Lefkas"),
+(1085, "83", "Lesvos"),
+(1085, "43", "Magnisia"),
+(1085, "17", "Messinia"),
+(1085, "59", "Pella"),
+(1085, "34", "Preveza"),
+(1085, "93", "Rethymnon"),
+(1085, "73", "Rodopi"),
+(1085, "84", "Samos"),
+(1085, "62", "Serrai"),
+(1085, "32", "Thesprotia"),
+(1085, "54", "Thessaloniki"),
+(1085, "44", "Trikala"),
+(1085, "03", "Voiotia"),
+(1085, "72", "Xanthi"),
+(1085, "21", "Zakynthos"),
+(1085, "69", "Agio Oros"),
+(1085, "61", "Pieria"),
+(1090, "AV", "Alta Verapaz"),
+(1090, "BV", "Baja Verapaz"),
+(1090, "CM", "Chimaltenango"),
+(1090, "CQ", "Chiquimula"),
+(1090, "PR", "El Progreso"),
+(1090, "ES", "Escuintla"),
+(1090, "GU", "Guatemala"),
+(1090, "HU", "Huehuetenango"),
+(1090, "IZ", "Izabal"),
+(1090, "JA", "Jalapa"),
+(1090, "JU", "Jutiapa"),
+(1090, "PE", "Peten"),
+(1090, "QZ", "Quetzaltenango"),
+(1090, "QC", "Quiche"),
+(1090, "RE", "Retalhuleu"),
+(1090, "SA", "Sacatepequez"),
+(1090, "SM", "San Marcos"),
+(1090, "SR", "Santa Rosa"),
+(1090, "SO", "Sololá"),
+(1090, "SU", "Suchitepequez"),
+(1090, "TO", "Totonicapan"),
+(1090, "ZA", "Zacapa"),
+(1092, "BS", "Bissau"),
+(1092, "BA", "Bafata"),
+(1092, "BM", "Biombo"),
+(1092, "BL", "Bolama"),
+(1092, "CA", "Cacheu"),
+(1092, "GA", "Gabu"),
+(1092, "OI", "Oio"),
+(1092, "QU", "Quloara"),
+(1092, "TO", "Tombali S"),
+(1093, "BA", "Barima-Waini"),
+(1093, "CU", "Cuyuni-Mazaruni"),
+(1093, "DE", "Demerara-Mahaica"),
+(1093, "EB", "East Berbice-Corentyne"),
+(1093, "ES", "Essequibo Islands-West Demerara"),
+(1093, "MA", "Mahaica-Berbice"),
+(1093, "PM", "Pomeroon-Supenaam"),
+(1093, "PT", "Potaro-Siparuni"),
+(1093, "UD", "Upper Demerara-Berbice"),
+(1093, "UT", "Upper Takutu-Upper Essequibo"),
+(1097, "AT", "Atlantida"),
+(1097, "CL", "Colon"),
+(1097, "CM", "Comayagua"),
+(1097, "CP", "Copan"),
+(1097, "CR", "Cortes"),
+(1097, "CH", "Choluteca"),
+(1097, "EP", "El Paraiso"),
+(1097, "FM", "Francisco Morazan"),
+(1097, "GD", "Gracias a Dios"),
+(1097, "IN", "Intibuca"),
+(1097, "IB", "Islas de la Bahia"),
+(1097, "LE", "Lempira"),
+(1097, "OC", "Ocotepeque"),
+(1097, "OL", "Olancho"),
+(1097, "SB", "Santa Barbara"),
+(1097, "VA", "Valle"),
+(1097, "YO", "Yoro"),
+(1097, "LP", "La Paz"),
+(1055, "07", "Bjelovarsko-bilogorska zupanija"),
+(1055, "12", "Brodsko-posavska zupanija"),
+(1055, "19", "Dubrovacko-neretvanska zupanija"),
+(1055, "18", "Istarska zupanija"),
+(1055, "04", "Karlovacka zupanija"),
+(1055, "06", "Koprivnickco-krizevacka zupanija"),
+(1055, "02", "Krapinako-zagorska zupanija"),
+(1055, "09", "Licko-senjska zupanija"),
+(1055, "20", "Medimurska zupanija"),
+(1055, "14", "Osjecko-baranjska zupanija"),
+(1055, "11", "Pozesko-slavonska zupanija"),
+(1055, "08", "Primorsko-goranska zupanija"),
+(1055, "03", "Sisacko-moelavacka Iupanija"),
+(1055, "17", "Splitako-dalmatinska zupanija"),
+(1055, "15", "Sibenako-kninska zupanija"),
+(1055, "05", "Varaidinska zupanija"),
+(1055, "10", "VirovitiEko-podravska zupanija"),
+(1055, "16", "VuRovarako-srijemska zupanija"),
+(1055, "13", "Zadaraka"),
+(1055, "01", "Zagrebacka zupanija"),
+(1094, "GA", "Grande-Anse"),
+(1094, "NE", "Nord-Est"),
+(1094, "NO", "Nord-Ouest"),
+(1094, "OU", "Ouest"),
+(1094, "SD", "Sud"),
+(1094, "SE", "Sud-Est"),
+(1094, "AR", "Artibonite"),
+(1094, "CE", "Centre"),
+(1094, "NI", "Nippes"),
+(1094, "ND", "Nord"),
+(1099, "BU", "Budapest"),
+(1099, "BK", "Bács-Kiskun"),
+(1099, "BA", "Baranya"),
+(1099, "BE", "Békés"),
+(1099, "BZ", "Borsod-Abaúj-Zemplén"),
+(1099, "CS", "Csongrád"),
+(1099, "FE", "Fejér"),
+(1099, "GS", "Győr-Moson-Sopron"),
+(1099, "HB", "Hajdu-Bihar"),
+(1099, "HE", "Heves"),
+(1099, "JN", "Jász-Nagykun-Szolnok"),
+(1099, "KE", "Komárom-Esztergom"),
+(1099, "NO", "Nográd"),
+(1099, "PE", "Pest"),
+(1099, "SO", "Somogy"),
+(1099, "SZ", "Szabolcs-Szatmár-Bereg"),
+(1099, "TO", "Tolna"),
+(1099, "VA", "Vas"),
+(1099, "VE", "Veszprém"),
+(1099, "ZA", "Zala"),
+(1099, "BC", "Békéscsaba"),
+(1099, "DE", "Debrecen"),
+(1099, "DU", "Dunaújváros"),
+(1099, "EG", "Eger"),
+(1099, "GY", "Győr"),
+(1099, "HV", "Hódmezővásárhely"),
+(1099, "KV", "Kaposvár"),
+(1099, "KM", "Kecskemét"),
+(1099, "MI", "Miskolc"),
+(1099, "NK", "Nagykanizsa"),
+(1099, "NY", "Nyiregyháza"),
+(1099, "PS", "Pécs"),
+(1099, "ST", "Salgótarján"),
+(1099, "SN", "Sopron"),
+(1099, "SD", "Szeged"),
+(1099, "SF", "Székesfehérvár"),
+(1099, "SS", "Szekszárd"),
+(1099, "SK", "Szolnok"),
+(1099, "SH", "Szombathely"),
+(1099, "TB", "Tatabánya"),
+(1099, "ZE", "Zalaegerszeg"),
+(1102, "BA", "Bali"),
+(1102, "BB", "Kepulauan Bangka Belitung"),
+(1102, "BT", "Banten"),
+(1102, "BE", "Bengkulu"),
+(1102, "GO", "Gorontalo"),
+(1102, "PB", "Papua Barat"),
+(1102, "JA", "Jambi"),
+(1102, "JB", "Jawa Barat"),
+(1102, "JT", "Jawa Tengah"),
+(1102, "JI", "Jawa Timur"),
+(1102, "KB", "Kalimantan Barat"),
+(1102, "KI", "Kalimantan Timur"),
+(1102, "KS", "Kalimantan Selatan"),
+(1102, "KR", "Kepulauan Riau"),
+(1102, "LA", "Lampung"),
+(1102, "MA", "Maluku"),
+(1102, "MU", "Maluku Utara"),
+(1102, "NB", "Nusa Tenggara Barat"),
+(1102, "NT", "Nusa Tenggara Timur"),
+(1102, "PA", "Papua"),
+(1102, "RI", "Riau"),
+(1102, "SN", "Sulawesi Selatan"),
+(1102, "ST", "Sulawesi Tengah"),
+(1102, "SG", "Sulawesi Tenggara"),
+(1102, "SA", "Sulawesi Utara"),
+(1102, "SB", "Sumatra Barat"),
+(1102, "SS", "Sumatra Selatan"),
+(1102, "SU", "Sumatera Utara"),
+(1102, "JK", "DKI Jakarta"),
+(1102, "AC", "Aceh"),
+(1102, "YO", "DI Yogyakarta"),
+(1102, "KT", "Kalimantan Tengah"),
+(1102, "SR", "Sulawesi Barat"),
+(1102, "KU", "Kalimantan Utara"),
+(1105, "C", "Cork"),
+(1105, "CE", "Clare"),
+(1105, "CN", "Cavan"),
+(1105, "CW", "Carlow"),
+(1105, "D", "Dublin"),
+(1105, "DL", "Donegal"),
+(1105, "G", "Galway"),
+(1105, "KE", "Kildare"),
+(1105, "KK", "Kilkenny"),
+(1105, "KY", "Kerry"),
+(1105, "LD", "Longford"),
+(1105, "LH", "Louth"),
+(1105, "LK", "Limerick"),
+(1105, "LM", "Leitrim"),
+(1105, "LS", "Laois"),
+(1105, "MH", "Meath"),
+(1105, "MN", "Monaghan"),
+(1105, "MO", "Mayo"),
+(1105, "OY", "Offaly"),
+(1105, "RN", "Roscommon"),
+(1105, "SO", "Sligo"),
+(1105, "TA", "Tipperary"),
+(1105, "WD", "Waterford"),
+(1105, "WH", "Westmeath"),
+(1105, "WW", "Wicklow"),
+(1105, "WX", "Wexford"),
+(1106, "D", "HaDarom"),
+(1106, "M", "HaMerkaz"),
+(1106, "Z", "HaZafon"),
+(1106, "HA", "Haifa"),
+(1106, "TA", "Tel-Aviv"),
+(1106, "JM", "Jerusalem"),
+(1104, "AN", "Al Anbar"),
+(1104, "BA", "Al Ba,rah"),
+(1104, "MU", "Al Muthanna"),
+(1104, "QA", "Al Qadisiyah"),
+(1104, "NA", "An Najef"),
+(1104, "AR", "Arbil"),
+(1104, "SW", "As Sulaymaniyah"),
+(1104, "TS", "At Ta\'mim"),
+(1104, "BB", "Babil"),
+(1104, "BG", "Baghdad"),
+(1104, "DA", "Dahuk"),
+(1104, "DQ", "Dhi Qar"),
+(1104, "DI", "Diyala"),
+(1104, "KA", "Karbala\'"),
+(1104, "MA", "Maysan"),
+(1104, "NI", "Ninawa"),
+(1104, "SD", "Salah ad Din"),
+(1104, "WA", "Wasit"),
+(1103, "03", "Ardabil"),
+(1103, "02", "Azarbayjan-e Gharbi"),
+(1103, "01", "Azarbayjan-e Sharqi"),
+(1103, "06", "Bushehr"),
+(1103, "08", "Chahar Mahall va Bakhtiari"),
+(1103, "04", "Esfahan"),
+(1103, "14", "Fars"),
+(1103, "19", "Gilan"),
+(1103, "27", "Golestan"),
+(1103, "24", "Hamadan"),
+(1103, "23", "Hormozgan"),
+(1103, "05", "Iiam"),
+(1103, "15", "Kerman"),
+(1103, "17", "Kermanshah"),
+(1103, "09", "Khorasan"),
+(1103, "10", "Khuzestan"),
+(1103, "18", "Kohjiluyeh va Buyer Ahmad"),
+(1103, "16", "Kordestan"),
+(1103, "20", "Lorestan"),
+(1103, "22", "Markazi"),
+(1103, "21", "Mazandaran"),
+(1103, "28", "Qazvin"),
+(1103, "26", "Qom"),
+(1103, "12", "Semnan"),
+(1103, "13", "Sistan va Baluchestan"),
+(1103, "07", "Tehran"),
+(1103, "25", "Yazd"),
+(1103, "11", "Zanjan"),
+(1100, "7", "Austurland"),
+(1100, "1", "Hofuoborgarsvaeoi utan Reykjavikur"),
+(1100, "6", "Norourland eystra"),
+(1100, "5", "Norourland vestra"),
+(1100, "0", "Reykjavik"),
+(1100, "8", "Suourland"),
+(1100, "2", "Suournes"),
+(1100, "4", "Vestfirolr"),
+(1100, "3", "Vesturland"),
+(1107, "AG", "Agrigento"),
+(1107, "AL", "Alessandria"),
+(1107, "AN", "Ancona"),
+(1107, "AO", "Aosta"),
+(1107, "AR", "Arezzo"),
+(1107, "AP", "Ascoli Piceno"),
+(1107, "AT", "Asti"),
+(1107, "AV", "Avellino"),
+(1107, "BA", "Bari"),
+(1107, "BL", "Belluno"),
+(1107, "BN", "Benevento"),
+(1107, "BG", "Bergamo"),
+(1107, "BI", "Biella"),
+(1107, "BO", "Bologna"),
+(1107, "BZ", "Bolzano"),
+(1107, "BS", "Brescia"),
+(1107, "BR", "Brindisi"),
+(1107, "CA", "Cagliari"),
+(1107, "CL", "Caltanissetta"),
+(1107, "CB", "Campobasso"),
+(1107, "CE", "Caserta"),
+(1107, "CT", "Catania"),
+(1107, "CZ", "Catanzaro"),
+(1107, "CH", "Chieti"),
+(1107, "CO", "Como"),
+(1107, "CS", "Cosenza"),
+(1107, "CR", "Cremona"),
+(1107, "KR", "Crotone"),
+(1107, "CN", "Cuneo"),
+(1107, "EN", "Enna"),
+(1107, "FE", "Ferrara"),
+(1107, "FI", "Firenze"),
+(1107, "FG", "Foggia"),
+(1107, "FC", "Forlì-Cesena"),
+(1107, "FR", "Frosinone"),
+(1107, "GE", "Genova"),
+(1107, "GO", "Gorizia"),
+(1107, "GR", "Grosseto"),
+(1107, "IM", "Imperia"),
+(1107, "IS", "Isernia"),
+(1107, "AQ", "L\'Aquila"),
+(1107, "SP", "La Spezia"),
+(1107, "LT", "Latina"),
+(1107, "LE", "Lecce"),
+(1107, "LC", "Lecco"),
+(1107, "LI", "Livorno"),
+(1107, "LO", "Lodi"),
+(1107, "LU", "Lucca"),
+(1107, "MC", "Macerata"),
+(1107, "MN", "Mantova"),
+(1107, "MS", "Massa-Carrara"),
+(1107, "MT", "Matera"),
+(1107, "ME", "Messina"),
+(1107, "MI", "Milano"),
+(1107, "MO", "Modena"),
+(1107, "NA", "Napoli"),
+(1107, "NO", "Novara"),
+(1107, "NU", "Nuoro"),
+(1107, "OR", "Oristano"),
+(1107, "PD", "Padova"),
+(1107, "PA", "Palermo"),
+(1107, "PR", "Parma"),
+(1107, "PV", "Pavia"),
+(1107, "PG", "Perugia"),
+(1107, "PU", "Pesaro e Urbino"),
+(1107, "PE", "Pescara"),
+(1107, "PC", "Piacenza"),
+(1107, "PI", "Pisa"),
+(1107, "PT", "Pistoia"),
+(1107, "PN", "Pordenone"),
+(1107, "PZ", "Potenza"),
+(1107, "PO", "Prato"),
+(1107, "RG", "Ragusa"),
+(1107, "RA", "Ravenna"),
+(1107, "RC", "Reggio Calabria"),
+(1107, "RE", "Reggio Emilia"),
+(1107, "RI", "Rieti"),
+(1107, "RN", "Rimini"),
+(1107, "RM", "Roma"),
+(1107, "RO", "Rovigo"),
+(1107, "SA", "Salerno"),
+(1107, "SS", "Sassari"),
+(1107, "SV", "Savona"),
+(1107, "SI", "Siena"),
+(1107, "SR", "Siracusa"),
+(1107, "SO", "Sondrio"),
+(1107, "TA", "Taranto"),
+(1107, "TE", "Teramo"),
+(1107, "TR", "Terni"),
+(1107, "TO", "Torino"),
+(1107, "TP", "Trapani"),
+(1107, "TN", "Trento"),
+(1107, "TV", "Treviso"),
+(1107, "TS", "Trieste"),
+(1107, "UD", "Udine"),
+(1107, "VA", "Varese"),
+(1107, "VE", "Venezia"),
+(1107, "VB", "Verbano-Cusio-Ossola"),
+(1107, "VC", "Vercelli"),
+(1107, "VR", "Verona"),
+(1107, "VV", "Vibo Valentia"),
+(1107, "VI", "Vicenza"),
+(1107, "VT", "Viterbo"),
+(1107, "BT", "Barletta-Andria-Trani"),
+(1107, "FM", "Fermo"),
+(1107, "MB", "Monza e Brianza"),
+(1107, "CI", "Carbonia-Iglesias"),
+(1107, "OT", "Olbia-Tempio"),
+(1107, "VS", "Medio Campidano"),
+(1107, "OG", "Ogliastra"),
+(1109, "23", "Aichi"),
+(1109, "05", "Akita"),
+(1109, "02", "Aomori"),
+(1109, "12", "Chiba"),
+(1109, "38", "Ehime"),
+(1109, "18", "Fukui"),
+(1109, "40", "Fukuoka"),
+(1109, "07", "Fukusima"),
+(1109, "21", "Gifu"),
+(1109, "10", "Gunma"),
+(1109, "34", "Hiroshima"),
+(1109, "01", "Hokkaido"),
+(1109, "28", "Hyogo"),
+(1109, "08", "Ibaraki"),
+(1109, "17", "Ishikawa"),
+(1109, "03", "Iwate"),
+(1109, "37", "Kagawa"),
+(1109, "46", "Kagoshima"),
+(1109, "14", "Kanagawa"),
+(1109, "39", "Kochi"),
+(1109, "43", "Kumamoto"),
+(1109, "26", "Kyoto"),
+(1109, "24", "Mie"),
+(1109, "04", "Miyagi"),
+(1109, "45", "Miyazaki"),
+(1109, "20", "Nagano"),
+(1109, "42", "Nagasaki"),
+(1109, "29", "Nara"),
+(1109, "15", "Niigata"),
+(1109, "44", "Oita"),
+(1109, "33", "Okayama"),
+(1109, "47", "Okinawa"),
+(1109, "27", "Osaka"),
+(1109, "41", "Saga"),
+(1109, "11", "Saitama"),
+(1109, "25", "Shiga"),
+(1109, "32", "Shimane"),
+(1109, "22", "Shizuoka"),
+(1109, "09", "Tochigi"),
+(1109, "36", "Tokushima"),
+(1109, "13", "Tokyo"),
+(1109, "31", "Tottori"),
+(1109, "16", "Toyama"),
+(1109, "30", "Wakayama"),
+(1109, "06", "Yamagata"),
+(1109, "35", "Yamaguchi"),
+(1109, "19", "Yamanashi"),
+(1108, "CN", "Clarendon"),
+(1108, "HR", "Hanover"),
+(1108, "KN", "Kingston"),
+(1108, "PD", "Portland"),
+(1108, "AW", "Saint Andrew"),
+(1108, "AN", "Saint Ann"),
+(1108, "CE", "Saint Catherine"),
+(1108, "EH", "Saint Elizabeth"),
+(1108, "JS", "Saint James"),
+(1108, "MY", "Saint Mary"),
+(1108, "TS", "Saint Thomas"),
+(1108, "TY", "Trelawny"),
+(1108, "WD", "Westmoreland"),
+(1110, "AJ", "Ajln"),
+(1110, "AQ", "Al \'Aqaba"),
+(1110, "BA", "Al Balqa\'"),
+(1110, "KA", "Al Karak"),
+(1110, "MA", "Al Mafraq"),
+(1110, "AM", "Amman"),
+(1110, "AT", "At Tafilah"),
+(1110, "AZ", "Az Zarga"),
+(1110, "JR", "Irbid"),
+(1110, "JA", "Jarash"),
+(1110, "MN", "Ma\'an"),
+(1110, "MD", "Madaba"),
+(1112, "01", "Baringo"),
+(1112, "02", "Bomet"),
+(1112, "03", "Bungoma"),
+(1112, "04", "Busia"),
+(1112, "05", "Elgeyo/Marakwet"),
+(1112, "06", "Embu"),
+(1112, "07", "Garissa"),
+(1112, "08", "Homa Bay"),
+(1112, "09", "Isiolo"),
+(1112, "10", "Kajiado"),
+(1112, "11", "Kakamega"),
+(1112, "12", "Kericho"),
+(1112, "13", "Kiambu"),
+(1112, "14", "Kilifi"),
+(1112, "15", "Kirinyaga"),
+(1112, "16", "Kisii"),
+(1112, "17", "Kisumu"),
+(1112, "18", "Kitui"),
+(1112, "19", "Kwale"),
+(1112, "20", "Laikipia"),
+(1112, "21", "Lamu"),
+(1112, "22", "Machakos"),
+(1112, "23", "Makueni"),
+(1112, "24", "Mandera"),
+(1112, "25", "Marsabit"),
+(1112, "26", "Meru"),
+(1112, "27", "Migori"),
+(1112, "28", "Mombasa"),
+(1112, "29", "Murang'a"),
+(1112, "30", "Nairobi City"),
+(1112, "31", "Nakuru"),
+(1112, "32", "Nandi"),
+(1112, "33", "Narok"),
+(1112, "34", "Nyamira"),
+(1112, "35", "Nyandarua"),
+(1112, "36", "Nyeri"),
+(1112, "37", "Samburu"),
+(1112, "38", "Siaya"),
+(1112, "39", "Taita/Taveta"),
+(1112, "40", "Tana River"),
+(1112, "41", "Tharaka-Nithi"),
+(1112, "42", "Trans Nzoia"),
+(1112, "43", "Turkana"),
+(1112, "44", "Uasin Gishu"),
+(1112, "45", "Vihiga"),
+(1112, "46", "Wajir"),
+(1112, "47", "West Pokot"),
+(1117, "GB", "Bishkek"),
+(1117, "B", "Batken"),
+(1117, "C", "Chu"),
+(1117, "J", "Jalal-Abad"),
+(1117, "N", "Naryn"),
+(1117, "O", "Osh"),
+(1117, "T", "Talas"),
+(1117, "Y", "Ysyk-Kol"),
+(1037, "23", "Krong Kaeb"),
+(1037, "24", "Krong Pailin"),
+(1037, "18", "Xrong Preah Sihanouk"),
+(1037, "12", "Phnom Penh"),
+(1037, "2", "Baat Dambang"),
+(1037, "1", "Banteay Mean Chey"),
+(1037, "3", "Rampong Chaam"),
+(1037, "4", "Kampong Chhnang"),
+(1037, "5", "Kampong Spueu"),
+(1037, "6", "Kampong Thum"),
+(1037, "7", "Kampot"),
+(1037, "8", "Kandaal"),
+(1037, "9", "Kach Kong"),
+(1037, "10", "Krachoh"),
+(1037, "11", "Mondol Kiri"),
+(1037, "22", "Otdar Mean Chey"),
+(1037, "15", "Pousaat"),
+(1037, "13", "Preah Vihear"),
+(1037, "14", "Prey Veaeng"),
+(1037, "16", "Rotanak Kiri"),
+(1037, "17", "Siem Reab"),
+(1037, "19", "Stueng Traeng"),
+(1037, "20", "Svaay Rieng"),
+(1037, "21", "Taakaev"),
+(1113, "G", "Gilbert Islands"),
+(1113, "L", "Line Islands"),
+(1113, "P", "Phoenix Islands"),
+(1049, "A", "Anjouan Ndzouani"),
+(1049, "G", "Grande Comore Ngazidja"),
+(1049, "M", "Moheli Moili"),
+(1114, "KAE", "Kaesong-si"),
+(1114, "NAM", "Nampo-si"),
+(1114, "PYO", "Pyongyang-ai"),
+(1114, "CHA", "Chagang-do"),
+(1114, "HAB", "Hamgyongbuk-do"),
+(1114, "HAN", "Hamgyongnam-do"),
+(1114, "HWB", "Hwanghaebuk-do"),
+(1114, "HWN", "Hwanghaenam-do"),
+(1114, "KAN", "Kangwon-do"),
+(1114, "PYB", "Pyonganbuk-do"),
+(1114, "PYN", "Pyongannam-do"),
+(1114, "YAN", "Yanggang-do"),
+(1114, "NAJ", "Najin Sonbong-si"),
+(1115, "11", "Seoul Teugbyeolsi"),
+(1115, "26", "Busan Gwang\'yeogsi"),
+(1115, "27", "Daegu Gwang\'yeogsi"),
+(1115, "30", "Daejeon Gwang\'yeogsi"),
+(1115, "29", "Gwangju Gwang\'yeogsi"),
+(1115, "28", "Incheon Gwang\'yeogsi"),
+(1115, "31", "Ulsan Gwang\'yeogsi"),
+(1115, "43", "Chungcheongbugdo"),
+(1115, "44", "Chungcheongnamdo"),
+(1115, "42", "Gang\'weondo"),
+(1115, "41", "Gyeonggido"),
+(1115, "47", "Gyeongsangbugdo"),
+(1115, "48", "Gyeongsangnamdo"),
+(1115, "49", "Jejudo"),
+(1115, "45", "Jeonrabugdo"),
+(1115, "46", "Jeonranamdo"),
+(1115, "50", "Sejong"),
+(1116, "AH", "Al Ahmadi"),
+(1116, "FA", "Al Farwanlyah"),
+(1116, "JA", "Al Jahrah"),
+(1116, "KU", "Al Kuwayt"),
+(1116, "HA", "Hawalli"),
+(1111, "ALA", "Almaty"),
+(1111, "AST", "Astana"),
+(1111, "ALM", "Almaty oblysy"),
+(1111, "AKM", "Aqmola oblysy"),
+(1111, "AKT", "Aqtobe oblysy"),
+(1111, "ATY", "Atyrau oblyfiy"),
+(1111, "ZAP", "Batys Quzaqstan oblysy"),
+(1111, "MAN", "Mangghystau oblysy"),
+(1111, "YUZ", "Ongtustik Quzaqstan oblysy"),
+(1111, "PAV", "Pavlodar oblysy"),
+(1111, "KAR", "Qaraghandy oblysy"),
+(1111, "KUS", "Qostanay oblysy"),
+(1111, "KZY", "Qyzylorda oblysy"),
+(1111, "VOS", "Shyghys Quzaqstan oblysy"),
+(1111, "SEV", "Soltustik Quzaqstan oblysy"),
+(1111, "ZHA", "Zhambyl oblysy Zhambylskaya oblast\'"),
+(1118, "VT", "Vientiane"),
+(1118, "AT", "Attapu"),
+(1118, "BK", "Bokeo"),
+(1118, "BL", "Bolikhamxai"),
+(1118, "CH", "Champasak"),
+(1118, "HO", "Houaphan"),
+(1118, "KH", "Khammouan"),
+(1118, "LM", "Louang Namtha"),
+(1118, "LP", "Louangphabang"),
+(1118, "OU", "Oudomxai"),
+(1118, "PH", "Phongsali"),
+(1118, "SL", "Salavan"),
+(1118, "SV", "Savannakhet"),
+(1118, "XA", "Xaignabouli"),
+(1118, "XN", "Xiasomboun"),
+(1118, "XE", "Xekong"),
+(1118, "XI", "Xiangkhoang"),
+(1120, "BA", "Beirut"),
+(1120, "BI", "Beqaa"),
+(1120, "JL", "Mount Lebanon"),
+(1120, "AS", "North Lebanon"),
+(1120, "JA", "South Lebanon"),
+(1120, "NA", "Nabatieh"),
+(1199, "52", "Ampara"),
+(1199, "71", "Anuradhapura"),
+(1199, "81", "Badulla"),
+(1199, "51", "Batticaloa"),
+(1199, "11", "Colombo"),
+(1199, "31", "Galle"),
+(1199, "12", "Gampaha"),
+(1199, "33", "Hambantota"),
+(1199, "41", "Jaffna"),
+(1199, "13", "Kalutara"),
+(1199, "21", "Kandy"),
+(1199, "92", "Kegalla"),
+(1199, "42", "Kilinochchi"),
+(1199, "61", "Kurunegala"),
+(1199, "43", "Mannar"),
+(1199, "22", "Matale"),
+(1199, "32", "Matara"),
+(1199, "82", "Monaragala"),
+(1199, "45", "Mullaittivu"),
+(1199, "23", "Nuwara Eliya"),
+(1199, "72", "Polonnaruwa"),
+(1199, "62", "Puttalum"),
+(1199, "91", "Ratnapura"),
+(1199, "53", "Trincomalee"),
+(1199, "44", "VavunLya"),
+(1122, "BM", "Bomi"),
+(1122, "BG", "Bong"),
+(1122, "GB", "Grand Basaa"),
+(1122, "CM", "Grand Cape Mount"),
+(1122, "GG", "Grand Gedeh"),
+(1122, "GK", "Grand Kru"),
+(1122, "LO", "Lofa"),
+(1122, "MG", "Margibi"),
+(1122, "MY", "Maryland"),
+(1122, "MO", "Montserrado"),
+(1122, "NI", "Nimba"),
+(1122, "RI", "Rivercess"),
+(1122, "SI", "Sinoe"),
+(1121, "D", "Berea"),
+(1121, "B", "Butha-Buthe"),
+(1121, "C", "Leribe"),
+(1121, "E", "Mafeteng"),
+(1121, "A", "Maseru"),
+(1121, "F", "Mohale\'s Hoek"),
+(1121, "J", "Mokhotlong"),
+(1121, "H", "Qacha\'s Nek"),
+(1121, "G", "Quthing"),
+(1121, "K", "Thaba-Tseka"),
+(1125, "AL", "Alytaus Apskritis"),
+(1125, "KU", "Kauno Apskritis"),
+(1125, "KL", "KlaipÄ—dos Apskritis"),
+(1125, "MR", "MarijampolÄ—s Apskritis"),
+(1125, "PN", "Panevėžio Apskritis"),
+(1125, "SA", "Šiaulių Apskritis"),
+(1125, "TA", "TauragÄ—s Apskritis"),
+(1125, "TE", "Telšių Apskritis"),
+(1125, "UT", "Utenos Apskritis"),
+(1125, "VL", "Vilniaus Apskritis"),
+(1126, "LU", "Luxembourg"),
+(1126, "DI", "Diekirch"),
+(1126, "GR", "Grevenmacher"),
+(1126, 'CA', 'Capellen'),
+(1126, 'CL', 'Clervaux'),
+(1126, 'EC', 'Echternach'),
+(1126, 'ES', 'Esch-sur-Alzette'),
+(1126, 'ME', 'Mersch'),
+(1126, 'RD', 'Redange-sur-Attert'),
+(1126, 'RM', 'Remich'),
+(1126, 'VD', 'Vianden'),
+(1126, 'WI', 'Wiltz'),
+(1119, "DGV", "Daugavpils"),
+(1119, "JEL", "Jelgava"),
+(1119, "JUR", "JÅ«rmala"),
+(1119, "LPX", "Liepāja"),
+(1119, "REZ", "RÄ“zekne"),
+(1119, "RIX", "RÄ«ga"),
+(1119, "VEN", "Ventspils"),
+(1119, "002", "Aizkraukles novads"),
+(1119, "038", "Jaunjelgavas novads"),
+(1119, "072", "Pļaviņu novads"),
+(1119, "046", "Kokneses novads"),
+(1119, "065", "Neretas novads"),
+(1119, "092", "Skrīveru novads"),
+(1119, "007", "Alūksnes novads"),
+(1119, "009", "Apes novads"),
+(1119, "015", "Balvu novads"),
+(1119, "108", "Viļakas novads"),
+(1119, "014", "Baltinavas novads"),
+(1119, "082", "Rugāju novads"),
+(1119, "016", "Bauskas novads"),
+(1119, "034", "Iecavas novads"),
+(1119, "083", "Rundāles novads"),
+(1119, "105", "Vecumnieku novads"),
+(1119, "022", "CÄ“su novads"),
+(1119, "055", "LÄ«gatnes novads"),
+(1119, "008", "Amatas novads"),
+(1119, "039", "Jaunpiebalgas novads"),
+(1119, "075", "Priekuļu novads"),
+(1119, "070", "Pārgaujas novads"),
+(1119, "076", "Raunas novads"),
+(1119, "104", "Vecpiebalgas novads"),
+(1119, "025", "Daugavpils novads"),
+(1119, "036", "Ilūkstes novads"),
+(1119, "026", "Dobeles novads"),
+(1119, "010", "Auces novads"),
+(1119, "098", "TÄ“rvetes novads"),
+(1119, "033", "Gulbenes novads"),
+(1119, "041", "Jelgavas novads"),
+(1119, "069", "Ozolnieku novads"),
+(1119, "042", "JÄ“kabpils novads"),
+(1119, "004", "Aknīstes novads"),
+(1119, "107", "Viesītes novads"),
+(1119, "049", "Krustpils novads"),
+(1119, "085", "Salas novads"),
+(1119, "047", "Krāslavas novads"),
+(1119, "024", "Dagdas novads"),
+(1119, "001", "Aglonas novads"),
+(1119, "050", "Kuldīgas novads"),
+(1119, "093", "Skrundas novads"),
+(1119, "006", "Alsungas novads"),
+(1119, "003", "Aizputes novads"),
+(1119, "028", "Durbes novads"),
+(1119, "032", "Grobiņas novads"),
+(1119, "071", "Pāvilostas novads"),
+(1119, "074", "Priekules novads"),
+(1119, "066", "NÄ«cas novads"),
+(1119, "081", "Rucavas novads"),
+(1119, "100", "Vaiņodes novads"),
+(1119, "054", "Limbažu novads"),
+(1119, "005", "Alojas novads"),
+(1119, "086", "Salacgrīvas novads"),
+(1119, "058", "Ludzas novads"),
+(1119, "044", "Kārsavas novads"),
+(1119, "110", "Zilupes novads"),
+(1119, "023", "Ciblas novads"),
+(1119, "059", "Madonas novads"),
+(1119, "021", "Cesvaines novads"),
+(1119, "057", "Lubānas novads"),
+(1119, "102", "Varakļānu novads"),
+(1119, "030", "Ērgļu novads"),
+(1119, "067", "Ogres novads"),
+(1119, "035", "Ikšķiles novads"),
+(1119, "051", "Ķeguma novads"),
+(1119, "053", "Lielvārdes novads"),
+(1119, "073", "Preiļu novads"),
+(1119, "056", "Līvānu novads"),
+(1119, "078", "Riebiņu novads"),
+(1119, "103", "Vārkavas novads"),
+(1119, "077", "RÄ“zeknes novads"),
+(1119, "109", "Viļānu novads"),
+(1119, "013", "Baldones novads"),
+(1119, "052", "Ķekavas novads"),
+(1119, "068", "Olaines novads"),
+(1119, "087", "Salaspils novads"),
+(1119, "089", "Saulkrastu novads"),
+(1119, "091", "Siguldas novads"),
+(1119, "037", "Inčukalna novads"),
+(1119, "011", "Ādažu novads"),
+(1119, "012", "Babītes novads"),
+(1119, "020", "Carnikavas novads"),
+(1119, "031", "Garkalnes novads"),
+(1119, "048", "Krimuldas novads"),
+(1119, "061", "Mālpils novads"),
+(1119, "062", "Mārupes novads"),
+(1119, "080", "Ropažu novads"),
+(1119, "090", "SÄ“jas novads"),
+(1119, "095", "Stopiņu novads"),
+(1119, "088", "Saldus novads"),
+(1119, "018", "Brocēnu novads"),
+(1119, "097", "Talsu novads"),
+(1119, "027", "Dundagas novads"),
+(1119, "063", "MÄ“rsraga novads"),
+(1119, "079", "Rojas novads"),
+(1119, "099", "Tukuma novads"),
+(1119, "043", "Kandavas novads"),
+(1119, "029", "Engures novads"),
+(1119, "040", "Jaunpils novads"),
+(1119, "101", "Valkas novads"),
+(1119, "094", "Smiltenes novads"),
+(1119, "096", "Strenču novads"),
+(1119, "045", "Kocēnu novads"),
+(1119, "060", "Mazsalacas novads"),
+(1119, "084", "RÅ«jienas novads"),
+(1119, "017", "Beverīnas novads"),
+(1119, "019", "Burtnieku novads"),
+(1119, "064", "Naukšēnu novads"),
+(1119, "106", "Ventspils novads"),
+(1119, "JKB", "JÄ“kabpils"),
+(1119, "VMR", "Valmiera"),
+(1123, "AJ", "Ajdābiyā"),
+(1123, "BU", "Al Buţnān"),
+(1123, "HZ", "Al Hizām al Akhdar"),
+(1123, "JA", "Al Jabal al Akhdar"),
+(1123, "JI", "Al Jifārah"),
+(1123, "JU", "Al Jufrah"),
+(1123, "KF", "Al Kufrah"),
+(1123, "MJ", "Al Marj"),
+(1123, "MB", "Al Marqab"),
+(1123, "QT", "Al Qaţrūn"),
+(1123, "QB", "Al Qubbah"),
+(1123, "WA", "Al Wāhah"),
+(1123, "NQ", "An Nuqaţ al Khams"),
+(1123, "SH", "Ash Shāţi\'"),
+(1123, "ZA", "Az Zāwiyah"),
+(1123, "BA", "Banghāzī"),
+(1123, "BW", "Banī Walīd"),
+(1123, "DR", "Darnah"),
+(1123, "GD", "Ghadāmis"),
+(1123, "GR", "Gharyān"),
+(1123, "GT", "Ghāt"),
+(1123, "JB", "Jaghbūb"),
+(1123, "MI", "Mişrātah"),
+(1123, "MZ", "Mizdah"),
+(1123, "MQ", "Murzuq"),
+(1123, "NL", "Nālūt"),
+(1123, "SB", "Sabhā"),
+(1123, "SS", "Şabrātah Şurmān"),
+(1123, "SR", "Surt"),
+(1123, "TN", "Tājūrā\' wa an Nawāhī al Arbāh"),
+(1123, "TB", "Ţarābulus"),
+(1123, "TM", "Tarhūnah-Masallātah"),
+(1123, "WD", "Wādī al hayāt"),
+(1123, "YJ", "Yafran-Jādū"),
+(1146, "AGD", "Agadir"),
+(1146, "BAH", "Aït Baha"),
+(1146, "MEL", "Aït Melloul"),
+(1146, "HAO", "Al Haouz"),
+(1146, "HOC", "Al Hoceïma"),
+(1146, "ASZ", "Assa-Zag"),
+(1146, "AZI", "Azilal"),
+(1146, "BEM", "Beni Mellal"),
+(1146, "BES", "Ben Sllmane"),
+(1146, "BER", "Berkane"),
+(1146, "BOD", "Boujdour"),
+(1146, "BOM", "Boulemane"),
+(1146, "CAS", "Casablanca  [Dar el Beïda]"),
+(1146, "CHE", "Chefchaouene"),
+(1146, "CHI", "Chichaoua"),
+(1146, "HAJ", "El Hajeb"),
+(1146, "JDI", "El Jadida"),
+(1146, "ERR", "Errachidia"),
+(1146, "ESI", "Essaouira"),
+(1146, "ESM", "Es Smara"),
+(1146, "FES", "Fès"),
+(1146, "FIG", "Figuig"),
+(1146, "GUE", "Guelmim"),
+(1146, "IFR", "Ifrane"),
+(1146, "JRA", "Jerada"),
+(1146, "KES", "Kelaat Sraghna"),
+(1146, "KEN", "Kénitra"),
+(1146, "KHE", "Khemisaet"),
+(1146, "KHN", "Khenifra"),
+(1146, "KHO", "Khouribga"),
+(1146, "LAA", "Laâyoune (EH)"),
+(1146, "LAP", "Larache"),
+(1146, "MAR", "Marrakech"),
+(1146, "MEK", "Meknsès"),
+(1146, "NAD", "Nador"),
+(1146, "OUA", "Ouarzazate"),
+(1146, "OUD", "Oued ed Dahab (EH)"),
+(1146, "OUJ", "Oujda"),
+(1146, "RBA", "Rabat-Salé"),
+(1146, "SAF", "Safi"),
+(1146, "SEF", "Sefrou"),
+(1146, "SET", "Settat"),
+(1146, "SIK", "Sidl Kacem"),
+(1146, "TNG", "Tanger"),
+(1146, "TNT", "Tan-Tan"),
+(1146, "TAO", "Taounate"),
+(1146, "TAR", "Taroudannt"),
+(1146, "TAT", "Tata"),
+(1146, "TAZ", "Taza"),
+(1146, "TET", "Tétouan"),
+(1146, "TIZ", "Tiznit"),
+(1142, "GA", "Gagauzia, Unitate Teritoriala Autonoma"),
+(1142, "CU", "Chisinau"),
+(1142, "SN", "Stinga Nistrului, unitatea teritoriala din"),
+(1142, "BA", "Balti"),
+(1142, "CA", "Cahul"),
+(1142, "ED", "Edinet"),
+(1142, "LA", "Lapusna"),
+(1142, "OR", "Orhei"),
+(1142, "SO", "Soroca"),
+(1142, "TA", "Taraclia"),
+(1142, "TI", "Tighina [Bender]"),
+(1142, "UN", "Ungheni"),
+(1129, "T", "Antananarivo"),
+(1129, "D", "Antsiranana"),
+(1129, "F", "Fianarantsoa"),
+(1129, "M", "Mahajanga"),
+(1129, "A", "Toamasina"),
+(1129, "U", "Toliara"),
+(1135, "ALL", "Ailinglapalap"),
+(1135, "ALK", "Ailuk"),
+(1135, "ARN", "Arno"),
+(1135, "AUR", "Aur"),
+(1135, "EBO", "Ebon"),
+(1135, "ENI", "Eniwetok"),
+(1135, "JAL", "Jaluit"),
+(1135, "KIL", "Kili"),
+(1135, "KWA", "Kwajalein"),
+(1135, "LAE", "Lae"),
+(1135, "LIB", "Lib"),
+(1135, "LIK", "Likiep"),
+(1135, "MAJ", "Majuro"),
+(1135, "MAL", "Maloelap"),
+(1135, "MEJ", "Mejit"),
+(1135, "MIL", "Mili"),
+(1135, "NMK", "Namorik"),
+(1135, "NMU", "Namu"),
+(1135, "RON", "Rongelap"),
+(1135, "UJA", "Ujae"),
+(1135, "UJL", "Ujelang"),
+(1135, "UTI", "Utirik"),
+(1135, "WTN", "Wotho"),
+(1135, "WTJ", "Wotje"),
+(1133, "BK0", "Bamako"),
+(1133, "7", "Gao"),
+(1133, "1", "Kayes"),
+(1133, "8", "Kidal"),
+(1133, "2", "Xoulikoro"),
+(1133, "5", "Mopti"),
+(1133, "4", "S69ou"),
+(1133, "3", "Sikasso"),
+(1133, "6", "Tombouctou"),
+(1035, "07", "Ayeyarwady"),
+(1035, "02", "Bago"),
+(1035, "03", "Magway"),
+(1035, "04", "Mandalay"),
+(1035, "01", "Sagaing"),
+(1035, "05", "Tanintharyi"),
+(1035, "06", "Yangon"),
+(1035, "14", "Chin"),
+(1035, "11", "Kachin"),
+(1035, "12", "Kayah"),
+(1035, "13", "Kayin"),
+(1035, "15", "Mon"),
+(1035, "16", "Rakhine"),
+(1035, "17", "Shan"),
+(1144, "1", "Ulaanbaatar"),
+(1144, "073", "Arhangay"),
+(1144, "069", "Bayanhongor"),
+(1144, "071", "Bayan-Olgiy"),
+(1144, "067", "Bulgan"),
+(1144, "037", "Darhan uul"),
+(1144, "061", "Dornod"),
+(1144, "063", "Dornogov,"),
+(1144, "059", "DundgovL"),
+(1144, "057", "Dzavhan"),
+(1144, "065", "Govi-Altay"),
+(1144, "064", "Govi-Smber"),
+(1144, "039", "Hentiy"),
+(1144, "043", "Hovd"),
+(1144, "041", "Hovsgol"),
+(1144, "053", "Omnogovi"),
+(1144, "035", "Orhon"),
+(1144, "055", "Ovorhangay"),
+(1144, "049", "Selenge"),
+(1144, "051", "Shbaatar"),
+(1144, "047", "Tov"),
+(1144, "046", "Uvs"),
+(1137, "NKC", "Nouakchott"),
+(1137, "03", "Assaba"),
+(1137, "05", "Brakna"),
+(1137, "08", "Dakhlet Nouadhibou"),
+(1137, "04", "Gorgol"),
+(1137, "10", "Guidimaka"),
+(1137, "01", "Hodh ech Chargui"),
+(1137, "02", "Hodh el Charbi"),
+(1137, "12", "Inchiri"),
+(1137, "09", "Tagant"),
+(1137, "11", "Tiris Zemmour"),
+(1137, "06", "Trarza"),
+(1138, "BR", "Beau Bassin-Rose Hill"),
+(1138, "CU", "Curepipe"),
+(1138, "PU", "Port Louis"),
+(1138, "QB", "Quatre Bornes"),
+(1138, "VP", "Vacosa-Phoenix"),
+(1138, "BL", "Black River"),
+(1138, "FL", "Flacq"),
+(1138, "GP", "Grand Port"),
+(1138, "MO", "Moka"),
+(1138, "PA", "Pamplemousses"),
+(1138, "PW", "Plaines Wilhems"),
+(1138, "RP", "Riviere du Rempart"),
+(1138, "SA", "Savanne"),
+(1138, "AG", "Agalega Islands"),
+(1138, "CC", "Cargados Carajos Shoals"),
+(1138, "RO", "Rodrigues Island"),
+(1132, "MLE", "Male"),
+(1132, "02", "Alif"),
+(1132, "20", "Baa"),
+(1132, "17", "Dhaalu"),
+(1132, "14", "Faafu"),
+(1132, "27", "Gaaf Alif"),
+(1132, "28", "Gaefu Dhaalu"),
+(1132, "29", "Gnaviyani"),
+(1132, "07", "Haa Alif"),
+(1132, "23", "Haa Dhaalu"),
+(1132, "26", "Kaafu"),
+(1132, "05", "Laamu"),
+(1132, "03", "Lhaviyani"),
+(1132, "12", "Meemu"),
+(1132, "25", "Noonu"),
+(1132, "13", "Raa"),
+(1132, "01", "Seenu"),
+(1132, "24", "Shaviyani"),
+(1132, "08", "Thaa"),
+(1132, "04", "Vaavu"),
+(1130, "BA", "Balaka"),
+(1130, "BL", "Blantyre"),
+(1130, "CK", "Chikwawa"),
+(1130, "CR", "Chiradzulu"),
+(1130, "CT", "Chitipa"),
+(1130, "DE", "Dedza"),
+(1130, "DO", "Dowa"),
+(1130, "KR", "Karonga"),
+(1130, "KS", "Kasungu"),
+(1130, "LK", "Likoma Island"),
+(1130, "LI", "Lilongwe"),
+(1130, "MH", "Machinga"),
+(1130, "MG", "Mangochi"),
+(1130, "MC", "Mchinji"),
+(1130, "MU", "Mulanje"),
+(1130, "MW", "Mwanza"),
+(1130, "MZ", "Mzimba"),
+(1130, "NB", "Nkhata Bay"),
+(1130, "NK", "Nkhotakota"),
+(1130, "NS", "Nsanje"),
+(1130, "NU", "Ntcheu"),
+(1130, "NI", "Ntchisi"),
+(1130, "PH", "Phalomba"),
+(1130, "RU", "Rumphi"),
+(1130, "SA", "Salima"),
+(1130, "TH", "Thyolo"),
+(1130, "ZO", "Zomba"),
+(1140, "AGU", "Aguascalientes"),
+(1140, "BCN", "Baja California"),
+(1140, "BCS", "Baja California Sur"),
+(1140, "CAM", "Campeche"),
+(1140, "COA", "Coahuila"),
+(1140, "COL", "Colima"),
+(1140, "CHP", "Chiapas"),
+(1140, "CHH", "Chihuahua"),
+(1140, "DUR", "Durango"),
+(1140, "GUA", "Guanajuato"),
+(1140, "GRO", "Guerrero"),
+(1140, "HID", "Hidalgo"),
+(1140, "JAL", "Jalisco"),
+(1140, "MEX", "Mexico"),
+(1140, "MIC", "Michoacin"),
+(1140, "MOR", "Morelos"),
+(1140, "NAY", "Nayarit"),
+(1140, "NLE", "Nuevo Leon"),
+(1140, "OAX", "Oaxaca"),
+(1140, "PUE", "Puebla"),
+(1140, "QUE", "Queretaro"),
+(1140, "ROO", "Quintana Roo"),
+(1140, "SLP", "San Luis Potosi"),
+(1140, "SIN", "Sinaloa"),
+(1140, "SON", "Sonora"),
+(1140, "TAB", "Tabasco"),
+(1140, "TAM", "Tamaulipas"),
+(1140, "TLA", "Tlaxcala"),
+(1140, "VER", "Veracruz"),
+(1140, "YUC", "Yucatan"),
+(1140, "ZAC", "Zacatecas"),
+(1140, "DIF", "Distrito Federal"),
+(1131, "14", "Wilayah Persekutuan Kuala Lumpur"),
+(1131, "15", "Wilayah Persekutuan Labuan"),
+(1131, "16", "Wilayah Persekutuan Putrajaya"),
+(1131, "01", "Johor"),
+(1131, "02", "Kedah"),
+(1131, "03", "Kelantan"),
+(1131, "04", "Melaka"),
+(1131, "05", "Negeri Sembilan"),
+(1131, "06", "Pahang"),
+(1131, "08", "Perak"),
+(1131, "09", "Perlis"),
+(1131, "07", "Pulau Pinang"),
+(1131, "12", "Sabah"),
+(1131, "13", "Sarawak"),
+(1131, "10", "Selangor"),
+(1131, "11", "Terengganu"),
+(1147, "MPM", "Maputo"),
+(1147, "P", "Cabo Delgado"),
+(1147, "G", "Gaza"),
+(1147, "I", "Inhambane"),
+(1147, "B", "Manica"),
+(1147, "N", "Numpula"),
+(1147, "A", "Niaaea"),
+(1147, "S", "Sofala"),
+(1147, "T", "Tete"),
+(1147, "Q", "Zambezia"),
+(1148, "CA", "Caprivi"),
+(1148, "ER", "Erongo"),
+(1148, "HA", "Hardap"),
+(1148, "KA", "Karas"),
+(1148, "KH", "Khomas"),
+(1148, "KU", "Kunene"),
+(1148, "OW", "Ohangwena"),
+(1148, "OK", "Okavango"),
+(1148, "OH", "Omaheke"),
+(1148, "OS", "Omusati"),
+(1148, "ON", "Oshana"),
+(1148, "OT", "Oshikoto"),
+(1148, "OD", "Otjozondjupa"),
+(1156, "8", "Niamey"),
+(1156, "1", "Agadez"),
+(1156, "2", "Diffa"),
+(1156, "3", "Dosso"),
+(1156, "4", "Maradi"),
+(1156, "S", "Tahoua"),
+(1156, "6", "Tillaberi"),
+(1156, "7", "Zinder"),
+(1157, "FC", "Abuja Federal Capital Territory"),
+(1157, "AB", "Abia"),
+(1157, "AD", "Adamawa"),
+(1157, "AK", "Akwa Ibom"),
+(1157, "AN", "Anambra"),
+(1157, "BA", "Bauchi"),
+(1157, "BY", "Bayelsa"),
+(1157, "BE", "Benue"),
+(1157, "BO", "Borno"),
+(1157, "CR", "Cross River"),
+(1157, "DE", "Delta"),
+(1157, "EB", "Ebonyi"),
+(1157, "ED", "Edo"),
+(1157, "EK", "Ekiti"),
+(1157, "EN", "Enugu"),
+(1157, "GO", "Gombe"),
+(1157, "IM", "Imo"),
+(1157, "JI", "Jigawa"),
+(1157, "KD", "Kaduna"),
+(1157, "KN", "Kano"),
+(1157, "KT", "Katsina"),
+(1157, "KE", "Kebbi"),
+(1157, "KO", "Kogi"),
+(1157, "KW", "Kwara"),
+(1157, "LA", "Lagos"),
+(1157, "NA", "Nassarawa"),
+(1157, "NI", "Niger"),
+(1157, "OG", "Ogun"),
+(1157, "ON", "Ondo"),
+(1157, "OS", "Osun"),
+(1157, "OY", "Oyo"),
+(1157, "RI", "Rivers"),
+(1157, "SO", "Sokoto"),
+(1157, "TA", "Taraba"),
+(1157, "YO", "Yobe"),
+(1157, "ZA", "Zamfara"),
+(1157, "PL", "Plateau"),
+(1155, "BO", "Boaco"),
+(1155, "CA", "Carazo"),
+(1155, "CI", "Chinandega"),
+(1155, "CO", "Chontales"),
+(1155, "ES", "Esteli"),
+(1155, "JI", "Jinotega"),
+(1155, "LE", "Leon"),
+(1155, "MD", "Madriz"),
+(1155, "MN", "Managua"),
+(1155, "MS", "Masaya"),
+(1155, "MT", "Matagalpa"),
+(1155, "NS", "Nueva Segovia"),
+(1155, "SJ", "Rio San Juan"),
+(1155, "RI", "Rivas"),
+(1155, "AN", "Atlantico Norte"),
+(1155, "AS", "Atlantico Sur"),
+(1152, "DR", "Drente"),
+(1152, "FL", "Flevoland"),
+(1152, "FR", "Friesland"),
+(1152, "GL", "Gelderland"),
+(1152, "GR", "Groningen"),
+(1152, "NB", "Noord-Brabant"),
+(1152, "NH", "Noord-Holland"),
+(1152, "OV", "Overijssel"),
+(1152, "UT", "Utrecht"),
+(1152, "ZH", "Zuid-Holland"),
+(1152, "ZL", "Zeeland"),
+(1161, "02", "Akershus"),
+(1161, "09", "Aust-Agder"),
+(1161, "06", "Buskerud"),
+(1161, "20", "Finnmark"),
+(1161, "04", "Hedmark"),
+(1161, "15", "Møre og Romsdal"),
+(1161, "18", "Nordland"),
+(1161, "17", "Nord-Trøndelag"),
+(1161, "05", "Oppland"),
+(1161, "03", "Oslo"),
+(1161, "11", "Rogaland"),
+(1161, "16", "Sør-Trøndelag"),
+(1161, "06", "Telemark"),
+(1161, "19", "Troms"),
+(1161, "10", "Vest-Agder"),
+(1161, "07", "Vestfold"),
+(1161, "46", "Vestland"),
+(1161, "01", "Østfold"),
+(1161, "22", "Jan Mayen"),
+(1161, "21", "Svalbard"),
+(1154, "AUK", "Auckland"),
+(1154, "BOP", "Bay of Plenty"),
+(1154, "CAN", "Canterbury"),
+(1154, "GIS", "Gisborne"),
+(1154, "HKB", "Hawkes Bay"),
+(1154, "MWT", "Manawatu-Wanganui"),
+(1154, "MBH", "Marlborough"),
+(1154, "NSN", "Nelson"),
+(1154, "NTL", "Northland"),
+(1154, "OTA", "Otago"),
+(1154, "STL", "Southland"),
+(1154, "TKI", "Taranaki"),
+(1154, "TAS", "Tasman"),
+(1154, "WKO", "Waikato"),
+(1154, "WGN", "Wellington"),
+(1154, "WTC", "West Coast"),
+(1162, "DA", "Ad Dakhillyah"),
+(1162, "BA", "Al Batinah"),
+(1162, "JA", "Al Janblyah"),
+(1162, "WU", "Al Wusta"),
+(1162, "SH", "Ash Sharqlyah"),
+(1162, "ZA", "Az Zahirah"),
+(1162, "MA", "Masqat"),
+(1162, "MU", "Musandam"),
 -- Palestinian governorates from http://en.wikipedia.org/wiki/Governorates_of_the_Palestinian_National_Authority (no ISO 3166-2 entries yet, hence temporary codes)
-(5201, 1165, "_A", "Jenin"),
-(5202, 1165, "_B", "Tubas"),
-(5203, 1165, "_C", "Tulkarm"),
-(5204, 1165, "_D", "Nablus"),
-(5205, 1165, "_E", "Qalqilya"),
-(5206, 1165, "_F", "Salfit"),
-(5207, 1165, "_G", "Ramallah and Al-Bireh"),
-(5208, 1165, "_H", "Jericho"),
-(5209, 1165, "_I", "Jerusalem"),
-(5210, 1165, "_J", "Bethlehem"),
-(5211, 1165, "_K", "Hebron"),
-(5212, 1165, "_L", "North Gaza"),
-(5213, 1165, "_M", "Gaza"),
-(5214, 1165, "_N", "Deir el-Balah"),
-(5215, 1165, "_O", "Khan Yunis"),
-(5216, 1165, "_P", "Rafah"),
-
-(5217, 1020, "BRU", "Brussels"),
-
-(5218, 1140, "DIF", "Distrito Federal"),
-(5219, 1208, "TXG", "Taichung City"),
-(5220, 1208, "KHH", "Kaohsiung City"),
-(5221, 1208, "TPE", "Taipei City"),
-(5222, 1208, "CYI", "Chiayi City"),
-(5223, 1208, "HSZ", "Hsinchu City"),
-(5224, 1208, "TNN", "Tainan City"),
-(9000, 1196, "NW", "North West"),
-
-(9986, 1226, "TWR", "Tyne and Wear"),
-(9988, 1226, "GTM", "Greater Manchester"),
-(9989, 1226, "TYR", "Co Tyrone"),
-(9990, 1226, "WYK", "West Yorkshire"),
-(9991, 1226, "SYK", "South Yorkshire"),
-(9992, 1226, "MSY", "Merseyside"),
-(9993, 1226, "BRK", "Berkshire"),
-(9994, 1226, "WMD", "West Midlands"),
-(9998, 1226, "WGM", "West Glamorgan"),
-(9999, 1226, "LON", "London"),
-
-(10000, 1107, "CI", "Carbonia-Iglesias"),
-(10001, 1107, "OT", "Olbia-Tempio"),
-(10002, 1107, "VS", "Medio Campidano"),
-(10003, 1107, "OG", "Ogliastra"),
-
--- department of France (CRM-4769)
-(10009, 1076, "39", "Jura"),
-
--- new Italian provinces (CRM-5048)
-(10010, 1107, "BT", "Barletta-Andria-Trani"),
-(10011, 1107, "FM", "Fermo"),
-(10012, 1107, "MB", "Monza e Brianza"),
-
--- new UK provinces (CRM-5224)
-(10013, 1226, "CWD", "Clwyd"),
-(10015, 1226, "SGM", "South Glamorgan"),
-
--- Haiti (CRM-5628)
-(10016, 1094, "AR", "Artibonite"),
-(10017, 1094, "CE", "Centre"),
-(10018, 1094, "NI", "Nippes"),
-(10019, 1094, "ND", "Nord"),
-
--- CRM-6002 - Argentinian provinces suplemented
-(10020, 1010, "F", "La Rioja"),
-
--- CRM-6063 - Added states for Andorra
-(10021, 1005, "07", "Andorra la Vella"),
-(10022, 1005, "02", "Canillo"),
-(10023, 1005, "03", "Encamp"),
-(10024, 1005, "08", "Escaldes-Engordany"),
-(10025, 1005, "04", "La Massana"),
-(10026, 1005, "05", "Ordino"),
-(10027, 1005, "06", "Sant Julia de Loria"),
-
--- CRM-6198 - Added provinces of Bahamas
-(NULL, 1212, "AB", "Abaco Islands"),
-(NULL, 1212, "AN", "Andros Island"),
-(NULL, 1212, "BR", "Berry Islands"),
-(NULL, 1212, "EL", "Eleuthera"),
-(NULL, 1212, "GB", "Grand Bahama"),
-(NULL, 1212, "RC", "Rum Cay"),
-(NULL, 1212, "SS", "San Salvador Island"),
-
--- Added provinces of The Democratic Republic of the Congo
-
-(NULL, 1050, "01", "Kongo central"),
-(NULL, 1050, "02", "Kwango"),
-(NULL, 1050, "03", "Kwilu"),
-(NULL, 1050, "04", "Mai-Ndombe"),
-(NULL, 1050, "05", "Kasai"),
-(NULL, 1050, "06", "Lulua"),
-(NULL, 1050, "07", "Lomami"),
-(NULL, 1050, "08", "Sankuru"),
-(NULL, 1050, "09", "Ituri"),
-(NULL, 1050, "10", "Haut-Uele"),
-(NULL, 1050, "11", "Tshopo"),
-(NULL, 1050, "12", "Bas-Uele"),
-(NULL, 1050, "13", "Nord-Ubangi"),
-(NULL, 1050, "14", "Mongala"),
-(NULL, 1050, "15", "Sud-Ubangi"),
-(NULL, 1050, "16", "Tshuapa"),
-(NULL, 1050, "17", "Haut-Lomami"),
-(NULL, 1050, "18", "Lualaba"),
-(NULL, 1050, "19", "Haut-Katanga"),
-(NULL, 1050, "20", "Tanganyika"),
-
--- CRM-8009 Added Missing Provinces for Spain
-(NULL, 1198, "TO", "Toledo" ),
-(NULL, 1198, "CO", "Córdoba" ),
-
--- CRM-8769 Added Missing Province for Philippines
-(NULL, 1170, "MNL", "Metropolitan Manila" ),
-
--- CRM-9686 Added Missing Province for Honduras
-(NULL, 1097, "LP", "La Paz"),
-
--- CRM-10473 Added Missing Provinces of Ningxia Autonomous Region of China
-(NULL, 1045, "YN", "Yinchuan"),
-(NULL, 1045, "SZ", "Shizuishan"),
-(NULL, 1045, "WZ", "Wuzhong"),
-(NULL, 1045, "GY", "Guyuan"),
-(NULL, 1045, "ZW", "Zhongwei"),
-
--- CRM-10863 Added Missing Province for Luxembourg
-(NULL, 1126, "LU", "Luxembourg"),
-
--- CRM-11367 Latvian regions
-(NULL, 1119, "002", "Aizkraukles novads"),
-(NULL, 1119, "038", "Jaunjelgavas novads"),
-(NULL, 1119, "072", "Pļaviņu novads"),
-(NULL, 1119, "046", "Kokneses novads"),
-(NULL, 1119, "065", "Neretas novads"),
-(NULL, 1119, "092", "Skrīveru novads"),
-(NULL, 1119, "007", "Alūksnes novads"),
-(NULL, 1119, "009", "Apes novads"),
-(NULL, 1119, "015", "Balvu novads"),
-(NULL, 1119, "108", "Viļakas novads"),
-(NULL, 1119, "014", "Baltinavas novads"),
-(NULL, 1119, "082", "Rugāju novads"),
-(NULL, 1119, "016", "Bauskas novads"),
-(NULL, 1119, "034", "Iecavas novads"),
-(NULL, 1119, "083", "Rundāles novads"),
-(NULL, 1119, "105", "Vecumnieku novads"),
-(NULL, 1119, "022", "CÄ“su novads"),
-(NULL, 1119, "055", "LÄ«gatnes novads"),
-(NULL, 1119, "008", "Amatas novads"),
-(NULL, 1119, "039", "Jaunpiebalgas novads"),
-(NULL, 1119, "075", "Priekuļu novads"),
-(NULL, 1119, "070", "Pārgaujas novads"),
-(NULL, 1119, "076", "Raunas novads"),
-(NULL, 1119, "104", "Vecpiebalgas novads"),
-(NULL, 1119, "025", "Daugavpils novads"),
-(NULL, 1119, "036", "Ilūkstes novads"),
-(NULL, 1119, "026", "Dobeles novads"),
-(NULL, 1119, "010", "Auces novads"),
-(NULL, 1119, "098", "TÄ“rvetes novads"),
-(NULL, 1119, "033", "Gulbenes novads"),
-(NULL, 1119, "041", "Jelgavas novads"),
-(NULL, 1119, "069", "Ozolnieku novads"),
-(NULL, 1119, "042", "JÄ“kabpils novads"),
-(NULL, 1119, "004", "Aknīstes novads"),
-(NULL, 1119, "107", "Viesītes novads"),
-(NULL, 1119, "049", "Krustpils novads"),
-(NULL, 1119, "085", "Salas novads"),
-(NULL, 1119, "047", "Krāslavas novads"),
-(NULL, 1119, "024", "Dagdas novads"),
-(NULL, 1119, "001", "Aglonas novads"),
-(NULL, 1119, "050", "Kuldīgas novads"),
-(NULL, 1119, "093", "Skrundas novads"),
-(NULL, 1119, "006", "Alsungas novads"),
-(NULL, 1119, "003", "Aizputes novads"),
-(NULL, 1119, "028", "Durbes novads"),
-(NULL, 1119, "032", "Grobiņas novads"),
-(NULL, 1119, "071", "Pāvilostas novads"),
-(NULL, 1119, "074", "Priekules novads"),
-(NULL, 1119, "066", "NÄ«cas novads"),
-(NULL, 1119, "081", "Rucavas novads"),
-(NULL, 1119, "100", "Vaiņodes novads"),
-(NULL, 1119, "054", "Limbažu novads"),
-(NULL, 1119, "005", "Alojas novads"),
-(NULL, 1119, "086", "Salacgrīvas novads"),
-(NULL, 1119, "058", "Ludzas novads"),
-(NULL, 1119, "044", "Kārsavas novads"),
-(NULL, 1119, "110", "Zilupes novads"),
-(NULL, 1119, "023", "Ciblas novads"),
-(NULL, 1119, "059", "Madonas novads"),
-(NULL, 1119, "021", "Cesvaines novads"),
-(NULL, 1119, "057", "Lubānas novads"),
-(NULL, 1119, "102", "Varakļānu novads"),
-(NULL, 1119, "030", "Ērgļu novads"),
-(NULL, 1119, "067", "Ogres novads"),
-(NULL, 1119, "035", "Ikšķiles novads"),
-(NULL, 1119, "051", "Ķeguma novads"),
-(NULL, 1119, "053", "Lielvārdes novads"),
-(NULL, 1119, "073", "Preiļu novads"),
-(NULL, 1119, "056", "Līvānu novads"),
-(NULL, 1119, "078", "Riebiņu novads"),
-(NULL, 1119, "103", "Vārkavas novads"),
-(NULL, 1119, "077", "RÄ“zeknes novads"),
-(NULL, 1119, "109", "Viļānu novads"),
-(NULL, 1119, "013", "Baldones novads"),
-(NULL, 1119, "052", "Ķekavas novads"),
-(NULL, 1119, "068", "Olaines novads"),
-(NULL, 1119, "087", "Salaspils novads"),
-(NULL, 1119, "089", "Saulkrastu novads"),
-(NULL, 1119, "091", "Siguldas novads"),
-(NULL, 1119, "037", "Inčukalna novads"),
-(NULL, 1119, "011", "Ādažu novads"),
-(NULL, 1119, "012", "Babītes novads"),
-(NULL, 1119, "020", "Carnikavas novads"),
-(NULL, 1119, "031", "Garkalnes novads"),
-(NULL, 1119, "048", "Krimuldas novads"),
-(NULL, 1119, "061", "Mālpils novads"),
-(NULL, 1119, "062", "Mārupes novads"),
-(NULL, 1119, "080", "Ropažu novads"),
-(NULL, 1119, "090", "SÄ“jas novads"),
-(NULL, 1119, "095", "Stopiņu novads"),
-(NULL, 1119, "088", "Saldus novads"),
-(NULL, 1119, "018", "Brocēnu novads"),
-(NULL, 1119, "097", "Talsu novads"),
-(NULL, 1119, "027", "Dundagas novads"),
-(NULL, 1119, "063", "MÄ“rsraga novads"),
-(NULL, 1119, "079", "Rojas novads"),
-(NULL, 1119, "099", "Tukuma novads"),
-(NULL, 1119, "043", "Kandavas novads"),
-(NULL, 1119, "029", "Engures novads"),
-(NULL, 1119, "040", "Jaunpils novads"),
-(NULL, 1119, "101", "Valkas novads"),
-(NULL, 1119, "094", "Smiltenes novads"),
-(NULL, 1119, "096", "Strenču novads"),
-(NULL, 1119, "045", "Kocēnu novads"),
-(NULL, 1119, "060", "Mazsalacas novads"),
-(NULL, 1119, "084", "RÅ«jienas novads"),
-(NULL, 1119, "017", "Beverīnas novads"),
-(NULL, 1119, "019", "Burtnieku novads"),
-(NULL, 1119, "064", "Naukšēnu novads"),
-(NULL, 1119, "106", "Ventspils novads"),
-(NULL, 1119, "JKB", "JÄ“kabpils"),
-(NULL, 1119, "VMR", "Valmiera"),
-
--- CRM-13314 Added States for Uruguay
-(NULL, 1229, "FL", "Florida"),
-(NULL, 1229, "RN", "Rio Negro"),
-(NULL, 1229, "SJ", "San Jose"),
-
--- Added Nigeria States(CRM-14183)
-(NULL, 1157, "PL", "Plateau"),
-
-
--- CRM-14493 Added State for Greece
-(NULL, 1085, "61", "Pieria"),
-
--- CRM-14843 Added States for Chile and Modify Santiago Metropolitan for consistency
-(NULL, 1044, "LR", "Los Rios"),
-(NULL, 1044, "AP", "Arica y Parinacota"),
-
--- Add missing Peruvian State (Amazonas)
-(NULL, 1169, "AMA", "Amazonas"),
-
--- Add missing Indonesian provinces (Kalimantan Tengah, Sulawesi Barat, Kalimantan Utara) and revised outdated names in code above
-(NULL, 1102, "KT", "Kalimantan Tengah"),
-(NULL, 1102, "SR", "Sulawesi Barat"),
-(NULL, 1102, "KU", "Kalimantan Utara"),
-
--- Add missing Slovenian municipalities
-(NULL, 1193, "86", "Ankaran"),
-(NULL, 1193, "87", "Apače"),
-(NULL, 1193, "88", "Cirkulane"),
-(NULL, 1193, "89", "Gorje"),
-(NULL, 1193, "90", "Kostanjevica na Krki"),
-(NULL, 1193, "91", "Log-Dragomer"),
-(NULL, 1193, "92", "Makole"),
-(NULL, 1193, "93", "Mirna"),
-(NULL, 1193, "94", "Mokronog-Trebelno"),
-(NULL, 1193, "95", "Odranci"),
-(NULL, 1193, "96", "Oplotnica"),
-(NULL, 1193, "97", "Ormož"),
-(NULL, 1193, "98", "Osilnica"),
-(NULL, 1193, "99", "Pesnica"),
-(NULL, 1193, "100", "Piran"),
-(NULL, 1193, "101", "Pivka"),
-(NULL, 1193, "102", "Podčetrtek"),
-(NULL, 1193, "103", "Podlehnik"),
-(NULL, 1193, "104", "Podvelka"),
-(NULL, 1193, "105", "Poljčane"),
-(NULL, 1193, "106", "Polzela"),
-(NULL, 1193, "107", "Postojna"),
-(NULL, 1193, "108", "Prebold"),
-(NULL, 1193, "109", "Preddvor"),
-(NULL, 1193, "110", "Prevalje"),
-(NULL, 1193, "111", "Ptuj"),
-(NULL, 1193, "112", "Puconci"),
-(NULL, 1193, "113", "Rače-Fram"),
-(NULL, 1193, "114", "Radeče"),
-(NULL, 1193, "115", "Radenci"),
-(NULL, 1193, "139", "Radlje ob Dravi"),
-(NULL, 1193, "145", "Radovljica"),
-(NULL, 1193, "171", "Ravne na Koroškem"),
-(NULL, 1193, "172", "Razkrižje"),
-(NULL, 1193, "173", "Rečica ob Savinji"),
-(NULL, 1193, "174", "Renče-Vogrsko"),
-(NULL, 1193, "175", "Ribnica"),
-(NULL, 1193, "176", "Ribnica na Pohorju"),
-(NULL, 1193, "177", "Rogaška Slatina"),
-(NULL, 1193, "178", "Rogašovci"),
-(NULL, 1193, "179", "Rogatec"),
-(NULL, 1193, "180", "Ruše"),
-(NULL, 1193, "195", "Selnica ob Dravi"),
-(NULL, 1193, "196", "Semič"),
-(NULL, 1193, "197", "Å entrupert"),
-(NULL, 1193, "198", "Sevnica"),
-(NULL, 1193, "199", "Sežana"),
-(NULL, 1193, "200", "Slovenj Gradec"),
-(NULL, 1193, "201", "Slovenska Bistrica"),
-(NULL, 1193, "202", "Slovenske Konjice"),
-(NULL, 1193, "203", "Šmarješke Toplice"),
-(NULL, 1193, "204", "Sodražica"),
-(NULL, 1193, "205", "Solčava"),
-(NULL, 1193, "206", "Središče ob Dravi"),
-(NULL, 1193, "207", "Starše"),
-(NULL, 1193, "208", "Straža"),
-(NULL, 1193, "209", "Sveta Trojica v Slovenskih goricah"),
-(NULL, 1193, "210", "Sveti Jurij v Slovenskih goricah"),
-(NULL, 1193, "211", "Sveti Tomaž"),
-(NULL, 1193, "212", "Vodice"),
-
--- CRM-16452 Missing administrative divisions for Georgia
-(NULL, 1081, "AB", "Abkhazia"),
-(NULL, 1081, "AJ", "Adjara"),
-(NULL, 1081, "TB", "Tbilisi"),
-(NULL, 1081, "GU", "Guria"),
-(NULL, 1081, "IM", "Imereti"),
-(NULL, 1081, "KA", "Kakheti"),
-(NULL, 1081, "KK", "Kvemo Kartli"),
-(NULL, 1081, "MM", "Mtskheta-Mtianeti"),
-(NULL, 1081, "RL", "Racha-Lechkhumi and Kvemo Svaneti"),
-(NULL, 1081, "SZ", "Samegrelo-Zemo Svaneti"),
-(NULL, 1081, "SJ", "Samtskhe-Javakheti"),
-(NULL, 1081, "SK", "Shida Kartli"),
-(NULL, 1074, "C", "Central"),
-
--- CRM-17136 Add missing Pakistani Province (Punjab)
-(NULL, 1163, "PB", "Punjab"),
-
--- CRM-17184
-(NULL, 1066, "LI", "La Libertad"),
-(NULL, 1066, "PA", "La Paz"),
-(NULL, 1066, "UN", "La Union"),
-
--- CRM-17660 Add missing Cameroon Provinces
-(NULL, 1038, "LT", "Littoral"),
-(NULL, 1038, "NW", "Nord-Ouest"),
-
--- Add Indian province of Telangana
-(NULL, 1101, "TG", "Telangana"),
-
--- CRM-17800
-(NULL, 1187, "04", "Ash Sharqiyah"),
-
--- CRM-19134 Missing French overseas departments.
-(NULL, 1076, "GP", "Guadeloupe"),
-(NULL, 1076, "MQ", "Martinique"),
-(NULL, 1076, "GF", "Guyane"),
-(NULL, 1076, "RE", "La Réunion"),
-(NULL, 1076, "YT", "Mayotte"),
-
--- CRM-20062 New counties of Kenya.
-(NULL, 1112, "01", "Baringo"),
-(NULL, 1112, "02", "Bomet"),
-(NULL, 1112, "03", "Bungoma"),
-(NULL, 1112, "04", "Busia"),
-(NULL, 1112, "05", "Elgeyo/Marakwet"),
-(NULL, 1112, "06", "Embu"),
-(NULL, 1112, "07", "Garissa"),
-(NULL, 1112, "08", "Homa Bay"),
-(NULL, 1112, "09", "Isiolo"),
-(NULL, 1112, "10", "Kajiado"),
-(NULL, 1112, "11", "Kakamega"),
-(NULL, 1112, "12", "Kericho"),
-(NULL, 1112, "13", "Kiambu"),
-(NULL, 1112, "14", "Kilifi"),
-(NULL, 1112, "15", "Kirinyaga"),
-(NULL, 1112, "16", "Kisii"),
-(NULL, 1112, "17", "Kisumu"),
-(NULL, 1112, "18", "Kitui"),
-(NULL, 1112, "19", "Kwale"),
-(NULL, 1112, "20", "Laikipia"),
-(NULL, 1112, "21", "Lamu"),
-(NULL, 1112, "22", "Machakos"),
-(NULL, 1112, "23", "Makueni"),
-(NULL, 1112, "24", "Mandera"),
-(NULL, 1112, "25", "Marsabit"),
-(NULL, 1112, "26", "Meru"),
-(NULL, 1112, "27", "Migori"),
-(NULL, 1112, "28", "Mombasa"),
-(NULL, 1112, "29", "Murang'a"),
-(NULL, 1112, "30", "Nairobi City"),
-(NULL, 1112, "31", "Nakuru"),
-(NULL, 1112, "32", "Nandi"),
-(NULL, 1112, "33", "Narok"),
-(NULL, 1112, "34", "Nyamira"),
-(NULL, 1112, "35", "Nyandarua"),
-(NULL, 1112, "36", "Nyeri"),
-(NULL, 1112, "37", "Samburu"),
-(NULL, 1112, "38", "Siaya"),
-(NULL, 1112, "39", "Taita/Taveta"),
-(NULL, 1112, "40", "Tana River"),
-(NULL, 1112, "41", "Tharaka-Nithi"),
-(NULL, 1112, "42", "Trans Nzoia"),
-(NULL, 1112, "43", "Turkana"),
-(NULL, 1112, "44", "Uasin Gishu"),
-(NULL, 1112, "45", "Vihiga"),
-(NULL, 1112, "46", "Wajir"),
-(NULL, 1112, "47", "West Pokot"),
-
--- CRM-19993 Fixes for ISO compliance with countries and counties
--- Add states for: India, Ghana, Sierra Leone, Saint Kitts & Nevis
-(NULL, 1101, "CH", "Chandigarh"),
-(NULL, 1083, "CP", "Central"),
-(NULL, 1083, "EP", "Eastern"),
-(NULL, 1083, "NP", "Northern"),
-(NULL, 1083, "WP", "Western"),
-(NULL, 1181, "K", "Saint Kitts"),
-(NULL, 1181, "N", "Nevis"),
-(NULL, 1190, "E", "Eastern"),
-(NULL, 1190, "N", "Northern"),
-(NULL, 1190, "S", "Southern"),
-
--- CRM-21234 Missing subdivisions of Tajikistan.
-(NULL, 1209, "DU", "Dushanbe"),
-(NULL, 1209, "RA", "Nohiyahoi Tobei Jumhurí"),
-
--- CRM-21268 Missing French overseas departments.
-(NULL, 1076, "WF", "Wallis-et-Futuna"),
-(NULL, 1076, "NC", "Nouvelle-Calédonie"),
-
--- CRM-21532 Add French state/departments
-(NULL, 1076, "52", "Haute-Marne"),
-
--- Add states for: Barbados and Antigua and Barbuda
-(NULL, 1009, "03", "Saint George"),
-(NULL, 1009, "04", "Saint John"),
-(NULL, 1009, "05", "Saint Mary"),
-(NULL, 1009, "06", "Saint Paul"),
-(NULL, 1009, "07", "Saint Peter"),
-(NULL, 1009, "08", "Saint Philip"),
-(NULL, 1009, "10", "Barbuda"),
-(NULL, 1009, "11", "Redonda"),
-(NULL, 1018, "01", "Christ Church"),
-(NULL, 1018, "02", "Saint Andrew"),
-(NULL, 1018, "03", "Saint George"),
-(NULL, 1018, "04", "Saint James"),
-(NULL, 1018, "05", "Saint John"),
-(NULL, 1018, "06", "Saint Joseph"),
-(NULL, 1018, "07", "Saint Lucy"),
-(NULL, 1018, "08", "Saint Michael"),
-(NULL, 1018, "09", "Saint Peter"),
-(NULL, 1018, "10", "Saint Philip"),
-(NULL, 1018, "11", "Saint Thomas"),
-
--- CRM-21837 - Missing states for Gabon
-(NULL, 1080, "01", "Estuaire"),
-(NULL, 1080, "02", "Haut-Ogooué"),
-(NULL, 1080, "03", "Moyen-Ogooué"),
-(NULL, 1080, "04", "Ngounié"),
-(NULL, 1080, "05", "Nyanga"),
-(NULL, 1080, "06", "Ogooué-Ivindo"),
-(NULL, 1080, "07", "Ogooué-Lolo"),
-(NULL, 1080, "08", "Ogooué-Maritime"),
-(NULL, 1080, "09", "Woleu-Ntem"),
-
--- dev/Core#131 Missing UK State
-(NULL, 1226, "MON", "Monmouthshire"),
-
--- dev/core#2027 Missing subdivisions for Northern Ireland and Wales
-(NULL, 1226, "ANN", "Antrim and Newtownabbey"),
-(NULL, 1226, "AND", "Ards and North Down"),
-(NULL, 1226, "ABC", "Armagh City, Banbridge and Craigavon"),
-(NULL, 1226, "BFS", "Belfast"),
-(NULL, 1226, "CCG", "Causeway Coast and Glens"),
-(NULL, 1226, "DRS", "Derry City and Strabane"),
-(NULL, 1226, "FMO", "Fermanagh and Omagh"),
-(NULL, 1226, "LBC", "Lisburn and Castlereagh"),
-(NULL, 1226, "MEA", "Mid and East Antrim"),
-(NULL, 1226, "MUL", "Mid Ulster"),
-(NULL, 1226, "NMD", "Newry, Mourne and Down"),
-
-(NULL, 1226, "BGE", "Bridgend"),
-(NULL, 1226, "CAY", "Caerphilly"),
-(NULL, 1226, "CRF", "Cardiff"),
-(NULL, 1226, "CMN", "Carmarthenshire"),
-(NULL, 1226, "CGN", "Ceredigion"),
-(NULL, 1226, "CWY", "Conwy"),
-(NULL, 1226, "DEN", "Denbighshire"),
-(NULL, 1226, "FLN", "Flintshire"),
-(NULL, 1226, "AGY", "Isle of Anglesey"),
-(NULL, 1226, "MTY", "Merthyr Tydfil"),
-(NULL, 1226, "NTL", "Neath Port Talbot"),
-(NULL, 1226, "NWP", "Newport"),
-(NULL, 1226, "PEM", "Pembrokeshire"),
-(NULL, 1226, "RCT", "Rhondda, Cynon, Taff"),
-(NULL, 1226, "SWA", "Swansea"),
-(NULL, 1226, "TOF", "Torfaen"),
-(NULL, 1226, "WRX", "Wrexham"),
-
--- Add missing state for South Korea
-(NULL, 1115, "50", "Sejong"),
-
--- Add missing province for Philippines
-(NULL, 1170, "DIN", "Dinagat Islands"),
-
--- Add missing state for Colombia
-(NULL, 1048, "HUI", "Huila"),
-
--- Add missing parishes for Bermuda
- (NULL, 1023, 'DEV', 'Devonshire'),
- (NULL, 1023, 'HAM', 'Hamilton Parish'),
- (NULL, 1023, 'HA', 'City of Hamilton'),
- (NULL, 1023, 'PAG', 'Paget'),
- (NULL, 1023, 'PEM', 'Pembroke'),
- (NULL, 1023, 'SG', 'Town of St. George'),
- (NULL, 1023, 'SGE', 'Saint George\'s'),
- (NULL, 1023, 'SAN', 'Sandys'),
- (NULL, 1023, 'SMI', 'Smiths'),
- (NULL, 1023, 'SOU', 'Southampton'),
- (NULL, 1023, 'WAR', 'Warwick'),
-
--- Add in missing Indian State provinces
-
-(NULL, 1101, "DH", "Dādra and Nagar Haveli and Damān and Diu"),
-(NULL, 1101, "LA", "Ladākh"),
-
- -- end of statement:
-
--- Add missing provinces for Luxembourg
-(NULL, 1126, 'CA', 'Capellen'),
-(NULL, 1126, 'CL', 'Clervaux'),
-(NULL, 1126, 'EC', 'Echternach'),
-(NULL, 1126, 'ES', 'Esch-sur-Alzette'),
-(NULL, 1126, 'ME', 'Mersch'),
-(NULL, 1126, 'RD', 'Redange-sur-Attert'),
-(NULL, 1126, 'RM', 'Remich'),
-(NULL, 1126, 'VD', 'Vianden'),
-(NULL, 1126, 'WI', 'Wiltz')
-
--- end of statement:
- ;
+(1165, "_A", "Jenin"),
+(1165, "_B", "Tubas"),
+(1165, "_C", "Tulkarm"),
+(1165, "_D", "Nablus"),
+(1165, "_E", "Qalqilya"),
+(1165, "_F", "Salfit"),
+(1165, "_G", "Ramallah and Al-Bireh"),
+(1165, "_H", "Jericho"),
+(1165, "_I", "Jerusalem"),
+(1165, "_J", "Bethlehem"),
+(1165, "_K", "Hebron"),
+(1165, "_L", "North Gaza"),
+(1165, "_M", "Gaza"),
+(1165, "_N", "Deir el-Balah"),
+(1165, "_O", "Khan Yunis"),
+(1165, "_P", "Rafah"),
+(1166, "1", "Bocas del Toro"),
+(1166, "2", "Cocle"),
+(1166, "4", "Chiriqui"),
+(1166, "5", "Darien"),
+(1166, "6", "Herrera"),
+(1166, "7", "Loa Santoa"),
+(1166, "8", "Panama"),
+(1166, "9", "Veraguas"),
+(1166, "Q", "Comarca de San Blas"),
+(1169, "CAL", "El Callao"),
+(1169, "ANC", "Ancash"),
+(1169, "APU", "Apurimac"),
+(1169, "ARE", "Arequipa"),
+(1169, "AYA", "Ayacucho"),
+(1169, "CAJ", "Cajamarca"),
+(1169, "CUS", "Cuzco"),
+(1169, "HUV", "Huancavelica"),
+(1169, "HUC", "Huanuco"),
+(1169, "ICA", "Ica"),
+(1169, "JUN", "Junin"),
+(1169, "LAL", "La Libertad"),
+(1169, "LAM", "Lambayeque"),
+(1169, "LIM", "Lima"),
+(1169, "LOR", "Loreto"),
+(1169, "MDD", "Madre de Dios"),
+(1169, "MOQ", "Moquegua"),
+(1169, "PAS", "Pasco"),
+(1169, "PIU", "Piura"),
+(1169, "PUN", "Puno"),
+(1169, "SAM", "San Martin"),
+(1169, "TAC", "Tacna"),
+(1169, "TUM", "Tumbes"),
+(1169, "UCA", "Ucayali"),
+(1169, "AMA", "Amazonas"),
+(1167, "NCD", "National Capital District (Port Moresby)"),
+(1167, "CPK", "Chimbu"),
+(1167, "EHG", "Eastern Highlands"),
+(1167, "EBR", "East New Britain"),
+(1167, "ESW", "East Sepik"),
+(1167, "EPW", "Enga"),
+(1167, "GPK", "Gulf"),
+(1167, "MPM", "Madang"),
+(1167, "MRL", "Manus"),
+(1167, "MBA", "Milne Bay"),
+(1167, "MPL", "Morobe"),
+(1167, "NIK", "New Ireland"),
+(1167, "NSA", "North Solomons"),
+(1167, "SAN", "Santaun"),
+(1167, "SHM", "Southern Highlands"),
+(1167, "WHM", "Western Highlands"),
+(1167, "WBK", "West New Britain"),
+(1170, "ABR", "Abra"),
+(1170, "AGN", "Agusan del Norte"),
+(1170, "AGS", "Agusan del Sur"),
+(1170, "AKL", "Aklan"),
+(1170, "ALB", "Albay"),
+(1170, "ANT", "Antique"),
+(1170, "APA", "Apayao"),
+(1170, "AUR", "Aurora"),
+(1170, "BAS", "Basilan"),
+(1170, "BAN", "Bataan"),
+(1170, "BTN", "Batanes"),
+(1170, "BTG", "Batangas"),
+(1170, "BEN", "Benguet"),
+(1170, "BIL", "Biliran"),
+(1170, "BOH", "Bohol"),
+(1170, "BUK", "Bukidnon"),
+(1170, "BUL", "Bulacan"),
+(1170, "CAG", "Cagayan"),
+(1170, "CAN", "Camarines Norte"),
+(1170, "CAS", "Camarines Sur"),
+(1170, "CAM", "Camiguin"),
+(1170, "CAP", "Capiz"),
+(1170, "CAT", "Catanduanes"),
+(1170, "CAV", "Cavite"),
+(1170, "CEB", "Cebu"),
+(1170, "COM", "Davao de Oro"),
+(1170, "DAV", "Davao del Norte"),
+(1170, "DAS", "Davao del Sur"),
+(1170, "DAO", "Davao Oriental"),
+(1170, "EAS", "Eastern Samar"),
+(1170, "GUI", "Guimaras"),
+(1170, "IFU", "Ifugao"),
+(1170, "ILN", "Ilocos Norte"),
+(1170, "ILS", "Ilocos Sur"),
+(1170, "ILI", "Iloilo"),
+(1170, "ISA", "Isabela"),
+(1170, "KAL", "Kalinga"),
+(1170, "LAG", "Laguna"),
+(1170, "LAN", "Lanao del Norte"),
+(1170, "LAS", "Lanao del Sur"),
+(1170, "LUN", "La Union"),
+(1170, "LEY", "Leyte"),
+(1170, "MAG", "Maguindanao"),
+(1170, "MAD", "Marinduque"),
+(1170, "MAS", "Masbate"),
+(1170, "MDC", "Mindoro Occidental"),
+(1170, "MDR", "Mindoro Oriental"),
+(1170, "MSC", "Misamis Occidental"),
+(1170, "MSR", "Misamis Oriental"),
+(1170, "MOU", "Mountain Province"),
+(1170, "NEC", "Negroe Occidental"),
+(1170, "NER", "Negros Oriental"),
+(1170, "NCO", "Cotabato"),
+(1170, "NSA", "Northern Samar"),
+(1170, "NUE", "Nueva Ecija"),
+(1170, "NUV", "Nueva Vizcaya"),
+(1170, "PLW", "Palawan"),
+(1170, "PAM", "Pampanga"),
+(1170, "PAN", "Pangasinan"),
+(1170, "QUE", "Quezon"),
+(1170, "QUI", "Quirino"),
+(1170, "RIZ", "Rizal"),
+(1170, "ROM", "Romblon"),
+(1170, "SAR", "Sarangani"),
+(1170, "SIG", "Siquijor"),
+(1170, "SOR", "Sorsogon"),
+(1170, "SCO", "South Cotabato"),
+(1170, "SLE", "Southern Leyte"),
+(1170, "SUK", "Sultan Kudarat"),
+(1170, "SLU", "Sulu"),
+(1170, "SUN", "Surigao del Norte"),
+(1170, "SUR", "Surigao del Sur"),
+(1170, "TAR", "Tarlac"),
+(1170, "TAW", "Tawi-Tawi"),
+(1170, "WSA", "Western Samar"),
+(1170, "ZMB", "Zambales"),
+(1170, "ZAN", "Zamboanga del Norte"),
+(1170, "ZAS", "Zamboanga del Sur"),
+(1170, "ZSI", "Zamboanga Sibiguey"),
+(1170, "DIN", "Dinagat Islands"),
+(1170, "MNL", "Metropolitan Manila"),
+(1163, "IS", "Islamabad Federal Capital Area"),
+(1163, "BA", "Baluchistan"),
+(1163, "NW", "Khyber Pakhtun Khawa"),
+(1163, "SD", "Sindh"),
+(1163, "TA", "Federally Administered Tribal Areas"),
+(1163, "JK", "Azad Kashmir"),
+(1163, "NA", "Gilgit-Baltistan"),
+(1163, "PB", "Punjab"),
+(1173, "01", "Aveiro"),
+(1173, "02", "Beja"),
+(1173, "03", "Braga"),
+(1173, "04", "Bragança"),
+(1173, "05", "Castelo Branco"),
+(1173, "06", "Coimbra"),
+(1173, "07", "Évora"),
+(1173, "08", "Faro"),
+(1173, "09", "Guarda"),
+(1173, "10", "Leiria"),
+(1173, "11", "Lisboa"),
+(1173, "12", "Portalegre"),
+(1173, "13", "Porto"),
+(1173, "14", "Santarém"),
+(1173, "15", "Setúbal"),
+(1173, "16", "Viana do Castelo"),
+(1173, "17", "Vila Real"),
+(1173, "18", "Viseu"),
+(1173, "20", "Região Autónoma dos Açores"),
+(1173, "30", "Região Autónoma da Madeira"),
+(1168, "ASU", "Asuncion"),
+(1168, "16", "Alto Paraguay"),
+(1168, "10", "Alto Parana"),
+(1168, "13", "Amambay"),
+(1168, "19", "Boqueron"),
+(1168, "5", "Caeguazu"),
+(1168, "6", "Caazapl"),
+(1168, "14", "Canindeyu"),
+(1168, "1", "Concepcion"),
+(1168, "3", "Cordillera"),
+(1168, "4", "Guaira"),
+(1168, "7", "Itapua"),
+(1168, "8", "Miaiones"),
+(1168, "12", "Neembucu"),
+(1168, "9", "Paraguari"),
+(1168, "15", "Presidente Hayes"),
+(1168, "2", "San Pedro"),
+(1175, "DA", "Ad Dawhah"),
+(1175, "GH", "Al Ghuwayriyah"),
+(1175, "JU", "Al Jumayliyah"),
+(1175, "KH", "Al Khawr"),
+(1175, "WA", "Al Wakrah"),
+(1175, "RA", "Ar Rayyan"),
+(1175, "JB", "Jariyan al Batnah"),
+(1175, "MS", "Madinat ash Shamal"),
+(1175, "US", "Umm Salal"),
+(1176, "B", "Bucuresti"),
+(1176, "AB", "Alba"),
+(1176, "AR", "Arad"),
+(1176, "AG", "ArgeÈ™"),
+(1176, "BC", "Bacău"),
+(1176, "BH", "Bihor"),
+(1176, "BN", "Bistrița-Năsăud"),
+(1176, "BT", "Botoșani"),
+(1176, "BV", "Brașov"),
+(1176, "BR", "Brăila"),
+(1176, "BZ", "Buzău"),
+(1176, "CS", "CaraÈ™-Severin"),
+(1176, "CL", "Călărași"),
+(1176, "CJ", "Cluj"),
+(1176, "CT", "Constanța"),
+(1176, "CV", "Covasna"),
+(1176, "DB", "Dâmbovița"),
+(1176, "DJ", "Dolj"),
+(1176, "GL", "Galați"),
+(1176, "GR", "Giurgiu"),
+(1176, "GJ", "Gorj"),
+(1176, "HR", "Harghita"),
+(1176, "HD", "Hunedoara"),
+(1176, "IL", "Ialomița"),
+(1176, "IS", "Iași"),
+(1176, "IF", "Ilfov"),
+(1176, "MM", "MaramureÈ™"),
+(1176, "MH", "Mehedinți"),
+(1176, "MS", "MureÈ™"),
+(1176, "NT", "NeamÈ›"),
+(1176, "OT", "Olt"),
+(1176, "PH", "Prahova"),
+(1176, "SM", "Satu Mare"),
+(1176, "SJ", "Sălaj"),
+(1176, "SB", "Sibiu"),
+(1176, "SV", "Suceava"),
+(1176, "TR", "Teleorman"),
+(1176, "TM", "TimiÈ™"),
+(1176, "TL", "Tulcea"),
+(1176, "VS", "Vaslui"),
+(1176, "VL", "Vâlcea"),
+(1176, "VN", "Vrancea"),
+(1177, "AD", "Adygeya, Respublika"),
+(1177, "AL", "Altay, Respublika"),
+(1177, "BA", "Bashkortostan, Respublika"),
+(1177, "BU", "Buryatiya, Respublika"),
+(1177, "CE", "Chechenskaya Respublika"),
+(1177, "CU", "Chuvashskaya Respublika"),
+(1177, "DA", "Dagestan, Respublika"),
+(1177, "IN", "Ingushskaya Respublika"),
+(1177, "KB", "Kabardino-Balkarskaya"),
+(1177, "KL", "Kalmykiya, Respublika"),
+(1177, "KC", "Karachayevo-Cherkesskaya Respublika"),
+(1177, "KR", "Kareliya, Respublika"),
+(1177, "KK", "Khakasiya, Respublika"),
+(1177, "KO", "Komi, Respublika"),
+(1177, "ME", "Mariy El, Respublika"),
+(1177, "MO", "Mordoviya, Respublika"),
+(1177, "SA", "Sakha, Respublika [Yakutiya]"),
+(1177, "SE", "Severnaya Osetiya, Respublika"),
+(1177, "TA", "Tatarstan, Respublika"),
+(1177, "TY", "Tyva, Respublika [Tuva]"),
+(1177, "UD", "Udmurtskaya Respublika"),
+(1177, "ALT", "Altayskiy kray"),
+(1177, "KHA", "Khabarovskiy kray"),
+(1177, "KDA", "Krasnodarskiy kray"),
+(1177, "KYA", "Krasnoyarskiy kray"),
+(1177, "PRI", "Primorskiy kray"),
+(1177, "STA", "Stavropol\'skiy kray"),
+(1177, "AMU", "Amurskaya oblast\'"),
+(1177, "ARK", "Arkhangel\'skaya oblast\'"),
+(1177, "AST", "Astrakhanskaya oblast\'"),
+(1177, "BEL", "Belgorodskaya oblast\'"),
+(1177, "BRY", "Bryanskaya oblast\'"),
+(1177, "CHE", "Chelyabinskaya oblast\'"),
+(1177, "ZSK", "Zabaykalsky Krai\'"),
+(1177, "IRK", "Irkutskaya oblast\'"),
+(1177, "IVA", "Ivanovskaya oblast\'"),
+(1177, "KGD", "Kaliningradskaya oblast\'"),
+(1177, "KLU", "Kaluzhskaya oblast\'"),
+(1177, "KAM", "Kamchatka Krai\'"),
+(1177, "KEM", "Kemerovskaya oblast\'"),
+(1177, "KIR", "Kirovskaya oblast\'"),
+(1177, "KOS", "Kostromskaya oblast\'"),
+(1177, "KGN", "Kurganskaya oblast\'"),
+(1177, "KRS", "Kurskaya oblast\'"),
+(1177, "LEN", "Leningradskaya oblast\'"),
+(1177, "LIP", "Lipetskaya oblast\'"),
+(1177, "MAG", "Magadanskaya oblast\'"),
+(1177, "MOS", "Moskovskaya oblast\'"),
+(1177, "MUR", "Murmanskaya oblast\'"),
+(1177, "NIZ", "Nizhegorodskaya oblast\'"),
+(1177, "NGR", "Novgorodskaya oblast\'"),
+(1177, "NVS", "Novosibirskaya oblast\'"),
+(1177, "OMS", "Omskaya oblast\'"),
+(1177, "ORE", "Orenburgskaya oblast\'"),
+(1177, "ORL", "Orlovskaya oblast\'"),
+(1177, "PNZ", "Penzenskaya oblast\'"),
+(1177, "PEK", "Perm krai\'"),
+(1177, "PSK", "Pskovskaya oblast\'"),
+(1177, "ROS", "Rostovskaya oblast\'"),
+(1177, "RYA", "Ryazanskaya oblast\'"),
+(1177, "SAK", "Sakhalinskaya oblast\'"),
+(1177, "SAM", "Samarskaya oblast\'"),
+(1177, "SAR", "Saratovskaya oblast\'"),
+(1177, "SMO", "Smolenskaya oblast\'"),
+(1177, "SVE", "Sverdlovskaya oblast\'"),
+(1177, "TAM", "Tambovskaya oblast\'"),
+(1177, "TOM", "Tomskaya oblast\'"),
+(1177, "TUL", "Tul\'skaya oblast\'"),
+(1177, "TVE", "Tverskaya oblast\'"),
+(1177, "TYU", "Tyumenskaya oblast\'"),
+(1177, "ULY", "Ul\'yanovskaya oblast\'"),
+(1177, "VLA", "Vladimirskaya oblast\'"),
+(1177, "VGG", "Volgogradskaya oblast\'"),
+(1177, "VLG", "Vologodskaya oblast\'"),
+(1177, "VOR", "Voronezhskaya oblast\'"),
+(1177, "YAR", "Yaroslavskaya oblast\'"),
+(1177, "MOW", "Moskva"),
+(1177, "SPE", "Sankt-Peterburg"),
+(1177, "YEV", "Yevreyskaya avtonomnaya oblast\'"),
+(1177, "CHU", "Chukotskiy avtonomnyy okrug"),
+(1177, "KHM", "Khanty-Mansiyskiy avtonomnyy okrug"),
+(1177, "NEN", "Nenetskiy avtonomnyy okrug"),
+(1177, "YAN", "Yamalo-Nenetskiy avtonomnyy okrug"),
+(1178, "C", "Butare"),
+(1178, "I", "Byumba"),
+(1178, "E", "Cyangugu"),
+(1178, "D", "Gikongoro"),
+(1178, "G", "Gisenyi"),
+(1178, "B", "Gitarama"),
+(1178, "J", "Kibungo"),
+(1178, "F", "Kibuye"),
+(1178, "K", "Kigali-Rural Kigali y\' Icyaro"),
+(1178, "L", "Kigali-Ville Kigali Ngari"),
+(1178, "M", "Mutara"),
+(1178, "H", "Ruhengeri"),
+(1181, "K", "Saint Kitts"),
+(1181, "N", "Nevis"),
+(1187, "11", "Al Bahah"),
+(1187, "08", "Al Hudud Ash Shamaliyah"),
+(1187, "12", "Al Jawf"),
+(1187, "03", "Al Madinah"),
+(1187, "05", "Al Qasim"),
+(1187, "01", "Ar Riyad"),
+(1187, "14", "Asir"),
+(1187, "06", "Ha\'il"),
+(1187, "09", "Jlzan"),
+(1187, "02", "Makkah"),
+(1187, "10", "Najran"),
+(1187, "07", "Tabuk"),
+(1187, "04", "Ash Sharqiyah"),
+(1194, "CT", "Capital Territory (Honiara)"),
+(1194, "GU", "Guadalcanal"),
+(1194, "IS", "Isabel"),
+(1194, "MK", "Makira"),
+(1194, "ML", "Malaita"),
+(1194, "TE", "Temotu"),
+(1200, "23", "A\'ali an Nil"),
+(1200, "26", "Al Bah al Ahmar"),
+(1200, "18", "Al Buhayrat"),
+(1200, "07", "Al Jazirah"),
+(1200, "03", "Al Khartum"),
+(1200, "06", "Al Qadarif"),
+(1200, "22", "Al Wahdah"),
+(1200, "04", "An Nil"),
+(1200, "08", "An Nil al Abyaq"),
+(1200, "24", "An Nil al Azraq"),
+(1200, "01", "Ash Shamallyah"),
+(1200, "17", "Bahr al Jabal"),
+(1200, "16", "Gharb al Istiwa\'iyah"),
+(1200, "14", "Gharb Ba~r al Ghazal"),
+(1200, "12", "Gharb Darfur"),
+(1200, "10", "Gharb Kurdufan"),
+(1200, "11", "Janub Darfur"),
+(1200, "13", "Janub Rurdufan"),
+(1200, "20", "Jnqall"),
+(1200, "05", "Kassala"),
+(1200, "15", "Shamal Batr al Ghazal"),
+(1200, "02", "Shamal Darfur"),
+(1200, "09", "Shamal Kurdufan"),
+(1200, "19", "Sharq al Istiwa\'iyah"),
+(1200, "25", "Sinnar"),
+(1200, "21", "Warab"),
+(1204, "K", "Blekinge län"),
+(1204, "W", "Dalarnas län"),
+(1204, "I", "Gotlands län"),
+(1204, "X", "Gävleborgs län"),
+(1204, "N", "Hallands län"),
+(1204, "Z", "Jämtlands län"),
+(1204, "F", "Jönkopings län"),
+(1204, "H", "Kalmar län"),
+(1204, "G", "Kronobergs län"),
+(1204, "BD", "Norrbottens län"),
+(1204, "M", "Skåne län"),
+(1204, "AB", "Stockholms län"),
+(1204, "D", "Södermanlands län"),
+(1204, "C", "Uppsala län"),
+(1204, "S", "Värmlands län"),
+(1204, "AC", "Västerbottens län"),
+(1204, "Y", "Västernorrlands län"),
+(1204, "U", "Västmanlands län"),
+(1204, "Q", "Västra Götalands län"),
+(1204, "T", "Örebro län"),
+(1204, "E", "Östergötlands län"),
+(1180, "SH", "Saint Helena"),
+(1180, "AC", "Ascension"),
+(1180, "TA", "Tristan da Cunha"),
+(1193, "001", "Ajdovščina"),
+(1193, "002", "Beltinci"),
+(1193, "148", "Benedikt"),
+(1193, "149", "Bistrica ob Sotli"),
+(1193, "003", "Bled"),
+(1193, "150", "Bloke"),
+(1193, "004", "Bohinj"),
+(1193, "005", "Borovnica"),
+(1193, "006", "Bovec"),
+(1193, "151", "Braslovče"),
+(1193, "007", "Brda"),
+(1193, "008", "Brezovica"),
+(1193, "009", "Brežice"),
+(1193, "152", "Cankova"),
+(1193, "011", "Celje"),
+(1193, "012", "Cerklje na Gorenjskem"),
+(1193, "013", "Cerknica"),
+(1193, "014", "Cerkno"),
+(1193, "153", "Cerkvenjak"),
+(1193, "015", "Črenšovci"),
+(1193, "016", "Črna na Koroškem"),
+(1193, "017", "ÄŒrnomelj"),
+(1193, "018", "Destrnik"),
+(1193, "019", "Divača"),
+(1193, "154", "Dobje"),
+(1193, "020", "Dobrepolje"),
+(1193, "155", "Dobrna"),
+(1193, "021", "Dobrova-Polhov Gradec"),
+(1193, "156", "Dobrovnik"),
+(1193, "022", "Dol pri Ljubljani"),
+(1193, "157", "Dolenjske Toplice"),
+(1193, "023", "Domžale"),
+(1193, "024", "Dornava"),
+(1193, "025", "Dravograd"),
+(1193, "026", "Duplek"),
+(1193, "027", "Gorenja vas-Poljane"),
+(1193, "028", "Gorišnica"),
+(1193, "029", "Gornja Radgona"),
+(1193, "030", "Gornji Grad"),
+(1193, "031", "Gornji Petrovci"),
+(1193, "158", "Grad"),
+(1193, "032", "Grosuplje"),
+(1193, "159", "Hajdina"),
+(1193, "160", "Hoče-Slivnica"),
+(1193, "161", "Hodoš"),
+(1193, "162", "Horjul"),
+(1193, "034", "Hrastnik"),
+(1193, "035", "Hrpelje-Kozina"),
+(1193, "036", "Idrija"),
+(1193, "037", "Ig"),
+(1193, "038", "Ilirska Bistrica"),
+(1193, "039", "Ivančna Gorica"),
+(1193, "040", "Izola"),
+(1193, "041", "Jesenice"),
+(1193, "163", "Jezersko"),
+(1193, "042", "Juršinci"),
+(1193, "043", "Kamnik"),
+(1193, "044", "Kanal"),
+(1193, "045", "Kidričevo"),
+(1193, "046", "Kobarid"),
+(1193, "047", "Kobilje"),
+(1193, "048", "Kočevje"),
+(1193, "049", "Komen"),
+(1193, "164", "Komenda"),
+(1193, "050", "Koper"),
+(1193, "165", "Kostel"),
+(1193, "051", "Kozje"),
+(1193, "052", "Kranj"),
+(1193, "053", "Kranjska Gora"),
+(1193, "166", "Križevci"),
+(1193, "054", "Krško"),
+(1193, "055", "Kungota"),
+(1193, "056", "Kuzma"),
+(1193, "057", "Laško"),
+(1193, "058", "Lenart"),
+(1193, "059", "Lendava"),
+(1193, "060", "Litija"),
+(1193, "061", "Ljubljana"),
+(1193, "062", "Ljubno"),
+(1193, "063", "Ljutomer"),
+(1193, "064", "Logatec"),
+(1193, "065", "Loška dolina"),
+(1193, "066", "Loški Potok"),
+(1193, "167", "Lovrenc na Pohorju"),
+(1193, "067", "Luče"),
+(1193, "068", "Lukovica"),
+(1193, "069", "Majšperk"),
+(1193, "070", "Maribor"),
+(1193, "168", "Markovci"),
+(1193, "071", "Medvode"),
+(1193, "072", "Mengeš"),
+(1193, "073", "Metlika"),
+(1193, "074", "Mežica"),
+(1193, "169", "Miklavž na Dravskem polju"),
+(1193, "075", "Miren-Kostanjevica"),
+(1193, "170", "Mirna Peč"),
+(1193, "076", "Mislinja"),
+(1193, "077", "Moravče"),
+(1193, "078", "Moravske Toplice"),
+(1193, "079", "Mozirje"),
+(1193, "080", "Murska Sobota"),
+(1193, "081", "Muta"),
+(1193, "082", "Naklo"),
+(1193, "083", "Nazarje"),
+(1193, "084", "Nova Gorica"),
+(1193, "085", "Novo mesto"),
+(1193, "181", "Sveta Ana"),
+(1193, "182", "Sveti Andraž v Slovenskih goricah"),
+(1193, "116", "Sveti Jurij"),
+(1193, "033", "Å alovci"),
+(1193, "183", "Å empeter-Vrtojba"),
+(1193, "117", "Šenčur"),
+(1193, "118", "Å entilj"),
+(1193, "119", "Å entjernej"),
+(1193, "120", "Å entjur"),
+(1193, "121", "Å kocjan"),
+(1193, "122", "Å kofja Loka"),
+(1193, "123", "Å kofljica"),
+(1193, "124", "Šmarje pri Jelšah"),
+(1193, "125", "Å martno ob Paki"),
+(1193, "194", "Å martno pri Litiji"),
+(1193, "126", "Šoštanj"),
+(1193, "127", "Å tore"),
+(1193, "184", "Tabor"),
+(1193, "010", "Tišina"),
+(1193, "128", "Tolmin"),
+(1193, "129", "Trbovlje"),
+(1193, "130", "Trebnje"),
+(1193, "185", "Trnovska vas"),
+(1193, "131", "Tržič"),
+(1193, "186", "Trzin"),
+(1193, "132", "Turnišče"),
+(1193, "133", "Velenje"),
+(1193, "187", "Velika Polana"),
+(1193, "134", "Velike Lašče"),
+(1193, "188", "Veržej"),
+(1193, "135", "Videm"),
+(1193, "136", "Vipava"),
+(1193, "137", "Vitanje"),
+(1193, "138", "Vojnik"),
+(1193, "189", "Vransko"),
+(1193, "140", "Vrhnika"),
+(1193, "141", "Vuzenica"),
+(1193, "142", "Zagorje ob Savi"),
+(1193, "143", "Zavrč"),
+(1193, "144", "Zreče"),
+(1193, "190", "Žalec"),
+(1193, "146", "Železniki"),
+(1193, "191", "Žetale"),
+(1193, "147", "Žiri"),
+(1193, "192", "Žirovnica"),
+(1193, "193", "Žužemberk"),
+(1193, "86", "Ankaran"),
+(1193, "87", "Apače"),
+(1193, "88", "Cirkulane"),
+(1193, "89", "Gorje"),
+(1193, "90", "Kostanjevica na Krki"),
+(1193, "91", "Log-Dragomer"),
+(1193, "92", "Makole"),
+(1193, "93", "Mirna"),
+(1193, "94", "Mokronog-Trebelno"),
+(1193, "95", "Odranci"),
+(1193, "96", "Oplotnica"),
+(1193, "97", "Ormož"),
+(1193, "98", "Osilnica"),
+(1193, "99", "Pesnica"),
+(1193, "100", "Piran"),
+(1193, "101", "Pivka"),
+(1193, "102", "Podčetrtek"),
+(1193, "103", "Podlehnik"),
+(1193, "104", "Podvelka"),
+(1193, "105", "Poljčane"),
+(1193, "106", "Polzela"),
+(1193, "107", "Postojna"),
+(1193, "108", "Prebold"),
+(1193, "109", "Preddvor"),
+(1193, "110", "Prevalje"),
+(1193, "111", "Ptuj"),
+(1193, "112", "Puconci"),
+(1193, "113", "Rače-Fram"),
+(1193, "114", "Radeče"),
+(1193, "115", "Radenci"),
+(1193, "139", "Radlje ob Dravi"),
+(1193, "145", "Radovljica"),
+(1193, "171", "Ravne na Koroškem"),
+(1193, "172", "Razkrižje"),
+(1193, "173", "Rečica ob Savinji"),
+(1193, "174", "Renče-Vogrsko"),
+(1193, "175", "Ribnica"),
+(1193, "176", "Ribnica na Pohorju"),
+(1193, "177", "Rogaška Slatina"),
+(1193, "178", "Rogašovci"),
+(1193, "179", "Rogatec"),
+(1193, "180", "Ruše"),
+(1193, "195", "Selnica ob Dravi"),
+(1193, "196", "Semič"),
+(1193, "197", "Å entrupert"),
+(1193, "198", "Sevnica"),
+(1193, "199", "Sežana"),
+(1193, "200", "Slovenj Gradec"),
+(1193, "201", "Slovenska Bistrica"),
+(1193, "202", "Slovenske Konjice"),
+(1193, "203", "Šmarješke Toplice"),
+(1193, "204", "Sodražica"),
+(1193, "205", "Solčava"),
+(1193, "206", "Središče ob Dravi"),
+(1193, "207", "Starše"),
+(1193, "208", "Straža"),
+(1193, "209", "Sveta Trojica v Slovenskih goricah"),
+(1193, "210", "Sveti Jurij v Slovenskih goricah"),
+(1193, "211", "Sveti Tomaž"),
+(1193, "212", "Vodice"),
+(1192, "BC", "Banskobystrický kraj"),
+(1192, "BL", "Bratislavský kraj"),
+(1192, "KI", "Košický kraj"),
+(1192, "NJ", "Nitriansky kraj"),
+(1192, "PV", "Prešovský kraj"),
+(1192, "TC", "Trenčiansky kraj"),
+(1192, "TA", "Trnavský kraj"),
+(1192, "ZI", "Žilinský kraj"),
+(1190, "W", "Western Area (Freetown)"),
+(1190, "E", "Eastern"),
+(1190, "N", "Northern"),
+(1190, "S", "Southern"),
+(1188, "DK", "Dakar"),
+(1188, "DB", "Diourbel"),
+(1188, "FK", "Fatick"),
+(1188, "KL", "Kaolack"),
+(1188, "KD", "Kolda"),
+(1188, "LG", "Louga"),
+(1188, "MT", "Matam"),
+(1188, "SL", "Saint-Louis"),
+(1188, "TC", "Tambacounda"),
+(1188, "TH", "Thies"),
+(1188, "ZG", "Ziguinchor"),
+(1195, "AW", "Awdal"),
+(1195, "BK", "Bakool"),
+(1195, "BN", "Banaadir"),
+(1195, "BY", "Bay"),
+(1195, "GA", "Galguduud"),
+(1195, "GE", "Gedo"),
+(1195, "HI", "Hiirsan"),
+(1195, "JD", "Jubbada Dhexe"),
+(1195, "JH", "Jubbada Hoose"),
+(1195, "MU", "Mudug"),
+(1195, "NU", "Nugaal"),
+(1195, "SA", "Saneag"),
+(1195, "SD", "Shabeellaha Dhexe"),
+(1195, "SH", "Shabeellaha Hoose"),
+(1195, "SO", "Sool"),
+(1195, "TO", "Togdheer"),
+(1195, "WO", "Woqooyi Galbeed"),
+(1201, "BR", "Brokopondo"),
+(1201, "CM", "Commewijne"),
+(1201, "CR", "Coronie"),
+(1201, "MA", "Marowijne"),
+(1201, "NI", "Nickerie"),
+(1201, "PM", "Paramaribo"),
+(1201, "SA", "Saramacca"),
+(1201, "SI", "Sipaliwini"),
+(1201, "WA", "Wanica"),
+(1207, "P", "Principe"),
+(1207, "S", "Sao Tome"),
+(1066, "AH", "Ahuachapan"),
+(1066, "CA", "Cabanas"),
+(1066, "CU", "Cuscatlan"),
+(1066, "CH", "Chalatenango"),
+(1066, "MO", "Morazan"),
+(1066, "SM", "San Miguel"),
+(1066, "SS", "San Salvador"),
+(1066, "SA", "Santa Ana"),
+(1066, "SV", "San Vicente"),
+(1066, "SO", "Sonsonate"),
+(1066, "US", "Usulutan"),
+(1066, "LI", "La Libertad"),
+(1066, "PA", "La Paz"),
+(1066, "UN", "La Union"),
+(1206, "HA", "Al Hasakah"),
+(1206, "LA", "Al Ladhiqiyah"),
+(1206, "QU", "Al Qunaytirah"),
+(1206, "RA", "Ar Raqqah"),
+(1206, "SU", "As Suwayda\'"),
+(1206, "DR", "Dar\'a"),
+(1206, "DY", "Dayr az Zawr"),
+(1206, "DI", "Dimashq"),
+(1206, "HL", "Halab"),
+(1206, "HM", "Hamah"),
+(1206, "HI", "Jim\'"),
+(1206, "ID", "Idlib"),
+(1206, "RD", "Rif Dimashq"),
+(1206, "TA", "Tarts"),
+(1203, "HH", "Hhohho"),
+(1203, "LU", "Lubombo"),
+(1203, "MA", "Manzini"),
+(1203, "SH", "Shiselweni"),
+(1043, "BA", "Batha"),
+(1043, "BI", "Biltine"),
+(1043, "BET", "Borkou-Ennedi-Tibesti"),
+(1043, "CB", "Chari-Baguirmi"),
+(1043, "GR", "Guera"),
+(1043, "KA", "Kanem"),
+(1043, "LC", "Lac"),
+(1043, "LO", "Logone-Occidental"),
+(1043, "LR", "Logone-Oriental"),
+(1043, "MK", "Mayo-Kebbi"),
+(1043, "MC", "Moyen-Chari"),
+(1043, "OD", "Ouaddai"),
+(1043, "SA", "Salamat"),
+(1043, "TA", "Tandjile"),
+(1214, "K", "Kara"),
+(1214, "M", "Maritime (Region)"),
+(1214, "S", "Savannes"),
+(1211, "10", "Krung Thep Maha Nakhon Bangkok"),
+(1211, "S", "Phatthaya"),
+(1211, "37", "Amnat Charoen"),
+(1211, "15", "Ang Thong"),
+(1211, "31", "Buri Ram"),
+(1211, "24", "Chachoengsao"),
+(1211, "18", "Chai Nat"),
+(1211, "36", "Chaiyaphum"),
+(1211, "22", "Chanthaburi"),
+(1211, "50", "Chiang Mai"),
+(1211, "57", "Chiang Rai"),
+(1211, "20", "Chon Buri"),
+(1211, "86", "Chumphon"),
+(1211, "46", "Kalasin"),
+(1211, "62", "Kamphasng Phet"),
+(1211, "71", "Kanchanaburi"),
+(1211, "40", "Khon Kaen"),
+(1211, "81", "Krabi"),
+(1211, "52", "Lampang"),
+(1211, "51", "Lamphun"),
+(1211, "42", "Loei"),
+(1211, "16", "Lop Buri"),
+(1211, "58", "Mae Hong Son"),
+(1211, "44", "Maha Sarakham"),
+(1211, "49", "Mukdahan"),
+(1211, "26", "Nakhon Nayok"),
+(1211, "73", "Nakhon Pathom"),
+(1211, "48", "Nakhon Phanom"),
+(1211, "30", "Nakhon Ratchasima"),
+(1211, "60", "Nakhon Sawan"),
+(1211, "80", "Nakhon Si Thammarat"),
+(1211, "55", "Nan"),
+(1211, "96", "Narathiwat"),
+(1211, "39", "Nong Bua Lam Phu"),
+(1211, "43", "Nong Khai"),
+(1211, "12", "Nonthaburi"),
+(1211, "13", "Pathum Thani"),
+(1211, "94", "Pattani"),
+(1211, "82", "Phangnga"),
+(1211, "93", "Phatthalung"),
+(1211, "56", "Phayao"),
+(1211, "67", "Phetchabun"),
+(1211, "76", "Phetchaburi"),
+(1211, "66", "Phichit"),
+(1211, "65", "Phitsanulok"),
+(1211, "54", "Phrae"),
+(1211, "14", "Phra Nakhon Si Ayutthaya"),
+(1211, "83", "Phuket"),
+(1211, "25", "Prachin Buri"),
+(1211, "77", "Prachuap Khiri Khan"),
+(1211, "85", "Ranong"),
+(1211, "70", "Ratchaburi"),
+(1211, "21", "Rayong"),
+(1211, "45", "Roi Et"),
+(1211, "27", "Sa Kaeo"),
+(1211, "47", "Sakon Nakhon"),
+(1211, "11", "Samut Prakan"),
+(1211, "74", "Samut Sakhon"),
+(1211, "75", "Samut Songkhram"),
+(1211, "19", "Saraburi"),
+(1211, "91", "Satun"),
+(1211, "17", "Sing Buri"),
+(1211, "33", "Si Sa Ket"),
+(1211, "90", "Songkhla"),
+(1211, "64", "Sukhothai"),
+(1211, "72", "Suphan Buri"),
+(1211, "84", "Surat Thani"),
+(1211, "32", "Surin"),
+(1211, "63", "Tak"),
+(1211, "92", "Trang"),
+(1211, "23", "Trat"),
+(1211, "34", "Ubon Ratchathani"),
+(1211, "41", "Udon Thani"),
+(1211, "61", "Uthai Thani"),
+(1211, "53", "Uttaradit"),
+(1211, "95", "Yala"),
+(1211, "35", "Yasothon"),
+(1209, "SU", "Sughd"),
+(1209, "KT", "Khatlon"),
+(1209, "GB", "Gorno-Badakhshan"),
+(1209, "DU", "Dushanbe"),
+(1209, "RA", "Nohiyahoi Tobei Jumhurí"),
+(1220, "A", "Ahal"),
+(1220, "B", "Balkan"),
+(1220, "D", "Dasoguz"),
+(1220, "L", "Lebap"),
+(1220, "M", "Mary"),
+(1218, "31", "Béja"),
+(1218, "13", "Ben Arous"),
+(1218, "23", "Bizerte"),
+(1218, "81", "Gabès"),
+(1218, "71", "Gafsa"),
+(1218, "32", "Jendouba"),
+(1218, "41", "Kairouan"),
+(1218, "42", "Rasserine"),
+(1218, "73", "Kebili"),
+(1218, "12", "L\'Ariana"),
+(1218, "33", "Le Ref"),
+(1218, "53", "Mahdia"),
+(1218, "14", "La Manouba"),
+(1218, "82", "Medenine"),
+(1218, "52", "Moneatir"),
+(1218, "21", "Naboul"),
+(1218, "61", "Sfax"),
+(1218, "43", "Sidi Bouxid"),
+(1218, "34", "Siliana"),
+(1218, "51", "Sousse"),
+(1218, "83", "Tataouine"),
+(1218, "72", "Tozeur"),
+(1218, "11", "Tunis"),
+(1218, "22", "Zaghouan"),
+(1219, "01", "Adana"),
+(1219, "02", "Ad yaman"),
+(1219, "03", "Afyon"),
+(1219, "04", "Ag r"),
+(1219, "68", "Aksaray"),
+(1219, "05", "Amasya"),
+(1219, "06", "Ankara"),
+(1219, "07", "Antalya"),
+(1219, "75", "Ardahan"),
+(1219, "08", "Artvin"),
+(1219, "09", "Aydin"),
+(1219, "10", "Bal kesir"),
+(1219, "74", "Bartin"),
+(1219, "72", "Batman"),
+(1219, "69", "Bayburt"),
+(1219, "11", "Bilecik"),
+(1219, "12", "Bingol"),
+(1219, "13", "Bitlis"),
+(1219, "14", "Bolu"),
+(1219, "15", "Burdur"),
+(1219, "16", "Bursa"),
+(1219, "17", "Canakkale"),
+(1219, "18", "Cankir"),
+(1219, "19", "Corum"),
+(1219, "20", "Denizli"),
+(1219, "21", "Diyarbakir"),
+(1219, "81", "Duzce"),
+(1219, "22", "Edirne"),
+(1219, "23", "Elazig"),
+(1219, "24", "Erzincan"),
+(1219, "25", "Erzurum"),
+(1219, "26", "Eskis\'ehir"),
+(1219, "27", "Gaziantep"),
+(1219, "28", "Giresun"),
+(1219, "29", "Gms\'hane"),
+(1219, "30", "Hakkari"),
+(1219, "31", "Hatay"),
+(1219, "76", "Igidir"),
+(1219, "32", "Isparta"),
+(1219, "33", "Icel"),
+(1219, "34", "Istanbul"),
+(1219, "35", "Izmir"),
+(1219, "46", "Kahramanmaras"),
+(1219, "78", "Karabk"),
+(1219, "70", "Karaman"),
+(1219, "36", "Kars"),
+(1219, "37", "Kastamonu"),
+(1219, "38", "Kayseri"),
+(1219, "71", "Kirikkale"),
+(1219, "39", "Kirklareli"),
+(1219, "40", "Kirs\'ehir"),
+(1219, "79", "Kilis"),
+(1219, "41", "Kocaeli"),
+(1219, "42", "Konya"),
+(1219, "43", "Ktahya"),
+(1219, "44", "Malatya"),
+(1219, "45", "Manisa"),
+(1219, "47", "Mardin"),
+(1219, "48", "Mugila"),
+(1219, "49", "Mus"),
+(1219, "50", "Nevs\'ehir"),
+(1219, "51", "Nigide"),
+(1219, "52", "Ordu"),
+(1219, "80", "Osmaniye"),
+(1219, "53", "Rize"),
+(1219, "54", "Sakarya"),
+(1219, "55", "Samsun"),
+(1219, "56", "Siirt"),
+(1219, "57", "Sinop"),
+(1219, "58", "Sivas"),
+(1219, "63", "S\'anliurfa"),
+(1219, "73", "S\'rnak"),
+(1219, "59", "Tekirdag"),
+(1219, "60", "Tokat"),
+(1219, "61", "Trabzon"),
+(1219, "62", "Tunceli"),
+(1219, "64", "Us\'ak"),
+(1219, "65", "Van"),
+(1219, "77", "Yalova"),
+(1219, "66", "Yozgat"),
+(1219, "67", "Zonguldak"),
+(1217, "CTT", "Couva-Tabaquite-Talparo"),
+(1217, "DMN", "Diego Martin"),
+(1217, "ETO", "Eastern Tobago"),
+(1217, "PED", "Penal-Debe"),
+(1217, "PRT", "Princes Town"),
+(1217, "RCM", "Rio Claro-Mayaro"),
+(1217, "SGE", "Sangre Grande"),
+(1217, "SJL", "San Juan-Laventille"),
+(1217, "SIP", "Siparia"),
+(1217, "TUP", "Tunapuna-Piarco"),
+(1217, "WTO", "Western Tobago"),
+(1217, "ARI", "Arima"),
+(1217, "CHA", "Chaguanas"),
+(1217, "PTF", "Point Fortin"),
+(1217, "POS", "Port of Spain"),
+(1217, "SFO", "San Fernando"),
+(1063, "AL", "Aileu"),
+(1063, "AN", "Ainaro"),
+(1063, "BA", "Bacucau"),
+(1063, "BO", "Bobonaro"),
+(1063, "CO", "Cova Lima"),
+(1063, "DI", "Dili"),
+(1063, "ER", "Ermera"),
+(1063, "LA", "Laulem"),
+(1063, "LI", "Liquica"),
+(1063, "MT", "Manatuto"),
+(1063, "MF", "Manafahi"),
+(1063, "OE", "Oecussi"),
+(1063, "VI", "Viqueque"),
+(1208, "CHA", "Changhua County"),
+(1208, "CYQ", "Chiayi County"),
+(1208, "HSQ", "Hsinchu County"),
+(1208, "HUA", "Hualien County"),
+(1208, "ILA", "Ilan County"),
+(1208, "KHQ", "Kaohsiung County"),
+(1208, "MIA", "Miaoli County"),
+(1208, "NAN", "Nantou County"),
+(1208, "PEN", "Penghu County"),
+(1208, "PIF", "Pingtung County"),
+(1208, "TXQ", "Taichung County"),
+(1208, "TNQ", "Tainan County"),
+(1208, "TPQ", "Taipei County"),
+(1208, "TTT", "Taitung County"),
+(1208, "TAO", "Taoyuan County"),
+(1208, "YUN", "Yunlin County"),
+(1208, "KEE", "Keelung City"),
+(1208, "TXG", "Taichung City"),
+(1208, "KHH", "Kaohsiung City"),
+(1208, "TPE", "Taipei City"),
+(1208, "CYI", "Chiayi City"),
+(1208, "HSZ", "Hsinchu City"),
+(1208, "TNN", "Tainan City"),
+(1210, "01", "Arusha"),
+(1210, "02", "Dar-es-Salaam"),
+(1210, "03", "Dodoma"),
+(1210, "04", "Iringa"),
+(1210, "05", "Kagera"),
+(1210, "06", "Kaskazini Pemba"),
+(1210, "07", "Kaskazini Unguja"),
+(1210, "08", "Xigoma"),
+(1210, "09", "Kilimanjaro"),
+(1210, "10", "Rusini Pemba"),
+(1210, "11", "Kusini Unguja"),
+(1210, "12", "Lindi"),
+(1210, "26", "Manyara"),
+(1210, "13", "Mara"),
+(1210, "14", "Mbeya"),
+(1210, "15", "Mjini Magharibi"),
+(1210, "16", "Morogoro"),
+(1210, "17", "Mtwara"),
+(1210, "19", "Pwani"),
+(1210, "20", "Rukwa"),
+(1210, "21", "Ruvuma"),
+(1210, "22", "Shinyanga"),
+(1210, "23", "Singida"),
+(1210, "24", "Tabora"),
+(1210, "25", "Tanga"),
+(1224, "71", "Cherkas\'ka Oblast\'"),
+(1224, "74", "Chernihivs\'ka Oblast\'"),
+(1224, "77", "Chernivets\'ka Oblast\'"),
+(1224, "12", "Dnipropetrovs\'ka Oblast\'"),
+(1224, "14", "Donets\'ka Oblast\'"),
+(1224, "26", "Ivano-Frankivs\'ka Oblast\'"),
+(1224, "63", "Kharkivs\'ka Oblast\'"),
+(1224, "65", "Khersons\'ka Oblast\'"),
+(1224, "68", "Khmel\'nyts\'ka Oblast\'"),
+(1224, "35", "Kirovohrads\'ka Oblast\'"),
+(1224, "32", "Kyivs\'ka Oblast\'"),
+(1224, "09", "Luhans\'ka Oblast\'"),
+(1224, "46", "L\'vivs\'ka Oblast\'"),
+(1224, "48", "Mykolaivs\'ka Oblast\'"),
+(1224, "51", "Odes \'ka Oblast\'"),
+(1224, "53", "Poltavs\'ka Oblast\'"),
+(1224, "56", "Rivnens\'ka Oblast\'"),
+(1224, "59", "Sums \'ka Oblast\'"),
+(1224, "61", "Ternopil\'s\'ka Oblast\'"),
+(1224, "05", "Vinnyts\'ka Oblast\'"),
+(1224, "07", "Volyos\'ka Oblast\'"),
+(1224, "21", "Zakarpats\'ka Oblast\'"),
+(1224, "23", "Zaporiz\'ka Oblast\'"),
+(1224, "18", "Zhytomyrs\'ka Oblast\'"),
+(1224, "43", "Respublika Krym"),
+(1224, "30", "Kyiv"),
+(1224, "40", "Sevastopol"),
+(1223, "301", "Adjumani"),
+(1223, "302", "Apac"),
+(1223, "303", "Arua"),
+(1223, "201", "Bugiri"),
+(1223, "401", "Bundibugyo"),
+(1223, "402", "Bushenyi"),
+(1223, "202", "Busia"),
+(1223, "304", "Gulu"),
+(1223, "403", "Hoima"),
+(1223, "203", "Iganga"),
+(1223, "204", "Jinja"),
+(1223, "404", "Kabale"),
+(1223, "405", "Kabarole"),
+(1223, "213", "Kaberamaido"),
+(1223, "101", "Kalangala"),
+(1223, "102", "Kampala"),
+(1223, "205", "Kamuli"),
+(1223, "413", "Kamwenge"),
+(1223, "414", "Kanungu"),
+(1223, "206", "Kapchorwa"),
+(1223, "406", "Kasese"),
+(1223, "207", "Katakwi"),
+(1223, "112", "Kayunga"),
+(1223, "407", "Kibaale"),
+(1223, "103", "Kiboga"),
+(1223, "408", "Kisoro"),
+(1223, "305", "Kitgum"),
+(1223, "306", "Kotido"),
+(1223, "208", "Kumi"),
+(1223, "415", "Kyenjojo"),
+(1223, "307", "Lira"),
+(1223, "104", "Luwero"),
+(1223, "105", "Masaka"),
+(1223, "409", "Masindi"),
+(1223, "214", "Mayuge"),
+(1223, "209", "Mbale"),
+(1223, "410", "Mbarara"),
+(1223, "308", "Moroto"),
+(1223, "309", "Moyo"),
+(1223, "106", "Mpigi"),
+(1223, "107", "Mubende"),
+(1223, "108", "Mukono"),
+(1223, "311", "Nakapiripirit"),
+(1223, "109", "Nakasongola"),
+(1223, "310", "Nebbi"),
+(1223, "411", "Ntungamo"),
+(1223, "312", "Pader"),
+(1223, "210", "Pallisa"),
+(1223, "110", "Rakai"),
+(1223, "412", "Rukungiri"),
+(1223, "111", "Sembabule"),
+(1223, "215", "Sironko"),
+(1223, "211", "Soroti"),
+(1223, "212", "Tororo"),
+(1223, "113", "Wakiso"),
+(1223, "313", "Yumbe"),
+(1227, "81", "Baker Island"),
+(1227, "84", "Howland Island"),
+(1227, "86", "Jarvis Island"),
+(1227, "67", "Johnston Atoll"),
+(1227, "89", "Kingman Reef"),
+(1227, "71", "Midway Islands"),
+(1227, "76", "Navassa Island"),
+(1227, "95", "Palmyra Atoll"),
+(1227, "79", "Wake Island"),
+(1229, "AR", "Artigsa"),
+(1229, "CA", "Canelones"),
+(1229, "CL", "Cerro Largo"),
+(1229, "CO", "Colonia"),
+(1229, "DU", "Durazno"),
+(1229, "FS", "Flores"),
+(1229, "LA", "Lavalleja"),
+(1229, "MA", "Maldonado"),
+(1229, "MO", "Montevideo"),
+(1229, "PA", "Paysandu"),
+(1229, "RV", "Rivera"),
+(1229, "RO", "Rocha"),
+(1229, "SA", "Salto"),
+(1229, "SO", "Soriano"),
+(1229, "TA", "Tacuarembo"),
+(1229, "TT", "Treinta y Tres"),
+(1229, "FL", "Florida"),
+(1229, "RN", "Rio Negro"),
+(1229, "SJ", "San Jose"),
+(1230, "TK", "Toshkent (city)"),
+(1230, "QR", "Qoraqalpogiston Respublikasi"),
+(1230, "AN", "Andijon"),
+(1230, "BU", "Buxoro"),
+(1230, "FA", "Farg\'ona"),
+(1230, "JI", "Jizzax"),
+(1230, "KH", "Khorazm"),
+(1230, "NG", "Namangan"),
+(1230, "NW", "Navoiy"),
+(1230, "QA", "Qashqadaryo"),
+(1230, "SA", "Samarqand"),
+(1230, "SI", "Sirdaryo"),
+(1230, "SU", "Surxondaryo"),
+(1230, "TO", "Toshkent"),
+(1230, "XO", "Xorazm"),
+(1232, "A", "Distrito Federal"),
+(1232, "B", "Anzoategui"),
+(1232, "C", "Apure"),
+(1232, "D", "Aragua"),
+(1232, "E", "Barinas"),
+(1232, "G", "Carabobo"),
+(1232, "H", "Cojedes"),
+(1232, "I", "Falcon"),
+(1232, "J", "Guarico"),
+(1232, "K", "Lara"),
+(1232, "L", "Merida"),
+(1232, "M", "Miranda"),
+(1232, "N", "Monagas"),
+(1232, "O", "Nueva Esparta"),
+(1232, "P", "Portuguesa"),
+(1232, "S", "Tachira"),
+(1232, "T", "Trujillo"),
+(1232, "X", "Vargas"),
+(1232, "U", "Yaracuy"),
+(1232, "V", "Zulia"),
+(1232, "Y", "Delta Amacuro"),
+(1232, "W", "Dependencias Federales"),
+(1233, "44", "An Giang"),
+(1233, "43", "Ba Ria - Vung Tau"),
+(1233, "53", "Bac Can"),
+(1233, "54", "Bac Giang"),
+(1233, "55", "Bac Lieu"),
+(1233, "56", "Bac Ninh"),
+(1233, "50", "Ben Tre"),
+(1233, "31", "Binh Dinh"),
+(1233, "57", "Binh Duong"),
+(1233, "58", "Binh Phuoc"),
+(1233, "40", "Binh Thuan"),
+(1233, "59", "Ca Mau"),
+(1233, "48", "Can Tho"),
+(1233, "04", "Cao Bang"),
+(1233, "60", "Da Nang, thanh pho"),
+(1233, "39", "Dong Nai"),
+(1233, "45", "Dong Thap"),
+(1233, "30", "Gia Lai"),
+(1233, "03", "Ha Giang"),
+(1233, "63", "Ha Nam"),
+(1233, "64", "Ha Noi, thu do"),
+(1233, "15", "Ha Tay"),
+(1233, "23", "Ha Tinh"),
+(1233, "61", "Hai Duong"),
+(1233, "62", "Hai Phong, thanh pho"),
+(1233, "14", "Hoa Binh"),
+(1233, "65", "Ho Chi Minh, thanh pho [Sai Gon]"),
+(1233, "66", "Hung Yen"),
+(1233, "34", "Khanh Hoa"),
+(1233, "47", "Kien Giang"),
+(1233, "28", "Kon Tum"),
+(1233, "01", "Lai Chau"),
+(1233, "35", "Lam Dong"),
+(1233, "09", "Lang Son"),
+(1233, "02", "Lao Cai"),
+(1233, "41", "Long An"),
+(1233, "67", "Nam Dinh"),
+(1233, "22", "Nghe An"),
+(1233, "18", "Ninh Binh"),
+(1233, "36", "Ninh Thuan"),
+(1233, "68", "Phu Tho"),
+(1233, "32", "Phu Yen"),
+(1233, "24", "Quang Binh"),
+(1233, "27", "Quang Nam"),
+(1233, "29", "Quang Ngai"),
+(1233, "13", "Quang Ninh"),
+(1233, "25", "Quang Tri"),
+(1233, "52", "Soc Trang"),
+(1233, "05", "Son La"),
+(1233, "37", "Tay Ninh"),
+(1233, "20", "Thai Binh"),
+(1233, "69", "Thai Nguyen"),
+(1233, "21", "Thanh Hoa"),
+(1233, "26", "Thua Thien-Hue"),
+(1233, "46", "Tien Giang"),
+(1233, "51", "Tra Vinh"),
+(1233, "07", "Tuyen Quang"),
+(1233, "49", "Vinh Long"),
+(1233, "70", "Vinh Phuc"),
+(1233, "06", "Yen Bai"),
+(1231, "MAP", "Malampa"),
+(1231, "PAM", "Penama"),
+(1231, "SAM", "Sanma"),
+(1231, "SEE", "Shefa"),
+(1231, "TAE", "Tafea"),
+(1231, "TOB", "Torba"),
+(1185, "AA", "A\'ana"),
+(1185, "AL", "Aiga-i-le-Tai"),
+(1185, "AT", "Atua"),
+(1185, "FA", "Fa\'aaaleleaga"),
+(1185, "GE", "Gaga\'emauga"),
+(1185, "GI", "Gagaifomauga"),
+(1185, "PA", "Palauli"),
+(1185, "SA", "Satupa\'itea"),
+(1185, "TU", "Tuamasaga"),
+(1185, "VF", "Va\'a-o-Fonoti"),
+(1185, "VS", "Vaisigano"),
+(1243, "CG", "Crna Gora"),
+(1242, "SR", "Srbija"),
+(1242, "KM", "Kosovo-Metohija"),
+(1242, "VO", "Vojvodina"),
+(1237, "AB", "Abyan"),
+(1237, "AD", "Adan"),
+(1237, "DA", "Ad Dali"),
+(1237, "BA", "Al Bayda\'"),
+(1237, "MU", "Al Hudaydah"),
+(1237, "MR", "Al Mahrah"),
+(1237, "MW", "Al Mahwit"),
+(1237, "AM", "Amran"),
+(1237, "DH", "Dhamar"),
+(1237, "HD", "Hadramawt"),
+(1237, "HJ", "Hajjah"),
+(1237, "IB", "Ibb"),
+(1237, "LA", "Lahij"),
+(1237, "MA", "Ma\'rib"),
+(1237, "SD", "Sa\'dah"),
+(1237, "SN", "San\'a\'"),
+(1237, "SH", "Shabwah"),
+(1237, "TA", "Ta\'izz"),
+(1196, "EC", "Eastern Cape"),
+(1196, "FS", "Free State"),
+(1196, "GT", "Gauteng"),
+(1196, "NL", "Kwazulu-Natal"),
+(1196, "MP", "Mpumalanga"),
+(1196, "NC", "Northern Cape"),
+(1196, "NP", "Limpopo"),
+(1196, "WC", "Western Cape"),
+(1196, "NW", "North West"),
+(1239, "08", "Copperbelt"),
+(1239, "04", "Luapula"),
+(1239, "09", "Lusaka"),
+(1239, "06", "North-Western"),
+(1239, 'C', 'Central'),
+(1239, 'E', 'Eastern'),
+(1239, 'M', 'Muchinga'),
+(1239, 'N', 'Northern'),
+(1239, 'S', 'Southern'),
+(1239, 'W', 'Western'),
+(1240, "BU", "Bulawayo"),
+(1240, "HA", "Harare"),
+(1240, "MA", "Manicaland"),
+(1240, "MC", "Mashonaland Central"),
+(1240, "ME", "Mashonaland East"),
+(1240, "MW", "Mashonaland West"),
+(1240, "MV", "Masvingo"),
+(1240, "MN", "Matabeleland North"),
+(1240, "MS", "Matabeleland South"),
+(1240, "MI", "Midlands"),
+(1075, "SK", "South Karelia"),
+(1075, "SO", "South Ostrobothnia"),
+(1075, "ES", "Etelä-Savo"),
+(1075, "HH", "Häme"),
+(1075, "IU", "Itä-Uusimaa"),
+(1075, "KA", "Kainuu"),
+(1075, "CO", "Central Ostrobothnia"),
+(1075, "CF", "Central Finland"),
+(1075, "KY", "Kymenlaakso"),
+(1075, "LA", "Lapland"),
+(1075, "TR", "Tampere Region"),
+(1075, "OB", "Ostrobothnia"),
+(1075, "NK", "North Karelia"),
+(1075, "NO", "Northern Ostrobothnia"),
+(1075, "NS", "Northern Savo"),
+(1075, "PH", "Päijät-Häme"),
+(1075, "SK", "Satakunta"),
+(1075, "UM", "Uusimaa"),
+(1075, "SW", "South-West Finland"),
+(1075, "AL", "Ã…land"),
+(1152, "LI", "Limburg"),
+(1098, "CW", "Central and Western"),
+(1098, "EA", "Eastern"),
+(1098, "SO", "Southern"),
+(1098, "WC", "Wan Chai"),
+(1098, "KC", "Kowloon City"),
+(1098, "KU", "Kwun Tong"),
+(1098, "SS", "Sham Shui Po"),
+(1098, "WT", "Wong Tai Sin"),
+(1098, "YT", "Yau Tsim Mong"),
+(1098, "IS", "Islands"),
+(1098, "KI", "Kwai Tsing"),
+(1098, "NO", "North"),
+(1098, "SK", "Sai Kung"),
+(1098, "ST", "Sha Tin"),
+(1098, "TP", "Tai Po"),
+(1098, "TW", "Tsuen Wan"),
+(1098, "TM", "Tuen Mun"),
+(1098, "YL", "Yuen Long"),
+(1108, "MR", "Manchester"),
+(1016, "13", "Al Manāmah (Al ‘Āşimah)"),
+(1016, "14", "Al Janūbīyah"),
+(1016, "16", "Al Wusţá"),
+(1016, "17", "Ash Shamālīyah");
diff --git a/civicrm/xml/templates/drop.tpl b/civicrm/xml/templates/drop.tpl
index 92e98df8df1c1ccc557e28920190a187d8df0f57..8239a2c9cdcdcdedb2e9b4121378727bc200fad4 100644
--- a/civicrm/xml/templates/drop.tpl
+++ b/civicrm/xml/templates/drop.tpl
@@ -8,11 +8,12 @@
 --
 -- Generated from {$smarty.template}
 -- {$generated}
---{/if}
+--
+{/if}
 -- /*******************************************************
 -- *
--- * Clean up the existing tables{if !$isOutputLicense} - this section generated from {$smarty.template}
-{/if}
+-- * Clean up the existing tables{if !$isOutputLicense} - this section generated from {$smarty.template}{/if}
+
 -- *
 -- *******************************************************/
 
diff --git a/civicrm/xml/templates/languages_setup.tpl b/civicrm/xml/templates/languages_setup.tpl
new file mode 100644
index 0000000000000000000000000000000000000000..fccb5e14b997ac9b89e3afb6d5b73c4af70b650b
--- /dev/null
+++ b/civicrm/xml/templates/languages_setup.tpl
@@ -0,0 +1,5 @@
+<?php
+
+\Civi\Setup::assertRunning();
+
+$langs = {$langs};
diff --git a/civicrm/xml/templates/message_templates/contribution_invoice_receipt_html.tpl b/civicrm/xml/templates/message_templates/contribution_invoice_receipt_html.tpl
index e32cfcaf38f988db4d71787b8da2dd5935915816..213665d7ebb72e46d0a656b6e7c62fa429b05ea9 100644
--- a/civicrm/xml/templates/message_templates/contribution_invoice_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_invoice_receipt_html.tpl
@@ -14,9 +14,9 @@
       </table>
     {/if}
     <table style="font-family: Arial, Verdana, sans-serif;" width="100%" height="100" border="0" cellpadding="5" cellspacing="0">
-      {if $email_comment}
+      {if $userText}
         <tr>
-          <td><font size="1" colspan="3">{$email_comment}</font></td>
+          <td><font size="1" colspan="3">{$userText}</font></td>
         </tr>
       {/if}
       <tr>
diff --git a/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl b/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl
index c7bcc10fb44364d729ee3b541193c39d5cff3800..4675e488c8feef4ab9dd50c0d1dc1a8a356c02f4 100644
--- a/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl
@@ -82,7 +82,7 @@
             </td>
             {if $isShowTax && {contribution.tax_amount|boolean}}
               <td>
-                {$line.unit_price*$line.qty|crmMoney:'{contribution.currency}'}
+                {$line.line_total|crmMoney:'{contribution.currency}'}
               </td>
               {if $line.tax_rate || $line.tax_amount != ""}
                 <td>
diff --git a/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl b/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl
index 0c067179eacf4baf771e9dfb21ed78972860811c..2049f45086c04d015042ad5ac8056b6d2cfe9831 100644
--- a/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl
@@ -27,7 +27,7 @@
 {$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
 ----------------------------------------------------------
 {foreach from=$lineItems item=line}
-{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:'{contribution.currency}'|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:'{contribution.currency}'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} %   {$line.tax_amount|crmMoney:'{contribution.currency}'|string_format:"%10s"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:'{contribution.currency}'|string_format:"%10s"}
+{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:'{contribution.currency}'|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.line_total|crmMoney:'{contribution.currency}'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} %   {$line.tax_amount|crmMoney:'{contribution.currency}'|string_format:"%10s"} {else}                  {/if} {/if}   {$line.line_total_inclusive|crmMoney:'{contribution.currency}'|string_format:"%10s"}
 {/foreach}
 {/if}
 
diff --git a/civicrm/xml/templates/message_templates/contribution_online_receipt_html.tpl b/civicrm/xml/templates/message_templates/contribution_online_receipt_html.tpl
index 832186120664f2885f3fda6635112ecce8ddc0ce..d148b5218a278c67bd58ac93b6cf4db5bca1cee6 100644
--- a/civicrm/xml/templates/message_templates/contribution_online_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_online_receipt_html.tpl
@@ -61,7 +61,7 @@
                 <td>{$line.qty}</td>
                 <td>{$line.unit_price|crmMoney:$currency}</td>
                 {if $isShowTax && {contribution.tax_amount|boolean}}
-                  <td>{$line.unit_price*$line.qty|crmMoney:$currency}</td>
+                  <td>{$line.line_total|crmMoney:$currency}</td>
                   {if $line.tax_rate || $line.tax_amount != ""}
                     <td>{$line.tax_rate|string_format:"%.2f"}%</td>
                     <td>{$line.tax_amount|crmMoney:$currency}</td>
@@ -85,7 +85,7 @@
             {ts} Amount before Tax : {/ts}
           </td>
           <td {$valueStyle}>
-            {$amount-$totalTaxAmount|crmMoney:$currency}
+            {contribution.tax_exclusive_amount}
           </td>
         </tr>
 
diff --git a/civicrm/xml/templates/message_templates/contribution_online_receipt_text.tpl b/civicrm/xml/templates/message_templates/contribution_online_receipt_text.tpl
index 2e4844feeed0dfef437654a536b815d17018115a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/civicrm/xml/templates/message_templates/contribution_online_receipt_text.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_online_receipt_text.tpl
@@ -1,203 +0,0 @@
-{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-{if !empty($receipt_text)}
-{$receipt_text}
-{/if}
-{if $is_pay_later}
-
-===========================================================
-{$pay_later_receipt}
-===========================================================
-{/if}
-
-{if {contribution.total_amount|boolean}}
-===========================================================
-{ts}Contribution Information{/ts}
-
-===========================================================
-{if $isShowLineItems}
-
----------------------------------------------------------
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_qty}{ts}Qty{/ts}{/capture}
-{capture assign=ts_each}{ts}Each{/ts}{/capture}
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
-{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
-{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
-{/if}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
-----------------------------------------------------------
-{foreach from=$lineItems item=line}
-{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total_inclusive|crmMoney:$currency|string_format:"%10s"}
-{/foreach}
-
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}
-  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
-    {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:'{contribution.currency}'}
-  {/foreach}
-{/if}
-
-{if $isShowTax}
-{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}
-{/if}
-
-{ts}Total Amount{/ts}: {contribution.total_amount}
-{else}
-{ts}Amount{/ts}: {contribution.total_amount} {if '{contribution.amount_level}'} - {contribution.amount_level}{/if}
-{/if}
-{/if}
-{if !empty($receive_date)}
-
-{ts}Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if {contribution.trxn_id|boolean}}
-{ts}Transaction #{/ts}: {contribution.trxn_id}
-{/if}
-
-{if !empty($is_recur)}
-{ts}This is a recurring contribution.{/ts}
-
-{if $cancelSubscriptionUrl}
-{ts}You can cancel future contributions at:{/ts}
-
-{$cancelSubscriptionUrl}
-
-{/if}
-
-{if $updateSubscriptionBillingUrl}
-{ts}You can update billing details for this recurring contribution at:{/ts}
-
-{$updateSubscriptionBillingUrl}
-
-{/if}
-
-{if $updateSubscriptionUrl}
-{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}
-
-{$updateSubscriptionUrl}
-
-{/if}
-{/if}
-
-{if $honor_block_is_active}
-===========================================================
-{$soft_credit_type}
-===========================================================
-{foreach from=$honoreeProfile item=value key=label}
-{$label}: {$value}
-{/foreach}
-{elseif !empty($softCreditTypes) and !empty($softCredits)}
-{foreach from=$softCreditTypes item=softCreditType key=n}
-===========================================================
-{$softCreditType}
-===========================================================
-{foreach from=$softCredits.$n item=value key=label}
-{$label}: {$value}
-{/foreach}
-{/foreach}
-{/if}
-{if !empty($pcpBlock)}
-===========================================================
-{ts}Personal Campaign Page{/ts}
-
-===========================================================
-{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-
-{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}
-
-{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}
-
-{/if}
-{if !empty($onBehalfProfile)}
-===========================================================
-{ts}On Behalf Of{/ts}
-
-===========================================================
-{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
-{$onBehalfName}: {$onBehalfValue}
-{/foreach}
-{/if}
-
-{if !empty($billingName)}
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-
-{$email}
-{elseif !empty($email)}
-===========================================================
-{ts}Registered Email{/ts}
-
-===========================================================
-{$email}
-{/if} {* End billingName or Email*}
-{if !empty($credit_card_type)}
-
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}
-{/if}
-
-{if !empty($selectPremium )}
-===========================================================
-{ts}Premium Information{/ts}
-
-===========================================================
-{$product_name}
-{if $option}
-{ts}Option{/ts}: {$option}
-{/if}
-{if $sku}
-{ts}SKU{/ts}: {$sku}
-{/if}
-{if $start_date}
-{ts}Start Date{/ts}: {$start_date|crmDate}
-{/if}
-{if $end_date}
-{ts}End Date{/ts}: {$end_date|crmDate}
-{/if}
-{if !empty($contact_email) OR !empty($contact_phone)}
-
-{ts}For information about this premium, contact:{/ts}
-
-{if !empty($contact_email)}
-  {$contact_email}
-{/if}
-{if !empty($contact_phone)}
-  {$contact_phone}
-{/if}
-{/if}
-{if $is_deductible AND !empty($price)}
-
-{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}
-{/if}
-
-{if !empty($customPre)}
-===========================================================
-{$customPre_grouptitle}
-
-===========================================================
-{foreach from=$customPre item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-
-
-{if !empty($customPost)}
-===========================================================
-{$customPost_grouptitle}
-
-===========================================================
-{foreach from=$customPost item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
diff --git a/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl b/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl
index 8fad146e4b9469b79a330bf8f17e8d683704e8f1..7b14fdd5b7fc7594be42714a636b03616f71d479 100644
--- a/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl
@@ -25,8 +25,8 @@
    <td>
     {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
 
-    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
-     <p>{$event.confirm_email_text}</p>
+    {if $userText}
+     <p>{$userText}</p>
     {/if}
 
     {if !empty($isOnWaitlist)}
@@ -134,7 +134,7 @@
        {/if}
      {/if}
 
-     {if {event.is_public|boolean}}
+     {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
       <tr>
        <td colspan="2" {$valueStyle}>
         {capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
diff --git a/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl b/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl
index 30b451ca2754dbb284f94545de54d43462370649..b86de3c20589999ae23770941e389f621f72b745 100644
--- a/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl
@@ -142,7 +142,7 @@
           {/if}
         {/if}
 
-        {if {event.is_public|boolean}}
+        {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
           <tr>
             <td colspan="2" {$valueStyle}>
               {capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
@@ -206,7 +206,7 @@
                               <th>{ts}Tax Amount{/ts}</th>
                             {/if}
                           <th>{ts}Total{/ts}</th>
-                          {if !empty($pricesetFieldsCount)}
+                          {if $isShowParticipantCount}
                             <th>{ts}Total Participants{/ts}</th>
                           {/if}
                         </tr>
@@ -228,7 +228,7 @@
                             <td {$tdStyle}>
                               {$line.line_total_inclusive|crmMoney:$currency}
                             </td>
-                            {if !empty($pricesetFieldsCount)}
+                            {if $isShowParticipantCount}
                               <td {$tdStyle}>{$line.participant_count}</td>
                             {/if}
                           </tr>
@@ -300,25 +300,12 @@
                   {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}
                 </td>
               </tr>
-              {if !empty($pricesetFieldsCount)}
+              {if $isShowParticipantCount}
                 <tr>
                   <td {$labelStyle}>
                     {ts}Total Participants{/ts}</td>
                   <td {$valueStyle}>
-                    {assign var="count" value= 0}
-                    {foreach from=$lineItem item=pcount}
-                      {assign var="lineItemCount" value=0}
-                      {if $pcount neq 'skip'}
-                        {foreach from=$pcount item=p_count}
-                          {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count}
-                        {/foreach}
-                        {if $lineItemCount < 1}
-                          {assign var="lineItemCount" value=1}
-                        {/if}
-                        {assign var="count" value=$count+$lineItemCount}
-                      {/if}
-                    {/foreach}
-                    {$count}
+                    {$participantCount}
                   </td>
                 </tr>
               {/if}
diff --git a/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl b/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl
index 1eb6b86c0691d369265cb505b9f8dcf44b39252f..1b49df076c9fd6da42fdb467705cb6d6803da822 100644
--- a/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl
+++ b/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl
@@ -70,7 +70,7 @@
 {if {event.loc_block_id.email_2_id.email|boolean}}
 {ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}
 {/if}
-{if {event.is_public|boolean}}
+{if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}
 {capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
 {ts}Download iCalendar entry for this event.{/ts} {$icalFeed}
 {capture assign=gCalendar}{crmURL p='civicrm/event/ical' q="gCalendar=1&reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
@@ -113,7 +113,7 @@ You were registered by: {$payer.name}
 
 {foreach from=$value item=line}
 {if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}
-{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if}
+{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if}
 {/foreach}
 ----------------------------------------------------------------------------------------------------------------
 {if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:"%29s"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:"%33s"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:"%12s"}{/if}
diff --git a/civicrm/xml/templates/message_templates/membership_offline_receipt_html.tpl b/civicrm/xml/templates/message_templates/membership_offline_receipt_html.tpl
index a22a3449475eeb0d6c23841e34b5c96015676c6e..b3da8e213a85fd915ae91836c05a292996732195 100644
--- a/civicrm/xml/templates/message_templates/membership_offline_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/membership_offline_receipt_html.tpl
@@ -23,8 +23,8 @@
     <tr>
       <td>
         {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-        {if $receipt_text}
-          <p>{$receipt_text|htmlize}</p>
+        {if $userText}
+          <p>{$userText}</p>
         {else}
           <p>{ts}Thank you for this contribution.{/ts}</p>
         {/if}
@@ -108,7 +108,7 @@
                             </td>
                             {if $isShowTax && {contribution.tax_amount|boolean}}
                               <td>
-                                {$line.unit_price*$line.qty|crmMoney:'{contribution.currency}'}
+                                {$line.line_total|crmMoney:'{contribution.currency}'}
                               </td>
                               {if $line.tax_rate || $line.tax_amount != ""}
                                 <td>
diff --git a/civicrm/xml/templates/message_templates/membership_offline_receipt_text.tpl b/civicrm/xml/templates/message_templates/membership_offline_receipt_text.tpl
index 29c852f1b44a77fd0fd1cd7dde8efa1d33d01c98..e5c60081e308cb99d5ea641819bcb99658d1e990 100644
--- a/civicrm/xml/templates/message_templates/membership_offline_receipt_text.tpl
+++ b/civicrm/xml/templates/message_templates/membership_offline_receipt_text.tpl
@@ -1,7 +1,7 @@
 {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
-{if $receipt_text}
-{$receipt_text}
+{if $userTextPlain}
+{$userTextPlain}
 {else}{ts}Thank you for this contribution.{/ts}{/if}
 
 {if !$isShowLineItems}
@@ -40,7 +40,7 @@
 --------------------------------------------------------------------------------------------------
 
 {foreach from=$lineItems item=line}
-{line.title} {$line.line_total|crmMoney|string_format:"%10s"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:'{contribution.currency}'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:'{contribution.currency}'|string_format:"%10s"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:"%10s"} {/if} {$line.membership.start_date|string_format:"%20s"} {$line.membership.end_date|string_format:"%20s"}
+{line.title} {$line.line_total|crmMoney|string_format:"%10s"}  {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:'{contribution.currency}'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:'{contribution.currency}'|string_format:"%10s"}  {else}                  {/if}   {$line.line_total_inclusive|crmMoney|string_format:"%10s"} {/if} {$line.membership.start_date|string_format:"%20s"} {$line.membership.end_date|string_format:"%20s"}
 {/foreach}
 
 {if $isShowTax && {contribution.tax_amount|boolean}}
diff --git a/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl b/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl
index 6d1f2200dc829e1ead6a0bee010b0962f13e06bf..26bda0d5b37856019c1d1d8430ef4c84233b6073 100644
--- a/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl
@@ -21,20 +21,18 @@
   <tr>
    <td>
      {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-    {if !empty($receipt_text)}
-     <p>{$receipt_text|htmlize}</p>
+    {if $userText}
+     <p>{$userText}</p>
     {/if}
-
-    {if $is_pay_later}
-     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}
+    {if {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}
+      <p>{contribution.pay_later_receipt}</p>
     {/if}
 
    </td>
   </tr>
   </table>
   <table style="width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;">
-
-     {if $membership_assign && !$useForMember}
+    {if {membership.id|boolean} && !$isShowLineItems}
       <tr>
        <th {$headerStyle}>
         {ts}Membership Information{/ts}
@@ -45,366 +43,256 @@
         {ts}Membership Type{/ts}
        </td>
        <td {$valueStyle}>
-        {$membership_name}
+         {ts}{membership.membership_type_id:label}{/ts}
        </td>
       </tr>
-      {if $mem_start_date}
+      {if {membership.start_date|boolean}}
        <tr>
         <td {$labelStyle}>
          {ts}Membership Start Date{/ts}
         </td>
         <td {$valueStyle}>
-         {$mem_start_date|crmDate}
+          {membership.start_date}
         </td>
        </tr>
       {/if}
-      {if $mem_end_date}
+      {if {membership.end_date|boolean}}
        <tr>
         <td {$labelStyle}>
          {ts}Membership Expiration Date{/ts}
         </td>
         <td {$valueStyle}>
-          {$mem_end_date|crmDate}
+          {membership.end_date}
         </td>
        </tr>
       {/if}
-     {/if}
-
-
-     {if $amount}
+    {/if}
+    {if {contribution.total_amount|boolean}}
       <tr>
-       <th {$headerStyle}>
-        {ts}Membership Fee{/ts}
-       </th>
+        <th {$headerStyle}>{ts}Membership Fee{/ts}</th>
       </tr>
 
-      {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}
-
-       <tr>
-        <td {$labelStyle}>
-         {ts 1=$membership_name}%1 Membership{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$membership_amount|crmMoney}
-        </td>
-       </tr>
-       {if $amount && !$is_separate_payment}
-         <tr>
-          <td {$labelStyle}>
-           {ts}Contribution Amount{/ts}
-          </td>
-          <td {$valueStyle}>
-           {$amount|crmMoney}
-          </td>
-         </tr>
-         <tr>
-           <td {$labelStyle}>
-           {ts}Total{/ts}
+      {if !$isShowLineItems && {contribution.total_amount|boolean}}
+        {foreach from=$lineItems item=line}
+          <tr>
+            <td {$labelStyle}>
+              {if $line.membership_type_id}
+                {ts 1="{membership.membership_type_id:label}"}%1 Membership{/ts}
+              {else}
+                {ts}Contribution Amount{/ts}
+              {/if}
             </td>
             <td {$valueStyle}>
-            {$amount+$membership_amount|crmMoney}
-           </td>
-         </tr>
-       {/if}
-
-      {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}
-
-       {foreach from=$lineItem item=value key=priceset}
+              {$line.line_total_inclusive|crmMoney:'{contribution.currency}'}
+            </td>
+          </tr>
+        {/foreach}
+      {elseif $isShowLineItems}
         <tr>
-         <td colspan="2" {$valueStyle}>
-          <table>
-           <tr>
-            <th>{ts}Item{/ts}</th>
-            <th>{ts}Qty{/ts}</th>
-            <th>{ts}Each{/ts}</th>
-            <th>{ts}Total{/ts}</th>
-           </tr>
-           {foreach from=$value item=line}
-            <tr>
-             <td>
-              {$line.description|truncate:30:"..."}
-             </td>
-             <td>
-              {$line.qty}
-             </td>
-             <td>
-              {$line.unit_price|crmMoney}
-             </td>
-             <td>
-              {$line.line_total|crmMoney}
-             </td>
-            </tr>
-           {/foreach}
-          </table>
-         </td>
+          <td colspan="2" {$valueStyle}>
+            <table>
+              <tr>
+                <th>{ts}Item{/ts}</th>
+                <th>{ts}Fee{/ts}</th>
+                {if $isShowTax && {contribution.tax_amount|boolean}}
+                  <th>{ts}SubTotal{/ts}</th>
+                  <th>{ts}Tax Rate{/ts}</th>
+                  <th>{ts}Tax Amount{/ts}</th>
+                  <th>{ts}Total{/ts}</th>
+                {/if}
+                <th>{ts}Membership Start Date{/ts}</th>
+                <th>{ts}Membership Expiration Date{/ts}</th>
+              </tr>
+              {foreach from=$lineItems item=line}
+                <tr>
+                  <td>{$line.title}</td>
+                  <td>
+                    {$line.line_total|crmMoney}
+                  </td>
+                  {if $isShowTax && {contribution.tax_amount|boolean}}
+                    <td>
+                      {$line.line_total|crmMoney:'{contribution.currency}'}
+                    </td>
+                    {if $line.tax_rate || $line.tax_amount != ""}
+                      <td>
+                        {$line.tax_rate|string_format:"%.2f"}%
+                      </td>
+                      <td>
+                        {$line.tax_amount|crmMoney:'{contribution.currency}'}
+                      </td>
+                    {else}
+                      <td></td>
+                      <td></td>
+                    {/if}
+                    <td>
+                      {$line.line_total_inclusive|crmMoney:'{contribution.currency}'}
+                    </td>
+                  {/if}
+                  <td>
+                    {$line.membership.start_date|crmDate:"Full"}
+                  </td>
+                  <td>
+                    {$line.membership.end_date|crmDate:"Full"}
+                  </td>
+                </tr>
+              {/foreach}
+            </table>
+          </td>
         </tr>
-       {/foreach}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Total Amount{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$amount|crmMoney}
-        </td>
-       </tr>
 
-      {else}
-       {if $useForMember && $lineItem and empty($is_quick_config)}
-       {foreach from=$lineItem item=value key=priceset}
-        <tr>
-         <td colspan="2" {$valueStyle}>
-          <table>
-           <tr>
-            <th>{ts}Item{/ts}</th>
-            <th>{ts}Fee{/ts}</th>
-            {if !empty($dataArray)}
-              <th>{ts}SubTotal{/ts}</th>
-              <th>{ts}Tax Rate{/ts}</th>
-              <th>{ts}Tax Amount{/ts}</th>
-              <th>{ts}Total{/ts}</th>
-            {/if}
-      <th>{ts}Membership Start Date{/ts}</th>
-      <th>{ts}Membership Expiration Date{/ts}</th>
-           </tr>
-           {foreach from=$value item=line}
+        {if $isShowTax && {contribution.tax_amount|boolean}}
+          <tr>
+            <td {$labelStyle}>
+                {ts}Amount Before Tax:{/ts}
+            </td>
+            <td {$valueStyle}>
+                {contribution.tax_exclusive_amount}
+            </td>
+          </tr>
+          {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
             <tr>
-             <td>
-             {if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if}
-             </td>
-             <td>
-              {$line.line_total|crmMoney}
-             </td>
-             {if !empty($dataArray)}
-              <td>
-               {$line.unit_price*$line.qty|crmMoney}
-              </td>
-              {if ($line.tax_rate || $line.tax_amount != "")}
-               <td>
-                {$line.tax_rate|string_format:"%.2f"}%
-               </td>
-               <td>
-                {$line.tax_amount|crmMoney}
-               </td>
-              {else}
-               <td></td>
-               <td></td>
-              {/if}
-              <td>
-               {$line.line_total+$line.tax_amount|crmMoney}
-              </td>
-             {/if}
-             <td>
-              {$line.start_date}
-             </td>
-       <td>
-              {$line.end_date}
-             </td>
+              <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>
+              <td {$valueStyle}>{$taxDetail.amount|crmMoney:'{contribution.currency}'}</td>
             </tr>
-           {/foreach}
-          </table>
-         </td>
-        </tr>
-       {/foreach}
-       {if !empty($dataArray)}
-        <tr>
-         <td {$labelStyle}>
-          {ts}Amount Before Tax:{/ts}
-         </td>
-         <td {$valueStyle}>
-          {$amount-$totalTaxAmount|crmMoney}
-         </td>
-        </tr>
-        {foreach from=$dataArray item=value key=priceset}
-         <tr>
-         {if $priceset || $priceset == 0}
-           <td>&nbsp;{$taxTerm} {$priceset|string_format:"%.2f"}%</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-         {else}
-           <td>&nbsp;{ts}NO{/ts} {$taxTerm}</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-         {/if}
-         </tr>
-        {/foreach}
-       {/if}
-       {/if}
-       {if $totalTaxAmount}
-        <tr>
-         <td {$labelStyle}>
-          {ts}Total Tax Amount{/ts}
-         </td>
-         <td {$valueStyle}>
-          {$totalTaxAmount|crmMoney:$currency}
-         </td>
-        </tr>
-       {/if}
-       <tr>
+          {/foreach}
+        {/if}
+      {/if}
+      <tr>
         <td {$labelStyle}>
-         {ts}Amount{/ts}
+            {ts}Amount{/ts}
         </td>
         <td {$valueStyle}>
-         {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}
+            {contribution.total_amount}
         </td>
-       </tr>
-
-      {/if}
-
-
-     {elseif isset($membership_amount)}
-
-
-      <tr>
-       <th {$headerStyle}>
-        {ts}Membership Fee{/ts}
-       </th>
-      </tr>
-      <tr>
-       <td {$labelStyle}>
-        {ts 1=$membership_name}%1 Membership{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$membership_amount|crmMoney}
-       </td>
       </tr>
+    {/if}
 
-
-     {/if}
-
-     {if !empty($receive_date)}
+    {if {contribution.receive_date|boolean}}
       <tr>
-       <td {$labelStyle}>
-        {ts}Date{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$receive_date|crmDate}
-       </td>
+        <td {$labelStyle}>
+          {ts}Date{/ts}
+        </td>
+        <td {$valueStyle}>
+          {contribution.receive_date}
+        </td>
       </tr>
-     {/if}
+    {/if}
 
-     {if !empty($is_monetary) and !empty($trxn_id)}
+    {if {contribution.trxn_id|boolean}}
       <tr>
        <td {$labelStyle}>
         {ts}Transaction #{/ts}
        </td>
        <td {$valueStyle}>
-        {$trxn_id}
+         {contribution.trxn_id}
        </td>
       </tr>
-     {/if}
+    {/if}
 
-     {if !empty($membership_trx_id)}
+    {if {contribution.contribution_recur_id|boolean}}
       <tr>
-       <td {$labelStyle}>
-        {ts}Membership Transaction #{/ts}
-       </td>
-       <td {$valueStyle}>
-        {$membership_trx_id}
-       </td>
-      </tr>
-     {/if}
-     {if !empty($is_recur)}
-       <tr>
         <td colspan="2" {$labelStyle}>
-         {ts}This membership will be renewed automatically.{/ts}
-         {if $cancelSubscriptionUrl}
-           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href="%1">visiting this web page</a>.{/ts}
-         {/if}
+          {ts}This membership will be renewed automatically.{/ts}
+          {if $cancelSubscriptionUrl}
+            {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href="%1">visiting this web page</a>.{/ts}
+          {/if}
         </td>
-       </tr>
-       {if $updateSubscriptionBillingUrl}
-         <tr>
+      </tr>
+      {if $updateSubscriptionBillingUrl}
+        <tr>
           <td colspan="2" {$labelStyle}>
-           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
+            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
           </td>
-         </tr>
-       {/if}
-     {/if}
+        </tr>
+      {/if}
+    {/if}
 
-     {if $honor_block_is_active}
+    {if $honor_block_is_active}
       <tr>
-       <th {$headerStyle}>
-        {$soft_credit_type}
-       </th>
+        <th {$headerStyle}>
+          {$soft_credit_type}
+        </th>
       </tr>
       {foreach from=$honoreeProfile item=value key=label}
         <tr>
-         <td {$labelStyle}>
-          {$label}
-         </td>
-         <td {$valueStyle}>
-          {$value}
-         </td>
+          <td {$labelStyle}>
+            {$label}
+          </td>
+          <td {$valueStyle}>
+            {$value}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($pcpBlock)}
+    {if !empty($pcpBlock)}
       <tr>
-       <th {$headerStyle}>
-        {ts}Personal Campaign Page{/ts}
-       </th>
+        <th {$headerStyle}>
+          {ts}Personal Campaign Page{/ts}
+        </th>
       </tr>
       <tr>
-       <td {$labelStyle}>
-        {ts}Display In Honor Roll{/ts}
-       </td>
-       <td {$valueStyle}>
-        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-       </td>
-      </tr>
-      {if $pcp_roll_nickname}
-       <tr>
         <td {$labelStyle}>
-         {ts}Nickname{/ts}
+          {ts}Display In Honor Roll{/ts}
         </td>
         <td {$valueStyle}>
-         {$pcp_roll_nickname}
+          {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
         </td>
-       </tr>
+      </tr>
+      {if $pcp_roll_nickname}
+        <tr>
+          <td {$labelStyle}>
+            {ts}Nickname{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$pcp_roll_nickname}
+          </td>
+        </tr>
       {/if}
       {if $pcp_personal_note}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Personal Note{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$pcp_personal_note}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}Personal Note{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$pcp_personal_note}
+          </td>
+        </tr>
       {/if}
-     {/if}
+    {/if}
 
-     {if !empty($onBehalfProfile)}
+    {if !empty($onBehalfProfile)}
       <tr>
-       <th {$headerStyle}>
-        {$onBehalfProfile_grouptitle}
-       </th>
+        <th {$headerStyle}>
+          {$onBehalfProfile_grouptitle}
+        </th>
       </tr>
       {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
         <tr>
-         <td {$labelStyle}>
-          {$onBehalfName}
-         </td>
-         <td {$valueStyle}>
-          {$onBehalfValue}
-         </td>
+          <td {$labelStyle}>
+            {$onBehalfName}
+          </td>
+          <td {$valueStyle}>
+            {$onBehalfValue}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($billingName)}
-       <tr>
-         <th {$headerStyle}>
-           {ts}Billing Name and Address{/ts}
-         </th>
+    {if {contribution.address_id.display|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Billing Name and Address{/ts}
+        </th>
       </tr>
       <tr>
         <td colspan="2" {$valueStyle}>
-          {$billingName}<br />
-          {$address|nl2br}<br />
-          {$email}
+          {contribution.address_id.name}<br/>
+          {contribution.address_id.display}
         </td>
       </tr>
-    {elseif !empty($email)}
+    {/if}
+    {if {contact.email_primary.email|boolean}}
       <tr>
         <th {$headerStyle}>
           {ts}Registered Email{/ts}
@@ -412,134 +300,134 @@
       </tr>
       <tr>
         <td colspan="2" {$valueStyle}>
-          {$email}
+          {contact.email_primary.email}
         </td>
       </tr>
     {/if}
 
-     {if !empty($credit_card_type)}
+    {if !empty($credit_card_type)}
       <tr>
-       <th {$headerStyle}>
-        {ts}Credit Card Information{/ts}
-       </th>
+        <th {$headerStyle}>
+          {ts}Credit Card Information{/ts}
+         </th>
       </tr>
       <tr>
-       <td colspan="2" {$valueStyle}>
-        {$credit_card_type}<br />
-        {$credit_card_number}<br />
-        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}<br />
-       </td>
+        <td colspan="2" {$valueStyle}>
+          {$credit_card_type}<br />
+          {$credit_card_number}<br />
+          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}<br />
+        </td>
       </tr>
-     {/if}
+    {/if}
 
-     {if !empty($selectPremium)}
+    {if !empty($selectPremium)}
       <tr>
-       <th {$headerStyle}>
-        {ts}Premium Information{/ts}
-       </th>
+        <th {$headerStyle}>
+          {ts}Premium Information{/ts}
+        </th>
       </tr>
       <tr>
-       <td colspan="2" {$labelStyle}>
-        {$product_name}
-       </td>
+        <td colspan="2" {$labelStyle}>
+          {$product_name}
+        </td>
       </tr>
       {if $option}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Option{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$option}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}Option{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$option}
+          </td>
+        </tr>
       {/if}
       {if $sku}
-       <tr>
-        <td {$labelStyle}>
-         {ts}SKU{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$sku}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}SKU{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$sku}
+          </td>
+        </tr>
       {/if}
       {if $start_date}
-       <tr>
-        <td {$labelStyle}>
-         {ts}Start Date{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$start_date|crmDate}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}Start Date{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$start_date|crmDate}
+          </td>
+        </tr>
       {/if}
       {if $end_date}
-       <tr>
-        <td {$labelStyle}>
-         {ts}End Date{/ts}
-        </td>
-        <td {$valueStyle}>
-         {$end_date|crmDate}
-        </td>
-       </tr>
+        <tr>
+          <td {$labelStyle}>
+            {ts}End Date{/ts}
+          </td>
+          <td {$valueStyle}>
+            {$end_date|crmDate}
+          </td>
+        </tr>
       {/if}
       {if !empty($contact_email) OR !empty($contact_phone)}
-       <tr>
-        <td colspan="2" {$valueStyle}>
-         <p>{ts}For information about this premium, contact:{/ts}</p>
-         {if !empty($contact_email)}
-          <p>{$contact_email}</p>
-         {/if}
-         {if !empty($contact_phone)}
-          <p>{$contact_phone}</p>
-         {/if}
-        </td>
-       </tr>
+        <tr>
+          <td colspan="2" {$valueStyle}>
+            <p>{ts}For information about this premium, contact:{/ts}</p>
+            {if !empty($contact_email)}
+              <p>{$contact_email}</p>
+            {/if}
+            {if !empty($contact_phone)}
+              <p>{$contact_phone}</p>
+            {/if}
+          </td>
+        </tr>
       {/if}
       {if $is_deductible AND !empty($price)}
         <tr>
-         <td colspan="2" {$valueStyle}>
-          <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>
+          <td colspan="2" {$valueStyle}>
+            <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>
          </td>
         </tr>
       {/if}
-     {/if}
+    {/if}
 
-     {if !empty($customPre)}
+    {if !empty($customPre)}
       <tr>
        <th {$headerStyle}>
-        {$customPre_grouptitle}
+         {$customPre_grouptitle}
        </th>
       </tr>
       {foreach from=$customPre item=customValue key=customName}
         <tr>
-         <td {$labelStyle}>
-          {$customName}
-         </td>
-         <td {$valueStyle}>
-          {$customValue}
-         </td>
+          <td {$labelStyle}>
+            {$customName}
+          </td>
+          <td {$valueStyle}>
+            {$customValue}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
-     {if !empty($customPost)}
+    {if !empty($customPost)}
       <tr>
-       <th {$headerStyle}>
-        {$customPost_grouptitle}
-       </th>
+        <th {$headerStyle}>
+          {$customPost_grouptitle}
+        </th>
       </tr>
       {foreach from=$customPost item=customValue key=customName}
         <tr>
-         <td {$labelStyle}>
-          {$customName}
-         </td>
-         <td {$valueStyle}>
-          {$customValue}
-         </td>
+          <td {$labelStyle}>
+            {$customName}
+          </td>
+          <td {$valueStyle}>
+            {$customValue}
+          </td>
         </tr>
       {/foreach}
-     {/if}
+    {/if}
 
   </table>
 
diff --git a/civicrm/xml/templates/message_templates/membership_online_receipt_subject.tpl b/civicrm/xml/templates/message_templates/membership_online_receipt_subject.tpl
index 43eed64b71bfb8020202ad754cb0ba875d205c87..7fe701830cbd68eaae78a5de7adecb11873bc73e 100644
--- a/civicrm/xml/templates/message_templates/membership_online_receipt_subject.tpl
+++ b/civicrm/xml/templates/message_templates/membership_online_receipt_subject.tpl
@@ -1 +1 @@
-{if '{contribution.contribution_status_id:name}' === 'Pending'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}
+{if '{contribution.contribution_status_id:name}' === 'Pending'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {contribution.contribution_page_id.frontend_title} - {contact.display_name}
diff --git a/civicrm/xml/templates/message_templates/membership_online_receipt_text.tpl b/civicrm/xml/templates/message_templates/membership_online_receipt_text.tpl
index b692a4fa8aedef36550776a5505da63fdb1d9eba..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/civicrm/xml/templates/message_templates/membership_online_receipt_text.tpl
+++ b/civicrm/xml/templates/message_templates/membership_online_receipt_text.tpl
@@ -1,237 +0,0 @@
-{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-{if !empty($receipt_text)}
-{$receipt_text}
-{/if}
-{if $is_pay_later}
-
-===========================================================
-{$pay_later_receipt}
-===========================================================
-{/if}
-
-{if $membership_assign && !$useForMember}
-===========================================================
-{ts}Membership Information{/ts}
-
-===========================================================
-{ts}Membership Type{/ts}: {$membership_name}
-{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}
-{/if}
-{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}
-{/if}
-
-{/if}
-{if $amount}
-===========================================================
-{ts}Membership Fee{/ts}
-
-===========================================================
-{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}
-{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}
-{if $amount && !$is_separate_payment}
-{ts}Contribution Amount{/ts}: {$amount|crmMoney}
--------------------------------------------
-{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}
-{/if}
-{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}
-{foreach from=$lineItem item=value key=priceset}
----------------------------------------------------------
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_qty}{ts}Qty{/ts}{/capture}
-{capture assign=ts_each}{ts}Each{/ts}{/capture}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"}
-----------------------------------------------------------
-{foreach from=$value item=line}
-{$line.description|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {$line.line_total|crmMoney|string_format:"%10s"}
-{/foreach}
-{/foreach}
-
-{ts}Total Amount{/ts}: {$amount|crmMoney}
-{else}
-{if $useForMember && $lineItem && empty($is_quick_config)}
-{foreach from=$lineItem item=value key=priceset}
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_total}{ts}Fee{/ts}{/capture}
-{if !empty($dataArray)}
-{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
-{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
-{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{/if}
-{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}
-{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_total|string_format:"%10s"} {if !empty($dataArray)} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate|string_format:"%10s"} {$ts_taxAmount|string_format:"%10s"} {$ts_total|string_format:"%10s"} {/if} {$ts_start_date|string_format:"%20s"} {$ts_end_date|string_format:"%20s"}
---------------------------------------------------------------------------------------------------
-
-{foreach from=$value item=line}
-{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.line_total|crmMoney|string_format:"%10s"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:"%10s"} {/if} {$line.start_date|string_format:"%20s"} {$line.end_date|string_format:"%20s"}
-{/foreach}
-{/foreach}
-
-{if !empty($dataArray)}
-{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}
-
-{foreach from=$dataArray item=value key=priceset}
-{if $priceset || $priceset == 0}
-{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency}
-{else}
-{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}
-{/if}
-{/foreach}
-{/if}
---------------------------------------------------------------------------------------------------
-{/if}
-
-{if $totalTaxAmount}
-{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}
-{/if}
-
-{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}
-{/if}
-{elseif isset($membership_amount)}
-===========================================================
-{ts}Membership Fee{/ts}
-
-===========================================================
-{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}
-{/if}
-
-{if !empty($receive_date)}
-
-{ts}Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if !empty($is_monetary) and !empty($trxn_id)}
-{ts}Transaction #{/ts}: {$trxn_id}
-
-{/if}
-{if !empty($membership_trx_id)}
-{ts}Membership Transaction #{/ts}: {$membership_trx_id}
-
-{/if}
-{if !empty($is_recur)}
-{ts}This membership will be renewed automatically.{/ts}
-{if $cancelSubscriptionUrl}
-
-{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}
-
-{/if}
-
-{if $updateSubscriptionBillingUrl}
-
-{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts}
-{/if}
-{/if}
-
-{if $honor_block_is_active}
-===========================================================
-{$soft_credit_type}
-===========================================================
-{foreach from=$honoreeProfile item=value key=label}
-{$label}: {$value}
-{/foreach}
-
-{/if}
-{if !empty($pcpBlock)}
-===========================================================
-{ts}Personal Campaign Page{/ts}
-
-===========================================================
-{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}
-
-{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}
-
-{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}
-
-{/if}
-{if !empty($onBehalfProfile)}
-===========================================================
-{ts}On Behalf Of{/ts}
-
-===========================================================
-{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}
-{$onBehalfName}: {$onBehalfValue}
-{/foreach}
-{/if}
-
-{if !empty($billingName)}
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-
-{$email}
-{elseif !empty($email)}
-===========================================================
-{ts}Registered Email{/ts}
-
-===========================================================
-{$email}
-{/if} {* End billingName or email *}
-{if !empty($credit_card_type)}
-
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}
-{/if}
-
-{if !empty($selectPremium)}
-===========================================================
-{ts}Premium Information{/ts}
-
-===========================================================
-{$product_name}
-{if $option}
-{ts}Option{/ts}: {$option}
-{/if}
-{if $sku}
-{ts}SKU{/ts}: {$sku}
-{/if}
-{if $start_date}
-{ts}Start Date{/ts}: {$start_date|crmDate}
-{/if}
-{if $end_date}
-{ts}End Date{/ts}: {$end_date|crmDate}
-{/if}
-{if !empty($contact_email) OR !empty($contact_phone)}
-
-{ts}For information about this premium, contact:{/ts}
-
-{if !empty($contact_email)}
-  {$contact_email}
-{/if}
-{if !empty($contact_phone)}
-  {$contact_phone}
-{/if}
-{/if}
-{if $is_deductible AND !empty($price)}
-
-{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}
-{/if}
-
-{if !empty($customPre)}
-===========================================================
-{$customPre_grouptitle}
-
-===========================================================
-{foreach from=$customPre item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
-
-
-{if !empty($customPost)}
-===========================================================
-{$customPost_grouptitle}
-
-===========================================================
-{foreach from=$customPost item=customValue key=customName}
- {$customName}: {$customValue}
-{/foreach}
-{/if}
diff --git a/civicrm/xml/templates/message_templates/payment_or_refund_notification_html.tpl b/civicrm/xml/templates/message_templates/payment_or_refund_notification_html.tpl
index 9da9560b5c29cd2164ba5a53d13111fab6df2423..83600ab42926d26a6c1f118fdf952660e6ed33f1 100644
--- a/civicrm/xml/templates/message_templates/payment_or_refund_notification_html.tpl
+++ b/civicrm/xml/templates/message_templates/payment_or_refund_notification_html.tpl
@@ -22,11 +22,11 @@
   <tr>
     <td>
       {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
-      {if $isRefund}
+      {if {financial_trxn.total_amount|raw} < 0}
         <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>
       {else}
         <p>{ts}Below you will find a receipt for this payment.{/ts}</p>
-        {if $paymentsComplete}
+        {if !{contribution.balance_amount|boolean}}
           <p>{ts}Thank you for completing this contribution.{/ts}</p>
         {/if}
       {/if}
@@ -35,7 +35,7 @@
   <tr>
    <td>
     <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
-    {if $isRefund}
+      {if {financial_trxn.total_amount|raw} < 0}
       <tr>
         <th {$headerStyle}>{ts}Refund Details{/ts}</th>
       </tr>
@@ -44,7 +44,7 @@
         {ts}This Refund Amount{/ts}
         </td>
         <td {$valueStyle}>
-        {$refundAmount|crmMoney:$currency}
+          {financial_trxn.total_amount}
         </td>
       </tr>
     {else}
@@ -56,47 +56,47 @@
         {ts}This Payment Amount{/ts}
         </td>
         <td {$valueStyle}>
-        {$paymentAmount|crmMoney:$currency}
+        {financial_trxn.total_amount}
         </td>
       </tr>
     {/if}
-    {if $receive_date}
+    {if {financial_trxn.trxn_date|boolean}}
       <tr>
         <td {$labelStyle}>
         {ts}Transaction Date{/ts}
         </td>
         <td {$valueStyle}>
-        {$receive_date|crmDate}
+         {financial_trxn.trxn_date}
         </td>
       </tr>
     {/if}
-    {if !empty($trxn_id)}
+    {if {financial_trxn.trxn_id|boolean}}
       <tr>
         <td {$labelStyle}>
         {ts}Transaction #{/ts}
         </td>
         <td {$valueStyle}>
-        {$trxn_id}
+          {financial_trxn.trxn_id}
         </td>
       </tr>
     {/if}
-    {if !empty($paidBy)}
+    {if {financial_trxn.payment_instrument_id|boolean}}
       <tr>
         <td {$labelStyle}>
         {ts}Paid By{/ts}
         </td>
         <td {$valueStyle}>
-        {$paidBy}
+          {financial_trxn.payment_instrument_id:label}
         </td>
       </tr>
     {/if}
-    {if !empty($checkNumber)}
+    {if {financial_trxn.check_number|boolean}}
       <tr>
         <td {$labelStyle}>
         {ts}Check Number{/ts}
         </td>
         <td {$valueStyle}>
-        {$checkNumber}
+          {financial_trxn.check_number}
         </td>
       </tr>
     {/if}
@@ -104,34 +104,34 @@
   <tr>
     <th {$headerStyle}>{ts}Contribution Details{/ts}</th>
   </tr>
-  {if $totalAmount}
+  {if {contribution.total_amount|boolean}}
   <tr>
     <td {$labelStyle}>
       {ts}Total Fee{/ts}
     </td>
     <td {$valueStyle}>
-      {$totalAmount|crmMoney:$currency}
+      {contribution.total_amount}
     </td>
   </tr>
   {/if}
-  {if $totalPaid}
+  {if {contribution.paid_amount|boolean}}
   <tr>
     <td {$labelStyle}>
       {ts}Total Paid{/ts}
     </td>
     <td {$valueStyle}>
-      {$totalPaid|crmMoney:$currency}
+      {contribution.paid_amount}
     </td>
   </tr>
   {/if}
-  {if $amountOwed}
+  {if {contribution.balance_amount|boolean}}
   <tr>
     <td {$labelStyle}>
       {ts}Balance Owed{/ts}
     </td>
     <td {$valueStyle}>
-      {$amountOwed|crmMoney:$currency}
-    </td> {* This will be zero after final payment. *}
+      {contribution.balance_amount}
+    </td>
   </tr>
   {/if}
   </table>
@@ -142,105 +142,125 @@
       <td>
   <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;">
     {if !empty($billingName) || !empty($address)}
-          <tr>
-            <th {$headerStyle}>
-        {ts}Billing Name and Address{/ts}
-            </th>
-          </tr>
-          <tr>
-            <td colspan="2" {$valueStyle}>
+        <tr>
+          <th {$headerStyle}>
+              {ts}Billing Name and Address{/ts}
+          </th>
+        </tr>
+        <tr>
+          <td colspan="2" {$valueStyle}>
         {if !empty($billingName)}{$billingName}{/if}<br />
         {if !empty($address)}{$address|nl2br}{/if}
-            </td>
-          </tr>
-    {/if}
-    {if !empty($credit_card_number)}
-          <tr>
-            <th {$headerStyle}>
-        {ts}Credit Card Information{/ts}
-            </th>
-          </tr>
-          <tr>
-            <td colspan="2" {$valueStyle}>
-        {$credit_card_type}<br />
-        {$credit_card_number}<br />
-        {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:''|crmDate}
-            </td>
-          </tr>
+          </td>
+        </tr>
+      {/if}
+    {if {financial_trxn.pan_truncation|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Credit Card Information{/ts}
+        </th>
+      </tr>
+      <tr>
+        <td colspan="2" {$valueStyle}>
+          {financial_trxn.card_type_id:label}<br />
+          ************{financial_trxn.pan_truncation}<br />
+        </td>
+      </tr>
     {/if}
-    {if $component eq 'event'}
-    <tr>
-      <th {$headerStyle}>
-        {ts}Event Information and Location{/ts}
-      </th>
-    </tr>
-    <tr>
-      <td colspan="2" {$valueStyle}>
-         {$event.event_title}<br />
-        {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
-      </td>
-    </tr>
+    {if {event.id|boolean}}
+      <tr>
+        <th {$headerStyle}>
+          {ts}Event Information and Location{/ts}
+        </th>
+      </tr>
+      <tr>
+        <td colspan="2" {$valueStyle}>
+          {event.event_title}<br />
+          {event.start_date|crmDate}{if {event.end_date|boolean}}-{if '{event.end_date|crmDate:"%Y%m%d"}' === '{event.start_date|crmDate:"%Y%m%d"}'}{event.end_date|crmDate:"Time"}{else}{event.end_date}{/if}{/if}
+        </td>
+      </tr>
 
-    {if !empty($event.participant_role)}
-    <tr>
-      <td {$labelStyle}>
-        {ts}Participant Role{/ts}
-      </td>
-      <td {$valueStyle}>
-        {$event.participant_role}
-      </td>
-    </tr>
-    {/if}
+      {if {participant.role_id|boolean}}
+      <tr>
+        <td {$labelStyle}>
+          {ts}Participant Role{/ts}
+        </td>
+        <td {$valueStyle}>
+         {participant.role_id:label}
+        </td>
+      </tr>
+      {/if}
 
-    {if !empty($isShowLocation)}
-    <tr>
-      <td colspan="2" {$valueStyle}>
-        {$location.address.1.display|nl2br}
-      </td>
-    </tr>
-    {/if}
+      {if {event.is_show_location|boolean}}
+            <tr>
+              <td colspan="2" {$valueStyle}>
+                  {event.location}
+              </td>
+            </tr>
+          {/if}
+          {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}
+            <tr>
+              <td colspan="2" {$labelStyle}>
+                  {ts}Event Contacts:{/ts}
+              </td>
+            </tr>
 
-    {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}
-    <tr>
-      <td colspan="2" {$labelStyle}>
-        {ts}Event Contacts:{/ts}
+             {if {event.loc_block_id.phone_id.phone|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {if {event.loc_block_id.phone_id.phone_type_id|boolean}}
+                      {event.loc_block_id.phone_id.phone_type_id:label}
+                  {else}
+                      {ts}Phone{/ts}
+                  {/if}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}
+              </td>
+            </tr>
+          {/if}
+             {if {event.loc_block_id.phone_2_id.phone|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}
+                      {event.loc_block_id.phone_2_id.phone_type_id:label}
+                  {else}
+                      {ts}Phone{/ts}
+                  {/if}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}}&nbsp;{ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}
+              </td>
+            </tr>
+          {/if}
+
+              {if {event.loc_block_id.email_id.email|boolean}}
+            <tr>
+              <td {$labelStyle}>
+                  {ts}Email{/ts}
+              </td>
+              <td {$valueStyle}>
+                  {event.loc_block_id.email_id.email}
+              </td>
+            </tr>
+          {/if}
+
+              {if {event.loc_block_id.email_2_id.email|boolean}}
+                <tr>
+                  <td {$labelStyle}>
+                      {ts}Email{/ts}
+                  </td>
+                  <td {$valueStyle}>
+                      {event.loc_block_id.email_2_id.email}
+                  </td>
+                </tr>
+              {/if}
+            {/if}
+
+          {/if}
+        </table>
       </td>
     </tr>
-    {foreach from=$location.phone item=phone}
-    {if $phone.phone}
-          <tr>
-            <td {$labelStyle}>
-        {if $phone.phone_type}
-        {$phone.phone_type_display}
-        {else}
-        {ts}Phone{/ts}
-        {/if}
-            </td>
-            <td {$valueStyle}>
-        {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}
-            </td>
-          </tr>
-    {/if}
-    {/foreach}
-    {foreach from=$location.email item=eventEmail}
-    {if $eventEmail.email}
-          <tr>
-            <td {$labelStyle}>
-        {ts}Email{/ts}
-            </td>
-            <td {$valueStyle}>
-        {$eventEmail.email}
-            </td>
-          </tr>
-    {/if}
-    {/foreach}
-    {/if} {*phone block close*}
-    {/if}
   </table>
-      </td>
-    </tr>
-
-    </table>
-
  </body>
 </html>
diff --git a/civicrm/xml/templates/message_templates/payment_or_refund_notification_subject.tpl b/civicrm/xml/templates/message_templates/payment_or_refund_notification_subject.tpl
index 7fc6a6b084dd4721e255102ff6e17de10bf434d4..2e8f8f99cec6d6e011cf3854260678192539096d 100644
--- a/civicrm/xml/templates/message_templates/payment_or_refund_notification_subject.tpl
+++ b/civicrm/xml/templates/message_templates/payment_or_refund_notification_subject.tpl
@@ -1 +1 @@
-{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq 'event'} - {$event.title}{/if} - {contact.display_name}
+{if {financial_trxn.total_amount|raw} < 0}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if {event.title|boolean}} - {event.title}{/if} - {contact.display_name}
diff --git a/civicrm/xml/templates/message_templates/payment_or_refund_notification_text.tpl b/civicrm/xml/templates/message_templates/payment_or_refund_notification_text.tpl
index 96657fddbbbbed818b2cf67d41e74382079f23c3..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/civicrm/xml/templates/message_templates/payment_or_refund_notification_text.tpl
+++ b/civicrm/xml/templates/message_templates/payment_or_refund_notification_text.tpl
@@ -1,116 +0,0 @@
-{if $emailGreeting}{$emailGreeting},
-{/if}
-
-{if $isRefund}
-{ts}A refund has been issued based on changes in your registration selections.{/ts}
-{else}
-{ts}Below you will find a receipt for this payment.{/ts}
-{/if}
-{if $paymentsComplete}
-{ts}Thank you for completing this payment.{/ts}
-{/if}
-
-{if $isRefund}
-===============================================================================
-
-{ts}Refund Details{/ts}
-
-===============================================================================
-{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}
-------------------------------------------------------------------------------------
-
-{else}
-===============================================================================
-
-{ts}Payment Details{/ts}
-
-===============================================================================
-{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}
-------------------------------------------------------------------------------------
-{/if}
-{if $receive_date}
-{ts}Transaction Date{/ts}: {$receive_date|crmDate}
-{/if}
-{if !empty($trxn_id)}
-{ts}Transaction #{/ts}: {$trxn_id}
-{/if}
-{if !empty($paidBy)}
-{ts}Paid By{/ts}: {$paidBy}
-{/if}
-{if !empty($checkNumber)}
-{ts}Check Number{/ts}: {$checkNumber}
-{/if}
-
-===============================================================================
-
-{ts}Contribution Details{/ts}
-
-===============================================================================
-{if $totalAmount}
-{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}
-{/if}
-{if $totalPaid}
-{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}
-{/if}
-{if $amountOwed}
-{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}
-{/if}
-
-
-{if !empty($billingName) || !empty($address)}
-
-===============================================================================
-
-{ts}Billing Name and Address{/ts}
-
-===============================================================================
-{if !empty($billingName)}
-{$billingName}
-{/if}
-{if !empty($address)}
-{$address}
-{/if}
-{/if}
-
-{if !empty($credit_card_number)}
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===============================================================================
-
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}
-{/if}
-{if $component eq 'event'}
-===============================================================================
-
-{ts}Event Information and Location{/ts}
-
-===============================================================================
-
-{$event.event_title}
-{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
-
-{if !empty($event.participant_role)}
-{ts}Participant Role{/ts}: {$event.participant_role}
-{/if}
-
-{if !empty($isShowLocation)}
-{$location.address.1.display|strip_tags:false}
-{/if}{*End of isShowLocation condition*}
-
-{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}
-
-{ts}Event Contacts:{/ts}
-{foreach from=$location.phone item=phone}
-{if $phone.phone}
-
-{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}
-{/foreach}
-{foreach from=$location.email item=eventEmail}
-{if $eventEmail.email}
-
-{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}
-{/if}
-{/if}
diff --git a/civicrm/xml/version.xml b/civicrm/xml/version.xml
index e832cab15198e7a0510cd88a62a178de4e62a1ac..867b3f4c0a21ec3483a706503df113102b4ebf50 100644
--- a/civicrm/xml/version.xml
+++ b/civicrm/xml/version.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="iso-8859-1" ?>
 <version>
-  <version_no>5.68.1</version_no>
+  <version_no>5.69.0</version_no>
 </version>
diff --git a/includes/admin-metaboxes/civicrm.metabox.contact.add.php b/includes/admin-metaboxes/civicrm.metabox.contact.add.php
index 4bb01d48cf150a11aaebecac563ab88ae236f0d5..cf1460cd7f121b7ebb00e8b3d5314ed21bebc45e 100644
--- a/includes/admin-metaboxes/civicrm.metabox.contact.add.php
+++ b/includes/admin-metaboxes/civicrm.metabox.contact.add.php
@@ -107,7 +107,7 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
   public function enqueue_js($hook) {
 
     // Bail if not the dashboard.
-    if ('index.php' != $hook) {
+    if ('index.php' !== $hook) {
       return;
     }
 
@@ -116,7 +116,8 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
       'civicrm-contact-add-script',
       CIVICRM_PLUGIN_URL . 'assets/js/civicrm.contact.add.js',
       ['jquery'],
-      CIVICRM_PLUGIN_VERSION
+      CIVICRM_PLUGIN_VERSION,
+      FALSE
     );
 
     // Init settings and localisation array.
@@ -150,7 +151,7 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
   public function enqueue_css($hook) {
 
     // Bail if not the dashboard.
-    if ('index.php' != $hook) {
+    if ('index.php' !== $hook) {
       return;
     }
 
@@ -236,8 +237,11 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
     // Detect error message.
     $error = '';
     $error_css = ' display: none;';
-    if (!empty($_GET['quick-add-error'])) {
-      switch ($_GET['quick-add-error']) {
+    // Nonce not needed since $_GET['quick-add-error'] must match certain pre-defined slugs.
+    // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+    $quick_add_error = isset($_GET['quick-add-error']) ? sanitize_text_field(wp_unslash($_GET['quick-add-error'])) : '';
+    if (!empty($quick_add_error)) {
+      switch ($quick_add_error) {
 
         case 'civicrm':
           $error = __('Failed to init CiviCRM.', 'civicrm');
@@ -289,17 +293,21 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
    */
   public function form_submitted() {
 
-    if (!empty($_POST['civicrm_quick_add_submit'])) {
-      // Save Contact.
-      $this->form_nonce_check();
-      $this->form_save_contact();
-      $this->form_redirect();
+    // Nonce is checked in self::form_nonce_check().
+    // phpcs:ignore WordPress.Security.NonceVerification.Missing
+    if (!isset($_POST['civicrm_quick_add_submit'])) {
+      return;
     }
 
+    // Save Contact.
+    $this->form_nonce_check();
+    $this->form_save_contact();
+    $this->form_redirect();
+
   }
 
   /**
-   * Save the CiviCRM Base Page Setting.
+   * Save the CiviCRM Contact.
    *
    * @since 5.34
    */
@@ -309,25 +317,31 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
       $this->form_redirect(['quick-add-error' => 'civicrm']);
     }
 
-    // Bail if there's no valid First Name.
-    $first_name = empty($_POST['civicrm_quick_add_first_name']) ? '' : trim($_POST['civicrm_quick_add_first_name']);
+    // Nonce is checked in self::form_nonce_check().
+    // phpcs:disable WordPress.Security.NonceVerification.Recommended
+    // phpcs:disable WordPress.Security.NonceVerification.Missing
 
+    // Bail if there's no valid First Name.
+    $first_name = empty($_POST['civicrm_quick_add_first_name']) ? '' : sanitize_text_field(wp_unslash($_POST['civicrm_quick_add_first_name']));
     if ($first_name === '') {
       $this->form_redirect(['quick-add-error' => 'first-name']);
     }
 
     // Bail if there's no valid Last Name.
-    $last_name = empty($_POST['civicrm_quick_add_last_name']) ? '' : trim($_POST['civicrm_quick_add_last_name']);
+    $last_name = empty($_POST['civicrm_quick_add_last_name']) ? '' : sanitize_text_field(wp_unslash($_POST['civicrm_quick_add_last_name']));
     if ($last_name === '') {
       $this->form_redirect(['quick-add-error' => 'last-name']);
     }
 
     // Bail if there's no valid Email.
-    $email = empty($_POST['civicrm_quick_add_email']) ? '' : trim($_POST['civicrm_quick_add_email']);
+    $email = empty($_POST['civicrm_quick_add_email']) ? '' : sanitize_email(wp_unslash($_POST['civicrm_quick_add_email']));
     if (!is_email($email)) {
       $this->form_redirect(['quick-add-error' => 'email']);
     }
 
+    // phpcs:enable WordPress.Security.NonceVerification.Recommended
+    // phpcs:enable WordPress.Security.NonceVerification.Missing
+
     // Build params to create Contact.
     $params = [
       'version' => 3,
@@ -341,7 +355,7 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
     $result = civicrm_api('Contact', 'create', $params);
 
     // Bail if there's an error.
-    if (!empty($result['is_error']) && $result['is_error'] == 1) {
+    if (!empty($result['is_error']) && 1 === (int) $result['is_error']) {
       $this->form_redirect(['quick-add-error' => 'api']);
     }
 
@@ -428,7 +442,7 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
   public function ajax_contact_add() {
 
     // Default response.
-    $data = [
+    $response = [
       'notice' => __('Could not save the contact.', 'civicrm'),
       'added' => FALSE,
     ];
@@ -436,60 +450,64 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
     // Since this is an AJAX request, check security.
     $result = check_ajax_referer('civicrm_metabox_contact_add', FALSE, FALSE);
     if ($result === FALSE) {
-      $data['notice'] = __('Authentication failed.', 'civicrm');
-      wp_send_json($data);
+      $response['notice'] = __('Authentication failed.', 'civicrm');
+      wp_send_json($response);
     }
 
     // Bail if CiviCRM not inited.
     if (!$this->civi->initialize()) {
-      $data['notice'] = __('CiviCRM not loaded.', 'civicrm');
-      wp_send_json($data);
+      $response['notice'] = __('CiviCRM not loaded.', 'civicrm');
+      wp_send_json($response);
     }
 
     // Bail if user cannot create Contacts.
     if (!CRM_Core_Permission::check('add contacts')) {
-      $data['notice'] = __('Permission denied.', 'civicrm');
-      wp_send_json($data);
+      $response['notice'] = __('Permission denied.', 'civicrm');
+      wp_send_json($response);
     }
 
     // Bail if there is no valid data.
-    $data = isset($_POST['value']) ? (array) $_POST['value'] : [];
+    $data = filter_input(INPUT_POST, 'value', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
     if (empty($data)) {
-      $data['notice'] = __('No data received.', 'civicrm');
-      wp_send_json($data);
+      $response['notice'] = __('No data received.', 'civicrm');
+      wp_send_json($response);
     }
 
     // Bail if first name is not valid.
-    if (empty($data['first_name'])) {
-      $data['notice'] = __('Please enter a first name.', 'civicrm');
-      wp_send_json($data);
+    $first_name = sanitize_text_field(wp_unslash($data['first_name']));
+    if (empty($first_name)) {
+      $response['notice'] = __('Please enter a first name.', 'civicrm');
+      wp_send_json($response);
     }
 
     // Bail if last name is not valid.
-    if (empty($data['last_name'])) {
-      $data['notice'] = __('Please enter a last name.', 'civicrm');
-      wp_send_json($data);
+    $last_name = sanitize_text_field(wp_unslash($data['last_name']));
+    if (empty($last_name)) {
+      $response['notice'] = __('Please enter a last name.', 'civicrm');
+      wp_send_json($response);
     }
 
     // Bail if email is not valid.
-    if (!is_email($data['email'])) {
-      $data['notice'] = __('Please enter a valid email.', 'civicrm');
-      wp_send_json($data);
+    $email = sanitize_email(wp_unslash($data['email']));
+    if (!is_email($email)) {
+      $response['notice'] = __('Please enter a valid email.', 'civicrm');
+      wp_send_json($response);
     }
 
     // Build params to check for an existing Contact.
     $contact = [
-      'first_name' => $data['first_name'],
-      'last_name' => $data['last_name'],
-      'email' => $data['email'],
+      'first_name' => $first_name,
+      'last_name' => $last_name,
+      'email' => $email,
     ];
 
     // Bail if there is an existing Contact.
     $existing_id = civi_wp()->admin->get_by_dedupe_unsupervised($contact);
     if ($existing_id !== FALSE && $existing_id !== 0) {
       $open = '<a href="' . $this->civi->admin->get_admin_link('civicrm/contact/view', 'reset=1&cid=' . $existing_id) . '">';
-      $data['notice'] = sprintf(__('There seems to be %1$san existing Contact%2$s with these details.', 'civicrm'), $open, '</a>');
-      wp_send_json($data);
+      /* translators: 1: The opening anchor tag, 2: The closing anchor tag. */
+      $response['notice'] = sprintf(__('There seems to be %1$san existing Contact%2$s with these details.', 'civicrm'), $open, '</a>');
+      wp_send_json($response);
     }
 
     // Build params to create Contact.
@@ -502,15 +520,16 @@ class CiviCRM_For_WordPress_Admin_Metabox_Contact_Add {
     $result = civicrm_api('Contact', 'create', $params);
 
     // Bail if there's an error.
-    if (!empty($result['is_error']) && $result['is_error'] == 1) {
-      $data['notice'] = sprintf(__('Could not create Contact: %s', 'civicrm'), $result['error_message']);
-      wp_send_json($data);
+    if (!empty($result['is_error']) && 1 === (int) $result['is_error']) {
+      /* translators: %s: The error message. */
+      $response['notice'] = sprintf(__('Could not create Contact: %s', 'civicrm'), $result['error_message']);
+      wp_send_json($response);
     }
 
     // Bail if there are no results.
     if (empty($result['values'])) {
-      $data['notice'] = __('Could not find the created Contact.', 'civicrm');
-      wp_send_json($data);
+      $response['notice'] = __('Could not find the created Contact.', 'civicrm');
+      wp_send_json($response);
     }
 
     // The result set should contain only one item.
diff --git a/includes/admin-pages/civicrm.page.error.php b/includes/admin-pages/civicrm.page.error.php
index ceda45cc059cac78e6f0a7df322e785404e52f44..2ff4bc71130803c08210109670fe73e30f3526b1 100644
--- a/includes/admin-pages/civicrm.page.error.php
+++ b/includes/admin-pages/civicrm.page.error.php
@@ -180,7 +180,7 @@ class CiviCRM_For_WordPress_Admin_Page_Error {
     do_action('civicrm/page/error/add_meta_boxes', $screen->id);
 
     // Grab columns.
-    $columns = (1 == $screen->get_columns() ? '1' : '2');
+    $columns = (1 === $screen->get_columns() ? '1' : '2');
 
     // Include template file.
     include CIVICRM_PLUGIN_DIR . 'assets/templates/pages/page.error.php';
diff --git a/includes/admin-pages/civicrm.page.integration.php b/includes/admin-pages/civicrm.page.integration.php
index 5de94eaf743db58f4ea33f515be83a8df4516686..78ff99a88f216cff30179d23807b7056c76bc96b 100644
--- a/includes/admin-pages/civicrm.page.integration.php
+++ b/includes/admin-pages/civicrm.page.integration.php
@@ -306,7 +306,7 @@ class CiviCRM_For_WordPress_Admin_Page_Integration {
     // Query again if it's not found.
     if ($plugins === FALSE) {
 
-      // Build query
+      // Build query.
       $query = [
         'tag' => 'civicrm',
         'fields' => [
@@ -374,7 +374,7 @@ class CiviCRM_For_WordPress_Admin_Page_Integration {
           // We're good - grab the actual data.
           $plugins = json_decode(wp_remote_retrieve_body($response), TRUE);
 
-          // Store for a week given how infrequently plugins are added,
+          // Store for a week given how infrequently plugins are added.
           set_site_transient('civicrm_plugins_by_repo', $plugins, 1 * WEEK_IN_SECONDS);
 
         }
diff --git a/includes/admin-pages/civicrm.page.options.php b/includes/admin-pages/civicrm.page.options.php
index 84eb4cbce97c9738c042a07257002221b2038bdd..a73a56348bc815569e5e1d9ee583ca40f2284264 100644
--- a/includes/admin-pages/civicrm.page.options.php
+++ b/includes/admin-pages/civicrm.page.options.php
@@ -165,7 +165,8 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
       'civicrm-options-script',
       CIVICRM_PLUGIN_URL . 'assets/js/civicrm.options.js',
       ['jquery'],
-      CIVICRM_PLUGIN_VERSION
+      CIVICRM_PLUGIN_VERSION,
+      FALSE
     );
 
     // Init settings and localisation array.
@@ -425,7 +426,7 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
     $params = [
       'post_type' => 'page',
       'sort_column' => 'menu_order, post_title',
-      'show_option_none' => __('- Select a Base Page -'),
+      'show_option_none' => __('- Select a Base Page -', 'civicrm'),
     ];
 
     // If the Base Page is set, add its ID.
@@ -696,6 +697,10 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
    */
   public function form_submitted() {
 
+    // Nonce is irrelevant at this stage.
+    // phpcs:disable WordPress.Security.NonceVerification.Recommended
+    // phpcs:disable WordPress.Security.NonceVerification.Missing
+
     if (!empty($_POST['civicrm_basepage_post_submit'])) {
       // Save Base Page.
       $this->form_nonce_check();
@@ -727,6 +732,9 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
       $this->form_redirect();
     }
 
+    // phpcs:enable WordPress.Security.NonceVerification.Recommended
+    // phpcs:enable WordPress.Security.NonceVerification.Missing
+
   }
 
   /**
@@ -734,10 +742,13 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
    *
    * @since 5.34
    */
-  public function form_save_basepage() {
+  private function form_save_basepage() {
 
     // Bail if there's no valid Post ID.
-    $post_id = empty($_POST['page_id']) ? 0 : (int) trim($_POST['page_id']);
+    // Nonce is checked in self::form_nonce_check().
+    // phpcs:disable WordPress.Security.NonceVerification.Missing
+    $post_id = empty($_POST['page_id']) ? 0 : (int) sanitize_text_field(wp_unslash($_POST['page_id']));
+    // phpcs:enable WordPress.Security.NonceVerification.Missing
     if ($post_id === 0) {
       return;
     }
@@ -760,10 +771,13 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
    *
    * @since 5.44
    */
-  public function form_save_shortcode() {
+  private function form_save_shortcode() {
 
     // Bail if there is no valid chosen value.
-    $chosen = isset($_POST['shortcode_mode']) ? trim($_POST['shortcode_mode']) : 0;
+    // Nonce is checked in self::form_nonce_check().
+    // phpcs:disable WordPress.Security.NonceVerification.Missing
+    $chosen = isset($_POST['shortcode_mode']) ? sanitize_text_field(wp_unslash($_POST['shortcode_mode'])) : 0;
+    // phpcs:enable WordPress.Security.NonceVerification.Missing
     if ($chosen === 0 || !in_array($chosen, $this->civi->admin->get_shortcode_modes())) {
       return;
     }
@@ -778,10 +792,13 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
    *
    * @since 5.34
    */
-  public function form_save_email_sync() {
+  private function form_save_email_sync() {
 
     // Bail if there is no valid chosen value.
-    $chosen = isset($_POST['sync_email']) ? trim($_POST['sync_email']) : 0;
+    // Nonce is checked in self::form_nonce_check().
+    // phpcs:disable WordPress.Security.NonceVerification.Missing
+    $chosen = isset($_POST['sync_email']) ? sanitize_text_field(wp_unslash($_POST['sync_email'])) : 0;
+    // phpcs:enable WordPress.Security.NonceVerification.Missing
     if ($chosen === 0) {
       return;
     }
@@ -854,7 +871,7 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
     }
 
     // Bail if there's no valid Post ID.
-    $post_id = empty($_POST['value']) ? 0 : (int) trim($_POST['value']);
+    $post_id = empty($_POST['value']) ? 0 : (int) sanitize_text_field(wp_unslash($_POST['value']));
     if ($post_id === 0) {
       $data['notice'] = __('No Page ID detected. Unable to save the WordPress Base Page.', 'civicrm');
       wp_send_json($data);
@@ -931,7 +948,7 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
     }
 
     // Bail if there is no valid chosen value.
-    $chosen = isset($_POST['value']) ? trim($_POST['value']) : 0;
+    $chosen = isset($_POST['value']) ? sanitize_text_field(wp_unslash($_POST['value'])) : 0;
     if ($chosen === 0 || !in_array($chosen, $this->civi->admin->get_shortcode_modes())) {
       $data['notice'] = __('Unrecognised parameter. Could not save the selected setting.', 'civicrm');
       wp_send_json($data);
@@ -975,7 +992,7 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
     }
 
     // Bail if there is no valid chosen value.
-    $chosen = isset($_POST['value']) ? trim($_POST['value']) : 0;
+    $chosen = isset($_POST['value']) ? sanitize_text_field(wp_unslash($_POST['value'])) : 0;
     if ($chosen === 0) {
       $data['notice'] = __('Unrecognised parameter. Could not save the selected setting.', 'civicrm');
       wp_send_json($data);
@@ -1031,7 +1048,7 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
     }
 
     // Bail if there is no valid chosen value.
-    $chosen = isset($_POST['value']) ? trim($_POST['value']) : 0;
+    $chosen = isset($_POST['value']) ? sanitize_text_field(wp_unslash($_POST['value'])) : 0;
     if ($chosen === 0 || !in_array($chosen, ['enable', 'disable'])) {
       $data['notice'] = __('Unrecognised parameter. Could not refresh the CiviCRM permissions.', 'civicrm');
       wp_send_json($data);
@@ -1092,8 +1109,7 @@ class CiviCRM_For_WordPress_Admin_Page_Options {
     }
 
     // Bail if there is no valid value.
-    $chosen = isset($_POST['value']) ? (int) trim($_POST['value']) : 0;
-
+    $chosen = isset($_POST['value']) ? (int) sanitize_text_field(wp_unslash($_POST['value'])) : 0;
     if ($chosen !== 1) {
       $data['notice'] = __('Unrecognised parameter. Could not clear the CiviCRM caches.', 'civicrm');
       wp_send_json($data);
diff --git a/includes/civicrm.admin.php b/includes/civicrm.admin.php
index 582ad17acff822faacf6fc135c1aed1ea7c43193..548cd76029729e68ce910efa7ba44978c2141d67 100644
--- a/includes/civicrm.admin.php
+++ b/includes/civicrm.admin.php
@@ -76,6 +76,13 @@ class CiviCRM_For_WordPress_Admin {
    */
   public $metabox_quick_add;
 
+  /**
+   * @var string
+   * Reference to the CiviCRM menu item's hook_suffix, in the WordPress admin menu.
+   * @access public
+   */
+  public $menu_page;
+
   /**
    * Instance constructor.
    *
@@ -201,11 +208,12 @@ class CiviCRM_For_WordPress_Admin {
     }
 
     // Bail if we are on our installer page.
-    if ($screen->id == 'toplevel_page_civicrm-install') {
+    if ($screen->id === 'toplevel_page_civicrm-install') {
       return;
     }
 
     $message = sprintf(
+      /* translators: 1: Opening strong tag, 2: Closing strong tag, 3: Opening anchor tag, 4: Closing anchor tag. */
       __('%1$sCiviCRM is almost ready.%2$s You must %3$sconfigure CiviCRM%4$s for it to work.', 'civicrm'),
       '<strong>',
       '</strong>',
@@ -227,6 +235,7 @@ class CiviCRM_For_WordPress_Admin {
   public function run_installer() {
 
     // Set install type.
+    // phpcs:ignore WordPress.WP.CapitalPDangit.Misspelled
     $_GET['civicrm_install_type'] = 'wordpress';
 
     $civicrmCore = CIVICRM_PLUGIN_DIR . 'civicrm';
@@ -293,11 +302,12 @@ class CiviCRM_For_WordPress_Admin {
     }
 
     // Bail if we are on our error page.
-    if ($screen->id == 'toplevel_page_CiviCRM') {
+    if ($screen->id === 'toplevel_page_CiviCRM') {
       return;
     }
 
     $message = sprintf(
+      /* translators: 1: Opening strong tag, 2: Closing strong tag, 3: Opening anchor tag, 4: Closing anchor tag. */
       __('%1$sCiviCRM needs your attention.%2$s Please visit the %3$sInformation Page%4$s for details.', 'civicrm'),
       '<strong>',
       '</strong>',
@@ -400,7 +410,7 @@ class CiviCRM_For_WordPress_Admin {
      * including "civicrm.settings.php" will throw a fatal error if $civicrm_root
      * is wrong.
      */
-    if ($error == FALSE) {
+    if ($error === FALSE) {
       $this->error_flag = 'settings-include';
       $initialized = FALSE;
       return FALSE;
@@ -424,7 +434,7 @@ class CiviCRM_For_WordPress_Admin {
     $error = include_once 'CRM/Core/Config.php';
 
     // Bail if the config file returns something other than int(1).
-    if ($error == FALSE) {
+    if ($error === FALSE) {
       $this->error_flag = 'config-include';
       $initialized = FALSE;
       return FALSE;
@@ -505,7 +515,7 @@ class CiviCRM_For_WordPress_Admin {
     }
 
     // Bail if this is not CiviCRM admin.
-    if ($pagenow != 'admin.php' || FALSE === strpos($current_screen['query'], 'page=CiviCRM')) {
+    if ($pagenow !== 'admin.php' || FALSE === strpos($current_screen['query'], 'page=CiviCRM')) {
       return $settings;
     }
 
@@ -537,7 +547,7 @@ class CiviCRM_For_WordPress_Admin {
 
     // Delete the option if conditions are met.
     if ($dao instanceof CRM_Core_DAO_Setting) {
-      if (isset($dao->name) && $dao->name == 'wpBasePage') {
+      if (isset($dao->name) && $dao->name === 'wpBasePage') {
         delete_option('civicrm_rules_flushed');
       }
     }
@@ -551,6 +561,11 @@ class CiviCRM_For_WordPress_Admin {
    *
    * @since 5.28
    * @since 5.33 Moved to this class.
+   *
+   * @param string $html The auto-update markup.
+   * @param string $plugin_file The path to the plugin.
+   * @param array $plugin_data An array of plugin data.
+   * @return string $html The modified auto-update markup.
    */
   public function auto_update_prevent($html, $plugin_file, $plugin_data) {
 
@@ -595,6 +610,7 @@ class CiviCRM_For_WordPress_Admin {
    */
   public function add_menu_items() {
 
+    // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents
     $civilogo = file_get_contents(CIVICRM_PLUGIN_DIR . 'assets/images/civilogo.svg.b64');
 
     global $wp_version;
@@ -706,7 +722,7 @@ class CiviCRM_For_WordPress_Admin {
 
     // This option is created on activation.
     $existing_option = FALSE;
-    if ('fjwlws' != get_option('civicrm_activation_in_progress', 'fjwlws')) {
+    if ('fjwlws' !== get_option('civicrm_activation_in_progress', 'fjwlws')) {
       $existing_option = TRUE;
     }
 
diff --git a/includes/civicrm.basepage.php b/includes/civicrm.basepage.php
index 0e5eabbd9269fb16d0997dddabda2758d453b379..27aae4524680aba405dd6a68efbdb22c14ae10f8 100644
--- a/includes/civicrm.basepage.php
+++ b/includes/civicrm.basepage.php
@@ -557,7 +557,7 @@ class CiviCRM_For_WordPress_Basepage {
     }
 
     // Construct title depending on separator location.
-    if ($separator_location == 'right') {
+    if ($separator_location === 'right') {
       $title = $this->basepage_title . " $separator " . get_bloginfo('name', 'display');
     }
     else {
@@ -636,21 +636,26 @@ class CiviCRM_For_WordPress_Basepage {
     // Access CiviCRM config object.
     $config = CRM_Core_Config::singleton();
 
+    // None of the following needs a nonce check.
+    // phpcs:disable WordPress.Security.NonceVerification.Recommended
+
     // Retain old logic when not using clean URLs.
     if (!$config->cleanURL) {
 
+      $civiwp = empty($_GET['civiwp']) ? '' : sanitize_text_field(wp_unslash($_GET['civiwp']));
+      $q = empty($_GET['q']) ? '' : sanitize_text_field(wp_unslash($_GET['q']));
+
       /*
        * It would be better to specify which params are okay to accept as the
        * canonical URLs, but this will work for the time being.
        */
-      if (empty($_GET['civiwp'])
-        || empty($_GET['q'])
-        || 'CiviCRM' !== $_GET['civiwp']) {
+      if (empty($civiwp)
+        || 'CiviCRM' !== $civiwp
+        || empty($q)) {
         return $canonical;
       }
-      $path = $_GET['q'];
-      unset($_GET['q']);
-      unset($_GET['civiwp']);
+      $path = $q;
+      unset($q, $_GET['q'], $civiwp, $_GET['civiwp']);
       $query = http_build_query($_GET);
 
     }
@@ -662,6 +667,8 @@ class CiviCRM_For_WordPress_Basepage {
 
     }
 
+    // phpcs:enable WordPress.Security.NonceVerification.Recommended
+
     /*
      * We should, however, build the URL the way that CiviCRM expects it to be
      * (rather than through some other funny Base Page).
@@ -687,12 +694,12 @@ class CiviCRM_For_WordPress_Basepage {
     $template_name = str_replace(trailingslashit(get_stylesheet_directory()), '', $template);
 
     // If the above fails, try parent theme.
-    if ($template_name == $template) {
+    if ($template_name === $template) {
       $template_name = str_replace(trailingslashit(get_template_directory()), '', $template);
     }
 
     // Bail in the unlikely event that the template name has not been found.
-    if ($template_name == $template) {
+    if ($template_name === $template) {
       return $template;
     }
 
@@ -713,7 +720,7 @@ class CiviCRM_For_WordPress_Basepage {
     $page_template = locate_template([$basepage_template]);
 
     // If not homepage and template is found.
-    if ('' != $page_template && !is_front_page()) {
+    if (!is_front_page() && !empty($page_template)) {
       return $page_template;
     }
 
@@ -740,7 +747,7 @@ class CiviCRM_For_WordPress_Basepage {
     $home_template = locate_template([$home_template_name]);
 
     // Use it if found.
-    if ('' != $home_template) {
+    if (!empty($home_template)) {
       return $home_template;
     }
 
@@ -863,6 +870,94 @@ class CiviCRM_For_WordPress_Basepage {
 
   }
 
+  /**
+   * Gets a URL that points to the CiviCRM Base Page.
+   *
+   * There can be situations where `CRM_Utils_System::url` does not return
+   * a link to the Base Page, e.g. in a page template where the content
+   * contains a Shortcode. This utility method will always return a URL
+   * that points to the CiviCRM Base Page.
+   *
+   * @see https://lab.civicrm.org/dev/wordpress/-/issues/144
+   *
+   * @since 5.69
+   *
+   * @param string $path The path being linked to, such as "civicrm/add".
+   * @param array|string $query A query string to append to the link, or an array of key-value pairs.
+   * @param bool $absolute Whether to force the output to be an absolute link.
+   * @param string $fragment A fragment identifier (named anchor) to append to the link.
+   * @param bool $htmlize Whether to encode special html characters such as &.
+   * @return string $link An HTML string containing a link to the given path.
+   */
+  public function url(
+    $path = '',
+    $query = '',
+    $absolute = TRUE,
+    $fragment = NULL,
+    $htmlize = TRUE
+  ) {
+
+    // Return early if no CiviCRM.
+    $link = '';
+    if (!$this->civi->initialize()) {
+      return $link;
+    }
+
+    // Add modifying callbacks prior to multi-lingual compat.
+    add_filter('civicrm/basepage/match', [$this, 'ensure_match'], 9);
+    add_filter('civicrm/core/url/base', [$this, 'ensure_url'], 9, 2);
+
+    // Pass to CiviCRM to construct front-end URL.
+    $link = CRM_Utils_System::url(
+      $path,
+      $query,
+      TRUE,
+      $fragment,
+      $htmlize,
+      TRUE,
+      FALSE
+    );
+
+    // Remove callbacks.
+    remove_filter('civicrm/basepage/match', [$this, 'ensure_match'], 9);
+    remove_filter('civicrm/core/url/base', [$this, 'ensure_url'], 9);
+
+    return $link;
+
+  }
+
+  /**
+   * Callback to ensure CiviCRM returns a Base Page URL.
+   *
+   * @since 5.69
+   *
+   * @return bool
+   */
+  public function ensure_match() {
+    return TRUE;
+  }
+
+  /**
+   * Callback to ensure CiviCRM builds a Base Page URL.
+   *
+   * @since 5.69
+   *
+   * @param str $url The "base" URL as built by CiviCRM.
+   * @param bool $admin_request True if building an admin URL, false otherwise.
+   * @return str $url The Base Page URL.
+   */
+  public function ensure_url($url, $admin_request) {
+
+    // Skip when not defined.
+    if (empty($url) || $admin_request) {
+      return $url;
+    }
+
+    // Return the Base Page URL.
+    return $this->url_get();
+
+  }
+
   /**
    * Gets the current Base Page ID.
    *
diff --git a/includes/civicrm.functions.php b/includes/civicrm.functions.php
index 1d9a62610f0a664b8012ec3512f6eff513174775..afd144a17afd0268b7c46650dce01a800e38523d 100644
--- a/includes/civicrm.functions.php
+++ b/includes/civicrm.functions.php
@@ -21,6 +21,36 @@ if (!defined('ABSPATH')) {
   exit;
 }
 
+/**
+ * Gets a URL that points to the CiviCRM Base Page.
+ *
+ * @see CiviCRM_For_WordPress_Basepage::url
+ *
+ * @since 5.69
+ *
+ * @param string $path The path being linked to, such as "civicrm/add".
+ * @param array|string $query A query string to append to the link, or an array of key-value pairs.
+ * @param bool $absolute Whether to force the output to be an absolute link.
+ * @param string $fragment A fragment identifier (named anchor) to append to the link.
+ * @param bool $htmlize Whether to encode special html characters such as &.
+ * @return string $link An HTML string containing a link to the given path.
+ */
+function civicrm_basepage_url(
+  $path = '',
+  $query = '',
+  $absolute = TRUE,
+  $fragment = NULL,
+  $htmlize = TRUE
+) {
+  return civi_wp()->basepage->url(
+    $path,
+    $query,
+    $absolute,
+    $fragment,
+    $htmlize
+  );
+}
+
 /**
  * Add CiviCRM access capabilities to WordPress roles.
  *
@@ -168,7 +198,7 @@ function civicrm_get_ctype($default = NULL) {
  *
  * @since 4.3
  *
- * @return string $wp_set_breadCrumb The breadcrumb markup.
+ * @return array $wp_set_breadCrumb The breadcrumb markup.
  */
 function wp_get_breadcrumb() {
   global $wp_set_breadCrumb;
@@ -183,8 +213,8 @@ function wp_get_breadcrumb() {
  *
  * @since 4.3
  *
- * @param string $breadCrumb The desired breadcrumb markup.
- * @return string $wp_set_breadCrumb The breadcrumb markup.
+ * @param array $breadCrumb The desired breadcrumb markup.
+ * @return array $wp_set_breadCrumb The breadcrumb markup.
  */
 function wp_set_breadcrumb($breadCrumb) {
   global $wp_set_breadCrumb;
diff --git a/includes/civicrm.shortcodes.modal.php b/includes/civicrm.shortcodes.modal.php
index 0d7f765d7b0c886dca76ee5bf15bd1de2a05a9e9..4deb557368beaf7ef8601717f7444726e9eb715c 100644
--- a/includes/civicrm.shortcodes.modal.php
+++ b/includes/civicrm.shortcodes.modal.php
@@ -86,6 +86,7 @@ class CiviCRM_For_WordPress_Shortcodes_Modal {
     // Add button to selected WordPress Post Types, if allowed.
     if ($this->post_type_has_button()) {
 
+      // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents
       $civilogo = file_get_contents(CIVICRM_PLUGIN_DIR . 'assets/images/civilogo.svg.b64');
 
       $url = admin_url('admin.php?page=CiviCRM&q=civicrm/shortcode&reset=1');
@@ -122,7 +123,7 @@ class CiviCRM_For_WordPress_Shortcodes_Modal {
     // Get screen object.
     $screen = get_current_screen();
 
-    // Bail if no post type (e.g. Ninja Forms)
+    // Bail if no post type - e.g. Ninja Forms.
     if (!isset($screen->post_type)) {
       return;
     }
diff --git a/includes/civicrm.shortcodes.php b/includes/civicrm.shortcodes.php
index 6c047473641ac9f9523be010f71678e6dddc25d3..eb2b00fa651ff63513f821abf1c6749abf8bbf0b 100644
--- a/includes/civicrm.shortcodes.php
+++ b/includes/civicrm.shortcodes.php
@@ -224,7 +224,7 @@ class CiviCRM_For_WordPress_Shortcodes {
           $atts = $this->get_atts($shortcode);
 
           // Test for hijacking.
-          if (isset($atts['hijack']) && $atts['hijack'] == '1') {
+          if (isset($atts['hijack']) && 1 === (int) $atts['hijack']) {
             add_filter('civicrm_context', [$this, 'get_context']);
           }
 
@@ -232,7 +232,7 @@ class CiviCRM_For_WordPress_Shortcodes {
           $this->shortcode_markup[$post->ID][$key] = do_shortcode($shortcode);
 
           // Test for hijacking.
-          if (isset($atts['hijack']) && $atts['hijack'] == '1') {
+          if (isset($atts['hijack']) && 1 === (int) $atts['hijack']) {
 
             // Ditch the filter.
             remove_filter('civicrm_context', [$this, 'get_context']);
@@ -328,6 +328,8 @@ class CiviCRM_For_WordPress_Shortcodes {
   public function render_single($atts) {
 
     // Do not parse Shortcodes in REST context for PUT, POST and DELETE methods.
+    // Nonce is not necessary here.
+    // phpcs:ignore WordPress.Security.NonceVerification.Missing
     if (defined('REST_REQUEST') && REST_REQUEST && (isset($_PUT) || isset($_POST) || isset($_DELETE))) {
       // Return the original Shortcode.
       $shortcode = '[civicrm';
@@ -488,18 +490,18 @@ class CiviCRM_For_WordPress_Shortcodes {
     $config = CRM_Core_Config::singleton();
 
     // Do we have multiple Shortcodes?
-    if ($multiple != 0) {
+    if ($multiple !== 0) {
 
       $links = [];
       foreach ($args as $var => $arg) {
-        if (!empty($arg) && $var != 'q') {
+        if (!empty($arg) && $var !== 'q') {
           $links[] = $var . '=' . $arg;
         }
       }
       $query = implode('&', $links);
 
-      // $absolute, $frontend, $forceBackend
-      $base_url = $this->civi->get_base_url(TRUE, FALSE, FALSE);
+      // Params are: $absolute, $frontend, $forceBackend.
+      $base_url = CRM_Utils_System::getBaseUrl(TRUE, FALSE, FALSE);
 
       // Init query parts.
       $queryParts = [];
@@ -541,7 +543,7 @@ class CiviCRM_For_WordPress_Shortcodes {
     // Test for hijacking.
     if (!$multiple) {
 
-      if (isset($atts['hijack']) && $atts['hijack'] == '1') {
+      if (isset($atts['hijack']) && 1 === (int) $atts['hijack']) {
 
         // Add title to array.
         $this->post_titles[$post_id] = $data['title'];
@@ -570,33 +572,30 @@ class CiviCRM_For_WordPress_Shortcodes {
       $description = $data['text'];
     }
 
-    // Provide an enticing link.
-    $more_link = sprintf(
-      '<a href="%s">%s</a>',
-      $link,
-
-      /**
-       * Filter the CiviCRM Shortcode more link text.
-       *
-       * @since 4.6
-       *
-       * @param str The existing Shortcode more link text.
-       */
-      apply_filters('civicrm_shortcode_more_link', __('Find out more...', 'civicrm'))
+    /**
+     * Filter the CiviCRM Shortcode more link text.
+     *
+     * @since 4.6
+     *
+     * @param str The existing Shortcode more link text.
+     */
+    $link_text = apply_filters('civicrm_shortcode_more_link', __('Find out more...', 'civicrm'));
 
-    );
+    // Provide an enticing link.
+    $more_link = sprintf('<a href="%s">%s</a>', $link, $link_text);
 
     // Assume CiviCRM footer is not enabled.
     $empowered_enabled = FALSE;
     $footer = '';
 
     // Test config object for setting.
-    if ($config->empoweredBy == 1) {
+    if (1 === (int) $config->empoweredBy) {
 
       // Footer enabled - define it.
       $civi = __('CiviCRM.org - Growing and Sustaining Relationships', 'civicrm');
       $logo = '<div class="empowered-by-logo"><span>' . __('CiviCRM', 'civicrm') . '</span></div>';
       $civi_link = '<a href="https://civicrm.org/" title="' . $civi . '" target="_blank" class="empowered-by-link">' . $logo . '</a>';
+      /* translators: %s: The link to the CiviCRM website. */
       $empowered = sprintf(__('Empowered by %s', 'civicrm'), $civi_link);
 
       /**
@@ -650,7 +649,8 @@ class CiviCRM_For_WordPress_Shortcodes {
    *
    * @since 4.6
    *
-   * @return string The overridden content.
+   * @param string $content The content.
+   * @return string $content The overridden content.
    */
   public function get_content($content) {
 
@@ -726,7 +726,7 @@ class CiviCRM_For_WordPress_Shortcodes {
       return $civicrm_wp_title;
     }
 
-    // Fallback
+    // Fallback.
     return $post_title;
 
   }
@@ -784,7 +784,7 @@ class CiviCRM_For_WordPress_Shortcodes {
    *
    * @since 4.6
    *
-   * @param $shortcode The Shortcode to parse.
+   * @param string $shortcode The Shortcode to parse.
    * @return array $shortcode_atts Array of Shortcode attributes.
    */
   private function get_atts($shortcode) {
@@ -822,37 +822,33 @@ class CiviCRM_For_WordPress_Shortcodes {
     ];
 
     // Parse Shortcode attributes.
-    $shortcode_atts = shortcode_atts($defaults, $atts, 'civicrm');
-    extract($shortcode_atts);
+    $attributes = shortcode_atts($defaults, $atts, 'civicrm');
 
     $args = [
       'reset' => 1,
-      'id'    => $id,
-      'force' => $force,
+      'id'    => $attributes['id'],
+      'force' => $attributes['force'],
     ];
 
     // Construct args for known components.
-    switch ($component) {
+    switch ($attributes['component']) {
 
       case 'contribution':
 
-        if ($mode == 'preview' || $mode == 'test') {
+        if ($attributes['mode'] === 'preview' || $attributes['mode'] === 'test') {
           $args['action'] = 'preview';
         }
 
-        switch ($action) {
-          case 'transact':
-            $args['q'] = 'civicrm/contribute/transact';
-            break;
-
+        switch ($attributes['action']) {
           case 'setup':
             $args['q'] = 'civicrm/contribute/campaign';
             $args['action'] = 'add';
             $args['component'] = 'contribute';
             unset($args['id']);
-            $args['pageId'] = $id;
+            $args['pageId'] = $attributes['id'];
             break;
 
+          case 'transact':
           default:
             $args['q'] = 'civicrm/contribute/transact';
             break;
@@ -861,11 +857,11 @@ class CiviCRM_For_WordPress_Shortcodes {
 
       case 'pcp':
 
-        if ($mode == 'preview' || $mode == 'test') {
+        if ($attributes['mode'] === 'preview' || $attributes['mode'] === 'test') {
           $args['action'] = 'preview';
         }
 
-        switch ($action) {
+        switch ($attributes['action']) {
           case 'transact':
             $args['q'] = 'civicrm/contribute/transact';
             $args['pcpId'] = $args['id'];
@@ -884,10 +880,10 @@ class CiviCRM_For_WordPress_Shortcodes {
 
       case 'event':
 
-        switch ($action) {
+        switch ($attributes['action']) {
           case 'register':
             $args['q'] = 'civicrm/event/register';
-            if ($mode == 'preview' || $mode == 'test') {
+            if ($attributes['mode'] === 'preview' || $attributes['mode'] === 'test') {
               $args['action'] = 'preview';
             }
             break;
@@ -909,23 +905,23 @@ class CiviCRM_For_WordPress_Shortcodes {
 
       case 'profile':
 
-        if ($mode == 'edit') {
+        if ($attributes['mode'] === 'edit') {
           $args['q'] = 'civicrm/profile/edit';
         }
-        elseif ($mode == 'view') {
+        elseif ($attributes['mode'] === 'view') {
           $args['q'] = 'civicrm/profile/view';
         }
-        elseif ($mode == 'search') {
+        elseif ($attributes['mode'] === 'search') {
           $args['q'] = 'civicrm/profile';
         }
-        elseif ($mode == 'map') {
+        elseif ($attributes['mode'] === 'map') {
           $args['q'] = 'civicrm/profile/map';
           $args['map'] = 1;
         }
         else {
           $args['q'] = 'civicrm/profile/create';
         }
-        $args['gid'] = $gid;
+        $args['gid'] = $attributes['gid'];
         break;
 
       case 'petition':
@@ -947,9 +943,9 @@ class CiviCRM_For_WordPress_Shortcodes {
      * @since 4.7.28
      *
      * @param array $args Existing Shortcode arguments.
-     * @param array $shortcode_atts Shortcode attributes.
+     * @param array $attributes Shortcode attributes.
      */
-    return apply_filters('civicrm_shortcode_preprocess_atts', $args, $shortcode_atts);
+    return apply_filters('civicrm_shortcode_preprocess_atts', $args, $attributes);
 
   }
 
@@ -1021,6 +1017,7 @@ class CiviCRM_For_WordPress_Shortcodes {
         switch ($atts['action']) {
           case 'register':
             $data['title'] = sprintf(
+              /* translators: %s: The event title. */
               __('Register for %s', 'civicrm'),
               $civi_entity['title']
             );
diff --git a/includes/civicrm.users.php b/includes/civicrm.users.php
index cd08845c98450b856c408430609443afba7cb17c..8baa1d775834ab6da63e10b46a8ac58314cb53f4 100644
--- a/includes/civicrm.users.php
+++ b/includes/civicrm.users.php
@@ -118,7 +118,7 @@ class CiviCRM_For_WordPress_Users {
    */
   public function check_permission($args) {
 
-    if ($args[0] != 'civicrm') {
+    if ($args[0] !== 'civicrm') {
       return FALSE;
     }
 
@@ -246,7 +246,7 @@ class CiviCRM_For_WordPress_Users {
    *
    * @since 4.6
    *
-   * @param $user_id The numerical ID of the WordPress user.
+   * @param int $user_id The numerical ID of the WordPress user.
    */
   public function delete_user_ufmatch($user_id) {
 
@@ -367,27 +367,32 @@ class CiviCRM_For_WordPress_Users {
    */
   public function get_civicrm_contact_type($default = NULL) {
 
+    // Nonce verification not necessary here.
+    // phpcs:disable WordPress.Security.NonceVerification.Recommended
+
     /*
      * Here we are creating a new Contact.
      * Get the Contact Type from the POST variables if any.
      */
     if (isset($_REQUEST['ctype'])) {
-      $ctype = $_REQUEST['ctype'];
+      $ctype = sanitize_text_field(wp_unslash($_REQUEST['ctype']));
     }
     elseif (
       isset($_REQUEST['edit']) &&
       isset($_REQUEST['edit']['ctype'])
     ) {
-      $ctype = $_REQUEST['edit']['ctype'];
+      $ctype = sanitize_text_field(wp_unslash($_REQUEST['edit']['ctype']));
     }
     else {
       $ctype = $default;
     }
 
+    // phpcs:enable WordPress.Security.NonceVerification.Recommended
+
     if (
-      $ctype != 'Individual' &&
-      $ctype != 'Organization' &&
-      $ctype != 'Household'
+      $ctype !== 'Individual' &&
+      $ctype !== 'Organization' &&
+      $ctype !== 'Household'
     ) {
       $ctype = $default;
     }
diff --git a/phpcs.xml b/phpcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4bb40b455b1ca096fe89eea0a6f7858c6b089118
--- /dev/null
+++ b/phpcs.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0"?>
+<ruleset name="CiviCRM.WordPress">
+
+	<!-- Add source codes in the report. -->
+	<arg value="s" />
+	<arg name="colors" />
+
+	<!-- Check all PHP files in directory tree by default. -->
+	<arg name="extensions" value="php" />
+	<file>.</file>
+
+	<rule ref="WordPress">
+
+		<!-- Allow slash-delimited hooks. -->
+		<exclude name="WordPress.NamingConventions.ValidHookName.UseUnderscores" />
+
+		<!-- Ignore docblock formatting. -->
+		<exclude name="Squiz.Commenting.FunctionComment.SpacingAfterParamType" />
+
+		<!-- Allow CiviCRM control structures. -->
+		<exclude name="WordPress.WhiteSpace.ControlStructureSpacing.BlankLineAfterEnd" />
+
+		<!-- Allow CiviCRM file headers. -->
+		<exclude name="Squiz.Commenting.FileComment.MissingPackageTag" />
+		<exclude name="Squiz.Commenting.FileComment.WrongStyle" />
+
+		<!-- Ignore arrow or equals alignment. -->
+		<exclude name="WordPress.Arrays.MultipleStatementAlignment.DoubleArrowNotAligned" />
+		<exclude name="Generic.Formatting.MultipleStatementAlignment.NotSameWarning" />
+
+		<!-- Ignore file-naming conventions. -->
+		<exclude name="WordPress.Files.FileName.InvalidClassFileName" />
+		<exclude name="WordPress.Files.FileName.NotHyphenatedLowercase" />
+
+		<!-- Allow unreachable code in disabled Integration Page class for now. -->
+		<exclude name="Squiz.PHP.NonExecutableCode.Unreachable" />
+
+		<!-- Ignore any other rules that conflict with CiviCRM and civilint. -->
+		<exclude name="Generic.Commenting.DocComment.MissingShort" />
+		<exclude name="Generic.Commenting.DocComment.SpacingAfter" />
+		<exclude name="Generic.Metrics.NestingLevel.MaxExceeded" />
+		<exclude name="Generic.PHP.LowerCaseConstant.Found" />
+		<exclude name="Generic.WhiteSpace.ArbitraryParenthesesSpacing.SpaceAfterOpen" />
+		<exclude name="Generic.WhiteSpace.ArbitraryParenthesesSpacing.SpaceBeforeClose" />
+		<exclude name="Generic.WhiteSpace.DisallowSpaceIndent.SpacesUsed" />
+		<exclude name="Generic.WhiteSpace.ScopeIndent.Incorrect" />
+		<exclude name="Generic.WhiteSpace.ScopeIndent.IncorrectExact" />
+		<exclude name="Squiz.Commenting.BlockComment.HasEmptyLineBefore" />
+		<exclude name="Squiz.ControlStructures.ControlSignature.SpaceAfterCloseBrace" />
+		<exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingAfterOpen" />
+		<exclude name="Squiz.PHP.CommentedOutCode.Found" />
+		<exclude name="Squiz.PHP.DisallowMultipleAssignments.Found" />
+		<exclude name="Squiz.PHP.EmbeddedPhp.ContentBeforeOpen" />
+		<exclude name="Squiz.PHP.EmbeddedPhp.ContentAfterOpen" />
+		<exclude name="Squiz.PHP.EmbeddedPhp.ContentBeforeEnd" />
+		<exclude name="PSR2.ControlStructures.SwitchDeclaration.BodyOnNextLineCASE" />
+		<exclude name="PSR2.ControlStructures.SwitchDeclaration.BreakIndent" />
+		<exclude name="PEAR.Functions.FunctionCallSignature.CloseBracketLine" />
+		<exclude name="PEAR.Functions.FunctionCallSignature.ContentAfterOpenBracket" />
+		<exclude name="PEAR.Functions.FunctionCallSignature.Indent" />
+		<exclude name="PEAR.Functions.FunctionCallSignature.MultipleArguments" />
+		<exclude name="PEAR.Functions.FunctionCallSignature.OpeningIndent" />
+		<exclude name="PEAR.Functions.FunctionCallSignature.SpaceBeforeCloseBracket" />
+		<exclude name="PEAR.Functions.FunctionCallSignature.SpaceAfterOpenBracket" />
+		<exclude name="WordPress.Arrays.ArrayKeySpacingRestrictions.NoSpacesAroundArrayKeys" />
+		<exclude name="WordPress.Arrays.ArrayDeclarationSpacing.NoSpaceAfterArrayOpener" />
+		<exclude name="WordPress.Arrays.ArrayDeclarationSpacing.NoSpaceBeforeArrayCloser" />
+		<exclude name="WordPress.Arrays.ArrayIndentation.ItemNotAligned" />
+		<exclude name="WordPress.Arrays.ArrayDeclarationSpacing.ArrayItemNoNewLine" />
+		<exclude name="WordPress.Arrays.ArrayIndentation.MultiLineArrayItemNotAligned" />
+		<exclude name="WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase" />
+		<exclude name="WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase" />
+		<exclude name="WordPress.PHP.StrictInArray.MissingTrueStrict" />
+		<exclude name="WordPress.PHP.YodaConditions.NotYoda" />
+		<exclude name="WordPress.Security.EscapeOutput.OutputNotEscaped" />
+		<exclude name="WordPress.WhiteSpace.ControlStructureSpacing.NoSpaceBeforeCloseParenthesis" />
+		<exclude name="WordPress.WhiteSpace.ControlStructureSpacing.NoSpaceAfterOpenParenthesis" />
+		<exclude name="WordPress.WhiteSpace.OperatorSpacing.NoSpaceBefore" />
+		<exclude name="WordPress.WhiteSpace.OperatorSpacing.NoSpaceAfter" />
+		<exclude name="WordPress.WhiteSpace.PrecisionAlignment.Found" />
+
+	</rule>
+
+	<rule ref="WordPress.WP.I18n">
+		<properties>
+			<property name="text_domain" type="array" value="civicrm" />
+		</properties>
+	</rule>
+
+	<!-- Allow short array syntax. -->
+	<rule ref="Generic.Arrays.DisallowShortArraySyntax.Found">
+		<severity>0</severity>
+	</rule>
+	<rule ref="Generic.Arrays.DisallowLongArraySyntax.Found" />
+
+	<!-- Nesting levels. -->
+	<rule ref="Generic.Metrics.NestingLevel">
+		<properties>
+			<property name="absoluteNestingLevel" value="5" />
+		</properties>
+	</rule>
+
+	<!-- Ignore the CiviCRM Core subdirectory when present. -->
+	<exclude-pattern>civicrm/civicrm/*</exclude-pattern>
+
+	<!-- Ignore the following subdirectories for now. -->
+	<exclude-pattern>wp-cli/*</exclude-pattern>
+	<exclude-pattern>wp-rest/*</exclude-pattern>
+	<exclude-pattern>tests/*</exclude-pattern>
+
+</ruleset>
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index 64151559fca6ef462a452407a448a6e77a42505d..363f5bc3f1825595d29364ec2adfb756a02d9749 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -1,24 +1,24 @@
-<phpunit backupGlobals="false"
+<?xml version="1.0"?>
+<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         backupGlobals="false"
          backupStaticAttributes="false"
          colors="true"
          convertErrorsToExceptions="true"
          convertNoticesToExceptions="true"
          convertWarningsToExceptions="true"
+         convertDeprecationsToExceptions="true"
          processIsolation="false"
          stopOnFailure="false"
+         stderr="true"
          beStrictAboutTestsThatDoNotTestAnything="false"
          bootstrap="tests/phpunit/bootstrap.php"
          cacheResult="false"
->
+         xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
+
   <testsuites>
     <testsuite name="CiviCRM-WordPress Test Suite">
       <directory>./tests/phpunit</directory>
     </testsuite>
   </testsuites>
-
-  <filter>
-    <whitelist>
-      <directory suffix=".php">./CiviWP</directory>
-    </whitelist>
-  </filter>
 </phpunit>
+
diff --git a/readme.txt b/readme.txt
index 69e93b328c2adab43a58ae3166f5549ffce352cb..fc6a304e0ede6035712368e231690ffe19683412 100644
--- a/readme.txt
+++ b/readme.txt
@@ -2,8 +2,8 @@
 Contributors: needle
 Tags: civicrm, crm
 Requires at least: 4.9
-Tested up to: 6.2
-Stable tag: 5.63
+Tested up to: 6.4
+Stable tag: 5.69
 License: AGPL3
 License URI: http://www.gnu.org/licenses/agpl-3.0.html
 
diff --git a/wp-cli/README.md b/wp-cli/README.md
index 65be93e4739ef69788c0c7a7ae442f7eac1dc2ec..35525dc1775dbacd7f5f5e67b6247ced7a4386eb 100644
--- a/wp-cli/README.md
+++ b/wp-cli/README.md
@@ -1,88 +1,103 @@
-# WP-CLI integration for CiviCRM
+# Command Line Tools for CiviCRM
 
-#### wp civicrm api
+Manage CiviCRM through the command line.
 
-Command for accessing the CiviCRM API. Syntax is identical to `drush cvap`.
+The latest iteration of the Command Line Tools for CiviCRM is built in a multi-class structure that WP-CLI expects and which enables proper documentation of the `wp civicrm` command and all its sub-commands. The following details what has changed, what has stayed the same, and what is new.
 
-#### wp civicrm cache-clear
+### Dropped Commands
 
-Command for accessing clearing cache. Equivilant of running `civicrm/admin/setting/updateConfigBackend&reset=1`.
+* `wp civicrm rest`: Use [CiviCRM's WordPress REST API](https://github.com/civicrm/civicrm-wordpress/tree/master/wp-rest) or `wp civicrm api` instead.
 
-#### wp civicrm enable-debug
+### Unchanged Commands
 
-Command for to turn debug on.
+* `wp civicrm api`: For the time-being this command is an alias of `wp civicrm api3`. It may become an alias for `wp civicrm api4` when that command is added, so it is definitely better to use `wp civicrm api3` directly to avoid problems in the future. There will, of course, be a deprecation notice issued well before the switch, so don't worry!
+* `wp civicrm pipe`: This command will remain in the top-level namespace.
 
-#### wp civicrm disable-debug
+### New Commands
 
-Command for to turn debug off.
+There is a new command `wp civicrm core <command>` which (sort of) mirrors the functionality in `wp core <command>`. It holds the commands that apply to CiviCRM as a whole.
 
-#### wp civicrm member-records
+| Command | Description | Old Command |
+| --- | --- | --- |
+| `wp civicrm core activate` | Activates the CiviCRM plugin and loads the database. | New |
+| `wp civicrm core backup` | Back up the CiviCRM plugin, CiviCRM files and database. | New |
+| `wp civicrm core check-update` | Checks for CiviCRM updates via Version Check API. | New |
+| `wp civicrm core check-version` | Checks for a CiviCRM version or matching localization archive. | New |
+| `wp civicrm core download` | Downloads core CiviCRM files. | New |
+| `wp civicrm core install` | Installs the CiviCRM plugin. | `wp civicrm install` but without activation |
+| `wp civicrm core is-installed` | Checks if CiviCRM is installed. | Not implemented yet |
+| `wp civicrm core restore` | Restore the CiviCRM plugin, CiviCRM files and database from a backup. | Requires a backup made with `wp civicrm core backup` |
+| `wp civicrm core update` | Updates CiviCRM to a newer version. | `wp civicrm upgrade` |
+| `wp civicrm core update-cfg` | Reset paths to correct config settings. | `wp civicrm update-cfg` |
+| `wp civicrm core update-db` | Runs the CiviCRM database update procedure. | `wp civicrm upgrade-db` |
+| `wp civicrm core verify-checksums` | Verifies CiviCRM files against checksums via `googleapis`. | Not implemented yet |
+| `wp civicrm core version` | Displays the CiviCRM version. | New |
 
-Run the CiviMember UpdateMembershipRecord cron (civicrm member-records).
+Use `wp help civicrm <command>` or `wp help civicrm core <command>` for full details and examples.
 
-#### wp civicrm process-mail-queue
+There is a new command `wp civicrm db <command>` which (sort of) mirrors the functionality in `wp db <command>`. It holds the commands that apply to interaction with the CiviCRM database.
 
-Process pending CiviMail mailing jobs.
+| Command | Description | Old Command |
+| --- | --- | --- |
+| `wp civicrm db clear` | Drop all CiviCRM tables, views, functions and stored procedures from the database. | New |
+| `wp civicrm db cli` | Quickly enter the MySQL command line. | `wp civicrm sql-cli` |
+| `wp civicrm db config` | Show the CiviCRM database connection details. | `wp civicrm sql-conf` |
+| `wp civicrm db connect` | Get a string which connects to the CiviCRM database. | `wp civicrm sql-connect` |
+| `wp civicrm db drop` | Drop the CiviCRM database when it is not shared with WordPress. | New |
+| `wp civicrm db drop-tables` | Drop the CiviCRM tables from the database. | New |
+| `wp civicrm db dump` | Dump the whole CiviCRM database and print to STDOUT or save to a file. | `wp civicrm sql-dump` |
+| `wp civicrm db export` | Export the CiviCRM database and print to STDOUT or save to a file. | New |
+| `wp civicrm db functions` | Get the list of CiviCRM functions in the database. | New |
+| `wp civicrm db import` | Loads a whole CiviCRM database. | New |
+| `wp civicrm db is-shared` | Check if CiviCRM shares a database with WordPress. | New |
+| `wp civicrm db procedures` | Get the list of CiviCRM procedures in the database. | New |
+| `wp civicrm db query` | Perform a query on the CiviCRM database. | `wp civicrm sql-query` |
+| `wp civicrm db tables` | Gets a set of CiviCRM tables in the database. | New |
 
-Example: `wp civicrm process-mail-queue -u admin`
+Use `wp help civicrm db <command>` for full details and examples.
 
-#### wp civicrm rest
+### Deprecated Commands
 
-Rest interface for accessing CiviCRM APIs. It can return `xml` or `json` formatted data.
+All previous commands still exist for the time being. However, because they were attached to the top-level `wp civicrm` namespace, it seems sensible to deprecate them in favour of better-namespaced new commands. The following table shows you replacement commands:
 
-#### wp civicrm restore
+| Old Command | New Command |
+| --- | --- |
+| `wp civicrm cache-clear` | `wp civicrm cache flush` |
+| `wp civicrm disable-debug` | `wp civicrm debug disable` |
+| `wp civicrm enable-debug` | `wp civicrm debug enable` |
+| `wp civicrm install` | See [Composite Commands](#composite-commands) below |
+| `wp civicrm member-records` | `wp civicrm job member-records` or `wp civicrm job membership` |
+| `wp civicrm process-mail-queue` | `wp civicrm job process-mail-queue` or `wp civicrm job mailing` |
+| `wp civicrm restore` | Only works with backups made by `wp civicrm upgrade` |
+| `wp civicrm sql-conf` | `wp civicrm db config` or `wp civicrm db conf` |
+| `wp civicrm sql-connect` | `wp civicrm db connect` |
+| `wp civicrm sql-cli` | `wp civicrm db cli` |
+| `wp civicrm sql-dump` | `wp civicrm db dump` |
+| `wp civicrm sql-query` | `wp civicrm db query` |
+| `wp civicrm update-cfg` | `wp civicrm core update-cfg` |
+| `wp civicrm upgrade` | See [Composite Commands](#composite-commands) below |
+| `wp civicrm upgrade-db` | `wp civicrm core update-db` |
 
-Restore CiviCRM codebase and database back from the specified backup directory.
+As above, use `wp help civicrm <command>` for full details and examples.
 
-#### wp civicrm sql-conf
+### Composite Commands
 
-Show CiviCRM database connection details.
+There are two special cases in the set of old commands:
 
-#### wp civicrm sql-connect
+* `wp civicrm install`
+* `wp civicrm upgrade`
 
-A string which connects to the CiviCRM database.
+These are both composite commands.
 
-#### wp civicrm sql-cli
+The `wp civicrm install` command calls the following sequence:
 
-Quickly enter the `mysql` command line.
+1. `wp civicrm core install`
+2. `wp civicrm core activate`
 
-#### wp civicrm sql-dump
+The `wp civicrm upgrade` command calls the following sequence:
 
-Prints the whole CiviCRM database to `STDOUT` or save to a file.
+1. A custom backup procedure. Better to call `wp civicrm core backup` instead, but `wp civicrm restore` requires the custom procedure.
+2. `wp civicrm core update`
+3. `wp civicrm core update-db`
 
-#### wp civicrm sql-query
-
-Usage: `wp civicrm sql-query <query> <options>...`
-
-`<query>` is a SQL statement which can alternatively be passed via `STDIN`. Any additional arguments are passed to the `mysql` command directly.
-
-#### wp civicrm update-cfg
-
-Update `config_backend` to correct config settings, especially when the CiviCRM site has been cloned or migrated.
-
-#### wp civicrm upgrade
-
-Take backups, replace CiviCRM codebase with new specified tarfile and upgrade database by executing the CiviCRM upgrade process - `civicrm/upgrade?reset=1`. Use `wp civicrm restore` to revert to previous state in case anything goes wrong.
-
-#### wp civicrm upgrade-db
-
-Run `civicrm/upgrade?reset=1` just as a web browser would.
-
-#### wp civicrm install
-
-Command for to install CiviCRM. The install command requires that you have downloaded a tarball or zip file first.
-
-Options:
-
-```
---dbhost            MySQL host for your WordPress/CiviCRM database. Defaults to localhost.
---dbname            MySQL database name of your WordPress/CiviCRM database.
---dbpass            MySQL password for your WordPress/CiviCRM database.
---dbuser            MySQL username for your WordPress/CiviCRM database.
---lang              Default language to use for installation.
---langtarfile       Path to your l10n tar.gz file.
---site_url          Base Url for your WordPress/CiviCRM website without http (e.g. mysite.com)
---ssl               Using ssl for your WordPress/CiviCRM website if set to on (e.g. --ssl=on)
---tarfile           Path to your CiviCRM tar.gz file.
---zipfile           Path to your CiviCRM zip file.
-```
+It is preferable to call the new commands individually in the same sequence - but there may also be a case for a set of composite commands like these for commonly used sequences.
diff --git a/wp-cli/civicrm.php b/wp-cli/civicrm.php
deleted file mode 100644
index c5e5e82a286f44a9fe744bc1d3e89f6b11d76044..0000000000000000000000000000000000000000
--- a/wp-cli/civicrm.php
+++ /dev/null
@@ -1,1454 +0,0 @@
-<?php
-/*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
- */
-
-/**
- *
- * @package CRM
- * @copyright CiviCRM LLC https://civicrm.org/licensing
- *
- */
-
-if (!defined('CIVICRM_WPCLI_LOADED')) {
-  define('CIVICRM_WPCLI_LOADED', 1);
-
-  /**
-   * WP-CLI port of drush-civicrm integration.
-   *
-   * @see https://github.com/andy-walker/wp-cli-civicrm
-   *
-   * @since 4.5
-   */
-  class CiviCRM_Command extends WP_CLI_Command {
-
-    private $args;
-    private $assoc_args;
-
-    /**
-     * WP-CLI integration with CiviCRM.
-     *
-     * wp civicrm api
-     * ==============
-     * Command for accessing the CiviCRM API. Syntax is identical to `drush cvap`.
-     *
-     * wp civicrm cache-clear
-     * ======================
-     * Command for accessing clearing cache.  Equivilant of running `civicrm/admin/setting/updateConfigBackend&reset=1`.
-     *
-     * wp civicrm enable-debug
-     * =======================
-     * Command for to turn debug on.
-     *
-     * wp civicrm disable-debug
-     * ========================
-     * Command for to turn debug off.
-     *
-     * wp civicrm member-records
-     * =========================
-     * Run the CiviMember UpdateMembershipRecord cron (civicrm member-records).
-     *
-     * wp civicrm pipe <connection-flags>
-     * ==================
-     * Start a Civi::pipe session (JSON-RPC 2.0)
-     * See https://docs.civicrm.org/dev/en/latest/framework/pipe#flags
-     *
-     * wp civicrm process-mail-queue
-     * =============================
-     * Process pending CiviMail mailing jobs.
-     * Example:
-     * wp civicrm process-mail-queue -u admin
-     *
-     * wp civicrm rest
-     * ===============
-     * Rest interface for accessing CiviCRM APIs. It can return xml or json formatted data.
-     *
-     * wp civicrm restore
-     * ==================
-     * Restore CiviCRM codebase and database back from the specified backup directory.
-     *
-     * wp civicrm sql-conf
-     * ===================
-     * Show CiviCRM database connection details.
-     *
-     * wp civicrm sql-connect
-     * ======================
-     * A string which connects to the CiviCRM database.
-     *
-     * wp civicrm sql-cli
-     * ==================
-     * Quickly enter the mysql command line.
-     *
-     * wp civicrm sql-dump
-     * ===================
-     * Prints the whole CiviCRM database to STDOUT or save to a file.
-     *
-     * wp civicrm sql-query
-     * ====================
-     * Usage: wp civicrm sql-query <query> <options>...
-     * <query> is a SQL statement, which can alternatively be passed via STDIN. Any additional arguments are passed to the mysql command directly.
-     *
-     * wp civicrm update-cfg
-     * =====================
-     * Update config_backend to correct config settings, especially when the CiviCRM site has been cloned or migrated.
-     *
-     * wp civicrm upgrade
-     * ==================
-     * Take backups, replace CiviCRM codebase with new specified tarfile and upgrade database by executing the CiviCRM upgrade process - civicrm/upgrade?reset=1. Use civicrm-restore to revert to previous state in case anything goes wrong.
-     *
-     * wp civicrm upgrade-db
-     * =====================
-     * Run civicrm/upgrade?reset=1 just as a web browser would.
-     *
-     * wp civicrm install
-     * ==================
-     * Command for to install CiviCRM.  The install command requires that you have downloaded a tarball or zip file first.
-     * Options:
-     * --dbhost            MySQL host for your WordPress/CiviCRM database. Defaults to localhost.
-     * --dbname            MySQL database name of your WordPress/CiviCRM database.
-     * --dbpass            MySQL password for your WordPress/CiviCRM database.
-     * --dbuser            MySQL username for your WordPress/CiviCRM database.
-     * --lang              Default language to use for installation.
-     * --langtarfile       Path to your l10n tar.gz file.
-     * --site_url          Base Url for your WordPress/CiviCRM website without http (e.g. mysite.com)
-     * --ssl               Using ssl for your WordPress/CiviCRM website if set to on (e.g. --ssl=on)
-     * --tarfile           Path to your CiviCRM tar.gz file.
-     * --zipfile           Path to your CiviCRM zip file.
-     *
-     */
-    public function __invoke($args, $assoc_args) {
-
-      $this->args       = $args;
-      $this->assoc_args = $assoc_args;
-
-      // Define command router.
-      $command_router = [
-        'api'                => 'api',
-        'cache-clear'        => 'cacheClear',
-        'enable-debug'       => 'enableDebug',
-        'disable-debug'      => 'disableDebug',
-        'install'            => 'install',
-        'member-records'     => 'memberRecords',
-        'pipe'               => 'pipe',
-        'process-mail-queue' => 'processMailQueue',
-        'rest'               => 'rest',
-        'restore'            => 'restore',
-        'sql-cli'            => 'sqlCLI',
-        'sql-conf'           => 'sqlConf',
-        'sql-connect'        => 'sqlConnect',
-        'sql-dump'           => 'sqlDump',
-        'sql-query'          => 'sqlQuery',
-        'update-cfg'         => 'updateConfig',
-        'upgrade'            => 'upgrade',
-        'upgrade-db'         => 'upgradeDB',
-      ];
-
-      // Get the command.
-      $command = array_shift($args);
-
-      // Allow help to pass.
-      if ('help' === $command) {
-        return;
-      }
-
-      // Check for existence of CiviCRM (except for command 'install').
-      if (!function_exists('civicrm_initialize') && 'install' != $command) {
-        return WP_CLI::error('Unable to find CiviCRM install.');
-      }
-
-      // Check existence of router entry / handler method.
-      if (!isset($command_router[$command]) || !method_exists($this, $command_router[$command])) {
-        return WP_CLI::error(sprintf('Unrecognized command: %s', $command));
-      }
-
-      // Run command.
-      return $this->{$command_router[$command]}();
-
-    }
-
-    /**
-     * Implementation of command 'api'.
-     *
-     * @since 4.5
-     */
-    private function api() {
-
-      $defaults = ['version' => 3];
-
-      array_shift($this->args);
-      list($entity, $action) = explode('.', $this->args[0]);
-      array_shift($this->args);
-
-      //  Parse params.
-      $format = $this->getOption('in', 'args');
-      switch ($format) {
-
-        //  Input params supplied via args.
-        case 'args':
-          $params = $defaults;
-          foreach ($this->args as $arg) {
-            preg_match('/^([^=]+)=(.*)$/', $arg, $matches);
-            $params[$matches[1]] = $matches[2];
-          }
-          break;
-
-        //  Input params supplied via json.
-        case 'json':
-          $json   = stream_get_contents(STDIN);
-          $params = (empty($json) ? $defaults : array_merge($defaults, json_decode($json, TRUE)));
-          break;
-
-        default:
-          WP_CLI::error(sprintf('Unknown format: %s', $format));
-          break;
-
-      }
-
-      civicrm_initialize();
-
-      /*
-       * CRM-12523
-       * WordPress has it's own timezone calculations. CiviCRM relies on the PHP
-       * default timezone which WordPress overrides with UTC in wp-settings.php
-       */
-      $original_timezone = date_default_timezone_get();
-      $wp_site_timezone = $this->getOption('timezone', $this->getTimeZoneString());
-      if ($wp_site_timezone) {
-        date_default_timezone_set($wp_site_timezone);
-        CRM_Core_Config::singleton()->userSystem->setMySQLTimeZone();
-      }
-
-      $result = civicrm_api($entity, $action, $params);
-
-      // Restore original timezone.
-      if ($original_timezone) {
-        date_default_timezone_set($original_timezone);
-      }
-
-      switch ($this->getOption('out', 'pretty')) {
-
-        // Pretty-print output (default).
-        case 'pretty':
-          WP_CLI::line(print_r($result, TRUE));
-          break;
-
-        // Display output as json.
-        case 'json':
-          WP_CLI::line(json_encode($result));
-          break;
-
-        default:
-          return WP_CLI::error(sprintf('Unknown format: %s', $format));
-
-      }
-
-    }
-
-    /**
-     * Returns the timezone string for the current WordPress site.
-     *
-     * If a timezone identifier is used, return that.
-     * If an offset is used, try to build a suitable timezone.
-     * If all else fails, uses UTC.
-     *
-     * @since 5.64
-     *
-     * @return string $tzstring The site timezone string.
-     */
-    private function getTimeZoneString() {
-
-      // Return the timezone string when set.
-      $tzstring = get_option('timezone_string');
-      if (!empty($tzstring)) {
-        return $tzstring;
-      }
-
-      /*
-       * Try and build a deprecated (but currently valid) timezone string
-       * from the GMT offset value.
-       *
-       * Note: manual offsets should be discouraged. WordPress works more
-       * reliably when setting an actual timezone (e.g. "Europe/London")
-       * because of support for Daylight Saving changes.
-       *
-       * Note: the IANA timezone database that provides PHP's timezone
-       * support uses (reversed) POSIX style signs.
-       *
-       * @see https://www.php.net/manual/en/timezones.others.php
-       */
-      $offset = get_option('gmt_offset');
-      if (0 != $offset && floor($offset) == $offset) {
-        $offset_string = $offset > 0 ? "-$offset" : '+' . abs((int) $offset);
-        $tzstring = 'Etc/GMT' . $offset_string;
-      }
-
-      // Default to "UTC" if the timezone string is still empty.
-      if (empty($tzstring)) {
-        $tzstring = 'UTC';
-      }
-
-      return $tzstring;
-
-    }
-
-    /**
-     * Implementation of command 'cache-clear'.
-     *
-     * @since 4.5
-     */
-    private function cacheClear() {
-
-      civicrm_initialize();
-      require_once 'CRM/Core/Config.php';
-      $config = CRM_Core_Config::singleton();
-
-      // Clear db caching.
-      $config->clearDBCache();
-
-      // Also cleanup the templates_c directory.
-      $config->cleanup(1, FALSE);
-
-      // Also cleanup the session object.
-      $session = CRM_Core_Session::singleton();
-      $session->reset(1);
-
-    }
-
-    /**
-     * Implementation of command 'enable-debug'.
-     *
-     * @since 4.5
-     */
-    private function enableDebug() {
-      civicrm_initialize();
-      Civi::settings()->add([
-        'debug_enabled' => 1,
-        'backtrace' => 1,
-      ]);
-      WP_CLI::success('Debug setting enabled.');
-    }
-
-    /**
-     * Implementation of command 'disable-debug'.
-     *
-     * @since 4.7
-     */
-    private function disableDebug() {
-      civicrm_initialize();
-      Civi::settings()->add([
-        'debug_enabled' => 0,
-        'backtrace' => 0,
-      ]);
-      WP_CLI::success('Debug setting disabled.');
-    }
-
-    /**
-     * Implementation of command 'install'.
-     *
-     * @since 4.5
-     */
-    private function install() {
-      if ('on' === $this->getOption('ssl', FALSE)) {
-        $_SERVER['HTTPS'] = 'on';
-      }
-
-      // Identify the destination.
-
-      if ($plugin_path = $this->getOption('destination', FALSE)) {
-        $plugin_path = ABSPATH . $plugin_path;
-      }
-      else {
-        $plugin_path = WP_PLUGIN_DIR . '/civicrm';
-      }
-
-      global $crmPath;
-      $crmPath = "$plugin_path/civicrm";
-      $crm_files_present = is_dir($crmPath);
-
-      // Validate install parameters.
-
-      if (!$dbuser = $this->getOption('dbuser', FALSE)) {
-        return WP_CLI::error('CiviCRM database username not specified.');
-      }
-      if (!$dbpass = $this->getOption('dbpass', FALSE)) {
-        return WP_CLI::error('CiviCRM database password not specified.');
-      }
-      if (!$dbhost = $this->getOption('dbhost', FALSE)) {
-        return WP_CLI::error('CiviCRM database host not specified.');
-      }
-      if (!$dbname = $this->getOption('dbname', FALSE)) {
-        return WP_CLI::error('CiviCRM database name not specified.');
-      }
-      if ($lang = $this->getOption('lang', FALSE)) {
-        $moPath = "$crmPath/l10n/$lang/LC_MESSAGES/civicrm.mo";
-
-        if (!($langtarfile = $this->getOption('langtarfile', FALSE)) && !file_exists($moPath)) {
-          return WP_CLI::error("Failed to find data for language ($lang). Please download valid language data with --langtarfile=<path/to/tarfile>.");
-        }
-      }
-
-      // Extract the archive.
-      if ($this->getOption('tarfile', FALSE)) {
-        // Should probably never get to here as Wordpress Civi comes in a zip file.
-        // Check anyway just in case that ever changes.
-        if ($crm_files_present) {
-          return WP_CLI::error('Existing CiviCRM found. No action taken.');
-        }
-
-        if (!$this->untar(dirname($plugin_path))) {
-          return WP_CLI::error('Error extracting tarfile.');
-        }
-      }
-      elseif ($this->getOption('zipfile', FALSE)) {
-        if ($crm_files_present) {
-          return WP_CLI::error('Existing CiviCRM found. No action taken.');
-        }
-
-        if (!$this->unzip(dirname($plugin_path))) {
-          return WP_CLI::error('Error extracting zipfile.');
-        }
-      }
-      elseif ($crm_files_present) {
-        // Site is already extracted - which is how we're running this script.
-        // We just need to run the installer.
-      }
-      else {
-        return WP_CLI::error('No zipfile specified. Use "--zipfile=path/to/zipfile" or extract file ahead of time.');
-      }
-
-      // Include CiviCRM classloader - so that we can run `Civi\Setup`.
-      $classLoaderPath = "$crmPath/CRM/Core/ClassLoader.php";
-
-      if (!file_exists($classLoaderPath)) {
-        return WP_CLI::error('Archive could not be unpacked or CiviCRM installer helper file is missing.');
-      }
-
-      if ($crm_files_present) {
-        // We were using a directory that was already there.
-        WP_CLI::success('Using installer files found on the site.');
-      }
-      else {
-        // We must've just unpacked the archive because it wasn't there
-        // before.
-        WP_CLI::success('Archive unpacked.');
-      }
-
-      if ($this->getOption('langtarfile', FALSE)) {
-        if (!$this->untar($plugin_path, 'langtarfile')) {
-          return WP_CLI::error('Error downloading langtarfile');
-        }
-      }
-
-      if (!empty($lang) && !file_exists($moPath)) {
-        return WP_CLI::error("Failed to find data for language ($lang). Please download valid language data with \"--langtarfile=<path/to/tarfile>\".");
-      }
-
-      // Initialize civicrm-setup
-      @WP_CLI::run_command(['plugin', 'activate', 'civicrm'], []);
-      require_once $classLoaderPath;
-      CRM_Core_ClassLoader::singleton()->register();
-      \Civi\Setup::assertProtocolCompatibility(1.0);
-      \Civi\Setup::init(['cms' => 'WordPress', 'srcPath' => $crmPath]);
-      $setup = \Civi\Setup::instance();
-      $setup->getModel()->db = ['server' => $dbhost, 'username' => $dbuser, 'password' => $dbpass, 'database' => $dbname];
-      $setup->getModel()->lang = (empty($lang) ? 'en_US' : $lang);
-      if ($base_url = $this->getOption('site_url', FALSE)) {
-        $ssl = $this->getOption('ssl', FALSE);
-        $protocol = ('on' == $ssl ? 'https' : 'http');
-        $base_url = $protocol . '://' . $base_url;
-        if (substr($base_url, -1) != '/') {
-          $base_url .= '/';
-        }
-        $setup->getModel()->cmsBaseUrl = $base_url;
-      }
-
-      // Check system requirements
-      $reqs = $setup->checkRequirements();
-      array_map('WP_CLI::print_value', $this->formatRequirements(array_merge($reqs->getErrors(), $reqs->getWarnings())));
-      if ($reqs->getErrors()) {
-        WP_CLI::error(sprintf("Cannot install. Please check requirements and resolve errors.", count($reqs->getErrors()), count($reqs->getWarnings())));
-      }
-
-      $installed = $setup->checkInstalled();
-      if ($installed->isSettingInstalled() || $installed->isDatabaseInstalled()) {
-        WP_CLI::error("Cannot install. CiviCRM has already been installed.");
-      }
-
-      // Go time
-      $setup->installFiles();
-      WP_CLI::success('CiviCRM data files initialized successfully.');
-      $setup->installDatabase();
-      WP_CLI::success('CiviCRM database loaded successfully.');
-      WP_CLI::success('CiviCRM installed.');
-    }
-
-    private function formatRequirements(array $messages): array {
-      $formatted = [];
-      foreach ($messages as $message) {
-        $formatted[] = sprintf("[%s] %s: %s", $message['severity'], $message['section'], $message['message']);
-      }
-      return array_unique($formatted);
-    }
-
-    /**
-     * Implementation of command 'member-records'.
-     *
-     * @since 4.5
-     */
-    private function memberRecords() {
-
-      civicrm_initialize();
-
-      if (substr(CRM_Utils_System::version(), 0, 3) >= '4.3') {
-
-        $job = new CRM_Core_JobManager();
-        $job->executeJobByAction('job', 'process_membership');
-        WP_CLI::success('Executed "process_membership" job.');
-
-      }
-      else {
-
-        $_REQUEST['name'] = $this->getOption('civicrm_cron_username', NULL);
-        $_REQUEST['pass'] = $this->getOption('civicrm_cron_password', NULL);
-        $_REQUEST['key']  = $this->getOption('civicrm_sitekey', NULL);
-
-        global $argv;
-        $argv = [
-          0 => 'drush',
-          1 => '-u' . $_REQUEST['name'],
-          2 => '-p' . $_REQUEST['pass'],
-          3 => '-s' . $this->getOption('uri', FALSE),
-        ];
-
-        # if (!defined('CIVICRM_CONFDIR')) {
-        # $plugins_dir = plugin_dir_path(__FILE__);
-        #     define('CIVICRM_CONFDIR', $plugins_dir);
-        # }
-
-        include 'bin/UpdateMembershipRecord.php';
-
-      }
-
-    }
-
-    private function pipe() {
-      civicrm_initialize();
-      if (!is_callable(['Civi', 'pipe'])) {
-        return WP_CLI::error('This version of CiviCRM does not include Civi::pipe() support.');
-      }
-
-      if (!empty($this->args[1])) {
-        Civi::pipe($this->args[1]);
-      }
-      else {
-        Civi::pipe();
-      }
-    }
-
-    /**
-     * Implementation of command 'process-mail-queue'.
-     *
-     * @since 4.5
-     */
-    private function processMailQueue() {
-
-      civicrm_initialize();
-
-      if (substr(CRM_Utils_System::version(), 0, 3) >= '4.3') {
-
-        $job = new CRM_Core_JobManager();
-        $job->executeJobByAction('job', 'process_mailing');
-        WP_CLI::success("Executed 'process_mailing' job.");
-
-      }
-      else {
-
-        $result = civicrm_api('Mailing', 'Process', ['version' => 3]);
-        if ($result['is_error']) {
-          WP_CLI::error($result['error_message']);
-        }
-      }
-
-    }
-
-    /**
-     * Implementation of command 'rest'.
-     *
-     * @since 4.5
-     */
-    private function rest() {
-
-      civicrm_initialize();
-
-      if (!$query = $this->getOption('query', FALSE)) {
-        return WP_CLI::error('query not specified.');
-      }
-
-      $query     = explode('&', $query);
-      $_GET['q'] = array_shift($query);
-
-      foreach ($query as $key_val) {
-        list($key, $val) = explode('=', $key_val);
-        $_REQUEST[$key]  = $val;
-        $_GET[$key]      = $val;
-      }
-
-      require_once 'CRM/Utils/REST.php';
-      $rest = new CRM_Utils_REST();
-
-      require_once 'CRM/Core/Config.php';
-      $config = CRM_Core_Config::singleton();
-
-      global $civicrm_root;
-      // Adding dummy script, since based on this api file path is computed.
-      $_SERVER['SCRIPT_FILENAME'] = "$civicrm_root/extern/rest.php";
-
-      if (isset($_GET['json']) && $_GET['json']) {
-        header('Content-Type: text/javascript');
-      }
-      else {
-        header('Content-Type: text/xml');
-      }
-
-      echo $rest->run($config);
-
-    }
-
-    /**
-     * Implementation of command 'restore'.
-     *
-     * @since 4.5
-     */
-    private function restore() {
-
-      // Validate.
-      $restore_dir = $this->getOption('restore-dir', FALSE);
-      $restore_dir = rtrim($restore_dir, '/');
-      if (!$restore_dir) {
-        return WP_CLI::error('"restore-dir" not specified.');
-      }
-
-      $sql_file = $restore_dir . '/civicrm.sql';
-      if (!file_exists($sql_file)) {
-        return WP_CLI::error('Could not locate "civicrm.sql" file in the restore directory.');
-      }
-
-      $code_dir = $restore_dir . '/civicrm';
-      if (!is_dir($code_dir)) {
-        return WP_CLI::error('Could not locate the CiviCRM directory inside "restore-dir".');
-      }
-      elseif (!file_exists("$code_dir/civicrm/civicrm-version.txt") && !file_exists("$code_dir/civicrm/civicrm-version.php")) {
-        return WP_CLI::error('The CiviCRM directory inside "restore-dir" does not seem to be a valid CiviCRM codebase.');
-      }
-
-      // Prepare to restore.
-      $date = date('YmdHis');
-
-      civicrm_initialize();
-      global $civicrm_root;
-
-      $civicrm_root_base = explode('/', $civicrm_root);
-      array_pop($civicrm_root_base);
-      $civicrm_root_base = implode('/', $civicrm_root_base) . '/';
-
-      $basepath = explode('/', $civicrm_root);
-
-      if (!end($basepath)) {
-        array_pop($basepath);
-      }
-
-      array_pop($basepath);
-      $project_path = implode('/', $basepath) . '/';
-
-      $wp_root = ABSPATH;
-      $restore_backup_dir = $this->getOption('backup-dir', $wp_root . '/../backup');
-      $restore_backup_dir = rtrim($restore_backup_dir, '/');
-
-      // Get confirmation from user.
-
-      if (!defined('CIVICRM_DSN')) {
-        WP_CLI::error('CIVICRM_DSN is not defined.');
-      }
-
-      $db_spec = DB::parseDSN(CIVICRM_DSN);
-      WP_CLI::line('');
-      WP_CLI::line('Process involves:');
-      WP_CLI::line(sprintf("1. Restoring '\$restore-dir/civicrm' directory to '%s'.", $civicrm_root_base));
-      WP_CLI::line(sprintf("2. Dropping and creating '%s' database.", $db_spec['database']));
-      WP_CLI::line("3. Loading '\$restore-dir/civicrm.sql' file into the database.");
-      WP_CLI::line('');
-      WP_CLI::line(sprintf("Note: Before restoring, a backup will be taken in '%s' directory.", "$restore_backup_dir/plugins/restore"));
-      WP_CLI::line('');
-
-      WP_CLI::confirm('Do you really want to continue?');
-
-      $restore_backup_dir .= '/plugins/restore/' . $date;
-
-      if (!mkdir($restore_backup_dir, 0755, TRUE)) {
-        return WP_CLI::error(sprintf('Failed to create directory: %s', $restore_backup_dir));
-      }
-
-      // 1. Backup and restore codebase.
-      WP_CLI::line('Restoring CiviCRM codebase...');
-      if (is_dir($project_path) && !rename($project_path, $restore_backup_dir . '/civicrm')) {
-        return WP_CLI::error(sprintf("Failed to take backup for '%s' directory", $project_path));
-      }
-
-      if (!rename($code_dir, $project_path)) {
-        return WP_CLI::error(sprintf("Failed to restore CiviCRM directory '%s' to '%s'", $code_dir, $project_path));
-      }
-
-      WP_CLI::success('Codebase restored.');
-
-      // 2. Backup, drop and create database.
-      WP_CLI::run_command(
-        ['civicrm', 'sql-dump'],
-        ['result-file' => $restore_backup_dir . '/civicrm.sql']
-      );
-
-      WP_CLI::success('Database backed up.');
-
-      // Prepare a mysql command-line string for issuing db drop/create commands.
-      $command = sprintf(
-        'mysql --user=%s --password=%s',
-        $db_spec['username'],
-        $db_spec['password']
-      );
-
-      if (isset($db_spec['hostspec'])) {
-        $command .= ' --host=' . $db_spec['hostspec'];
-      }
-
-      if (isset($dsn['port']) && !mpty($dsn['port'])) {
-        $command .= ' --port=' . $db_spec['port'];
-      }
-
-      // Attempt to drop old database.
-      if (system($command . sprintf(' --execute="DROP DATABASE IF EXISTS %s"', $db_spec['database']))) {
-        return WP_CLI::error(sprintf('Could not drop database: %s', $db_spec['database']));
-      }
-
-      WP_CLI::success('Database dropped.');
-
-      // Attempt to create new database.
-      if (system($command . sprintf(' --execute="CREATE DATABASE %s"', $db_spec['database']))) {
-        WP_CLI::error(sprintf('Could not create new database: %s', $db_spec['database']));
-      }
-
-      WP_CLI::success('Database created.');
-
-      // 3. Restore database.
-      WP_CLI::line('Loading "civicrm.sql" file from "restore-dir"...');
-      system($command . ' ' . $db_spec['database'] . ' < ' . $sql_file);
-
-      WP_CLI::success('Database restored.');
-
-      WP_CLI::line('Clearing caches...');
-      WP_CLI::run_command(['civicrm', 'cache-clear']);
-
-      WP_CLI::success('Restore process completed.');
-
-    }
-
-    /**
-     * Implementation of command 'sql-conf'.
-     *
-     * @since 4.5
-     */
-    private function sqlConf() {
-
-      civicrm_initialize();
-      if (!defined('CIVICRM_DSN')) {
-        WP_CLI::error('CIVICRM_DSN is not defined.');
-      }
-
-      WP_CLI::line(print_r(DB::parseDSN(CIVICRM_DSN), TRUE));
-
-    }
-
-    /**
-     * Implementation of command 'sql-connect'.
-     *
-     * @since 4.5
-     */
-    private function sqlConnect() {
-
-      civicrm_initialize();
-      if (!defined('CIVICRM_DSN')) {
-        return WP_CLI::error('CIVICRM_DSN is not defined.');
-      }
-
-      $dsn = DB::parseDSN(CIVICRM_DSN);
-
-      $command = sprintf(
-        'mysql --database=%s --host=%s --user=%s --password=%s',
-        $dsn['database'],
-        $dsn['hostspec'],
-        $dsn['username'],
-        $dsn['password']
-      );
-
-      if (isset($dsn['port']) && !empty($dsn['port'])) {
-        $command .= ' --port=' . $dsn['port'];
-      }
-
-      return WP_CLI::line($command);
-
-    }
-
-    /**
-     * Implementation of command 'sql-dump'.
-     *
-     * @since 4.5
-     */
-    private function sqlDump() {
-
-      // Bootstrap CiviCRM when we're not being called as part of an upgrade.
-      if (!defined('CIVICRM_UPGRADE_ACTIVE')) {
-        civicrm_initialize();
-      }
-
-      if (!defined('CIVICRM_DSN') && !defined('CIVICRM_OLD_DSN')) {
-        WP_CLI::error('DSN is not defined.');
-      }
-
-      $dsn = self::parseDSN(defined('CIVICRM_DSN') ? CIVICRM_DSN : CIVICRM_OLD_DSN);
-
-      $assoc_args       = $this->assoc_args;
-      $stdout           = !isset($assoc_args['result-file']);
-      $command          = "mysqldump --no-defaults --host={$dsn['hostspec']} --user={$dsn['username']} --password='{$dsn['password']}' %s";
-      $command_esc_args = [$dsn['database']];
-
-      if (isset($assoc_args['tables'])) {
-        $tables = explode(',', $assoc_args['tables']);
-        unset($assoc_args['tables']);
-        $command .= ' --tables';
-        foreach ($tables as $table) {
-          $command .= ' %s';
-          $command_esc_args[] = trim($table);
-        }
-      }
-
-      $escaped_command = call_user_func_array(
-        '\WP_CLI\Utils\esc_cmd',
-        array_merge(
-          [$command],
-          $command_esc_args
-        )
-      );
-
-      \WP_CLI\Utils\run_mysql_command($escaped_command, $assoc_args);
-
-      if (!$stdout) {
-        WP_CLI::success(sprintf('Exported to %s', $assoc_args['result-file']));
-      }
-
-    }
-
-    /**
-     * Implementation of command 'sql-query'.
-     *
-     * @since 4.5
-     */
-    private function sqlQuery() {
-
-      if (!isset($this->args[0])) {
-        WP_CLI::error('No query specified.');
-        return;
-      }
-
-      $query = $this->args[0];
-
-      civicrm_initialize();
-      if (!defined('CIVICRM_DSN')) {
-        WP_CLI::error('CIVICRM_DSN is not defined.');
-      }
-
-      $dsn = DB::parseDSN(CIVICRM_DSN);
-
-      $mysql_args = [
-        'host'     => $dsn['hostspec'],
-        'database' => $dsn['database'],
-        'user'     => $dsn['username'],
-        'password' => $dsn['password'],
-        'execute'  => $query,
-      ];
-
-      \WP_CLI\Utils\run_mysql_command('mysql --no-defaults', $mysql_args);
-
-    }
-
-    /**
-     * Implementation of command 'sql-cli'.
-     *
-     * @since 4.5
-     */
-    private function sqlCLI() {
-
-      civicrm_initialize();
-      if (!defined('CIVICRM_DSN')) {
-        WP_CLI::error('CIVICRM_DSN is not defined.');
-      }
-
-      $dsn = DB::parseDSN(CIVICRM_DSN);
-
-      $mysql_args = [
-        'host'     => $dsn['hostspec'],
-        'database' => $dsn['database'],
-        'user'     => $dsn['username'],
-        'password' => $dsn['password'],
-      ];
-
-      \WP_CLI\Utils\run_mysql_command('mysql --no-defaults', $mysql_args);
-
-    }
-
-    /**
-     * Implementation of command 'update-cfg'.
-     *
-     * @since 4.5
-     */
-    private function updateConfig() {
-
-      civicrm_initialize();
-
-      $default_values = [];
-      $states         = ['old', 'new'];
-
-      for ($i = 1; $i <= 3; $i++) {
-        foreach ($states as $state) {
-          $name = "{$state}Val_{$i}";
-          $value = $this->getOption($name, NULL);
-          if ($value) {
-            $default_values[$name] = $value;
-          }
-        }
-      }
-
-      $webserver_user  = $this->getWebServerUser();
-      $webserver_group = $this->getWebServerGroup();
-
-      require_once 'CRM/Core/I18n.php';
-      require_once 'CRM/Core/BAO/ConfigSetting.php';
-      $result = CRM_Core_BAO_ConfigSetting::doSiteMove($default_values);
-
-      if ($result) {
-
-        // Attempt to preserve webserver ownership of templates_c, civicrm/upload.
-        if ($webserver_user && $webserver_group) {
-          $upload_dir      = wp_upload_dir();
-          $civicrm_files_dir      = $upload_dir['basedir'] . DIRECTORY_SEPARATOR . 'civicrm' . DIRECTORY_SEPARATOR;
-          system(sprintf('chown -R %s:%s %s/templates_c', $webserver_user, $webserver_group, $civicrm_files_dir));
-          system(sprintf('chown -R %s:%s %s/upload', $webserver_user, $webserver_group, $civicrm_files_dir));
-        }
-
-        WP_CLI::success('Config successfully updated.');
-
-      }
-      else {
-        WP_CLI::error('Config update failed.');
-      }
-
-    }
-
-    /**
-     * Implementation of command 'upgrade'.
-     *
-     * @since 4.5
-     */
-    private function upgrade() {
-
-      // TODO: Use wp-cli to download tarfile.
-      // TODO: If tarfile is not specified, see if the code already exists and use that instead.
-      if (!$this->getOption('tarfile', FALSE) && !$this->getOption('zipfile', FALSE)) {
-        return WP_CLI::error('Must specify either --tarfile or --zipfile');
-      }
-
-      // FIXME: Throw error if tarfile is not in a valid format.
-      if (!defined('CIVICRM_UPGRADE_ACTIVE')) {
-        define('CIVICRM_UPGRADE_ACTIVE', 1);
-      }
-
-      $wp_root       = ABSPATH;
-      $plugins_dir = plugin_dir_path(__FILE__);
-      $legacy_settings_file = $plugins_dir . '/civicrm.settings.php';
-      $upload_dir      = wp_upload_dir();
-      $settings_file     = $upload_dir['basedir'] . DIRECTORY_SEPARATOR . 'civicrm' . DIRECTORY_SEPARATOR . 'civicrm.settings.php';
-      if (!file_exists($legacy_settings_file) && !file_exists($settings_file)) {
-        return WP_CLI::error(sprintf('Unable to locate settings file at "%s" or at "%s"', $legacy_settings_file, $settings_file));
-      }
-
-      /*
-       * We don't want to require "civicrm.settings.php" here, because:
-       *
-       * a) This is the old environment we're going to replace.
-       * b) upgrade-db needs to bootstrap the new environment, so requiring the file
-       *    now will create multiple inclusion problems later on.
-       *
-       * However, all we're really after is $civicrm_root and CIVICRM_DSN, so we're going to
-       * pull out the lines we need using a regex and run them - yes, it's pretty silly.
-       * Don't try this at home, kids.
-       */
-
-      $legacy_settings = file_get_contents($legacy_settings_file);
-      $legacy_settings = str_replace("\r", '', $legacy_settings);
-      $legacy_settings = explode("\n", $legacy_settings);
-      $settings = file_get_contents($settings_file);
-      $settings = str_replace("\r", '', $settings);
-      $settings = explode("\n", $settings);
-
-      if ($civicrm_root_code = reset(preg_grep('/^\s*\$civicrm_root\s*=.*$/', $legacy_settings))) {
-        // phpcs:disable
-        eval($civicrm_root_code);
-        // phpcs:enable
-      }
-      elseif ($civicrm_root_code = reset(preg_grep('/^\s*\$civicrm_root\s*=.*$/', $settings))) {
-        // phpcs:disable
-        eval($civicrm_root_code);
-        // phpcs:enable
-      }
-      else {
-        return WP_CLI::error('Unable to read $civicrm_root from civicrm.settings.php');
-      }
-
-      if ($civicrm_dsn_code = reset(preg_grep('/^\s*define.*CIVICRM_DSN.*$/', $settings))) {
-        $civicrm_dsn_code = str_replace('CIVICRM_DSN', 'CIVICRM_OLD_DSN', $civicrm_dsn_code);
-        // phpcs:disable
-        eval($civicrm_dsn_code);
-        // phpcs:enable
-      }
-      else {
-        return WP_CLI::error('Unable to read CIVICRM_DSN from civicrm.settings.php');
-      }
-
-      if (!defined('CIVICRM_OLD_DSN')) {
-        return WP_CLI::error('Unable to set CIVICRM_OLD_DSN.');
-      }
-
-      $date        = date('YmdHis');
-      $backup_file = 'civicrm';
-
-      $basepath = explode('/', $civicrm_root);
-
-      if (!end($basepath)) {
-        array_pop($basepath);
-      }
-
-      array_pop($basepath);
-      $project_path = implode('/', $basepath) . '/';
-      array_pop($basepath);
-      $plugin_path = implode('/', $basepath) . '/';
-
-      $backup_dir = $this->getOption('backup-dir', $wp_root . '../backup');
-      $backup_dir = rtrim($backup_dir, '/');
-
-      WP_CLI::line();
-      WP_CLI::line('The upgrade process involves:');
-      WP_CLI::line(sprintf('1. Backing up current CiviCRM code as => %s', "$backup_dir/plugins/$date/$backup_file"));
-      WP_CLI::line(sprintf('2. Backing up database as => %s', "$backup_dir/plugins/$date/$backup_file.sql"));
-      WP_CLI::line(sprintf('3. Unpacking tarfile to => %s', $plugin_path));
-      WP_CLI::line('4. Executing "civicrm/upgrade?reset=1" just as a browser would.');
-      WP_CLI::line();
-
-      WP_CLI::confirm('Do you really want to continue?');
-
-      // Begin upgrade.
-      $backup_dir .= '/plugins/' . $date;
-      if (!mkdir($backup_dir, 0755, TRUE)) {
-        return WP_CLI::error(sprintf('Failed to create directory: %s', $backup_dir));
-      }
-
-      $backup_target = $backup_dir . '/' . $backup_file;
-
-      if (!rename($project_path, $backup_target)) {
-        return WP_CLI::error(sprintf('Failed to backup CiviCRM project directory %s to %s', $project_path, $backup_target));
-      }
-
-      WP_CLI::line();
-      WP_CLI::success('1. Code backed up.');
-
-      WP_CLI::run_command(
-        ['civicrm', 'sql-dump'],
-        ['result-file' => $backup_target . '.sql']
-      );
-
-      WP_CLI::success('2. Database backed up.');
-
-      // Decompress.
-      if ($this->getOption('tarfile', FALSE)) {
-        // Should probably never get to here, because WordPress CiviCRM comes in a zip file.
-        if (!$this->untar($plugin_path)) {
-          return WP_CLI::error('Error extracting tarfile');
-        }
-      }
-      elseif ($this->getOption('zipfile', FALSE)) {
-        if (!$this->unzip($plugin_path)) {
-          return WP_CLI::error('Error extracting zipfile');
-        }
-      }
-      else {
-        return WP_CLI::error('No zipfile specified, use --zipfile=path/to/zipfile');
-      }
-
-      WP_CLI::success('3. Archive unpacked.');
-
-      WP_CLI::line('Copying civicrm.settings.php to ' . $project_path . '..');
-      define('CIVICRM_SETTINGS_PATH', $project_path . 'civicrm.settings.php');
-
-      if (!copy($backup_dir . '/civicrm/civicrm.settings.php', CIVICRM_SETTINGS_PATH)) {
-        return WP_CLI::error('Failed to copy file.');
-      }
-
-      WP_CLI::success('4. Settings file copied.');
-
-      WP_CLI::run_command(['civicrm', 'upgrade-db'], []);
-
-      WP_CLI::success('Process completed.');
-
-    }
-
-    /**
-     * Implementation of command 'upgrade-db'.
-     *
-     * @since 4.5
-     */
-    private function upgradeDB() {
-
-      civicrm_initialize();
-
-      if (!defined('CIVICRM_UPGRADE_ACTIVE')) {
-        define('CIVICRM_UPGRADE_ACTIVE', 1);
-      }
-
-      if (class_exists('CRM_Upgrade_Headless')) {
-
-        // CRM_Upgrade_Headless introduced in 4.2 - at the same time as class auto-loading.
-        try {
-          $upgrade_headless = new CRM_Upgrade_Headless();
-          $result = $upgrade_headless->run();
-          WP_CLI::line(sprintf('Upgrade outputs: "%s"', $result['message']));
-        }
-        catch (Exception $e) {
-          WP_CLI::error($e->getMessage());
-        }
-
-      }
-      else {
-
-        require_once 'CRM/Core/Smarty.php';
-        $template = CRM_Core_Smarty::singleton();
-
-        require_once 'CRM/Upgrade/Page/Upgrade.php';
-        $upgrade = new CRM_Upgrade_Page_Upgrade();
-
-        // New since CiviCRM 4.1.
-        if (is_callable([$upgrade, 'setPrint'])) {
-          $upgrade->setPrint(TRUE);
-        }
-
-        // To suppress HTML output with source code.
-        ob_start();
-        $upgrade->run();
-        // Capture the required message.
-        $result = $template->get_template_vars('message');
-        ob_end_clean();
-        WP_CLI::line(sprintf('Upgrade outputs: "%s"', $result));
-
-      }
-
-    }
-
-    /**
-     * DSN parser - this has been stolen from PEAR DB since we don't always have a
-     * bootstrapped environment we can access this from, eg: when doing an upgrade.
-     *
-     * @since 4.5
-     *
-     * @param string|array $dsn
-     * @return array $parsed The arry containing db connection details.
-     */
-    private static function parseDSN($dsn) {
-
-      $parsed = [
-        'phptype'  => FALSE,
-        'dbsyntax' => FALSE,
-        'username' => FALSE,
-        'password' => FALSE,
-        'protocol' => FALSE,
-        'hostspec' => FALSE,
-        'port'     => FALSE,
-        'socket'   => FALSE,
-        'database' => FALSE,
-      ];
-
-      if (is_array($dsn)) {
-        $dsn = array_merge($parsed, $dsn);
-        if (!$dsn['dbsyntax']) {
-          $dsn['dbsyntax'] = $dsn['phptype'];
-        }
-        return $dsn;
-      }
-
-      // Find phptype and dbsyntax.
-      if (($pos = strpos($dsn, '://')) !== FALSE) {
-        $str = substr($dsn, 0, $pos);
-        $dsn = substr($dsn, $pos + 3);
-      }
-      else {
-        $str = $dsn;
-        $dsn = NULL;
-      }
-
-      // Get phptype and dbsyntax.
-      // $str => phptype(dbsyntax)
-      if (preg_match('|^(.+?)\((.*?)\)$|', $str, $arr)) {
-        $parsed['phptype']  = $arr[1];
-        $parsed['dbsyntax'] = !$arr[2] ? $arr[1] : $arr[2];
-      }
-      else {
-        $parsed['phptype']  = $str;
-        $parsed['dbsyntax'] = $str;
-      }
-
-      if (empty($dsn)) {
-        return $parsed;
-      }
-
-      // Get (if found): username and password.
-      // $dsn => username:password@protocol+hostspec/database
-      if (($at = strrpos($dsn, '@')) !== FALSE) {
-        $str = substr($dsn, 0, $at);
-        $dsn = substr($dsn, $at + 1);
-        if (($pos = strpos($str, ':')) !== FALSE) {
-          $parsed['username'] = rawurldecode(substr($str, 0, $pos));
-          $parsed['password'] = rawurldecode(substr($str, $pos + 1));
-        }
-        else {
-          $parsed['username'] = rawurldecode($str);
-        }
-      }
-
-      // Find protocol and hostspec.
-
-      if (preg_match('|^([^(]+)\((.*?)\)/?(.*?)$|', $dsn, $match)) {
-        // $dsn => proto(proto_opts)/database
-        $proto       = $match[1];
-        $proto_opts  = $match[2] ? $match[2] : FALSE;
-        $dsn         = $match[3];
-
-      }
-      else {
-        // $dsn => protocol+hostspec/database (old format)
-        if (strpos($dsn, '+') !== FALSE) {
-          list($proto, $dsn) = explode('+', $dsn, 2);
-        }
-        if (strpos($dsn, '/') !== FALSE) {
-          list($proto_opts, $dsn) = explode('/', $dsn, 2);
-        }
-        else {
-          $proto_opts = $dsn;
-          $dsn = NULL;
-        }
-      }
-
-      // Process the different protocol options.
-      $parsed['protocol'] = (!empty($proto)) ? $proto : 'tcp';
-      $proto_opts = rawurldecode($proto_opts);
-      if (strpos($proto_opts, ':') !== FALSE) {
-        list($proto_opts, $parsed['port']) = explode(':', $proto_opts);
-      }
-      if ('tcp' == $parsed['protocol']) {
-        $parsed['hostspec'] = $proto_opts;
-      }
-      elseif ('unix' == $parsed['protocol']) {
-        $parsed['socket'] = $proto_opts;
-      }
-
-      // Get dabase if any.
-      // $dsn => database
-      if ($dsn) {
-        if (($pos = strpos($dsn, '?')) === FALSE) {
-          // /database
-          $parsed['database'] = rawurldecode($dsn);
-        }
-        else {
-          // /database?param1=value1&param2=value2
-          $parsed['database'] = rawurldecode(substr($dsn, 0, $pos));
-          $dsn = substr($dsn, $pos + 1);
-          if (strpos($dsn, '&') !== FALSE) {
-            $opts = explode('&', $dsn);
-          }
-          else {
-            // database?param1=value1
-            $opts = [$dsn];
-          }
-          foreach ($opts as $opt) {
-            list($key, $value) = explode('=', $opt);
-            if (!isset($parsed[$key])) {
-              // Don't allow params overwrite.
-              $parsed[$key] = rawurldecode($value);
-            }
-          }
-        }
-      }
-
-      return $parsed;
-
-    }
-
-    /**
-     * Helper function to replicate functionality of 'drush_get_option'.
-     *
-     * @since 4.5
-     *
-     * @param string $name
-     * @param string $default
-     * @return mixed The value if found or default if not.
-     */
-    private function getOption($name, $default) {
-      return isset($this->assoc_args[$name]) ? $this->assoc_args[$name] : $default;
-    }
-
-    /**
-     * Get the user the web server runs as - used to preserve file permissions on
-     * templates_c, civicrm/upload etc when running as root. This is not a very
-     * good check, but is good enough for what we want to do, which is to preserve
-     * file permissions.
-     *
-     * @since 4.5
-     *
-     * @return string The user which owns templates_c. Empty string if not found.
-     */
-    private function getWebServerUser() {
-
-      $plugins_dir = plugin_dir_path(__FILE__);
-      $plugins_dir_root = WP_PLUGIN_DIR;
-      $upload_dir      = wp_upload_dir();
-      $tpl_path     = $upload_dir['basedir'] . DIRECTORY_SEPARATOR . 'civicrm' . DIRECTORY_SEPARATOR . 'templates_c';
-      $legacy_tpl_path = $plugins_dir_root . '/files/civicrm/templates_c';
-
-      if (is_dir($legacy_tpl_path)) {
-        $owner = posix_getpwuid(fileowner($legacy_tpl_path));
-        if (isset($owner['name'])) {
-          return $owner['name'];
-        }
-      }
-      elseif (is_dir($tpl_path)) {
-        $owner = posix_getpwuid(fileowner($tpl_path));
-        if (isset($owner['name'])) {
-          return $owner['name'];
-        }
-      }
-
-      return '';
-
-    }
-
-    /**
-     * Get the group the webserver runs as - as above, but for group.
-     *
-     * @since 4.5
-     *
-     * @return string The group the webserver runs as. Empty string if not found.
-     */
-    private function getWebServerGroup() {
-
-      $plugins_dir = plugin_dir_path(__FILE__);
-      $plugins_dir_root = WP_PLUGIN_DIR;
-      $upload_dir      = wp_upload_dir();
-      $tpl_path     = $upload_dir['basedir'] . DIRECTORY_SEPARATOR . 'civicrm' . DIRECTORY_SEPARATOR . 'templates_c';
-      $legacy_tpl_path = $plugins_dir_root . '/files/civicrm/templates_c';
-
-      if (is_dir($legacy_tpl_path)) {
-        $group = posix_getgrgid(filegroup($legacy_tpl_path));
-        if (isset($group['name'])) {
-          return $group['name'];
-        }
-      }
-      elseif (is_dir($tpl_path)) {
-        $group = posix_getgrgid(filegroup($tpl_path));
-        if (isset($group['name'])) {
-          return $group['name'];
-        }
-      }
-
-      return '';
-
-    }
-
-    /**
-     * Extracts a tar.gz archive.
-     *
-     * @since 4.5
-     *
-     * @param string $destination_path The path to extract to.
-     * @param string $option The command line option to get input filename from, defaults to 'tarfile'.
-     * @return bool True if successful, false otherwise.
-     */
-    private function untar($destination_path, $option = 'tarfile') {
-
-      if ($tarfile = $this->getOption($option, FALSE)) {
-        WP_CLI::line('Extracting tar.gz archive...');
-        WP_CLI::launch("gzip -d $tarfile");
-        $tarfile = substr($tarfile, 0, strlen($tarfile) - 3);
-        WP_CLI::launch("tar -xf $tarfile -C \"$destination_path\"");
-        return TRUE;
-      }
-      else {
-        return FALSE;
-      }
-
-    }
-
-    /**
-     * Extracts a zip archive.
-     *
-     * @since 4.5
-     *
-     * @param string $destination_path The path to extract to.
-     * @param string $option The command line option to get zip filename from, defaults to 'zipfile'.
-     * @return bool True if successful, false otherwise.
-     */
-    private function unzip($destination_path, $option = 'zipfile') {
-
-      if ($zipfile = $this->getOption($option, FALSE)) {
-        WP_CLI::line('Extracting zip archive...');
-        WP_CLI::launch("unzip -q $zipfile -d $destination_path");
-        return TRUE;
-      }
-      else {
-        return FALSE;
-      }
-
-    }
-
-  }
-
-  WP_CLI::add_command('civicrm', 'CiviCRM_Command');
-  WP_CLI::add_command('cv', 'CiviCRM_Command');
-
-  // Set path early.
-  WP_CLI::add_hook('before_wp_load', function() {
-
-    global $civicrm_paths;
-    $wp_cli_config = WP_CLI::get_config();
-
-    // If --path is set, save for later use by CiviCRM.
-    if (!empty($wp_cli_config['path'])) {
-      $civicrm_paths['cms.root']['path'] = $wp_cli_config['path'];
-    }
-
-    // If --url is set, save for later use by CiviCRM.
-    if (!empty($wp_cli_config['url'])) {
-      $civicrm_paths['cms.root']['url'] = $wp_cli_config['url'];
-    }
-
-  });
-
-}
diff --git a/wp-cli/commands/command-api-v3.php b/wp-cli/commands/command-api-v3.php
new file mode 100755
index 0000000000000000000000000000000000000000..a1eea93fd92e7935fcf2aaac2727b819bc58fd17
--- /dev/null
+++ b/wp-cli/commands/command-api-v3.php
@@ -0,0 +1,194 @@
+<?php
+/**
+ * Access the CiviCRM API v3.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm api contact.get id=10
+ *     Output here.
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_API_V3 extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Object fields.
+   *
+   * @var array
+   */
+  protected $obj_fields = [
+    'id',
+  ];
+
+  /**
+   * Access the CiviCRM API v3.
+   *
+   * ## OPTIONS
+   *
+   * <args>...
+   * : The API query passed as arguments.
+   *
+   * [--input=<input>]
+   * : Specify the input in a particular format.
+   * ---
+   * default: args
+   * options:
+   *   - args
+   *   - json
+   * ---
+   *
+   * [--timezone=<timezone>]
+   * : The CiviCRM timezone string. Defaults to the WordPress `timezone_string` setting.
+   *
+   * [--format=<format>]
+   * : Render output in a particular format. The "table" format can only be used when retrieving a single item.
+   * ---
+   * default: pretty
+   * options:
+   *   - pretty
+   *   - json
+   *   - table
+   * ---
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm api contact.get id=10
+   *     $ wp civicrm api contact.get id=10 --format=json
+   *     $ wp civicrm api group.get id=1 --format=table
+   *     $ echo '{"id":10, "api.Email.get": 1}' | wp cv api contact.get --input=json
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $input_format = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'input', 'args');
+    $site_timezone = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'timezone', $this->site_timezone_get());
+    $format = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'format', 'pretty');
+
+    // Get the Entity and Action from the first positional argument.
+    list($entity, $action) = explode('.', $args[0]);
+    array_shift($args);
+
+    // Parse params.
+    $defaults = ['version' => 3];
+    switch ($input_format) {
+
+      // Input params supplied via args.
+      case 'args':
+        $params = $defaults;
+        foreach ($args as $arg) {
+          preg_match('/^([^=]+)=(.*)$/', $arg, $matches);
+          $params[$matches[1]] = $matches[2];
+        }
+        break;
+
+      // Input params supplied via json.
+      case 'json':
+        $json = stream_get_contents(STDIN);
+        if (empty($json)) {
+          $params = $defaults;
+        }
+        else {
+          $params = array_merge($defaults, json_decode($json, TRUE));
+        }
+        break;
+
+      default:
+        WP_CLI::error(sprintf('Unknown format: %s', $input_format));
+        break;
+
+    }
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    // CRM-18062: Configure timezone for CiviCRM.
+    $current_timezone = date_default_timezone_get();
+    if ($site_timezone) {
+      date_default_timezone_set($site_timezone);
+      CRM_Core_Config::singleton()->userSystem->setMySQLTimeZone();
+    }
+
+    // Now call the CiviCRM API.
+    $result = civicrm_api($entity, $action, $params);
+
+    // Restore timezone.
+    if ($current_timezone) {
+      date_default_timezone_set($current_timezone);
+    }
+
+    switch ($format) {
+
+      // Pretty-print output (default).
+      case 'pretty':
+        WP_CLI::log(print_r($result, TRUE));
+        break;
+
+      // Display output as json.
+      case 'json':
+        WP_CLI::log(json_encode($result));
+        break;
+
+      // Display output as table.
+      case 'table':
+        $assoc_args['format'] = $format;
+        if (count($result['values']) === 1) {
+          $item = array_pop($result['values']);
+          $assoc_args['fields'] = array_keys($item);
+          $formatter = $this->formatter_get($assoc_args);
+          $formatter->display_item($item);
+        }
+        else {
+
+          // Give up and log usual output.
+          WP_CLI::log(print_r($result, TRUE));
+
+          // phpcs:disable
+
+          /*
+          // Testing whether we can do this. It's hard, but kinda works.
+          $fields_query = civicrm_api3($entity, 'getfields', [
+            'api_action' => $action,
+          ]);;
+          $fields = array_keys($fields_query['values']);
+          //WP_CLI::log(print_r($fields, TRUE));
+
+          //WP_CLI::log(print_r($result['values'], TRUE));
+          $assoc_args['fields'] = $fields;
+          //WP_CLI::log(print_r($assoc_args['fields'], TRUE));
+
+          // Cast items as objects.
+          array_walk($result['values'], function( &$item ) use ( $fields ) {
+            foreach ($fields as $field) {
+              // Make sure the array has all keys.
+              if (!array_key_exists($field, $item)) {
+                $item[$field] = '';
+              }
+            }
+            $item = (object) $item;
+          });
+          //WP_CLI::log(print_r($result['values'], TRUE));
+
+          $formatter = $this->formatter_get($assoc_args);
+          //WP_CLI::log(print_r($formatter, TRUE));
+
+          $formatter->display_items($result['values']);
+          */
+
+          // phpcs:enable
+
+        }
+        break;
+
+      default:
+        WP_CLI::error(sprintf('Unknown format: %s', $format));
+
+    }
+
+  }
+
+}
diff --git a/wp-cli/commands/command-base.php b/wp-cli/commands/command-base.php
new file mode 100644
index 0000000000000000000000000000000000000000..fc0a06234280f07ecac9649603fedd9629b570c2
--- /dev/null
+++ b/wp-cli/commands/command-base.php
@@ -0,0 +1,552 @@
+<?php
+/**
+ * Base command class.
+ *
+ * @since 5.69
+ */
+abstract class CLI_Tools_CiviCRM_Command_Base extends \WP_CLI\CommandWithDBObject {
+
+  /**
+   * Dependency check.
+   *
+   * @since 5.69
+   */
+  public static function check_dependencies() {
+    // Check for existence of CiviCRM.
+    if (!function_exists('civicrm_initialize')) {
+      WP_CLI::error('Unable to find CiviCRM install.');
+    }
+  }
+
+  /**
+   * Bootstrap CiviCRM.
+   *
+   * @since 5.69
+   */
+  protected function bootstrap_civicrm() {
+    self::check_dependencies();
+    if (!civicrm_initialize()) {
+      WP_CLI::error('Unable to initialize CiviCRM.');
+    }
+  }
+
+  /**
+   * Returns the timezone string for the current site.
+   *
+   * If a timezone identifier is used, then return it.
+   * If an offset is used, build a suitable timezone.
+   * If all else fails, uses UTC.
+   *
+   * @since 5.69
+   *
+   * @return string $tzstring The site timezone string.
+   */
+  protected function site_timezone_get() {
+
+    // Check our cached value first.
+    $tzstring = wp_cache_get('cli_tools_civicrm_timezone');
+
+    // Build value if none is cached.
+    if (FALSE === $tzstring) {
+
+      // Get relevant WordPress settings.
+      $tzstring = get_option('timezone_string');
+      $offset = get_option('gmt_offset');
+
+      /*
+       * Setting manual offsets should be discouraged.
+       *
+       * The IANA timezone database that provides PHP's timezone support
+       * uses (reversed) POSIX style signs.
+       *
+       * @see https://github.com/stephenharris/Event-Organiser/issues/287
+       * @see https://www.php.net/manual/en/timezones.others.php
+       * @see https://bugs.php.net/bug.php?id=45543
+       * @see https://bugs.php.net/bug.php?id=45528
+       */
+      if (empty($tzstring) && 0 != $offset && floor($offset) == $offset) {
+        $offset_string = $offset > 0 ? "-$offset" : '+' . absint($offset);
+        $tzstring = 'Etc/GMT' . $offset_string;
+      }
+
+      // Default to "UTC" if the timezone string is empty.
+      if (empty($tzstring)) {
+        $tzstring = 'UTC';
+      }
+
+      // Cache timezone string.
+      wp_cache_set('cli_tools_civicrm_timezone', $tzstring);
+
+    }
+
+    // --<
+    return $tzstring;
+
+  }
+
+  /**
+   * Downloads a remote file with a GET request.
+   *
+   * @since 5.69
+   *
+   * @param string $url The URL to execute the GET request on.
+   * @param string $destination Optional. The path to the download directory. Default is local temp dir.
+   * @param array $headers Optional. Associative array of headers.
+   * @param array $options Optional. Associative array of options.
+   * @return string $filepath The path to the downloaded file.
+   */
+  protected function file_download($url, $destination = '', $headers = [], $options = []) {
+
+    // Set default destination.
+    if (empty($destination)) {
+      $destination = \WP_CLI\Utils\get_temp_dir();
+    }
+
+    // Extract filename, stripping query variables if present.
+    $filename = basename($url);
+    if (FALSE !== strpos($filename, '?')) {
+      $arr = explode('?', $filename);
+      $filename = $arr[0];
+    }
+
+    // Build final path to file.
+    $filepath = trailingslashit($destination) . $filename;
+
+    // Build request options.
+    $options = array_merge(
+      [
+        'timeout'  => 600,
+        'filename' => $filepath,
+        'insecure' => FALSE,
+      ],
+      $options
+    );
+
+    // Okay, do the download.
+    $response = \WP_CLI\Utils\http_request('GET', $url, NULL, $headers, $options);
+    if (!$response->success || 200 !== (int) $response->status_code) {
+      WP_CLI::error(sprintf(WP_CLI::colorize("Couldn't fetch response from %y%s%n (HTTP code %y%s%n)."), $url, $response->status_code));
+    }
+
+    return $filepath;
+
+  }
+
+  /**
+   * Gets the Formatter object for a given set of arguments.
+   *
+   * @since 5.69
+   *
+   * @param array $assoc_args The params passed to a command. Determines the formatting.
+   * @return \WP_CLI\Formatter
+   */
+  protected function formatter_get(&$assoc_args) {
+    return new \WP_CLI\Formatter($assoc_args, $this->obj_fields);
+  }
+
+  /**
+   * Performs a remote GET request.
+   *
+   * @since 5.69
+   *
+   * @param string $url The URL to execute the GET request on.
+   * @param array $headers Optional. Associative array of headers.
+   * @param array $options Optional. Associative array of options.
+   * @return object $response The response object.
+   */
+  protected function http_get_response($url, $headers = [], $options = []) {
+
+    $options = array_merge(
+      ['halt_on_error' => FALSE],
+      $options
+    );
+
+    $response = \WP_CLI\Utils\http_request('GET', $url, NULL, $headers, $options);
+    if (!$response->success || 200 > (int) $response->status_code || 300 <= $response->status_code) {
+      WP_CLI::error(sprintf(WP_CLI::colorize("Couldn't fetch response from %y%s%n (HTTP code %y%s%n)."), $url, $response->status_code));
+    }
+
+    return trim($response->body);
+
+  }
+
+  /**
+   * Performs a remote GET request that requires JSON data in response.
+   *
+   * @since 5.69
+   *
+   * @param string $url The URL to execute the GET request on.
+   * @param array $headers Optional. Associative array of headers.
+   * @param array $options Optional. Associative array of options.
+   * @return mixed|false False on failure. Decoded JSON on success.
+   */
+  protected function json_get_request($url, $headers = [], $options = []) {
+
+    $headers = array_merge(
+      ['Accept' => 'application/json'],
+      $headers
+    );
+
+    $response = $this->http_get_response($url, $headers, $options);
+    if (FALSE === $response) {
+      return $response;
+    }
+
+    $data = json_decode($response, TRUE);
+    if (JSON_ERROR_NONE !== json_last_error()) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to decode JSON: %y%s.%n'), json_last_error_msg()));
+    }
+
+    return $data;
+
+  }
+
+  /**
+   * Gets the path to the CiviCRM plugin directory.
+   *
+   * @since 5.69
+   *
+   * @return string|bool $plugin_path The path to the CiviCRM plugin directory.
+   */
+  protected function plugin_path_get() {
+
+    global $wp_filesystem;
+    if (empty($wp_filesystem)) {
+      WP_Filesystem();
+    }
+
+    // Get the path to the WordPress plugins directory.
+    $plugins_dir = $wp_filesystem->wp_plugins_dir();
+    if (empty($plugins_dir)) {
+      WP_CLI::error('Unable to locate WordPress plugins directory.');
+    }
+
+    // The path to the CiviCRM plugin directory.
+    $plugin_path = trailingslashit($plugins_dir) . 'civicrm';
+
+    return $plugin_path;
+
+  }
+
+  /**
+   * Extracts a tar.gz archive.
+   *
+   * @since 5.69
+   *
+   * @param string $tarfile The path to the tarfile.
+   * @param string $destination The path to extract to.
+   * @param bool $delete True deletes the zip archive once extracted. Default to true.
+   * @return bool True if successful, false otherwise.
+   */
+  protected function untar($tarfile, $destination, $delete = TRUE) {
+
+    // Sanity check tarfile.
+    if (empty($tarfile)) {
+      return FALSE;
+    }
+
+    // Sanity check destination.
+    if (empty($destination)) {
+      return FALSE;
+    }
+
+    // Let's handle errors here.
+    $exit_on_error = FALSE;
+    $return_detailed = TRUE;
+
+    WP_CLI::log(WP_CLI::colorize('%GExtracting tar.gz archive...%n'));
+
+    // First unpack the gz archive.
+    $command = "gzip -d $tarfile";
+    $process_run = WP_CLI::launch($command, $exit_on_error, $return_detailed);
+    if (0 !== $process_run->return_code) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to extract gz archive: %y%s.%n'), $this->stderr_error_msg($process_run)));
+    }
+
+    // Next unpack the tarball.
+    $tarfile = substr($tarfile, 0, strlen($tarfile) - 3);
+    $command = "tar -xf $tarfile -C \"$destination\"";
+    $process_run = WP_CLI::launch($command, $exit_on_error, $return_detailed);
+    if (0 !== $process_run->return_code) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to extract tarball: %y%s.%n'), $this->stderr_error_msg($process_run)));
+    }
+
+    // Delete the tar archive.
+    if (!empty($delete)) {
+      global $wp_filesystem;
+      if (empty($wp_filesystem)) {
+        WP_Filesystem();
+      }
+      $wp_filesystem->delete($tarfile, TRUE);
+    }
+
+    return TRUE;
+
+  }
+
+  /**
+   * Extracts a zip archive.
+   *
+   * Note: if no extension is supplied, `unzip` will check for "filename.zip" and "filename.ZIP"
+   * in the same location.
+   *
+   * @since 5.69
+   *
+   * @param string $zipfile The path to the zipfile.
+   * @param string $destination The path to extract to.
+   * @param bool $delete True deletes the zip archive once extracted. Defaults to true.
+   * @return bool True if successful, false otherwise.
+   */
+  protected function unzip($zipfile, $destination, $delete = TRUE) {
+
+    // Sanity check zipfile.
+    if (empty($zipfile)) {
+      return FALSE;
+    }
+
+    // Sanity check destination.
+    if (empty($destination)) {
+      return FALSE;
+    }
+
+    WP_CLI::log(WP_CLI::colorize('%GExtracting zip archive...%n'));
+
+    // Let's handle errors here.
+    $exit_on_error = FALSE;
+    $return_detailed = TRUE;
+
+    // Run the command.
+    $command = "unzip -q $zipfile -d $destination";
+    $process_run = WP_CLI::launch($command, $exit_on_error, $return_detailed);
+    if (0 !== $process_run->return_code) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to extract zip archive: %y%s.%n'), $this->unzip_error_msg($process_run->return_code)));
+    }
+
+    // Delete the zip archive.
+    if (!empty($delete)) {
+      global $wp_filesystem;
+      if (empty($wp_filesystem)) {
+        WP_Filesystem();
+      }
+      $wp_filesystem->delete($zipfile, TRUE);
+    }
+
+    return TRUE;
+
+  }
+
+  /**
+   * Compresses a zip archive.
+   *
+   * @since 5.69
+   *
+   * @param string $directory The directory to compress.
+   * @param string $destination The path to the directory where the compressed archive will be saved.
+   * @return bool True if successful, false otherwise.
+   */
+  protected function zip_compress($directory, $destination) {
+
+    // Sanity check directory.
+    if (empty($directory)) {
+      return FALSE;
+    }
+
+    // Sanity check destination.
+    if (empty($destination)) {
+      return FALSE;
+    }
+
+    WP_CLI::log(WP_CLI::colorize('%GCompressing zip archive...%n'));
+
+    // Let's handle errors here.
+    $exit_on_error = FALSE;
+    $return_detailed = TRUE;
+
+    // Run the command.
+    $command = 'pushd ' . dirname($directory) . '; ' . "zip -rq {$destination} ./" . basename($directory) . '; popd';
+    $process_run = WP_CLI::launch($command, $exit_on_error, $return_detailed);
+    if (0 !== $process_run->return_code) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to compress zip archive: %y%s.%n'), $this->zip_error_msg($process_run->return_code)));
+    }
+
+    return TRUE;
+
+  }
+
+  /**
+   * Extracts a zip archive to a destination directory and removes zip archive.
+   *
+   * This is useful if we want to extract a zip archive and know the name we want to give
+   * the enclosing directory. It's better to use `self::unzip()` if we want to leave the
+   * enclosing directory with its given directory name, e.g. when extracting the CiviCRM
+   * plugin archive somewhere other than the WordPress plugins directory.
+   *
+   * @since 5.69
+   *
+   * @param string $zipfile The path to the zipfile.
+   * @param string $destination The directory name to extract to.
+   * @param array $options The array of extraction options.
+   * @return bool True if successful, false otherwise.
+   */
+  protected function zip_extract($zipfile, $destination, $options = []) {
+
+    // Let's use a custom WP_Upgrader object.
+    require_once __DIR__ . '/utilities/class-zip-extractor.php';
+    $extractor = \WP_CLI\Utils\get_upgrader('CLI_Tools_CiviCRM_Zip_Extractor');
+
+    // Go ahead and extract the archive.
+    $extractor->init();
+    $result = $extractor->extract($zipfile, $destination, $options);
+
+    // Trap any problems.
+    if ($result === FALSE) {
+      WP_CLI::error('Unable to connect to the filesystem.');
+    }
+    if (is_wp_error($result)) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to extract zip archive: %y%s.%n'), $result->get_error_message()));
+    }
+
+    return TRUE;
+
+  }
+
+  /**
+   * Extracts a zip archive and overwrites a destination directory.
+   *
+   * @since 5.69
+   *
+   * @param string $zipfile The path to the zipfile.
+   * @param string $destination The directory name to extract to.
+   * @return bool True if successful, false otherwise.
+   */
+  protected function zip_overwrite($zipfile, $destination) {
+
+    // Let's use a custom WP_Upgrader object.
+    require_once __DIR__ . '/utilities/class-backup-restorer.php';
+    $overwriter = \WP_CLI\Utils\get_upgrader('CLI_Tools_CiviCRM_WP_Upgrader');
+
+    // Go ahead and restore from backup.
+    $overwriter->init();
+    $result = $overwriter->restore($zipfile, $destination);
+
+    // Trap any problems.
+    if ($result === FALSE) {
+      WP_CLI::error('Unable to connect to the filesystem.');
+    }
+    if (is_wp_error($result)) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to extract zip archive: %y%s.%n'), $result->get_error_message()));
+    }
+
+    return TRUE;
+
+  }
+
+  // ----------------------------------------------------------------------------
+  // Private methods.
+  // ----------------------------------------------------------------------------
+
+  /**
+   * Returns a formatted error message from a ProcessRun command.
+   *
+   * @since 5.69
+   *
+   * @param object $process_run The ProcessRun object.
+   * @return string|int The error message of the process if available, otherwise the return code.
+   */
+  private function stderr_error_msg($process_run) {
+
+    // Grab error string.
+    $stderr = trim($process_run->stderr);
+    $nl_pos = strpos($stderr, "\n");
+    if (FALSE !== $nl_pos) {
+      $stderr = trim(substr($stderr, 0, $nl_pos));
+    }
+
+    // Return formatted string if possible.
+    if ($stderr) {
+      return sprintf('%s (%d)', $stderr, $process_run->return_code);
+    }
+
+    // Fall back to raw error code.
+    return $process_run->return_code;
+
+  }
+
+  /**
+   * Returns a formatted `unzip` error message for a given error code.
+   *
+   * @since 5.69
+   *
+   * @param int $error_code The error code.
+   * @return string $error_code The formatted error code.
+   */
+  private function unzip_error_msg($error_code) {
+
+    $zip_err_msgs = [
+      0 => 'No errors or warnings detected.',
+      1 => 'One or more warning errors were encountered, but processing completed successfully anyway. This includes zipfiles where one or more files was skipped due to unsupported compression method or encryption with an unknown password.',
+      2 => 'A generic error in the zipfile format was detected. Processing may have completed successfully anyway; some broken zipfiles created by other archivers have simple work-arounds.',
+      3 => 'A severe error in the zipfile format was detected. Processing probably failed immediately.',
+      4 => 'unzip was unable to allocate memory for one or more buffers during program initialization.',
+      5 => 'unzip was unable to allocate memory or unable to obtain a tty to read the decryption password(s).',
+      6 => 'unzip was unable to allocate memory during decompression to disk.',
+      7 => 'unzip was unable to allocate memory during in-memory decompression.',
+      8 => '[currently not used]',
+      9 => 'The specified zipfiles were not found.',
+      10 => 'Invalid options were specified on the command line.',
+      11 => 'No matching files were found.',
+      50 => 'The disk is (or was) full during extraction.',
+      51 => 'The end of the ZIP archive was encountered prematurely.',
+      80 => 'The user aborted unzip prematurely with control-C (or similar)',
+      81 => 'Testing or extraction of one or more files failed due to unsupported compression methods or unsupported decryption.',
+      82 => 'No files were found due to bad decryption password(s). (If even one file is successfully processed, however, the exit status is 1.)',
+    ];
+
+    if (isset($zip_err_msgs[$error_code])) {
+      return sprintf('%s (%d)', $zip_err_msgs[$error_code], $error_code);
+    }
+
+    return $error_code;
+
+  }
+
+  /**
+   * Returns a formatted `zip` error message for a given error code.
+   *
+   * @since 5.69
+   *
+   * @param int $error_code The error code.
+   * @return string $error_code The formatted error code.
+   */
+  private function zip_error_msg($error_code) {
+
+    $zip_err_msgs = [
+      0 => 'No errors or warnings detected.',
+      2 => 'Unexpected end of zip file.',
+      3 => 'A generic error in the zipfile format was detected. Processing may have completed successfully anyway; some broken zipfiles created by other archivers have simple work-arounds..',
+      4 => 'zip was unable to allocate memory for one or more buffers during program initialization.',
+      5 => 'A severe error in the zipfile format was detected. Processing probably failed immediately.',
+      6 => 'Entry too large to be processed (such as input files larger than 2 GB when not using Zip64 or trying to read an existing archive that is too large) or entry too large to be split with zipsplit',
+      7 => 'Invalid comment format.',
+      8 => 'zip -T failed or out of memory',
+      9 => 'The user aborted zip prematurely with control-C (or similar).',
+      10 => 'zip encountered an error while using a temp file.',
+      11 => 'read or seek error.',
+      12 => 'zip has nothing to do.',
+      13 => 'Missing or empty zip file.',
+      14 => 'Error writing to a file.',
+      15 => 'zip was unable to create a file to write to.',
+      16 => 'Bad command line parameters.',
+      18 => 'zip could not open a specified file to read.',
+      19 => 'zip was compiled with options not supported on this system.',
+    ];
+
+    if (isset($zip_err_msgs[$error_code])) {
+      return sprintf('%s (%d)', $zip_err_msgs[$error_code], $error_code);
+    }
+
+    return $error_code;
+
+  }
+
+}
diff --git a/wp-cli/commands/command-cache.php b/wp-cli/commands/command-cache.php
new file mode 100755
index 0000000000000000000000000000000000000000..24351ea5161f6007c815983c14d47b983066718f
--- /dev/null
+++ b/wp-cli/commands/command-cache.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Flush the CiviCRM cache.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm cache flush
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Cache extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Flush the CiviCRM cache.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm cache flush
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function flush($args, $assoc_args) {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    $config = CRM_Core_Config::singleton();
+
+    // Clear db caching.
+    $config->clearDBCache();
+
+    // Also cleanup the templates_c directory.
+    $config->cleanup(1, FALSE);
+
+    // Also cleanup the session object.
+    $session = CRM_Core_Session::singleton();
+    $session->reset(1);
+
+    WP_CLI::success('CiviCRM cache cleared.');
+
+  }
+
+}
diff --git a/wp-cli/commands/command-civicrm.php b/wp-cli/commands/command-civicrm.php
new file mode 100644
index 0000000000000000000000000000000000000000..ca41006630cd2adf0caef3888a9fa8759e72108f
--- /dev/null
+++ b/wp-cli/commands/command-civicrm.php
@@ -0,0 +1,76 @@
+<?php
+/**
+ * Manage CiviCRM through the command-line.
+ *
+ * ## EXAMPLES
+ *
+ *     # Download the latest stable CiviCRM core archive.
+ *     $ wp civicrm core download
+ *     Checking file to download...
+ *     Downloading file...
+ *     Success: CiviCRM downloaded to /tmp/
+ *
+ *     # Install the current stable version of CiviCRM with localization files.
+ *     $ wp civicrm core install --l10n
+ *     Success: Installed 1 of 1 plugins.
+ *     Success: CiviCRM localization downloaded and extracted to: /wp-content/plugins/civicrm
+ *
+ *     # Check for the latest stable version of CiviCRM.
+ *     $ wp civicrm core check-update
+ *     +-----------+---------+-------------------------------------------------------------------------------------------+
+ *     | Package   | Version | Package URL                                                                               |
+ *     +-----------+---------+-------------------------------------------------------------------------------------------+
+ *     | WordPress | 5.67.0  | https://storage.googleapis.com/civicrm/civicrm-stable/5.67.0/civicrm-5.67.0-wordpress.zip |
+ *     | L10n      | 5.67.0  | https://storage.googleapis.com/civicrm/civicrm-stable/5.67.0/civicrm-5.67.0-l10n.tar.gz   |
+ *     +-----------+---------+-------------------------------------------------------------------------------------------+
+ *
+ *     # Check the CiviCRM database config.
+ *     $ wp civicrm db config --format=table
+ *     +----------+----------------+
+ *     | Field    | Value          |
+ *     +----------+----------------+
+ *     | phptype  | mysqli         |
+ *     | dbsyntax | mysqli         |
+ *     | username | db_username    |
+ *     | password | db_password    |
+ *     | protocol | tcp            |
+ *     | hostspec | localhost      |
+ *     | port     | false          |
+ *     | socket   | false          |
+ *     | database | civicrm_dbname |
+ *     | new_link | true           |
+ *     +----------+----------------+
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command extends CLI_Tools_CiviCRM_Command_Base {
+
+  /**
+   * Adds our description and sub-commands.
+   *
+   * @since 5.69
+   *
+   * @param object $command The command.
+   * @return array $info The array of information about the command.
+   */
+  private function command_to_array($command) {
+
+    $info = [
+      'name' => $command->get_name(),
+      'description' => $command->get_shortdesc(),
+      'longdesc' => $command->get_longdesc(),
+    ];
+
+    foreach ($command->get_subcommands() as $subcommand) {
+      $info['subcommands'][] = $this->command_to_array($subcommand);
+    }
+
+    if (empty($info['subcommands'])) {
+      $info['synopsis'] = (string) $command->get_synopsis();
+    }
+
+    return $info;
+
+  }
+
+}
diff --git a/wp-cli/commands/command-core.php b/wp-cli/commands/command-core.php
new file mode 100755
index 0000000000000000000000000000000000000000..db61217d51f80ca03aa29d9e25fe6eafcb1c9bf7
--- /dev/null
+++ b/wp-cli/commands/command-core.php
@@ -0,0 +1,2170 @@
+<?php
+/**
+ * Downloads, installs, updates, and manages a CiviCRM installation.
+ *
+ * ## EXAMPLES
+ *
+ *     # Download the latest stable CiviCRM core archive.
+ *     $ wp civicrm core download
+ *     Checking file to download...
+ *     Downloading file...
+ *     Success: CiviCRM downloaded to /tmp/
+ *
+ *     # Install the current stable version of CiviCRM with localization files.
+ *     $ wp civicrm core install --l10n
+ *     Success: Installed 1 of 1 plugins.
+ *     Success: CiviCRM localization downloaded and extracted to: /wp-content/plugins/civicrm
+ *
+ *     # Check for the latest stable version of CiviCRM.
+ *     $ wp civicrm core check-update
+ *     +-----------+---------+-------------------------------------------------------------------------------------------+
+ *     | Package   | Version | Package URL                                                                               |
+ *     +-----------+---------+-------------------------------------------------------------------------------------------+
+ *     | WordPress | 5.67.0  | https://storage.googleapis.com/civicrm/civicrm-stable/5.67.0/civicrm-5.67.0-wordpress.zip |
+ *     | L10n      | 5.67.0  | https://storage.googleapis.com/civicrm/civicrm-stable/5.67.0/civicrm-5.67.0-l10n.tar.gz   |
+ *     +-----------+---------+-------------------------------------------------------------------------------------------+
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Core extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * @var string
+   * The URL to check for CiviCRM upgrades.
+   * @since 5.69
+   * @access private
+   */
+  private $upgrade_url = 'https://download.civicrm.org/check';
+
+  /**
+   * @var string
+   * The Google API URL to check for all top-level CiviCRM prefixes.
+   * @since 5.69
+   * @access private
+   */
+  private $google_url = 'https://storage.googleapis.com/storage/v1/b/civicrm/o/?delimiter=/';
+
+  /**
+   * @var string
+   * The Google API query param to append for checking CiviCRM stable versions.
+   * @since 5.69
+   * @access private
+   */
+  private $google_prefix_stable = 'prefix=civicrm-stable/';
+
+  /**
+   * @var string
+   * The common part of the Google API URL for CiviCRM release archive downloads.
+   * @since 5.69
+   * @access private
+   */
+  private $google_download_url = 'https://storage.googleapis.com/civicrm/';
+
+  /**
+   * Activates the CiviCRM plugin and loads the database.
+   *
+   * ## OPTIONS
+   *
+   * [--dbname=<dbname>]
+   * : MySQL database name of your CiviCRM database. Defaults to the WordPress database name.
+   *
+   * [--dbpass=<dbpass>]
+   * : MySQL password for your CiviCRM database. Defaults to the WordPress MySQL database password.
+   *
+   * [--dbuser=<dbuser>]
+   * : MySQL username for your CiviCRM database. Defaults to the WordPress MySQL database username.
+   *
+   * [--dbhost=<dbhost>]
+   * : MySQL host for your CiviCRM database. Defaults to the WordPress MySQL host.
+   *
+   * [--locale=<locale>]
+   * : Locale to use for installation. Defaults to "en_US".
+   *
+   * [--ssl=<ssl>]
+   * : The SSL setting for your website, e.g. '--ssl=on'. Defaults to "on".
+   *
+   * [--site-url=<site-url>]
+   * : Domain for your website, e.g. 'mysite.com'.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     # Activate the CiviCRM plugin.
+   *     $ wp civicrm core activate
+   *     CiviCRM database credentials:
+   *     +----------+-----------------------+
+   *     | Field    | Value                 |
+   *     +----------+-----------------------+
+   *     | Database | civicrm_database_name |
+   *     | Username | foo                   |
+   *     | Password | dbpassword            |
+   *     | Host     | localhost             |
+   *     | Locale   | en_US                 |
+   *     | SSL      | on                    |
+   *     +----------+-----------------------+
+   *     Do you want to continue? [y/n] y
+   *     Creating file /httpdocs/wp-content/uploads/civicrm/civicrm.settings.php
+   *     Success: CiviCRM data files initialized.
+   *     Creating civicrm_* database tables in civicrm_database_name
+   *     Success: CiviCRM database loaded.
+   *     Plugin 'civicrm' activated.
+   *     Success: Activated 1 of 1 plugins.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function activate($args, $assoc_args) {
+
+    // Only install plugin if not already installed.
+    $fetcher = new \WP_CLI\Fetchers\Plugin();
+    $plugin_installed = $fetcher->get('civicrm');
+    if (!$plugin_installed) {
+      WP_CLI::error('You need to install CiviCRM first.');
+    }
+
+    // Get the path to the CiviCRM plugin directory.
+    $plugin_path = $this->plugin_path_get();
+
+    /*
+     * Check for the presence of the CiviCRM core codebase.
+     *
+     * NOTE: This is *not* the CiviCRM plugin - it is the directory where the common
+     * CiviCRM code lives. It always lives in a sub-directory of the plugin directory
+     * called "civicrm".
+     */
+    global $crmPath;
+    $crmPath = trailingslashit($plugin_path) . 'civicrm';
+    if (!is_dir($crmPath)) {
+      WP_CLI::error('CiviCRM core files are missing.');
+    }
+
+    // We need the CiviCRM classloader so that we can run `Civi\Setup`.
+    $classLoaderPath = "$crmPath/CRM/Core/ClassLoader.php";
+    if (!file_exists($classLoaderPath)) {
+      WP_CLI::error('CiviCRM installer helper file is missing.');
+    }
+
+    // Grab associative arguments.
+    $dbuser = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'dbuser', (defined('DB_USER') ? DB_USER : ''));
+    $dbpass = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'dbpass', (defined('DB_PASSWORD') ? DB_PASSWORD : ''));
+    $dbhost = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'dbhost', (defined('DB_HOST') ? DB_HOST : ''));
+    $dbname = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'dbname', (defined('DB_NAME') ? DB_NAME : ''));
+    $locale = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'locale', 'en_US');
+    $ssl = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'ssl', 'on');
+    $base_url = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'site-url', '');
+
+    // Show database parameters.
+    WP_CLI::log(WP_CLI::colorize('%GCiviCRM database credentials:%n'));
+    $assoc_args['format'] = 'table';
+    $feedback = [
+      'Database' => $dbname,
+      'Username' => $dbuser,
+      'Password' => $dbpass,
+      'Host' => $dbhost,
+      'Locale' => $locale,
+      'SSL' => $ssl,
+    ];
+    $assoc_args['fields'] = array_keys($feedback);
+    $formatter = $this->formatter_get($assoc_args);
+    $formatter->display_item($feedback);
+
+    // Let's give folks a chance to exit now.
+    WP_CLI::confirm(WP_CLI::colorize('%GDo you want to continue?%n'), $assoc_args);
+
+    // ----------------------------------------------------------------------------
+    // Activation and installation.
+    // ----------------------------------------------------------------------------
+
+    // Set some constants that CiviCRM requires.
+    if (!defined('CIVICRM_PLUGIN_DIR')) {
+      define('CIVICRM_PLUGIN_DIR', \WP_CLI\Utils\trailingslashit($plugin_path));
+    }
+    if (!defined('CIVICRM_PLUGIN_URL')) {
+      define('CIVICRM_PLUGIN_URL', plugin_dir_url(CIVICRM_PLUGIN_DIR));
+    }
+
+    // Maybe set SSL.
+    if ('on' === $ssl) {
+      $_SERVER['HTTPS'] = 'on';
+    }
+
+    // Initialize civicrm-setup.
+    require_once $classLoaderPath;
+    CRM_Core_ClassLoader::singleton()->register();
+    \Civi\Setup::assertProtocolCompatibility(1.0);
+    \Civi\Setup::init(['cms' => 'WordPress', 'srcPath' => $crmPath]);
+    $setup = \Civi\Setup::instance();
+
+    // Apply essential arguments.
+    $setup->getModel()->db = ['server' => $dbhost, 'username' => $dbuser, 'password' => $dbpass, 'database' => $dbname];
+    $setup->getModel()->lang = $locale;
+
+    /*
+     * The "base URL" should already be known, either by:
+     *
+     * * The "site_url()" setting in WordPress standalone
+     * * The URL flag in WordPress Multisite: --url=https://my-domain.com
+     *
+     * TODO: This means that the `--site_url` flag is basically redundant.
+     */
+    if (!empty($base_url)) {
+      $protocol = ('on' === $ssl ? 'https' : 'http');
+      $base_url = $protocol . '://' . $base_url;
+      $setup->getModel()->cmsBaseUrl = trailingslashit($base_url);
+    }
+
+    // Validate system requirements.
+    $reqs = $setup->checkRequirements();
+    foreach ($reqs->getWarnings() as $msg) {
+      WP_CLI::log(sprintf(WP_CLI::colorize('%YWARNING:%n %y(%s) %s:%n %s'), $msg['section'], $msg['name'], $msg['message']));
+    }
+    $errors = $reqs->getErrors();
+    if ($errors) {
+      foreach ($errors as $msg) {
+        WP_CLI::log(sprintf(WP_CLI::colorize('%RERROR:%n %r(%s) %s:%n %s'), $msg['section'], $msg['name'], $msg['message']));
+      }
+      WP_CLI::error('Requirements check failed.');
+    }
+
+    // Install data files.
+    $installed = $setup->checkInstalled();
+    if (!$installed->isSettingInstalled()) {
+      WP_CLI::log(sprintf(WP_CLI::colorize('%GCreating file%n %Y%s%n'), $setup->getModel()->settingsPath));
+      $setup->installFiles();
+    }
+    else {
+      WP_CLI::log(sprintf(WP_CLI::colorize('%gFound existing%n %Y%s%n %Gin%n %Y%s%n'), basename($setup->getModel()->settingsPath), dirname($setup->getModel()->settingsPath)));
+      switch ($this->conflict_action_pick('civicrm.settings.php')) {
+        case 'abort':
+          WP_CLI::log(WP_CLI::colorize('%CAborted%n'));
+          WP_CLI::halt(0);
+
+        case 'overwrite':
+          WP_CLI::log(sprintf(WP_CLI::colorize('%GRemoving%n %Y%s%n %Gfrom%n %Y%s%n'), basename($setup->getModel()->settingsPath), dirname($setup->getModel()->settingsPath)));
+          $setup->uninstallFiles();
+          WP_CLI::log(sprintf(WP_CLI::colorize('%GCreating%n %Y%s%n %Gin%n %Y%s%n'), basename($setup->getModel()->settingsPath), dirname($setup->getModel()->settingsPath)));
+          $setup->installFiles();
+          break;
+
+        case 'keep':
+          break;
+
+        default:
+          WP_CLI::error('Unrecognized action');
+      }
+    }
+
+    WP_CLI::success('CiviCRM data files initialized.');
+
+    // Clean the "templates_c" directory to avoid fatal error when overwriting the database.
+    if (function_exists('civicrm_initialize')) {
+      $this->bootstrap_civicrm();
+      $config = CRM_Core_Config::singleton();
+      $config->cleanup(1, FALSE);
+    }
+
+    // Install database.
+    if (!$installed->isDatabaseInstalled()) {
+      WP_CLI::log(sprintf(WP_CLI::colorize('%GCreating%n %Ycivicrm_*%n %Gdatabase tables in%n %Y%s%n'), $setup->getModel()->db['database']));
+      $setup->installDatabase();
+    }
+    else {
+      WP_CLI::log(sprintf(WP_CLI::colorize('%GFound existing%n %Ycivicrm_*%n database tables in%n %Y%s%n'), $setup->getModel()->db['database']));
+      switch ($this->conflict_action_pick('database tables')) {
+        case 'abort':
+          WP_CLI::log(WP_CLI::colorize('%CAborted%n'));
+          WP_CLI::halt(0);
+
+        case 'overwrite':
+          WP_CLI::log(sprintf(WP_CLI::colorize('%GRemoving%n %Ycivicrm_*%n database tables in%n %Y%s%n'), $setup->getModel()->db['database']));
+          $setup->uninstallDatabase();
+          WP_CLI::log(sprintf(WP_CLI::colorize('%GCreating%n %Ycivicrm_*%n database tables in%n %Y%s%n'), $setup->getModel()->db['database']));
+          $setup->installDatabase();
+          break;
+
+        case 'keep':
+          break;
+
+        default:
+          WP_CLI::error('Unrecognized action');
+      }
+    }
+
+    WP_CLI::success('CiviCRM database loaded.');
+
+    // Looking good, let's activate the CiviCRM plugin.
+    WP_CLI::run_command(['plugin', 'activate', 'civicrm'], []);
+
+  }
+
+  /**
+   * Back up the CiviCRM plugin files and database.
+   *
+   * ## OPTIONS
+   *
+   * [--backup-dir=<backup-dir>]
+   * : Path to your CiviCRM backup directory. Default is one level above ABSPATH.
+   *
+   * [--also-include=<also-include>]
+   * : Comma separated list of additional tables to back up based on wildcard search.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     # Standard backup.
+   *     $ wp civicrm core backup
+   *     Gathering system information.
+   *     +------------------------+-----------------------------------------------------------------------+
+   *     | Field                  | Value                                                                 |
+   *     +------------------------+-----------------------------------------------------------------------+
+   *     | Backup directory       | /example.com/civicrm-backup                                           |
+   *     | Plugin path            | /example.com/httpdocs/wp-content/plugins/civicrm/                     |
+   *     | Database name          | civicrm_db                                                            |
+   *     | Database username      | dbuser                                                                |
+   *     | Database password      | dbpassword                                                            |
+   *     | Database host          | localhost                                                             |
+   *     | Settings file          | /example.com/httpdocs/wp-content/uploads/civicrm/civicrm.settings.php |
+   *     | Config and Log         | /example.com/httpdocs/wp-content/uploads/civicrm/ConfigAndLog/        |
+   *     | Custom PHP             | Not found                                                             |
+   *     | Custom templates       | Not found                                                             |
+   *     | Compiled templates     | /example.com/httpdocs/wp-content/uploads/civicrm/templates_c/         |
+   *     | Extensions directory   | /example.com/httpdocs/wp-content/uploads/civicrm/ext/                 |
+   *     | Uploads directory      | /example.com/httpdocs/wp-content/uploads/civicrm/upload/              |
+   *     | Image upload directory | /example.com/httpdocs/wp-content/uploads/civicrm/persist/contribute/  |
+   *     | File upload directory  | /example.com/httpdocs/wp-content/uploads/civicrm/custom/              |
+   *     +------------------------+-----------------------------------------------------------------------+
+   *     Do you want to continue? [y/n] y
+   *
+   *     # Also back up tables not registered with CiviCRM.
+   *     # In this case, also exports tables for the "Canadian Tax Receipts" extension.
+   *     $ wp civicrm core backup --also-include='cdntaxreceipts_*'
+   *     ...
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function backup($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $backup_dir = \WP_CLI\Utils\get_flag_value($assoc_args, 'backup-dir', trailingslashit(dirname(ABSPATH)) . 'civicrm-backup');
+    $also_include = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'also-include', '');
+
+    // ----------------------------------------------------------------------------
+    // Build feedback table.
+    // ----------------------------------------------------------------------------
+    WP_CLI::log(WP_CLI::colorize('%GGathering system information.%n'));
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    // Let's have a look for some CiviCRM variables.
+    $config = CRM_Core_Config::singleton();
+
+    // Build feedback.
+    $feedback = [];
+    if (!empty($backup_dir)) {
+      $feedback['Backup directory'] = $backup_dir;
+    }
+    if (defined('CIVICRM_PLUGIN_DIR')) {
+      $feedback['Plugin path'] = CIVICRM_PLUGIN_DIR;
+    }
+    else {
+      $feedback['Plugin path'] = 'Not found';
+    }
+    if (defined('CIVICRM_DSN')) {
+      $dsn = DB::parseDSN(CIVICRM_DSN);
+      $feedback['Database name'] = $dsn['database'];
+      $feedback['Database username'] = $dsn['username'];
+      $feedback['Database password'] = $dsn['password'];
+      $feedback['Database host'] = $dsn['hostspec'];
+    }
+    else {
+      $feedback['Database Settings'] = 'Not found';
+    }
+    if (defined('CIVICRM_SETTINGS_PATH')) {
+      $feedback['Settings file'] = CIVICRM_SETTINGS_PATH;
+    }
+    else {
+      $feedback['Settings file'] = 'Not found';
+    }
+    if (!empty($config->configAndLogDir)) {
+      $feedback['Config and Log'] = $config->configAndLogDir;
+    }
+    else {
+      $feedback['Config and Log'] = 'Not found';
+    }
+    if (!empty($config->customPHPPathDir)) {
+      $feedback['Custom PHP'] = $config->customPHPPathDir;
+    }
+    else {
+      $feedback['Custom PHP'] = 'Not found';
+    }
+    if (!empty($config->customTemplateDir)) {
+      $feedback['Custom templates'] = $config->customTemplateDir;
+    }
+    else {
+      $feedback['Custom templates'] = 'Not found';
+    }
+    if (!empty($config->templateCompileDir)) {
+      $feedback['Compiled templates'] = $config->templateCompileDir;
+    }
+    else {
+      $feedback['Compiled templates'] = 'Not found';
+    }
+    if (!empty($config->extensionsDir)) {
+      $feedback['Extensions directory'] = $config->extensionsDir;
+    }
+    else {
+      $feedback['Extensions directory'] = 'Not found';
+    }
+    if (!empty($config->uploadDir)) {
+      $feedback['Uploads directory'] = $config->uploadDir;
+    }
+    else {
+      $feedback['Uploads directory'] = 'Not found';
+    }
+    if (!empty($config->imageUploadDir)) {
+      $feedback['Image upload directory'] = $config->imageUploadDir;
+    }
+    else {
+      $feedback['Image upload directory'] = 'Not found';
+    }
+    if (!empty($config->customFileUploadDir)) {
+      $feedback['File upload directory'] = $config->customFileUploadDir;
+    }
+    else {
+      $feedback['File upload directory'] = 'Not found';
+    }
+
+    // Render feedback.
+    $assoc_args['fields'] = array_keys($feedback);
+    $formatter = $this->formatter_get($assoc_args);
+    $formatter->display_item($feedback);
+
+    // Let's give folks a chance to exit now.
+    WP_CLI::confirm(WP_CLI::colorize('%GDo you want to continue?%n'), $assoc_args);
+
+    // ----------------------------------------------------------------------------
+    // Validate backup directory.
+    // ----------------------------------------------------------------------------
+    $backup_dir = untrailingslashit($backup_dir);
+
+    // Maybe create destination directory.
+    if (!is_dir($backup_dir)) {
+      if (!is_writable(dirname($backup_dir))) {
+        WP_CLI::error("Insufficient permission to create directory '{$backup_dir}'.");
+      }
+      WP_CLI::log("Creating directory '{$backup_dir}'.");
+      // Recursively create directory.
+      if (!@mkdir($backup_dir, 0777, TRUE)) {
+        $error = error_get_last();
+        WP_CLI::error("Failed to create directory '{$backup_dir}': {$error['message']}.");
+      }
+    }
+
+    // Sanity check.
+    if (!is_writable($backup_dir)) {
+      WP_CLI::error("'{$backup_dir}' is not writable by current user.");
+    }
+
+    // ----------------------------------------------------------------------------
+    // Backup procedure.
+    // ----------------------------------------------------------------------------
+
+    // Maybe add extra filters.
+    $also_include_args = '';
+    if (!empty($also_include)) {
+      $also_include_args = " --also-include={$also_include}";
+    }
+
+    // Use "wp civicrm db export" to export the CiviCRM database tables.
+    WP_CLI::log('');
+    WP_CLI::log(WP_CLI::colorize('%GExporting database...%n'));
+    $command = 'civicrm db export' . $also_include_args . ' --result-file=' . $backup_dir . '/civicrm-db.sql';
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+    WP_CLI::success('Database exported.');
+
+    // Back up plugin directory.
+    WP_CLI::log('');
+    WP_CLI::log(WP_CLI::colorize('%GBacking up plugin directory...%n'));
+    $plugin_path = $this->plugin_path_get();
+    if (!$this->zip_compress($plugin_path, $backup_dir . '/civicrm.zip')) {
+      WP_CLI::error('Could not compress plugin archive.');
+    }
+    WP_CLI::success('Plugin directory backed up.');
+
+    // Back up "civicrm.settings.php" file.
+    if (defined('CIVICRM_SETTINGS_PATH')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up Settings File...%n'));
+      $dest_path = $backup_dir . '/civicrm.settings.php';
+      if (file_exists($dest_path) && is_writable($dest_path)) {
+        copy(CIVICRM_SETTINGS_PATH, $dest_path);
+      }
+      elseif (!file_exists($dest_path)) {
+        copy(CIVICRM_SETTINGS_PATH, $dest_path);
+      }
+      else {
+        WP_CLI::error("Could not copy '" . CIVICRM_SETTINGS_PATH . "' to backup directory.");
+      }
+      WP_CLI::success('Settings File backed up.');
+    }
+
+    // Back up Config and Log directory.
+    if (!empty($config->configAndLogDir)) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up Config and Log directory...%n'));
+      if (!$this->zip_compress(untrailingslashit($config->configAndLogDir), $backup_dir . '/civicrm-config-log.zip')) {
+        WP_CLI::error('Could not compress Config and Log archive.');
+      }
+      WP_CLI::success('Config and Log directory backed up.');
+    }
+
+    // Back up Custom PHP directory.
+    if (!empty($config->customPHPPathDir)) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up Custom PHP directory...%n'));
+      if (!$this->zip_compress(untrailingslashit($config->customPHPPathDir), $backup_dir . '/civicrm-custom-php.zip')) {
+        WP_CLI::error('Could not compress Custom PHP archive.');
+      }
+      WP_CLI::success('Custom PHP directory backed up.');
+    }
+
+    // Back up Custom templates directory.
+    if (!empty($config->customTemplateDir)) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up Custom Templates directory...%n'));
+      if (!$this->zip_compress(untrailingslashit($config->customTemplateDir), $backup_dir . '/civicrm-custom-templates.zip')) {
+        WP_CLI::error('Could not compress Custom Templates archive.');
+      }
+      WP_CLI::success('Custom Templates directory backed up.');
+    }
+
+    // Back up Compiled templates directory.
+    if (!empty($config->templateCompileDir)) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up Compiled Templates directory...%n'));
+      if (!$this->zip_compress(untrailingslashit($config->templateCompileDir), $backup_dir . '/civicrm-compiled-templates.zip')) {
+        WP_CLI::error('Could not compress Compiled templates archive.');
+      }
+      WP_CLI::success('Compiled Templates directory backed up.');
+    }
+
+    // Back up Extensions directory.
+    if (!empty($config->extensionsDir)) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up Extensions directory...%n'));
+      if (!$this->zip_compress(untrailingslashit($config->extensionsDir), $backup_dir . '/civicrm-extensions.zip')) {
+        WP_CLI::error('Could not compress Extensions archive.');
+      }
+      WP_CLI::success('Extensions directory backed up.');
+    }
+
+    // Back up Uploads directory.
+    if (!empty($config->uploadDir)) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up Uploads directory...%n'));
+      if (!$this->zip_compress(untrailingslashit($config->uploadDir), $backup_dir . '/civicrm-uploads.zip')) {
+        WP_CLI::error('Could not compress Uploads archive.');
+      }
+      WP_CLI::success('Uploads directory backed up.');
+    }
+
+    // Back up Image upload directory.
+    if (!empty($config->imageUploadDir)) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up Image Uploads directory...%n'));
+      if (!$this->zip_compress(untrailingslashit($config->imageUploadDir), $backup_dir . '/civicrm-image-uploads.zip')) {
+        WP_CLI::error('Could not compress Image Uploads archive.');
+      }
+      WP_CLI::success('Image Uploads directory backed up.');
+    }
+
+    // Back up File Uploads directory.
+    if (!empty($config->customFileUploadDir)) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GBacking up File Uploads directory...%n'));
+      if (!$this->zip_compress(untrailingslashit($config->customFileUploadDir), $backup_dir . '/civicrm-file-uploads.zip')) {
+        WP_CLI::error('Could not compress File Uploads archive.');
+      }
+      WP_CLI::success('File Uploads directory backed up.');
+    }
+
+  }
+
+  /**
+   * Checks for a CiviCRM version or matching localization archive.
+   *
+   * ## OPTIONS
+   *
+   * [--version=<version>]
+   * : Specify the version to check. Accepts a version number, 'stable', 'rc' or 'nightly'.
+   *
+   * [--l10n]
+   * : Get the localization file data for the specified version.
+   *
+   * [--format=<format>]
+   * : Render output in a particular format.
+   * ---
+   * default: table
+   * options:
+   *   - table
+   *   - json
+   *   - url
+   *   - version
+   * ---
+   *
+   * ## EXAMPLES
+   *
+   *     # Check for a stable version of CiviCRM
+   *     $ wp civicrm core check-version --version=5.17.2
+   *     +-----------+---------+-------------------------------------------------------------------------------------------+
+   *     | Package   | Version | Package URL                                                                               |
+   *     +-----------+---------+-------------------------------------------------------------------------------------------+
+   *     | WordPress | 5.17.2  | https://storage.googleapis.com/civicrm/civicrm-stable/5.17.2/civicrm-5.17.2-wordpress.zip |
+   *     | L10n      | 5.17.2  | https://storage.googleapis.com/civicrm/civicrm-stable/5.17.2/civicrm-5.17.2-l10n.tar.gz   |
+   *     +-----------+---------+-------------------------------------------------------------------------------------------+
+   *
+   *     # Get the URL for a stable version of CiviCRM
+   *     $ wp civicrm core check-version --version=5.17.2 --format=url
+   *     https://storage.googleapis.com/civicrm/civicrm-stable/5.17.2/civicrm-5.17.2-wordpress.zip
+   *
+   *     # Get the URL for a stable version of the CiviCRM localisation archive
+   *     $ wp civicrm core check-version --version=5.17.2 --format=url --l10n
+   *     https://storage.googleapis.com/civicrm/civicrm-stable/5.17.2/civicrm-5.17.2-l10n.tar.gz
+   *
+   *     # Get the JSON-formatted data for a stable version of CiviCRM
+   *     $ wp civicrm core check-version --version=5.17.2 --format=json
+   *     {"version":"5.17.2","tar":{"L10n":"civicrm-stable\/5.17.2\/civicrm-5.17.2-l10n.tar.gz","WordPress":"civicrm-stable\/5.17.2\/civicrm-5.17.2-wordpress.zip"}}
+   *
+   *     # Get the latest nightly version of CiviCRM
+   *     $ wp civicrm core check-version --version=nightly --format=version
+   *     5.59.alpha1
+   *
+   * @subcommand check-version
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function check_version($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $version = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'version', 'stable');
+    $l10n = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'l10n', FALSE);
+    $format = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'format', 'table');
+
+    // Pass to "check-update" for "stable", "rc" or "nightly".
+    if (in_array($version, ['stable', 'rc', 'nightly'])) {
+      $options = ['launch' => FALSE, 'return' => FALSE];
+      $command = 'civicrm core check-update --version=' . $version . ' --format=' . $format . (empty($l10n) ? '' : ' --l10n');
+      WP_CLI::runcommand($command, $options);
+      return;
+    }
+
+    // Check for valid release.
+    $versions = $this->releases_get();
+    if (!in_array($version, $versions)) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Version %Y%s%n is not a valid CiviCRM version.'), $version));
+    }
+
+    // Get the release data.
+    $data = $this->release_data_get($version);
+
+    switch ($format) {
+
+      // URL-only output.
+      case 'url':
+        if ($l10n) {
+          echo $this->google_download_url . $data['L10n'] . "\n";
+        }
+        else {
+          echo $this->google_download_url . $data['WordPress'] . "\n";
+        }
+        break;
+
+      // Version-only output.
+      case 'version':
+        echo $version . "\n";
+        break;
+
+      // Display output as json.
+      case 'json':
+        // Use a similar format to the Version Check API.
+        $info = [
+          'version' => $version,
+          'tar' => $data,
+        ];
+        $json = json_encode($info);
+        if (JSON_ERROR_NONE !== json_last_error()) {
+          WP_CLI::error(sprintf(WP_CLI::colorize('Failed to encode JSON: %Y%s.%n'), json_last_error_msg()));
+        }
+        echo $json . "\n";
+        break;
+
+      // Display output as table (default).
+      case 'table':
+      default:
+        // Build the rows.
+        $rows = [];
+        $fields = ['Package', 'Version', 'Package URL'];
+        $rows[] = [
+          'Package' => 'WordPress',
+          'Version' => $version,
+          'Package URL' => $this->google_download_url . $data['WordPress'],
+        ];
+        $rows[] = [
+          'Package'  => 'L10n',
+          'Version' => $version,
+          'Package URL' => $this->google_download_url . $data['L10n'],
+        ];
+
+        // Display the rows.
+        $args = ['format' => $format];
+        $formatter = new \WP_CLI\Formatter($args, $fields);
+        $formatter->display_items($rows);
+
+    }
+
+  }
+
+  /**
+   * Checks for CiviCRM updates via Version Check API.
+   *
+   * ## OPTIONS
+   *
+   * [--version=<version>]
+   * : Specify the version to get.
+   * ---
+   * default: stable
+   * options:
+   *   - nightly
+   *   - rc
+   *   - stable
+   * ---
+   *
+   * [--l10n]
+   * : Get the localization file data for the specified version.
+   *
+   * [--format=<format>]
+   * : Render output in a particular format.
+   * ---
+   * default: table
+   * options:
+   *   - table
+   *   - json
+   *   - url
+   *   - version
+   * ---
+   *
+   * ## EXAMPLES
+   *
+   *     # Check for the latest stable version of CiviCRM
+   *     $ wp civicrm core check-update
+   *     +-----------+---------+-------------------------------------------------------------------------------------------+
+   *     | Package   | Version | Package URL                                                                               |
+   *     +-----------+---------+-------------------------------------------------------------------------------------------+
+   *     | WordPress | 5.67.0  | https://storage.googleapis.com/civicrm/civicrm-stable/5.67.0/civicrm-5.67.0-wordpress.zip |
+   *     | L10n      | 5.67.0  | https://storage.googleapis.com/civicrm/civicrm-stable/5.67.0/civicrm-5.67.0-l10n.tar.gz   |
+   *     +-----------+---------+-------------------------------------------------------------------------------------------+
+   *
+   *     # Get the URL for the latest stable version of CiviCRM core
+   *     $ wp civicrm core check-update --format=url
+   *     https://storage.googleapis.com/civicrm/civicrm-stable/5.67.0/civicrm-5.67.0-wordpress.zip
+   *
+   *     # Get the URL for the latest stable version of CiviCRM localisation archive
+   *     $ wp civicrm core check-update --format=url --l10n
+   *     https://storage.googleapis.com/civicrm/civicrm-stable/5.67.0/civicrm-5.67.0-l10n.tar.gz
+   *
+   *     # Get the complete JSON-formatted data for the latest RC version of CiviCRM core
+   *     $ wp civicrm core check-update --version=rc --format=json
+   *     {"version":"5.58.beta1","rev":"5.58.beta1-202301260741" [...] "pretty":"Thu, 26 Jan 2023 07:41:00 +0000"}}
+   *
+   * @subcommand check-update
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function check_update($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $version = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'version', 'stable');
+    $l10n = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'l10n', FALSE);
+    $format = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'format', 'table');
+
+    // Look up the data.
+    $url = $this->upgrade_url . '?stability=' . $version;
+    $response = $this->http_get_response($url);
+
+    // Try and decode response.
+    $lookup = json_decode($response, TRUE);
+    if (JSON_ERROR_NONE !== json_last_error()) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to decode JSON: %Y%s.%n'), json_last_error_msg()));
+    }
+
+    // Sanity checks.
+    if (empty($lookup)) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Version not found at: %Y%s%n'), $url));
+    }
+    if (empty($lookup['tar']['WordPress'])) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('No WordPress version found at: %Y%s%n'), $url));
+    }
+
+    switch ($format) {
+
+      // URL-only output.
+      case 'url':
+        if ($l10n) {
+          echo $lookup['tar']['L10n'] . "\n";
+        }
+        else {
+          echo $lookup['tar']['WordPress'] . "\n";
+        }
+        break;
+
+      // Version-only output.
+      case 'version':
+        echo $lookup['version'] . "\n";
+        break;
+
+      // Display output as json.
+      case 'json':
+        echo $response . "\n";
+        break;
+
+      // Display output as table (default).
+      case 'table':
+      default:
+        // Build the rows.
+        $rows = [];
+        $fields = ['Package', 'Version', 'Package URL'];
+        $rows[] = [
+          'Package' => 'WordPress',
+          'Version' => $lookup['version'],
+          'Package URL' => $lookup['tar']['WordPress'],
+        ];
+        $rows[] = [
+          'Package' => 'L10n',
+          'Version' => $lookup['version'],
+          'Package URL' => $lookup['tar']['L10n'],
+        ];
+
+        // Display the rows.
+        $args = ['format' => $format];
+        $formatter = new \WP_CLI\Formatter($args, $fields);
+        $formatter->display_items($rows);
+
+    }
+
+  }
+
+  /**
+   * Downloads CiviCRM core files or localization files.
+   *
+   * Downloads and extracts CiviCRM core files or localization files to the
+   * specified path. Uses the local temp directory when no path is specified.
+   *
+   * ## OPTIONS
+   *
+   * [--version=<version>]
+   * : Specify the CiviCRM version to get. Accepts a version number, 'stable', 'rc' or 'nightly'. Defaults to latest stable version.
+   *
+   * [--l10n]
+   * : Get the localization file for the specified version.
+   *
+   * [--destination=<destination>]
+   * : Specify the absolute path to put the archive file. Defaults to local temp directory.
+   *
+   * [--insecure]
+   * : Retry without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack.
+   *
+   * [--extract]
+   * : Whether to extract the downloaded file. Defaults to false.
+   *
+   * ## EXAMPLES
+   *
+   *     # Download the latest stable CiviCRM core archive.
+   *     $ wp civicrm core download
+   *     Checking file to download...
+   *     Downloading file...
+   *     Success: CiviCRM downloaded to /tmp/
+   *
+   *     # Download and extract a stable CiviCRM core archive to a directory.
+   *     $ wp civicrm core download --version=5.17.2 --extract --destination=/some/path
+   *     Checking file to download...
+   *     Downloading file...
+   *     Extracting zip archive...
+   *     Success: CiviCRM downloaded and extracted to: /some/path/
+   *
+   *     # Quietly download a stable CiviCRM core archive.
+   *     $ wp civicrm core download --version=5.17.2 --quiet
+   *     /tmp/civicrm-5.17.2-wordpress.zip
+   *
+   *     # Download and extract a stable CiviCRM localization archive to a directory.
+   *     $ wp civicrm core download --version=5.17.2 --l10n --extract --destination=/some/path
+   *     Checking file to download...
+   *     Downloading file...
+   *     Extracting tar.gz archive...
+   *     Success: CiviCRM localization downloaded and extracted to: /some/path/
+   *
+   *     # Quietly download a stable CiviCRM localization archive.
+   *     $ wp civicrm core download --version=5.17.2 --l10n --quiet
+   *     /tmp/civicrm-5.17.2-l10n.tar.gz
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function download($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $version = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'version', 'stable');
+    $l10n = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'l10n', FALSE);
+    $download_dir = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'destination', \WP_CLI\Utils\get_temp_dir());
+    $insecure = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'insecure', FALSE);
+    $extract = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'extract', FALSE);
+
+    // Maybe create destination directory.
+    if (!is_dir($download_dir)) {
+      if (!is_writable(dirname($download_dir))) {
+        WP_CLI::error("Insufficient permission to create directory '{$download_dir}'.");
+      }
+      WP_CLI::log("Creating directory '{$download_dir}'.");
+      // Recursively create directory.
+      if (!@mkdir($download_dir, 0777, TRUE)) {
+        $error = error_get_last();
+        WP_CLI::error("Failed to create directory '{$download_dir}': {$error['message']}.");
+      }
+    }
+
+    // Sanity check.
+    if (!is_writable($download_dir)) {
+      WP_CLI::error("'{$download_dir}' is not writable by current user.");
+    }
+
+    // Use "wp civicrm core check-version" to find out which file to download.
+    WP_CLI::log(WP_CLI::colorize('%GChecking' . (empty($l10n) ? '' : ' localization') . ' file to download...%n'));
+    $options = ['launch' => FALSE, 'return' => TRUE];
+    $command = 'civicrm core check-version --version=' . $version . ' --format=url' . (empty($l10n) ? '' : ' --l10n');
+    $url = WP_CLI::runcommand($command, $options);
+
+    // Configure the download.
+    $headers = [];
+    $options = [
+      'insecure' => (bool) $insecure,
+    ];
+
+    // Do the download now.
+    WP_CLI::log(WP_CLI::colorize('%GDownloading file...%n'));
+    $archive = $this->file_download($url, $download_dir, $headers, $options);
+
+    // Stop early if not extracting.
+    if (empty($extract)) {
+      if (empty($l10n)) {
+        WP_CLI::success(sprintf(WP_CLI::colorize('CiviCRM downloaded to: %Y%s%n'), $download_dir));
+      }
+      else {
+        WP_CLI::success(sprintf(WP_CLI::colorize('CiviCRM localization downloaded to: %Y%s%n'), $download_dir));
+      }
+      if (!empty(WP_CLI::get_config('quiet'))) {
+        echo $archive . "\n";
+      }
+      WP_CLI::halt(0);
+    }
+
+    // Extract the download.
+    if (empty($l10n)) {
+      if (!$this->unzip($archive, $download_dir)) {
+        WP_CLI::error('Could not extract zipfile.');
+      }
+      WP_CLI::success(sprintf(WP_CLI::colorize('CiviCRM downloaded and extracted to: %Y%s%n'), $download_dir));
+    }
+    else {
+      if (!$this->untar($archive, $download_dir)) {
+        WP_CLI::error('Could not extract tarfile.');
+      }
+      WP_CLI::success(sprintf(WP_CLI::colorize('CiviCRM localization downloaded and extracted to: %Y%s%n'), $download_dir));
+    }
+
+  }
+
+  /**
+   * Install the CiviCRM plugin.
+   *
+   * This command obviously can't be used until the CiviCRM plugin has been installed.
+   * It is included here for completeness and in preparation for creating a package.
+   * If you want to use this command, you can install the CLI Tools for CiviCRM plugin
+   * so that no conflicts occur when you call it.
+   *
+   * ## OPTIONS
+   *
+   * [--version=<version>]
+   * : Specify the CiviCRM version to get. Accepts a version number, 'stable', 'rc' or 'nightly'. Defaults to latest stable version.
+   *
+   * [--zipfile=<zipfile>]
+   * : Path to your CiviCRM zip file. If specified --version is ignored.
+   *
+   * [--l10n]
+   * : Additionally install the localization files for the specified version.
+   *
+   * [--l10n-tarfile=<l10n-tarfile>]
+   * : Path to your l10n tar.gz file. If specified --l10n is ignored.
+   *
+   * [--force]
+   * : If set, the command will overwrite any installed version of the plugin, without prompting for confirmation.
+   *
+   * ## EXAMPLES
+   *
+   *     # Install the current stable version of CiviCRM.
+   *     $ wp civicrm core install
+   *     Success: Installed 1 of 1 plugins.
+   *
+   *     # Install the current stable version of CiviCRM with localization files.
+   *     $ wp civicrm core install --l10n
+   *     Success: Installed 1 of 1 plugins.
+   *     Success: CiviCRM localization downloaded and extracted to: /wp-content/plugins/civicrm
+   *
+   *     # Install a specific version of CiviCRM.
+   *     $ wp civicrm core install --version=5.56.2
+   *     Success: Installed 1 of 1 plugins.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function install($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $version = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'version', 'stable');
+    $zipfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'zipfile', '');
+    $l10n = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'l10n', '');
+    $l10n_tarfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'l10n-tarfile', '');
+    $force = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'force', FALSE);
+
+    // Get the path to the CiviCRM plugin directory.
+    $plugin_path = $this->plugin_path_get();
+
+    // Only install plugin if not already installed.
+    $fetcher = new \WP_CLI\Fetchers\Plugin();
+    $installed = $fetcher->get('civicrm');
+    if (!$installed || !empty($force)) {
+
+      // When no zipfile is specified.
+      if (!empty($version) && empty($zipfile)) {
+
+        // Use "wp civicrm core check-version" to find out which file to download.
+        WP_CLI::log(WP_CLI::colorize('%GChecking plugin file to download...%n'));
+        $options = ['launch' => FALSE, 'return' => TRUE];
+        $command = 'civicrm core check-version --version=' . $version . ' --format=url';
+        $url = WP_CLI::runcommand($command, $options);
+
+        // Use "wp plugin install" to install CiviCRM core.
+        $options = ['launch' => FALSE, 'return' => FALSE];
+        $command = 'plugin install ' . $url . (empty($force) ? '' : ' --force');
+        WP_CLI::runcommand($command, $options);
+
+      }
+      elseif (!empty($zipfile)) {
+
+        // Default extraction options.
+        $extract_options = [
+          'clear_destination' => FALSE,
+          'clear_working' => FALSE,
+        ];
+
+        // If forcing, overwrite existing CiviCRM plugin directory.
+        if (!empty($force)) {
+          $extract_options['clear_destination'] = TRUE;
+        }
+
+        // Let's do it.
+        $this->zip_extract($zipfile, $plugin_path, $extract_options);
+
+      }
+
+    }
+    elseif (empty($l10n) && empty($l10n_tarfile)) {
+
+      // Bail when plugin is installed and no localization archive is specified.
+      WP_CLI::error('CiviCRM is already installed.');
+
+    }
+
+    // When localization is wanted but no archive is specified.
+    if (!empty($l10n) && empty($l10n_tarfile)) {
+
+      // Use "wp civicrm core check-version" to find out which file to download.
+      $options = ['launch' => FALSE, 'return' => TRUE];
+      $command = 'civicrm core check-version --version=' . $version . ' --l10n --format=url';
+      $url = WP_CLI::runcommand($command, $options);
+
+      // Use "wp civicrm core download" to download and extract.
+      $options = ['launch' => FALSE, 'return' => FALSE];
+      $command = 'civicrm core download --version=' . $version . ' --l10n --extract --destination=' . $plugin_path;
+      WP_CLI::runcommand($command, $options);
+
+    }
+    elseif (!empty($l10n_tarfile)) {
+
+      // Extract localization archive to plugin directory.
+      WP_CLI::log(sprintf(WP_CLI::colorize('Extracting localization archive to: %y%s%n'), $plugin_path));
+      if (!$this->untar($l10n_tarfile, $plugin_path)) {
+        WP_CLI::error('Could not extract localization archive.');
+      }
+      WP_CLI::success(sprintf(WP_CLI::colorize('CiviCRM localization files extracted to: %Y%s%n'), $plugin_path));
+
+    }
+
+  }
+
+  /**
+   * Restore the CiviCRM plugin files and database from a backup created with `wp civicrm backup`.
+   *
+   * ## OPTIONS
+   *
+   * [--backup-dir=<backup-dir>]
+   * : Path to your CiviCRM backup directory. Default is one level above ABSPATH.
+   *
+   * [--also-include=<also-include>]
+   * : Comma separated list of additional tables to restore based on wildcard search. Ensures existing tables are cleared.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     # Standard restore.
+   *     $ wp civicrm core restore
+   *     Gathering system information.
+   *     +------------------------+-----------------------------------------------------------------------+
+   *     | Field                  | Value                                                                 |
+   *     +------------------------+-----------------------------------------------------------------------+
+   *     | Backup directory       | /example.com/civicrm-backup                                           |
+   *     | Plugin path            | /example.com/httpdocs/wp-content/plugins/civicrm/                     |
+   *     | Database name          | civicrm_db                                                            |
+   *     | Database username      | dbuser                                                                |
+   *     | Database password      | dbpassword                                                            |
+   *     | Database host          | localhost                                                             |
+   *     | Settings file          | /example.com/httpdocs/wp-content/uploads/civicrm/civicrm.settings.php |
+   *     | Config and Log         | /example.com/httpdocs/wp-content/uploads/civicrm/ConfigAndLog/        |
+   *     | Custom PHP             | Not found                                                             |
+   *     | Custom templates       | Not found                                                             |
+   *     | Compiled templates     | /example.com/httpdocs/wp-content/uploads/civicrm/templates_c/         |
+   *     | Extensions directory   | /example.com/httpdocs/wp-content/uploads/civicrm/ext/                 |
+   *     | Uploads directory      | /example.com/httpdocs/wp-content/uploads/civicrm/upload/              |
+   *     | Image upload directory | /example.com/httpdocs/wp-content/uploads/civicrm/persist/contribute/  |
+   *     | File upload directory  | /example.com/httpdocs/wp-content/uploads/civicrm/custom/              |
+   *     +------------------------+-----------------------------------------------------------------------+
+   *     Do you want to continue? [y/n] y
+   *
+   *     # Also restore tables not registered with CiviCRM.
+   *     # In this case, also correctly restores tables for the "Canadian Tax Receipts" extension.
+   *     $ wp civicrm core restore --also-include='cdntaxreceipts_*'
+   *     ...
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function restore($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $backup_dir = \WP_CLI\Utils\get_flag_value($assoc_args, 'backup-dir', trailingslashit(dirname(ABSPATH)) . 'civicrm-backup');
+    $also_include = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'also-include', '');
+
+    // ----------------------------------------------------------------------------
+    // Build feedback table.
+    // ----------------------------------------------------------------------------
+    WP_CLI::log(WP_CLI::colorize('%GGathering system information.%n'));
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    // Let's have a look for some CiviCRM variables.
+    $config = CRM_Core_Config::singleton();
+
+    // Build feedback.
+    $feedback = [];
+    if (!empty($backup_dir)) {
+      $feedback['Backup directory'] = $backup_dir;
+    }
+    if (defined('CIVICRM_PLUGIN_DIR')) {
+      $feedback['Plugin path'] = CIVICRM_PLUGIN_DIR;
+    }
+    else {
+      $feedback['Plugin path'] = 'Not found';
+    }
+    if (defined('CIVICRM_DSN')) {
+      $dsn = DB::parseDSN(CIVICRM_DSN);
+      $feedback['Database name'] = $dsn['database'];
+      $feedback['Database username'] = $dsn['username'];
+      $feedback['Database password'] = $dsn['password'];
+      $feedback['Database host'] = $dsn['hostspec'];
+    }
+    else {
+      $feedback['Database Settings'] = 'Not found';
+    }
+    if (defined('CIVICRM_SETTINGS_PATH')) {
+      $feedback['Settings file'] = CIVICRM_SETTINGS_PATH;
+    }
+    else {
+      $feedback['Settings file'] = 'Not found';
+    }
+    if (!empty($config->configAndLogDir)) {
+      $feedback['Config and Log'] = $config->configAndLogDir;
+    }
+    else {
+      $feedback['Config and Log'] = 'Not found';
+    }
+    if (!empty($config->customPHPPathDir)) {
+      $feedback['Custom PHP'] = $config->customPHPPathDir;
+    }
+    else {
+      $feedback['Custom PHP'] = 'Not found';
+    }
+    if (!empty($config->customTemplateDir)) {
+      $feedback['Custom templates'] = $config->customTemplateDir;
+    }
+    else {
+      $feedback['Custom templates'] = 'Not found';
+    }
+    if (!empty($config->templateCompileDir)) {
+      $feedback['Compiled templates'] = $config->templateCompileDir;
+    }
+    else {
+      $feedback['Compiled templates'] = 'Not found';
+    }
+    if (!empty($config->extensionsDir)) {
+      $feedback['Extensions directory'] = $config->extensionsDir;
+    }
+    else {
+      $feedback['Extensions directory'] = 'Not found';
+    }
+    if (!empty($config->uploadDir)) {
+      $feedback['Uploads directory'] = $config->uploadDir;
+    }
+    else {
+      $feedback['Uploads directory'] = 'Not found';
+    }
+    if (!empty($config->imageUploadDir)) {
+      $feedback['Image upload directory'] = $config->imageUploadDir;
+    }
+    else {
+      $feedback['Image upload directory'] = 'Not found';
+    }
+    if (!empty($config->customFileUploadDir)) {
+      $feedback['File upload directory'] = $config->customFileUploadDir;
+    }
+    else {
+      $feedback['File upload directory'] = 'Not found';
+    }
+
+    // Render feedback.
+    $assoc_args['fields'] = array_keys($feedback);
+    $formatter = $this->formatter_get($assoc_args);
+    $formatter->display_item($feedback);
+
+    // Let's give folks a chance to exit now.
+    WP_CLI::confirm(WP_CLI::colorize('%GDo you want to continue?%n'), $assoc_args);
+
+    // Ensure there's no trailing slash.
+    $backup_dir = untrailingslashit($backup_dir);
+
+    // ----------------------------------------------------------------------------
+    // Restore procedure.
+    // ----------------------------------------------------------------------------
+
+    // Restore File Uploads directory.
+    if (!empty($config->customFileUploadDir) && file_exists($backup_dir . '/civicrm-file-uploads.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring File Uploads directory...%n'));
+      $zipfile = $backup_dir . '/civicrm-file-uploads.zip';
+      $destination = untrailingslashit($config->customFileUploadDir);
+      $this->zip_overwrite($zipfile, $destination);
+      WP_CLI::success('File Uploads directory restored.');
+    }
+
+    // Restore Image upload directory.
+    if (!empty($config->imageUploadDir) && file_exists($backup_dir . '/civicrm-image-uploads.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring Image Uploads directory...%n'));
+      $zipfile = $backup_dir . '/civicrm-image-uploads.zip';
+      $destination = untrailingslashit($config->imageUploadDir);
+      $this->zip_overwrite($zipfile, $destination);
+      WP_CLI::success('Image Uploads directory restored.');
+    }
+
+    // Restore Uploads directory.
+    if (!empty($config->uploadDir) && file_exists($backup_dir . '/civicrm-uploads.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring Uploads directory...%n'));
+      $zipfile = $backup_dir . '/civicrm-uploads.zip';
+      $destination = untrailingslashit($config->uploadDir);
+      $this->zip_overwrite($zipfile, $destination);
+      WP_CLI::success('Uploads directory restored.');
+    }
+
+    // Restore Extensions directory.
+    if (!empty($config->extensionsDir) && file_exists($backup_dir . '/civicrm-extensions.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring Extensions directory...%n'));
+      $zipfile = $backup_dir . '/civicrm-extensions.zip';
+      $destination = untrailingslashit($config->extensionsDir);
+      $this->zip_overwrite($zipfile, $destination);
+      WP_CLI::success('Extensions directory restored.');
+    }
+
+    // Restore Compiled templates directory.
+    if (!empty($config->templateCompileDir) && file_exists($backup_dir . '/civicrm-compiled-templates.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring Compiled Templates directory...%n'));
+      $zipfile = $backup_dir . '/civicrm-compiled-templates.zip';
+      $destination = untrailingslashit($config->templateCompileDir);
+      $this->zip_overwrite($zipfile, $destination);
+      WP_CLI::success('Compiled Templates directory restored.');
+    }
+
+    // Restore Custom templates directory.
+    if (!empty($config->customTemplateDir) && file_exists($backup_dir . '/civicrm-custom-templates.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring Custom Templates directory...%n'));
+      $zipfile = $backup_dir . '/civicrm-custom-templates.zip';
+      $destination = untrailingslashit($config->customTemplateDir);
+      $this->zip_overwrite($zipfile, $destination);
+      WP_CLI::success('Custom Templates directory restored.');
+    }
+
+    // Restore Custom PHP directory.
+    if (!empty($config->customPHPPathDir) && file_exists($backup_dir . '/civicrm-custom-php.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring Custom PHP directory...%n'));
+      $zipfile = $backup_dir . '/civicrm-custom-php.zip';
+      $destination = untrailingslashit($config->customPHPPathDir);
+      $this->zip_overwrite($zipfile, $destination);
+      WP_CLI::success('Custom PHP directory restored.');
+    }
+
+    // Restore Config and Log directory.
+    if (!empty($config->configAndLogDir) && file_exists($backup_dir . '/civicrm-config-log.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring Config and Log directory...%n'));
+      $zipfile = $backup_dir . '/civicrm-config-log.zip';
+      $destination = untrailingslashit($config->configAndLogDir);
+      $this->zip_overwrite($zipfile, $destination);
+      WP_CLI::success('Config and Log directory restored.');
+    }
+
+    // Restore "civicrm.settings.php" file.
+    if (defined('CIVICRM_SETTINGS_PATH') && file_exists($backup_dir . '/civicrm.settings.php')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring Settings File...%n'));
+      $source_path = $backup_dir . '/civicrm.settings.php';
+      if (file_exists(CIVICRM_SETTINGS_PATH) && is_writable(CIVICRM_SETTINGS_PATH)) {
+        copy(CIVICRM_SETTINGS_PATH, $source_path);
+      }
+      elseif (!file_exists(CIVICRM_SETTINGS_PATH)) {
+        copy($source_path, CIVICRM_SETTINGS_PATH);
+      }
+      else {
+        WP_CLI::error("Could not restore '" . CIVICRM_SETTINGS_PATH . "' from backup directory.");
+      }
+      WP_CLI::success('Settings File restored.');
+    }
+
+    // Use "wp plugin install" to restore plugin directory.
+    if (file_exists($backup_dir . '/civicrm.zip')) {
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring plugin directory...%n'));
+      $options = ['launch' => FALSE, 'return' => FALSE];
+      $command = 'plugin install ' . $backup_dir . '/civicrm.zip --force';
+      WP_CLI::runcommand($command, $options);
+      WP_CLI::success('Plugin directory restored.');
+    }
+
+    // Use "wp civicrm db clear" and "wp civicrm db import" to restore database.
+    if (defined('CIVICRM_DSN') && file_exists($backup_dir . '/civicrm-db.sql')) {
+
+      WP_CLI::log('');
+      WP_CLI::log(WP_CLI::colorize('%GRestoring database...%n'));
+
+      // Maybe add extra filters.
+      $also_include_args = '';
+      if (!empty($also_include)) {
+        $also_include_args = " --also-include={$also_include}";
+      }
+
+      // Clear existing tables.
+      $command = 'civicrm db clear' . $also_include_args;
+      $options = ['launch' => FALSE, 'return' => FALSE];
+      WP_CLI::runcommand($command, $options);
+
+      // Load backup tables.
+      $command = 'civicrm db import --load-file=' . $backup_dir . '/civicrm-db.sql';
+      $options = ['launch' => FALSE, 'return' => FALSE];
+      WP_CLI::runcommand($command, $options);
+
+      WP_CLI::success('Database restored.');
+
+    }
+
+  }
+
+  /**
+   * Upgrade the CiviCRM plugin files and database.
+   *
+   * ## OPTIONS
+   *
+   * [--version=<version>]
+   * : Specify the CiviCRM version to get. Accepts a version number, 'stable', 'rc' or 'nightly'. Defaults to latest stable version.
+   *
+   * [--zipfile=<zipfile>]
+   * : Path to your CiviCRM zip file. If specified --version is ignored.
+   *
+   * [--l10n]
+   * : Additionally install the localization files for the specified version.
+   *
+   * [--l10n-tarfile=<l10n-tarfile>]
+   * : Path to your l10n tar.gz file. If specified --l10n is ignored.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     # Update to the current stable version of CiviCRM.
+   *     $ wp civicrm core update
+   *     Success: Installed 1 of 1 plugins.
+   *
+   * @alias upgrade
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function update($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $version = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'version', 'stable');
+    $zipfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'zipfile', '');
+    $l10n = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'l10n', '');
+    $l10n_tarfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'l10n-tarfile', '');
+
+    WP_CLI::log(WP_CLI::colorize('%GGathering system information.%n'));
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    // Let's have a look for some CiviCRM variables.
+    global $civicrm_root;
+    $config = CRM_Core_Config::singleton();
+
+    // ----------------------------------------------------------------------------
+    // Build feedback table.
+    // ----------------------------------------------------------------------------
+
+    // Build feedback.
+    $feedback = [];
+    if (!empty($zipfile)) {
+      $feedback['Plugin zip archive'] = $zipfile;
+    }
+    if (!empty($version) && empty($zipfile)) {
+      $feedback['Requested version'] = $version;
+      $options = ['launch' => FALSE, 'return' => TRUE];
+      $command = 'civicrm core check-version --version=' . $version . ' --format=url';
+      $archive = WP_CLI::runcommand($command, $options);
+      // Maybe strip all the Google authentication stuff if present.
+      if (FALSE !== strpos($archive, '?')) {
+        $arr = explode('?', $archive);
+        $archive = $arr[0];
+      }
+      $feedback['Requested archive'] = $archive;
+    }
+    if (defined('CIVICRM_PLUGIN_DIR')) {
+      $feedback['Plugin path'] = CIVICRM_PLUGIN_DIR;
+    }
+    if (!empty($civicrm_root)) {
+      $feedback['CiviCRM root'] = $civicrm_root;
+    }
+    if (defined('CIVICRM_DSN')) {
+      $dsn = DB::parseDSN(CIVICRM_DSN);
+      $feedback['Database name'] = $dsn['database'];
+      $feedback['Database username'] = $dsn['username'];
+      $feedback['Database password'] = $dsn['password'];
+      $feedback['Database host'] = $dsn['hostspec'];
+    }
+
+    // Render feedback.
+    $assoc_args['fields'] = array_keys($feedback);
+    $formatter = $this->formatter_get($assoc_args);
+    $formatter->display_item($feedback);
+
+    // Let's give folks a chance to exit now.
+    WP_CLI::confirm(WP_CLI::colorize('%GDo you want to continue?%n'), $assoc_args);
+
+    // ----------------------------------------------------------------------------
+    // Start upgrade.
+    // ----------------------------------------------------------------------------
+
+    // Enable Maintenance Mode.
+    //WP_CLI::runcommand('maintenance-mode activate', ['launch' => FALSE, 'return' => FALSE]);
+
+    // Build install command.
+    $command = 'civicrm core install' .
+      (empty($version) ? '' : ' --version=' . $version) .
+      (empty($zipfile) ? '' : ' --zipfile=' . $zipfile) .
+      (empty($l10n) ? '' : ' --l10n') .
+      (empty($langtarfile) ? '' : ' --l10n-tarfile=' . $langtarfile) .
+      ' --force';
+
+    // Run "wp civicrm core install".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+    // Disable Maintenance Mode.
+    //WP_CLI::runcommand('maintenance-mode deactivate', ['launch' => FALSE, 'return' => FALSE]);
+
+  }
+
+  /**
+   * Upgrade the CiviCRM database schema.
+   *
+   * ## OPTIONS
+   *
+   * [--dry-run]
+   * : Preview the list of upgrade tasks.
+   *
+   * [--retry]
+   * : Resume a failed upgrade, retrying the last step.
+   *
+   * [--skip]
+   * : Resume a failed upgrade, skipping the last step.
+   *
+   * [--step]
+   * : Run the upgrade queue in steps, pausing before each step.
+   *
+   * [--v]
+   * : Run the upgrade queue with verbose output.
+   *
+   * [--vv]
+   * : Run the upgrade queue with extra verbose output.
+   *
+   * [--vvv]
+   * : An alias of --vv for old timers more used to cv syntax.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation messages. Does not apply to step messages.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm core update-db --dry-run --v
+   *     Found CiviCRM code version: 5.57.1
+   *     Found CiviCRM database version: 5.57.0
+   *     Checking pre-upgrade messages.
+   *     (No messages)
+   *     Dropping SQL triggers.
+   *     Preparing upgrade.
+   *     Executing upgrade.
+   *     Cleanup old files
+   *     Cleanup old upgrade snapshots
+   *     Checking extensions
+   *     Finish Upgrade DB to 5.57.1
+   *     Update all reserved message templates
+   *     Finish core DB updates 5.57.1
+   *     Assess extension upgrades
+   *     Generate final messages
+   *     Finishing upgrade.
+   *     Upgrade to 5.57.1 completed.
+   *     Checking post-upgrade messages.
+   *     (No messages)
+   *     Have a nice day.
+   *
+   * @subcommand update-db
+   *
+   * @alias upgrade-db
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function update_db($args, $assoc_args) {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    if (!defined('CIVICRM_UPGRADE_ACTIVE')) {
+      define('CIVICRM_UPGRADE_ACTIVE', 1);
+    }
+
+    // Check whether an upgrade is necessary.
+    $code_version = CRM_Utils_System::version();
+    WP_CLI::log(sprintf(WP_CLI::colorize('%GFound CiviCRM code version:%n %Y%s%n'), $code_version));
+    $db_version = CRM_Core_BAO_Domain::version();
+    WP_CLI::log(sprintf(WP_CLI::colorize('%GFound CiviCRM database version:%n %Y%s%n'), $db_version));
+    if (version_compare($code_version, $db_version) === 0) {
+      WP_CLI::success(sprintf('You are already upgraded to CiviCRM %s', $code_version));
+      WP_CLI::halt(0);
+    }
+
+    // Get flags.
+    $dry_run = \WP_CLI\Utils\get_flag_value($assoc_args, 'dry-run', FALSE);
+    $retry = \WP_CLI\Utils\get_flag_value($assoc_args, 'retry', FALSE);
+    $skip = \WP_CLI\Utils\get_flag_value($assoc_args, 'skip', FALSE);
+    $step = \WP_CLI\Utils\get_flag_value($assoc_args, 'step', FALSE);
+    $first_try = (empty($retry) && empty($skip)) ? TRUE : FALSE;
+
+    // Get verbosity.
+    $verbose = \WP_CLI\Utils\get_flag_value($assoc_args, 'v', FALSE);
+    $verbose_extra = \WP_CLI\Utils\get_flag_value($assoc_args, 'vv', FALSE);
+    $verbose_old_skool = \WP_CLI\Utils\get_flag_value($assoc_args, 'vvv', FALSE);
+    if (!empty($verbose_old_skool)) {
+      $verbose_extra = TRUE;
+    }
+
+    // When stepping, we need at least "verbose".
+    if (!empty($step)) {
+      if (empty($verbose_extra) && empty($verbose)) {
+        $verbose = TRUE;
+      }
+    }
+
+    // Bail if incomplete upgrade.
+    if ($first_try && FALSE !== stripos($db_version, 'upgrade')) {
+      WP_CLI::error('Cannot begin upgrade: The database indicates that an incomplete upgrade is pending. If you would like to resume, use --retry or --skip.');
+    }
+
+    // Bootstrap upgrader.
+    $upgrade = new CRM_Upgrade_Form();
+    $error = $upgrade->checkUpgradeableVersion($db_version, $code_version);
+    if (!empty($error)) {
+      WP_CLI::error($error);
+    }
+
+    // Check pre-upgrade messages.
+    if ($first_try) {
+      WP_CLI::log(WP_CLI::colorize('%gChecking pre-upgrade messages.%n'));
+      $preUpgradeMessage = NULL;
+      $upgrade->setPreUpgradeMessage($preUpgradeMessage, $db_version, $code_version);
+      if ($preUpgradeMessage) {
+        WP_CLI::log(CRM_Utils_String::htmlToText($preUpgradeMessage));
+        WP_CLI::confirm(WP_CLI::colorize('%GDo you want to continue?%n'), $assoc_args);
+      }
+      else {
+        WP_CLI::log('(No messages)');
+      }
+    }
+
+    // Why is dropTriggers() hard-coded? Can't we just enqueue this as part of buildQueue()?
+    if ($first_try) {
+      WP_CLI::log(WP_CLI::colorize('%gDropping SQL triggers.%n'));
+      if (empty($dry_run)) {
+        CRM_Core_DAO::dropTriggers();
+      }
+    }
+
+    // Let's create a file for storing upgrade messages.
+    $post_upgrade_message_file = CRM_Utils_File::tempnam('civicrm-post-upgrade');
+
+    // Build the queue.
+    if ($first_try) {
+      WP_CLI::log(WP_CLI::colorize('%gPreparing upgrade.%n'));
+      $queue = CRM_Upgrade_Form::buildQueue($db_version, $code_version, $post_upgrade_message_file);
+      // Sanity check - only SQL queues can be resumed.
+      if (!($queue instanceof CRM_Queue_Queue_Sql)) {
+        WP_CLI::error('The "upgrade-db" command only supports SQL-based queues.');
+      }
+    }
+    else {
+      WP_CLI::log(WP_CLI::colorize('%Resuming upgrade.%n'));
+      $queue = CRM_Queue_Service::singleton()->load([
+        'name' => CRM_Upgrade_Form::QUEUE_NAME,
+        'type' => 'Sql',
+      ]);
+      if ($skip) {
+        $item = $queue->stealItem();
+        if (!empty($item->data->title)) {
+          WP_CLI::log(sprintf('Skip task: %s', $item->data->title));
+          $queue->deleteItem($item);
+        }
+      }
+    }
+
+    // Start the upgrade.
+    WP_CLI::log(WP_CLI::colorize('%gExecuting upgrade.%n'));
+    set_time_limit(0);
+
+    // Mimic what "Console Queue Runner" does.
+    $task_context = new CRM_Queue_TaskContext();
+    $task_context->queue = $queue;
+
+    // Maybe suppress Task Context logger output.
+    if (empty($verbose_extra) && empty($verbose)) {
+      if (!class_exists('CLI_Tools_CiviCRM_Logger_Dummy')) {
+        require_once __DIR__ . '/utilities/class-logger-dummy.php';
+      }
+      $task_context->log = new CLI_Tools_CiviCRM_Logger_Dummy();
+    }
+    else {
+      $task_context->log = \Log::singleton('display');
+    }
+
+    while ($queue->numberOfItems()) {
+
+      // In case we're retrying a failed job.
+      $item = $queue->stealItem();
+      $task = $item->data;
+
+      // Feedback.
+      if (!empty($verbose_extra)) {
+        $feedback = self::task_callback_format($task);
+        WP_CLI::log(WP_CLI::colorize('%g' . $task->title . '%n') . ' ' . WP_CLI::colorize($feedback));
+      }
+      elseif (!empty($verbose)) {
+        WP_CLI::log(WP_CLI::colorize('%g' . $task->title . '%n'));
+      }
+      else {
+        echo '.';
+      }
+
+      // Get action.
+      $action = 'y';
+      if (!empty($step)) {
+        fwrite(STDOUT, 'Execute this step? [ y=yes / s=skip / a=abort ] ');
+        $action = strtolower(trim(fgets(STDIN)));
+      }
+
+      // Bail if skip action is "abort".
+      if ($action === 'a') {
+        WP_CLI::halt(1);
+      }
+
+      // Run the task when action is "yes".
+      if ($action === 'y' && empty($dry_run)) {
+        try {
+          $success = $task->run($task_context);
+          if (!$success) {
+            WP_CLI::error('Task returned false');
+          }
+        }
+        catch (\Exception $e) {
+          // WISHLIST: For interactive mode, perhaps allow retry/skip?
+          WP_CLI::log(sprintf(WP_CLI::colorize('%RError executing task%n %Y"%s"%n'), $task->title));
+          WP_CLI::log('');
+          WP_CLI::log(WP_CLI::colorize('%RError message:%n'));
+          WP_CLI::log(sprintf(WP_CLI::colorize('%r%s%n'), $e->getMessage()));
+          WP_CLI::log('');
+          WP_CLI::log(WP_CLI::colorize('%RStack trace:%n'));
+          WP_CLI::log(sprintf(WP_CLI::colorize('%r%s%n'), $e->getTraceAsString()));
+          WP_CLI::log('');
+          WP_CLI::error('Could not complete database update.');
+        }
+      }
+
+      $queue->deleteItem($item);
+
+    }
+
+    // End feedback.
+    if (empty($verbose_extra) && empty($verbose)) {
+      echo "\n";
+    }
+
+    WP_CLI::log(WP_CLI::colorize('%gFinishing upgrade.%n'));
+    if (empty($dry_run)) {
+      CRM_Upgrade_Form::doFinish();
+    }
+
+    WP_CLI::log(sprintf(WP_CLI::colorize('%GUpgrade to%n %Y%s%n %Gcompleted.%n'), $code_version));
+
+    if (version_compare($code_version, '5.26.alpha', '<')) {
+      // Work-around for bugs like dev/core#1713.
+      WP_CLI::log(WP_CLI::colorize('%GDetected CiviCRM 5.25 or earlier. Force flush.%n'));
+      if (empty($dry_run)) {
+        \Civi\Cv\Util\Cv::passthru('flush');
+      }
+    }
+
+    WP_CLI::log(WP_CLI::colorize('%GChecking post-upgrade messages.%n'));
+    $message = file_get_contents($post_upgrade_message_file);
+    if ($message) {
+      WP_CLI::log(CRM_Utils_String::htmlToText($message));
+    }
+    else {
+      WP_CLI::log('(No messages)');
+    }
+
+    // Remove file for storing upgrade messages.
+    unlink($post_upgrade_message_file);
+
+    WP_CLI::log(WP_CLI::colorize('%GHave a nice day.%n'));
+
+  }
+
+  /**
+   * Reset paths to correct config settings.
+   *
+   * This command can be useful when the CiviCRM site has been cloned or migrated.
+   *
+   * The old version of this command tried to preserve webserver ownership of "templates_c"
+   * and "civicrm/upload" because (when running this command as something other than the
+   * web-user) `doSiteMove` clears and recreates these directories. The check took place
+   * *after* `doSiteMove` had run, however, so would only report back the current user and
+   * group ownership.
+   *
+   * If you run this command as something other than the web-user, it's up to you to assign
+   * correct user and group permissions for these directories.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm core update-cfg
+   *     Beginning site move process...
+   *     Template cache and upload directory have been cleared.
+   *     Database cache tables cleared.
+   *     Session has been reset.
+   *     Please make sure the following directories have the correct permissions:
+   *     /example.com/httpdocs/wp-content/uploads/civicrm/templates_c/
+   *     /example.com/httpdocs/wp-content/uploads/civicrm/upload/
+   *     Success: Config successfully updated.
+   *
+   * @subcommand update-cfg
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function update_cfg($args, $assoc_args) {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    // Do site move.
+    $result = CRM_Core_BAO_ConfigSetting::doSiteMove();
+
+    // Bail on error.
+    if (empty($result)) {
+      WP_CLI::error('Config update failed.');
+    }
+
+    // Result is HTML, so format and show.
+    $results = explode('<br />', $result);
+    foreach ($results as $result) {
+      if (!empty($result)) {
+        WP_CLI::log($result);
+      }
+    }
+
+    // Show permissions reminder.
+    $config = CRM_Core_Config::singleton();
+    WP_CLI::log('Please make sure the following directories have the correct permissions:');
+    if (!empty($config->templateCompileDir)) {
+      WP_CLI::log(sprintf(WP_CLI::colorize('%y%s%n'), $config->templateCompileDir));
+    }
+    if (!empty($config->uploadDir)) {
+      WP_CLI::log(sprintf(WP_CLI::colorize('%y%s%n'), $config->uploadDir));
+    }
+
+    WP_CLI::success('Config successfully updated.');
+
+  }
+
+  /**
+   * Get the current version of the CiviCRM plugin and database.
+   *
+   * ## OPTIONS
+   *
+   * [--source=<source>]
+   * : Specify the version to get.
+   * ---
+   * default: all
+   * options:
+   *   - all
+   *   - plugin
+   *   - db
+   *
+   * [--format=<format>]
+   * : Render output in a particular format.
+   * ---
+   * default: table
+   * options:
+   *   - table
+   *   - json
+   *   - number
+   * ---
+   *
+   * ## EXAMPLES
+   *
+   *     # Get all CiviCRM version information.
+   *     $ wp civicrm core version
+   *     +----------+---------+
+   *     | Source   | Version |
+   *     +----------+---------+
+   *     | Plugin   | 5.57.1  |
+   *     | Database | 5.46.3  |
+   *     +----------+---------+
+   *
+   *     # Get just the CiviCRM database version number.
+   *     $ wp civicrm core version --source=db --format=number
+   *     5.46.3
+   *
+   *     # Get just the CiviCRM plugin version number.
+   *     $ wp civicrm core version --source=plugin --format=number
+   *     5.57.1
+   *
+   *     # Get all CiviCRM version information as JSON-formatted data.
+   *     $ wp civicrm core version --format=json
+   *     {"plugin":"5.57.1","db":"5.46.3"}
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function version($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $source = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'source', 'all');
+    $format = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'format', 'table');
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    // Get the data we want.
+    $plugin_version = CRM_Utils_System::version();
+    $db_version = CRM_Core_BAO_Domain::version();
+
+    switch ($format) {
+
+      // Version number-only output.
+      case 'number':
+        if (!in_array($source, ['db', 'plugin'])) {
+          WP_CLI::error(WP_CLI::colorize('You must specify %Y--source=plugin%n or %Y--source=db%n to use this output format.'));
+        }
+        if ('plugin' === $source) {
+          echo $plugin_version . "\n";
+        }
+        if ('db' === $source) {
+          echo $db_version . "\n";
+        }
+        break;
+
+      // Display output as json.
+      case 'json':
+        $info = [];
+        if (in_array($source, ['all', 'plugin'])) {
+          $info['plugin'] = $plugin_version;
+        }
+        if (in_array($source, ['all', 'db'])) {
+          $info['db'] = $db_version;
+        }
+        $json = json_encode($info);
+        if (JSON_ERROR_NONE !== json_last_error()) {
+          WP_CLI::error(sprintf(WP_CLI::colorize('Failed to encode JSON: %Y%s.%n'), json_last_error_msg()));
+        }
+        echo $json . "\n";
+        break;
+
+      // Display output as table (default).
+      case 'table':
+      default:
+        // Build the rows.
+        $rows = [];
+        $fields = ['Source', 'Version'];
+        if (in_array($source, ['all', 'plugin'])) {
+          $rows[] = [
+            'Source' => 'Plugin',
+            'Version' => $plugin_version,
+          ];
+        }
+        if (in_array($source, ['all', 'db'])) {
+          $rows[] = [
+            'Source' => 'Database',
+            'Version' => $db_version,
+          ];
+        }
+
+        // Display the rows.
+        $args = ['format' => $format];
+        $formatter = new \WP_CLI\Formatter($args, $fields);
+        $formatter->display_items($rows);
+
+    }
+
+  }
+
+  // ----------------------------------------------------------------------------
+  // Private methods.
+  // ----------------------------------------------------------------------------
+
+  /**
+   * Determine what action to take to resolve a conflict.
+   *
+   * @since 5.69
+   *
+   * @param string $title The thing which had a conflict.
+   * @return string One of 'abort', 'keep' or 'overwrite'.
+   */
+  private function conflict_action_pick($title) {
+
+    WP_CLI::log(sprintf(WP_CLI::colorize('%GThe%n %Y%s%n %Galready exists.%n'), $title));
+    WP_CLI::log(WP_CLI::colorize('%G[a]%n %gAbort. (Default.)%n'));
+    WP_CLI::log(sprintf(WP_CLI::colorize('%G[k]%n %gKeep existing%n %y%s%n%g.%n %r(%n%RWARNING:%n %rThis may fail if the existing version is out-of-date.)%n'), $title));
+    WP_CLI::log(sprintf(WP_CLI::colorize('%G[o]%n %gOverwrite with new%n %y%s%g.%n %r(%n%RWARNING:%n %rThis may destroy data.)%n'), $title));
+
+    fwrite(STDOUT, WP_CLI::colorize('%GWhat you like to do?%n '));
+    $action = strtolower(trim(fgets(STDIN)));
+    switch ($action) {
+      case 'k':
+        return 'keep';
+
+      case 'o':
+        return 'overwrite';
+
+      case 'a':
+      default:
+        return 'abort';
+    }
+
+  }
+
+  /**
+   * Recursively implode an array.
+   *
+   * @since 5.69
+   *
+   * @param array $value The array to implode.
+   * @param integer $level The current level.
+   * @return string
+   */
+  private static function implode_recursive($value, $level = 0) {
+
+    // Maybe recurse.
+    $array = [];
+    if (is_array($value)) {
+      foreach ($value as $val) {
+        if (is_array($val)) {
+          $array[] = self::implode_recursive($val, $level + 1);
+        }
+        else {
+          $array[] = $val;
+        }
+      }
+    }
+    else {
+      $array[] = $value;
+    }
+
+    // Wrap sub-arrays but leave top level alone.
+    if ($level > 0) {
+      $string = '[' . implode(',', $array) . ']';
+    }
+    else {
+      $string = implode(',', $array);
+    }
+
+    return $string;
+
+  }
+
+  /**
+   * Gets the array of CiviCRM stable release versions.
+   *
+   * @since 5.69
+   *
+   * @return array The array of CiviCRM stable release versions.
+   */
+  private function releases_get() {
+
+    // Get all release versions.
+    $url = $this->google_url . '&' . $this->google_prefix_stable . '&maxResults=1000';
+    $result = $this->json_get_request($url);
+    if (empty($result['prefixes'])) {
+      return [];
+    }
+
+    // Strip out all but the version.
+    array_walk($result['prefixes'], function(&$item) {
+      $item = trim(str_replace('civicrm-stable/', '', $item));
+      $item = trim(str_replace('/', '', $item));
+    });
+
+    // Sort by version.
+    usort($result['prefixes'], 'version_compare');
+
+    return $result['prefixes'];
+
+  }
+
+  /**
+   * Gets the array of CiviCRM release data.
+   *
+   * @since 5.69
+   *
+   * @param string $release The CiviCRM release.
+   * @return array $data The array of CiviCRM release data.
+   */
+  private function release_data_get($release) {
+
+    // Get the release data.
+    $url = $this->google_url . '&' . $this->google_prefix_stable . $release . '/';
+    $result = $this->json_get_request($url);
+    if (empty($result['items'])) {
+      return [];
+    }
+
+    // Strip out all but the WordPress and l10n data.
+    $data = [];
+    foreach ($result['items'] as $item) {
+      if (!empty($item['name'])) {
+        if (FALSE !== strpos($item['name'], 'wordpress.zip')) {
+          $data['WordPress'] = $item['name'];
+        }
+        if (FALSE !== strpos($item['name'], 'l10n.tar.gz')) {
+          $data['L10n'] = $item['name'];
+        }
+      }
+    }
+
+    return $data;
+
+  }
+
+  /**
+   * Format the task for when run with extra verbosity.
+   *
+   * This method re-builds the task arguments because some of them may themselves be arrays.
+   *
+   * @since 5.69
+   *
+   * @param CRM_Queue_Task $task The CiviCRM task object.
+   * @return string $task The CiviCRM task object.
+   */
+  private static function task_callback_format($task) {
+
+    $callback_info = implode('::', (array) $task->callback);
+    $args_info = self::implode_recursive((array) $task->arguments);
+
+    // Build string with colorization tokens.
+    $feedback = '%y' . $callback_info . '(' . $args_info . '%n)';
+
+    return $feedback;
+
+  }
+
+}
diff --git a/wp-cli/commands/command-db.php b/wp-cli/commands/command-db.php
new file mode 100755
index 0000000000000000000000000000000000000000..9c21fb1bb4d3be11b644fc45c2dbde11a1f4cfbe
--- /dev/null
+++ b/wp-cli/commands/command-db.php
@@ -0,0 +1,1243 @@
+<?php
+/**
+ * Utilities for interacting with the CiviCRM database.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm db cli
+ *
+ *     Welcome to the MySQL monitor.  Commands end with ; or \g.
+ *     Your MySQL connection id is 180
+ *     Server version: 5.7.34 MySQL Community Server (GPL)
+ *
+ *     mysql>
+ *
+ *     $ wp civicrm db config --format=table
+ *     +----------+----------------+
+ *     | Field    | Value          |
+ *     +----------+----------------+
+ *     | phptype  | mysqli         |
+ *     | dbsyntax | mysqli         |
+ *     | username | db_username    |
+ *     | password | db_password    |
+ *     | protocol | tcp            |
+ *     | hostspec | localhost      |
+ *     | port     | false          |
+ *     | socket   | false          |
+ *     | database | civicrm_dbname |
+ *     | new_link | true           |
+ *     +----------+----------------+
+ *
+ *     $ wp civicrm db query 'select id,name from civicrm_group;'
+ *     +----+---------------------------+
+ *     | id | name                      |
+ *     +----+---------------------------+
+ *     |  1 | Administrators            |
+ *     |  4 | Advisory Board            |
+ *     |  2 | Newsletter Subscribers    |
+ *     |  3 | Summer Program Volunteers |
+ *     +----+---------------------------+
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_DB extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Drop all CiviCRM tables, views, functions and stored procedures from the database.
+   *
+   * ## OPTIONS
+   *
+   * [--also-include=<also-include>]
+   * : A comma separated list of additional tables to drop based on wildcard search.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     # Clear all CiviCRM entities from the database.
+   *     $ wp civicrm db clear
+   *     Dropping CiviCRM database tables...
+   *     ...
+   *
+   *     # Use an extra wildcard when some table names are not registered with CiviCRM.
+   *     # In this case, also clear tables for the "Canadian Tax Receipts" extension.
+   *     $ wp civicrm db clear --also-include='cdntaxreceipts_*'
+   *     Dropping CiviCRM database tables...
+   *     ...
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function clear($args, $assoc_args) {
+
+    // Let's give folks a chance to bail.
+    WP_CLI::confirm(WP_CLI::colorize('%GAre you sure you want to all CiviCRM entities from the database?%n'), $assoc_args);
+
+    // Get all CiviCRM database entities.
+    $functions = $this->cividb_functions_get();
+    $procedures = $this->cividb_procedures_get();
+    $tables = $this->cividb_tables_get($assoc_args);
+    $views = $this->cividb_views_get($assoc_args);
+
+    // Get an instance of wpdb with CiviCRM credentials.
+    $cividb = $this->cividb_get();
+    $cividb->query('SET FOREIGN_KEY_CHECKS = 0');
+
+    // Drop all the CiviCRM database tables.
+    if (!empty($tables)) {
+      WP_CLI::log('Dropping CiviCRM database tables...');
+      foreach ($tables as $table) {
+        $query = 'DROP TABLE IF EXISTS ' . \WP_CLI\Utils\esc_sql_ident($table);
+        WP_CLI::debug($query, 'civicrm');
+        $cividb->query($query);
+      }
+      WP_CLI::success('CiviCRM database tables dropped.');
+    }
+
+    // Drop all the the CiviCRM database views.
+    if (!empty($views)) {
+      WP_CLI::log('Dropping CiviCRM database views...');
+      foreach ($views as $view) {
+        $query = 'DROP VIEW IF EXISTS ' . \WP_CLI\Utils\esc_sql_ident($view);
+        WP_CLI::debug($query, 'civicrm');
+        $cividb->query($query);
+      }
+      WP_CLI::success('CiviCRM database views dropped.');
+    }
+
+    // Drop all the the CiviCRM database functions.
+    if (!empty($functions)) {
+      WP_CLI::log('Dropping CiviCRM database functions...');
+      foreach ($functions as $function) {
+        $query = 'DROP FUNCTION IF EXISTS ' . \WP_CLI\Utils\esc_sql_ident($function);
+        WP_CLI::debug($query, 'civicrm');
+        $cividb->query($query);
+      }
+      WP_CLI::success('CiviCRM database functions dropped.');
+    }
+
+    // Drop all the the CiviCRM database procedures.
+    if (!empty($procedures)) {
+      WP_CLI::log('Dropping CiviCRM database procedures...');
+      foreach ($procedures as $procedure) {
+        $query = 'DROP PROCEDURE IF EXISTS ' . \WP_CLI\Utils\esc_sql_ident($procedure);
+        WP_CLI::debug($query, 'civicrm');
+        $cividb->query($query);
+      }
+      WP_CLI::success('CiviCRM database procedures dropped.');
+    }
+
+    $cividb->query('SET FOREIGN_KEY_CHECKS = 1');
+
+  }
+
+  /**
+   * Quickly enter the MySQL command line.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm db cli
+   *
+   *     Welcome to the MySQL monitor.  Commands end with ; or \g.
+   *     Your MySQL connection id is 180
+   *     Server version: 5.7.34 MySQL Community Server (GPL)
+   *
+   *     mysql>
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function cli($args, $assoc_args) {
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    $mysql_args = [
+      'host' => $dsn['hostspec'],
+      'database' => $dsn['database'],
+      'user' => $dsn['username'],
+      'pass' => $dsn['password'],
+    ];
+
+    \WP_CLI\Utils\run_mysql_command('mysql --no-defaults', $mysql_args);
+
+  }
+
+  /**
+   * Show the CiviCRM database connection details.
+   *
+   * ## OPTIONS
+   *
+   * [--format=<format>]
+   * : Render output in a particular format.
+   * ---
+   * default: table
+   * options:
+   *   - table
+   *   - json
+   *   - pretty
+   * ---
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm db config --format=table
+   *     +----------+----------------+
+   *     | Field    | Value          |
+   *     +----------+----------------+
+   *     | phptype  | mysqli         |
+   *     | dbsyntax | mysqli         |
+   *     | username | db_username    |
+   *     | password | db_password    |
+   *     | protocol | tcp            |
+   *     | hostspec | localhost      |
+   *     | port     | false          |
+   *     | socket   | false          |
+   *     | database | civicrm_dbname |
+   *     | new_link | true           |
+   *     +----------+----------------+
+   *
+   * @alias conf
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function config($args, $assoc_args) {
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    $format = \WP_CLI\Utils\get_flag_value($assoc_args, 'format', 'table');
+    switch ($format) {
+
+      // Pretty-print output.
+      case 'pretty':
+        WP_CLI::log(print_r($dsn, TRUE));
+        break;
+
+      // Display output as json.
+      case 'json':
+        WP_CLI::log(json_encode($dsn));
+        break;
+
+      // Display output as table (default).
+      case 'table':
+      default:
+        $assoc_args['format'] = $format;
+        $assoc_args['fields'] = array_keys($dsn);
+        $formatter = $this->formatter_get($assoc_args);
+        $formatter->display_item($dsn);
+
+    }
+
+  }
+
+  /**
+   * Get a string which connects to the CiviCRM database.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm db connect
+   *     mysql --database=civicrm_db_name --host=db_host --user=db_username --password=db_password
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function connect($args, $assoc_args) {
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    $command = sprintf(
+      'mysql --database=%s --host=%s --user=%s --password=%s',
+      $dsn['database'],
+      $dsn['hostspec'],
+      $dsn['username'],
+      $dsn['password']
+    );
+
+    if (isset($dsn['port']) && !empty($dsn['port'])) {
+      $command .= ' --port=' . $dsn['port'];
+    }
+
+    WP_CLI::log($command);
+
+  }
+
+  /**
+   * Drop an entire CiviCRM database.
+   *
+   * It is not possible to drop the CiviCRM database when it is shared with WordPress.
+   *
+   * To create a fresh CiviCRM database, use `wp civicrm db import` to load an existing
+   * database file or make sure you have the CiviCRM plugin installed (e.g. using the
+   *  `wp civicrm core install` command) and then call `wp civicrm core activate`.
+   *
+   * ## OPTIONS
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     # Drop the CiviCRM database.
+   *     $ wp civicrm db drop
+   *
+   *     # Drop the CiviCRM database without the confirm message.
+   *     $ wp civicrm db drop --yes
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function drop($args, $assoc_args) {
+
+    // Use "wp civicrm db is-shared" to check if the CiviCRM database is shared with WordPress.
+    $command = 'civicrm db is-shared --show-result';
+    $options = ['launch' => FALSE, 'return' => TRUE];
+    $shared = WP_CLI::runcommand($command, $options);
+
+    // Bail if sharing database with WordPress.
+    if (!empty($shared)) {
+      WP_CLI::error('You cannot drop the CiviCRM database when it is shared with WordPress.');
+    }
+
+    // Let's give folks a chance to bail.
+    WP_CLI::confirm(WP_CLI::colorize('%GAre you sure you want to drop the CiviCRM database?%n'), $assoc_args);
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    // Use "wp civicrm db query" to drop the CiviCRM database.
+    $command = 'civicrm db query ' . sprintf('DROP DATABASE IF EXISTS %s', $dsn['database']);
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+  }
+
+  /**
+   * Drop the CiviCRM tables and views from the database.
+   *
+   * ## OPTIONS
+   *
+   * [--tables-only]
+   * : Drop only tables.
+   *
+   * [--views-only]
+   * : Drop only views.
+   *
+   * [--also-include=<also-include>]
+   * : A comma separated list of additional tables to drop based on wildcard search.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     # Drop all CiviCRM tables and views.
+   *     $ wp civicrm db drop-tables
+   *
+   *     # Drop just the CiviCRM tables.
+   *     $ wp civicrm db drop-tables --tables-only
+   *
+   *     # Drop just the CiviCRM views.
+   *     $ wp civicrm db drop-tables --views-only
+   *
+   *     # Use an extra wildcard when some table names are not registered with CiviCRM.
+   *     # In this case, also drop tables for the "Canadian Tax Receipts" extension.
+   *     $ wp civicrm db drop-tables --also-include='cdntaxreceipts_*' --tables-only
+   *
+   * @subcommand drop-tables
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function drop_tables($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $tables_only = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'tables-only', FALSE);
+    $views_only = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'views-only', FALSE);
+
+    // Let's give folks a chance to bail.
+    if (empty($views_only) && empty($tables_only)) {
+      $message = 'tables and views';
+    }
+    elseif (!empty($views_only)) {
+      $message = 'views';
+    }
+    elseif (!empty($tables_only)) {
+      $message = 'tables';
+    }
+    WP_CLI::confirm(sprintf(WP_CLI::colorize('%GAre you sure you want to drop the CiviCRM %s from the database?%n'), $message), $assoc_args);
+
+    // Get CiviCRM tables and views.
+    $tables = $this->cividb_tables_get($assoc_args);
+    $views = $this->cividb_views_get($assoc_args);
+
+    // Get an instance of wpdb with CiviCRM credentials.
+    $cividb = $this->cividb_get();
+    $cividb->query('SET FOREIGN_KEY_CHECKS = 0');
+
+    // Drop all the CiviCRM database tables.
+    if (empty($views_only)) {
+      WP_CLI::log('Dropping CiviCRM database tables...');
+      foreach ($tables as $table) {
+        $query = 'DROP TABLE IF EXISTS ' . \WP_CLI\Utils\esc_sql_ident($table);
+        WP_CLI::debug($query, 'civicrm');
+        $cividb->query($query);
+      }
+      WP_CLI::success('CiviCRM database tables dropped.');
+    }
+
+    // Drop all the the CiviCRM database views.
+    if (empty($tables_only)) {
+      WP_CLI::log('Dropping CiviCRM database views...');
+      foreach ($views as $view) {
+        $query = 'DROP VIEW ' . \WP_CLI\Utils\esc_sql_ident($view);
+        WP_CLI::debug($query, 'civicrm');
+        $cividb->query($query);
+      }
+      WP_CLI::success('CiviCRM database views dropped.');
+    }
+
+    $cividb->query('SET FOREIGN_KEY_CHECKS = 1');
+
+  }
+
+  /**
+   * Dump the whole database that CiviCRM has credentials for and print to STDOUT or save to a file.
+   *
+   * This command is useful on servers where the user may not have direct access to the `mysqldump`
+   * command and the user wants to dump the entire database in which the CiviCRM tables reside.
+   * For more granular exports of the CiviCRM tables, functions, procedures and views, use the
+   * `wp civicrm db export` command instead.
+   *
+   * ## OPTIONS
+   *
+   * [--tables=<tables>]
+   * : The comma separated list of specific tables to export. Excluding this parameter will export all tables in the database.
+   *
+   * [--result-file=<result-file>]
+   * : The path to the saved file.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm db dump
+   *
+   *     $ wp civicrm db dump --result-file=/tmp/civi-db.sql
+   *     Success: Exported to /tmp/civi-db.sql
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function dump($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $tables = \WP_CLI\Utils\get_flag_value($assoc_args, 'tables', FALSE);
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    // Build command and escaped shell arguments.
+    $mysqldump_binary = \WP_CLI\Utils\force_env_on_nix_systems('mysqldump');
+    $command = $mysqldump_binary . " --opt --triggers --routines --events --host={$dsn['hostspec']} --user={$dsn['username']} --password='{$dsn['password']}' %s";
+    $command_esc_args = [$dsn['database']];
+    if (!empty($tables)) {
+      $requested_tables = explode(',', $tables);
+      unset($assoc_args['tables']);
+      $command .= ' --tables';
+      foreach ($requested_tables as $table) {
+        $command .= ' %s';
+        $command_esc_args[] = trim($table);
+      }
+    }
+
+    // Process command and escaped shell arguments.
+    $escaped_command = call_user_func_array(
+      '\WP_CLI\Utils\esc_cmd',
+      array_merge(
+        [$command],
+        $command_esc_args
+      )
+    );
+
+    \WP_CLI\Utils\run_mysql_command($escaped_command, $assoc_args);
+
+    // Maybe show some feedback.
+    $result_file = \WP_CLI\Utils\get_flag_value($assoc_args, 'result-file', FALSE);
+    if (!empty($result_file)) {
+      WP_CLI::success(sprintf('Exported to %s', $assoc_args['result-file']));
+    }
+
+  }
+
+  /**
+   * Export the whole CiviCRM database and print to STDOUT or save to a file.
+   *
+   * By default, CiviCRM loads its tables into the WordPress database but it is also possible
+   * to configure CiviCRM to have its own database. To keep things contained, this command
+   * only exports the tables, views, triggers, routines and events that are part of CiviCRM.
+   *
+   * ## OPTIONS
+   *
+   * [--tables=<tables>]
+   * : Comma separated list of tables to export based on wildcard search. Excluding this parameter will export all CiviCRM tables in the database.
+   *
+   * [--result-file=<result-file>]
+   * : The path to the saved file. Excluding this parameter will export to STDOUT.
+   *
+   * [--also-include=<also-include>]
+   * : A comma separated list of additional wildcards to search.
+   *
+   * ## EXAMPLES
+   *
+   *     # Export database to STDOUT.
+   *     $ wp civicrm db export
+   *     -- MySQL dump 10.13  Distrib 5.7.34, for osx11.0 (x86_64)
+   *     --
+   *     -- Host: localhost    Database: civicrm_db
+   *     -- ------------------------------------------------------
+   *     -- Server version  5.7.34
+   *     ...
+   *
+   *     # Export database to file.
+   *     $ wp civicrm db export --result-file=/tmp/civi-db.sql
+   *     Success: Exported to /tmp/civi-db.sql
+   *
+   *     # Restrict the exported tables using a wildcard argument as a filter.
+   *     $ wp civicrm db export --tables='*_log' --result-file=/tmp/civi-db.sql
+   *     Success: Exported to /tmp/civi-db.sql
+   *
+   *     # Use an extra wildcard when some table names are not registered with CiviCRM.
+   *     $ wp civicrm db export --also-include='cdntaxreceipts_*' --result-file=/tmp/civi-db.sql
+   *     Success: Exported to /tmp/civi-db.sql
+   *
+   *     # Restrict the exported tables using a wildcard argument as a filter.
+   *     # Also uses an extra wildcard when some table names are not registered with CiviCRM.
+   *     # In this case, also exports tables for the "Canadian Tax Receipts" extension.
+   *     $ wp civicrm db export --tables='*_log' --also-include='cdntaxreceipts_*' --result-file=/tmp/civi-db.sql
+   *     Success: Exported to /tmp/civi-db.sql
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function export($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $tables = \WP_CLI\Utils\get_flag_value($assoc_args, 'tables', FALSE);
+    $also_include = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'also-include', '');
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    // Do we want only certain CiviCRM tables?
+    $table_args = '';
+    if (!empty($tables)) {
+      $requested_tables = explode(',', $tables);
+      foreach ($requested_tables as $table) {
+        $table_args .= ' ' . trim($table);
+      }
+      unset($assoc_args['tables']);
+    }
+
+    // Maybe add extra filters.
+    $also_include_args = '';
+    if (!empty($also_include)) {
+      $also_include_args = " --also-include={$also_include}";
+      unset($assoc_args['also-include']);
+    }
+
+    // Get the list of tables.
+    $tables_command = "civicrm db tables{$table_args}{$also_include_args} --format=csv";
+    WP_CLI::debug('Tables Command: ' . $tables_command, 'civicrm');
+    $options = ['launch' => FALSE, 'return' => TRUE];
+    $tables = WP_CLI::runcommand($tables_command, $options);
+    $tables = explode(',', $tables);
+
+    // Build command and escaped shell arguments.
+    $mysqldump_binary = \WP_CLI\Utils\force_env_on_nix_systems('mysqldump');
+    $command = $mysqldump_binary . " --opt --triggers --routines --events --host={$dsn['hostspec']} --user={$dsn['username']} --password='{$dsn['password']}' %s";
+    $command_esc_args = [$dsn['database']];
+    $command .= ' --tables';
+    foreach ($tables as $table) {
+      $command .= ' %s';
+      $command_esc_args[] = trim($table);
+    }
+
+    // Process command and escaped shell arguments.
+    $escaped_command = call_user_func_array(
+      '\WP_CLI\Utils\esc_cmd',
+      array_merge(
+        [$command],
+        $command_esc_args
+      )
+    );
+
+    WP_CLI::debug('Final "mysqldump" Command: ' . $escaped_command, 'civicrm');
+    \WP_CLI\Utils\run_mysql_command($escaped_command, $assoc_args);
+
+    // Maybe show some feedback.
+    $result_file = \WP_CLI\Utils\get_flag_value($assoc_args, 'result-file', FALSE);
+    if (!empty($result_file)) {
+      WP_CLI::success(sprintf('Exported to %s', $assoc_args['result-file']));
+    }
+
+  }
+
+  /**
+   * Get the list of CiviCRM functions in the database.
+   *
+   * ## OPTIONS
+   *
+   * [<function>...]
+   * : List functions based on wildcard search, e.g. 'civicrm_*' or 'civicrm_event?'.
+   *
+   * [--format=<format>]
+   * : Render output in a particular format.
+   * ---
+   * default: list
+   * options:
+   *   - list
+   *   - json
+   *   - csv
+   * ---
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm db functions
+   *     civicrm_strip_non_numeric
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function functions($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $format = \WP_CLI\Utils\get_flag_value($assoc_args, 'format', 'list');
+
+    // Let's use an instance of wpdb with CiviCRM credentials.
+    $cividb = $this->cividb_get();
+
+    // Default query.
+    $dsn = $this->cividb_dsn_get();
+    $functions_sql = "SHOW FUNCTION STATUS WHERE Db = '{$dsn['database']}'";
+
+    // Perform query.
+    $functions = $cividb->get_col($functions_sql, 1);
+
+    // Filter by `$args` wildcards.
+    if ($args) {
+      $functions = $this->names_filter($args, $functions);
+    }
+
+    // Render output.
+    if ('csv' === $format) {
+      WP_CLI::log(implode(',', $functions));
+    }
+    elseif ('json' === $format) {
+      $json = json_encode($functions);
+      if (JSON_ERROR_NONE !== json_last_error()) {
+        WP_CLI::error(sprintf(WP_CLI::colorize('Failed to encode JSON: %Y%s.%n'), json_last_error_msg()));
+      }
+      echo $json . "\n";
+    }
+    else {
+      foreach ($functions as $function) {
+        WP_CLI::log($function);
+      }
+    }
+
+  }
+
+  /**
+   * Loads a whole CiviCRM database.
+   *
+   * ## OPTIONS
+   *
+   * [--load-file=<load-file>]
+   * : The path to the database file.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm db import /tmp/civicrm.sql
+   *
+   * @alias load
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function import($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $load_file = \WP_CLI\Utils\get_flag_value($assoc_args, 'load-file', FALSE);
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    $mysql_args = [
+      'host'     => $dsn['hostspec'],
+      'database' => $dsn['database'],
+      'user'     => $dsn['username'],
+      'pass' => $dsn['password'],
+      'execute'  => 'SOURCE ' . $load_file,
+    ];
+
+    \WP_CLI\Utils\run_mysql_command('/usr/bin/env mysql', $mysql_args);
+
+  }
+
+  /**
+   * Check if CiviCRM shares a database with WordPress.
+   *
+   * ## OPTIONS
+   *
+   * [--show-result]
+   * : Print the result to STDOUT. Note that the echoed boolean is the reverse of the exit status.
+   *
+   * ## EXAMPLES
+   *
+   *     # Check if CiviCRM shares a database with WordPress. Exit status 0 if shared, otherwise 1.
+   *     $ wp civicrm db is-shared
+   *     $ echo $?
+   *     0
+   *
+   *     # Show whether CiviCRM shares a database with WordPress. Prints 1 if shared, otherwise 0.
+   *     $ wp civicrm db is-shared --show-result
+   *     1
+   *
+   *     # Shell command that shows if CiviCRM shares a database with WordPress.
+   *     if wp civicrm db is-shared; then echo "Yup"; else echo "Nope"; fi
+   *     Nope
+   *
+   * @subcommand is-shared
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function is_shared($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $show = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'show-result', FALSE);
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    // True when host and database name are identical.
+    $shared = FALSE;
+    if ($dsn['hostspec'] === DB_HOST && $dsn['database'] === DB_NAME) {
+      $shared = TRUE;
+    }
+
+    // Exit with code if not showing result.
+    if (empty($show)) {
+      if (!empty($shared)) {
+        WP_CLI::halt(0);
+      }
+      else {
+        WP_CLI::halt(1);
+      }
+    }
+
+    // Show result.
+    if (empty($shared)) {
+      echo "0\n";
+    }
+    else {
+      echo "1\n";
+    }
+
+  }
+
+  /**
+   * Get the list of CiviCRM stored procedures in the database.
+   *
+   * ## OPTIONS
+   *
+   * [<procedure>...]
+   * : List procedures based on wildcard search, e.g. 'civicrm_*'.
+   *
+   * [--format=<format>]
+   * : Render output in a particular format.
+   * ---
+   * default: list
+   * options:
+   *   - list
+   *   - json
+   *   - csv
+   * ---
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm db procedures
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function procedures($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $format = \WP_CLI\Utils\get_flag_value($assoc_args, 'format', 'list');
+
+    // Let's use an instance of wpdb with CiviCRM credentials.
+    $cividb = $this->cividb_get();
+
+    // Default query.
+    $dsn = $this->cividb_dsn_get();
+    $procedures_sql = "SHOW PROCEDURE STATUS WHERE Db = '{$dsn['database']}'";
+
+    // Perform query.
+    $procedures = $cividb->get_col($procedures_sql, 1);
+
+    // Filter by `$args` wildcards.
+    if ($args) {
+      $procedures = $this->names_filter($args, $procedures);
+    }
+
+    // Render output.
+    if ('csv' === $format) {
+      WP_CLI::log(implode(',', $procedures));
+    }
+    elseif ('json' === $format) {
+      $json = json_encode($procedures);
+      if (JSON_ERROR_NONE !== json_last_error()) {
+        WP_CLI::error(sprintf(WP_CLI::colorize('Failed to encode JSON: %Y%s.%n'), json_last_error_msg()));
+      }
+      echo $json . "\n";
+    }
+    else {
+      foreach ($procedures as $procedure) {
+        WP_CLI::log($procedure);
+      }
+    }
+
+  }
+
+  /**
+   * Perform a query on the CiviCRM database.
+   *
+   * ## OPTIONS
+   *
+   * <query>
+   * : The SQL query to perform.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm db query 'select id,name from civicrm_group;'
+   *     +----+---------------------------+
+   *     | id | name                      |
+   *     +----+---------------------------+
+   *     |  1 | Administrators            |
+   *     |  4 | Advisory Board            |
+   *     |  2 | Newsletter Subscribers    |
+   *     |  3 | Summer Program Volunteers |
+   *     +----+---------------------------+
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function query($args, $assoc_args) {
+
+    if (!isset($args[0])) {
+      WP_CLI::error('No query specified.');
+    }
+
+    $query = $args[0];
+
+    // Get CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+
+    $mysql_args = [
+      'host'     => $dsn['hostspec'],
+      'database' => $dsn['database'],
+      'user'     => $dsn['username'],
+      'pass' => $dsn['password'],
+      'execute'  => $query,
+    ];
+
+    \WP_CLI\Utils\run_mysql_command('/usr/bin/env mysql --no-defaults', $mysql_args);
+
+  }
+
+  /**
+   * Gets a set of CiviCRM tables in the database.
+   *
+   * ## OPTIONS
+   *
+   * [<table>...]
+   * : List tables based on wildcard search, e.g. 'civicrm_*_group' or 'civicrm_event?'.
+   *
+   * [--tables-only]
+   * : Restrict returned tables to those that are not views.
+   *
+   * [--views-only]
+   * : Restrict returned tables to those that are views.
+   *
+   * [--also-include=<also-include>]
+   * : A comma separated list of additional wildcards to search.
+   *
+   * [--format=<format>]
+   * : Render output in a particular format.
+   * ---
+   * default: list
+   * options:
+   *   - list
+   *   - json
+   *   - csv
+   * ---
+   *
+   * ## EXAMPLES
+   *
+   *     # Use a wildcard to get matching table names from the set of CiviCRM tables.
+   *     $ wp civicrm db tables 'civicrm_*_group' --tables-only
+   *     civicrm_campaign_group
+   *     civicrm_custom_group
+   *     civicrm_dedupe_rule_group
+   *     civicrm_mailing_group
+   *     civicrm_option_group
+   *     civicrm_uf_group
+   *
+   *     # Use wildcards to get matching view names from the set of CiviCRM multi-lingual views.
+   *     % wp civicrm db tables 'civicrm_*_group_de_de' 'civicrm_*_group_en_us' --views-only
+   *     civicrm_custom_group_de_de
+   *     civicrm_custom_group_en_us
+   *     civicrm_option_group_de_de
+   *     civicrm_option_group_en_us
+   *     civicrm_uf_group_de_de
+   *     civicrm_uf_group_en_us
+   *
+   *     # Use an extra wildcard when some table names are not registered with CiviCRM.
+   *     # In this case, include tables for the "Canadian Tax Receipts" extension.
+   *     $ wp civicrm db tables '*_log' --also-include='cdntaxreceipts_*' --tables-only
+   *     cdntaxreceipts_log
+   *     civicrm_action_log
+   *     civicrm_job_log
+   *     civicrm_log
+   *     civicrm_membership_log
+   *     civicrm_system_log
+   *     civirule_rule_log
+   *
+   *     # When CiviCRM shares a database with WordPress, use an extra wildcard to include
+   *     # WordPress tables in a query. Here `$wpdb->prefix` is set to the default 'wp_'.
+   *     % wp civicrm db tables '*_user*' --also-include='wp_*' --tables-only
+   *     civicrm_user_job
+   *     log_civicrm_user_job
+   *     wp_usermeta
+   *     wp_users
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function tables($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $tables_only = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'tables-only', FALSE);
+    $views_only = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'views-only', FALSE);
+    $also_include = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'also-include', '');
+    $format = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'format', 'list');
+
+    // Bail if incompatible args have been supplied.
+    if (!empty($tables_only) && !empty($views_only)) {
+      WP_CLI::error('You cannot supply --tables-only and --views-only at the same time.');
+    }
+
+    // Let's use an instance of wpdb with CiviCRM credentials.
+    $cividb = $this->cividb_get();
+
+    // Default query.
+    $tables_sql = 'SHOW TABLES';
+
+    // Override query with table type restriction if needed.
+    if (!empty($tables_only)) {
+      $tables_sql = 'SHOW FULL TABLES WHERE Table_Type = "BASE TABLE"';
+    }
+    elseif (!empty($views_only)) {
+      $tables_sql = 'SHOW FULL TABLES WHERE Table_Type = "VIEW"';
+    }
+
+    // Perform query.
+    $tables = $cividb->get_col($tables_sql, 0);
+
+    // Pre-filter with CiviCRM tables and views only.
+    $pre_filter = [
+      'civicrm_*',
+      'log_civicrm_*',
+      'snap_civicrm_*',
+    ];
+
+    // Add in any extra wildcard filters.
+    if (!empty($also_include)) {
+      $wildcards = explode(',', $also_include);
+      foreach ($wildcards as $wildcard) {
+        $pre_filter[] = trim($wildcard);
+      }
+    }
+
+    // Pre-filter now.
+    $tables = $this->names_filter($pre_filter, $tables);
+
+    // When tables are part of the query, add tables that are present in civicrm tables.
+    if (empty($views_only)) {
+      $civicrm_tables = array_keys(CRM_Core_DAO_AllCoreTables::tables());
+      foreach ($civicrm_tables as $table) {
+        if (!in_array($table, $tables)) {
+          $tables[] = $table;
+        }
+      }
+    }
+
+    // Filter by `$args` wildcards.
+    if ($args) {
+      $tables = $this->names_filter($args, $tables);
+    }
+
+    // Render output.
+    if ('csv' === $format) {
+      WP_CLI::log(implode(',', $tables));
+    }
+    elseif ('json' === $format) {
+      $json = json_encode($tables);
+      if (JSON_ERROR_NONE !== json_last_error()) {
+        WP_CLI::error(sprintf(WP_CLI::colorize('Failed to encode JSON: %Y%s.%n'), json_last_error_msg()));
+      }
+      echo $json . "\n";
+    }
+    else {
+      foreach ($tables as $table) {
+        WP_CLI::log($table);
+      }
+    }
+
+  }
+
+  // ----------------------------------------------------------------------------
+  // Private methods.
+  // ----------------------------------------------------------------------------
+
+  /**
+   * Gets the instance of wpdb with CiviCRM credentials.
+   *
+   * @since 5.69
+   *
+   * @return object $cividb The instance of wpdb with CiviCRM credentials.
+   */
+  private function cividb_get() {
+
+    // Return instance if we have it.
+    static $cividb;
+    if (isset($cividb)) {
+      return $cividb;
+    }
+
+    // Let's use an instance of wpdb with CiviCRM credentials.
+    $dsn = $this->cividb_dsn_get();
+    $cividb = new wpdb($dsn['username'], $dsn['password'], $dsn['database'], $dsn['hostspec']);
+
+    return $cividb;
+
+  }
+
+  /**
+   * Gets the CiviCRM database credentials.
+   *
+   * @since 5.69
+   *
+   * @return array $dsn The array of CiviCRM database credentials.
+   */
+  private function cividb_dsn_get() {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    // Bail if we can't fetch database credentials.
+    if (!defined('CIVICRM_DSN')) {
+      WP_CLI::error('CIVICRM_DSN is not defined.');
+    }
+
+    // Parse the CiviCRM credentials.
+    $dsn = DB::parseDSN(CIVICRM_DSN);
+
+    return $dsn;
+
+  }
+
+  /**
+   * Gets the CiviCRM database functions.
+   *
+   * @since 5.69
+   *
+   * @return array $functions The array of CiviCRM database functions.
+   */
+  private function cividb_functions_get() {
+
+    // Use "wp civicrm db functions" to find the CiviCRM database functions.
+    $command = "civicrm db functions 'civicrm_*' --format=json";
+    $options = ['launch' => FALSE, 'return' => TRUE];
+    $core_functions = WP_CLI::runcommand($command, $options);
+
+    // Convert to array.
+    $functions = json_decode($core_functions, TRUE);
+    if (JSON_ERROR_NONE !== json_last_error()) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to decode JSON: %y%s.%n'), json_last_error_msg()));
+    }
+
+    return $functions;
+
+  }
+
+  /**
+   * Gets the CiviCRM database procedures.
+   *
+   * @since 5.69
+   *
+   * @return array $procedures The array of CiviCRM database procedures.
+   */
+  private function cividb_procedures_get() {
+
+    // Use "wp civicrm db procedures" to find the CiviCRM database procedures.
+    $command = 'civicrm db procedures --format=json';
+    $options = ['launch' => FALSE, 'return' => TRUE];
+    $core_procedures = WP_CLI::runcommand($command, $options);
+
+    // Convert to array.
+    $procedures = json_decode($core_procedures, TRUE);
+    if (JSON_ERROR_NONE !== json_last_error()) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to decode JSON: %y%s.%n'), json_last_error_msg()));
+    }
+
+    return $procedures;
+
+  }
+
+  /**
+   * Gets the CiviCRM database tables.
+   *
+   * @since 5.69
+   *
+   * @param array $assoc_args The WP-CLI associative arguments.
+   * @return array $tables The array of CiviCRM database tables.
+   */
+  private function cividb_tables_get($assoc_args) {
+
+    // Maybe add extra filters.
+    $also_include = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'also-include', '');
+    $also_include_args = '';
+    if (!empty($also_include)) {
+      $also_include_args = " --also-include={$also_include}";
+    }
+
+    // Use "wp civicrm db tables" to find the CiviCRM database tables.
+    $command = "civicrm db tables{$also_include_args} --tables-only --format=json";
+    $options = ['launch' => FALSE, 'return' => TRUE];
+    $core_tables = WP_CLI::runcommand($command, $options);
+
+    // Convert to array.
+    $tables = json_decode($core_tables, TRUE);
+    if (JSON_ERROR_NONE !== json_last_error()) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to decode JSON: %y%s.%n'), json_last_error_msg()));
+    }
+
+    return $tables;
+
+  }
+
+  /**
+   * Gets the CiviCRM database views.
+   *
+   * @since 5.69
+   *
+   * @param array $assoc_args The WP-CLI associative arguments.
+   * @return array $views The array of CiviCRM database views.
+   */
+  private function cividb_views_get($assoc_args) {
+
+    // Maybe add extra filters.
+    $also_include = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'also-include', '');
+    $also_include_args = '';
+    if (!empty($also_include)) {
+      $also_include_args = " --also-include={$also_include}";
+    }
+
+    // Use "wp civicrm db tables" to find the CiviCRM database views.
+    $command = "civicrm db tables 'civicrm_*'{$also_include_args} --views-only --format=json";
+    $options = ['launch' => FALSE, 'return' => TRUE];
+    $core_views = WP_CLI::runcommand($command, $options);
+
+    // Convert to array.
+    $views = json_decode($core_views, TRUE);
+    if (JSON_ERROR_NONE !== json_last_error()) {
+      WP_CLI::error(sprintf(WP_CLI::colorize('Failed to decode JSON: %y%s.%n'), json_last_error_msg()));
+    }
+
+    return $views;
+
+  }
+
+  /**
+   * Filters an array of CiviCRM database entity names.
+   *
+   * @since 5.69
+   *
+   * @param array $wildcards The array of wildcards.
+   * @param array $tables The array of CiviCRM table names.
+   * @return array $filtered The filtered array of CiviCRM table names.
+   */
+  private function names_filter($wildcards, $tables) {
+
+    // Build filtered array.
+    $args_tables = [];
+    foreach ($wildcards as $wildcard) {
+      if (FALSE !== strpos($wildcard, '*') || FALSE !== strpos($wildcard, '?')) {
+        $args_tables = array_merge(
+          $args_tables,
+          array_filter(
+            $tables,
+            function ($v) use ($wildcard) {
+              // WP-CLI itself uses fnmatch() so ignore the civilint warning.
+              // phpcs:disable
+              return fnmatch($wildcard, $v);
+              // phpcs:enable
+            }
+          )
+        );
+      }
+      else {
+        $args_tables[] = $wildcard;
+      }
+    }
+
+    // Clean up.
+    $args_tables = array_values(array_unique($args_tables));
+    $filtered = array_values(array_intersect($tables, $args_tables));
+
+    return $filtered;
+
+  }
+
+}
diff --git a/wp-cli/commands/command-debug.php b/wp-cli/commands/command-debug.php
new file mode 100755
index 0000000000000000000000000000000000000000..fb446e9004c7fe1d38ca7c73aa788517e6aa61c8
--- /dev/null
+++ b/wp-cli/commands/command-debug.php
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Enable or disable debugging in CiviCRM.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm debug enable
+ *     Success: Debug setting enabled.
+ *
+ *     $ wp civicrm debug disable
+ *     Success: Debug setting disabled.
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Debug extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Enable debugging in CiviCRM.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm debug enable
+   *     Success: Debug setting enabled.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function enable($args, $assoc_args) {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    Civi::settings()->add([
+      'debug_enabled' => 1,
+      'backtrace' => 1,
+    ]);
+
+    WP_CLI::success('Debug setting enabled.');
+
+  }
+
+  /**
+   * Disable debugging in CiviCRM.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm debug disable
+   *     Success: Debug setting disabled.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function disable($args, $assoc_args) {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    Civi::settings()->add([
+      'debug_enabled' => 0,
+      'backtrace' => 0,
+    ]);
+
+    WP_CLI::success('Debug setting disabled.');
+
+  }
+
+}
diff --git a/wp-cli/commands/command-job.php b/wp-cli/commands/command-job.php
new file mode 100755
index 0000000000000000000000000000000000000000..93c8f53944cfdc3efa10f3ec553b6caaab1c8853
--- /dev/null
+++ b/wp-cli/commands/command-job.php
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Run CiviCRM cron jobs.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm job mailing
+ *     Success: Executed 'process_mailing' job.
+ *
+ *     $ wp civicrm job membership
+ *     Success: Executed 'process_membership' job.
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Job extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Process pending CiviMail mailing jobs.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm job mailing
+   *     Success: Executed 'process_mailing' job.
+   *
+   * @alias process-mail-queue
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function mailing($args, $assoc_args) {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    $job = new CRM_Core_JobManager();
+    $job->executeJobByAction('job', 'process_mailing');
+
+    WP_CLI::success("Executed 'process_mailing' job.");
+
+  }
+
+  /**
+   * Process pending CiviMember membership record update jobs.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm job membership
+   *     Success: Executed 'process_membership' job.
+   *
+   * @alias member-records
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function membership($args, $assoc_args) {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    $job = new CRM_Core_JobManager();
+    $job->executeJobByAction('job', 'process_membership');
+
+    WP_CLI::success('Executed "process_membership" job.');
+
+  }
+
+}
diff --git a/wp-cli/commands/command-pipe.php b/wp-cli/commands/command-pipe.php
new file mode 100755
index 0000000000000000000000000000000000000000..374fe2f29bb76839cc77433f72664a050eb3ddca
--- /dev/null
+++ b/wp-cli/commands/command-pipe.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * Start a Civi::pipe session (JSON-RPC 2.0)
+ *
+ * The Civi::pipe protocol provides a line-oriented session for executing multiple requests in a single CiviCRM instance.
+ *
+ * Callers may request <connection-flags>, such as:
+ *
+ * v: Show version
+ * l: Show login support
+ * t: Enable trusted mode
+ * u: Enable untrusted mode
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm pipe
+ *     {"Civi::pipe":{"v":"5.47.alpha1","t":"trusted","l":["nologin"]}}
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Pipe extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Start a Civi::pipe session (JSON-RPC 2.0)
+   *
+   * The Civi::pipe protocol provides a line-oriented session for executing multiple requests in a single CiviCRM instance.
+   *
+   * Callers may request <connection-flags>, such as:
+   *
+   * v: Show version
+   * l: Show login support
+   * t: Enable trusted mode
+   * u: Enable untrusted mode
+   *
+   * See https://docs.civicrm.org/dev/en/latest/framework/pipe#flags
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm pipe
+   *     {"Civi::pipe":{"v":"5.47.alpha1","t":"trusted","l":["nologin"]}}
+   *
+   *     $ wp civicrm pipe vu
+   *     {"Civi::pipe":{"v":"5.57.1","u":"untrusted"}}
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    if (!is_callable(['Civi', 'pipe'])) {
+      WP_CLI::error('This version of CiviCRM does not include Civi::pipe() support.');
+    }
+
+    if (!empty($args[0])) {
+      Civi::pipe($args[0]);
+    }
+    else {
+      Civi::pipe();
+    }
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-cache-clear.php b/wp-cli/commands/legacy/command-cache-clear.php
new file mode 100755
index 0000000000000000000000000000000000000000..2b8fb4a9b861b1fa05ccd931354529373fb4964e
--- /dev/null
+++ b/wp-cli/commands/legacy/command-cache-clear.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Flush the CiviCRM cache.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm cache-clear
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Cache_Clear extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Flush the CiviCRM cache. Deprecated: use `wp civicrm cache flush` instead.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm cache-clear
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm cache flush` instead.%n'));
+
+    // Pass on to "wp civicrm cache flush".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm cache flush', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-debug-disable.php b/wp-cli/commands/legacy/command-debug-disable.php
new file mode 100755
index 0000000000000000000000000000000000000000..c0ba0a8a673465c18333e634b9236207012d7580
--- /dev/null
+++ b/wp-cli/commands/legacy/command-debug-disable.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Disable debugging in CiviCRM.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm disable-debug
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Debug_Disable extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Disable debugging in CiviCRM. Deprecated: use `wp civicrm debug disable` instead.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm disable-debug
+   *     Success: Debug setting disabled.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm debug disable` instead.%n'));
+
+    // Pass on to "wp civicrm debug disable".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm debug disable', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-debug-enable.php b/wp-cli/commands/legacy/command-debug-enable.php
new file mode 100755
index 0000000000000000000000000000000000000000..8c3449f36a38174cb300bbc38768ffc4d11f04bb
--- /dev/null
+++ b/wp-cli/commands/legacy/command-debug-enable.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Enable debugging in CiviCRM.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm enable-debug
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Debug_Enable extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Enable debugging in CiviCRM. Deprecated: use `wp civicrm debug enable` instead.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm enable-debug
+   *     Success: Debug setting enabled.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm debug enable` instead.%n'));
+
+    // Pass on to "wp civicrm debug enable".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm debug enable', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-install.php b/wp-cli/commands/legacy/command-install.php
new file mode 100755
index 0000000000000000000000000000000000000000..396569bd96011c1dbfc5d5f76a606a02dd4333a7
--- /dev/null
+++ b/wp-cli/commands/legacy/command-install.php
@@ -0,0 +1,113 @@
+<?php
+/**
+ * Install the CiviCRM plugin.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm install --zipfile=~/civicrm-5.57.1-wordpress.zip
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Install extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Install the CiviCRM plugin. Deprecated: use `wp civicrm core install` instead.
+   *
+   * ## OPTIONS
+   *
+   * [--dbname=<dbname>]
+   * : MySQL database name of your CiviCRM database. Defaults to the WordPress database name.
+   *
+   * [--dbpass=<dbpass>]
+   * : MySQL password for your CiviCRM database. Defaults to the WordPress MySQL database password.
+   *
+   * [--dbuser=<dbuser>]
+   * : MySQL username for your CiviCRM database. Defaults to the WordPress MySQL database username.
+   *
+   * [--dbhost=<dbhost>]
+   * : MySQL host for your CiviCRM database. Defaults to the WordPress MySQL host.
+   *
+   * [--zipfile=<zipfile>]
+   * : Path to your CiviCRM zip file. If specified --version is ignored.
+   *
+   * [--tarfile=<tarfile>]
+   * : Path to your CiviCRM .tar.gz file. Not currently available.
+   *
+   * [--lang=<lang>]
+   * : Locale to use for installation. Defaults to "en_US".
+   *
+   * [--langtarfile=<langtarfile>]
+   * : Path to your CiviCRM localization .tar.gz file.
+   *
+   * [--ssl=<ssl>]
+   * : The SSL setting for your website, e.g. '--ssl=on'. Defaults to "on".
+   *
+   * [--site_url=<site_url>]
+   * : Domain for your website, e.g. 'mysite.com'.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm install --zipfile=~/civicrm-5.57.1-wordpress.zip
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm core install` instead.%n'));
+
+    // Grab associative arguments.
+    $dbuser = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'dbuser', (defined('DB_USER') ? DB_USER : ''));
+    $dbpass = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'dbpass', (defined('DB_PASSWORD') ? DB_PASSWORD : ''));
+    $dbhost = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'dbhost', (defined('DB_HOST') ? DB_HOST : ''));
+    $dbname = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'dbname', (defined('DB_NAME') ? DB_NAME : ''));
+    $locale = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'locale', 'en_US');
+    $zipfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'zipfile', '');
+    $tarfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'tarfile', '');
+    $lang = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'lang', '');
+    $langtarfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'langtarfile', '');
+    $ssl = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'ssl', '');
+    $site_url = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'site_url', '');
+    $yes = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'yes', FALSE);
+
+    // Bail when .tar.gz archive is specified.
+    if (!empty($tarfile)) {
+      WP_CLI::error('CiviCRM .tar.gz archives are not supported.');
+    }
+
+    // Bail when no .zip archive is specified.
+    if (empty($zipfile)) {
+      WP_CLI::error('You must supply a CiviCRM zip archive.');
+    }
+
+    // Build install command.
+    $command = 'civicrm core install --zipfile=' . $zipfile .
+      (empty($langtarfile) ? '' : ' --l10n-tarfile=' . $langtarfile);
+
+    // Run "wp civicrm core install".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+    // Build activate command.
+    $command = 'civicrm core activate' .
+      (empty($dbuser) ? '' : ' --dbuser=' . $dbuser) .
+      (empty($dbpass) ? '' : ' --dbpass=' . $dbpass) .
+      (empty($dbhost) ? '' : ' --dbhost=' . $dbhost) .
+      (empty($dbname) ? '' : ' --dbname=' . $dbname) .
+      (empty($lang) ? '' : ' --locale=' . $lang) .
+      (empty($ssl) ? '' : ' --ssl=' . $ssl) .
+      (empty($site_url) ? '' : ' --site-url=' . $site_url) .
+      (empty($yes) ? '' : ' --yes');
+
+    // Run "wp civicrm core activate".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-mail-queue.php b/wp-cli/commands/legacy/command-mail-queue.php
new file mode 100755
index 0000000000000000000000000000000000000000..95f31e4a959e4b125c6dd7a5b2d3bb6d03844b6e
--- /dev/null
+++ b/wp-cli/commands/legacy/command-mail-queue.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Process pending CiviMail mailing jobs.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm process-mail-queue
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Mail_Queue extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Process pending CiviMail mailing jobs. Deprecated: use `wp civicrm job mailing` instead.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm process-mail-queue
+   *     Success: Executed 'process_mailing' job.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm job mailing` instead.%n'));
+
+    // Pass on to "wp civicrm job mailing".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm job mailing', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-member-records.php b/wp-cli/commands/legacy/command-member-records.php
new file mode 100755
index 0000000000000000000000000000000000000000..aead7f0fcf17e03b967414f51e7fc5a8ae8939dd
--- /dev/null
+++ b/wp-cli/commands/legacy/command-member-records.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Process pending CiviMember membership record update jobs.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm member-records
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Member_Records extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Process pending CiviMember membership record update jobs. Deprecated: use `wp civicrm job membership` instead.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm member-records
+   *     Success: Executed 'process_membership' job.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm job membership` instead.%n'));
+
+    // Pass on to "wp civicrm job membership".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm job membership', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-restore.php b/wp-cli/commands/legacy/command-restore.php
new file mode 100755
index 0000000000000000000000000000000000000000..e0d801bfbbbb2cf6a6a75601dddbcf976eaa6c97
--- /dev/null
+++ b/wp-cli/commands/legacy/command-restore.php
@@ -0,0 +1,209 @@
+<?php
+/**
+ * Restore the CiviCRM plugin files and database.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm restore
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Restore extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Restore the CiviCRM plugin files and database. Deprecated: use `wp civicrm core restore` instead.
+   *
+   * ## OPTIONS
+   *
+   * [--restore-dir=<restore-dir>]
+   * : Path to your CiviCRM backup directory.
+   *
+   * [--backup-dir=<backup-dir>]
+   * : Path to your CiviCRM backup directory. Default is one level above ABSPATH.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm restore --restore-dir=/Users/haystack/Sites/civicrm/attendance.latest/backup/plugins/20230207152318
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    // Grab associative arguments.
+    $restore_dir = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'restore-dir', '');
+    $backup_root_dir = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'backup-dir', '');
+    $yes = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'yes', FALSE);
+
+    // ----------------------------------------------------------------------------
+    // Validate before proceeding.
+    // ----------------------------------------------------------------------------
+
+    // Bail when no restore directory is specified.
+    if (empty($restore_dir)) {
+      WP_CLI::error('You must supply a restore directory.');
+    }
+
+    // Bail when no restore directory is found.
+    if (!is_dir($restore_dir)) {
+      WP_CLI::error('Could not locate the restore directory.');
+    }
+
+    // Bail when no SQL file is found.
+    $sql_file = $restore_dir . '/civicrm.sql';
+    if (!file_exists($sql_file)) {
+      WP_CLI::error('Could not locate "civicrm.sql" file in the restore directory.');
+    }
+
+    // Bail when no CiviCRM directory is found.
+    $code_dir = $restore_dir . '/civicrm';
+    if (!is_dir($code_dir)) {
+      WP_CLI::error('Could not locate the CiviCRM directory inside "restore-dir".');
+    }
+    elseif (!file_exists("$code_dir/civicrm/civicrm-version.txt") && !file_exists("$code_dir/civicrm/civicrm-version.php")) {
+      WP_CLI::error('The CiviCRM directory inside "restore-dir" does not seem to be a valid CiviCRM codebase.');
+    }
+
+    // Get the path to the CiviCRM plugin directory.
+    $plugin_path = $this->plugin_path_get();
+
+    // Bootstrap CiviCRM.
+    $this->bootstrap_civicrm();
+
+    // Bail if we can't fetch database credentials.
+    if (!defined('CIVICRM_DSN')) {
+      WP_CLI::error('CIVICRM_DSN is not defined.');
+    }
+
+    // Parse the CiviCRM credentials.
+    $dsn = DB::parseDSN(CIVICRM_DSN);
+
+    // Build backup directory when not specified.
+    if (empty($backup_root_dir)) {
+      $backup_root_dir = trailingslashit(dirname(ABSPATH)) . 'backup';
+    }
+
+    // Issue warning.
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm core backup` and `wp civicrm core restore` instead.%n'));
+
+    WP_CLI::log('');
+    WP_CLI::log('Process involves:');
+    WP_CLI::log(sprintf("1. Restoring '{$restore_dir}/civicrm' to '%s'.", $plugin_path));
+    WP_CLI::log(sprintf("2. Dropping and creating the '%s' database.", $dsn['database']));
+    WP_CLI::log("3. Loading the '{$restore_dir}/civicrm.sql' file into the database.");
+    WP_CLI::log('');
+    WP_CLI::log(sprintf("Note: Before restoring, a backup will be taken in the '%s' directory.", "{$backup_root_dir}/plugins/restore"));
+    WP_CLI::log('');
+
+    // Let's give folks a chance to exit now.
+    WP_CLI::confirm(WP_CLI::colorize('%GDo you want to continue?%n'), $assoc_args);
+
+    // ----------------------------------------------------------------------------
+    // Repeat the backup procedure from `wp civicrm upgrade`.
+    // ----------------------------------------------------------------------------
+
+    // Maybe create destination directory.
+    $backup_root_dir = untrailingslashit($backup_root_dir);
+    if (!is_dir($backup_root_dir)) {
+      if (!is_writable(dirname($backup_root_dir))) {
+        WP_CLI::error("Insufficient permission to create directory '{$backup_root_dir}'.");
+      }
+      WP_CLI::log("Creating directory '{$backup_root_dir}'.");
+      // Recursively create directory.
+      if (!@mkdir($backup_root_dir, 0777, TRUE)) {
+        $error = error_get_last();
+        WP_CLI::error("Failed to create directory '{$backup_root_dir}': {$error['message']}.");
+      }
+    }
+
+    // Sanity check.
+    if (!is_writable($backup_root_dir)) {
+      WP_CLI::error("'{$backup_root_dir}' is not writable by current user.");
+    }
+
+    // Build backup filename and path.
+    $date = date('YmdHis');
+    $filename = 'civicrm';
+    $backup_working_dir = trailingslashit($backup_root_dir) . 'plugins/restore/' . $date;
+    $backup_sql_file = trailingslashit($backup_working_dir) . $filename . '.sql';
+    $backup_plugin_path = trailingslashit($backup_working_dir) . $filename;
+
+    // Create working backup directory.
+    if (!@mkdir($backup_working_dir, 0777, TRUE)) {
+      $error = error_get_last();
+      WP_CLI::error("Failed to create directory '{$backup_working_dir}': {$error['message']}.");
+    }
+
+    // Use "wp civicrm sql-dump" to dump database.
+    WP_CLI::log('');
+    WP_CLI::log(WP_CLI::colorize('%GBacking up database...%n'));
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand("civicrm sql-dump --result-file={$backup_sql_file}", $options);
+
+    // Move existing CiviCRM plugin directory to backup directory.
+    WP_CLI::log('');
+    WP_CLI::log(WP_CLI::colorize('%GBacking up existing plugin...%n'));
+    if (!@rename($plugin_path, $backup_plugin_path)) {
+      $error = error_get_last();
+      WP_CLI::error(sprintf('Failed to backup CiviCRM plugin directory %s to %s: %s', $plugin_path, $backup_plugin_path, $error['message']));
+    }
+    WP_CLI::success('Codebase backed up.');
+
+    // ----------------------------------------------------------------------------
+    // Restore procedure.
+    // ----------------------------------------------------------------------------
+
+    // Move backup CiviCRM plugin directory to plugins directory.
+    WP_CLI::log('');
+    WP_CLI::log(WP_CLI::colorize('%GRestoring codebase...%n'));
+    if (!@rename($code_dir, $plugin_path)) {
+      $error = error_get_last();
+      WP_CLI::error(sprintf('Failed to restore CiviCRM plugin directory %s to %s: %s', $code_dir, $plugin_path, $error['message']));
+    }
+
+    WP_CLI::success('Codebase restored.');
+
+    // Use "wp civicrm db query" and "wp civicrm db import" to restore database.
+    WP_CLI::log('');
+    WP_CLI::log(WP_CLI::colorize('%GRestoring database...%n'));
+
+    // Use "wp civicrm db query" to drop the CiviCRM database.
+    $command = 'civicrm db query ' . sprintf("'DROP DATABASE IF EXISTS %s'", $dsn['database']);
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+    WP_CLI::success('Database dropped.');
+
+    // Use "run_mysql_command" to re-create the CiviCRM database.
+    $mysql_args = [
+      'host'     => $dsn['hostspec'],
+      'user'     => $dsn['username'],
+      'pass' => $dsn['password'],
+      'execute'  => sprintf('CREATE DATABASE %s', $dsn['database']),
+    ];
+    \WP_CLI\Utils\run_mysql_command('/usr/bin/env mysql --no-defaults', $mysql_args);
+    WP_CLI::success('Database created.');
+
+    // Load restore tables.
+    WP_CLI::log('Loading "civicrm.sql" file from restore directory...');
+    $command = 'civicrm db import --load-file=' . $sql_file;
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+    WP_CLI::success('Database restored.');
+
+    // Clear caches.
+    WP_CLI::log('');
+    WP_CLI::log(WP_CLI::colorize('%GClearing caches...%n'));
+    $command = 'civicrm cache flush';
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+    WP_CLI::success('Restore process completed.');
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-sql-cli.php b/wp-cli/commands/legacy/command-sql-cli.php
new file mode 100755
index 0000000000000000000000000000000000000000..bd17ab2c10202315883433d2cba87ceb6e0885fc
--- /dev/null
+++ b/wp-cli/commands/legacy/command-sql-cli.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Quickly enter the MySQL command line.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm sql-cli
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_SQL_CLI extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Quickly enter the MySQL command line. Deprecated: use `wp civicrm db cli` instead.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm sql-cli
+   *
+   *     Welcome to the MySQL monitor.  Commands end with ; or \g.
+   *     Your MySQL connection id is 180
+   *     Server version: 5.7.34 MySQL Community Server (GPL)
+   *
+   *     mysql>
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm db cli` instead.%n'));
+
+    // Pass on to "wp civicrm db cli".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm db cli', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-sql-conf.php b/wp-cli/commands/legacy/command-sql-conf.php
new file mode 100755
index 0000000000000000000000000000000000000000..d21fd2e34e49f0100683c8f3f521f0b29d2704de
--- /dev/null
+++ b/wp-cli/commands/legacy/command-sql-conf.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Show the CiviCRM database connection details.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm sql-conf
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_SQL_Conf extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Show the CiviCRM database connection details. Deprecated: use `wp civicrm db config` instead.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm sql-conf
+   *
+   * @alias conf
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm db config` instead.%n'));
+
+    // Pass on to "wp civicrm db config".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm db config --format=pretty', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-sql-connect.php b/wp-cli/commands/legacy/command-sql-connect.php
new file mode 100755
index 0000000000000000000000000000000000000000..b3f88d8d2155503b76b7021dede4072c72604f4b
--- /dev/null
+++ b/wp-cli/commands/legacy/command-sql-connect.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Get a string which connects to the CiviCRM database.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm sql-connect
+ *     mysql --database=civicrm_db_name --host=db_host --user=db_username --password=db_password
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_SQL_Connect extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Get a string which connects to the CiviCRM database. Deprecated: use `wp civicrm db connect` instead.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm sql-connect
+   *     mysql --database=civicrm_db_name --host=db_host --user=db_username --password=db_password
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm db connect` instead.%n'));
+
+    // Pass on to "wp civicrm db connect".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm db connect', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-sql-dump.php b/wp-cli/commands/legacy/command-sql-dump.php
new file mode 100755
index 0000000000000000000000000000000000000000..83163fc9b37d740d515e8d044fbe4e047c5cd7c2
--- /dev/null
+++ b/wp-cli/commands/legacy/command-sql-dump.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * Export the whole CiviCRM database and print to STDOUT or save to a file.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm sql-dump
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_SQL_Dump extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Dump the whole database that CiviCRM has credentials for and print to STDOUT or save to a file. Deprecated: use `wp civicrm db dump` instead.
+   *
+   * This command is useful on servers where the user may not have direct access to the `mysqldump`
+   * command and the user wants to dump the entire database in which the CiviCRM tables reside.
+   * For more granular exports of the CiviCRM tables, functions, procedures and views, use the
+   * `wp civicrm db export` command instead.
+   *
+   * ## OPTIONS
+   *
+   * [--tables=<tables>]
+   * : The comma separated list of specific tables to export. Excluding this parameter will export all tables in the database.
+   *
+   * [--result-file=<result-file>]
+   * : The path to the saved file.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm sql-dump
+   *
+   *     $ wp civicrm sql-dump --result-file=/tmp/civi-db.sql
+   *     Success: Exported to /tmp/civi-db.sql
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm db dump` instead.%n'));
+
+    // Grab associative arguments.
+    $tables = \WP_CLI\Utils\get_flag_value($assoc_args, 'tables', FALSE);
+    $result_file = \WP_CLI\Utils\get_flag_value($assoc_args, 'result-file', FALSE);
+
+    // Build command.
+    $command = 'civicrm db dump' .
+      (empty($tables) ? '' : ' --tables=' . $tables) .
+      (empty($result_file) ? '' : ' --result-file=' . $result_file);
+
+    // Pass on to "wp civicrm db dump".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-sql-query.php b/wp-cli/commands/legacy/command-sql-query.php
new file mode 100755
index 0000000000000000000000000000000000000000..b3fac4baff6d6fdf11c15cf5c33248427b54d55a
--- /dev/null
+++ b/wp-cli/commands/legacy/command-sql-query.php
@@ -0,0 +1,49 @@
+<?php
+/**
+ * Perform a query on the CiviCRM database.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm sql-query 'select id,name from civicrm_group;'
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_SQL_Query extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Perform a query on the CiviCRM database. Deprecated: use `wp civicrm db query` instead.
+   *
+   * ## OPTIONS
+   *
+   * <query>
+   * : The SQL query to perform.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm sql-query 'select id,name from civicrm_group;'
+   *     +----+---------------------------+
+   *     | id | name                      |
+   *     +----+---------------------------+
+   *     |  1 | Administrators            |
+   *     |  4 | Advisory Board            |
+   *     |  2 | Newsletter Subscribers    |
+   *     |  3 | Summer Program Volunteers |
+   *     +----+---------------------------+
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm db query` instead.%n'));
+
+    // Pass on to "wp civicrm db query".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    $command = 'civicrm db query' . (empty($args[0]) ? '' : " '" . $args[0] . "'");
+    WP_CLI::runcommand($command, $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-update-cfg.php b/wp-cli/commands/legacy/command-update-cfg.php
new file mode 100755
index 0000000000000000000000000000000000000000..0a0c322b26b911431dfd16f4a96c2ea991eb787e
--- /dev/null
+++ b/wp-cli/commands/legacy/command-update-cfg.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Upgrade the CiviCRM plugin files and database.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm update-cfg
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Update_Config extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Reset paths to correct config settings. Deprecated: use `wp civicrm core update-cfg` instead.
+   *
+   * This command can be useful when the CiviCRM site has been cloned or migrated.
+   *
+   * The old version of this command tried to preserve webserver ownership of "templates_c"
+   * and "civicrm/upload" because (when running this command as something other than the
+   * web-user) `doSiteMove` clears and recreates these directories. The check took place
+   * *after* `doSiteMove` had run, however, so would only report back the current user and
+   * group.
+   *
+   * If you run `wp-cli` as something other than the web-user, it's up to you to assign
+   * correct ownership of these directories.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm update-cfg
+   *     Beginning site move process...
+   *     Template cache and upload directory have been cleared.
+   *     Database cache tables cleared.
+   *     Session has been reset.
+   *     Please make sure the following directories have the correct permissions:
+   *     /example.com/httpdocs/wp-content/uploads/civicrm/templates_c/
+   *     /example.com/httpdocs/wp-content/uploads/civicrm/upload/
+   *     Success: Config successfully updated.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm core update-cfg` instead.%n'));
+
+    // Pass on to "wp civicrm core update-cfg".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand('civicrm core update-cfg', $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-upgrade-db.php b/wp-cli/commands/legacy/command-upgrade-db.php
new file mode 100755
index 0000000000000000000000000000000000000000..f5d4f239a63fbfa281634488af21bba0853558e4
--- /dev/null
+++ b/wp-cli/commands/legacy/command-upgrade-db.php
@@ -0,0 +1,104 @@
+<?php
+/**
+ * Upgrade the CiviCRM database schema.
+ *
+ * ## EXAMPLES
+ *
+ *     $ wp civicrm upgrade-db
+ *     $ wp civicrm upgrade-db --dry-run
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Upgrade_DB extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Upgrade the CiviCRM database schema. Deprecated: use `wp civicrm core update-db` instead.
+   *
+   * ## OPTIONS
+   *
+   * [--dry-run]
+   * : Preview the list of upgrade tasks.
+   *
+   * [--retry]
+   * : Resume a failed upgrade, retrying the last step.
+   *
+   * [--skip]
+   * : Resume a failed upgrade, skipping the last step.
+   *
+   * [--step]
+   * : Run the upgrade queue in steps, pausing before each step.
+   *
+   * [--v]
+   * : Run the upgrade queue with verbose output.
+   *
+   * [--vv]
+   * : Run the upgrade queue with extra verbose output.
+   *
+   * [--vvv]
+   * : An alias of --vv for old timers more used to cv syntax.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation message. Does not apply to step messages.
+   *
+   * ## EXAMPLES
+   *
+   *     $ wp civicrm upgrade-db --dry-run --v
+   *     Deprecated command: use `wp civicrm core update-db` instead.
+   *     Found CiviCRM code version: 5.57.1
+   *     Found CiviCRM database version: 5.57.0
+   *     Checking pre-upgrade messages.
+   *     (No messages)
+   *     Dropping SQL triggers.
+   *     Preparing upgrade.
+   *     Executing upgrade.
+   *     Cleanup old files
+   *     Cleanup old upgrade snapshots
+   *     Checking extensions
+   *     Finish Upgrade DB to 5.57.1
+   *     Update all reserved message templates
+   *     Finish core DB updates 5.57.1
+   *     Assess extension upgrades
+   *     Generate final messages
+   *     Finishing upgrade.
+   *     Upgrade to 5.57.1 completed.
+   *     Checking post-upgrade messages.
+   *     (No messages)
+   *     Have a nice day.
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm core update-db` instead.%n'));
+
+    // Grab associative arguments.
+    $dry_run = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'dry-run', FALSE);
+    $retry = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'retry', FALSE);
+    $skip = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'skip', FALSE);
+    $step = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'step', FALSE);
+    $v = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'v', FALSE);
+    $vv = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'vv', FALSE);
+    $vvv = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'vvv', FALSE);
+    $yes = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'yes', FALSE);
+
+    // Build command.
+    $command = 'civicrm core update-db' .
+      (empty($dry_run) ? '' : ' --dry-run') .
+      (empty($retry) ? '' : ' --retry') .
+      (empty($skip) ? '' : ' --skip') .
+      (empty($step) ? '' : ' --step') .
+      (empty($v) ? '' : ' --v') .
+      (empty($vv) ? '' : ' --vv') .
+      (empty($vvv) ? '' : ' --vvv') .
+      (empty($yes) ? '' : ' --yes');
+
+    // Pass on to "wp civicrm core update-db".
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/legacy/command-upgrade.php b/wp-cli/commands/legacy/command-upgrade.php
new file mode 100755
index 0000000000000000000000000000000000000000..c5a9aba543c6ffb0f7513fe87c711008a97b0074
--- /dev/null
+++ b/wp-cli/commands/legacy/command-upgrade.php
@@ -0,0 +1,162 @@
+<?php
+/**
+ * Upgrade the CiviCRM plugin files and database.
+ *
+ * ## EXAMPLES
+ *
+ *     # Update to the version of CiviCRM in the supplied archive.
+ *     $ wp civicrm upgrade --zipfile=~/civicrm-5.57.1-wordpress.zip
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Command_Upgrade extends CLI_Tools_CiviCRM_Command {
+
+  /**
+   * Upgrade the CiviCRM plugin files and database. Deprecated: use `wp civicrm core update` instead.
+   *
+   * ## OPTIONS
+   *
+   * [--zipfile=<zipfile>]
+   * : Path to your CiviCRM zip file.
+   *
+   * [--tarfile=<tarfile>]
+   * : Path to your CiviCRM .tar.gz file. Not currently available.
+   *
+   * [--backup-dir=<backup-dir>]
+   * : Path to your CiviCRM backup directory. Default is one level above ABSPATH.
+   *
+   * [--v]
+   * : Run the upgrade queue with verbose output.
+   *
+   * [--vv]
+   * : Run the upgrade queue with extra verbose output.
+   *
+   * [--yes]
+   * : Answer yes to the confirmation messages.
+   *
+   * ## EXAMPLES
+   *
+   *     # Update to the version of CiviCRM in the supplied archive.
+   *     $ wp civicrm upgrade --zipfile=~/civicrm-5.57.1-wordpress.zip
+   *
+   * @since 5.69
+   *
+   * @param array $args The WP-CLI positional arguments.
+   * @param array $assoc_args The WP-CLI associative arguments.
+   */
+  public function __invoke($args, $assoc_args) {
+
+    WP_CLI::log(WP_CLI::colorize('%CDeprecated command:%n %cuse `wp civicrm core update` instead.%n'));
+
+    // Grab associative arguments.
+    $zipfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'zipfile', '');
+    $tarfile = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'l10n-tarfile', '');
+    $backup_root_dir = (string) \WP_CLI\Utils\get_flag_value($assoc_args, 'backup-dir', '');
+    $v = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'v', FALSE);
+    $vv = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'vv', FALSE);
+    $yes = (bool) \WP_CLI\Utils\get_flag_value($assoc_args, 'yes', FALSE);
+
+    // Bail when .tar.gz archive is specified.
+    if (!empty($tarfile)) {
+      WP_CLI::error('CiviCRM .tar.gz archives are not supported.');
+    }
+
+    // Bail when no .zip archive is specified.
+    if (empty($zipfile)) {
+      WP_CLI::error('You must supply a CiviCRM zip archive.');
+    }
+
+    // Choose higher verbosity when both are specified.
+    if (!empty($v) && !empty($vv)) {
+      $v = FALSE;
+    }
+
+    // ----------------------------------------------------------------------------
+    // We can't use "wp civicrm core backup" because of its new backup schema.
+    // ----------------------------------------------------------------------------
+
+    // Build backup directory when not specified.
+    if (empty($backup_root_dir)) {
+      $backup_root_dir = trailingslashit(dirname(ABSPATH)) . 'backup';
+    }
+
+    // Maybe create destination directory.
+    $backup_root_dir = untrailingslashit($backup_root_dir);
+    if (!is_dir($backup_root_dir)) {
+      if (!is_writable(dirname($backup_root_dir))) {
+        WP_CLI::error("Insufficient permission to create directory '{$backup_root_dir}'.");
+      }
+      WP_CLI::log("Creating directory '{$backup_root_dir}'.");
+      // Recursively create directory.
+      if (!@mkdir($backup_root_dir, 0777, TRUE)) {
+        $error = error_get_last();
+        WP_CLI::error("Failed to create directory '{$backup_root_dir}': {$error['message']}.");
+      }
+    }
+
+    // Sanity check.
+    if (!is_writable($backup_root_dir)) {
+      WP_CLI::error("'{$backup_root_dir}' is not writable by current user.");
+    }
+
+    // Get the path to the CiviCRM plugin directory.
+    $plugin_path = $this->plugin_path_get();
+
+    // Build backup filename and path.
+    $date = date('YmdHis');
+    $filename = 'civicrm';
+    $backup_working_dir = trailingslashit($backup_root_dir) . trailingslashit('plugins') . $date;
+    $backup_sql_file = trailingslashit($backup_working_dir) . $filename . '.sql';
+    $backup_plugin_path = trailingslashit($backup_working_dir) . $filename;
+
+    WP_CLI::log('');
+    WP_CLI::log('The upgrade process involves:');
+    WP_CLI::log(sprintf('1. Backing up database as => %s', $backup_sql_file));
+    WP_CLI::log(sprintf('2. Backing up current CiviCRM code as => %s', $backup_plugin_path));
+    WP_CLI::log(sprintf('3. Unpacking zipfile to => %s', $plugin_path));
+    WP_CLI::log('4. Executing "civicrm/upgrade?reset=1" just as a browser would.');
+    WP_CLI::log('');
+
+    // Let's give folks a chance to exit now.
+    WP_CLI::confirm(WP_CLI::colorize('%GDo you want to continue?%n'), $assoc_args);
+
+    // ----------------------------------------------------------------------------
+    // Backup procedure.
+    // ----------------------------------------------------------------------------
+
+    // Create working backup directory.
+    if (!@mkdir($backup_working_dir, 0777, TRUE)) {
+      $error = error_get_last();
+      WP_CLI::error("Failed to create directory '{$backup_working_dir}': {$error['message']}.");
+    }
+
+    // Use "wp civicrm sql-dump" to dump database.
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand("civicrm sql-dump --result-file={$backup_sql_file}", $options);
+    WP_CLI::success('1. Database backed up.');
+
+    // Move existing CiviCRM plugin directory to backup directory.
+    if (!@rename($plugin_path, $backup_plugin_path)) {
+      $error = error_get_last();
+      WP_CLI::error(sprintf('Failed to backup CiviCRM project directory %s to %s: %s', $project_path, $backup_plugin_path, $error['message']));
+    }
+    WP_CLI::log('');
+    WP_CLI::success('2. Code backed up.');
+
+    // ----------------------------------------------------------------------------
+    // Subsequent commands can remain the same.
+    // ----------------------------------------------------------------------------
+
+    // Use "wp civicrm core update" to upgrade CiviCRM.
+    $command = 'civicrm core update --zipfile=' . $zipfile . (empty($yes) ? '' : ' --yes');
+    $options = ['launch' => FALSE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+    // Use "wp civicrm core update-db" to upgrade the CiviCRM database.
+    $command = 'civicrm core update-db' . (empty($v) ? '' : ' --v') . (empty($vv) ? '' : ' --vv') . (empty($yes) ? '' : ' --yes');
+    $options = ['launch' => TRUE, 'return' => FALSE];
+    WP_CLI::runcommand($command, $options);
+
+  }
+
+}
diff --git a/wp-cli/commands/utilities/class-backup-restorer.php b/wp-cli/commands/utilities/class-backup-restorer.php
new file mode 100755
index 0000000000000000000000000000000000000000..ef7251f1ba5a310682d34ab97bb92fdfbfdcba97
--- /dev/null
+++ b/wp-cli/commands/utilities/class-backup-restorer.php
@@ -0,0 +1,67 @@
+<?php
+/**
+ * Backup restorer class.
+ *
+ * @since 5.69
+ */
+
+// Make sure WP_Upgrader exists.
+if (!class_exists('WP_Upgrader')) {
+  require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
+}
+
+/**
+ * Backup restorer class.
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_WP_Upgrader extends WP_Upgrader {
+
+  /**
+   * @var bool
+   * Whether a bulk upgrade/installation is being performed.
+   * @since 5.69
+   * @access public
+   */
+  public $bulk = FALSE;
+
+  /**
+   * Initialize the backup strings.
+   *
+   * @since 5.69
+   */
+  public function backup_strings() {
+    $this->strings['unpack_package'] = 'Unpacking the backup...';
+    $this->strings['installing_package'] = 'Restoring the backup...';
+    $this->strings['remove_old'] = 'Removing the existing directory...';
+    $this->strings['remove_old_failed'] = 'Could not remove the existing directory.';
+    $this->strings['process_failed'] = 'Backup failed.';
+    $this->strings['process_success'] = 'Backup restored successfully.';
+  }
+
+  /**
+   * Restore a directory from a backup.
+   *
+   * @since 5.69
+   *
+   * @param string $zipfile The path to the zipfile.
+   * @param string $destination The directory name to extract to.
+   * @return array|false|WP_Error The result on success, otherwise a WP_Error, or false if unable to connect to the filesystem.
+   */
+  public function restore($zipfile, $destination) {
+
+    $this->backup_strings();
+
+    $options = [
+      'package' => $zipfile,
+      'destination' => untrailingslashit($destination),
+      'clear_destination' => TRUE,
+      'clear_working' => FALSE,
+      'abort_if_destination_exists' => FALSE,
+    ];
+
+    return $this->run($options);
+
+  }
+
+}
diff --git a/wp-cli/commands/utilities/class-logger-dummy.php b/wp-cli/commands/utilities/class-logger-dummy.php
new file mode 100755
index 0000000000000000000000000000000000000000..be6a2645d0be5d89f897c9ad18e6866b855afc92
--- /dev/null
+++ b/wp-cli/commands/utilities/class-logger-dummy.php
@@ -0,0 +1,18 @@
+<?php
+/**
+ * Dummy Task Context logger class.
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Logger_Dummy {
+
+  /**
+   * Suppresses Task Context logger output.
+   *
+   * @since 5.69
+   *
+   * @param mixed $message The string or object containing the message to log.
+   */
+  public function info($message) {}
+
+}
diff --git a/wp-cli/commands/utilities/class-zip-extractor.php b/wp-cli/commands/utilities/class-zip-extractor.php
new file mode 100755
index 0000000000000000000000000000000000000000..002a3fa055b5d368de456ab7efcd15d513ffa8f6
--- /dev/null
+++ b/wp-cli/commands/utilities/class-zip-extractor.php
@@ -0,0 +1,75 @@
+<?php
+/**
+ * Zip extractor class.
+ *
+ * @since 5.69
+ */
+
+// Make sure WP_Upgrader exists.
+if (!class_exists('WP_Upgrader')) {
+  require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
+}
+
+/**
+ * Zip extractor class.
+ *
+ * @since 5.69
+ */
+class CLI_Tools_CiviCRM_Zip_Extractor extends WP_Upgrader {
+
+  /**
+   * @var bool
+   * Whether a bulk upgrade/installation is being performed.
+   * @since 5.69
+   * @access public
+   */
+  public $bulk = FALSE;
+
+  /**
+   * Initializes the extract strings.
+   *
+   * @since 5.69
+   */
+  public function extract_strings() {
+    $this->strings['unpack_package'] = 'Unpacking the archive...';
+    $this->strings['installing_package'] = 'Installing the archive...';
+    $this->strings['remove_old'] = 'Removing the existing directory...';
+    $this->strings['remove_old_failed'] = 'Could not remove the existing directory.';
+    $this->strings['process_failed'] = 'Extraction failed.';
+    $this->strings['process_success'] = 'Extraction completed successfully.';
+  }
+
+  /**
+   * Extracts a zip archive to a directory.
+   *
+   * @since 5.69
+   *
+   * @param string $zipfile The path to the zipfile.
+   * @param string $destination The directory name to extract to.
+   * @param array $settings The array of extraction settings.
+   * @return array|false|WP_Error The result on success, otherwise a WP_Error, or false if unable to connect to the filesystem.
+   */
+  public function extract($zipfile, $destination, $settings) {
+
+    $this->extract_strings();
+
+    $options = [
+      'package' => $zipfile,
+      'destination' => untrailingslashit($destination),
+    ];
+
+    $defaults = [
+      'clear_destination' => TRUE,
+      'clear_working' => TRUE,
+      'abort_if_destination_exists' => FALSE,
+    ];
+
+    $settings = wp_parse_args($settings, $defaults);
+
+    $options = $options + $settings;
+
+    return $this->run($options);
+
+  }
+
+}
diff --git a/wp-cli/wp-cli-civicrm.php b/wp-cli/wp-cli-civicrm.php
new file mode 100755
index 0000000000000000000000000000000000000000..a82b5053644f7bf3366d2084d967c42aa43786e1
--- /dev/null
+++ b/wp-cli/wp-cli-civicrm.php
@@ -0,0 +1,192 @@
+<?php
+/**
+ * WP-CLI integration based on CiviCRM `cv` functionality.
+ *
+ * @see https://github.com/civicrm/cv
+ * @see https://github.com/christianwach/cli-tools-for-civicrm
+ *
+ * @since 5.69
+ */
+
+/*
+ * Check constants here because it is possible to include this file early using
+ * the `--require` flag. The command may also be bundled as a "package" which
+ * loads before WordPress itself.
+ *
+ * @see https://make.wordpress.org/cli/handbook/references/config/#global-parameters
+ * @see https://make.wordpress.org/cli/handbook/guides/commands-cookbook/#overview
+ * @see https://make.wordpress.org/cli/handbook/guides/sharing-wp-cli-packages/
+ */
+
+// Bail if WP-CLI is not present.
+if (!class_exists('WP_CLI')) {
+  return;
+}
+
+// Bail if either legacy or current WP-CLI tools are already loaded.
+if (class_exists('CiviCRM_Command') || class_exists('CLI_Tools_CiviCRM_Command')) {
+  return;
+}
+
+// Bail if identifying constant is already set.
+if (defined('CIVICRM_WPCLI_LOADED')) {
+  return;
+}
+
+// Make this the one true command.
+define('CIVICRM_WPCLI_LOADED', 1);
+
+// Set up commands.
+WP_CLI::add_hook('before_wp_load', function() {
+
+  // Include files.
+  require_once __DIR__ . '/commands/command-base.php';
+  require_once __DIR__ . '/commands/command-civicrm.php';
+  require_once __DIR__ . '/commands/command-core.php';
+  require_once __DIR__ . '/commands/command-api-v3.php';
+  require_once __DIR__ . '/commands/command-cache.php';
+  require_once __DIR__ . '/commands/command-db.php';
+  require_once __DIR__ . '/commands/command-debug.php';
+  require_once __DIR__ . '/commands/command-job.php';
+  require_once __DIR__ . '/commands/command-pipe.php';
+
+  // ----------------------------------------------------------------------------
+  // Add commands.
+  // ----------------------------------------------------------------------------
+
+  // Add top-level commands.
+  WP_CLI::add_command('civicrm', 'CLI_Tools_CiviCRM_Command');
+  WP_CLI::add_command('cv', 'CLI_Tools_CiviCRM_Command');
+
+  // Add default API command.
+  WP_CLI::add_command('civicrm api', 'CLI_Tools_CiviCRM_Command_API_V3', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_API_V3::check_dependencies']);
+  WP_CLI::add_command('cv api', 'CLI_Tools_CiviCRM_Command_API_V3', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_API_V3::check_dependencies']);
+
+  // Add API v3 command.
+  WP_CLI::add_command('civicrm api3', 'CLI_Tools_CiviCRM_Command_API_V3', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_API_V3::check_dependencies']);
+  WP_CLI::add_command('cv api3', 'CLI_Tools_CiviCRM_Command_API_V3', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_API_V3::check_dependencies']);
+
+  // Add Cache Clear command.
+  WP_CLI::add_command('civicrm cache', 'CLI_Tools_CiviCRM_Command_Cache', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Cache::check_dependencies']);
+  WP_CLI::add_command('cv cache', 'CLI_Tools_CiviCRM_Command_Cache', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Cache::check_dependencies']);
+
+  // Add Core command.
+  WP_CLI::add_command('civicrm core', 'CLI_Tools_CiviCRM_Command_Core');
+  WP_CLI::add_command('cv core', 'CLI_Tools_CiviCRM_Command_Core');
+
+  // Add DB command.
+  WP_CLI::add_command('civicrm db', 'CLI_Tools_CiviCRM_Command_DB', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_DB::check_dependencies']);
+  WP_CLI::add_command('cv db', 'CLI_Tools_CiviCRM_Command_DB', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_DB::check_dependencies']);
+
+   // Add Debug command.
+  WP_CLI::add_command('civicrm debug', 'CLI_Tools_CiviCRM_Command_Debug', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug::check_dependencies']);
+  WP_CLI::add_command('cv debug', 'CLI_Tools_CiviCRM_Command_Debug', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug::check_dependencies']);
+
+  // Add Job command.
+  WP_CLI::add_command('civicrm job', 'CLI_Tools_CiviCRM_Command_Job', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Job::check_dependencies']);
+  WP_CLI::add_command('cv job', 'CLI_Tools_CiviCRM_Command_Job', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Job::check_dependencies']);
+
+  // Add Pipe command.
+  WP_CLI::add_command('civicrm pipe', 'CLI_Tools_CiviCRM_Command_Pipe', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Pipe::check_dependencies']);
+  WP_CLI::add_command('cv pipe', 'CLI_Tools_CiviCRM_Command_Pipe', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Pipe::check_dependencies']);
+
+  // ----------------------------------------------------------------------------
+  // Add deprecated legacy commands.
+  // ----------------------------------------------------------------------------
+
+  // Include legacy files.
+  require_once __DIR__ . '/commands/legacy/command-cache-clear.php';
+  require_once __DIR__ . '/commands/legacy/command-debug-disable.php';
+  require_once __DIR__ . '/commands/legacy/command-debug-enable.php';
+  require_once __DIR__ . '/commands/legacy/command-install.php';
+  require_once __DIR__ . '/commands/legacy/command-mail-queue.php';
+  require_once __DIR__ . '/commands/legacy/command-member-records.php';
+  require_once __DIR__ . '/commands/legacy/command-restore.php';
+  require_once __DIR__ . '/commands/legacy/command-sql-cli.php';
+  require_once __DIR__ . '/commands/legacy/command-sql-conf.php';
+  require_once __DIR__ . '/commands/legacy/command-sql-connect.php';
+  require_once __DIR__ . '/commands/legacy/command-sql-dump.php';
+  require_once __DIR__ . '/commands/legacy/command-sql-query.php';
+  require_once __DIR__ . '/commands/legacy/command-update-cfg.php';
+  require_once __DIR__ . '/commands/legacy/command-upgrade.php';
+  require_once __DIR__ . '/commands/legacy/command-upgrade-db.php';
+
+  // Deprecated: Add Cache Clear command.
+  WP_CLI::add_command('civicrm cache-clear', 'CLI_Tools_CiviCRM_Command_Cache_Clear', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Cache_Clear::check_dependencies']);
+  WP_CLI::add_command('cv cache-clear', 'CLI_Tools_CiviCRM_Command_Cache_Clear', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Cache_Clear::check_dependencies']);
+
+  // Deprecated: Add Debug Disable command.
+  WP_CLI::add_command('civicrm disable-debug', 'CLI_Tools_CiviCRM_Command_Debug_Disable', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug_Disable::check_dependencies']);
+  WP_CLI::add_command('cv disable-debug', 'CLI_Tools_CiviCRM_Command_Debug_Disable', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug_Disable::check_dependencies']);
+
+  // Deprecated: Add Debug Enable command.
+  WP_CLI::add_command('civicrm enable-debug', 'CLI_Tools_CiviCRM_Command_Debug_Enable', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug_Enable::check_dependencies']);
+  WP_CLI::add_command('cv enable-debug', 'CLI_Tools_CiviCRM_Command_Debug_Enable', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug_Enable::check_dependencies']);
+
+  // Deprecated: Add Install command.
+  WP_CLI::add_command('civicrm install', 'CLI_Tools_CiviCRM_Command_Install');
+  WP_CLI::add_command('cv install', 'CLI_Tools_CiviCRM_Command_Install');
+
+  // Deprecated: Add Process Mail Queue command.
+  WP_CLI::add_command('civicrm process-mail-queue', 'CLI_Tools_CiviCRM_Command_Mail_Queue', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Mail_Queue::check_dependencies']);
+  WP_CLI::add_command('cv process-mail-queue', 'CLI_Tools_CiviCRM_Command_Mail_Queue', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Mail_Queue::check_dependencies']);
+
+  // Deprecated: Add Member Records command.
+  WP_CLI::add_command('civicrm member-records', 'CLI_Tools_CiviCRM_Command_Member_Records', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Member_Records::check_dependencies']);
+  WP_CLI::add_command('cv member-records', 'CLI_Tools_CiviCRM_Command_Member_Records', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Member_Records::check_dependencies']);
+
+  // Deprecated: Add Restore command.
+  WP_CLI::add_command('civicrm restore', 'CLI_Tools_CiviCRM_Command_Restore', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Restore::check_dependencies']);
+  WP_CLI::add_command('cv restore', 'CLI_Tools_CiviCRM_Command_Restore', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Restore::check_dependencies']);
+
+  // Deprecated: Add SQL CLI command.
+  WP_CLI::add_command('civicrm sql-cli', 'CLI_Tools_CiviCRM_Command_SQL_CLI', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_CLI::check_dependencies']);
+  WP_CLI::add_command('cv sql-cli', 'CLI_Tools_CiviCRM_Command_SQL_CLI', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_CLI::check_dependencies']);
+
+  // Deprecated: Add SQL Config command.
+  WP_CLI::add_command('civicrm sql-conf', 'CLI_Tools_CiviCRM_Command_SQL_Conf', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Conf::check_dependencies']);
+  WP_CLI::add_command('cv sql-conf', 'CLI_Tools_CiviCRM_Command_SQL_Conf', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Conf::check_dependencies']);
+
+  // Deprecated: Add SQL Connect command.
+  WP_CLI::add_command('civicrm sql-connect', 'CLI_Tools_CiviCRM_Command_SQL_Connect', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Connect::check_dependencies']);
+  WP_CLI::add_command('cv sql-connect', 'CLI_Tools_CiviCRM_Command_SQL_Connect', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Connect::check_dependencies']);
+
+  // Deprecated: Add SQL Dump command.
+  WP_CLI::add_command('civicrm sql-dump', 'CLI_Tools_CiviCRM_Command_SQL_Dump', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Dump::check_dependencies']);
+  WP_CLI::add_command('cv sql-dump', 'CLI_Tools_CiviCRM_Command_SQL_Dump', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Dump::check_dependencies']);
+
+  // Deprecated: Add SQL Query command.
+  WP_CLI::add_command('civicrm sql-query', 'CLI_Tools_CiviCRM_Command_SQL_Query', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Query::check_dependencies']);
+  WP_CLI::add_command('cv sql-query', 'CLI_Tools_CiviCRM_Command_SQL_Query', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Query::check_dependencies']);
+
+  // Deprecated: Add Update Config command.
+  WP_CLI::add_command('civicrm update-cfg', 'CLI_Tools_CiviCRM_Command_Update_Config', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Update_Config::check_dependencies']);
+  WP_CLI::add_command('cv update-cfg', 'CLI_Tools_CiviCRM_Command_Update_Config', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Update_Config::check_dependencies']);
+
+  // Deprecated: Add Upgrade command.
+  WP_CLI::add_command('civicrm upgrade', 'CLI_Tools_CiviCRM_Command_Upgrade', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Upgrade::check_dependencies']);
+  WP_CLI::add_command('cv upgrade', 'CLI_Tools_CiviCRM_Command_Upgrade', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Upgrade::check_dependencies']);
+
+  // Deprecated: Add Upgrade DB command.
+  WP_CLI::add_command('civicrm upgrade-db', 'CLI_Tools_CiviCRM_Command_Upgrade_DB', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Upgrade_DB::check_dependencies']);
+  WP_CLI::add_command('cv upgrade-db', 'CLI_Tools_CiviCRM_Command_Upgrade_DB', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Upgrade_DB::check_dependencies']);
+
+  // ----------------------------------------------------------------------------
+  // Define CiviCRM paths.
+  // ----------------------------------------------------------------------------
+
+  // Set paths early.
+  global $civicrm_paths;
+  $wp_cli_config = WP_CLI::get_config();
+
+  // If --path is set, save for later use by CiviCRM.
+  if (!empty($wp_cli_config['path'])) {
+    $civicrm_paths['cms.root']['path'] = $wp_cli_config['path'];
+  }
+
+  // If --url is set, save for later use by CiviCRM.
+  if (!empty($wp_cli_config['url'])) {
+    $civicrm_paths['cms.root']['url'] = $wp_cli_config['url'];
+  }
+
+});